]> git.sur5r.net Git - openldap/blobdiff - build/lib-shared.mk
Cleanup while loops in dn2id_add/delete
[openldap] / build / lib-shared.mk
index f978a52d568b1d19a2e456285dcd48f6b11e615f..194da6e122dc20a97d724059c6a74bc0fb5210d0 100644 (file)
@@ -1,5 +1,5 @@
 # $OpenLDAP$
-## Copyright 1998,1999 The OpenLDAP Foundation
+## Copyright 1998-2002 The OpenLDAP Foundation
 ## COPYING RESTRICTIONS APPLY.  See COPYRIGHT File in top level directory
 ## of this package for details.
 ##---------------------------------------------------------------------------
@@ -7,43 +7,47 @@
 ## Makefile Template for Shared Libraries
 ##
 
-NT_LTFLAGS = --only-$(LINKAGE)
-LTFLAGS = $(@PLAT@_LTFLAGS) 
-
-NT_DYN_LT_NO_UNDEF = -no-undefined
-LT_NO_UNDEF = $(@PLAT@_@LIB_LINKAGE@_LT_NO_UNDEF)
-
-COMPILE = $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) $(CFLAGS) $(EXTRA_DEFS) -c
-LTLIBLINK = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) \
-               $(LTVERSION) $(LT_NO_UNDEF)
-
 MKDEPFLAG = -l
 
 .SUFFIXES: .c .o .lo
 
 .c.lo:
-       $(COMPILE) $<
-
-
-# DYN_EXT (@DYN_EXT@) describes the extension assoicated with a
-# dynamic library, e.g. so, dll
-
-DYN_EXT=@DYN_EXT@
-
-$(LIBRARY):  version.lo
-       $(LTLIBLINK) -rpath $(libdir) -o $@ $(OBJS) version.lo $(EXTRA_LIBS)
-       $(RM) ../$@
-       (d=`$(PWD)` ; $(LN_S) `$(BASENAME) $$d`/$@ ../$@)
-       $(RM) ../`$(BASENAME) $@ .la`.a;        \
-       (d=`$(PWD)`; t=`$(BASENAME) $@ .la`.a; $(LN_S) `$(BASENAME) $$d`/.libs/$$t ../$$t)
-       # If we want our binaries to link dynamically with libldap{,_r} liblber...
-       # We also symlink the .so.# so we can run the tests without installing
-       if test "$(LINK_BINS_DYNAMIC)" = "yes"; then \
-               (d=`$(PWD)`; b=`$(BASENAME) $@ .la`; t=`ls $$d/.libs/$$b*.$(DYN_EXT)`; t=`$(BASENAME) $$t`; $(LN_S) `$(BASENAME) $$d`/.libs/$$t ../$$t); \
-               if test "$(DYN_EXT)" != dll; then \
-                   (d=`$(PWD)`; b=`$(BASENAME) $@ .la`; t=`ls $$d/.libs/$$b.$(DYN_EXT).?`; $(LN_S) `$(BASENAME) $$d`/.libs/`$(BASENAME) $$t` ../`$(BASENAME) $$t`); \
-               fi \
-       fi
+       $(LTCOMPILE_LIB) $<
+
+#
+# symlinks for libraries: UNIX and Windows (a.k.a. NT) need to be handled
+# differently. In UNIX, the static and shared libraries, as well as shared
+# library symlinks, can all be symlinked in the 'libraries' directory. In
+# Windows, only the static library (.a file) or the shared library (.dll)
+# file should be present. The current mingw linker (i.e. ld) WILL look
+# for a .dll file at link time and internally generate an import library
+# for it. However, ld will not do this if a static library is present.
+# That doesn't seem very correct, but that's the behavior, like it or not.
+#
+# Note that there doesn't seem to be a true need for the .la file at
+# this level, so it is left out.
+#
+# The set of symlinks are determined by examining the library's .la file.
+#
+$(LIBRARY): version.lo
+       $(LTLINK_LIB) -o $@ $(OBJS) version.lo $(LINK_LIBS)
+       @d=`$(PWD)`; b=`$(BASENAME) $$d`; \
+       echo cd ..; \
+       cd ..; \
+       arlib=`grep '^old_library=' $$b/$@`; \
+       arlib=`expr "$$arlib" : "[^']*'\(.*\)'"`; \
+       libs=$$arlib; \
+       if test "$(BUILD_LIBS_DYNAMIC)" = "shared"; then \
+               shlibs=`grep '^library_names' $$b/$@`; \
+               shlibs=`expr "$$shlibs" : "[^']*'\(.*\)'"`; \
+               libs="$$libs $$shlibs"; \
+       fi; \
+       for i in $$libs; do \
+               echo $(RM) $$i; \
+               $(RM) $$i; \
+               echo $(LN_S) $$b/.libs/$$i $$i; \
+               $(LN_S) $$b/.libs/$$i $$i; \
+       done
 
 Makefile: $(top_srcdir)/build/lib-shared.mk