diff options
author | Florian Weimer <fweimer@redhat.com> | 2016-09-21 10:45:32 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2016-09-21 10:45:32 +0200 |
commit | fc3e1337be1c6935ab58bd13520f97a535cf70cc (patch) | |
tree | 05a5860b2b10ad95a4ae6b23012a3019d8830f84 | |
parent | 612148c6608fb2df34a8d01ccb3b552cd63eb263 (diff) | |
download | glibc-fc3e1337be1c6935ab58bd13520f97a535cf70cc.tar.gz glibc-fc3e1337be1c6935ab58bd13520f97a535cf70cc.tar.xz glibc-fc3e1337be1c6935ab58bd13520f97a535cf70cc.zip |
Avoid running $(CXX) during build to obtain header file paths
This reduces the build time somewhat and is particularly noticeable during rebuilds with few code changes.
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | Makerules | 8 | ||||
-rw-r--r-- | config.make.in | 2 | ||||
-rwxr-xr-x | configure | 14 | ||||
-rw-r--r-- | configure.ac | 12 |
5 files changed, 39 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog index 71fed8f741..12a217af31 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ 2016-09-21 Florian Weimer <fweimer@redhat.com> + Avoid running $(CXX) during build to obtain header file paths. + * configure.ac (CXX_SYSINCLUDES, CXX_CMATH_HEADER): Set. + * config.make.in (c++-cstdlib-header, c++-cmath-header): Define. + * Makerules (cstdlib, cmath): Remove variables. Use + $(c++-cstdlib-header), $(c++-cmath-header) instead. + * configure: Regenerate. + +2016-09-21 Florian Weimer <fweimer@redhat.com> + * Makeconfig (all-object-suffixes): Include .op only if $(build-profile). diff --git a/Makerules b/Makerules index 748790b591..e865782b43 100644 --- a/Makerules +++ b/Makerules @@ -121,14 +121,10 @@ ifneq (,$(CXX)) # will be used instead of /usr/include/stdlib.h and /usr/include/math.h. before-compile := $(common-objpfx)cstdlib $(common-objpfx)cmath \ $(before-compile) -cstdlib=$(shell echo "\#include <cstdlib>" | $(CXX) -M -MP -x c++ - \ - | sed -n "/cstdlib:/{s/:$$//;p}") -$(common-objpfx)cstdlib: $(cstdlib) +$(common-objpfx)cstdlib: $(c++-cstdlib-header) $(INSTALL_DATA) $< $@T $(move-if-change) $@T $@ -cmath=$(shell echo "\#include <cmath>" | $(CXX) -M -MP -x c++ - \ - | sed -n "/cmath:/{s/:$$//;p}") -$(common-objpfx)cmath: $(cmath) +$(common-objpfx)cmath: $(c++-cmath-header) $(INSTALL_DATA) $< $@T $(move-if-change) $@T $@ endif diff --git a/config.make.in b/config.make.in index 95c6f36876..04a8b3ed7f 100644 --- a/config.make.in +++ b/config.make.in @@ -45,6 +45,8 @@ defines = @DEFINES@ sysheaders = @sysheaders@ sysincludes = @SYSINCLUDES@ c++-sysincludes = @CXX_SYSINCLUDES@ +c++-cstdlib-header = @CXX_CSTDLIB_HEADER@ +c++-cmath-header = @CXX_CMATH_HEADER@ all-warnings = @all_warnings@ enable-werror = @enable_werror@ diff --git a/configure b/configure index 17625e1041..6ff252744b 100755 --- a/configure +++ b/configure @@ -635,6 +635,8 @@ BISON INSTALL_INFO PERL BASH_SHELL +CXX_CMATH_HEADER +CXX_CSTDLIB_HEADER CXX_SYSINCLUDES SYSINCLUDES AUTOCONF @@ -5054,6 +5056,18 @@ fi +# Obtain some C++ header file paths. This is used to make a local +# copy of those headers in Makerules. +if test -n "$CXX"; then + find_cxx_header () { + echo "#include <$1>" | $CXX -M -MP -x c++ - | sed -n "/$1:/{s/:\$//;p}" + } + CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib)" + CXX_CMATH_HEADER="$(find_cxx_header cmath)" +fi + + + # Test if LD_LIBRARY_PATH contains the notation for the current directory # since this would lead to problems installing/building glibc. # LD_LIBRARY_PATH contains the current directory if one of the following diff --git a/configure.ac b/configure.ac index 33bcd62180..9938ab0dc2 100644 --- a/configure.ac +++ b/configure.ac @@ -1039,6 +1039,18 @@ fi AC_SUBST(SYSINCLUDES) AC_SUBST(CXX_SYSINCLUDES) +# Obtain some C++ header file paths. This is used to make a local +# copy of those headers in Makerules. +if test -n "$CXX"; then + find_cxx_header () { + echo "#include <$1>" | $CXX -M -MP -x c++ - | sed -n "/$1:/{s/:\$//;p}" + } + CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib)" + CXX_CMATH_HEADER="$(find_cxx_header cmath)" +fi +AC_SUBST(CXX_CSTDLIB_HEADER) +AC_SUBST(CXX_CMATH_HEADER) + # Test if LD_LIBRARY_PATH contains the notation for the current directory # since this would lead to problems installing/building glibc. # LD_LIBRARY_PATH contains the current directory if one of the following |