Skip to content

Commit e167b1a

Browse files
committed
Select CFLAGS_SL at configure time, not in platform-specific Makefiles.
Move the platform-dependent logic that sets CFLAGS_SL from src/makefiles/Makefile.foo to src/template/foo, so that the value is determined at configure time and thus is available while running configure's tests. On a couple of platforms this might save a few microseconds of build time by eliminating a test that make otherwise has to do over and over. Otherwise it's pretty much a wash for build purposes; in particular, this makes no difference to anyone who might be overriding CFLAGS_SL via a make option. This patch in itself does nothing with the value and thus should not change any behavior, though you'll probably have to re-run configure to get a correctly updated Makefile.global. We'll use the new configure variable in a follow-on patch. Per gripe from Kyotaro Horiguchi. Back-patch to all supported branches, because the follow-on patch is a portability bug fix. Discussion: https://postgr.es/m/20191010.144533.263180400.horikyota.ntt@gmail.com
1 parent 0839293 commit e167b1a

21 files changed

+53
-22
lines changed

configure

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -728,6 +728,7 @@ autodepend
728728
TAS
729729
GCC
730730
CPP
731+
CFLAGS_SL
731732
CFLAGS_VECTOR
732733
SUN_STUDIO_CC
733734
OBJEXT
@@ -5143,7 +5144,6 @@ fi
51435144

51445145
fi
51455146

5146-
CFLAGS_VECTOR=$CFLAGS_VECTOR
51475147

51485148

51495149
# supply -g if --enable-debug
@@ -5182,6 +5182,9 @@ fi
51825182
# the automatic additions.
51835183
CFLAGS="$CFLAGS $user_CFLAGS"
51845184

5185+
# The template file must set up CFLAGS_SL; we don't support user override
5186+
5187+
51855188
# Check if the compiler still works with the final flag settings
51865189
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler still works" >&5
51875190
$as_echo_n "checking whether the C compiler still works... " >&6; }

configure.in

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -500,7 +500,7 @@ elif test "$PORTNAME" = "hpux"; then
500500
PGAC_PROG_CC_CFLAGS_OPT([+Olibmerrno])
501501
fi
502502

503-
AC_SUBST(CFLAGS_VECTOR, $CFLAGS_VECTOR)
503+
AC_SUBST(CFLAGS_VECTOR)
504504

505505
# supply -g if --enable-debug
506506
if test "$enable_debug" = yes && test "$ac_cv_prog_cc_g" = yes; then
@@ -537,6 +537,9 @@ fi
537537
# the automatic additions.
538538
CFLAGS="$CFLAGS $user_CFLAGS"
539539

540+
# The template file must set up CFLAGS_SL; we don't support user override
541+
AC_SUBST(CFLAGS_SL)
542+
540543
# Check if the compiler still works with the final flag settings
541544
AC_MSG_CHECKING([whether the C compiler still works])
542545
AC_LINK_IFELSE([AC_LANG_PROGRAM([], [return 0;])],

src/Makefile.global.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,7 @@ CC = @CC@
248248
GCC = @GCC@
249249
SUN_STUDIO_CC = @SUN_STUDIO_CC@
250250
CFLAGS = @CFLAGS@
251+
CFLAGS_SL = @CFLAGS_SL@
251252
CFLAGS_VECTOR = @CFLAGS_VECTOR@
252253
CFLAGS_SSE42 = @CFLAGS_SSE42@
253254

src/makefiles/Makefile.cygwin

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ LIBS:=$(filter-out -lm -lc, $(LIBS))
1212

1313
AROPT = crs
1414
DLSUFFIX = .dll
15-
CFLAGS_SL =
1615

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

src/makefiles/Makefile.freebsd

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ endif
77

88
DLSUFFIX = .so
99

10-
CFLAGS_SL = -fPIC -DPIC
11-
1210
# extra stuff for $(with_temp_install)
1311
# we need this to get LD_LIBRARY_PATH searched ahead of the compiled-in
1412
# rpath, if no DT_RUNPATH is present in the executable. The conditions

src/makefiles/Makefile.hpux

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,6 @@ ifeq ($(host_cpu), ia64)
3030
else
3131
DLSUFFIX = .sl
3232
endif
33-
ifeq ($(GCC), yes)
34-
CFLAGS_SL = -fPIC
35-
else
36-
CFLAGS_SL = +Z
37-
endif
3833

3934
# env var name to use in place of LD_LIBRARY_PATH
4035
ld_library_path_var = SHLIB_PATH

src/makefiles/Makefile.linux

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ rpath = -Wl,-rpath,'$(rpathdir)',--enable-new-dtags
77

88
DLSUFFIX = .so
99

10-
CFLAGS_SL = -fPIC
11-
1210

1311
# Rule for building a shared library from a single .o file
1412
%.so: %.o

src/makefiles/Makefile.netbsd

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ endif
99

1010
DLSUFFIX = .so
1111

12-
CFLAGS_SL = -fPIC -DPIC
13-
1412

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

src/makefiles/Makefile.openbsd

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ endif
77

88
DLSUFFIX = .so
99

10-
CFLAGS_SL = -fPIC -DPIC
11-
1210

1311
# Rule for building a shared library from a single .o file
1412
%.so: %.o

src/makefiles/Makefile.solaris

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,7 @@ rpath = -Wl,-R'$(rpathdir)'
1010
endif
1111

1212
DLSUFFIX = .so
13-
ifeq ($(GCC), yes)
14-
CFLAGS_SL = -fPIC
15-
else
16-
CFLAGS_SL = -KPIC
17-
endif
13+
1814

1915
# Rule for building a shared library from a single .o file
2016
%.so: %.o

src/makefiles/Makefile.win32

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ override CPPFLAGS += -DWIN32_STACK_RLIMIT=$(WIN32_STACK_RLIMIT)
1212

1313
AROPT = crs
1414
DLSUFFIX = .dll
15-
CFLAGS_SL =
1615

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

src/template/aix

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# src/template/aix
2+
13
# Set default options if using xlc. This formerly included -qsrcmsg, but that
24
# option elicits internal compiler errors from xlc v16.1.0. Note: configure
35
# will add -qnoansialias if the compiler accepts it, even if user specifies a
@@ -13,6 +15,9 @@ if test "$GCC" != yes ; then
1315
esac
1416
fi
1517

18+
# Extra CFLAGS for code that will go into a shared library
19+
CFLAGS_SL=""
20+
1621
# Native memset() is faster, tested on:
1722
# AIX 5.1 and 5.2, XLC 6.0 (IBM's cc)
1823
# AIX 5.3 ML3, gcc 4.0.1

src/template/cygwin

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
SRCH_LIB="/usr/local/lib"
44

5+
# Extra CFLAGS for code that will go into a shared library
6+
CFLAGS_SL=""
7+
58
# --allow-multiple-definition is required to link pg_dump because it finds
69
# pg_toupper() etc. in both libpq and pgport
710
# we'd prefer to use --disable-auto-import to match MSVC linking behavior,

src/template/darwin

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ if test x"$PG_SYSROOT" != x"" ; then
1616
fi
1717
fi
1818

19+
# Extra CFLAGS for code that will go into a shared library
20+
CFLAGS_SL=""
21+
1922
# Select appropriate semaphore support. Darwin 6.0 (macOS 10.2) and up
2023
# support System V semaphores; before that we have to use named POSIX
2124
# semaphores, which are less good for our purposes because they eat a

src/template/freebsd

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,6 @@
44
if test x"$PREFERRED_SEMAPHORES" = x"" ; then
55
PREFERRED_SEMAPHORES=UNNAMED_POSIX
66
fi
7+
8+
# Extra CFLAGS for code that will go into a shared library
9+
CFLAGS_SL="-fPIC -DPIC"

src/template/hpux

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,13 @@ if test "$GCC" != yes ; then
88
CFLAGS="+O2"
99
fi
1010

11+
# Extra CFLAGS for code that will go into a shared library
12+
if test "$GCC" = yes ; then
13+
CFLAGS_SL="-fPIC"
14+
else
15+
CFLAGS_SL="+Z"
16+
fi
17+
1118
# Pick right test-and-set (TAS) code. We need out-of-line assembler
1219
# when not using gcc.
1320
case $host in

src/template/linux

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ fi
88
# Force _GNU_SOURCE on; plperl is broken with Perl 5.8.0 otherwise
99
CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
1010

11+
# Extra CFLAGS for code that will go into a shared library
12+
CFLAGS_SL="-fPIC"
13+
1114
# If --enable-profiling is specified, we need -DLINUX_PROFILE
1215
PLATFORM_PROFILE_FLAGS="-DLINUX_PROFILE"
1316

src/template/netbsd

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
# src/template/netbsd
22
# tools/thread/thread_test must be run
3+
4+
# Extra CFLAGS for code that will go into a shared library
5+
CFLAGS_SL="-fPIC -DPIC"

src/template/openbsd

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# src/template/openbsd
2+
3+
# Extra CFLAGS for code that will go into a shared library
4+
CFLAGS_SL="-fPIC -DPIC"

src/template/solaris

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
# src/template/solaris
2+
3+
# Extra CFLAGS for code that will go into a shared library
4+
if test "$GCC" = yes ; then
5+
CFLAGS_SL="-fPIC"
6+
else
7+
CFLAGS_SL="-KPIC"
8+
fi
9+
110
if test "$SUN_STUDIO_CC" = yes ; then
211
CC="$CC -Xa" # relaxed ISO C mode
312
CFLAGS="-v" # -v is like gcc -Wall

src/template/win32

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# src/template/win32
22

3+
# Extra CFLAGS for code that will go into a shared library
4+
CFLAGS_SL=""
5+
36
# --allow-multiple-definition is required to link pg_dump because it finds
47
# pg_toupper() etc. in both libpq and pgport
58
# --disable-auto-import is to ensure we get MSVC-like linking behavior

0 commit comments

Comments
 (0)