From 58d431568d6b6163dd9cdc920239f173689a769c Mon Sep 17 00:00:00 2001 From: Martin Liska Date: Fri, 4 Feb 2022 13:42:14 +0100 Subject: [PATCH] configure: add --disable-fix-includes Right now, fixinclude takes about 11 seconds on my machine, where it reads 130MB of header files. The number of fixed headers is negligible without any significant change. fixincludes/ChangeLog: * fixinc.in: Add early exit. gcc/ChangeLog: * Makefile.in: Support disable_fix_includes. * configure.ac: Add --disable-fix-includes. * configure: Regenerate. * doc/install.texi: Document the newly added configure options. --- fixincludes/fixinc.in | 6 ++++++ gcc/Makefile.in | 6 ++++-- gcc/configure | 16 ++++++++++++++-- gcc/configure.ac | 6 ++++++ gcc/doc/install.texi | 7 +++++++ 5 files changed, 37 insertions(+), 4 deletions(-) diff --git a/fixincludes/fixinc.in b/fixincludes/fixinc.in index 0bd8027a554..9baec3f871d 100755 --- a/fixincludes/fixinc.in +++ b/fixincludes/fixinc.in @@ -63,6 +63,12 @@ else esac fi +if test "x$ENABLE_FIX_INCLUDES" = "xno" +then + echo "Skipping fixincludes" + exit 0 +fi + # Define what target system we're fixing. # if test -r ./Makefile; then diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 31ff95500c9..80de547231a 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -401,6 +401,8 @@ PLUGINLIBS = @pluginlibs@ enable_plugin = @enable_plugin@ +enable_fix_includes = @enable_fix_includes@ + # On MinGW plugin installation involves installing import libraries. ifeq ($(enable_plugin),yes) plugin_implib := $(if $(strip $(filter mingw%,$(host_os))),yes,no) @@ -3248,8 +3250,8 @@ stmp-fixinc: gsyslimits.h macro_list fixinc_list \ chmod a+rx $${fix_dir} || true; \ (TARGET_MACHINE='$(target)'; srcdir=`cd $(srcdir); ${PWD_COMMAND}`; \ SHELL='$(SHELL)'; MACRO_LIST=`${PWD_COMMAND}`/macro_list ; \ - gcc_dir=`${PWD_COMMAND}` ; \ - export TARGET_MACHINE srcdir SHELL MACRO_LIST && \ + gcc_dir=`${PWD_COMMAND}` ; ENABLE_FIX_INCLUDES=${enable_fix_includes} \ + export TARGET_MACHINE srcdir SHELL MACRO_LIST ENABLE_FIX_INCLUDES && \ cd $(build_objdir)/fixincludes && \ $(SHELL) ./fixinc.sh "$${gcc_dir}/$${fix_dir}" \ $(BUILD_SYSTEM_HEADER_DIR) $(OTHER_FIXINCLUDES_DIRS) ); \ diff --git a/gcc/configure b/gcc/configure index 5ce0557719a..e29f2cf7d2e 100755 --- a/gcc/configure +++ b/gcc/configure @@ -839,6 +839,7 @@ with_float with_cpu enable_multiarch enable_multilib +enable_fix_includes coverage_flags valgrind_command valgrind_path_defines @@ -958,6 +959,7 @@ enable_werror_always enable_checking enable_coverage enable_gather_detailed_mem_stats +enable_fix_includes enable_valgrind_annotations enable_multilib enable_multiarch @@ -1688,6 +1690,7 @@ Optional Features: Values are opt, noopt, default is noopt --enable-gather-detailed-mem-stats enable detailed memory allocation stats gathering + --disable-fix-includes skip fixing of includes --enable-valgrind-annotations enable valgrind runtime interaction --enable-multilib enable library support for multiple ABIs @@ -7783,6 +7786,15 @@ cat >>confdefs.h <<_ACEOF _ACEOF +# Check whether --enable-fix-includes was given. +if test "${enable_fix_includes+set}" = set; then : + enableval=$enable_fix_includes; +else + enable_fix_includes=yes +fi + + + # Check whether --enable-valgrind-annotations was given. if test "${enable_valgrind_annotations+set}" = set; then : enableval=$enable_valgrind_annotations; @@ -19673,7 +19685,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 19676 "configure" +#line 19688 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -19779,7 +19791,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 19782 "configure" +#line 19794 "configure" #include "confdefs.h" #if HAVE_DLFCN_H diff --git a/gcc/configure.ac b/gcc/configure.ac index 23bee7010a3..0e20435d38b 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -842,6 +842,12 @@ gather_stats=`if test $enable_gather_detailed_mem_stats != no; then echo 1; else AC_DEFINE_UNQUOTED(GATHER_STATISTICS, $gather_stats, [Define to enable detailed memory allocation stats gathering.]) +AC_ARG_ENABLE(fix-includes, +[AS_HELP_STRING([--disable-fix-includes], + [skip fixing of includes])], [], +[enable_fix_includes=yes]) +AC_SUBST(enable_fix_includes) + AC_ARG_ENABLE(valgrind-annotations, [AS_HELP_STRING([--enable-valgrind-annotations], [enable valgrind runtime interaction])], [], diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index 10bfceffceb..c1404b4947e 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -2371,6 +2371,13 @@ For a native build and cross compiles that have target headers, the option's default is derived from glibc's behavior. When glibc clamps float_t to double, GCC follows and enables the option. For other cross compiles, the default is disabled. + +@item --enable-fix-include +@itemx --disable-fix-include + +Enable fixing of system header files. GCC needs to install corrected versions +of some system header files. This is because most target systems have +some header files that won’t work with GCC unless they are changed. @end table @subheading Cross-Compiler-Specific Options -- 2.36.1