]> granicus.if.org Git - postgresql/blobdiff - src/Makefile.shlib
Fix HAVE_OPTRESET to be HAVE_INT_OPTRESET. Typos spotted by Lorne Sunley.
[postgresql] / src / Makefile.shlib
index 973cc68a36d5aaf9130ca41d33dda59c3a3c5606..002071e06cc1afe9b3a6bc8f14adadd20cd17ef1 100644 (file)
@@ -6,7 +6,7 @@
 # Copyright (c) 1998, Regents of the University of California
 #
 # IDENTIFICATION
-#    $PostgreSQL: pgsql/src/Makefile.shlib,v 1.82 2004/10/12 22:20:17 momjian Exp $
+#    $PostgreSQL: pgsql/src/Makefile.shlib,v 1.90 2004/11/20 21:13:04 tgl Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -31,6 +31,8 @@
 # DLLTOOL_DEFFLAGS      Additional flags when creating the dll .def file
 # DLLTOOL_LIBFLAGS      Additional flags when creating the lib<module>.a file
 # DLLWRAP_FLAGS         Additional flags to dllwrap
+# DLL_DEFFILE           Use pre-existing .def file instead of auto-generating
+#                       one with all exports in it (win32 only).
 #
 # The module Makefile must also include
 # $(top_builddir)/src/Makefile.global before including this file.
@@ -152,9 +154,15 @@ ifeq ($(PORTNAME), hpux)
     SHLIB_LINK         += `$(CC) $(LDFLAGS) -print-libgcc-file-name`
   endif
   ifeq ($(with_gnu_ld), yes)
-    LINK.shared                = $(CC) $(LDFLAGS) -shared -Wl,-h -Wl,$(soname) -Wl,+b -Wl,$(libdir)
+    LINK.shared                = $(CC) $(LDFLAGS) -shared -Wl,-h -Wl,$(soname)
   else
-    LINK.shared                = $(LD) +h $(soname) -b +b $(libdir)
+    # can't use the CC-syntax rpath pattern here
+    rpath =
+    ifeq ($(enable_rpath), yes)
+      LINK.shared      = $(LD) +h $(soname) -b +b $(rpathdir)
+    else
+      LINK.shared      = $(LD) +h $(soname) -b
+    endif
   endif
 endif
 
@@ -216,10 +224,14 @@ endif
 
 ifeq ($(PORTNAME), cygwin)
   shlib                        = $(NAME)$(DLSUFFIX)
+  # needed for /contrib modules, not sure why
+  SHLIB_LINK           += $(LIBS)
+  haslibarule   = yes
 endif
 
 ifeq ($(PORTNAME), win32)
   shlib                        = lib$(NAME)$(DLSUFFIX)
+  haslibarule   = yes
 endif
 
 ifeq ($(PORTNAME), beos)
@@ -245,17 +257,15 @@ endif # enable_shared
 
 all-lib: all-static-lib all-shared-lib
 
-all-static-lib: $(PTHREAD_H_WIN32) $(top_builddir)/src/port/pg_config_paths.h lib$(NAME).a
-
-all-shared-lib: $(PTHREAD_H_WIN32) $(top_builddir)/src/port/pg_config_paths.h $(shlib)
+all-static-lib: lib$(NAME).a
 
-ifneq ($(PORTNAME), cygwin)
-ifneq ($(PORTNAME), win32)
+all-shared-lib: $(shlib)
 
 ifndef LORDER
 MK_NO_LORDER := true
 endif
 
+ifndef haslibarule
 lib$(NAME).a: $(OBJS)
 ifdef MK_NO_LORDER
        $(LINK.static) $@ $^
@@ -263,9 +273,7 @@ else
        $(LINK.static) $@ `$(LORDER) $^ | tsort`
 endif
        $(RANLIB) $@
-
-endif # not win32
-endif # not cygwin
+endif #haslibarule
 
 ifeq ($(enable_shared), yes)
 
@@ -276,7 +284,7 @@ ifneq ($(PORTNAME), aix)
 
 # Normal case
 $(shlib): $(OBJS)
-       $(LINK.shared) $(OBJS) $(SHLIB_LINK) -o $@
+       $(LINK.shared) $(LDFLAGS_SL) $(OBJS) $(SHLIB_LINK) -o $@
 # If we're using major and minor versions, then make a symlink to major-version-only.
 ifneq ($(shlib), $(shlib_major))
        rm -f $(shlib_major)
@@ -310,9 +318,14 @@ else # PORTNAME == cygwin
 
 # Cygwin case
 $(shlib) lib$(NAME).a: $(OBJS)
+ifndef DLL_DEFFILE
        $(DLLTOOL) --export-all $(DLLTOOL_DEFFLAGS) --output-def $(NAME).def $(OBJS)
-       $(DLLWRAP) -o $(shlib) --dllname $(shlib) $(DLLWRAP_FLAGS) --def $(NAME).def $(OBJS) $(SHLIB_LINK)
+       $(DLLWRAP) $(LDFLAGS_SL) -o $(shlib) --dllname $(shlib) $(DLLWRAP_FLAGS) --def $(NAME).def $(OBJS) $(SHLIB_LINK)
        $(DLLTOOL) --dllname $(shlib) $(DLLTOOL_LIBFLAGS) --def $(NAME).def --output-lib lib$(NAME).a
+else
+       $(DLLWRAP) $(LDFLAGS_SL) -o $(shlib) --dllname $(shlib) $(DLLWRAP_FLAGS) --def $(DLL_DEFFILE) $(OBJS) $(SHLIB_LINK)
+       $(DLLTOOL) --dllname $(shlib) $(DLLTOOL_LIBFLAGS) --def $(DLL_DEFFILE) --output-lib lib$(NAME).a
+endif
 
 endif # PORTNAME == cygwin
 
@@ -320,9 +333,14 @@ else # PORTNAME == win32
 
 # win32 case
 $(shlib) lib$(NAME).a: $(OBJS)
+ifndef DLL_DEFFILE
        $(DLLTOOL) --export-all $(DLLTOOL_DEFFLAGS) --output-def $(NAME).def $(OBJS)
-       $(DLLWRAP) -o $(shlib) --dllname $(shlib) $(DLLWRAP_FLAGS) --def $(NAME).def $(OBJS) $(SHLIB_LINK)
+       $(DLLWRAP) $(LDFLAGS_SL) -o $(shlib) --dllname $(shlib) $(DLLWRAP_FLAGS) --def $(NAME).def $(OBJS) $(SHLIB_LINK)
        $(DLLTOOL) --dllname $(shlib) $(DLLTOOL_LIBFLAGS) --def $(NAME).def --output-lib lib$(NAME).a
+else
+       $(DLLWRAP) $(LDFLAGS_SL) -o $(shlib) --dllname $(shlib) $(DLLWRAP_FLAGS) --def $(DLL_DEFFILE) $(OBJS) $(SHLIB_LINK)
+       $(DLLTOOL) --dllname $(shlib) $(DLLTOOL_LIBFLAGS) --def $(DLL_DEFFILE) --output-lib lib$(NAME).a
+endif
 
 endif # PORTNAME == win32