#
# set -o errexit -o noglob are assumed.
# Order: stage1, runtime, libstdcpp_v3, full, native
# Order: stage1_x86_64_w64_mingw32, native_x86_64_w64_mingw32
#
pkgp_gcc_setup_env() {
local __;
export MAKE="make LIBTOOL=slibtool";
export cbb_ldflags_for_target=--sysroot="${PKG_PREFIX}" \
cbb_sysroot_for_libgcc="${PKG_PREFIX}" \
cbb_target="${PKG_TARGET}";
case "${PKG_NAME}" in
gcc_stage1)
export cbb_neutral_libiberty=no \
cbb_xgcc_for_specs="${WORKDIR}/${PKG_BUILD_DIR}/gcc/xgcc"; ;;
gcc_stage1_cross_x86_64_w64_mingw32)
export cbb_neutral_libiberty=no \
cbb_xgcc_for_specs="${WORKDIR}/${PKG_BUILD_DIR}/gcc/xgcc"; ;;
gcc_stage1_native_x86_64_w64_mingw32)
export cbb_neutral_libiberty=no \
cbb_xgcc_for_specs="${PKG_TARGET}-gcc"; ;;
gcc_native)
export cbb_xgcc_for_specs="${PKG_TARGET}-gcc" \
sysroot_headers_suffix="${PKG_PREFIX}"; ;;
esac;
GCCTARGET_FLAGS="-DIN_TARGET_LIBRARY_BUILD --sysroot=${PKG_PREFIX}";
GCCFLAGS="${CFLAGS:+${CFLAGS} }--include $(readlink -f "${WORKDIR}/cbb-gcc-${1}/libc/cbb-musl-pe.h")";
for __ in CFLAGS CFLAGS_FOR_BUILD CPPFLAGS_FOR_BUILD CXXFLAGS CXXFLAGS_FOR_BUILD; do
export "${__}=${GCCFLAGS}";
done;
for __ in CFLAGS_FOR_TARGET CPPFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET LIBCFLAGS_FOR_TARGET XGCC_FLAGS_FOR_TARGET; do
export "${__}=${GCCTARGET_FLAGS}";
done;
for __ in cbb_cflags_for_stage1 cbb_cflags_for_stage2 cbb_cflags_for_stage3 cbb_cflags_for_stage4; do
export "${__}=${CFLAGS_FOR_BUILD}" ;
done;
export CFLAGS CXXFLAGS CFLAGS_FOR_BUILD CPPFLAGS_FOR_BUILD CXXFLAGS_FOR_BUILD CFLAGS_FOR_TARGET XGCC_FLAGS_FOR_TARGET CPPFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET LIBCFLAGS_FOR_TARGET;
};
pkgp_gcc_configure() {
build_fileop rm "${WORKDIR}/${PKG_BUILD_DIR}";
build_fileop mkdir "${WORKDIR}/${PKG_BUILD_DIR}";
build_fileop cd "${WORKDIR}/${PKG_BUILD_DIR}";
"../cbb-gcc-${PKG_GCC_VERSION}/configure" "${@}"\
--disable-bootstrap \
--disable-libmudflap \
--disable-multilib \
--disable-nls \
--disable-obsolete \
--disable-symvers \
--enable-__cxa_atexit \
--enable-canonical-system-headers \
--enable-debug \
--enable-gnu-indirect-function \
--enable-gnu-unique-object \
--enable-initfini-array \
--enable-languages=c,c++,objc,lto \
--enable-libstdcxx-debug \
--enable-lto \
--enable-multiarch \
--enable-secureplt \
--enable-shared \
--enable-threads=posix \
--target="${PKG_TARGET}" \
--with-fpmath=sse;
set_build_script_done "${PKG_NAME}" configure -build;
};
pkg_gcc_stage1_cross_x86_64_w64_mingw32_all() {
pkg_gcc_stage1_all "${@}";
};
pkg_gcc_stage1_native_x86_64_w64_mingw32_all() {
export AR="${TARGET}-ar";
export CC="${TARGET}-gcc";
export CXX="${TARGET}-g++";
export RANLIB="${TARGET}-ranlib";
pkg_gcc_stage1_all "${@}";
};
pkg_gcc_stage1_all() {
local __ _restart_at="${1}";
case "${PKG_NAME}" in
gcc_stage1)
PKG_GCC_VERSION="${PKG_GCC_STAGE1_VERSION}";
set_build_dir "cbb-gcc-${PKG_GCC_VERSION}" cross;
;;
gcc_stage1_cross_x86_64_w64_mingw32)
PKG_GCC_VERSION="${PKG_GCC_STAGE1_CROSS_X86_64_W64_MINGW32_VERSION}";
set_build_dir "cbb-gcc-${PKG_GCC_VERSION}" cross;
;;
gcc_stage1_native_x86_64_w64_mingw32)
PKG_GCC_VERSION="${PKG_GCC_STAGE1_NATIVE_X86_64_W64_MINGW32_VERSION}";
set_build_dir "cbb-gcc-${PKG_GCC_VERSION}" native;
;;
esac;
# GCC, stage1.
if ! is_build_script_done "${PKG_NAME}" fetch "${_restart_at}"; then
pkg_fetch -git "cbb-gcc-${PKG_GCC_VERSION}=${GITROOT}/cbb/cbb-gcc-${PKG_GCC_VERSION}";
set_build_script_done "${PKG_NAME}" fetch -configure;
fi;
pkgp_gcc_setup_env "${PKG_GCC_VERSION}";
if ! is_build_script_done "${PKG_NAME}" configure "${_restart_at}"; then
build_fileop mkdir "${PKG_PREFIX}/include";
[ \! -d "${PKG_PREFIX}/usr" ] && \
build_fileop ln_symbolic . "${PKG_PREFIX}/usr";
case "${PKG_NAME}" in
gcc_stage1)
pkgp_gcc_configure \
--disable-sjlj-exceptions \
--prefix="${PREFIX}" \
--with-sysroot="${PREFIX}/${PKG_TARGET}"; ;;
gcc_stage1_cross_x86_64_w64_mingw32)
pkgp_gcc_configure \
--enable-sjlj-exceptions \
--prefix="${PREFIX}" \
--with-sysroot="${PREFIX}/${PKG_TARGET}"\
--without-headers; ;;
gcc_stage1_native_x86_64_w64_mingw32)
patch -b -d "${WORKDIR}/cbb-gcc-4.6.4" -p1 < "${MIDIPIX_BUILD_PWD}/patches/${PKG_NAME}.local.patch";
pkgp_gcc_configure \
--build=x86_64-unknown-linux-gnu \
--enable-sjlj-exceptions \
--host=x86_64-nt64-midipix \
--prefix=/ \
--with-elf="${PKG_PREFIX}" \
--with-gmp="${PKG_PREFIX}" \
--with-mpc="${PKG_PREFIX}" \
--with-mpfr="${PKG_PREFIX}" \
--with-sysroot= \
--without-headers; ;;
esac;
else
build_fileop cd "${WORKDIR}/${PKG_BUILD_DIR}";
fi;
if ! is_build_script_done "${PKG_NAME}" build "${_restart_at}"; then
make ${MAKEFLAGS} all-gcc;
set_build_script_done "${PKG_NAME}" build -install;
fi;
if ! is_build_script_done "${PKG_NAME}" install "${_restart_at}"; then
case "${PKG_NAME}" in
gcc_stage1)
make ${MAKEFLAGS} install-gcc; ;;
gcc_stage1_cross_x86_64_w64_mingw32)
make ${MAKEFLAGS} install-gcc; ;;
gcc_stage1_native_x86_64_w64_mingw32)
make ${MAKEFLAGS} "DESTDIR=${PKG_PREFIX}" install-gcc; ;;
esac;
__="$(uname -s)";
if [ "${__#*CYGWIN*}" != "${__}" ]; then
build_fileop ln_symbolic "${PREFIX}/libexec/gcc/${PKG_TARGET}/${PKG_GCC_VERSION}/liblto_plugin.dll.a" \
build_fileop ln_symbolic "${PREFIX}/libexec/gcc/${PKG_TARGET}/${PKG_GCC_VERSION}/liblto_plugin.so";
fi;
set_build_script_done "${PKG_NAME}" install finish;
fi;
exit 0;
};
pkg_gcc_runtime_all() {
local _restart_at="${1}";
export MAKE="make LIBTOOL=slibtool";
set_build_dir "cbb-gcc-${PKG_GCC_RUNTIME_VERSION}" cross;
build_fileop cd "${WORKDIR}/${PKG_BUILD_DIR}";
# GCC, compiler runtime.
if ! is_build_script_done "${PKG_NAME}" build "${_restart_at}"; then
make ${MAKEFLAGS} all-target-libgcc;
set_build_script_done "${PKG_NAME}" build -install;
fi;
if ! is_build_script_done "${PKG_NAME}" install "${_restart_at}"; then
make ${MAKEFLAGS} install-target-libgcc;
set_build_script_done "${PKG_NAME}" install finish;
fi;
exit 0;
};
pkg_gcc_libstdcpp_v3_all() {
local _restart_at="${1}";
export MAKE="make LIBTOOL=slibtool";
set_build_dir "cbb-gcc-${PKG_GCC_LIBSTDCPP_V3_VERSION}" cross;
build_fileop cd "${WORKDIR}/${PKG_BUILD_DIR}";
# GCC, libstdc++-v3.
if ! is_build_script_done "${PKG_NAME}" build "${_restart_at}"; then
make ${MAKEFLAGS} all-target-libstdc++-v3;
set_build_script_done "${PKG_NAME}" build -install;
fi;
if ! is_build_script_done "${PKG_NAME}" install "${_restart_at}"; then
make ${MAKEFLAGS} install-target-libstdc++-v3;
set_build_script_done "${PKG_NAME}" install finish;
fi;
exit 0;
};
pkg_gcc_full_all() {
local _restart_at="${1}";
export MAKE="make LIBTOOL=slibtool";
set_build_dir "cbb-gcc-${PKG_GCC_FULL_VERSION}" cross;
build_fileop cd "${WORKDIR}/${PKG_BUILD_DIR}";
# GCC, everything else.
if ! is_build_script_done "${PKG_NAME}" build "${_restart_at}"; then
make ${MAKEFLAGS};
set_build_script_done "${PKG_NAME}" build -install;
fi;
if ! is_build_script_done "${PKG_NAME}" install "${_restart_at}"; then
make ${MAKEFLAGS} install;
set_build_script_done "${PKG_NAME}" install finish;
fi;
exit 0;
};
pkg_gcc_native_all() {
local _restart_at="${1}" _configure_host;
PKG_GCC_VERSION="${PKG_GCC_NATIVE_VERSION}";
export MAKE="make LIBTOOL=slibtool";
# GCC, native.
set_build_dir "cbb-gcc-${PKG_GCC_VERSION}" native;
pkgp_gcc_setup_env "${PKG_GCC_VERSION}";
if ! is_build_script_done "${PKG_NAME}" configure "${_restart_at}"; then
build_fileop mkdir "${PKG_PREFIX}/${PKG_TARGET}";
if [ \! -d "${PKG_PREFIX}/${PKG_TARGET}/usr" ]; then
build_fileop ln_symbolic . "${PKG_PREFIX}/${PKG_TARGET}/usr";
fi;
if [ "${ARCH}" = nt32 ]; then
_configure_host="i686-nt32-midipix";
else
_configure_host="x86_64-nt64-midipix";
fi;
pkgp_gcc_configure \
--disable-sjlj-exceptions \
--host="${_configure_host}" \
--prefix=/ \
--with-elf="${PKG_PREFIX}" \
--with-gmp="${PKG_PREFIX}" \
--with-mpc="${PKG_PREFIX}" \
--with-mpfr="${PKG_PREFIX}" \
--with-sysroot=;
else
build_fileop cd "${WORKDIR}/${PKG_BUILD_DIR}";
fi;
if ! is_build_script_done "${PKG_NAME}" build "${_restart_at}"; then
make ${MAKEFLAGS} all-gcc;
make ${MAKEFLAGS} all-target-libgcc;
make ${MAKEFLAGS} all-target-libstdc++-v3;
make ${MAKEFLAGS} all;
set_build_script_done "${PKG_NAME}" build -install;
fi;
if ! is_build_script_done "${PKG_NAME}" install "${_restart_at}"; then
make ${MAKEFLAGS} "DESTDIR=${PKG_PREFIX}" install;
set_build_script_done "${PKG_NAME}" install finish;
fi;
exit 0;
};
# vim:filetype=sh