From f2f782dd1cf2b4ccb6f28f6113e7fedb23f078d6 Mon Sep 17 00:00:00 2001 From: Dan McGregor Date: Thu, 17 Nov 2016 18:57:28 -0600 Subject: Bring in FreeBSD support Check for FreeBSD specific issues, it is mostly the same as Darwin. Signed-off-by: Dan McGregor --- scripts/build/internals.sh | 3 +++ scripts/build/kernel/linux.sh | 32 ++++++++++++++++++-------------- scripts/build/libc/glibc.sh | 10 +++++++++- 3 files changed, 30 insertions(+), 15 deletions(-) (limited to 'scripts/build') diff --git a/scripts/build/internals.sh b/scripts/build/internals.sh index 18ada66a..95fb72b4 100644 --- a/scripts/build/internals.sh +++ b/scripts/build/internals.sh @@ -17,6 +17,9 @@ do_finish() { *darwin*) strip_args="" ;; + *freebsd*) + strip_args="--strip-all" + ;; *) strip_args="--strip-all -v" ;; diff --git a/scripts/build/kernel/linux.sh b/scripts/build/kernel/linux.sh index 9cfc433f..cd4a4566 100644 --- a/scripts/build/kernel/linux.sh +++ b/scripts/build/kernel/linux.sh @@ -103,24 +103,28 @@ do_kernel_headers() { esac CT_DoLog EXTRA "Installing kernel headers" - CT_DoExecLog ALL \ - make -C "${kernel_path}" \ - CROSS_COMPILE="${CT_TARGET}-" \ - O="${CT_BUILD_DIR}/build-kernel-headers" \ - ARCH=${kernel_arch} \ - INSTALL_HDR_PATH="${CT_SYSROOT_DIR}/usr" \ - ${V_OPT} \ + CT_DoExecLog ALL \ + make -C "${kernel_path}" \ + BASH="$(which bash)" \ + HOSTCC="${CT_BUILD}-gcc" \ + CROSS_COMPILE="${CT_TARGET}-" \ + O="${CT_BUILD_DIR}/build-kernel-headers" \ + ARCH=${kernel_arch} \ + INSTALL_HDR_PATH="${CT_SYSROOT_DIR}/usr" \ + ${V_OPT} \ headers_install if [ "${CT_KERNEL_LINUX_INSTALL_CHECK}" = "y" ]; then CT_DoLog EXTRA "Checking installed headers" - CT_DoExecLog ALL \ - make -C "${kernel_path}" \ - CROSS_COMPILE="${CT_TARGET}-" \ - O="${CT_BUILD_DIR}/build-kernel-headers" \ - ARCH=${kernel_arch} \ - INSTALL_HDR_PATH="${CT_SYSROOT_DIR}/usr" \ - ${V_OPT} \ + CT_DoExecLog ALL \ + make -C "${kernel_path}" \ + BASH="$(which bash)" \ + HOSTCC="${CT_BUILD}-gcc" \ + CROSS_COMPILE="${CT_TARGET}-" \ + O="${CT_BUILD_DIR}/build-kernel-headers" \ + ARCH=${kernel_arch} \ + INSTALL_HDR_PATH="${CT_SYSROOT_DIR}/usr" \ + ${V_OPT} \ headers_check fi diff --git a/scripts/build/libc/glibc.sh b/scripts/build/libc/glibc.sh index c12a5530..25687ce9 100644 --- a/scripts/build/libc/glibc.sh +++ b/scripts/build/libc/glibc.sh @@ -346,13 +346,21 @@ do_libc_backend_once() { build_ldflags="${CT_LDFLAGS_FOR_BUILD}" case "$CT_BUILD" in - *mingw*|*cygwin*|*msys*|*darwin*) + *mingw*|*cygwin*|*msys*|*darwin*|*freebsd*) # When installing headers on Cygwin, Darwin, MSYS2 and MinGW-w64 sunrpc needs # gettext for building cross-rpcgen. build_cppflags="${build_cppflags} -I${CT_BUILDTOOLS_PREFIX_DIR}/include/" build_ldflags="${build_ldflags} -lintl -liconv" + case "$CT_BUILD" in + *cygwin*|*freebsd*) + # Additionally, stat in FreeBSD, Cygwin, and possibly others + # is always 64bit, so replace struct stat64 with stat. + build_cppflags="${build_cppflags} -Dstat64=stat" + ;; + esac ;; esac + extra_make_args+=( "BUILD_CFLAGS=${build_cflags}" ) extra_make_args+=( "BUILD_CPPFLAGS=${build_cppflags}" ) extra_make_args+=( "BUILD_LDFLAGS=${build_ldflags}" ) -- cgit v1.2.3 From c88621f74005dcbbc9787c1cae33c5751ec5ef81 Mon Sep 17 00:00:00 2001 From: Dan McGregor Date: Wed, 1 Mar 2017 04:10:37 -0600 Subject: glibc: hide native c++ executable from build If glibc's configure finds the host c++ executable it assumes that c++ should be enabled for the build. In case we don't have cross g++ built yet (ie, for headers), this causes the build to fail creating C++ headers. So hide C++ from the build. Signed-off-by: Dan McGregor --- scripts/build/libc/glibc.sh | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'scripts/build') diff --git a/scripts/build/libc/glibc.sh b/scripts/build/libc/glibc.sh index 25687ce9..52074579 100644 --- a/scripts/build/libc/glibc.sh +++ b/scripts/build/libc/glibc.sh @@ -247,6 +247,10 @@ do_libc_backend_once() { [ -n "${CT_TOOLCHAIN_BUGURL}" ] && extra_config+=("--with-bugurl=${CT_TOOLCHAIN_BUGURL}") touch config.cache + + # Hide host C++ binary from configure + echo "ac_cv_prog_ac_ct_CXX=${CT_TARGET}-g++" >>config.cache + if [ "${CT_LIBC_GLIBC_FORCE_UNWIND}" = "y" ]; then echo "libc_cv_forced_unwind=yes" >>config.cache echo "libc_cv_c_cleanup=yes" >>config.cache -- cgit v1.2.3 From 7f961026c193bda19b91acee756ae206412c7bc5 Mon Sep 17 00:00:00 2001 From: Dan McGregor Date: Tue, 21 Feb 2017 19:25:26 -0600 Subject: Explicitly use gcc for GMP GMP's configure script tries to be too smart, and if it determines that it's not cross-compiling it chooses gcc or cc instead of the wrapper we create at the start of the build. Signed-off-by: Dan McGregor --- scripts/build/companion_libs/100-gmp.sh | 3 +++ 1 file changed, 3 insertions(+) (limited to 'scripts/build') diff --git a/scripts/build/companion_libs/100-gmp.sh b/scripts/build/companion_libs/100-gmp.sh index c81874a8..e6a4875d 100644 --- a/scripts/build/companion_libs/100-gmp.sh +++ b/scripts/build/companion_libs/100-gmp.sh @@ -88,7 +88,10 @@ do_gmp_backend() { extra_config+=("--enable-mpbsd") fi + # FIXME: GMP's configure script doesn't respect the host parameter + # when not cross-compiling, ie when build == host. CT_DoExecLog CFG \ + CC="${host}-gcc" \ CFLAGS="${cflags} -fexceptions" \ LDFLAGS="${ldflags}" \ ${CONFIG_SHELL} \ -- cgit v1.2.3