| |
| |
| |
| |
| |
| |
| |
| |
| |
| pkgp_gcc_build_dir() { PKG_BUILD_DIR="${1}-${2}-${PKG_TARGET}"; }; |
| pkgp_gcc_state_set() { |
| printf "step unknown %s %s\n" "${PKG_NAME}" "${1}" >&3; |
| ex_pkg_state_set "${PKG_NAME}" ${1} -${2}; |
| }; |
| |
| pkgp_gcc_configure() { |
| if ! rtl_fileop rm "${PKG_BASE_DIR}/${PKG_BUILD_DIR}" \ |
| || ! rtl_fileop mkdir "${PKG_BASE_DIR}/${PKG_BUILD_DIR}" \ |
| || ! rtl_fileop cd "${PKG_BASE_DIR}/${PKG_BUILD_DIR}" \ |
| || ! "../cbb-gcc-${PKG_VERSION}/configure" "${@}" \ |
| --disable-bootstrap \ |
| --disable-libmudflap \ |
| --disable-multilib \ |
| --disable-nls \ |
| --disable-obsolete \ |
| --disable-symvers \ |
| --enable-canonical-system-headers \ |
| --enable-__cxa_atexit \ |
| --enable-debug \ |
| --enable-gnu-indirect-function \ |
| --enable-gnu-unique-object \ |
| --enable-initfini-array \ |
| --enable-languages=c,c++,fortran,objc,lto \ |
| --enable-libstdcxx-debug \ |
| --enable-lto \ |
| --enable-multiarch \ |
| --enable-secureplt \ |
| --enable-shared \ |
| --enable-threads=posix \ |
| --target="${PKG_TARGET}" \ |
| --with-fpmath=sse; then |
| return 1; |
| else |
| pkgp_gcc_state_set "configure" -"build"; |
| fi; |
| }; |
| |
| pkgp_gcc_setup_env() { |
| local _vname=""; |
| for _vname in CFLAGS CFLAGS_FOR_BUILD CPPFLAGS_FOR_BUILD \ |
| CXXFLAGS CXXFLAGS_FOR_BUILD; do |
| export "${_vname}=${GCCFLAGS}"; |
| done; |
| for _vname in CFLAGS_FOR_TARGET CPPFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET \ |
| LIBCFLAGS_FOR_TARGET XGCC_FLAGS_FOR_TARGET; do |
| export "${_vname}=${GCCTARGET_FLAGS}"; |
| done; |
| for _vname in cbb_cflags_for_stage1 cbb_cflags_for_stage2 \ |
| cbb_cflags_for_stage3 cbb_cflags_for_stage4; do |
| export "${_vname}=${CFLAGS_FOR_BUILD}" ; |
| done; |
| }; |
| |
| pkgp_gcc_setup_vars() { |
| local _unwind_midipix_h=""; |
| export cbb_target="${PKG_TARGET}" MAKE="make LIBTOOL=slibtool"; |
| _unwind_midipix_h="$(readlink -f "${PKG_BASE_DIR}/cbb-gcc-${PKG_VERSION}/gcc/unwind-midipix.h")"; |
| case "${PKG_NAME}" in |
| gcc_full) |
| GCCTARGET_FLAGS="-DIN_TARGET_LIBRARY_BUILD --sysroot=${PKG_PREFIX}"; |
| GCCTARGET_FLAGS="$(rtl_lconcat "${GCCTARGET_FLAGS}" "--include=${_unwind_midipix_h}")"; |
| GCCTARGET_FLAGS="$(rtl_lconcat "${GCCTARGET_FLAGS}" "-DTARGET_PERSONALITY_FUNCTION")"; |
| GCCTARGET_FLAGS="$(rtl_lconcat "${GCCTARGET_FLAGS}" "-DTARGET_PERSONALITY_FUNCTION_MIDIPIX")"; |
| GCCTARGET_FLAGS="$(rtl_lconcat "${GCCTARGET_FLAGS}" "${DEFAULT_CFLAGS_DEBUG_RUNTIME}")"; |
| export cbb_ldflags_for_target=--sysroot="${PKG_PREFIX}" \ |
| cbb_sysroot_for_libgcc="${PKG_PREFIX}" \ |
| cbb_xgcc_for_specs="${PKG_TARGET}-gcc" \ |
| sysroot_headers_suffix="${PKG_PREFIX}"; ;; |
| gcc_stage1_cross_mingw32) |
| GCCTARGET_FLAGS="-DIN_TARGET_LIBRARY_BUILD --sysroot=${PREFIX_MINGW32} -midata"; |
| export cbb_ldflags_for_target=--sysroot="${PREFIX_MINGW32}" \ |
| cbb_neutral_libiberty=no \ |
| cbb_sysroot_for_libgcc="${PREFIX_MINGW32}" \ |
| cbb_xgcc_for_specs="${PKG_BASE_DIR}/${PKG_BUILD_DIR}/gcc/xgcc"; ;; |
| gcc_stage1_host) |
| GCCTARGET_FLAGS="-DIN_TARGET_LIBRARY_BUILD --sysroot=${PREFIX_CROSS}"; |
| GCCTARGET_FLAGS="$(rtl_lconcat "${GCCTARGET_FLAGS}" "--include=${_unwind_midipix_h}")"; |
| GCCTARGET_FLAGS="$(rtl_lconcat "${GCCTARGET_FLAGS}" "-DTARGET_PERSONALITY_FUNCTION")"; |
| GCCTARGET_FLAGS="$(rtl_lconcat "${GCCTARGET_FLAGS}" "-DTARGET_PERSONALITY_FUNCTION_MIDIPIX")"; |
| GCCTARGET_FLAGS="$(rtl_lconcat "${GCCTARGET_FLAGS}" "${DEFAULT_CFLAGS_DEBUG_RUNTIME}")"; |
| export cbb_ldflags_for_target="--sysroot=${PREFIX_CROSS}" \ |
| cbb_neutral_libiberty="no" \ |
| cbb_sysroot_for_libgcc="${PREFIX_CROSS}" \ |
| cbb_xgcc_for_specs="${PKG_BASE_DIR}/${PKG_BUILD_DIR}/gcc/xgcc" \ |
| LDFLAGS="${PKG_LDFLAGS_CONFIGURE}"; ;; |
| gcc_stage1_native_mingw32) |
| GCCTARGET_FLAGS="-DIN_TARGET_LIBRARY_BUILD --sysroot=${PKG_PREFIX} -midata"; |
| export cbb_ldflags_for_target=--sysroot="${PKG_PREFIX}" \ |
| cbb_neutral_libiberty=no \ |
| cbb_sysroot_for_libgcc="${PKG_PREFIX}" \ |
| cbb_xgcc_for_specs="${PKG_TARGET}-gcc"; ;; |
| esac; |
| GCCFLAGS="$(rtl_lconcat "${PKG_CFLAGS_CONFIGURE}" \ |
| "--include $(readlink -f "${PKG_BASE_DIR}/cbb-gcc-${PKG_VERSION}/libc/cbb-musl-pe.h")")"; |
| }; |
| |
| pkgp_gcc_stage1_all() { |
| local _restart_at="${1}" _rc=0; |
| case "${PKG_NAME}" in |
| gcc_stage1_cross_mingw32) |
| pkgp_gcc_build_dir "cbb-gcc-${PKG_VERSION}" mingw32; ;; |
| gcc_stage1_host) |
| if ! rtl_fileop ln_symbolic . "${PREFIX_CROSS}/usr"\ |
| || ! rtl_fileop mkdir "${PREFIX_CROSS}/usr/include"\ |
| || ! pkgp_gcc_build_dir "cbb-gcc-${PKG_VERSION}" cross; then |
| _rc=1; |
| fi; ;; |
| gcc_stage1_native_mingw32) |
| pkgp_gcc_build_dir "cbb-gcc-${PKG_VERSION}" native; ;; |
| esac; |
| if [ "${_rc}" -ne 0 ]; then |
| return 1; |
| fi; |
| if ! ex_pkg_state_test "${PKG_NAME}" fetch "${_restart_at}"; then |
| rtl_fetch_urls_git "${PKG_BASE_DIR}" "cbb-gcc-${PKG_VERSION}=${PKG_GITROOT}/cbb/cbb-gcc-${PKG_VERSION}" || return 1; |
| pkgp_gcc_state_set "fetch" -"patch"; |
| fi; |
| if ! ex_pkg_state_test "${PKG_NAME}" patch "${_restart_at}"; then |
| if [ -e "${MIDIPIX_BUILD_PWD}/patches/${PKG_NAME}.local.patch" ]; then |
| patch -b -d "${PKG_BASE_DIR}" -p0 < "${MIDIPIX_BUILD_PWD}/patches/${PKG_NAME}.local.patch" || return 1; |
| fi; |
| pkgp_gcc_state_set "patch" -"configure"; |
| fi; |
| pkgp_gcc_setup_vars; pkgp_gcc_setup_env; |
| if ! ex_pkg_state_test "${PKG_NAME}" configure "${_restart_at}"; then |
| case "${PKG_NAME}" in |
| gcc_stage1_cross_mingw32) |
| pkgp_gcc_configure \ |
| --enable-sjlj-exceptions \ |
| --prefix="${PREFIX}" \ |
| --with-gmp="${PREFIX}" \ |
| --with-mpc="${PREFIX}" \ |
| --with-mpfr="${PREFIX}" \ |
| --with-sysroot="${PREFIX_MINGW32}" \ |
| --without-headers; ;; |
| gcc_stage1_host) |
| pkgp_gcc_configure \ |
| --disable-sjlj-exceptions \ |
| --prefix="${PREFIX}" \ |
| --with-gmp="${PREFIX}" \ |
| --with-mpc="${PREFIX}" \ |
| --with-mpfr="${PREFIX}" \ |
| --with-sysroot="${PREFIX_CROSS}"; ;; |
| gcc_stage1_native_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; |
| if [ "${?}" -ne 0 ]; then |
| return 1; |
| fi; |
| else rtl_fileop cd "${PKG_BASE_DIR}/${PKG_BUILD_DIR}" || return 1; |
| fi; |
| if ! ex_pkg_state_test "${PKG_NAME}" build "${_restart_at}"; then |
| make ${PKG_MAKEFLAGS_BUILD} "all-gcc" || return 1; |
| pkgp_gcc_state_set "build" -"install_subdirs"; |
| fi; |
| if ! ex_pkg_state_test "${PKG_NAME}" install_subdirs "${_restart_at}"; then |
| pkg_install_subdirs || return 1; |
| pkgp_gcc_state_set "install_subdirs" -"install_make"; |
| fi; |
| if ! ex_pkg_state_test "${PKG_NAME}" install_make "${_restart_at}"; then |
| case "${PKG_NAME}" in |
| gcc_stage1_cross_mingw32) |
| make ${PKG_MAKEFLAGS_BUILD} "prefix=${PKG_DESTDIR}" "install-gcc"; ;; |
| gcc_stage1_host) |
| make ${PKG_MAKEFLAGS_BUILD} "prefix=${PKG_DESTDIR}" "install-gcc"; ;; |
| gcc_stage1_native_mingw32) |
| make ${PKG_MAKEFLAGS_BUILD} "prefix=${PKG_DESTDIR}" "install-gcc"; ;; |
| esac; |
| if [ "${?}" -ne 0 ]; then |
| return 1; |
| else case "$(uname -s)" in |
| CYGWIN_*) |
| if ! rtl_fileop ln_symbolic "${PKG_DESTDIR}/libexec/gcc/${PKG_TARGET}/${PKG_VERSION}/liblto_plugin.dll.a"\ |
| || ! rtl_fileop ln_symbolic "${PKG_DESTDIR}/libexec/gcc/${PKG_TARGET}/${PKG_VERSION}/liblto_plugin.so"; then |
| return 1; |
| fi; ;; |
| esac; |
| pkgp_gcc_state_set "install_make" -"install"; |
| fi; |
| fi; |
| if ! ex_pkg_state_test "${PKG_NAME}" install "${_restart_at}"; then |
| pkg_install || return 1; |
| pkgp_gcc_state_set "install" -"finish"; |
| fi; |
| }; |
| |
| |
| pkg_gcc_full_all() { |
| local _restart_at="${1}" _configure_host="" _vis_hide="vis_hide=-fvisibility=hidden"; |
| export MAKE="make LIBTOOL=slibtool ${_vis_hide}"; |
| pkgp_gcc_build_dir "cbb-gcc-${PKG_VERSION}" native; |
| if ! ex_pkg_state_test "${PKG_NAME}" fetch "${_restart_at}"; then |
| rtl_fetch_urls_git "${PKG_BASE_DIR}" "cbb-gcc-${PKG_VERSION}=${PKG_GITROOT}/cbb/cbb-gcc-${PKG_VERSION}" || return 1; |
| pkgp_gcc_state_set "fetch" -"patch"; |
| fi; |
| if ! ex_pkg_state_test "${PKG_NAME}" patch "${_restart_at}"; then |
| if [ -e "${MIDIPIX_BUILD_PWD}/patches/${PKG_NAME}.local.patch" ]; then |
| patch -b -d "${PKG_BASE_DIR}" -p0 < "${MIDIPIX_BUILD_PWD}/patches/${PKG_NAME}.local.patch" || return 1; |
| fi; |
| pkgp_gcc_state_set "patch" -"configure"; |
| fi; |
| pkgp_gcc_setup_vars; pkgp_gcc_setup_env; |
| if ! ex_pkg_state_test "${PKG_NAME}" configure "${_restart_at}"; then |
| rtl_fileop mkdir "${PKG_PREFIX}/${PKG_TARGET}" || return 1; |
| if [ \! -d "${PKG_PREFIX}/${PKG_TARGET}/usr" ]; then |
| rtl_fileop ln_symbolic . "${PKG_PREFIX}/${PKG_TARGET}/usr" || return 1; |
| fi; |
| case "${ARCH}" in |
| nt32) _configure_host="i686-nt32-midipix"; ;; |
| nt64) _configure_host="x86_64-nt64-midipix"; ;; |
| esac; |
| 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="" || return 1; |
| else rtl_fileop cd "${PKG_BASE_DIR}/${PKG_BUILD_DIR}" || return 1; |
| fi; |
| if ! ex_pkg_state_test "${PKG_NAME}" build "${_restart_at}"; then |
| if ! make ${PKG_MAKEFLAGS_BUILD} "all-gcc"\ |
| || ! make ${PKG_MAKEFLAGS_BUILD} "all-target-libgcc" ${_vis_hide}\ |
| || ! make ${PKG_MAKEFLAGS_BUILD} "all-target-libstdc++-v3"\ |
| || ! make ${PKG_MAKEFLAGS_BUILD} "all-target-libgfortran"\ |
| || ! make ${PKG_MAKEFLAGS_BUILD} "all"; then |
| return 1; |
| else pkgp_gcc_state_set "build" -"install_subdirs"; |
| fi; |
| fi; |
| if ! ex_pkg_state_test "${PKG_NAME}" install_subdirs "${_restart_at}"; then |
| pkg_install_subdirs || return 1; |
| pkgp_gcc_state_set "install_subdirs" -"install_make"; |
| fi; |
| if ! ex_pkg_state_test "${PKG_NAME}" install_make "${_restart_at}"; then |
| make ${PKG_MAKEFLAGS_BUILD} "prefix=${PKG_DESTDIR}" "install" || return 1; |
| pkgp_gcc_state_set "install_make" -"install"; |
| fi; |
| if ! ex_pkg_state_test "${PKG_NAME}" install "${_restart_at}"; then |
| pkg_install || return 1; pkgp_gcc_state_set "install" "finish"; |
| fi; |
| }; |
| |
| pkg_gcc_full_host_all() { |
| local _restart_at="${1}"; |
| export MAKE="make LIBTOOL=slibtool"; |
| if ! pkgp_gcc_build_dir "cbb-gcc-${PKG_VERSION}" cross\ |
| || ! rtl_fileop cd "${PKG_BASE_DIR}/${PKG_BUILD_DIR}"; then |
| return 1; |
| else if ! ex_pkg_state_test "${PKG_NAME}" build "${_restart_at}"; then |
| make ${PKG_MAKEFLAGS_BUILD} || return 1; |
| pkgp_gcc_state_set "build" -"install_subdirs"; |
| fi; |
| if ! ex_pkg_state_test "${PKG_NAME}" install_subdirs "${_restart_at}"; then |
| pkg_install_subdirs || return 1; |
| pkgp_gcc_state_set "install_subdirs" -"install_make"; |
| fi; |
| if ! ex_pkg_state_test "${PKG_NAME}" install_make "${_restart_at}"; then |
| make ${PKG_MAKEFLAGS_BUILD} "prefix=${PKG_DESTDIR}" "install" || return 1; |
| pkgp_gcc_state_set "install_make" -"install"; |
| fi; |
| if ! ex_pkg_state_test "${PKG_NAME}" install "${_restart_at}"; then |
| pkg_install || return 1; |
| pkgp_gcc_state_set "install" "finish"; |
| fi; |
| fi; |
| }; |
| |
| pkg_gcc_libstdcpp_v3_host_all() { |
| local _restart_at="${1}"; |
| export MAKE="make LIBTOOL=slibtool"; |
| if ! pkgp_gcc_build_dir "cbb-gcc-${PKG_VERSION}" cross\ |
| || ! rtl_fileop cd "${PKG_BASE_DIR}/${PKG_BUILD_DIR}"; then |
| return 1; |
| else if ! ex_pkg_state_test "${PKG_NAME}" build "${_restart_at}"; then |
| make ${PKG_MAKEFLAGS_BUILD} "all-target-libstdc++-v3" || return 1; |
| pkgp_gcc_state_set "build" -"install_subdirs"; |
| fi; |
| if ! ex_pkg_state_test "${PKG_NAME}" install_subdirs "${_restart_at}"; then |
| pkg_install_subdirs || return 1; |
| pkgp_gcc_state_set "install_subdirs" -"install_make"; |
| fi; |
| if ! ex_pkg_state_test "${PKG_NAME}" install_make "${_restart_at}"; then |
| make ${PKG_MAKEFLAGS_BUILD} "prefix=${PKG_DESTDIR}" "install-target-libstdc++-v3" || return 1; |
| pkgp_gcc_state_set "install_make" -"install"; |
| fi; |
| if ! ex_pkg_state_test "${PKG_NAME}" install "${_restart_at}"; then |
| pkg_install || return 1; |
| pkgp_gcc_state_set "install" "finish"; |
| fi; |
| fi; |
| }; |
| |
| pkg_gcc_runtime_host_all() { |
| local _restart_at="${1}" _vis_hide="vis_hide=-fvisibility=hidden"; |
| export MAKE="make LIBTOOL=slibtool ${_vis_hide}"; |
| if ! pkgp_gcc_build_dir "cbb-gcc-${PKG_VERSION}" cross\ |
| || ! rtl_fileop cd "${PKG_BASE_DIR}/${PKG_BUILD_DIR}"; then |
| return 1; |
| else if ! ex_pkg_state_test "${PKG_NAME}" build "${_restart_at}"; then |
| make ${PKG_MAKEFLAGS_BUILD} "all-target-libgcc" ${_vis_hide} || return 1; |
| pkgp_gcc_state_set "build" -"install_subdirs"; |
| fi; |
| if ! ex_pkg_state_test "${PKG_NAME}" install_subdirs "${_restart_at}"; then |
| pkg_install_subdirs || return 1; |
| pkgp_gcc_state_set "install_subdirs" -"install_make"; |
| fi; |
| if ! ex_pkg_state_test "${PKG_NAME}" install_make "${_restart_at}"; then |
| make ${PKG_MAKEFLAGS_BUILD} "prefix=${PKG_DESTDIR}" "install-target-libgcc" || return 1; |
| pkgp_gcc_state_set "install_make" -"install"; |
| fi; |
| if ! ex_pkg_state_test "${PKG_NAME}" install "${_restart_at}"; then |
| pkg_install || return 1; |
| pkgp_gcc_state_set "install" "finish"; |
| fi; |
| fi; |
| }; |
| |
| pkg_gcc_stage1_all() { |
| pkgp_gcc_stage1_all "${@}"; |
| }; |
| |
| pkg_gcc_stage1_cross_mingw32_all() { |
| if ! rtl_fileop ln_symbolic . "${PKG_PREFIX}/x86_64-w64-mingw32/mingw"\ |
| || ! rtl_fileop mkdir "${PKG_DESTDIR}/x86_64-w64-mingw32"\ |
| || ! rtl_fileop ln_symbolic . "${PKG_DESTDIR}/x86_64-w64-mingw32/mingw"\ |
| || ! rtl_fileop mkdir "${PKG_PREFIX}/x86_64-w64-mingw32/include"\ |
| || ! pkgp_gcc_stage1_all "${@}"; then |
| return 1; |
| fi; |
| }; |
| |
| pkg_gcc_stage1_host_all() { |
| pkgp_gcc_stage1_all "${@}"; |
| }; |
| |
| pkg_gcc_stage1_native_mingw32_all() { |
| if ! rtl_fileop ln_symbolic . "${PKG_PREFIX}/x86_64-w64-mingw32/mingw"\ |
| || ! rtl_fileop mkdir "${PKG_DESTDIR}/x86_64-w64-mingw32"\ |
| || ! rtl_fileop ln_symbolic . "${PKG_DESTDIR}/x86_64-w64-mingw32/mingw"\ |
| || ! rtl_fileop mkdir "${PKG_PREFIX}/x86_64-w64-mingw32/include"\ |
| || ! pkgp_gcc_stage1_all "${@}"; then |
| return 1; |
| fi; |
| }; |
| |
| # vim:filetype=sh textwidth=0 |
| |