diff --git a/configure b/configure index 0db76c7636585dd5f5427bc38973afd195e9cac9..aa53c57510dd1bfd5960ba964228efc2de9211c3 100755 --- a/configure +++ b/configure @@ -729,6 +729,7 @@ autodepend TAS GCC CPP +CFLAGS_SL BITCODE_CXXFLAGS BITCODE_CFLAGS CFLAGS_VECTOR @@ -6368,7 +6369,6 @@ fi fi -CFLAGS_VECTOR=$CFLAGS_VECTOR # Determine flags used to emit bitcode for JIT inlining. Need to test @@ -6688,9 +6688,10 @@ CXXFLAGS="$CXXFLAGS $user_CXXFLAGS" BITCODE_CFLAGS="$BITCODE_CFLAGS $user_BITCODE_CFLAGS" BITCODE_CXXFLAGS="$BITCODE_CXXFLAGS $user_BITCODE_CXXFLAGS" -BITCODE_CFLAGS=$BITCODE_CFLAGS -BITCODE_CXXFLAGS=$BITCODE_CXXFLAGS + + +# 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 diff --git a/configure.in b/configure.in index b2a71bec23c601fa1443850647e42f539bc0b477..5f7e2d0a9b262bd8904cf0e2f1af96e7dbed2cfa 100644 --- a/configure.in +++ b/configure.in @@ -536,7 +536,7 @@ elif test "$PORTNAME" = "hpux"; then PGAC_PROG_CXX_CFLAGS_OPT([+Olibmerrno]) fi -AC_SUBST(CFLAGS_VECTOR, $CFLAGS_VECTOR) +AC_SUBST(CFLAGS_VECTOR) # Determine flags used to emit bitcode for JIT inlining. Need to test # for behaviour changing compiler flags, to keep compatibility with @@ -596,8 +596,11 @@ CXXFLAGS="$CXXFLAGS $user_CXXFLAGS" BITCODE_CFLAGS="$BITCODE_CFLAGS $user_BITCODE_CFLAGS" BITCODE_CXXFLAGS="$BITCODE_CXXFLAGS $user_BITCODE_CXXFLAGS" -AC_SUBST(BITCODE_CFLAGS, $BITCODE_CFLAGS) -AC_SUBST(BITCODE_CXXFLAGS, $BITCODE_CXXFLAGS) +AC_SUBST(BITCODE_CFLAGS) +AC_SUBST(BITCODE_CXXFLAGS) + +# 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 # (note, we're not checking that for CXX, which is optional) diff --git a/src/Makefile.global.in b/src/Makefile.global.in index 64ce7557bad72a9366d3c2d3b99faaa749fd4113..11f47b630f451da7164885723799e619cdc4e07d 100644 --- a/src/Makefile.global.in +++ b/src/Makefile.global.in @@ -259,6 +259,7 @@ GCC = @GCC@ SUN_STUDIO_CC = @SUN_STUDIO_CC@ CXX = @CXX@ CFLAGS = @CFLAGS@ +CFLAGS_SL = @CFLAGS_SL@ CFLAGS_VECTOR = @CFLAGS_VECTOR@ CFLAGS_SSE42 = @CFLAGS_SSE42@ CFLAGS_ARMV8_CRC32C = @CFLAGS_ARMV8_CRC32C@ diff --git a/src/makefiles/Makefile.cygwin b/src/makefiles/Makefile.cygwin index f274d802b1e1f888ec9dcef4ec1d78bebd03b3b8..81089d6257bf1a24c9c3b8c17b59257e758912c2 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 5008c96b3f5a5e96465f6fb81e09606b1f9f7937..8e5bc9c6ec99ca23310a2667347d108abaeda13c 100644 --- a/src/makefiles/Makefile.freebsd +++ b/src/makefiles/Makefile.freebsd @@ -7,8 +7,6 @@ endif DLSUFFIX = .so -CFLAGS_SL = -fPIC -DPIC - # extra stuff for $(with_temp_install) # we need this to get LD_LIBRARY_PATH searched ahead of the compiled-in # rpath, if no DT_RUNPATH is present in the executable. The conditions diff --git a/src/makefiles/Makefile.hpux b/src/makefiles/Makefile.hpux index 84a1cc35425ed197a3ee44f7f167aa69575e0f06..cc9ca10a8728ef64b6f353b56e554f0c4bafd846 100644 --- a/src/makefiles/Makefile.hpux +++ b/src/makefiles/Makefile.hpux @@ -30,11 +30,6 @@ ifeq ($(host_cpu), ia64) else DLSUFFIX = .sl endif -ifeq ($(GCC), yes) - CFLAGS_SL = -fPIC -else - CFLAGS_SL = +Z -endif # env var name to use in place of LD_LIBRARY_PATH ld_library_path_var = SHLIB_PATH diff --git a/src/makefiles/Makefile.linux b/src/makefiles/Makefile.linux index f4f091caef59362c6edbe797d6cc39e6e8a1e43c..c6d0546e4d50fb9f048d2faebafd4f048d52a5a9 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 43841c15973b0c0b594fc2333f2bbdea4bcd71ae..c2a3cce4f01a15901da5c6c9d7b96cb43f5dc44a 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 d8fde49d5c8d95ee73d4c507d12a50ac94bbb7c9..0c5a7b4eb357960e63bf19cd79bba44c90b39e04 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.solaris b/src/makefiles/Makefile.solaris index e459de30cf4933869dadeac4a443ae9c165082ed..a05c0e0d3d224e0f8fde589fe68ce7d665ddddee 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.win32 b/src/makefiles/Makefile.win32 index 3dea11e5c2880e24a390a66af512857412348b76..8a7d6fff3e528a32f394ee2e265384cc2b28348d 100644 --- a/src/makefiles/Makefile.win32 +++ b/src/makefiles/Makefile.win32 @@ -12,7 +12,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 999cd359457cd269f75e2ddeb0c0b66c55f80dbd..cec240d27b9a2bc6a18e9c53f20ed70c23625c1a 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 @@ -17,6 +19,9 @@ if test "$GCC" != yes ; then FORCE_DISABLE_RESTRICT=yes 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 b6ea0ded522c5a8091808526cae9c6ba04d52df8..79a108145ff0b0ec9cd133e38952b48d663724b5 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 c05adca0bfbec7bba7a6551d4edf0ea0bf932d49..f4d4e9d7cf80d5c55e0da63ece81e4ccf69e66d7 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 a82d5a494c9fd3983be07d594365344d7080695e..41fa4a1aba1546fbe68ed90cf9970fc5074fd1c3 100644 --- a/src/template/freebsd +++ b/src/template/freebsd @@ -4,3 +4,6 @@ if test x"$PREFERRED_SEMAPHORES" = x"" ; then PREFERRED_SEMAPHORES=UNNAMED_POSIX fi + +# Extra CFLAGS for code that will go into a shared library +CFLAGS_SL="-fPIC -DPIC" diff --git a/src/template/hpux b/src/template/hpux index 79d3475664e6ddf4313f5b1e69ed9adb76d83d53..50fff80c53012e788c9ba0fe9050cf7339e9cba8 100644 --- a/src/template/hpux +++ b/src/template/hpux @@ -8,6 +8,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 f820bf7280ff37fd5eaa96abbcd9ce501fce2d12..085fd5317ffc74d2fc233600e848478206c872fd 100644 --- a/src/template/linux +++ b/src/template/linux @@ -8,6 +8,9 @@ fi # 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 198697723dfb913facaaae88d452fa5f60421743..d97f995c748dab2234406ec6a4d2b5ae2d1daca5 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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..365268c48978ebe9588e46efe47e8e01c6e7ae25 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/solaris b/src/template/solaris index e07b9a0a8d6145ee5e433704e91abf4424cc0688..f88b1cdad37f85039eabf288ae6e44c9ac3fc44c 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/win32 b/src/template/win32 index 7da9719acbdacace04dac0cfea3b6a1e6ac2c345..1380d16548ce494f212bed93d517d7e53cd75548 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