OSDN Git Service

Fix shared library linking operations to work properly on all (or at
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 2 Sep 2004 23:06:43 +0000 (23:06 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 2 Sep 2004 23:06:43 +0000 (23:06 +0000)
least more) combinations of HP-UX hardware, compiler, and linker.
Shinji Teragaito and Tom Lane.

src/Makefile.shlib
src/makefiles/Makefile.hpux

index 0d7283c..555c97d 100644 (file)
@@ -6,7 +6,7 @@
 # Copyright (c) 1998, Regents of the University of California
 #
 # IDENTIFICATION
-#    $PostgreSQL: pgsql/src/Makefile.shlib,v 1.77 2004/07/13 00:06:46 tgl Exp $
+#    $PostgreSQL: pgsql/src/Makefile.shlib,v 1.78 2004/09/02 23:06:43 tgl Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -148,10 +148,14 @@ endif
 
 ifeq ($(PORTNAME), hpux)
   shlib                        = lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)
-  LINK.shared          = $(LD) +h $(soname) -b +b $(libdir)
   ifeq ($(GCC), yes)
     SHLIB_LINK         += `$(CC) -print-libgcc-file-name`
   endif
+  ifeq ($(with_gnu_ld), yes)
+    LINK.shared                = $(CC) $(LDFLAGS) -shared -Wl,-h -Wl,$(soname)
+  else
+    LINK.shared                = $(LD) +h $(soname) -b +b $(libdir)
+  endif
 endif
 
 ifeq ($(PORTNAME), irix)
index 3f81ce3..2ffd791 100644 (file)
@@ -11,14 +11,27 @@ ifeq ($(HAVE_POSIX_SIGNALS), no)
    LIBS := -lBSD $(LIBS)
 endif
 
+# Using X/Open Networking Interfaces requires to link with libxnet.
+# Without specifying this, bind(), getpeername() and so on don't work
+# correctly in the LP64 data model.
+LIBS := -lxnet $(LIBS)
+
 # Embed 'libdir' as the shared library search path so that the executables
 # don't need SHLIB_PATH to be set.  (We do not observe the --enable-rpath
 # switch here because you'd get rather bizarre behavior if you leave this
 # option off.)
-LDFLAGS += -Wl,+b -Wl,$(libdir)
+ifeq ($(with_gnu_ld), yes)
+   LDFLAGS += -Wl,-rpath -Wl,$(libdir)
+else
+   LDFLAGS += -Wl,+b -Wl,$(libdir)
+endif
 
 # catch null pointer dereferences
-LDFLAGS += -Wl,-z
+ifeq ($(with_gnu_ld), yes)
+# XXX what to put here?
+else
+   LDFLAGS += -Wl,-z
+endif
 
 # set up appropriate options for shared library builds
 export_dynamic = -Wl,-E
@@ -28,16 +41,24 @@ INSTALL_SHLIB_OPTS = -m 555
 
 AROPT = crs
 
-DLSUFFIX = .sl
+ifeq ($(host_cpu), ia64)
+   DLSUFFIX = .so
+else
+   DLSUFFIX = .sl
+endif
 ifeq ($(GCC), yes)
-CFLAGS_SL = -fpic
+   CFLAGS_SL = -fpic
 else
-CFLAGS_SL = +z
+   CFLAGS_SL = +z
 endif
 
 # Rule for building shared libs (currently used only for regression test
 # shlib ... should go away, since this is not really enough knowledge)
-%.sl: %.o
+%$(DLSUFFIX): %.o
+ifeq ($(with_gnu_ld), yes)
+       $(CC) $(LDFLAGS) -shared -o $@ $<
+else
        $(LD) -b -o $@ $<
+endif
 
 sqlmansect = 5