Browse Source

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
master
Tom Lane 1 month ago
parent
commit
44273ce4f6
21 changed files with 55 additions and 26 deletions
  1. +4
    -3
      configure
  2. +6
    -3
      configure.in
  3. +1
    -0
      src/Makefile.global.in
  4. +0
    -1
      src/makefiles/Makefile.cygwin
  5. +0
    -2
      src/makefiles/Makefile.freebsd
  6. +0
    -5
      src/makefiles/Makefile.hpux
  7. +0
    -2
      src/makefiles/Makefile.linux
  8. +0
    -2
      src/makefiles/Makefile.netbsd
  9. +0
    -2
      src/makefiles/Makefile.openbsd
  10. +1
    -5
      src/makefiles/Makefile.solaris
  11. +0
    -1
      src/makefiles/Makefile.win32
  12. +5
    -0
      src/template/aix
  13. +3
    -0
      src/template/cygwin
  14. +3
    -0
      src/template/darwin
  15. +3
    -0
      src/template/freebsd
  16. +7
    -0
      src/template/hpux
  17. +3
    -0
      src/template/linux
  18. +3
    -0
      src/template/netbsd
  19. +4
    -0
      src/template/openbsd
  20. +9
    -0
      src/template/solaris
  21. +3
    -0
      src/template/win32

+ 4
- 3
configure View File

@@ -728,6 +728,7 @@ autodepend
TAS
GCC
CPP
CFLAGS_SL
BITCODE_CXXFLAGS
BITCODE_CFLAGS
CFLAGS_VECTOR
@@ -6579,7 +6580,6 @@ fi

fi

CFLAGS_VECTOR=$CFLAGS_VECTOR


# Determine flags used to emit bitcode for JIT inlining. Need to test
@@ -6899,9 +6899,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

+ 6
- 3
configure.in View File

@@ -547,7 +547,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
@@ -607,8 +607,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)

+ 1
- 0
src/Makefile.global.in View File

@@ -258,6 +258,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@

+ 0
- 1
src/makefiles/Makefile.cygwin View File

@@ -12,7 +12,6 @@ LIBS:=$(filter-out -lm -lc, $(LIBS))

AROPT = crs
DLSUFFIX = .dll
CFLAGS_SL =

override CPPFLAGS += -DWIN32_STACK_RLIMIT=$(WIN32_STACK_RLIMIT)


+ 0
- 2
src/makefiles/Makefile.freebsd View File

@@ -5,8 +5,6 @@ rpath = -Wl,-R'$(rpathdir)'

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

+ 0
- 5
src/makefiles/Makefile.hpux View File

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

+ 0
- 2
src/makefiles/Makefile.linux View File

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

+ 0
- 2
src/makefiles/Makefile.netbsd View File

@@ -5,8 +5,6 @@ rpath = -Wl,-R'$(rpathdir)'

DLSUFFIX = .so

CFLAGS_SL = -fPIC -DPIC


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

+ 0
- 2
src/makefiles/Makefile.openbsd View File

@@ -5,8 +5,6 @@ rpath = -Wl,-R'$(rpathdir)'

DLSUFFIX = .so

CFLAGS_SL = -fPIC -DPIC


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

+ 1
- 5
src/makefiles/Makefile.solaris View File

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

+ 0
- 1
src/makefiles/Makefile.win32 View File

@@ -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)))

+ 5
- 0
src/template/aix View File

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

+ 3
- 0
src/template/cygwin View File

@@ -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,

+ 3
- 0
src/template/darwin View File

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

+ 3
- 0
src/template/freebsd View File

@@ -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"

+ 7
- 0
src/template/hpux View File

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

+ 3
- 0
src/template/linux View File

@@ -9,6 +9,9 @@ fi
# This is also required for ppoll(2), and perhaps other things
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"


+ 3
- 0
src/template/netbsd View File

@@ -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"

+ 4
- 0
src/template/openbsd View File

@@ -0,0 +1,4 @@
# src/template/openbsd

# Extra CFLAGS for code that will go into a shared library
CFLAGS_SL="-fPIC -DPIC"

+ 9
- 0
src/template/solaris View File

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

+ 3
- 0
src/template/win32 View File

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

Loading…
Cancel
Save