summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2019-10-21 16:32:36 +0000
committerTom Lane2019-10-21 16:32:36 +0000
commit727c2ccfefb5d8b77316902bce2427b7864be997 (patch)
tree4f88292726a998c882589fc106b832e625d2ebce
parent930787c7fab98f14f1e4a98a201a7f7cef2e55bc (diff)
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/[email protected]
-rwxr-xr-xconfigure5
-rw-r--r--configure.in5
-rw-r--r--src/Makefile.global.in1
-rw-r--r--src/makefiles/Makefile.cygwin1
-rw-r--r--src/makefiles/Makefile.freebsd2
-rw-r--r--src/makefiles/Makefile.hpux5
-rw-r--r--src/makefiles/Makefile.linux2
-rw-r--r--src/makefiles/Makefile.netbsd2
-rw-r--r--src/makefiles/Makefile.openbsd2
-rw-r--r--src/makefiles/Makefile.osf2
-rw-r--r--src/makefiles/Makefile.sco6
-rw-r--r--src/makefiles/Makefile.solaris6
-rw-r--r--src/makefiles/Makefile.unixware6
-rw-r--r--src/makefiles/Makefile.win321
-rw-r--r--src/template/aix5
-rw-r--r--src/template/cygwin3
-rw-r--r--src/template/darwin3
-rw-r--r--src/template/freebsd3
-rw-r--r--src/template/hpux7
-rw-r--r--src/template/linux3
-rw-r--r--src/template/netbsd3
-rw-r--r--src/template/openbsd4
-rw-r--r--src/template/osf3
-rw-r--r--src/template/sco9
-rw-r--r--src/template/solaris9
-rw-r--r--src/template/unixware9
-rw-r--r--src/template/win323
27 files changed, 77 insertions, 33 deletions
diff --git a/configure b/configure
index 65cd7d3fd39..7f2a0a0256a 100755
--- a/configure
+++ b/configure
@@ -723,6 +723,7 @@ autodepend
TAS
GCC
CPP
+CFLAGS_SL
CFLAGS_VECTOR
SUN_STUDIO_CC
OBJEXT
@@ -5009,7 +5010,6 @@ fi
fi
-CFLAGS_VECTOR=$CFLAGS_VECTOR
# supply -g if --enable-debug
@@ -5048,6 +5048,9 @@ fi
# the automatic additions.
CFLAGS="$CFLAGS $user_CFLAGS"
+# The template file must set up CFLAGS_SL; we don't support user override
+
+
# Check if the compiler still works with the final flag settings
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler still works" >&5
$as_echo_n "checking whether the C compiler still works... " >&6; }
diff --git a/configure.in b/configure.in
index 7b3e15092a0..ab640115fb1 100644
--- a/configure.in
+++ b/configure.in
@@ -475,7 +475,7 @@ elif test "$PORTNAME" = "hpux"; then
PGAC_PROG_CC_CFLAGS_OPT([+Olibmerrno])
fi
-AC_SUBST(CFLAGS_VECTOR, $CFLAGS_VECTOR)
+AC_SUBST(CFLAGS_VECTOR)
# supply -g if --enable-debug
if test "$enable_debug" = yes && test "$ac_cv_prog_cc_g" = yes; then
@@ -512,6 +512,9 @@ fi
# the automatic additions.
CFLAGS="$CFLAGS $user_CFLAGS"
+# The template file must set up CFLAGS_SL; we don't support user override
+AC_SUBST(CFLAGS_SL)
+
# Check if the compiler still works with the final flag settings
AC_MSG_CHECKING([whether the C compiler still works])
AC_TRY_LINK([], [return 0;],
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index b4a2f9c8795..c2ff2d8f1c3 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -241,6 +241,7 @@ CC = @CC@
GCC = @GCC@
SUN_STUDIO_CC = @SUN_STUDIO_CC@
CFLAGS = @CFLAGS@
+CFLAGS_SL = @CFLAGS_SL@
CFLAGS_VECTOR = @CFLAGS_VECTOR@
# Kind-of compilers
diff --git a/src/makefiles/Makefile.cygwin b/src/makefiles/Makefile.cygwin
index 5d70782acd9..4dd05a7ae5b 100644
--- a/src/makefiles/Makefile.cygwin
+++ b/src/makefiles/Makefile.cygwin
@@ -12,7 +12,6 @@ LIBS:=$(filter-out -lm -lc, $(LIBS))
AROPT = crs
DLSUFFIX = .dll
-CFLAGS_SL =
override CPPFLAGS += -DWIN32_STACK_RLIMIT=$(WIN32_STACK_RLIMIT)
diff --git a/src/makefiles/Makefile.freebsd b/src/makefiles/Makefile.freebsd
index 5a98e5a2b0b..e996f1ab4a4 100644
--- a/src/makefiles/Makefile.freebsd
+++ b/src/makefiles/Makefile.freebsd
@@ -7,8 +7,6 @@ endif
DLSUFFIX = .so
-CFLAGS_SL = -fPIC -DPIC
-
# Rule for building a shared library from a single .o file
%.so: %.o
diff --git a/src/makefiles/Makefile.hpux b/src/makefiles/Makefile.hpux
index 1917d61b436..39ed39aec84 100644
--- a/src/makefiles/Makefile.hpux
+++ b/src/makefiles/Makefile.hpux
@@ -37,11 +37,6 @@ ifeq ($(host_cpu), ia64)
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
diff --git a/src/makefiles/Makefile.linux b/src/makefiles/Makefile.linux
index f4f091caef5..c6d0546e4d5 100644
--- a/src/makefiles/Makefile.linux
+++ b/src/makefiles/Makefile.linux
@@ -7,8 +7,6 @@ rpath = -Wl,-rpath,'$(rpathdir)',--enable-new-dtags
DLSUFFIX = .so
-CFLAGS_SL = -fPIC
-
# Rule for building a shared library from a single .o file
%.so: %.o
diff --git a/src/makefiles/Makefile.netbsd b/src/makefiles/Makefile.netbsd
index 43841c15973..c2a3cce4f01 100644
--- a/src/makefiles/Makefile.netbsd
+++ b/src/makefiles/Makefile.netbsd
@@ -9,8 +9,6 @@ endif
DLSUFFIX = .so
-CFLAGS_SL = -fPIC -DPIC
-
# Rule for building a shared library from a single .o file
%.so: %.o
diff --git a/src/makefiles/Makefile.openbsd b/src/makefiles/Makefile.openbsd
index d8fde49d5c8..0c5a7b4eb35 100644
--- a/src/makefiles/Makefile.openbsd
+++ b/src/makefiles/Makefile.openbsd
@@ -7,8 +7,6 @@ endif
DLSUFFIX = .so
-CFLAGS_SL = -fPIC -DPIC
-
# Rule for building a shared library from a single .o file
%.so: %.o
diff --git a/src/makefiles/Makefile.osf b/src/makefiles/Makefile.osf
index 31822fd79d3..2d581d3b9fb 100644
--- a/src/makefiles/Makefile.osf
+++ b/src/makefiles/Makefile.osf
@@ -1,6 +1,6 @@
AROPT = crs
DLSUFFIX = .so
-CFLAGS_SL =
+
rpath = -rpath '$(rpathdir)'
# Rule for building a shared library from a single .o file
diff --git a/src/makefiles/Makefile.sco b/src/makefiles/Makefile.sco
index 993861570ac..49c6693f148 100644
--- a/src/makefiles/Makefile.sco
+++ b/src/makefiles/Makefile.sco
@@ -2,11 +2,7 @@ AROPT = cr
export_dynamic = -Wl,-Bexport
DLSUFFIX = .so
-ifeq ($(GCC), yes)
-CFLAGS_SL = -fpic
-else
-CFLAGS_SL = -K PIC
-endif
+
# Rule for building a shared library from a single .o file
%.so: %.o
diff --git a/src/makefiles/Makefile.solaris b/src/makefiles/Makefile.solaris
index e459de30cf4..a05c0e0d3d2 100644
--- a/src/makefiles/Makefile.solaris
+++ b/src/makefiles/Makefile.solaris
@@ -10,11 +10,7 @@ rpath = -Wl,-R'$(rpathdir)'
endif
DLSUFFIX = .so
-ifeq ($(GCC), yes)
-CFLAGS_SL = -fPIC
-else
-CFLAGS_SL = -KPIC
-endif
+
# Rule for building a shared library from a single .o file
%.so: %.o
diff --git a/src/makefiles/Makefile.unixware b/src/makefiles/Makefile.unixware
index a52717b2688..3d177b76e97 100644
--- a/src/makefiles/Makefile.unixware
+++ b/src/makefiles/Makefile.unixware
@@ -17,11 +17,7 @@ endif
CFLAGS += $(PTHREAD_CFLAGS)
DLSUFFIX = .so
-ifeq ($(GCC), yes)
-CFLAGS_SL = -fpic
-else
-CFLAGS_SL = -K PIC
-endif
+
ifeq ($(GCC), yes)
SO_FLAGS = -shared
else
diff --git a/src/makefiles/Makefile.win32 b/src/makefiles/Makefile.win32
index f0da19c94d6..2a033478717 100644
--- a/src/makefiles/Makefile.win32
+++ b/src/makefiles/Makefile.win32
@@ -13,7 +13,6 @@ override CPPFLAGS += -DWIN32_STACK_RLIMIT=$(WIN32_STACK_RLIMIT)
AROPT = crs
DLSUFFIX = .dll
-CFLAGS_SL =
ifneq (,$(findstring backend,$(subdir)))
ifeq (,$(findstring conversion_procs,$(subdir)))
diff --git a/src/template/aix b/src/template/aix
index 230d4613f3c..f7954123e1b 100644
--- a/src/template/aix
+++ b/src/template/aix
@@ -1,3 +1,5 @@
+# src/template/aix
+
# Set default options if using xlc. This formerly included -qsrcmsg, but that
# option elicits internal compiler errors from xlc v16.1.0. Note: configure
# will add -qnoansialias if the compiler accepts it, even if user specifies a
@@ -13,6 +15,9 @@ if test "$GCC" != yes ; then
esac
fi
+# Extra CFLAGS for code that will go into a shared library
+CFLAGS_SL=""
+
# Native memset() is faster, tested on:
# AIX 5.1 and 5.2, XLC 6.0 (IBM's cc)
# AIX 5.3 ML3, gcc 4.0.1
diff --git a/src/template/cygwin b/src/template/cygwin
index e484fe650c6..be8df78b6e0 100644
--- a/src/template/cygwin
+++ b/src/template/cygwin
@@ -2,6 +2,9 @@
SRCH_LIB="/usr/local/lib"
+# Extra CFLAGS for code that will go into a shared library
+CFLAGS_SL=""
+
# --allow-multiple-definition is required to link pg_dump because it finds
# pg_toupper() etc. in both libpq and pgport
# we'd prefer to use --disable-auto-import to match MSVC linking behavior,
diff --git a/src/template/darwin b/src/template/darwin
index c05adca0bfb..f4d4e9d7cf8 100644
--- a/src/template/darwin
+++ b/src/template/darwin
@@ -16,6 +16,9 @@ if test x"$PG_SYSROOT" != x"" ; then
fi
fi
+# Extra CFLAGS for code that will go into a shared library
+CFLAGS_SL=""
+
# Select appropriate semaphore support. Darwin 6.0 (macOS 10.2) and up
# support System V semaphores; before that we have to use named POSIX
# semaphores, which are less good for our purposes because they eat a
diff --git a/src/template/freebsd b/src/template/freebsd
index 1e04fece42b..bf16e1bf072 100644
--- a/src/template/freebsd
+++ b/src/template/freebsd
@@ -1,5 +1,8 @@
# src/template/freebsd
+# Extra CFLAGS for code that will go into a shared library
+CFLAGS_SL="-fPIC -DPIC"
+
case $host_cpu in
alpha*) CFLAGS="-O";; # alpha has problems with -O2
esac
diff --git a/src/template/hpux b/src/template/hpux
index ce4d93ced7b..3c87d7a303d 100644
--- a/src/template/hpux
+++ b/src/template/hpux
@@ -7,6 +7,13 @@ if test "$GCC" != yes ; then
CFLAGS="+O2"
fi
+# Extra CFLAGS for code that will go into a shared library
+if test "$GCC" = yes ; then
+ CFLAGS_SL="-fPIC"
+else
+ CFLAGS_SL="+Z"
+fi
+
# Pick right test-and-set (TAS) code. We need out-of-line assembler
# when not using gcc.
case $host in
diff --git a/src/template/linux b/src/template/linux
index 3eb5ad2428f..09ab6af86cb 100644
--- a/src/template/linux
+++ b/src/template/linux
@@ -3,6 +3,9 @@
# Force _GNU_SOURCE on; plperl is broken with Perl 5.8.0 otherwise
CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
+# Extra CFLAGS for code that will go into a shared library
+CFLAGS_SL="-fPIC"
+
# If --enable-profiling is specified, we need -DLINUX_PROFILE
PLATFORM_PROFILE_FLAGS="-DLINUX_PROFILE"
diff --git a/src/template/netbsd b/src/template/netbsd
index 198697723df..d97f995c748 100644
--- a/src/template/netbsd
+++ b/src/template/netbsd
@@ -1,2 +1,5 @@
# src/template/netbsd
# tools/thread/thread_test must be run
+
+# Extra CFLAGS for code that will go into a shared library
+CFLAGS_SL="-fPIC -DPIC"
diff --git a/src/template/openbsd b/src/template/openbsd
index e69de29bb2d..365268c4897 100644
--- a/src/template/openbsd
+++ b/src/template/openbsd
@@ -0,0 +1,4 @@
+# src/template/openbsd
+
+# Extra CFLAGS for code that will go into a shared library
+CFLAGS_SL="-fPIC -DPIC"
diff --git a/src/template/osf b/src/template/osf
index 4f10ad619a3..c938affd8ed 100644
--- a/src/template/osf
+++ b/src/template/osf
@@ -4,3 +4,6 @@ if test "$GCC" != yes ; then
CC="$CC -std"
CFLAGS="-O -ieee"
fi
+
+# Extra CFLAGS for code that will go into a shared library
+CFLAGS_SL=""
diff --git a/src/template/sco b/src/template/sco
index 9a736da8be7..e216f1e7aa9 100644
--- a/src/template/sco
+++ b/src/template/sco
@@ -1 +1,10 @@
+# src/template/sco
+
CC="$CC -b elf"
+
+# Extra CFLAGS for code that will go into a shared library
+if test "$GCC" = yes ; then
+ CFLAGS_SL="-fpic"
+else
+ CFLAGS_SL="-K PIC"
+fi
diff --git a/src/template/solaris b/src/template/solaris
index e07b9a0a8d6..f88b1cdad37 100644
--- a/src/template/solaris
+++ b/src/template/solaris
@@ -1,3 +1,12 @@
+# src/template/solaris
+
+# Extra CFLAGS for code that will go into a shared library
+if test "$GCC" = yes ; then
+ CFLAGS_SL="-fPIC"
+else
+ CFLAGS_SL="-KPIC"
+fi
+
if test "$SUN_STUDIO_CC" = yes ; then
CC="$CC -Xa" # relaxed ISO C mode
CFLAGS="-v" # -v is like gcc -Wall
diff --git a/src/template/unixware b/src/template/unixware
index d08fca1e6be..006c4abe499 100644
--- a/src/template/unixware
+++ b/src/template/unixware
@@ -1,3 +1,5 @@
+# src/template/unixware
+
if test "$GCC" != yes; then
# The -Kno_host is for a bug in the compiler. See -hackers
# discussion on 7-8/Aug/2003.
@@ -37,5 +39,12 @@ __EOF__
fi
+# Extra CFLAGS for code that will go into a shared library
+if test "$GCC" = yes ; then
+ CFLAGS_SL="-fpic"
+else
+ CFLAGS_SL="-K PIC"
+fi
+
# Unixware's ldap library reportedly needs these too
EXTRA_LDAP_LIBS="-llber -lresolv"
diff --git a/src/template/win32 b/src/template/win32
index dc5b77ec076..d02dd97851f 100644
--- a/src/template/win32
+++ b/src/template/win32
@@ -1,5 +1,8 @@
# src/template/win32
+# Extra CFLAGS for code that will go into a shared library
+CFLAGS_SL=""
+
# --allow-multiple-definition is required to link pg_dump because it finds
# pg_toupper() etc. in both libpq and pgport
# --disable-auto-import is to ensure we get MSVC-like linking behavior