aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorMarc Poulhiès <dkm@kataplop.net>2022-12-13 21:16:22 +0100
committerChris Packham <judge.packham@gmail.com>2022-12-18 21:20:50 +1300
commitcdae8d0559d41f9464ab54e2967e23a0ee06a358 (patch)
tree7245c112b1e1999ec2c8f715aeff4facf6de6cb5 /scripts
parent500fe136547598da727970383cefe6280c09a658 (diff)
downloadcrosstool-ng-cdae8d0559d41f9464ab54e2967e23a0ee06a358.tar.gz
crosstool-ng-cdae8d0559d41f9464ab54e2967e23a0ee06a358.tar.bz2
crosstool-ng-cdae8d0559d41f9464ab54e2967e23a0ee06a358.zip
Enable support for building libgccjit
libgccjit is still under development and, despite its name, may also be used for ahead-of-time compilation. Documentation can be found on the gcc website: https://gcc.gnu.org/onlinedocs/jit/internals/index.html https://gcc.gnu.org/wiki/JIT With this change it's possible to enable the building of the libgccjit. It's enabled as a language (with --enable-languages=jit) even if not a language frontend at all. The main changes are related to the requirement of having everything host side built as Position Independent Code (PIC) with --enable-host-shared. GCC has the needed logic for building its dependencies (mpc, gmp, mpfr, ...) correctly when built "in-tree", which is not the case with crosstool-ng (see https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=05048fc29f0) Signed-off-by: Marc Poulhiès <dkm@kataplop.net>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/build/cc/gcc.sh5
-rw-r--r--scripts/build/companion_libs/050-zlib.sh4
-rw-r--r--scripts/build/companion_libs/100-gmp.sh6
-rw-r--r--scripts/build/companion_libs/110-mpfr.sh14
-rw-r--r--scripts/build/companion_libs/121-isl.sh4
-rw-r--r--scripts/build/companion_libs/130-cloog.sh4
-rw-r--r--scripts/build/companion_libs/140-mpc.sh12
7 files changed, 44 insertions, 5 deletions
diff --git a/scripts/build/cc/gcc.sh b/scripts/build/cc/gcc.sh
index 1d7fc065..18558533 100644
--- a/scripts/build/cc/gcc.sh
+++ b/scripts/build/cc/gcc.sh
@@ -45,6 +45,7 @@ cc_gcc_lang_list() {
[ "${CT_CC_LANG_ADA}" = "y" ] && lang_list+=",ada"
[ "${CT_CC_LANG_D}" = "y" ] && lang_list+=",d"
[ "${CT_CC_LANG_JAVA}" = "y" ] && lang_list+=",java"
+ [ "${CT_CC_LANG_JIT}" = "y" ] && lang_list+=",jit"
[ "${CT_CC_LANG_OBJC}" = "y" ] && lang_list+=",objc"
[ "${CT_CC_LANG_OBJCXX}" = "y" ] && lang_list+=",obj-c++"
[ "${CT_CC_LANG_GOLANG}" = "y" ] && lang_list+=",go"
@@ -343,6 +344,10 @@ do_gcc_core_backend() {
extra_config+=("--enable-newlib-nano-formatted-io")
fi
+ if [ "${CT_CC_LANG_JIT}" = "y" ]; then
+ extra_config+=("--enable-host-shared")
+ fi
+
if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then
extra_config+=("--enable-__cxa_atexit")
else
diff --git a/scripts/build/companion_libs/050-zlib.sh b/scripts/build/companion_libs/050-zlib.sh
index 8c6a0f6f..07c95496 100644
--- a/scripts/build/companion_libs/050-zlib.sh
+++ b/scripts/build/companion_libs/050-zlib.sh
@@ -80,6 +80,10 @@ do_zlib_backend() {
eval "${arg// /\\ }"
done
+ if [ "${CT_CC_LANG_JIT}" = "y" ]; then
+ cflags="${cflags} -fPIC"
+ fi
+
case "${host}" in
*-mingw32)
# zlib treats mingw host differently and requires using a different
diff --git a/scripts/build/companion_libs/100-gmp.sh b/scripts/build/companion_libs/100-gmp.sh
index 8afa5aec..28deff97 100644
--- a/scripts/build/companion_libs/100-gmp.sh
+++ b/scripts/build/companion_libs/100-gmp.sh
@@ -109,7 +109,7 @@ do_gmp_backend() {
CT_DoLog EXTRA "Configuring GMP"
- # To avoind “illegal text-relocation” linking error against
+ # To avoid “illegal text-relocation” linking error against
# the static library, see:
# https://github.com/Homebrew/homebrew-core/pull/25470
case "${host}" in
@@ -118,6 +118,10 @@ do_gmp_backend() {
;;
esac
+ if [ "${CT_CC_LANG_JIT}" = "y" ]; then
+ extra_config+=("--with-pic")
+ fi
+
# GMP's configure script doesn't respect the host parameter
# when not cross-compiling, ie when build == host so set
# CC_FOR_BUILD and CPP_FOR_BUILD.
diff --git a/scripts/build/companion_libs/110-mpfr.sh b/scripts/build/companion_libs/110-mpfr.sh
index d2cb9f68..3a1916c5 100644
--- a/scripts/build/companion_libs/110-mpfr.sh
+++ b/scripts/build/companion_libs/110-mpfr.sh
@@ -94,6 +94,7 @@ do_mpfr_backend() {
local cflags
local ldflags
local arg
+ local -a extra_config
for arg in "$@"; do
eval "${arg// /\\ }"
@@ -101,12 +102,16 @@ do_mpfr_backend() {
# Under Cygwin, we can't build a thread-safe library
case "${CT_HOST}" in
- *cygwin*) mpfr_opts+=( --disable-thread-safe );;
- *mingw*) mpfr_opts+=( --disable-thread-safe );;
- *darwin*) mpfr_opts+=( --disable-thread-safe );;
- *) mpfr_opts+=( --enable-thread-safe );;
+ *cygwin*) extra_config+=( --disable-thread-safe );;
+ *mingw*) extra_config+=( --disable-thread-safe );;
+ *darwin*) extra_config+=( --disable-thread-safe );;
+ *) extra_config+=( --enable-thread-safe );;
esac
+ if [ "${CT_CC_LANG_JIT}" = "y" ]; then
+ extra_config+=("--with-pic")
+ fi
+
CT_DoLog EXTRA "Configuring MPFR"
CT_DoExecLog CFG \
CC="${host}-gcc" \
@@ -117,6 +122,7 @@ do_mpfr_backend() {
--build=${CT_BUILD} \
--host=${host} \
--prefix="${prefix}" \
+ "${extra_config[@]}" \
--with-gmp="${prefix}" \
--disable-shared \
--enable-static
diff --git a/scripts/build/companion_libs/121-isl.sh b/scripts/build/companion_libs/121-isl.sh
index 3577b756..d7f69256 100644
--- a/scripts/build/companion_libs/121-isl.sh
+++ b/scripts/build/companion_libs/121-isl.sh
@@ -82,6 +82,10 @@ do_isl_backend() {
eval "${arg// /\\ }"
done
+ if [ "${CT_CC_LANG_JIT}" = "y" ]; then
+ extra_config+=("--with-pic")
+ fi
+
CT_DoLog EXTRA "Configuring ISL"
CT_DoExecLog CFG \
diff --git a/scripts/build/companion_libs/130-cloog.sh b/scripts/build/companion_libs/130-cloog.sh
index 9ee897ab..5170b53b 100644
--- a/scripts/build/companion_libs/130-cloog.sh
+++ b/scripts/build/companion_libs/130-cloog.sh
@@ -83,6 +83,10 @@ do_cloog_backend() {
cloog_opts+=( --with-isl=system --with-isl-prefix="${prefix}" )
cloog_opts+=( --without-osl )
+ if [ "${CT_CC_LANG_JIT}" = "y" ]; then
+ cloog_opts+=("--with-pic")
+ fi
+
CT_DoLog EXTRA "Configuring CLooG"
CT_DoExecLog CFG \
diff --git a/scripts/build/companion_libs/140-mpc.sh b/scripts/build/companion_libs/140-mpc.sh
index 2166ef1b..2bbba2d9 100644
--- a/scripts/build/companion_libs/140-mpc.sh
+++ b/scripts/build/companion_libs/140-mpc.sh
@@ -38,6 +38,11 @@ do_mpc_for_build() {
mpc_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" )
mpc_opts+=( "cflags=${CT_CFLAGS_FOR_BUILD}" )
mpc_opts+=( "ldflags=${CT_LDFLAGS_FOR_BUILD}" )
+
+ if [ "${CT_CC_LANG_JIT}" = "y" ]; then
+ mpc_opts+=("--with-pic")
+ fi
+
do_mpc_backend "${mpc_opts[@]}"
CT_Popd
@@ -73,11 +78,17 @@ do_mpc_backend() {
local cflags
local ldflags
local arg
+ local -a extra_config
for arg in "$@"; do
eval "${arg// /\\ }"
done
+ if [ "${CT_CC_LANG_JIT}" = "y" ]; then
+ extra_config+=("--with-pic")
+ fi
+
+
CT_DoLog EXTRA "Configuring MPC"
CT_DoExecLog CFG \
@@ -87,6 +98,7 @@ do_mpc_backend() {
"${CT_SRC_DIR}/mpc/configure" \
--build=${CT_BUILD} \
--host=${host} \
+ "${extra_config[@]}" \
--prefix="${prefix}" \
--with-gmp="${prefix}" \
--with-mpfr="${prefix}" \