# # 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 -patch; fi; if ! is_build_script_done "${PKG_NAME}" patch "${_restart_at}"; then patch -b -d "${WORKDIR}" -p0 < "${MIDIPIX_BUILD_PWD}/patches/gcc.local.patch"; set_build_script_done "${PKG_NAME}" patch -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) 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