Skip to content

Commit 23119d5

Browse files
committed
Refactor DLSUFFIX handling
Move DLSUFFIX from makefiles into header files for all platforms. Move the DLSUFFIX assignment from src/makefiles/ to src/templates/, have configure read it, and then substitute it into Makefile.global and pg_config.h. This avoids the need for all makefile rules that need it to locally set CPPFLAGS. It also resolves an inconsistent setup between the two Windows build systems. Reviewed-by: Andres Freund <[email protected]> Discussion: https://www.postgresql.org/message-id/[email protected]
1 parent 5656683 commit 23119d5

26 files changed

+42
-39
lines changed

config/python.m4

+3-1
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,9 @@ else
120120
found_shlib=0
121121
for d in "${python_libdir}" "${python_configdir}" /usr/lib64 /usr/lib
122122
do
123-
# We don't know the platform DLSUFFIX here, so check 'em all.
123+
# Note: DLSUFFIX is for loadable modules, not shared
124+
# libraries, so cannot be used here portably. Just
125+
# check all known possibilities.
124126
for e in .so .dll .dylib .sl; do
125127
if test -e "$d/lib${ldlibrary}$e"; then
126128
python_libdir="$d"

configure

+13-1
Original file line numberDiff line numberDiff line change
@@ -734,6 +734,7 @@ autodepend
734734
PKG_CONFIG_LIBDIR
735735
PKG_CONFIG_PATH
736736
PKG_CONFIG
737+
DLSUFFIX
737738
TAS
738739
GCC
739740
CPP
@@ -3033,6 +3034,9 @@ PORTNAME=$template
30333034
need_tas=no
30343035
tas_file=dummy.s
30353036

3037+
# Default, works for most platforms, override in template file if needed
3038+
DLSUFFIX=".so"
3039+
30363040

30373041

30383042
##
@@ -7688,6 +7692,12 @@ else
76887692
fi
76897693

76907694

7695+
7696+
cat >>confdefs.h <<_ACEOF
7697+
#define DLSUFFIX "$DLSUFFIX"
7698+
_ACEOF
7699+
7700+
76917701
#
76927702
# Set up pkg_config in case we need it below
76937703
#
@@ -10560,7 +10570,9 @@ else
1056010570
found_shlib=0
1056110571
for d in "${python_libdir}" "${python_configdir}" /usr/lib64 /usr/lib
1056210572
do
10563-
# We don't know the platform DLSUFFIX here, so check 'em all.
10573+
# Note: DLSUFFIX is for loadable modules, not shared
10574+
# libraries, so cannot be used here portably. Just
10575+
# check all known possibilities.
1056410576
for e in .so .dll .dylib .sl; do
1056510577
if test -e "$d/lib${ldlibrary}$e"; then
1056610578
python_libdir="$d"

configure.ac

+7
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,9 @@ AC_SUBST(PORTNAME)
103103
need_tas=no
104104
tas_file=dummy.s
105105

106+
# Default, works for most platforms, override in template file if needed
107+
DLSUFFIX=".so"
108+
106109

107110

108111
##
@@ -721,6 +724,10 @@ else
721724
fi
722725
AC_SUBST(TAS)
723726

727+
AC_SUBST(DLSUFFIX)dnl
728+
AC_DEFINE_UNQUOTED([DLSUFFIX], ["$DLSUFFIX"],
729+
[Define to the file name extension of dynamically-loadable modules.])
730+
724731
#
725732
# Set up pkg_config in case we need it below
726733
#

src/Makefile.global.in

+2
Original file line numberDiff line numberDiff line change
@@ -545,6 +545,8 @@ WIN32_STACK_RLIMIT=4194304
545545
# Set if we have a working win32 crashdump header
546546
have_win32_dbghelp = @have_win32_dbghelp@
547547

548+
DLSUFFIX = @DLSUFFIX@
549+
548550
# Pull in platform-specific magic
549551
include $(top_builddir)/src/Makefile.port
550552

src/backend/jit/Makefile

-2
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@ subdir = src/backend/jit
1515
top_builddir = ../../..
1616
include $(top_builddir)/src/Makefile.global
1717

18-
override CPPFLAGS += -DDLSUFFIX=\"$(DLSUFFIX)\"
19-
2018
OBJS = \
2119
jit.o
2220

src/backend/utils/fmgr/Makefile

-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,4 @@ OBJS = \
1717
fmgr.o \
1818
funcapi.o
1919

20-
override CPPFLAGS += -DDLSUFFIX=\"$(DLSUFFIX)\"
21-
2220
include $(top_srcdir)/src/backend/common.mk

src/backend/utils/fmgr/dfmgr.c

-5
Original file line numberDiff line numberDiff line change
@@ -483,11 +483,6 @@ file_exists(const char *name)
483483
}
484484

485485

486-
/* Example format: ".so" */
487-
#ifndef DLSUFFIX
488-
#error "DLSUFFIX must be defined to compile this file."
489-
#endif
490-
491486
/*
492487
* If name contains a slash, check if the file exists, if so return
493488
* the name. Else (no slash) try to expand using search path (see

src/bin/pg_upgrade/Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ OBJS = \
2525
util.o \
2626
version.o
2727

28-
override CPPFLAGS := -DDLSUFFIX=\"$(DLSUFFIX)\" -I$(srcdir) -I$(libpq_srcdir) $(CPPFLAGS)
28+
override CPPFLAGS := -I$(srcdir) -I$(libpq_srcdir) $(CPPFLAGS)
2929
LDFLAGS_INTERNAL += -L$(top_builddir)/src/fe_utils -lpgfeutils $(libpq_pgport)
3030

3131
all: pg_upgrade

src/include/pg_config.h.in

+3
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@
4242
/* Define to the default TCP port number as a string constant. */
4343
#undef DEF_PGPORT_STR
4444

45+
/* Define to the file name extension of dynamically-loadable modules. */
46+
#undef DLSUFFIX
47+
4548
/* Define to build with GSSAPI support. (--with-gssapi) */
4649
#undef ENABLE_GSS
4750

src/include/port/win32_port.h

-3
Original file line numberDiff line numberDiff line change
@@ -529,9 +529,6 @@ typedef unsigned short mode_t;
529529
#define W_OK 2
530530
#define R_OK 4
531531

532-
/* Pulled from Makefile.port in MinGW */
533-
#define DLSUFFIX ".dll"
534-
535532
#endif /* _MSC_VER */
536533

537534
#if (defined(_MSC_VER) && (_MSC_VER < 1900)) || \

src/interfaces/ecpg/test/Makefile

-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ override CPPFLAGS := \
1212
'-I$(top_srcdir)/src/test/regress' \
1313
'-DHOST_TUPLE="$(host_tuple)"' \
1414
'-DSHELLPROG="$(SHELL)"' \
15-
'-DDLSUFFIX="$(DLSUFFIX)"' \
1615
$(CPPFLAGS)
1716

1817
# default encoding for regression tests

src/makefiles/Makefile.aix

-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ else
1414
rpath = -Wl,-blibpath:'$(rpathdir)$(libpath)'
1515
endif
1616

17-
DLSUFFIX = .so
1817
ifeq ($(host_os), aix3.2.5)
1918
ifneq ($(GCC), yes)
2019
LDFLAGS_SL += -e _nostart -H512 -bM:SRE

src/makefiles/Makefile.cygwin

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ endif
1111
LIBS:=$(filter-out -lm -lc, $(LIBS))
1212

1313
AROPT = crs
14-
DLSUFFIX = .dll
1514

1615
override CPPFLAGS += -DWIN32_STACK_RLIMIT=$(WIN32_STACK_RLIMIT)
1716

src/makefiles/Makefile.darwin

-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
AROPT = crs
22

3-
DLSUFFIX = .so
4-
53
# env var name to use in place of LD_LIBRARY_PATH
64
ld_library_path_var = DYLD_LIBRARY_PATH
75

src/makefiles/Makefile.freebsd

-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ AROPT = cr
33
export_dynamic = -Wl,-export-dynamic
44
rpath = -Wl,-R'$(rpathdir)'
55

6-
DLSUFFIX = .so
7-
86
# extra stuff for $(with_temp_install)
97
# we need this to get LD_LIBRARY_PATH searched ahead of the compiled-in
108
# rpath, if no DT_RUNPATH is present in the executable. The conditions

src/makefiles/Makefile.hpux

-6
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,6 @@ INSTALL_SHLIB_OPTS = -m 555
2525

2626
AROPT = crs
2727

28-
ifeq ($(host_cpu), ia64)
29-
DLSUFFIX = .so
30-
else
31-
DLSUFFIX = .sl
32-
endif
33-
3428
# env var name to use in place of LD_LIBRARY_PATH
3529
ld_library_path_var = SHLIB_PATH
3630

src/makefiles/Makefile.linux

-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ export_dynamic = -Wl,-E
55
# This allows LD_LIBRARY_PATH to still work when needed.
66
rpath = -Wl,-rpath,'$(rpathdir)',--enable-new-dtags
77

8-
DLSUFFIX = .so
9-
108

119
# Rule for building a shared library from a single .o file
1210
%.so: %.o

src/makefiles/Makefile.netbsd

-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ AROPT = cr
33
export_dynamic = -Wl,-E
44
rpath = -Wl,-R'$(rpathdir)'
55

6-
DLSUFFIX = .so
7-
86

97
# Rule for building a shared library from a single .o file
108
%.so: %.o

src/makefiles/Makefile.openbsd

-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ AROPT = cr
33
export_dynamic = -Wl,-E
44
rpath = -Wl,-R'$(rpathdir)'
55

6-
DLSUFFIX = .so
7-
86

97
# Rule for building a shared library from a single .o file
108
%.so: %.o

src/makefiles/Makefile.solaris

-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ else
99
rpath = -Wl,-R'$(rpathdir)'
1010
endif
1111

12-
DLSUFFIX = .so
13-
1412

1513
# Rule for building a shared library from a single .o file
1614
%.so: %.o

src/makefiles/Makefile.win32

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ endif
1111
override CPPFLAGS += -DWIN32_STACK_RLIMIT=$(WIN32_STACK_RLIMIT)
1212

1313
AROPT = crs
14-
DLSUFFIX = .dll
1514

1615
ifneq (,$(findstring backend,$(subdir)))
1716
ifeq (,$(findstring conversion_procs,$(subdir)))

src/template/cygwin

+2
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,5 @@ CFLAGS_SL=""
1313
# we'd prefer to use --disable-auto-import to match MSVC linking behavior,
1414
# but support for it in Cygwin is too haphazard
1515
LDFLAGS="$LDFLAGS -Wl,--allow-multiple-definition -Wl,--enable-auto-import"
16+
17+
DLSUFFIX=".dll"

src/template/hpux

+7
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,10 @@ case $host in
2525
fi
2626
;;
2727
esac
28+
29+
case $host_cpu in
30+
ia64)
31+
DLSUFFIX=".so";;
32+
*)
33+
DLSUFFIX=".sl";;
34+
esac

src/template/win32

+2
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,5 @@ CFLAGS_SL=""
77
# pg_toupper() etc. in both libpq and pgport
88
# --disable-auto-import is to ensure we get MSVC-like linking behavior
99
LDFLAGS="$LDFLAGS -Wl,--allow-multiple-definition -Wl,--disable-auto-import"
10+
11+
DLSUFFIX=".dll"

src/test/regress/GNUmakefile

+1-2
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ endif
2525

2626
# stuff to pass into build of pg_regress
2727
EXTRADEFS = '-DHOST_TUPLE="$(host_tuple)"' \
28-
'-DSHELLPROG="$(SHELL)"' \
29-
'-DDLSUFFIX="$(DLSUFFIX)"'
28+
'-DSHELLPROG="$(SHELL)"'
3029

3130
##
3231
## Prepare for tests

src/tools/msvc/Solution.pm

+1
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ sub GenerateFiles
216216
CONFIGURE_ARGS => '"' . $self->GetFakeConfigure() . '"',
217217
DEF_PGPORT => $port,
218218
DEF_PGPORT_STR => qq{"$port"},
219+
DLSUFFIX => '".dll"',
219220
ENABLE_GSS => $self->{options}->{gss} ? 1 : undef,
220221
ENABLE_NLS => $self->{options}->{nls} ? 1 : undef,
221222
ENABLE_THREAD_SAFETY => 1,

0 commit comments

Comments
 (0)