From ec19f02f81c206f54a89ef7e1f49715e90470c31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucio=20Andr=C3=A9s=20Illanes=20Albornoz=20=28arab=2C=20vx?= =?UTF-8?q?p=29?= Date: Sun, 3 Dec 2017 16:10:05 +0000 Subject: Separate front end (build.sh, subr/build_*) from dispatcher. --- vars/gcc.vars | 228 ++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 141 insertions(+), 87 deletions(-) (limited to 'vars/gcc.vars') diff --git a/vars/gcc.vars b/vars/gcc.vars index f3b192b8..c5e1f22a 100644 --- a/vars/gcc.vars +++ b/vars/gcc.vars @@ -1,31 +1,44 @@ # # 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 +# Order: stage1_host, runtime_host, libstdcpp_v3_host, full_host, full +# Order: stage1_mingw32, native_mingw32 # +pkgp_gcc_build_dir() { + PKG_BUILD_DIR="${1}-${2}-${PKG_TARGET}"; +}; + 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}"; + export cbb_target="${PKG_TARGET}"; case "${PKG_NAME}" in - gcc_stage1) - export cbb_neutral_libiberty=no \ + gcc_stage1_host) + GCCTARGET_FLAGS="-DIN_TARGET_LIBRARY_BUILD --sysroot=${PREFIX_CROSS} -midata"; + export cbb_neutral_libiberty=no \ + cbb_ldflags_for_target=--sysroot="${PREFIX_CROSS}" \ + cbb_sysroot_for_libgcc="${PREFIX_CROSS}" \ cbb_xgcc_for_specs="${PKG_BASE_DIR}/${PKG_BUILD_DIR}/gcc/xgcc"; ;; - gcc_stage1_cross_x86_64_w64_mingw32) - export cbb_neutral_libiberty=no \ + gcc_stage1_cross_mingw32) + GCCTARGET_FLAGS="-DIN_TARGET_LIBRARY_BUILD --sysroot=${PREFIX_MINGW32} -midata"; + export cbb_neutral_libiberty=no \ + cbb_ldflags_for_target=--sysroot="${PREFIX_MINGW32}" \ + cbb_sysroot_for_libgcc="${PREFIX_MINGW32}" \ cbb_xgcc_for_specs="${PKG_BASE_DIR}/${PKG_BUILD_DIR}/gcc/xgcc"; ;; - gcc_stage1_native_x86_64_w64_mingw32) - export cbb_neutral_libiberty=no \ + gcc_stage1_native_mingw32) + GCCTARGET_FLAGS="-DIN_TARGET_LIBRARY_BUILD --sysroot=${PKG_PREFIX} -midata"; + export cbb_neutral_libiberty=no \ + cbb_ldflags_for_target=--sysroot="${PKG_PREFIX}" \ + cbb_sysroot_for_libgcc="${PKG_PREFIX}" \ cbb_xgcc_for_specs="${PKG_TARGET}-gcc"; ;; - gcc_native) - export cbb_xgcc_for_specs="${PKG_TARGET}-gcc" \ + gcc_full) + GCCTARGET_FLAGS="-DIN_TARGET_LIBRARY_BUILD --sysroot=${PKG_PREFIX} -midata"; + export cbb_xgcc_for_specs="${PKG_TARGET}-gcc" \ + cbb_ldflags_for_target=--sysroot="${PKG_PREFIX}" \ + cbb_sysroot_for_libgcc="${PKG_PREFIX}" \ sysroot_headers_suffix="${PKG_PREFIX}"; ;; esac; - GCCTARGET_FLAGS="-DIN_TARGET_LIBRARY_BUILD --sysroot=${PKG_PREFIX} -midata"; - GCCFLAGS="${CFLAGS:+${CFLAGS} }--include $(readlink -f "${PKG_BASE_DIR}/cbb-gcc-${1}/libc/cbb-musl-pe.h")"; + GCCFLAGS="${PKG_CFLAGS_CONFIGURE} --include $(readlink -f "${PKG_BASE_DIR}/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; @@ -39,10 +52,10 @@ pkgp_gcc_setup_env() { }; pkgp_gcc_configure() { - ex_build_fileop rm "${PKG_BASE_DIR}/${PKG_BUILD_DIR}"; - ex_build_fileop mkdir "${PKG_BASE_DIR}/${PKG_BUILD_DIR}"; - ex_build_fileop cd "${PKG_BASE_DIR}/${PKG_BUILD_DIR}"; - "../cbb-gcc-${PKG_GCC_VERSION}/configure" "${@}"\ + ex_rtl_fileop rm "${PKG_BASE_DIR}/${PKG_BUILD_DIR}"; + ex_rtl_fileop mkdir "${PKG_BASE_DIR}/${PKG_BUILD_DIR}"; + ex_rtl_fileop cd "${PKG_BASE_DIR}/${PKG_BUILD_DIR}"; + "../cbb-gcc-${PKG_VERSION}/configure" "${@}"\ --disable-bootstrap \ --disable-libmudflap \ --disable-multilib \ @@ -64,66 +77,68 @@ pkgp_gcc_configure() { --enable-threads=posix \ --target="${PKG_TARGET}" \ --with-fpmath=sse; - ex_pkg_state_push "${PKG_NAME}" configure -build; + ex_pkg_state_set "${PKG_NAME}" configure -build; +}; + +pkg_gcc_stage1_host_all() { + pkg_gcc_stage1_all "${@}"; }; -pkg_gcc_stage1_cross_x86_64_w64_mingw32_all() { +pkg_gcc_stage1_cross_mingw32_all() { + ex_rtl_fileop ln_symbolic . "${PKG_PREFIX}/x86_64-w64-mingw32/mingw"; + ex_rtl_fileop mkdir "${PKG_DESTDIR}/x86_64-w64-mingw32"; + ex_rtl_fileop ln_symbolic . "${PKG_DESTDIR}/x86_64-w64-mingw32/mingw"; + mkdir "${PKG_PREFIX}/x86_64-w64-mingw32/include"; 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_native_mingw32_all() { + ex_rtl_fileop ln_symbolic . "${PKG_PREFIX}/x86_64-w64-mingw32/mingw"; + ex_rtl_fileop mkdir "${PKG_DESTDIR}/x86_64-w64-mingw32"; + ex_rtl_fileop ln_symbolic . "${PKG_DESTDIR}/x86_64-w64-mingw32/mingw"; + mkdir "${PKG_PREFIX}/x86_64-w64-mingw32/include"; 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}"; - ex_pkg_state_build_dir "cbb-gcc-${PKG_GCC_VERSION}" cross; + gcc_stage1_host) + pkgp_gcc_build_dir "cbb-gcc-${PKG_VERSION}" cross; ;; - gcc_stage1_cross_x86_64_w64_mingw32) - PKG_GCC_VERSION="${PKG_GCC_STAGE1_CROSS_X86_64_W64_MINGW32_VERSION}"; - ex_pkg_state_build_dir "cbb-gcc-${PKG_GCC_VERSION}" cross; + gcc_stage1_cross_mingw32) + pkgp_gcc_build_dir "cbb-gcc-${PKG_VERSION}" mingw32; ;; - gcc_stage1_native_x86_64_w64_mingw32) - PKG_GCC_VERSION="${PKG_GCC_STAGE1_NATIVE_X86_64_W64_MINGW32_VERSION}"; - ex_pkg_state_build_dir "cbb-gcc-${PKG_GCC_VERSION}" native; + gcc_stage1_native_mingw32) + pkgp_gcc_build_dir "cbb-gcc-${PKG_VERSION}" native; ;; esac; # GCC, stage1. if ! ex_pkg_state_test "${PKG_NAME}" fetch "${_restart_at}"; then - pkg_fetch_git "cbb-gcc-${PKG_GCC_VERSION}=${DEFAULT_GITROOT}/cbb/cbb-gcc-${PKG_GCC_VERSION}"; - ex_pkg_state_push "${PKG_NAME}" fetch -patch; + ex_rtl_fetch_urls_git "${PKG_BASE_DIR}" "cbb-gcc-${PKG_VERSION}=${DEFAULT_GITROOT}/cbb/cbb-gcc-${PKG_VERSION}"; + ex_pkg_state_set "${PKG_NAME}" 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"; fi; - ex_pkg_state_push "${PKG_NAME}" patch -configure; + ex_pkg_state_set "${PKG_NAME}" patch -configure; fi; - pkgp_gcc_setup_env "${PKG_GCC_VERSION}"; + pkgp_gcc_setup_env "${PKG_VERSION}"; if ! ex_pkg_state_test "${PKG_NAME}" configure "${_restart_at}"; then - ex_build_fileop mkdir "${PKG_PREFIX}/include"; - [ \! -d "${PKG_PREFIX}/usr" ] && \ - ex_build_fileop ln_symbolic . "${PKG_PREFIX}/usr"; case "${PKG_NAME}" in - gcc_stage1) + gcc_stage1_host) pkgp_gcc_configure \ --disable-sjlj-exceptions \ --prefix="${PREFIX}" \ - --with-sysroot="${PREFIX}/${PKG_TARGET}"; ;; - gcc_stage1_cross_x86_64_w64_mingw32) + --with-sysroot="${PREFIX_CROSS}"; ;; + gcc_stage1_cross_mingw32) pkgp_gcc_configure \ --enable-sjlj-exceptions \ --prefix="${PREFIX}" \ - --with-sysroot="${PREFIX}/${PKG_TARGET}"\ + --with-sysroot="${PREFIX_MINGW32}" \ --without-headers; ;; - gcc_stage1_native_x86_64_w64_mingw32) + gcc_stage1_native_mingw32) pkgp_gcc_configure \ --build=x86_64-unknown-linux-gnu \ --enable-sjlj-exceptions \ @@ -137,89 +152,120 @@ pkg_gcc_stage1_all() { --without-headers; ;; esac; else - ex_build_fileop cd "${PKG_BASE_DIR}/${PKG_BUILD_DIR}"; + ex_rtl_fileop cd "${PKG_BASE_DIR}/${PKG_BUILD_DIR}"; fi; if ! ex_pkg_state_test "${PKG_NAME}" build "${_restart_at}"; then make ${PKG_MAKEFLAGS_BUILD} all-gcc; - ex_pkg_state_push "${PKG_NAME}" build -install; + ex_pkg_state_set "${PKG_NAME}" build -install; fi; - if ! ex_pkg_state_test "${PKG_NAME}" install "${_restart_at}"; then + if ! ex_pkg_state_test "${PKG_NAME}" install_subdirs "${_restart_at}"; then + pkg_install_subdirs; + ex_pkg_state_set "${PKG_NAME}" install_subdirs -install_make; + fi; + if ! ex_pkg_state_test "${PKG_NAME}" install_make "${_restart_at}"; then case "${PKG_NAME}" in - gcc_stage1) - make ${PKG_MAKEFLAGS_BUILD} install-gcc; ;; - gcc_stage1_cross_x86_64_w64_mingw32) - make ${PKG_MAKEFLAGS_BUILD} install-gcc; ;; - gcc_stage1_native_x86_64_w64_mingw32) - make ${PKG_MAKEFLAGS_BUILD} "DESTDIR=${PKG_PREFIX}" install-gcc; ;; + gcc_stage1_host) + make ${PKG_MAKEFLAGS_BUILD} "prefix=${PKG_DESTDIR}" install-gcc; ;; + gcc_stage1_cross_mingw32) + make ${PKG_MAKEFLAGS_BUILD} "prefix=${PKG_DESTDIR}" install-gcc; ;; + gcc_stage1_native_mingw32) + make ${PKG_MAKEFLAGS_BUILD} "prefix=${PKG_DESTDIR}" install-gcc; ;; esac; __="$(uname -s)"; if [ "${__#*CYGWIN*}" != "${__}" ]; then - ex_build_fileop ln_symbolic "${PREFIX}/libexec/gcc/${PKG_TARGET}/${PKG_GCC_VERSION}/liblto_plugin.dll.a" \ - ex_build_fileop ln_symbolic "${PREFIX}/libexec/gcc/${PKG_TARGET}/${PKG_GCC_VERSION}/liblto_plugin.so"; + ex_rtl_fileop ln_symbolic "${PKG_DESTDIR}/libexec/gcc/${PKG_TARGET}/${PKG_VERSION}/liblto_plugin.dll.a" \ + ex_rtl_fileop ln_symbolic "${PKG_DESTDIR}/libexec/gcc/${PKG_TARGET}/${PKG_VERSION}/liblto_plugin.so"; fi; - ex_pkg_state_push "${PKG_NAME}" install finish; + ex_pkg_state_set "${PKG_NAME}" install_make -install; + fi; + if ! ex_pkg_state_test "${PKG_NAME}" install "${_restart_at}"; then + pkg_install; + ex_pkg_state_set "${PKG_NAME}" install finish; fi; }; -pkg_gcc_runtime_all() { +pkg_gcc_runtime_host_all() { local _restart_at="${1}"; export MAKE="make LIBTOOL=slibtool"; - ex_pkg_state_build_dir "cbb-gcc-${PKG_GCC_RUNTIME_VERSION}" cross; - ex_build_fileop cd "${PKG_BASE_DIR}/${PKG_BUILD_DIR}"; + pkgp_gcc_build_dir "cbb-gcc-${PKG_VERSION}" cross; + ex_rtl_fileop cd "${PKG_BASE_DIR}/${PKG_BUILD_DIR}"; # GCC, compiler runtime. if ! ex_pkg_state_test "${PKG_NAME}" build "${_restart_at}"; then make ${PKG_MAKEFLAGS_BUILD} all-target-libgcc; - ex_pkg_state_push "${PKG_NAME}" build -install; + ex_pkg_state_set "${PKG_NAME}" build -install; + fi; + if ! ex_pkg_state_test "${PKG_NAME}" install_subdirs "${_restart_at}"; then + pkg_install_subdirs; + ex_pkg_state_set "${PKG_NAME}" 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; + ex_pkg_state_set "${PKG_NAME}" install_make -install; fi; if ! ex_pkg_state_test "${PKG_NAME}" install "${_restart_at}"; then - make ${PKG_MAKEFLAGS_BUILD} install-target-libgcc; - ex_pkg_state_push "${PKG_NAME}" install finish; + pkg_install; + ex_pkg_state_set "${PKG_NAME}" install finish; fi; }; -pkg_gcc_libstdcpp_v3_all() { +pkg_gcc_libstdcpp_v3_host_all() { local _restart_at="${1}"; export MAKE="make LIBTOOL=slibtool"; - ex_pkg_state_build_dir "cbb-gcc-${PKG_GCC_LIBSTDCPP_V3_VERSION}" cross; - ex_build_fileop cd "${PKG_BASE_DIR}/${PKG_BUILD_DIR}"; + pkgp_gcc_build_dir "cbb-gcc-${PKG_VERSION}" cross; + ex_rtl_fileop cd "${PKG_BASE_DIR}/${PKG_BUILD_DIR}"; # GCC, libstdc++-v3. if ! ex_pkg_state_test "${PKG_NAME}" build "${_restart_at}"; then make ${PKG_MAKEFLAGS_BUILD} all-target-libstdc++-v3; - ex_pkg_state_push "${PKG_NAME}" build -install; + ex_pkg_state_set "${PKG_NAME}" build -install; + fi; + if ! ex_pkg_state_test "${PKG_NAME}" install_subdirs "${_restart_at}"; then + pkg_install_subdirs; + ex_pkg_state_set "${PKG_NAME}" 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; + ex_pkg_state_set "${PKG_NAME}" install_make -install; fi; if ! ex_pkg_state_test "${PKG_NAME}" install "${_restart_at}"; then - make ${PKG_MAKEFLAGS_BUILD} install-target-libstdc++-v3; - ex_pkg_state_push "${PKG_NAME}" install finish; + pkg_install; + ex_pkg_state_set "${PKG_NAME}" install finish; fi; }; -pkg_gcc_full_all() { +pkg_gcc_full_host_all() { local _restart_at="${1}"; export MAKE="make LIBTOOL=slibtool"; - ex_pkg_state_build_dir "cbb-gcc-${PKG_GCC_FULL_VERSION}" cross; - ex_build_fileop cd "${PKG_BASE_DIR}/${PKG_BUILD_DIR}"; + pkgp_gcc_build_dir "cbb-gcc-${PKG_VERSION}" cross; + ex_rtl_fileop cd "${PKG_BASE_DIR}/${PKG_BUILD_DIR}"; # GCC, everything else. if ! ex_pkg_state_test "${PKG_NAME}" build "${_restart_at}"; then make ${PKG_MAKEFLAGS_BUILD}; - ex_pkg_state_push "${PKG_NAME}" build -install; + ex_pkg_state_set "${PKG_NAME}" build -install; + fi; + if ! ex_pkg_state_test "${PKG_NAME}" install_subdirs "${_restart_at}"; then + pkg_install_subdirs; + ex_pkg_state_set "${PKG_NAME}" 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; + ex_pkg_state_set "${PKG_NAME}" install_make -install; fi; if ! ex_pkg_state_test "${PKG_NAME}" install "${_restart_at}"; then - make ${PKG_MAKEFLAGS_BUILD} install; - ex_pkg_state_push "${PKG_NAME}" install finish; + pkg_install; + ex_pkg_state_set "${PKG_NAME}" install finish; fi; }; -pkg_gcc_native_all() { +pkg_gcc_full_all() { local _restart_at="${1}" _configure_host; - PKG_GCC_VERSION="${PKG_GCC_NATIVE_VERSION}"; export MAKE="make LIBTOOL=slibtool"; # GCC, native. - ex_pkg_state_build_dir "cbb-gcc-${PKG_GCC_VERSION}" native; - pkgp_gcc_setup_env "${PKG_GCC_VERSION}"; + pkgp_gcc_build_dir "cbb-gcc-${PKG_VERSION}" native; + pkgp_gcc_setup_env "${PKG_VERSION}"; if ! ex_pkg_state_test "${PKG_NAME}" configure "${_restart_at}"; then - ex_build_fileop mkdir "${PKG_PREFIX}/${PKG_TARGET}"; + ex_rtl_fileop mkdir "${PKG_PREFIX}/${PKG_TARGET}"; if [ \! -d "${PKG_PREFIX}/${PKG_TARGET}/usr" ]; then - ex_build_fileop ln_symbolic . "${PKG_PREFIX}/${PKG_TARGET}/usr"; + ex_rtl_fileop ln_symbolic . "${PKG_PREFIX}/${PKG_TARGET}/usr"; fi; if [ "${ARCH}" = nt32 ]; then _configure_host="i686-nt32-midipix"; @@ -236,18 +282,26 @@ pkg_gcc_native_all() { --with-mpfr="${PKG_PREFIX}" \ --with-sysroot=; else - ex_build_fileop cd "${PKG_BASE_DIR}/${PKG_BUILD_DIR}"; + ex_rtl_fileop cd "${PKG_BASE_DIR}/${PKG_BUILD_DIR}"; fi; if ! ex_pkg_state_test "${PKG_NAME}" build "${_restart_at}"; then make ${PKG_MAKEFLAGS_BUILD} all-gcc; make ${PKG_MAKEFLAGS_BUILD} all-target-libgcc; make ${PKG_MAKEFLAGS_BUILD} all-target-libstdc++-v3; make ${PKG_MAKEFLAGS_BUILD} all; - ex_pkg_state_push "${PKG_NAME}" build -install; + ex_pkg_state_set "${PKG_NAME}" build -install; + fi; + if ! ex_pkg_state_test "${PKG_NAME}" install_subdirs "${_restart_at}"; then + pkg_install_subdirs; + ex_pkg_state_set "${PKG_NAME}" 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; + ex_pkg_state_set "${PKG_NAME}" install_make -install; fi; if ! ex_pkg_state_test "${PKG_NAME}" install "${_restart_at}"; then - make ${PKG_MAKEFLAGS_BUILD} "DESTDIR=${PKG_PREFIX}" install; - ex_pkg_state_push "${PKG_NAME}" install finish; + pkg_install; + ex_pkg_state_set "${PKG_NAME}" install finish; fi; }; -- cgit v1.2.3