summaryrefslogtreecommitdiff
path: root/scripts/build/companion_libs/100-gmp.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/build/companion_libs/100-gmp.sh')
-rw-r--r--scripts/build/companion_libs/100-gmp.sh59
1 files changed, 46 insertions, 13 deletions
diff --git a/scripts/build/companion_libs/100-gmp.sh b/scripts/build/companion_libs/100-gmp.sh
index c81874a..a17eda9 100644
--- a/scripts/build/companion_libs/100-gmp.sh
+++ b/scripts/build/companion_libs/100-gmp.sh
@@ -9,19 +9,16 @@ do_gmp_for_host() { :; }
do_gmp_for_target() { :; }
# Overide functions depending on configuration
-if [ "${CT_GMP}" = "y" ]; then
+if [ "${CT_GMP_TARGET}" = "y" -o "${CT_GMP}" = "y" ]; then
# Download GMP
do_gmp_get() {
- CT_GetFile "gmp-${CT_GMP_VERSION}" \
- https://gmplib.org/download/gmp \
- {http,ftp,https}://ftp.gnu.org/gnu/gmp
+ CT_Fetch GMP
}
# Extract GMP
do_gmp_extract() {
- CT_Extract "gmp-${CT_GMP_VERSION}"
- CT_Patch "gmp" "${CT_GMP_VERSION}"
+ CT_ExtractPatch GMP
}
# Build GMP for running on build
@@ -64,12 +61,40 @@ do_gmp_for_host() {
CT_EndStep
}
+if [ "${CT_GMP_TARGET}" = "y" ]; then
+do_gmp_for_target() {
+ local -a gmp_opts
+
+ CT_DoStep INFO "Installing GMP for target"
+ CT_mkdir_pushd "${CT_BUILD_DIR}/build-gmp-target-${CT_HOST}"
+
+ gmp_opts+=( "host=${CT_TARGET}" )
+ case "${CT_TARGET}" in
+ *-*-mingw*)
+ prefix="/mingw"
+ ;;
+ *)
+ prefix="/usr"
+ ;;
+ esac
+ gmp_opts+=( "cflags=${CT_ALL_TARGET_CFLAGS}" )
+ gmp_opts+=( "prefix=${prefix}" )
+ gmp_opts+=( "destdir=${CT_SYSROOT_DIR}" )
+ gmp_opts+=( "shared=${CT_SHARED_LIBS}" )
+ do_gmp_backend "${gmp_opts[@]}"
+
+ CT_Popd
+ CT_EndStep
+}
+fi
+
# Build GMP
# Parameter : description : type : default
# host : machine to run on : tuple : (none)
# prefix : prefix to install into : dir : (none)
# cflags : cflags to use : string : (empty)
# ldflags : ldflags to use : string : (empty)
+# destdir : install destination : dir : (none)
do_gmp_backend() {
local host
local prefix
@@ -84,15 +109,23 @@ do_gmp_backend() {
CT_DoLog EXTRA "Configuring GMP"
- if [ ! "${CT_GMP_5_0_2_or_later}" = "y" ]; then
- extra_config+=("--enable-mpbsd")
- fi
+ # To avoind “illegal text-relocation” linking error against
+ # the static library, see:
+ # https://github.com/Homebrew/homebrew-core/pull/25470
+ case "${host}" in
+ *darwin*)
+ extra_config+=("--with-pic")
+ ;;
+ esac
+ # 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} \
- "${CT_SRC_DIR}/gmp-${CT_GMP_VERSION}/configure" \
+ "${CT_SRC_DIR}/gmp/configure" \
--build=${CT_BUILD} \
--host=${host} \
--prefix="${prefix}" \
@@ -103,12 +136,12 @@ do_gmp_backend() {
"${extra_config[@]}"
CT_DoLog EXTRA "Building GMP"
- CT_DoExecLog ALL make ${JOBSFLAGS}
+ CT_DoExecLog ALL make ${CT_JOBSFLAGS}
if [ "${CT_COMPLIBS_CHECK}" = "y" ]; then
if [ "${host}" = "${CT_BUILD}" ]; then
CT_DoLog EXTRA "Checking GMP"
- CT_DoExecLog ALL make ${JOBSFLAGS} -s check
+ CT_DoExecLog ALL make ${CT_JOBSFLAGS} -s check
else
# Cannot run host binaries on build in a canadian cross
CT_DoLog EXTRA "Skipping check for GMP on the host"
@@ -116,7 +149,7 @@ do_gmp_backend() {
fi
CT_DoLog EXTRA "Installing GMP"
- CT_DoExecLog ALL make install
+ CT_DoExecLog ALL make install DESTDIR="${destdir}"
}
fi # CT_GMP