tech-toolchain archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Build.sh support for GuixSD & NixOS (Thorough HOST_CPPFLAGS support)



Hello NetBSD toolchain devs,

While experimenting with rumprun and building rump kernels, I had some
patches I wanted to test to verify they did not cause any regressions in
NetBSD proper. Unfortunately but unsurprisingly the build.sh crashed
like nobody's business when trying to build NetBSD from a GNU Guix
System Distribution host. Guix (and it's sister OS, Nix) are unique in
that they do not use the traditional filesystem layout with
/usr/include, /lib, etc., preferring to manage dependencies in new ways.


I spent plenty of time over the last week patching build.sh and the
Makefiles to ensure adequate support for HOST_CPPFLAGS and HOST_CXXFLAGS
throughout the toolchain build process. Care was taken not to cross
HOST_CPPFLAGS with standard CPPFLAGS where they don't belong.

Combined with LIBRARY_PATH environment support, this makes the build
system compatible with GNU Guix hosts. I have not tested NixOS, but I am
sure it should support it as well.

Regarding LIBRARY_PATH, I tried HOST_LDFLAGS="-L..." instead and
unsetting LIBRARY_PATH from the make env, but this breaks in one special
case for linking with crti.o, where it tries to resolve _lib_crti.o
which does not exist. I think this is a gcc bug in the different
treatment between LIBRARY_PATH=<path> and -L<path>, but I settled to use
LIBRARY_PATH here which does not do any improper linking in the build
output when it is present.

Please take a look at the attached patch and try it out to make sure it
does not break any of your work flows! Thank you

--
Sincerely,
Ryan Sundberg
From 17f1ca045b401cc955c3258bcb5af134f38dcb77 Mon Sep 17 00:00:00 2001
From: Ryan Sundberg <ryan%arctype.co@localhost>
Date: Tue, 14 Sep 2021 21:32:37 -0700
Subject: [PATCH] build.sh: Support building from GuixSD/NixOS hosts

Patch the build script and toolchain to allow passing through
HOST_CPPFLAGS, HOST_CXXFLAGS, and LIBRARY_PATH. These variables are
necessary to support building NetBSD from a GNU Guix or NixOS host,
where /usr/include, /lib, and all but /bin/sh do not exist.
In many cases, support for HOST_CPPFLAGS was incomplete.

The build was tested using Guix System Distribution:

    guix environment --ad-hoc gcc-toolchain zlib cdrtools

    HOST_CXXFLAGS="-isystem =/include/c++" \
    HOST_CPPFLAGS="-isysroot ${GUIX_ENVIRONMENT} -isystem =/include" \
    HOST_CC=gcc \
    ./build.sh -U -O obj -T tools-obj -j12 -m amd64 -a x86_64 -c gcc release

    anita test $(pwd)/obj/releasedir/amd64/
---
 build.sh                                          |  3 +++
 distrib/sets/maketars                             |  2 +-
 external/gpl3/binutils/dist/bfd/doc/Makefile.in   |  3 ++-
 external/gpl3/binutils/dist/binutils/Makefile.in  | 10 +++++-----
 external/gpl3/gcc/lib/liblto_plugin/Makefile      |  1 +
 external/gpl3/gcc/usr.bin/Makefile.prog           |  1 +
 external/gpl3/gcc/usr.bin/backend/Makefile        |  1 +
 external/gpl3/gcc/usr.bin/common-target/Makefile  |  1 +
 external/gpl3/gcc/usr.bin/common/Makefile         |  1 +
 external/gpl3/gcc/usr.bin/frontend/Makefile       |  1 +
 external/gpl3/gcc/usr.bin/host-libiberty/Makefile |  4 +++-
 external/gpl3/gcc/usr.bin/libcpp/Makefile         |  1 +
 external/gpl3/gcc/usr.bin/libdecnumber/Makefile   |  1 +
 external/gpl3/gdb/bin/gdb/Makefile                |  1 +
 external/gpl3/gdb/bin/gdbserver/Makefile          |  1 +
 external/gpl3/gdb/bin/gdbtui/Makefile             |  1 +
 external/gpl3/gdb/lib/libgdb/Makefile             |  1 +
 external/gpl3/gdb/lib/libgdbsupport/Makefile      |  1 +
 external/lgpl3/gmp/dist/Makefile.in               | 12 ++++++------
 external/lgpl3/gmp/lib/libgmp/Makefile            | 12 ++++++------
 tools/Makefile.gnuhost                            |  1 +
 tools/binutils/Makefile                           |  1 +
 tools/compat/Makefile                             | 10 +++++-----
 tools/fdisk/Makefile                              |  2 +-
 tools/gcc/Makefile                                |  4 +++-
 tools/gmp/Makefile                                |  2 ++
 tools/sunlabel/Makefile                           |  2 +-
 tools/uudecode/Makefile                           |  2 +-
 tools/vgrind/Makefile                             |  2 +-
 tools/xz-include/Makefile                         |  2 +-
 30 files changed, 56 insertions(+), 31 deletions(-)

diff --git a/build.sh b/build.sh
index bdda43c961e..11c8ad0d7a9 100755
--- a/build.sh
+++ b/build.sh
@@ -473,11 +473,14 @@ level of source directory"
 	# These variables can be overridden via "-V var=value" if
 	# you know what you are doing.
 	#
+	unsetmakeenv C_INCLUDE_PATH
+	unsetmakeenv CPLUS_INCLUDE_PATH
 	unsetmakeenv INFODIR
 	unsetmakeenv LESSCHARSET
 	unsetmakeenv MAKEFLAGS
 	unsetmakeenv TERMINFO
 	setmakeenv LC_ALL C
+	setmakeenv LIBRARY_PATH ${LIBRARY_PATH}
 
 	# Find information about the build platform.  This should be
 	# kept in sync with _HOST_OSNAME, _HOST_OSREL, and _HOST_ARCH
diff --git a/distrib/sets/maketars b/distrib/sets/maketars
index 8f69da1ff14..224007b6e34 100755
--- a/distrib/sets/maketars
+++ b/distrib/sets/maketars
@@ -166,7 +166,7 @@ TMPFILES=
 cleanup()
 {
 	es=$?
-	/bin/rm -rf "${SDIR}" ${TMPFILES}
+	rm -rf "${SDIR}" ${TMPFILES}
 	trap - 0
 	exit ${es}
 }
diff --git a/external/gpl3/binutils/dist/bfd/doc/Makefile.in b/external/gpl3/binutils/dist/bfd/doc/Makefile.in
index 0839fbd8d94..1ea80401b79 100644
--- a/external/gpl3/binutils/dist/bfd/doc/Makefile.in
+++ b/external/gpl3/binutils/dist/bfd/doc/Makefile.in
@@ -934,7 +934,8 @@ uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \
 $(MKDOC): chew.stamp ; @true
 chew.stamp: $(srcdir)/chew.c
 	$(CC_FOR_BUILD) -o chw$$$$$(EXEEXT_FOR_BUILD) $(CFLAGS_FOR_BUILD) \
-	  $(LDFLAGS_FOR_BUILD) $(H_CFLAGS) $(AM_CPPFLAGS) $(srcdir)/chew.c; \
+	  $(LDFLAGS_FOR_BUILD) $(H_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) \
+		$(srcdir)/chew.c; \
 	$(SHELL) $(srcdir)/../../move-if-change \
 	  chw$$$$$(EXEEXT_FOR_BUILD) $(MKDOC); \
 	touch $@
diff --git a/external/gpl3/binutils/dist/binutils/Makefile.in b/external/gpl3/binutils/dist/binutils/Makefile.in
index 69b9551787e..cbdd69f250a 100644
--- a/external/gpl3/binutils/dist/binutils/Makefile.in
+++ b/external/gpl3/binutils/dist/binutils/Makefile.in
@@ -1477,20 +1477,20 @@ sysroff.h: sysinfo$(EXEEXT_FOR_BUILD) sysroff.info
 	./sysinfo$(EXEEXT_FOR_BUILD) -d <$(srcdir)/sysroff.info >sysroff.h
 
 sysinfo$(EXEEXT_FOR_BUILD): sysinfo.@OBJEXT@ syslex_wrap.@OBJEXT@
-	$(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@ sysinfo.@OBJEXT@ syslex_wrap.@OBJEXT@
+	$(CC_FOR_BUILD) $(CPPFLAGS) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o 
$@ sysinfo.@OBJEXT@ syslex_wrap.@OBJEXT@
 
 syslex_wrap.@OBJEXT@: syslex_wrap.c syslex.c sysinfo.h config.h
-	$(CC_FOR_BUILD) -c -I. -I$(srcdir) $(AM_CFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/syslex_wrap.c
+	$(CC_FOR_BUILD) $(CPPFLAGS) -c -I. -I$(srcdir) $(AM_CFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/syslex_wrap.c
 
 sysinfo.@OBJEXT@: sysinfo.c
 	if [ -r sysinfo.c ]; then \
-	  $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(NO_WERROR) sysinfo.c ; \
+	  $(CC_FOR_BUILD) $(CPPFLAGS) -c -I. $(AM_CFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(NO_WERROR) sysinfo.c ; \
 	else \
-	  $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/sysinfo.c ; \
+	  $(CC_FOR_BUILD) $(CPPFLAGS) -c -I. $(AM_CFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(NO_WERROR) $(srcdir)/sysinfo.c ; \
 	fi
 
 bin2c$(EXEEXT_FOR_BUILD): bin2c.c
-	$(CC_FOR_BUILD) -o $@ $(AM_CPPFLAGS) $(AM_CFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $(srcdir)/bin2c.c
+	$(CC_FOR_BUILD) $(CPPFLAGS) -o $@ $(AM_CPPFLAGS) $(AM_CFLAGS_FOR_BUILD) 
$(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $(srcdir)/bin2c.c
 
 embedspu: embedspu.sh Makefile
 	awk '/^program_transform_name=/ {print "program_transform_name=\"$(program_transform_name)\""; next} {print}' < $< > $@
diff --git a/external/gpl3/gcc/lib/liblto_plugin/Makefile b/external/gpl3/gcc/lib/liblto_plugin/Makefile
index a136b8793d7..f0def9dfc51 100644
--- a/external/gpl3/gcc/lib/liblto_plugin/Makefile
+++ b/external/gpl3/gcc/lib/liblto_plugin/Makefile
@@ -46,6 +46,7 @@ config.h: Makefile
 	(cd .ab && \
 		AWK=${TOOL_AWK:Q} \
 		CC=${HOST_CC:Q} CFLAGS=${HOST_CFLAGS:Q} \
+		CPPFLAGS=${HOST_CPPFLAGS:Q} \
 		MAKE=${MAKE:Q} \
 		CONFIG_SHELL=${HOST_SH:Q} \
 		${HOST_SH} ${DIST}/libiberty/configure \
diff --git a/external/gpl3/gcc/usr.bin/Makefile.prog b/external/gpl3/gcc/usr.bin/Makefile.prog
index 88527898738..dbc09428787 100644
--- a/external/gpl3/gcc/usr.bin/Makefile.prog
+++ b/external/gpl3/gcc/usr.bin/Makefile.prog
@@ -11,6 +11,7 @@ HOSTPROG_CXX=	1
 
 # Force using C++ for this
 HOST_CC:=	${HOST_CXX}
+HOST_CFLAGS+=	${HOST_CXXFLAGS}
 CC:=		${CXX}
 CFLAGS:=	${CXXFLAGS}
 
diff --git a/external/gpl3/gcc/usr.bin/backend/Makefile b/external/gpl3/gcc/usr.bin/backend/Makefile
index cef0183f3b9..3f28e629557 100644
--- a/external/gpl3/gcc/usr.bin/backend/Makefile
+++ b/external/gpl3/gcc/usr.bin/backend/Makefile
@@ -222,6 +222,7 @@ auto-build.h: gmp.h Makefile
 	(cd .ab && \
 		AWK=${TOOL_AWK:Q} \
 		CC=${ORIGHOST_CC:Q} CFLAGS=${HOST_CFLAGS:Q} \
+		CPPFLAGS=${HOST_CPPFLAGS:Q} \
 		CXX=${HOST_CXX:Q} CXXFLAGS=${HOST_CXXFLAGS:Q} \
 		MAKE=${TOOL_GMAKE:Q} \
 		CONFIG_SHELL=${HOST_SH:Q} \
diff --git a/external/gpl3/gcc/usr.bin/common-target/Makefile b/external/gpl3/gcc/usr.bin/common-target/Makefile
index fa083deeed6..9723929a8c4 100644
--- a/external/gpl3/gcc/usr.bin/common-target/Makefile
+++ b/external/gpl3/gcc/usr.bin/common-target/Makefile
@@ -49,6 +49,7 @@ HOSTPROG_CXX=	1
 
 # Force using C++ for this
 HOST_CC:=	${HOST_CXX}
+HOST_CFLAGS+=	${HOST_CXXFLAGS}
 CC:=		${CXX}
 CFLAGS:=	${CXXFLAGS}
 
diff --git a/external/gpl3/gcc/usr.bin/common/Makefile b/external/gpl3/gcc/usr.bin/common/Makefile
index 4f2251bc50e..55328b82733 100644
--- a/external/gpl3/gcc/usr.bin/common/Makefile
+++ b/external/gpl3/gcc/usr.bin/common/Makefile
@@ -34,6 +34,7 @@ ${SRCS}: ${GCCARCH}/defs.mk
 
 # Force using C++ for this
 HOST_CC:=	${HOST_CXX}
+HOST_CFLAGS+=	${HOST_CXXFLAGS}
 CC:=		${CXX}
 CFLAGS:=	${CXXFLAGS}
 
diff --git a/external/gpl3/gcc/usr.bin/frontend/Makefile b/external/gpl3/gcc/usr.bin/frontend/Makefile
index 71d1787c6e2..8ccd184ec28 100644
--- a/external/gpl3/gcc/usr.bin/frontend/Makefile
+++ b/external/gpl3/gcc/usr.bin/frontend/Makefile
@@ -32,6 +32,7 @@ MKPICLIB:=	no
 
 # Force using C++ for this
 HOST_CC:=	${HOST_CXX}
+HOST_CFLAGS+=	${HOST_CXXFLAGS}
 CC:=		${CXX}
 CFLAGS:=	${CXXFLAGS}
 
diff --git a/external/gpl3/gcc/usr.bin/host-libiberty/Makefile b/external/gpl3/gcc/usr.bin/host-libiberty/Makefile
index aae4941a18c..a4137086b13 100644
--- a/external/gpl3/gcc/usr.bin/host-libiberty/Makefile
+++ b/external/gpl3/gcc/usr.bin/host-libiberty/Makefile
@@ -5,10 +5,12 @@ libiberty/libiberty.a:
 	(cd libiberty; \
 		CC=${HOST_CC:Q} \
 		CFLAGS=${HOST_CFLAGS:Q} \
+		CPPFLAGS=${HOST_CPPFLAGS:Q} \
 		MAKE=${MAKE:Q} \
 		CONFIG_SHELL=${HOST_SH:Q} \
 		${HOST_SH} ${DIST}/libiberty/configure \
-		&& CC=${HOST_CC:Q} CFLAGS=${HOST_CFLAGS:Q} ${MAKE})
+		&& CC=${HOST_CC:Q} CFLAGS=${HOST_CFLAGS:Q} \
+		CPPFLAGS=${HOST_CPPFLAGS:Q} ${MAKE})
 
 cleandir:
 	-rm -rf libiberty
diff --git a/external/gpl3/gcc/usr.bin/libcpp/Makefile b/external/gpl3/gcc/usr.bin/libcpp/Makefile
index 74a0d22f5ad..aef9abe8641 100644
--- a/external/gpl3/gcc/usr.bin/libcpp/Makefile
+++ b/external/gpl3/gcc/usr.bin/libcpp/Makefile
@@ -21,6 +21,7 @@ COPTS+=	-Wno-stack-protector
 
 # Force using C++ for this
 HOST_CC:=	${HOST_CXX}
+HOST_CFLAGS+=	${HOST_CXXFLAGS}
 CC:=		${CXX}
 CFLAGS:=	${CXXFLAGS}
 
diff --git a/external/gpl3/gcc/usr.bin/libdecnumber/Makefile b/external/gpl3/gcc/usr.bin/libdecnumber/Makefile
index 04e5c029178..8ec7c5262be 100644
--- a/external/gpl3/gcc/usr.bin/libdecnumber/Makefile
+++ b/external/gpl3/gcc/usr.bin/libdecnumber/Makefile
@@ -23,6 +23,7 @@ HOSTPROG_CXX=	1
 
 # Force using C++ for this
 HOST_CC:=	${HOST_CXX}
+HOST_CFLAGS+=	${HOST_CXXFLAGS}
 CC:=		${CXX}
 CFLAGS:=	${CXXFLAGS}
 
diff --git a/external/gpl3/gdb/bin/gdb/Makefile b/external/gpl3/gdb/bin/gdb/Makefile
index 5911ed93461..ca2720d2f15 100644
--- a/external/gpl3/gdb/bin/gdb/Makefile
+++ b/external/gpl3/gdb/bin/gdb/Makefile
@@ -108,6 +108,7 @@ DPADD+=		${LIBEXPAT} ${LIBLZMA} ${LIBZ} ${LIBCURSES} ${LIBINTL} ${LIBM} ${LIBKVM
 # Force c++
 CWARNFLAGS.clang+=	-Wno-deprecated
 HOST_CC:=		${HOST_CXX}
+HOST_CFLAGS+=		${HOST_CXXFLAGS}
 CC:=			${CXX}
 CFLAGS:=		${CXXFLAGS} -std=gnu++11 -Wno-error=stack-protector
 
diff --git a/external/gpl3/gdb/bin/gdbserver/Makefile b/external/gpl3/gdb/bin/gdbserver/Makefile
index f59786e540c..e7c0ef25cfe 100644
--- a/external/gpl3/gdb/bin/gdbserver/Makefile
+++ b/external/gpl3/gdb/bin/gdbserver/Makefile
@@ -56,6 +56,7 @@ DPADD+=	${LIBGDBSUPPORTDIR}/libgdbsupport.a \
 # Force c++
 CWARNFLAGS.clang+=	-Wno-deprecated
 HOST_CC:=		${HOST_CXX}
+HOST_CFLAGS+=		${HOST_CXXFLAGS}
 CC:=			${CXX}
 CFLAGS:=		${CXXFLAGS} -std=gnu++11 -Wno-error=stack-protector -pthread
 
diff --git a/external/gpl3/gdb/bin/gdbtui/Makefile b/external/gpl3/gdb/bin/gdbtui/Makefile
index 14d80ce1bc1..4f6f760baa0 100644
--- a/external/gpl3/gdb/bin/gdbtui/Makefile
+++ b/external/gpl3/gdb/bin/gdbtui/Makefile
@@ -33,6 +33,7 @@ NOMAN=		# defined
 # Force c++
 CWARNFLAGS.clang+=	-Wno-deprecated
 HOST_CC:=		${HOST_CXX}
+HOST_CFLAGS+=		${HOST_CXXFLAGS}
 CC:=			${CXX}
 CFLAGS:=		${CXXFLAGS} -std=gnu++11 -Wno-error=stack-protector
 
diff --git a/external/gpl3/gdb/lib/libgdb/Makefile b/external/gpl3/gdb/lib/libgdb/Makefile
index d51c69f3e02..fde3185a64e 100644
--- a/external/gpl3/gdb/lib/libgdb/Makefile
+++ b/external/gpl3/gdb/lib/libgdb/Makefile
@@ -46,6 +46,7 @@ CWARNFLAGS.clang+=	-Wno-switch
 # Force c++
 CWARNFLAGS.clang+=	-Wno-deprecated
 HOST_CC:=		${HOST_CXX}
+HOST_CFLAGS+=		${HOST_CXXFLAGS}
 CC:=			${CXX}
 CFLAGS:=		${CXXFLAGS} -std=gnu++17 -Wno-error=stack-protector
 
diff --git a/external/gpl3/gdb/lib/libgdbsupport/Makefile b/external/gpl3/gdb/lib/libgdbsupport/Makefile
index 93bb029e412..dfa7106fd45 100644
--- a/external/gpl3/gdb/lib/libgdbsupport/Makefile
+++ b/external/gpl3/gdb/lib/libgdbsupport/Makefile
@@ -45,6 +45,7 @@ CWARNFLAGS.clang+=	-Wno-switch
 # Force c++
 CWARNFLAGS.clang+=	-Wno-deprecated
 HOST_CC:=		${HOST_CXX}
+HOST_CFLAGS+=		${HOST_CXXFLAGS}
 CC:=			${CXX}
 CFLAGS:=		${CXXFLAGS} -std=gnu++11 -Wno-error=stack-protector
 
diff --git a/external/lgpl3/gmp/dist/Makefile.in b/external/lgpl3/gmp/dist/Makefile.in
index f6e40685d15..4de5d779f33 100644
--- a/external/lgpl3/gmp/dist/Makefile.in
+++ b/external/lgpl3/gmp/dist/Makefile.in
@@ -1452,7 +1452,7 @@ fac_table.h: gen-fac$(EXEEXT_FOR_BUILD)
 	./gen-fac $(GMP_LIMB_BITS) $(GMP_NAIL_BITS) >fac_table.h || (rm -f fac_table.h; exit 1)
 
 gen-fac$(EXEEXT_FOR_BUILD): gen-fac$(U_FOR_BUILD).c bootstrap.c
-	$(CC_FOR_BUILD) `test -f 'gen-fac$(U_FOR_BUILD).c' || echo '$(srcdir)/'`gen-fac$(U_FOR_BUILD).c -o gen-fac$(EXEEXT_FOR_BUILD)
+	$(CC_FOR_BUILD) $(CPPFLAGS) `test -f 'gen-fac$(U_FOR_BUILD).c' || echo '$(srcdir)/'`gen-fac$(U_FOR_BUILD).c -o gen-fac$(EXEEXT_FOR_BUILD)
 
 fib_table.h: gen-fib$(EXEEXT_FOR_BUILD)
 	./gen-fib header $(GMP_LIMB_BITS) $(GMP_NAIL_BITS) >fib_table.h || (rm -f fib_table.h; exit 1)
@@ -1461,7 +1461,7 @@ mpn/fib_table.c: gen-fib$(EXEEXT_FOR_BUILD)
 	./gen-fib table $(GMP_LIMB_BITS) $(GMP_NAIL_BITS) >mpn/fib_table.c || (rm -f mpn/fib_table.c; exit 1)
 
 gen-fib$(EXEEXT_FOR_BUILD): gen-fib$(U_FOR_BUILD).c bootstrap.c
-	$(CC_FOR_BUILD) `test -f 'gen-fib$(U_FOR_BUILD).c' || echo '$(srcdir)/'`gen-fib$(U_FOR_BUILD).c -o gen-fib$(EXEEXT_FOR_BUILD)
+	$(CC_FOR_BUILD) $(CPPFLAGS) `test -f 'gen-fib$(U_FOR_BUILD).c' || echo '$(srcdir)/'`gen-fib$(U_FOR_BUILD).c -o gen-fib$(EXEEXT_FOR_BUILD)
 
 mp_bases.h: gen-bases$(EXEEXT_FOR_BUILD)
 	./gen-bases header $(GMP_LIMB_BITS) $(GMP_NAIL_BITS) >mp_bases.h || (rm 
-f mp_bases.h; exit 1)
@@ -1470,25 +1470,25 @@ mpn/mp_bases.c: gen-bases$(EXEEXT_FOR_BUILD)
 	./gen-bases table $(GMP_LIMB_BITS) $(GMP_NAIL_BITS) >mpn/mp_bases.c || (rm -f mpn/mp_bases.c; exit 1)
 
 gen-bases$(EXEEXT_FOR_BUILD): gen-bases$(U_FOR_BUILD).c bootstrap.c
-	$(CC_FOR_BUILD) `test -f 'gen-bases$(U_FOR_BUILD).c' || echo '$(srcdir)/'`gen-bases$(U_FOR_BUILD).c -o gen-bases$(EXEEXT_FOR_BUILD) $(LIBM_FOR_BUILD)
+	$(CC_FOR_BUILD) $(CPPFLAGS) `test -f 'gen-bases$(U_FOR_BUILD).c' || echo '$(srcdir)/'`gen-bases$(U_FOR_BUILD).c -o gen-bases$(EXEEXT_FOR_BUILD) $(LIBM_FOR_BUILD)
 
 trialdivtab.h: gen-trialdivtab$(EXEEXT_FOR_BUILD)
 	./gen-trialdivtab $(GMP_LIMB_BITS) 8000 >trialdivtab.h || (rm -f trialdivtab.h; exit 1)
 
 gen-trialdivtab$(EXEEXT_FOR_BUILD): gen-trialdivtab$(U_FOR_BUILD).c bootstrap.c
-	$(CC_FOR_BUILD) `test -f 'gen-trialdivtab$(U_FOR_BUILD).c' || echo '$(srcdir)/'`gen-trialdivtab$(U_FOR_BUILD).c -o gen-trialdivtab$(EXEEXT_FOR_BUILD) $(LIBM_FOR_BUILD)
+	$(CC_FOR_BUILD) $(CPPFLAGS) `test -f 'gen-trialdivtab$(U_FOR_BUILD).c' || echo '$(srcdir)/'`gen-trialdivtab$(U_FOR_BUILD).c -o gen-trialdivtab$(EXEEXT_FOR_BUILD) $(LIBM_FOR_BUILD)
 
 mpn/jacobitab.h: gen-jacobitab$(EXEEXT_FOR_BUILD)
 	./gen-jacobitab >mpn/jacobitab.h || (rm -f mpn/jacobitab.h; exit 1)
 
 gen-jacobitab$(EXEEXT_FOR_BUILD): gen-jacobitab$(U_FOR_BUILD).c
-	$(CC_FOR_BUILD) `test -f 'gen-jacobitab$(U_FOR_BUILD).c' || echo '$(srcdir)/'`gen-jacobitab$(U_FOR_BUILD).c -o gen-jacobitab$(EXEEXT_FOR_BUILD)
+	$(CC_FOR_BUILD) $(CPPFLAGS) `test -f 'gen-jacobitab$(U_FOR_BUILD).c' || 
echo '$(srcdir)/'`gen-jacobitab$(U_FOR_BUILD).c -o gen-jacobitab$(EXEEXT_FOR_BUILD)
 
 mpn/perfsqr.h: gen-psqr$(EXEEXT_FOR_BUILD)
 	./gen-psqr $(GMP_LIMB_BITS) $(GMP_NAIL_BITS) >mpn/perfsqr.h || (rm -f mpn/perfsqr.h; exit 1)
 
 gen-psqr$(EXEEXT_FOR_BUILD): gen-psqr$(U_FOR_BUILD).c bootstrap.c
-	$(CC_FOR_BUILD) `test -f 'gen-psqr$(U_FOR_BUILD).c' || echo '$(srcdir)/'`gen-psqr$(U_FOR_BUILD).c -o gen-psqr$(EXEEXT_FOR_BUILD) $(LIBM_FOR_BUILD)
+	$(CC_FOR_BUILD) $(CPPFLAGS) `test -f 'gen-psqr$(U_FOR_BUILD).c' || echo 
'$(srcdir)/'`gen-psqr$(U_FOR_BUILD).c -o gen-psqr$(EXEEXT_FOR_BUILD) $(LIBM_FOR_BUILD)
 
 # Avoid: CVS - cvs directories
 #        *~  - emacs backups
diff --git a/external/lgpl3/gmp/lib/libgmp/Makefile b/external/lgpl3/gmp/lib/libgmp/Makefile
index 70a617c4d8c..cfbbc564597 100644
--- a/external/lgpl3/gmp/lib/libgmp/Makefile
+++ b/external/lgpl3/gmp/lib/libgmp/Makefile
@@ -160,13 +160,13 @@ DPSRCS= fac_table.h fib_table.h fib_table.c jacobitab.h mp_bases.h \
 	mp_bases.c perfsqr.h trialdivtab.h
 
 gen-fac: gen-fac.c
-	${HOST_CC} -o ${.OBJDIR}/gen-fac ${.ALLSRC}
+	${HOST_CC} ${HOST_CPPFLAGS} -o ${.OBJDIR}/gen-fac ${.ALLSRC}
 
 fac_table.h: gen-fac
 	${.OBJDIR}/gen-fac ${GMP_LIMB_BITS} 0 > ${.OBJDIR}/fac_table.h
 
 gen-fib: gen-fib.c
-	${HOST_CC} -o ${.OBJDIR}/gen-fib ${.ALLSRC}
+	${HOST_CC} ${HOST_CPPFLAGS} -o ${.OBJDIR}/gen-fib ${.ALLSRC}
 
 fib_table.h: gen-fib
 	${.OBJDIR}/gen-fib header ${GMP_LIMB_BITS} 0 > ${.OBJDIR}/fib_table.h
@@ -175,7 +175,7 @@ fib_table.c: gen-fib
 	${.OBJDIR}/gen-fib table ${GMP_LIMB_BITS} 0 > ${.OBJDIR}/fib_table.c
 
 gen-bases: gen-bases.c
-	${HOST_CC} -o ${.OBJDIR}/gen-bases ${.ALLSRC} -lm
+	${HOST_CC} ${HOST_CPPFLAGS} -o ${.OBJDIR}/gen-bases ${.ALLSRC} -lm
 
 mp_bases.h: gen-bases
 	${.OBJDIR}/gen-bases header ${GMP_LIMB_BITS} 0 > ${.OBJDIR}/mp_bases.h
@@ -184,17 +184,17 @@ mp_bases.c: gen-bases
 	${.OBJDIR}/gen-bases table ${GMP_LIMB_BITS} 0 > ${.OBJDIR}/mp_bases.c
 
 gen-jacobitab: gen-jacobitab.c
-	${HOST_CC} -o ${.OBJDIR}/gen-jacobitab ${.ALLSRC} -lm
+	${HOST_CC} ${HOST_CPPFLAGS} -o ${.OBJDIR}/gen-jacobitab ${.ALLSRC} -lm
 
 jacobitab.h: gen-jacobitab
 	${.OBJDIR}/gen-jacobitab > ${.OBJDIR}/jacobitab.h
 
 perfsqr.h: gen-psqr.c
-	${HOST_CC} -o ${.OBJDIR}/gen-psqr ${.ALLSRC}
+	${HOST_CC} ${HOST_CPPFLAGS} -o ${.OBJDIR}/gen-psqr ${.ALLSRC}
 	${.OBJDIR}/gen-psqr ${GMP_LIMB_BITS} 0 > ${.OBJDIR}/perfsqr.h
 
 gen-trialdivtab: gen-trialdivtab.c
-	${HOST_CC} -o ${.OBJDIR}/gen-trialdivtab ${.ALLSRC} -lm
+	${HOST_CC} ${HOST_CPPFLAGS} -o ${.OBJDIR}/gen-trialdivtab ${.ALLSRC} -lm
 
 trialdiv.c: trialdivtab.h
 trialdivtab.h: gen-trialdivtab Makefile
diff --git a/tools/Makefile.gnuhost b/tools/Makefile.gnuhost
index a9d3417fc6d..0e9b5c0ad3e 100644
--- a/tools/Makefile.gnuhost
+++ b/tools/Makefile.gnuhost
@@ -63,6 +63,7 @@ CONFIGURE_ENV+= \
 		INSTALL=${HOST_INSTALL_FILE:Q} \
 		LDFLAGS=${HOST_LDFLAGS:Q} \
 		LEX=${LEX:Q} \
+		LIBRARY_PATH=${LIBRARY_PATH:Q} \
 		FLEX=${LEX:Q} \
 		M4=${TOOL_M4:Q} \
 		MAKE=${MAKE_PROGRAM:Q} \
diff --git a/tools/binutils/Makefile b/tools/binutils/Makefile
index 2213662fbce..a611b092465 100644
--- a/tools/binutils/Makefile
+++ b/tools/binutils/Makefile
@@ -36,6 +36,7 @@ INSTALL_TARGET+=install-gprof
 
 CCADDFLAGS=	-I${GNUHOSTDIST}/include  -I${DESTDIR}/usr/include
 CCADDFLAGS+=	-B${DESTDIR}/usr/lib/
+CCADDFLAGS+=	${HOST_CPPFLAGS}
 LDADDFLAGS=	-L${DESTDIR}/lib -L${DESTDIR}/usr/lib
 
 # Force avoiding possibly non-executable install-sh.
diff --git a/tools/compat/Makefile b/tools/compat/Makefile
index b42319b61f1..03a8e840852 100644
--- a/tools/compat/Makefile
+++ b/tools/compat/Makefile
@@ -31,13 +31,13 @@ BUILD_OSTYPE!=  uname -s
 
 # Disable use of pre-compiled headers on Darwin.
 .if ${BUILD_OSTYPE} == "Darwin"
-CPPFLAGS+=	-no-cpp-precomp
+HOST_CPPFLAGS+=	-no-cpp-precomp
 .endif
 
 # -D_FILE_OFFSET_BITS=64 produces a much more amenable `struct stat', and
 # other file ops, on many systems, without changing function names.
 
-CPPFLAGS+=	-I. -I./include -I${.CURDIR} -I${.CURDIR}/sys \
+HOST_CPPFLAGS+=	-I. -I./include -I${.CURDIR} -I${.CURDIR}/sys \
 		-DHAVE_NBTOOL_CONFIG_H=1 -D_FILE_OFFSET_BITS=64
 
 .PATH:		${.CURDIR}/../../lib/libc/cdb \
@@ -84,7 +84,8 @@ CONFIGURE_ARGS+=--silent
 
 config.cache: include/.stamp configure nbtool_config.h.in defs.mk.in
 	rm -f ${.TARGET}
-	CC=${HOST_CC:Q} CFLAGS=${HOST_CFLAGS:Q} LDFLAGS=${HOST_LDFLAGS:Q} 
\
+	CC=${HOST_CC:Q} CFLAGS=${HOST_CFLAGS:Q} CPPFLAGS=${HOST_CPPFLAGS:Q} \
+		LDFLAGS=${HOST_LDFLAGS:Q} \
 		${HOST_SH} ${.CURDIR}/configure ${CONFIGURE_ARGS}
 
 defs.mk: config.cache
@@ -149,8 +150,7 @@ ${HOST_SHAREDIR}/compat/defs.mk: defs.mk
 
 # bsd.hostlib.mk wants HOST_CPPFLAGS, not CPPFLAGS
 
-HOST_CPPFLAGS:=	${CPPFLAGS}
-CPPFLAGS:=	# empty
+HOST_CPPFLAGS+=	${CPPFLAGS}
 
 .include <bsd.hostlib.mk>
 
diff --git a/tools/fdisk/Makefile b/tools/fdisk/Makefile
index bf2ee742672..ed1794c136a 100644
--- a/tools/fdisk/Makefile
+++ b/tools/fdisk/Makefile
@@ -4,7 +4,7 @@ HOSTPROGNAME=	${MACHINE_GNU_PLATFORM}-fdisk
 HOST_SRCDIR=	sbin/fdisk
 HOST_SRCS=	disklabel.c
 
-HOST_CPPFLAGS=	-DDEFAULT_BOOTDIR=\"${DESTDIR}/usr/mdec\"
+HOST_CPPFLAGS+=	-DDEFAULT_BOOTDIR=\"${DESTDIR}/usr/mdec\"
 
 .include "${.CURDIR}/../Makefile.nbincludes"
 .include "${.CURDIR}/../Makefile.host"
diff --git a/tools/gcc/Makefile b/tools/gcc/Makefile
index e9e68ff089c..74fbcdc3c5f 100644
--- a/tools/gcc/Makefile
+++ b/tools/gcc/Makefile
@@ -71,7 +71,8 @@ CONFIGURE_ARGS+= \
 		--enable-languages="${GCC_LANGUAGES}"
 
 GCC_CPPFLAGS=	-DNETBSD_TOOLS -DTARGET_SYSTEM_ROOT=0 \
-		-DTARGET_SYSTEM_ROOT_RELOCATABLE
+		-DTARGET_SYSTEM_ROOT_RELOCATABLE \
+		${HOST_CPPFLAGS}
 
 MAKE_ARGS=	MACHINE= MAKEINFO=${TOOL_MAKEINFO:Q} \
 		LIBGCC= LIBGCC1= LIBGCC1_TEST= LIBGCC2= INSTALL_LIBGCC= \
@@ -120,6 +121,7 @@ MKNATIVE_ENV=	${BINENV} ${CONFIGURE_ENV:NC*:NLD*} \
 			CXX=${CXX:Q}' '${CCADDFLAGS:Q}' '${CXXADDFLAGS:Q} \
 			CPP=${CPP:Q}' '-I${DESTDIR}/usr/include' '-I${DESTDIR}/usr/include/g++/bits \
 			CFLAGS= CPPFLAGS= CXXFLAGS= LDFLAGS= \
+			LIBRARY_PATH=${LIBRARY_PATH:Q} \
 			AS=${AS:Q} AWK=${TOOL_AWK:Q} LD=${LD:Q} \
 			MSGFMT=${TOOLDIR}/bin/${_TOOL_PREFIX}msgfmt \
 			NM=${NM:Q} OBJDUMP=${OBJDUMP:Q} \
diff --git a/tools/gmp/Makefile b/tools/gmp/Makefile
index 4e6f8205f32..1fbd57b079c 100644
--- a/tools/gmp/Makefile
+++ b/tools/gmp/Makefile
@@ -5,6 +5,8 @@ GNUHOSTDIST=   ${.CURDIR}/../../external/lgpl3/gmp/dist
 
 CONFIGURE_ARGS+=--disable-shared
 
+CPPFLAGS+=	${HOST_CPPFLAGS}
+
 .include "${.CURDIR}/../Makefile.gnuhost"
 
 # Don't override CFLAGS and CXXFLAGS, it breaks ABI detection.
diff --git a/tools/sunlabel/Makefile b/tools/sunlabel/Makefile
index 8cb2d8f6b08..b913948580b 100644
--- a/tools/sunlabel/Makefile
+++ b/tools/sunlabel/Makefile
@@ -2,6 +2,6 @@
 
 HOSTPROGNAME=	${_TOOL_PREFIX}sunlabel
 HOST_SRCDIR=	usr.sbin/sunlabel
-HOST_CPPFLAGS=	-DDISTRIB -DNO_S_COMMAND -DNO_TERMCAP_WIDTH
+HOST_CPPFLAGS+=	-DDISTRIB -DNO_S_COMMAND -DNO_TERMCAP_WIDTH
 
 .include "${.CURDIR}/../Makefile.host"
diff --git a/tools/uudecode/Makefile b/tools/uudecode/Makefile
index 0bc794fed8e..2f0c91e49a5 100644
--- a/tools/uudecode/Makefile
+++ b/tools/uudecode/Makefile
@@ -3,6 +3,6 @@
 HOSTPROGNAME=	${_TOOL_PREFIX}uudecode
 HOST_SRCDIR=	usr.bin/uudecode
 
-HOST_CPPFLAGS=	-DNO_BASE64
+HOST_CPPFLAGS+=	-DNO_BASE64
 
 .include "${.CURDIR}/../Makefile.host"
diff --git a/tools/vgrind/Makefile b/tools/vgrind/Makefile
index cf514ebd970..90a692de1b4 100644
--- a/tools/vgrind/Makefile
+++ b/tools/vgrind/Makefile
@@ -4,7 +4,7 @@ HOSTPROGNAME=	${_TOOL_PREFIX}vfontedpr
 HOST_BINDIR=	${TOOLDIR}/libexec
 HOST_SRCDIR=	usr.bin/vgrind
 HOST_FILESDIR=	${TOOLDIR}/share/misc
-HOST_CPPFLAGS=	-D_PATH_VGRINDEFS=\"${HOST_FILESDIR}/vgrindefs\"
+HOST_CPPFLAGS+=	-D_PATH_VGRINDEFS=\"${HOST_FILESDIR}/vgrindefs\"
 HOSTFILES=	vgrindefs vgrindefs.db
 NOSHARE=# defined
 CLEANFILES+= ${HOSTFILES}
diff --git a/tools/xz-include/Makefile b/tools/xz-include/Makefile
index de909583d62..6793f82a6d2 100644
--- a/tools/xz-include/Makefile
+++ b/tools/xz-include/Makefile
@@ -15,7 +15,7 @@ CONFIGURE_ARGS+=	--silent
 
 config.status: ${XZSRCDIR}/configure
 	${HOST_SH} ${XZSRCDIR}/configure ${CONFIGURE_ARGS} \
-	    CC=${HOST_CC:Q}
+	    CC=${HOST_CC:Q} CPPFLAGS=${HOST_CPPFLAGS:Q}
 
 CLEANFILES+=	config.log config.status config.h libtool stamp-h1
 
-- 
2.31.1

Attachment: OpenPGP_signature
Description: OpenPGP digital signature



Home | Main Index | Thread Index | Old Index