diff --git a/src/include/port/hpux.h b/src/include/port/hpux.h index b78b43fbf8..d1a6451836 100644 --- a/src/include/port/hpux.h +++ b/src/include/port/hpux.h @@ -1,6 +1,11 @@ #define JMP_BUF #define USE_POSIX_TIME +/* HPUX 10 has full POSIX signal functionality. + * On HPUX 9, we rely on BSD-compatible signal() in libBSD. + */ +#ifdef HPUX_10 #define USE_POSIX_SIGNALS +#endif #define HAS_TEST_AND_SET typedef struct { diff --git a/src/makefiles/Makefile.hpux b/src/makefiles/Makefile.hpux index 49f72855bb..eeb10589e6 100644 --- a/src/makefiles/Makefile.hpux +++ b/src/makefiles/Makefile.hpux @@ -1,14 +1,29 @@ HPUX_MAJOR= $(shell uname -r|sed 's/^[^.]*\.\([^.]*\).*/\1/') +# Distinguish HPUX 10 (and later) from HPUX 9 +ifneq ($(HPUX_MAJOR), 09) + CFLAGS+= -DHPUX_10 +endif + # HP-UX 10 has a select() in libcurses, so we need to get the libc version first -ifeq ($(HPUX_MAJOR), 10) +# We also want to be sure we get the POSIX signal routines in libc, +# not the BSD-like ones in libBSD. +ifneq ($(HPUX_MAJOR), 09) LDFLAGS:= -Wl,-E -lc $(LDFLAGS) endif -# HP-UX 09 needs libc before libPW, so we need to get the libc version first +# HP-UX 09 provides rint() only in PA1.1 version of libm, so add -L command +# to get that version. (CAUTION: you need PHSS_4630 to have a working version +# of rint()!) Also, libPW exists on this platform but is not helpful, so +# delete it from LDFLAGS. +# NOTE: libBSD must be loaded before libc to get BSD signal() semantics. ifeq ($(HPUX_MAJOR), 09) - LDFLAGS:= -Wl,-E $(LDFLAGS:-lPW=-lc -lPW) + LDFLAGS:= -Wl,-E -L /lib/pa1.1 $(LDFLAGS:-lPW=) endif +# On all HPUX versions, embed LIBDIR as the shared library search path +# so that the executables don't need SHLIB_PATH to be set. +LDFLAGS+= -Wl,+b -Wl,$(LIBDIR) + # Does anyone use this stuff? #ifdef ENFORCE_ALIGNMENT # CFLAGS+= -DNOFIXADE diff --git a/src/tools/backend/index.html b/src/tools/backend/index.html index 8b74aa4d75..c4b007ac57 100644 --- a/src/tools/backend/index.html +++ b/src/tools/backend/index.html @@ -123,7 +123,7 @@ HREF="../../include/storage/lock.h">LOCKMETHODCTL). HREF="../../include/storage/lock.h">LOCK structure, looked up using relation, database object ids(LOCKTAG). The lock table structure contains the -lock modes(read, write) and circular linked list of backends (PROC structure pointers) waiting on the lock.