diff options
Diffstat (limited to '009.gcc.full.build')
-rw-r--r-- | 009.gcc.full.build | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/009.gcc.full.build b/009.gcc.full.build new file mode 100644 index 00000000..fe469ff3 --- /dev/null +++ b/009.gcc.full.build @@ -0,0 +1,154 @@ +# +# . ./build.vars and set -o errexit -o noglob are assumed. +# + +# Order: stage1, runtime, full, native + +if [ "${3}" = runtime ]\ +|| [ "${3}" = libstdc++-v3 ]; then +|| [ "${3}" = full ]; then + set_build_dir cbb-gcc-${PKG_GCC_VERSION} cross; + cd ${PKG_BUILD_DIR}; + if [ "${3}" = runtime ]; then + # GCC, compiler runtime. + if ! is_build_script_done build; then + make ${MAKEFLAGS} all-target-libgcc; + set_build_script_done build -install; + fi; + if ! is_build_script_done install; then + make ${MAKEFLAGS} install-target-libgcc; + set_build_script_done install finish; + fi; + elif [ "${3}" = libstdc++-v3 ]; then + # GCC, libstdc++-v3. + if ! is_build_script_done build; then + make ${MAKEFLAGS} all-target-libstdc++-v3; + set_build_script_done build -install; + fi; + if ! is_build_script_done install; then + make ${MAKEFLAGS} install-target-libstdc++-v3; + set_build_script_done install finish; + fi; + elif [ "${3}" = full ]; then + # GCC, everything else. + if ! is_build_script_done build; then + make ${MAKEFLAGS}; + set_build_script_done build -install; + fi; + if ! is_build_script_done install; then + make ${MAKEFLAGS} install; + set_build_script_done install finish; + fi; + fi; +else + if [ "${3}" = stage1 ]; then + # GCC, stage1. + if ! is_build_script_done fetch; then + fetch_git cbb-gcc-${PKG_GCC_VERSION} \ + ${GITROOT}/cbb/cbb-gcc-${PKG_GCC_VERSION}; + set_build_script_done fetch -configure; + fi; + set_build_dir cbb-gcc-${PKG_GCC_VERSION} cross; + export cbb_ldflags_for_target=--sysroot=${PKG_PREFIX} \ + cbb_sysroot_for_libgcc=${PKG_PREFIX} \ + cbb_target=${TARGET} \ + cbb_neutral_libiberty=no \ + cbb_xgcc_for_specs=${WORKDIR}/${PKG_BUILD_DIR}/gcc/xgcc; + GCCTARGET_FLAGS="-DIN_TARGET_LIBRARY_BUILD --sysroot=${PKG_PREFIX}"; + elif [ "${3}" = native ]; then + # GCC, native. + set_build_dir cbb-gcc-${PKG_GCC_VERSION} native; + export cbb_ldflags_for_target=--sysroot=${PKG_PREFIX} \ + cbb_sysroot_for_libgcc=${PKG_PREFIX} \ + cbb_target=${TARGET} \ + cbb_xgcc_for_specs=${TARGET}-gcc; + GCCTARGET_FLAGS="-DIN_TARGET_LIBRARY_BUILD --sysroot=${PKG_PREFIX}"; + fi; + GCCFLAGS="${CFLAGS:+${CFLAGS} }--include $(readlink -f ${WORKDIR}/cbb-gcc-${PKG_GCC_VERSION}/libc/cbb-musl-pe.h)"; + set_env_vars "${GCCFLAGS}" CFLAGS CFLAGS_FOR_BUILD CPPFLAGS_FOR_BUILD CXXFLAGS CXXFLAGS_FOR_BUILD; + set_env_vars "${GCCTARGET_FLAGS}" CFLAGS_FOR_TARGET CPPFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET LIBCFLAGS_FOR_TARGET XGCC_FLAGS_FOR_TARGET; + set_env_vars "${CFLAGS_FOR_BUILD}" cbb_cflags_for_stage1 cbb_cflags_for_stage2 cbb_cflags_for_stage3 cbb_cflags_for_stage4; + 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; + if ! is_build_script_done configure; then + if [ "${3}" = stage1 ]; then + mkdir -p -- ${PKG_PREFIX}/include; + [ \! -d ${PKG_PREFIX}/usr ] && \ + ln -s -- . ${PKG_PREFIX}/usr; + _configure_args="--prefix=${PREFIX} --with-sysroot=${PKG_PREFIX}"; + elif [ "${3}" = native ]; then + mkdir -p -- ${PKG_PREFIX}/${TARGET}; + if [ \! -d ${PKG_PREFIX}/${TARGET}/usr ]; then + ln -s -- . ${PKG_PREFIX}/${TARGET}/usr; + fi; + if [ "${ARCH}" = nt32 ]; then + _configure_args="--host=i686-nt32-midipix"; + else + _configure_args="--host=x86_64-nt64-midipix"; + fi; + _configure_args="${_configure_args} \ + --prefix=/ \ + --with-elf=${PKG_PREFIX} \ + --with-gmp=${PKG_PREFIX} \ + --with-mpc=${PKG_PREFIX} \ + --with-mpfr=${PKG_PREFIX} \ + --with-sysroot="; + fi; + rm_if_exists -m -c ${PKG_BUILD_DIR}; + ../cbb-gcc-${PKG_GCC_VERSION}/configure \ + --disable-bootstrap \ + --disable-libmudflap \ + --disable-multilib \ + --disable-nls \ + --disable-obsolete \ + --disable-sjlj-exceptions \ + --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++,objc,lto \ + --enable-libstdcxx-debug \ + --enable-lto \ + --enable-multiarch \ + --enable-secureplt \ + --enable-shared \ + --enable-threads=posix \ + --target=${TARGET} \ + --with-fpmath=sse \ + ${_configure_args}; + set_build_script_done configure clean -build; + else + cd ${PKG_BUILD_DIR}; + fi; + if ! is_build_script_done clean; then + make ${MAKEFLAGS} clean; + set_build_script_done clean -build; + fi; + if ! is_build_script_done build; then + if [ "${3}" = stage1 ]; then + make ${MAKEFLAGS} all-gcc; + elif [ "${3}" = native ]; then + make ${MAKEFLAGS} all-gcc; + make ${MAKEFLAGS} all-target-libgcc; + make ${MAKEFLAGS} all-target-libstdc++-v3; + make ${MAKEFLAGS} all; + fi; + set_build_script_done build -install; + fi; + if ! is_build_script_done install; then + if [ "${3}" = stage1 ]; then + make ${MAKEFLAGS} install-gcc; + if match_uname_any CYGWIN\*; then + ln -s -- ${PREFIX}/libexec/gcc/${TARGET}/${PKG_GCC_VERSION}/liblto_plugin.dll.a \ + ln -s -- ${PREFIX}/libexec/gcc/${TARGET}/${PKG_GCC_VERSION}/liblto_plugin.so; + fi; + elif [ "${3}" = native ]; then + make ${MAKEFLAGS} DESTDIR=${PKG_PREFIX} install; + fi; + set_build_script_done install finish; + fi; +fi; + +# vim:filetype=sh |