Author: Patrick McDermott Subject: Allow more directories to be configured libsubdir, libexecsubdir, libsubincludedir, fincludedir, and toolexeclibdir are hardcoded in many makefiles. MULTIOSDIR is hardcoded in gcc/Makefile.in. We want to change these values. Also, the GCC driver needs to be told to search for compiler programs and include files in the new user-configured location. diff -Naurp src.orig/gcc/gcc.c src/gcc/gcc.c --- src.orig/gcc/gcc.c 2018-02-09 01:44:06.000000000 -0500 +++ src/gcc/gcc.c 2019-05-02 19:28:55.475950656 -0400 @@ -1496,6 +1496,8 @@ static const char *const standard_libexe static const char *const standard_bindir_prefix = STANDARD_BINDIR_PREFIX; static const char *const standard_startfile_prefix = STANDARD_STARTFILE_PREFIX; +static const char *const user_tooldir_prefix = USER_TOOLDIR_PREFIX; + /* For native compilers, these are well-known paths containing components that may be provided by the system. For cross compilers, these paths are not used. */ @@ -4304,6 +4306,16 @@ process_command (unsigned int decoded_op PREFIX_PRIORITY_LAST, 0, 0); } + add_prefix (&exec_prefixes, + concat (user_tooldir_prefix, dir_separator_str, NULL), + 0, PREFIX_PRIORITY_LAST, 0, 0); + add_prefix (&startfile_prefixes, + concat (user_tooldir_prefix, dir_separator_str, NULL), + 0, PREFIX_PRIORITY_LAST, 0, 0); + add_prefix (&include_prefixes, + concat (user_tooldir_prefix, dir_separator_str, NULL), + 0, PREFIX_PRIORITY_LAST, 0, 0); + /* COMPILER_PATH and LIBRARY_PATH have values that are lists of directory names with colons. */ diff -Naurp src.orig/gcc/Makefile.in src/gcc/Makefile.in --- src.orig/gcc/Makefile.in 2018-03-09 10:24:44.000000000 -0500 +++ src/gcc/Makefile.in 2019-05-02 19:05:56.069075629 -0400 @@ -666,6 +666,7 @@ gcc_tooldir = @gcc_tooldir@ build_tooldir = $(exec_prefix)/$(target_noncanonical) # Directory in which the compiler finds target-independent g++ includes. gcc_gxx_include_dir = @gcc_gxx_include_dir@ +gcc_gxx_tool_include_dir = $(gcc_gxx_include_dir)/$(target_noncanonical) gcc_gxx_include_dir_add_sysroot = @gcc_gxx_include_dir_add_sysroot@ # Directory to search for site-specific includes. local_includedir = $(local_prefix)/include @@ -2186,6 +2187,7 @@ DRIVER_DEFINES = \ -DDEFAULT_TARGET_MACHINE=\"$(target_noncanonical)\" \ -DSTANDARD_BINDIR_PREFIX=\"$(bindir)/\" \ -DTOOLDIR_BASE_PREFIX=\"$(libsubdir_to_prefix)$(prefix_to_exec_prefix)\" \ + -DUSER_TOOLDIR_PREFIX=\"$(libexecsubdir)\" \ -DACCEL_DIR_SUFFIX=\"$(accel_dir_suffix)\" \ @TARGET_SYSTEM_ROOT_DEFINE@ \ $(VALGRIND_DRIVER_DEFINES) \ @@ -2873,7 +2875,7 @@ PREPROCESSOR_DEFINES = \ -DFIXED_INCLUDE_DIR=\"$(libsubdir)/include-fixed\" \ -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \ -DGPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT=$(gcc_gxx_include_dir_add_sysroot) \ - -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_noncanonical)\" \ + -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_tool_include_dir)\" \ -DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \ -DLOCAL_INCLUDE_DIR=\"$(local_includedir)\" \ -DCROSS_INCLUDE_DIR=\"$(CROSS_SYSTEM_HEADER_DIR)\" \ diff -Naurp src.orig/libquadmath/Makefile.am src/libquadmath/Makefile.am --- src.orig/libquadmath/Makefile.am 2017-11-17 17:36:50.000000000 -0500 +++ src/libquadmath/Makefile.am 2019-05-02 18:53:47.034062837 -0400 @@ -101,6 +101,8 @@ AM_MAKEFLAGS = \ "libdir=$(libdir)" \ "prefix=$(prefix)" \ "includedir=$(includedir)" \ + "libsubincludedir=$(libsubincludedir)" \ + "toolexeclibdir=$(toolexeclibdir)" \ "AR=$(AR)" \ "AS=$(AS)" \ "CC=$(CC)" \ diff -Naurp src.orig/libquadmath/Makefile.in src/libquadmath/Makefile.in --- src.orig/libquadmath/Makefile.in 2019-02-22 09:22:13.000000000 -0500 +++ src/libquadmath/Makefile.in 2019-05-02 18:54:18.870019427 -0400 @@ -416,6 +416,8 @@ AUTOMAKE_OPTIONS = 1.8 foreign @BUILD_LIBQUADMATH_TRUE@ "libdir=$(libdir)" \ @BUILD_LIBQUADMATH_TRUE@ "prefix=$(prefix)" \ @BUILD_LIBQUADMATH_TRUE@ "includedir=$(includedir)" \ +@BUILD_LIBQUADMATH_TRUE@ "libsubincludedir=$(libsubincludedir)" \ +@BUILD_LIBQUADMATH_TRUE@ "toolexeclibdir=$(toolexeclibdir)" \ @BUILD_LIBQUADMATH_TRUE@ "AR=$(AR)" \ @BUILD_LIBQUADMATH_TRUE@ "AS=$(AS)" \ @BUILD_LIBQUADMATH_TRUE@ "CC=$(CC)" \ diff -Naurp src.orig/libssp/Makefile.am src/libssp/Makefile.am --- src.orig/libssp/Makefile.am 2018-01-03 05:03:58.000000000 -0500 +++ src/libssp/Makefile.am 2019-05-02 18:52:04.470202891 -0400 @@ -92,6 +92,8 @@ AM_MAKEFLAGS = \ "libdir=$(libdir)" \ "prefix=$(prefix)" \ "includedir=$(includedir)" \ + "libsubincludedir=$(libsubincludedir)" \ + "toolexeclibdir=$(toolexeclibdir)" \ "AR=$(AR)" \ "AS=$(AS)" \ "CC=$(CC)" \ diff -Naurp src.orig/libssp/Makefile.in src/libssp/Makefile.in --- src.orig/libssp/Makefile.in 2017-11-17 17:32:46.000000000 -0500 +++ src/libssp/Makefile.in 2019-05-02 18:52:08.122197898 -0400 @@ -344,6 +344,8 @@ AM_MAKEFLAGS = \ "libdir=$(libdir)" \ "prefix=$(prefix)" \ "includedir=$(includedir)" \ + "libsubincludedir=$(libsubincludedir)" \ + "toolexeclibdir=$(toolexeclibdir)" \ "AR=$(AR)" \ "AS=$(AS)" \ "CC=$(CC)" \ diff -Naurp src.orig/libstdc++-v3/Makefile.am src/libstdc++-v3/Makefile.am --- src.orig/libstdc++-v3/Makefile.am 2018-01-03 05:03:58.000000000 -0500 +++ src/libstdc++-v3/Makefile.am 2019-05-02 19:39:33.415479794 -0400 @@ -160,6 +160,8 @@ AM_MAKEFLAGS = \ "prefix=$(prefix)" \ "tooldir=$(tooldir)" \ "gxx_include_dir=$(gxx_include_dir)" \ + "host_installdir=$(host_installdir)" \ + "toolexeclibdir=$(toolexeclibdir)" \ "AR=$(AR)" \ "AS=$(AS)" \ "LD=$(LD)" \ diff -Naurp src.orig/libstdc++-v3/Makefile.in src/libstdc++-v3/Makefile.in --- src.orig/libstdc++-v3/Makefile.in 2017-11-17 16:28:10.000000000 -0500 +++ src/libstdc++-v3/Makefile.in 2019-05-02 19:39:45.135470878 -0400 @@ -401,6 +401,8 @@ AM_MAKEFLAGS = \ "prefix=$(prefix)" \ "tooldir=$(tooldir)" \ "gxx_include_dir=$(gxx_include_dir)" \ + "host_installdir=$(host_installdir)" \ + "toolexeclibdir=$(toolexeclibdir)" \ "AR=$(AR)" \ "AS=$(AS)" \ "LD=$(LD)" \ diff -Naurp src.orig/Makefile.def src/Makefile.def --- src.orig/Makefile.def 2017-11-28 05:35:37.000000000 -0500 +++ src/Makefile.def 2019-05-02 19:23:36.588174507 -0400 @@ -229,6 +229,14 @@ flags_to_pass = { flag= sysconfdir ; }; flags_to_pass = { flag= tooldir ; }; flags_to_pass = { flag= build_tooldir ; }; flags_to_pass = { flag= target_alias ; }; +flags_to_pass = { flag= libsubdir ; }; +flags_to_pass = { flag= libexecsubdir ; }; +flags_to_pass = { flag= gcc_gxx_tool_include_dir ; }; +flags_to_pass = { flag= host_installdir ; }; +flags_to_pass = { flag= libsubincludedir ; }; +flags_to_pass = { flag= fincludedir ; }; +flags_to_pass = { flag= toolexeclibdir ; }; +flags_to_pass = { flag= MULTIOSDIR ; }; // Build tools flags_to_pass = { flag= AWK ; }; diff -Naurp src.orig/Makefile.in src/Makefile.in --- src.orig/Makefile.in 2017-11-28 05:35:37.000000000 -0500 +++ src/Makefile.in 2019-05-02 19:24:29.804137725 -0400 @@ -737,6 +737,14 @@ BASE_FLAGS_TO_PASS = \ "tooldir=$(tooldir)" \ "build_tooldir=$(build_tooldir)" \ "target_alias=$(target_alias)" \ + "libsubdir=$(libsubdir)" \ + "libexecsubdir=$(libexecsubdir)" \ + "gcc_gxx_tool_include_dir=$(gcc_gxx_tool_include_dir)" \ + "host_installdir=$(host_installdir)" \ + "libsubincludedir=$(libsubincludedir)" \ + "fincludedir=$(fincludedir)" \ + "toolexeclibdir=$(toolexeclibdir)" \ + "MULTIOSDIR=$(MULTIOSDIR)" \ "AWK=$(AWK)" \ "BISON=$(BISON)" \ "CC_FOR_BUILD=$(CC_FOR_BUILD)" \