943 lines
26 KiB
Bash
943 lines
26 KiB
Bash
# -----------------------------------------------------------------------------
|
|
# This file is part of the GNU MCU Eclipse distribution.
|
|
# (https://gnu-mcu-eclipse.github.io)
|
|
# Copyright (c) 2019 Liviu Ionescu.
|
|
#
|
|
# Permission to use, copy, modify, and/or distribute this software
|
|
# for any purpose is hereby granted, under the terms of the MIT license.
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Helper script used in the second edition of the GNU MCU Eclipse build
|
|
# scripts. As the name implies, it should contain only functions and
|
|
# should be included with 'source' by the container build scripts.
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# The surprise of this build was that building the cross guile requires
|
|
# a native guile; thus the need to build everything twice, first the
|
|
# native build, than the cross build.
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
function do_gmp()
|
|
{
|
|
# https://gmplib.org
|
|
# https://gmplib.org/download/gmp/
|
|
# https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=gmp-hg
|
|
|
|
# 01-Nov-2015
|
|
# GMP_VERSION="6.1.0"
|
|
# 16-Dec-2016
|
|
# GMP_VERSION="6.1.2"
|
|
GMP_VERSION="6.1.0"
|
|
|
|
GMP_FOLDER_NAME="gmp-${GMP_VERSION}"
|
|
local gmp_archive="${GMP_FOLDER_NAME}.tar.xz"
|
|
# local gmp_url="https://gmplib.org/download/gmp/${gmp_archive}"
|
|
local gmp_url="https://github.com/gnu-mcu-eclipse/files/raw/master/libs/${gmp_archive}"
|
|
|
|
local gmp_stamp_file_path="${INSTALL_FOLDER_PATH}/stamp-gmp-installed"
|
|
if [ ! -f "${gmp_stamp_file_path}" ]
|
|
then
|
|
|
|
cd "${WORK_FOLDER_PATH}"
|
|
|
|
download_and_extract "${gmp_url}" "${gmp_archive}" "${GMP_FOLDER_NAME}"
|
|
|
|
# Native build.
|
|
(
|
|
mkdir -p "${BUILD_FOLDER_PATH}-native/${GMP_FOLDER_NAME}"
|
|
cd "${BUILD_FOLDER_PATH}-native/${GMP_FOLDER_NAME}"
|
|
|
|
xbb_activate
|
|
|
|
if [ ! -f "config.status" ]
|
|
then
|
|
|
|
echo
|
|
echo "Running native gmp configure..."
|
|
|
|
# ABI is mandatory, otherwise configure fails on 32-bits.
|
|
# (see https://gmplib.org/manual/ABI-and-ISA.html)
|
|
|
|
bash "${WORK_FOLDER_PATH}/${GMP_FOLDER_NAME}/configure" --help
|
|
|
|
export CFLAGS="-Wno-unused-value -Wno-empty-translation-unit -Wno-tautological-compare -Wno-overflow"
|
|
export CPPFLAGS="-I${INSTALL_FOLDER_PATH}-native/include"
|
|
export LDFLAGS="-L${INSTALL_FOLDER_PATH}-native/lib"
|
|
export ABI="${TARGET_BITS}"
|
|
|
|
bash "${WORK_FOLDER_PATH}/${GMP_FOLDER_NAME}/configure" \
|
|
--prefix="${INSTALL_FOLDER_PATH}-native" \
|
|
\
|
|
--build=${BUILD} \
|
|
--host=${BUILD} \
|
|
--target=${BUILD} \
|
|
\
|
|
--disable-shared \
|
|
--enable-static \
|
|
--enable-cxx \
|
|
| tee "${INSTALL_FOLDER_PATH}/configure-native-gmp-output.txt"
|
|
cp "config.log" "${INSTALL_FOLDER_PATH}"/config-native-gmp-log.txt
|
|
|
|
fi
|
|
|
|
echo
|
|
echo "Running native gmp make..."
|
|
|
|
(
|
|
# Build.
|
|
make -j ${JOBS}
|
|
make install-strip
|
|
) | tee "${INSTALL_FOLDER_PATH}/make-gmp-output.txt"
|
|
)
|
|
|
|
# Cross build.
|
|
(
|
|
mkdir -p "${BUILD_FOLDER_PATH}/${GMP_FOLDER_NAME}"
|
|
cd "${BUILD_FOLDER_PATH}/${GMP_FOLDER_NAME}"
|
|
|
|
xbb_activate
|
|
|
|
if [ ! -f "config.status" ]
|
|
then
|
|
|
|
echo
|
|
echo "Running gmp configure..."
|
|
|
|
# ABI is mandatory, otherwise configure fails on 32-bits.
|
|
# (see https://gmplib.org/manual/ABI-and-ISA.html)
|
|
|
|
bash "${WORK_FOLDER_PATH}/${GMP_FOLDER_NAME}/configure" --help
|
|
|
|
export CFLAGS="-Wno-unused-value -Wno-empty-translation-unit -Wno-tautological-compare -Wno-overflow"
|
|
export CPPFLAGS="${EXTRA_CPPFLAGS}"
|
|
export LDFLAGS="${EXTRA_LDFLAGS}"
|
|
export ABI="${TARGET_BITS}"
|
|
|
|
bash "${WORK_FOLDER_PATH}/${GMP_FOLDER_NAME}/configure" \
|
|
--prefix="${INSTALL_FOLDER_PATH}" \
|
|
\
|
|
--build=${BUILD} \
|
|
--host=${HOST} \
|
|
--target=${TARGET} \
|
|
\
|
|
--disable-shared \
|
|
--enable-static \
|
|
--enable-cxx \
|
|
| tee "${INSTALL_FOLDER_PATH}/configure-gmp-output.txt"
|
|
cp "config.log" "${INSTALL_FOLDER_PATH}"/config-gmp-log.txt
|
|
|
|
fi
|
|
|
|
echo
|
|
echo "Running gmp make..."
|
|
|
|
(
|
|
# Build.
|
|
make -j ${JOBS}
|
|
make install-strip
|
|
) | tee "${INSTALL_FOLDER_PATH}/make-gmp-output.txt"
|
|
)
|
|
|
|
touch "${gmp_stamp_file_path}"
|
|
|
|
else
|
|
echo "Library gmp already installed."
|
|
fi
|
|
}
|
|
|
|
function do_libtool()
|
|
{
|
|
# https://www.gnu.org/software/libtool/
|
|
# http://gnu.mirrors.linux.ro/libtool/
|
|
# https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=libtool-git
|
|
|
|
# 2015-02-16
|
|
LIBTOOL_VERSION="2.4.6"
|
|
|
|
LIBTOOL_FOLDER_NAME="libtool-${LIBTOOL_VERSION}"
|
|
local libtool_archive="${LIBTOOL_FOLDER_NAME}.tar.gz"
|
|
# local libtool_url="http://www.mr511.de/software/${libtool_archive}"
|
|
local libtool_url="http://mirrors.nav.ro/gnu/libtool/${libtool_archive}"
|
|
|
|
local libtool_stamp_file_path="${INSTALL_FOLDER_PATH}/stamp-libtool-installed"
|
|
if [ ! -f "${libtool_stamp_file_path}" ]
|
|
then
|
|
|
|
cd "${WORK_FOLDER_PATH}"
|
|
|
|
download_and_extract "${libtool_url}" "${libtool_archive}" "${LIBTOOL_FOLDER_NAME}"
|
|
|
|
# Native build.
|
|
(
|
|
mkdir -p "${BUILD_FOLDER_PATH}-native/${LIBTOOL_FOLDER_NAME}"
|
|
cd "${BUILD_FOLDER_PATH}-native/${LIBTOOL_FOLDER_NAME}"
|
|
|
|
xbb_activate
|
|
|
|
if [ ! -f "config.status" ]
|
|
then
|
|
|
|
echo
|
|
echo "Running native libtool configure..."
|
|
|
|
bash "${WORK_FOLDER_PATH}/${LIBTOOL_FOLDER_NAME}/configure" --help
|
|
|
|
export CFLAGS="${EXTRA_CFLAGS}"
|
|
export CPPFLAGS="-I${INSTALL_FOLDER_PATH}-native/include"
|
|
export LDFLAGS="-L${INSTALL_FOLDER_PATH}-native/lib"
|
|
|
|
bash "${WORK_FOLDER_PATH}/${LIBTOOL_FOLDER_NAME}/configure" \
|
|
--prefix="${INSTALL_FOLDER_PATH}-native" \
|
|
\
|
|
--build=${BUILD} \
|
|
--host=${BUILD} \
|
|
--target=${BUILD} \
|
|
\
|
|
--disable-shared \
|
|
--enable-static \
|
|
--disable-nls \
|
|
--disable-rpath \
|
|
| tee "${INSTALL_FOLDER_PATH}/configure-native-libtool-output.txt"
|
|
cp "config.log" "${INSTALL_FOLDER_PATH}"/config-native-libtool-log.txt
|
|
|
|
fi
|
|
|
|
echo
|
|
echo "Running native libtool make..."
|
|
|
|
(
|
|
# Build.
|
|
make -j ${JOBS}
|
|
make install-strip
|
|
) | tee "${INSTALL_FOLDER_PATH}/make-native-libtool-output.txt"
|
|
)
|
|
|
|
# Cross build.
|
|
(
|
|
mkdir -p "${BUILD_FOLDER_PATH}/${LIBTOOL_FOLDER_NAME}"
|
|
cd "${BUILD_FOLDER_PATH}/${LIBTOOL_FOLDER_NAME}"
|
|
|
|
xbb_activate
|
|
|
|
if [ ! -f "config.status" ]
|
|
then
|
|
|
|
echo
|
|
echo "Running libtool configure..."
|
|
|
|
bash "${WORK_FOLDER_PATH}/${LIBTOOL_FOLDER_NAME}/configure" --help
|
|
|
|
export CFLAGS="${EXTRA_CFLAGS}"
|
|
export CPPFLAGS="${EXTRA_CPPFLAGS}"
|
|
export LDFLAGS="${EXTRA_LDFLAGS}"
|
|
|
|
bash "${WORK_FOLDER_PATH}/${LIBTOOL_FOLDER_NAME}/configure" \
|
|
--prefix="${INSTALL_FOLDER_PATH}" \
|
|
\
|
|
--build=${BUILD} \
|
|
--host=${HOST} \
|
|
--target=${TARGET} \
|
|
\
|
|
--disable-shared \
|
|
--enable-static \
|
|
--disable-nls \
|
|
--disable-rpath \
|
|
| tee "${INSTALL_FOLDER_PATH}/configure-libtool-output.txt"
|
|
cp "config.log" "${INSTALL_FOLDER_PATH}"/config-libtool-log.txt
|
|
|
|
fi
|
|
|
|
echo
|
|
echo "Running libtool make..."
|
|
|
|
(
|
|
# Build.
|
|
make -j ${JOBS}
|
|
make install-strip
|
|
) | tee "${INSTALL_FOLDER_PATH}/make-libtool-output.txt"
|
|
)
|
|
|
|
touch "${libtool_stamp_file_path}"
|
|
|
|
else
|
|
echo "Library libtool already installed."
|
|
fi
|
|
}
|
|
|
|
function do_libunistring()
|
|
{
|
|
# https://www.gnu.org/software/libunistring/
|
|
# https://ftp.gnu.org/gnu/libunistring/
|
|
|
|
# 2018-02-28
|
|
LIBUNISTRING_VERSION="0.9.9"
|
|
|
|
LIBUNISTRING_FOLDER_NAME="libunistring-${LIBUNISTRING_VERSION}"
|
|
local libunistring_archive="${LIBUNISTRING_FOLDER_NAME}.tar.xz"
|
|
local libunistring_url="http://ftp.gnu.org/gnu/libunistring/${libunistring_archive}"
|
|
|
|
local libunistring_stamp_file_path="${INSTALL_FOLDER_PATH}/stamp-libunistring-installed"
|
|
if [ ! -f "${libunistring_stamp_file_path}" ]
|
|
then
|
|
|
|
cd "${WORK_FOLDER_PATH}"
|
|
|
|
download_and_extract "${libunistring_url}" "${libunistring_archive}" "${LIBUNISTRING_FOLDER_NAME}"
|
|
|
|
# Native build.
|
|
(
|
|
mkdir -p "${BUILD_FOLDER_PATH}-native/${LIBUNISTRING_FOLDER_NAME}"
|
|
cd "${BUILD_FOLDER_PATH}-native/${LIBUNISTRING_FOLDER_NAME}"
|
|
|
|
xbb_activate
|
|
|
|
if [ ! -f "config.status" ]
|
|
then
|
|
|
|
echo
|
|
echo "Running native libunistring configure..."
|
|
|
|
bash "${WORK_FOLDER_PATH}/${LIBUNISTRING_FOLDER_NAME}/configure" --help
|
|
|
|
export CFLAGS="${EXTRA_CFLAGS} -Wno-pointer-to-int-cast"
|
|
export CPPFLAGS="-I${INSTALL_FOLDER_PATH}-native/include"
|
|
export LDFLAGS="-L${INSTALL_FOLDER_PATH}-native/lib"
|
|
|
|
bash "${WORK_FOLDER_PATH}/${LIBUNISTRING_FOLDER_NAME}/configure" \
|
|
--prefix="${INSTALL_FOLDER_PATH}-native" \
|
|
\
|
|
--build=${BUILD} \
|
|
--host=${BUILD} \
|
|
--target=${BUILD} \
|
|
\
|
|
--disable-shared \
|
|
--enable-static \
|
|
| tee "${INSTALL_FOLDER_PATH}/configure-native-libunistring-output.txt"
|
|
cp "config.log" "${INSTALL_FOLDER_PATH}"/config-native-libunistring-log.txt
|
|
|
|
fi
|
|
|
|
echo
|
|
echo "Running native libunistring make..."
|
|
|
|
(
|
|
# Build.
|
|
make -j ${JOBS}
|
|
make install-strip
|
|
) | tee "${INSTALL_FOLDER_PATH}/make-native-libunistring-output.txt"
|
|
)
|
|
|
|
# Cross build.
|
|
(
|
|
mkdir -p "${BUILD_FOLDER_PATH}/${LIBUNISTRING_FOLDER_NAME}"
|
|
cd "${BUILD_FOLDER_PATH}/${LIBUNISTRING_FOLDER_NAME}"
|
|
|
|
xbb_activate
|
|
|
|
if [ ! -f "config.status" ]
|
|
then
|
|
|
|
echo
|
|
echo "Running libunistring configure..."
|
|
|
|
bash "${WORK_FOLDER_PATH}/${LIBUNISTRING_FOLDER_NAME}/configure" --help
|
|
|
|
export CFLAGS="${EXTRA_CFLAGS} -Wno-pointer-to-int-cast"
|
|
export CPPFLAGS="${EXTRA_CPPFLAGS}"
|
|
export LDFLAGS="${EXTRA_LDFLAGS_LIB}"
|
|
|
|
bash "${WORK_FOLDER_PATH}/${LIBUNISTRING_FOLDER_NAME}/configure" \
|
|
--prefix="${INSTALL_FOLDER_PATH}" \
|
|
\
|
|
--build=${BUILD} \
|
|
--host=${HOST} \
|
|
--target=${TARGET} \
|
|
\
|
|
--disable-shared \
|
|
--enable-static \
|
|
| tee "${INSTALL_FOLDER_PATH}/configure-libunistring-output.txt"
|
|
cp "config.log" "${INSTALL_FOLDER_PATH}"/config-libunistring-log.txt
|
|
|
|
fi
|
|
|
|
echo
|
|
echo "Running libunistring make..."
|
|
|
|
(
|
|
# Build.
|
|
make -j ${JOBS}
|
|
make install-strip
|
|
) | tee "${INSTALL_FOLDER_PATH}/make-libunistring-output.txt"
|
|
)
|
|
|
|
touch "${libunistring_stamp_file_path}"
|
|
|
|
else
|
|
echo "Library libunistring already installed."
|
|
fi
|
|
}
|
|
|
|
function do_libffi()
|
|
{
|
|
# https://sourceware.org/libffi/
|
|
# https://sourceware.org/pub/libffi/
|
|
# https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=libffi-git
|
|
|
|
LIBFFI_VERSION="3.2.1"
|
|
|
|
LIBFFI_FOLDER_NAME="libffi-${LIBFFI_VERSION}"
|
|
local libffi_archive="${LIBFFI_FOLDER_NAME}.tar.gz"
|
|
|
|
# local libffi_url="http://isl.gforge.inria.fr/${libffi_archive}"
|
|
local libffi_url="https://sourceware.org/pub/libffi/${libffi_archive}"
|
|
|
|
local libffi_stamp_file_path="${INSTALL_FOLDER_PATH}/stamp-libffi-installed"
|
|
if [ ! -f "${libffi_stamp_file_path}" ]
|
|
then
|
|
|
|
cd "${WORK_FOLDER_PATH}"
|
|
|
|
download_and_extract "${libffi_url}" "${libffi_archive}" "${LIBFFI_FOLDER_NAME}"
|
|
|
|
# Native build.
|
|
(
|
|
mkdir -p "${BUILD_FOLDER_PATH}-native/${LIBFFI_FOLDER_NAME}"
|
|
cd "${BUILD_FOLDER_PATH}-native/${LIBFFI_FOLDER_NAME}"
|
|
|
|
xbb_activate
|
|
|
|
if [ ! -f "config.status" ]
|
|
then
|
|
|
|
echo
|
|
echo "Running native libffi configure..."
|
|
|
|
bash "${WORK_FOLDER_PATH}/${LIBFFI_FOLDER_NAME}/configure" --help
|
|
|
|
export CFLAGS="${EXTRA_CFLAGS}"
|
|
export CPPFLAGS="-I${INSTALL_FOLDER_PATH}-native/include"
|
|
export LDFLAGS="-L${INSTALL_FOLDER_PATH}-native/lib"
|
|
|
|
bash "${WORK_FOLDER_PATH}/${LIBFFI_FOLDER_NAME}/configure" \
|
|
--prefix="${INSTALL_FOLDER_PATH}-native" \
|
|
\
|
|
--build=${BUILD} \
|
|
--host=${BUILD} \
|
|
--target=${BUILD} \
|
|
\
|
|
--disable-shared \
|
|
--enable-static \
|
|
--disable-nls \
|
|
| tee "${INSTALL_FOLDER_PATH}"/configure-native-libffi-output.txt
|
|
cp "config.log" "${INSTALL_FOLDER_PATH}"/config-native-libffi-log.txt
|
|
|
|
fi
|
|
|
|
echo
|
|
echo "Running native libffi make..."
|
|
|
|
(
|
|
# Build.
|
|
make -j ${JOBS}
|
|
make install-strip
|
|
) | tee "${INSTALL_FOLDER_PATH}/make-native-libffi-output.txt"
|
|
)
|
|
|
|
# Cross build.
|
|
(
|
|
mkdir -p "${BUILD_FOLDER_PATH}/${LIBFFI_FOLDER_NAME}"
|
|
cd "${BUILD_FOLDER_PATH}/${LIBFFI_FOLDER_NAME}"
|
|
|
|
xbb_activate
|
|
|
|
if [ ! -f "config.status" ]
|
|
then
|
|
|
|
echo
|
|
echo "Running libffi configure..."
|
|
|
|
bash "${WORK_FOLDER_PATH}/${LIBFFI_FOLDER_NAME}/configure" --help
|
|
|
|
export CFLAGS="${EXTRA_CFLAGS}"
|
|
export CPPFLAGS="${EXTRA_CPPFLAGS}"
|
|
export LDFLAGS="${EXTRA_LDFLAGS_LIB}"
|
|
|
|
bash "${WORK_FOLDER_PATH}/${LIBFFI_FOLDER_NAME}/configure" \
|
|
--prefix="${INSTALL_FOLDER_PATH}" \
|
|
\
|
|
--build=${BUILD} \
|
|
--host=${HOST} \
|
|
--target=${TARGET} \
|
|
\
|
|
--disable-shared \
|
|
--enable-static \
|
|
| tee "${INSTALL_FOLDER_PATH}"/configure-libffi-output.txt
|
|
cp "config.log" "${INSTALL_FOLDER_PATH}"/config-libffi-log.txt
|
|
|
|
fi
|
|
|
|
echo
|
|
echo "Running libffi make..."
|
|
|
|
(
|
|
# Build.
|
|
make -j ${JOBS}
|
|
make install-strip
|
|
) | tee "${INSTALL_FOLDER_PATH}/make-libffi-output.txt"
|
|
)
|
|
|
|
touch "${libffi_stamp_file_path}"
|
|
|
|
else
|
|
echo "Library libffi already installed."
|
|
fi
|
|
}
|
|
|
|
function do_bdwgc()
|
|
{
|
|
# http://www.hboehm.info/gc/
|
|
# http://www.hboehm.info/gc/gc_source/
|
|
|
|
BDWGC_VERSION="7.6.4"
|
|
|
|
BDWGC_FOLDER_NAME="gc-${BDWGC_VERSION}"
|
|
local bdwgc_archive="${BDWGC_FOLDER_NAME}.tar.gz"
|
|
|
|
local bdwgc_url="http://www.hboehm.info/gc/gc_source/${bdwgc_archive}"
|
|
|
|
LIBATOMIC_VERSION="7.6.2"
|
|
LIBATOMIC_FOLDER_NAME="libatomic_ops-${LIBATOMIC_VERSION}"
|
|
local libatomic_archive="${LIBATOMIC_FOLDER_NAME}.tar.gz"
|
|
|
|
local libatomic_url="http://www.hboehm.info/gc/gc_source/${libatomic_archive}"
|
|
|
|
local bdwgc_stamp_file_path="${INSTALL_FOLDER_PATH}/stamp-bdwgc-installed"
|
|
if [ ! -f "${bdwgc_stamp_file_path}" ]
|
|
then
|
|
|
|
cd "${WORK_FOLDER_PATH}"
|
|
|
|
download_and_extract "${bdwgc_url}" "${bdwgc_archive}" "${BDWGC_FOLDER_NAME}"
|
|
download_and_extract "${libatomic_url}" "${libatomic_archive}" "${LIBATOMIC_FOLDER_NAME}"
|
|
|
|
cd "${WORK_FOLDER_PATH}/${BDWGC_FOLDER_NAME}"
|
|
if [ ! -d libatomic_ops ]
|
|
then
|
|
ln -s "${WORK_FOLDER_PATH}/${LIBATOMIC_FOLDER_NAME}" libatomic_ops
|
|
fi
|
|
|
|
(
|
|
xbb_activate
|
|
autoreconf -vif
|
|
automake --add-missing
|
|
)
|
|
|
|
# Native build.
|
|
(
|
|
mkdir -p "${BUILD_FOLDER_PATH}-native/${BDWGC_FOLDER_NAME}"
|
|
cd "${BUILD_FOLDER_PATH}-native/${BDWGC_FOLDER_NAME}"
|
|
|
|
xbb_activate
|
|
|
|
if [ ! -f "config.status" ]
|
|
then
|
|
|
|
echo
|
|
echo "Running native bdwgc configure..."
|
|
|
|
bash "${WORK_FOLDER_PATH}/${BDWGC_FOLDER_NAME}/configure" --help
|
|
|
|
export CFLAGS="${EXTRA_CFLAGS}"
|
|
export CPPFLAGS="-I${INSTALL_FOLDER_PATH}-native/include"
|
|
export LDFLAGS="-L${INSTALL_FOLDER_PATH}-native/lib"
|
|
|
|
bash "${WORK_FOLDER_PATH}/${BDWGC_FOLDER_NAME}/configure" \
|
|
--prefix="${INSTALL_FOLDER_PATH}-native" \
|
|
\
|
|
--build=${BUILD} \
|
|
--host=${BUILD} \
|
|
--target=${BUILD} \
|
|
\
|
|
--disable-shared \
|
|
--enable-static \
|
|
--disable-nls \
|
|
| tee "${INSTALL_FOLDER_PATH}/configure-native-bdwgc-output.txt"
|
|
cp "config.log" "${INSTALL_FOLDER_PATH}"/config-native-bdwgc-log.txt
|
|
|
|
fi
|
|
|
|
echo
|
|
echo "Running native bdwgc make..."
|
|
|
|
(
|
|
# Build.
|
|
make -j ${JOBS}
|
|
make install-strip
|
|
) | tee "${INSTALL_FOLDER_PATH}/make-native-bdwgc-output.txt"
|
|
)
|
|
|
|
# Cross build.
|
|
(
|
|
mkdir -p "${BUILD_FOLDER_PATH}/${BDWGC_FOLDER_NAME}"
|
|
cd "${BUILD_FOLDER_PATH}/${BDWGC_FOLDER_NAME}"
|
|
|
|
xbb_activate
|
|
|
|
if [ ! -f "config.status" ]
|
|
then
|
|
|
|
echo
|
|
echo "Running bdwgc configure..."
|
|
|
|
bash "${WORK_FOLDER_PATH}/${BDWGC_FOLDER_NAME}/configure" --help
|
|
|
|
export CFLAGS="${EXTRA_CFLAGS}"
|
|
export CPPFLAGS="${EXTRA_CPPFLAGS}"
|
|
export LDFLAGS="${EXTRA_LDFLAGS_LIB}"
|
|
|
|
bash "${WORK_FOLDER_PATH}/${BDWGC_FOLDER_NAME}/configure" \
|
|
--prefix="${INSTALL_FOLDER_PATH}" \
|
|
\
|
|
--build=${BUILD} \
|
|
--host=${HOST} \
|
|
--target=${TARGET} \
|
|
\
|
|
--disable-shared \
|
|
--enable-static \
|
|
--disable-nls \
|
|
| tee "${INSTALL_FOLDER_PATH}/configure-bdwgc-output.txt"
|
|
cp "config.log" "${INSTALL_FOLDER_PATH}"/config-bdwgc-log.txt
|
|
|
|
fi
|
|
|
|
echo
|
|
echo "Running bdwgc make..."
|
|
|
|
(
|
|
# Build.
|
|
make -j ${JOBS}
|
|
make install-strip
|
|
) | tee "${INSTALL_FOLDER_PATH}/make-bdwgc-output.txt"
|
|
)
|
|
|
|
touch "${bdwgc_stamp_file_path}"
|
|
|
|
else
|
|
echo "Library bdwgc already installed."
|
|
fi
|
|
}
|
|
|
|
function do_libiconv()
|
|
{
|
|
# https://www.gnu.org/software/libiconv/
|
|
# https://ftp.gnu.org/pub/gnu/libiconv/
|
|
# https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=libiconv
|
|
|
|
# 2011-08-07
|
|
# LIBICONV_VERSION="1.14"
|
|
# 2017-02-02
|
|
# LIBICONV_VERSION="1.15"
|
|
LIBICONV_VERSION="1.14"
|
|
|
|
LIBICONV_FOLDER_NAME="libiconv-${LIBICONV_VERSION}"
|
|
local libiconv_archive="${LIBICONV_FOLDER_NAME}.tar.gz"
|
|
local libiconv_url="https://ftp.gnu.org/pub/gnu/libiconv/${libiconv_archive}"
|
|
|
|
local libiconv_stamp_file_path="${INSTALL_FOLDER_PATH}/stamp-libiconv-installed"
|
|
if [ ! -f "${libiconv_stamp_file_path}" ]
|
|
then
|
|
|
|
cd "${WORK_FOLDER_PATH}"
|
|
|
|
download_and_extract "${libiconv_url}" "${libiconv_archive}" "${LIBICONV_FOLDER_NAME}"
|
|
|
|
# Native build.
|
|
(
|
|
mkdir -p "${BUILD_FOLDER_PATH}-native/${LIBICONV_FOLDER_NAME}"
|
|
cd "${BUILD_FOLDER_PATH}-native/${LIBICONV_FOLDER_NAME}"
|
|
|
|
xbb_activate
|
|
|
|
if [ ! -f "config.status" ]
|
|
then
|
|
|
|
echo
|
|
echo "Running native libiconv configure..."
|
|
|
|
bash "${WORK_FOLDER_PATH}/${LIBICONV_FOLDER_NAME}/configure" --help
|
|
|
|
# -fgnu89-inline fixes "undefined reference to `aliases2_lookup'"
|
|
# https://savannah.gnu.org/bugs/?47953
|
|
export CFLAGS="${EXTRA_CFLAGS} -fgnu89-inline -Wno-tautological-compare -Wno-parentheses-equality -Wno-static-in-inline -Wno-pointer-to-int-cast"
|
|
export CPPFLAGS="-I${INSTALL_FOLDER_PATH}-native/include"
|
|
export LDFLAGS="-L${INSTALL_FOLDER_PATH}-native/lib"
|
|
|
|
bash "${WORK_FOLDER_PATH}/${LIBICONV_FOLDER_NAME}/configure" \
|
|
--prefix="${INSTALL_FOLDER_PATH}-native" \
|
|
\
|
|
--build=${BUILD} \
|
|
--host=${BUILD} \
|
|
--target=${BUILD} \
|
|
\
|
|
--disable-shared \
|
|
--enable-static \
|
|
--disable-nls \
|
|
| tee "${INSTALL_FOLDER_PATH}/configure-native-libiconv-output.txt"
|
|
cp "config.log" "${INSTALL_FOLDER_PATH}"/config-native-libiconv-log.txt
|
|
|
|
fi
|
|
|
|
echo
|
|
echo "Running native libiconv make..."
|
|
|
|
(
|
|
# Build.
|
|
make -j ${JOBS}
|
|
make install-strip
|
|
) | tee "${INSTALL_FOLDER_PATH}/make-native-libiconv-output.txt"
|
|
)
|
|
|
|
# Cross build.
|
|
(
|
|
mkdir -p "${BUILD_FOLDER_PATH}/${LIBICONV_FOLDER_NAME}"
|
|
cd "${BUILD_FOLDER_PATH}/${LIBICONV_FOLDER_NAME}"
|
|
|
|
xbb_activate
|
|
|
|
if [ ! -f "config.status" ]
|
|
then
|
|
|
|
echo
|
|
echo "Running libiconv configure..."
|
|
|
|
bash "${WORK_FOLDER_PATH}/${LIBICONV_FOLDER_NAME}/configure" --help
|
|
|
|
# -fgnu89-inline fixes "undefined reference to `aliases2_lookup'"
|
|
# https://savannah.gnu.org/bugs/?47953
|
|
export CFLAGS="${EXTRA_CFLAGS} -fgnu89-inline -Wno-tautological-compare -Wno-parentheses-equality -Wno-static-in-inline -Wno-pointer-to-int-cast"
|
|
export CPPFLAGS="${EXTRA_CPPFLAGS}"
|
|
export LDFLAGS="${EXTRA_LDFLAGS}"
|
|
|
|
bash "${WORK_FOLDER_PATH}/${LIBICONV_FOLDER_NAME}/configure" \
|
|
--prefix="${INSTALL_FOLDER_PATH}" \
|
|
\
|
|
--build=${BUILD} \
|
|
--host=${HOST} \
|
|
--target=${TARGET} \
|
|
\
|
|
--disable-shared \
|
|
--enable-static \
|
|
--disable-nls \
|
|
| tee "${INSTALL_FOLDER_PATH}/configure-libiconv-output.txt"
|
|
cp "config.log" "${INSTALL_FOLDER_PATH}"/config-libiconv-log.txt
|
|
|
|
fi
|
|
|
|
echo
|
|
echo "Running libiconv make..."
|
|
|
|
(
|
|
# Build.
|
|
make -j ${JOBS}
|
|
make install-strip
|
|
) | tee "${INSTALL_FOLDER_PATH}/make-libiconv-output.txt"
|
|
)
|
|
|
|
touch "${libiconv_stamp_file_path}"
|
|
|
|
else
|
|
echo "Library libiconv already installed."
|
|
fi
|
|
}
|
|
|
|
function do_guile()
|
|
{
|
|
# https://www.gnu.org/software/guile/
|
|
# https://ftp.gnu.org/gnu/guile/
|
|
# https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=guile-git
|
|
|
|
# 2017-02-13
|
|
# make searches for 2.0 or 1.8
|
|
GUILE_VERSION="2.0.14"
|
|
# 2017-12-01
|
|
# GUILE_VERSION="2.2.3"
|
|
|
|
GUILE_FOLDER_NAME="guile-${GUILE_VERSION}"
|
|
# local guile_archive="${GUILE_FOLDER_NAME}.tar.xz"
|
|
# local guile_url="https://ftp.gnu.org/gnu/guile/${guile_archive}"
|
|
|
|
MSYS2_GUILE_PACK_URL_BASE="http://sourceforge.net/projects/msys2/files"
|
|
|
|
# http://sourceforge.net/projects/msys2/files/REPOS/MSYS2/Sources/
|
|
# https://sourceforge.net/projects/msys2/files/REPOS/MSYS2/Sources/guile-2.0.14-1.src.tar.gz/download
|
|
|
|
MSYS2_GUILE_VERSION_RELEASE="${GUILE_VERSION}-1"
|
|
|
|
MSYS2_GUILE_FOLDER_NAME="guile-${MSYS2_GUILE_VERSION_RELEASE}"
|
|
local msys2_guile_archive="${MSYS2_GUILE_FOLDER_NAME}.src.tar.gz"
|
|
local msys2_guile_url="${MSYS2_GUILE_PACK_URL_BASE}/REPOS/MSYS2/Sources/${msys2_guile_archive}"
|
|
local guile_archive="${GUILE_FOLDER_NAME}.tar.gz"
|
|
|
|
local guile_stamp_file_path="${INSTALL_FOLDER_PATH}/stamp-guile-installed"
|
|
if [ ! -f "${guile_stamp_file_path}" ]
|
|
then
|
|
|
|
cd "${WORK_FOLDER_PATH}"
|
|
|
|
# download_and_extract "${guile_url}" "${guile_archive}" "${GUILE_FOLDER_NAME}"
|
|
|
|
if [ ! -f "${WORK_FOLDER_PATH}/msys2/guile/${guile_archive}" ]
|
|
then
|
|
(
|
|
mkdir -p "${WORK_FOLDER_PATH}/msys2"
|
|
cd "${WORK_FOLDER_PATH}/msys2"
|
|
|
|
download_and_extract "${msys2_guile_url}" "${msys2_guile_archive}" "guile"
|
|
)
|
|
fi
|
|
|
|
if [ ! -d "${WORK_FOLDER_PATH}/${GUILE_FOLDER_NAME}" ]
|
|
then
|
|
(
|
|
cd "${WORK_FOLDER_PATH}"
|
|
echo
|
|
echo "Unpacking ${guile_archive}..."
|
|
|
|
tar -xvf "${WORK_FOLDER_PATH}/msys2/guile/${guile_archive}"
|
|
|
|
cd "${WORK_FOLDER_PATH}/${GUILE_FOLDER_NAME}"
|
|
|
|
patch -p1 -i "${WORK_FOLDER_PATH}"/msys2/guile/guile-2.2.2-msys2.patch
|
|
|
|
xbb_activate
|
|
|
|
cp -rf build-aux/snippet "${WORK_FOLDER_PATH}"/msys2/guile/snippet
|
|
autoreconf -fi
|
|
cp -f "${WORK_FOLDER_PATH}"/msys2/guile/snippet/*.* build-aux/snippet/
|
|
)
|
|
fi
|
|
|
|
# Native build.
|
|
(
|
|
mkdir -p "${BUILD_FOLDER_PATH}-native/${GUILE_FOLDER_NAME}"
|
|
cd "${BUILD_FOLDER_PATH}-native/${GUILE_FOLDER_NAME}"
|
|
|
|
xbb_activate
|
|
|
|
if [ ! -f "config.status" ]
|
|
then
|
|
|
|
echo
|
|
echo "Running native guile configure..."
|
|
|
|
bash "${WORK_FOLDER_PATH}/${GUILE_FOLDER_NAME}"/configure --help
|
|
|
|
export CFLAGS="${EXTRA_CFLAGS} -Wno-implicit-fallthrough -Wno-unused-but-set-variable -Wno-shift-count-overflow"
|
|
export CPPFLAGS="-I${INSTALL_FOLDER_PATH}-native/include"
|
|
export LDFLAGS="-L${INSTALL_FOLDER_PATH}-native/lib"
|
|
# Without it, two GC definitions will have conflicting defs.
|
|
export LIBS="-lpthread"
|
|
export PKG_CONFIG_LIBDIR="${INSTALL_FOLDER_PATH}-native"/lib/pkgconfig
|
|
|
|
bash "${WORK_FOLDER_PATH}/${GUILE_FOLDER_NAME}"/configure \
|
|
--prefix="${INSTALL_FOLDER_PATH}-native" \
|
|
\
|
|
--build=${BUILD} \
|
|
--host=${BUILD} \
|
|
--target=${BUILD} \
|
|
\
|
|
--disable-shared \
|
|
--enable-static \
|
|
\
|
|
--disable-rpath \
|
|
--disable-nls \
|
|
--disable-error-on-warning \
|
|
--with-threads \
|
|
--with-libiconv-prefix="${INSTALL_FOLDER_PATH}-native" \
|
|
--with-libunistring-prefix="${INSTALL_FOLDER_PATH}-native" \
|
|
| tee "${INSTALL_FOLDER_PATH}"/configure-native-guile-output.txt
|
|
cp "config.log" "${INSTALL_FOLDER_PATH}"/config-native-guile-log.txt
|
|
|
|
fi
|
|
|
|
echo
|
|
echo "Running native guile make..."
|
|
|
|
(
|
|
# Build.
|
|
make -j ${JOBS}
|
|
make install-strip
|
|
) | tee "${INSTALL_FOLDER_PATH}"/make-native-guile-output.txt
|
|
)
|
|
|
|
# Cross build.
|
|
(
|
|
mkdir -p "${BUILD_FOLDER_PATH}/${GUILE_FOLDER_NAME}"
|
|
cd "${BUILD_FOLDER_PATH}/${GUILE_FOLDER_NAME}"
|
|
|
|
xbb_activate
|
|
|
|
if [ ! -f "config.status" ]
|
|
then
|
|
|
|
echo
|
|
echo "Running guile configure..."
|
|
|
|
bash "${WORK_FOLDER_PATH}/${GUILE_FOLDER_NAME}/configure" --help
|
|
|
|
export CFLAGS="${EXTRA_CFLAGS} -Wno-implicit-fallthrough -Wno-unused-but-set-variable -Wno-shift-count-overflow -Wno-implicit-function-declaration -Wno-return-type -Wno-unused-function -Wno-pointer-to-int-cast"
|
|
export CPPFLAGS="${EXTRA_CPPFLAGS}"
|
|
export LDFLAGS="${EXTRA_LDFLAGS}"
|
|
export GUILE_FOR_BUILD="${INSTALL_FOLDER_PATH}-native"/bin/guile
|
|
|
|
# Config inspired from msys2, but with threads, without nls.
|
|
# --disable-networking due to missing netinet/tcp.h
|
|
bash "${WORK_FOLDER_PATH}/${GUILE_FOLDER_NAME}/configure" \
|
|
--prefix="${INSTALL_FOLDER_PATH}" \
|
|
\
|
|
--build=${BUILD} \
|
|
--host=${HOST} \
|
|
--target=${TARGET} \
|
|
\
|
|
--disable-shared \
|
|
--enable-static \
|
|
\
|
|
--disable-nls \
|
|
--with-threads \
|
|
\
|
|
--disable-debug-malloc \
|
|
--disable-guile-debug \
|
|
--disable-error-on-warning \
|
|
--disable-rpath \
|
|
--enable-deprecated \
|
|
--enable-networking \
|
|
--enable-posix \
|
|
--enable-regex \
|
|
--with-modules \
|
|
\
|
|
| tee "${INSTALL_FOLDER_PATH}/configure-guile-output.txt"
|
|
cp "config.log" "${INSTALL_FOLDER_PATH}"/config-guile-log.txt
|
|
|
|
fi
|
|
|
|
echo
|
|
echo "Running guile make..."
|
|
|
|
(
|
|
# Build.
|
|
make -j ${JOBS}
|
|
make install-strip
|
|
) | tee "${INSTALL_FOLDER_PATH}/make-guile-output.txt"
|
|
)
|
|
|
|
touch "${guile_stamp_file_path}"
|
|
|
|
else
|
|
echo "Library guile already installed."
|
|
fi
|
|
}
|
|
|
|
# -----------------------------------------------------------------------------
|