mirror of
https://git.postgresql.org/git/postgresql.git
synced 2026-02-18 20:36:58 +08:00
linking both executables and shared libraries, and we add on LDFLAGS_EX when linking executables or LDFLAGS_SL when linking shared libraries. This provides a significantly cleaner way of dealing with link-time switches than the former behavior. Also, make sure that the various platform-specific %.so: %.o rules incorporate LDFLAGS and LDFLAGS_SL; most of them missed that before. (I did not add these variables for the platforms that invoke $(LD) directly, however. It's not clear if we can do that safely, since for the most part we assume these variables use CC command-line syntax.) Per gripe from Aaron Swenson and subsequent investigation.
63 lines
1.5 KiB
Makefile
63 lines
1.5 KiB
Makefile
# If we don't have POSIX signals, we need to use the libBSD signal routines.
|
|
# (HPUX 9 and early HPUX 10 releases don't have POSIX signals.) Link in
|
|
# libBSD only in that case.
|
|
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)
|
|
|
|
# Set up rpath so that the executables don't need SHLIB_PATH to be set.
|
|
# (Note: --disable-rpath is a really bad idea on this platform...)
|
|
ifeq ($(with_gnu_ld), yes)
|
|
rpath = -Wl,-rpath -Wl,'$(rpathdir)'
|
|
else
|
|
rpath = -Wl,+b -Wl,'$(rpathdir)'
|
|
endif
|
|
|
|
# catch null pointer dereferences
|
|
ifeq ($(with_gnu_ld), yes)
|
|
# XXX what to put here?
|
|
else
|
|
LDFLAGS_EX += -Wl,-z
|
|
endif
|
|
|
|
# set up appropriate options for shared library builds
|
|
export_dynamic = -Wl,-E
|
|
|
|
INSTALL_SHLIB_OPTS = -m 555
|
|
|
|
AROPT = crs
|
|
|
|
ifeq ($(host_cpu), ia64)
|
|
DLSUFFIX = .so
|
|
else
|
|
DLSUFFIX = .sl
|
|
endif
|
|
ifeq ($(GCC), yes)
|
|
CFLAGS_SL = -fPIC
|
|
else
|
|
CFLAGS_SL = +Z
|
|
endif
|
|
|
|
# Rule for building a shared library from a single .o file
|
|
%$(DLSUFFIX): %.o
|
|
ifeq ($(GCC), yes)
|
|
ifeq ($(with_gnu_ld), yes)
|
|
$(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_SL) -shared -o $@ $< `$(CC) $(LDFLAGS) -print-libgcc-file-name`
|
|
else
|
|
$(LD) -b -o $@ $< `$(CC) $(LDFLAGS) -print-libgcc-file-name`
|
|
endif
|
|
else
|
|
ifeq ($(with_gnu_ld), yes)
|
|
$(CC) $(CFLAGS) $(LDFLAGS) $(LDFLAGS_SL) -shared -o $@ $<
|
|
else
|
|
$(LD) -b -o $@ $<
|
|
endif
|
|
endif
|
|
|
|
sqlmansect = 5
|