Blob Blame History Raw
#
# . ./build.vars and set -o errexit are assumed.
#

# Order: stage1, runtime, full, native

if [ "${3}" = runtime ]\
||   [ "${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}" = full ]; then
		# GCC, everything else.
		if ! is_build_script_done build1; then
			make ${MAKEFLAGS} all-target-libstdc++-v3;
			set_build_script_done build1 -install1;
		fi;
		if ! is_build_script_done install1; then
			make ${MAKEFLAGS} install-target-libstdc++-v3;
			set_build_script_done install1 -build2;
		fi;
		if ! is_build_script_done build2; then
			make ${MAKEFLAGS};
			set_build_script_done build2 -install2;
		fi;
		if ! is_build_script_done install2; then
			make ${MAKEFLAGS} install;
			set_build_script_done install2 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=${PREFIX_LVL}	\
			cbb_sysroot_for_libgcc=${PREFIX_LVL}		\
			cbb_target=${TARGET}				\
			cbb_neutral_libiberty=no			\
			cbb_xgcc_for_specs=${WORKDIR}/${PKG_BUILD_DIR}/gcc/xgcc;
		GCCTARGET_FLAGS="-DIN_TARGET_LIBRARY_BUILD --sysroot=${PREFIX_LVL}";
	elif [ "${3}" = native ]; then
		# GCC, native.
		set_build_dir cbb-gcc-${PKG_GCC_VERSION} native;
		export 	cbb_ldflags_for_target=--sysroot=${PREFIX_LVL}	\
			cbb_sysroot_for_libgcc=${PREFIX_LVL}		\
			cbb_target=${TARGET}				\
			cbb_xgcc_for_specs=${TARGET}-gcc;
		GCCTARGET_FLAGS="-DIN_TARGET_LIBRARY_BUILD --sysroot=${PREFIX_LVL}";
	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 ${PREFIX_LVL}/include;
			[ \! -d ${PREFIX_LVL}/usr ] &&			\
				ln -s . ${PREFIX_LVL}/usr;
			_configure_args="--prefix=${PREFIX} --with-sysroot=${PREFIX_LVL}";
		elif [ "${3}" = native ]; then
			mkdir -p ${PREFIX_LVL}/${TARGET};
			if [ \! -d ${PREFIX_LVL}/${TARGET}/usr ]; then
				ln -s . ${PREFIX_LVL}/${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=${PREFIX_LVL}	\
				--with-gmp=${PREFIX_LVL}	\
				--with-mpc=${PREFIX_LVL}	\
				--with-mpfr=${PREFIX_LVL}	\
				--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=${PREFIX_LVL} install;
		fi;
		set_build_script_done install finish;
	fi;
fi;

# vim:filetype=sh