Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 44273ce

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 80831bc commit 44273ce

21 files changed

+55
-26
lines changed

configure

+4-3
Original file line numberDiff line numberDiff line change
@@ -728,6 +728,7 @@ autodepend
728728
TAS
729729
GCC
730730
CPP
731+
CFLAGS_SL
731732
BITCODE_CXXFLAGS
732733
BITCODE_CFLAGS
733734
CFLAGS_VECTOR
@@ -6579,7 +6580,6 @@ fi
65796580

65806581
fi
65816582

6582-
CFLAGS_VECTOR=$CFLAGS_VECTOR
65836583

65846584

65856585
# Determine flags used to emit bitcode for JIT inlining. Need to test
@@ -6899,9 +6899,10 @@ CXXFLAGS="$CXXFLAGS $user_CXXFLAGS"
68996899
BITCODE_CFLAGS="$BITCODE_CFLAGS $user_BITCODE_CFLAGS"
69006900
BITCODE_CXXFLAGS="$BITCODE_CXXFLAGS $user_BITCODE_CXXFLAGS"
69016901

6902-
BITCODE_CFLAGS=$BITCODE_CFLAGS
69036902

6904-
BITCODE_CXXFLAGS=$BITCODE_CXXFLAGS
6903+
6904+
6905+
# The template file must set up CFLAGS_SL; we don't support user override
69056906

69066907

69076908
# Check if the compiler still works with the final flag settings

configure.in

+6-3
Original file line numberDiff line numberDiff line change
@@ -547,7 +547,7 @@ elif test "$PORTNAME" = "hpux"; then
547547
PGAC_PROG_CXX_CFLAGS_OPT([+Olibmerrno])
548548
fi
549549

550-
AC_SUBST(CFLAGS_VECTOR, $CFLAGS_VECTOR)
550+
AC_SUBST(CFLAGS_VECTOR)
551551

552552
# Determine flags used to emit bitcode for JIT inlining. Need to test
553553
# for behaviour changing compiler flags, to keep compatibility with
@@ -607,8 +607,11 @@ CXXFLAGS="$CXXFLAGS $user_CXXFLAGS"
607607
BITCODE_CFLAGS="$BITCODE_CFLAGS $user_BITCODE_CFLAGS"
608608
BITCODE_CXXFLAGS="$BITCODE_CXXFLAGS $user_BITCODE_CXXFLAGS"
609609

610-
AC_SUBST(BITCODE_CFLAGS, $BITCODE_CFLAGS)
611-
AC_SUBST(BITCODE_CXXFLAGS, $BITCODE_CXXFLAGS)
610+
AC_SUBST(BITCODE_CFLAGS)
611+
AC_SUBST(BITCODE_CXXFLAGS)
612+
613+
# The template file must set up CFLAGS_SL; we don't support user override
614+
AC_SUBST(CFLAGS_SL)
612615

613616
# Check if the compiler still works with the final flag settings
614617
# (note, we're not checking that for CXX, which is optional)

src/Makefile.global.in

+1
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@ GCC = @GCC@
258258
SUN_STUDIO_CC = @SUN_STUDIO_CC@
259259
CXX = @CXX@
260260
CFLAGS = @CFLAGS@
261+
CFLAGS_SL = @CFLAGS_SL@
261262
CFLAGS_VECTOR = @CFLAGS_VECTOR@
262263
CFLAGS_SSE42 = @CFLAGS_SSE42@
263264
CFLAGS_ARMV8_CRC32C = @CFLAGS_ARMV8_CRC32C@

src/makefiles/Makefile.cygwin

-1
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

-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ rpath = -Wl,-R'$(rpathdir)'
55

66
DLSUFFIX = .so
77

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

src/makefiles/Makefile.hpux

-5
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

-2
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

-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ rpath = -Wl,-R'$(rpathdir)'
55

66
DLSUFFIX = .so
77

8-
CFLAGS_SL = -fPIC -DPIC
9-
108

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

src/makefiles/Makefile.openbsd

-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ rpath = -Wl,-R'$(rpathdir)'
55

66
DLSUFFIX = .so
77

8-
CFLAGS_SL = -fPIC -DPIC
9-
108

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

src/makefiles/Makefile.solaris

+1-5
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

-1
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

+5
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
@@ -17,6 +19,9 @@ if test "$GCC" != yes ; then
1719
FORCE_DISABLE_RESTRICT=yes
1820
fi
1921

22+
# Extra CFLAGS for code that will go into a shared library
23+
CFLAGS_SL=""
24+
2025
# Native memset() is faster, tested on:
2126
# AIX 5.1 and 5.2, XLC 6.0 (IBM's cc)
2227
# AIX 5.3 ML3, gcc 4.0.1

src/template/cygwin

+3
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

+3
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

+3
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

+7
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

+3
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ fi
99
# This is also required for ppoll(2), and perhaps other things
1010
CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
1111

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

src/template/netbsd

+3
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

+4
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

+9
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

+3
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)