diff --git a/README.en.md b/README.en.md index 3fad6e1cde03797df60388032c61be3156113c2b..82359d3fff39b3e07c9107700f6bea39eba48134 100644 --- a/README.en.md +++ b/README.en.md @@ -1,7 +1,7 @@ # gcc-cross #### Description -gcc cross compilation tool chain for openEuler +GCC cross compilation tool chain currently supports x86->arm32/arm64, will continue to expand in the future. #### Software Architecture Software architecture description diff --git a/README.md b/README.md deleted file mode 100644 index b562bfccaa585be95ba6a9d25fb3826de0f58920..0000000000000000000000000000000000000000 --- a/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# gcc-cross - -#### 介绍 -gcc cross compilation tool chain for openEuler - -#### 软件架构 -软件架构说明 - - -#### 安装教程 - -1. xxxx -2. xxxx -3. xxxx - -#### 使用说明 - -1. xxxx -2. xxxx -3. xxxx - -#### 参与贡献 - -1. Fork 本仓库 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request - - -#### 特技 - -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 -5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/build.sh b/build.sh new file mode 100755 index 0000000000000000000000000000000000000000..f164e22a8a6ea76106bd36943572bf9ea8824cf7 --- /dev/null +++ b/build.sh @@ -0,0 +1,65 @@ +#!/bin/bash +# The entrance of the build Compiler toolchain + +set -e + +readonly LOG_PATH="$PWD/logs" +readonly OPEN_SOURCE_PATH="$PWD/../open_source" +# Check if the build tool exists, Build error when missing tools +miss_tool_error() +{ + $1 $2 + if [ $? -ne 0 ]; then + echo "##################################" + echo "# ERROR: $1 is not found!! # " + echo "##################################" + exit 1 + else + echo "$1 checked success!!" + fi +} + +#Clear history build legacy files. +#All build logs +#The intermediate file is placed in the directory name with the "_build_dir" keyword. +#The Source code is placed in the directory name with the "_build_src" keyword. +clean() +{ + for file in $(find $OPEN_SOURCE_PATH -name "*_build_src") + do + [ -n "$file" ] && rm -rf $file + done + + for file in $(find . -name "*_build_dir") + do + [ -n "$file" ] && rm -rf $file + done + + [ -n "$PWD/../output" ] && rm -rf $PWD/../output/* + + [ -n "$LOG_PATH" ] && rm -rf $LOG_PATH +} + +echo "$(date +"%Y-%m-%d %H:%M:%S") ========begin building ========" +source $PWD/config.xml +miss_tool_error gcc -v +miss_tool_error g++ -v +miss_tool_error bison --version +miss_tool_error flex --version +miss_tool_error makeinfo --version + +if [ "$1"x = "openeuler_gcc_arm64le"x ] || [ "$1"x = "openeuler_gcc_arm32le"x ]; then + cd $1 +elif [ "$1"x = "clean"x ] ; then + clean + exit 0 +else + echo Using "sh build.sh xxx" to build the toolchain. xxx is the toolchain name + echo Using "sh build.sh clean" to clear history build legacy files + exit 0 +fi + +./build.sh +rm -rf $LOG_PATH/python* +cd - +exit 0 diff --git a/config.xml b/config.xml new file mode 100644 index 0000000000000000000000000000000000000000..3c74fae9ef8a65d8f195a518de34766d92f40c20 --- /dev/null +++ b/config.xml @@ -0,0 +1,18 @@ +COMPILER_INFO="gcc 10.3.1" + +GCC="gcc" +GCC_DIR="gcc-10.3.0" +BINUTILS="binutils" +BINUTILS_DIR="binutils-2.37" +MPFR="mpfr" +MPFR_DIR="mpfr-4.1.0" +GMP="gmp" +GMP_DIR="gmp-6.2.1" +MPC="libmpc" +MPC_DIR="mpc-1.2.0" +ISL="isl" +ISL_DIR="isl-0.16.1" +GLIBC="glibc" +GLIBC_DIR="glibc-2.34" +KERNEL_HEADERS="kernel_headers" +LINUX_KERNEL="kernel" diff --git a/download.sh b/download.sh new file mode 100755 index 0000000000000000000000000000000000000000..068110e5dcb698d2c4a00a36714fca6ae081ae4b --- /dev/null +++ b/download.sh @@ -0,0 +1,59 @@ +#!/bin/bash +set -e + +readonly LIB_PATH="$PWD/../open_source" +source $PWD/config.xml + +#judge the open_source + +[ ! -d "$LIB_PATH" ] && mkdir $LIB_PATH + +function delete_dir() { + while [ $# !=0 ] ; do + [ -n "$1" ] && rm -rf $1 ; shift; done + } + +cd $LIB_PATH && delete_dir $GCC $BINUTILS $GMP $MPC $MPFR $ISL + +pushd $LIB_PATH +function do_patch() { + pushd $1 + if [ $1 = "isl" ];then + tar xf $1-0.14.tar.xz + tar xf $1-0.16.1.tar.xz + patch -p1 < *.patch + else + PKG=$(echo *.tar.*) + tar xf *.tar.* + cat *.spec | grep "Patch" | grep "\.patch" | awk '{print $2}' > $1-patchlist + pushd ${PKG%%.tar.*} + for i in `cat ../$1-patchlist` + do + patch -p1 < ../$i + done + popd + fi + popd +} +echo "Download $GCC" && git clone -b openEuler-22.03-LTS https://gitee.com/src-openeuler/gcc.git +do_patch $GCC + +echo "Download $GLIBC" && git clone -b openEuler-22.03-LTS https://gitee.com/src-openeuler/glibc.git +do_patch $GLIBC + +echo "Download $BINUTILS" && git clone -b openEuler-22.03-LTS https://gitee.com/src-openeuler/binutils.git +do_patch $BINUTILS + +echo "Download $GMP" && git clone -b openEuler-22.03-LTS https://gitee.com/src-openeuler/gmp.git +do_patch $GMP + +echo "Download $MPFR" && git clone -b openEuler-22.03-LTS https://gitee.com/src-openeuler/mpfr.git +do_patch $MPFR + +echo "Download $MPC" && git clone -b openEuler-22.03-LTS https://gitee.com/src-openeuler/libmpc.git +do_patch $MPC + +echo "Download $ISL" && git clone -b openEuler-22.03-LTS https://gitee.com/src-openeuler/isl.git +do_patch $ISL + +echo "Download $KERNEL" && git clone -b 5.10.0-60.2.0 https://gitee.com/openeuler/kernel.git --depth 1 diff --git a/openeuler_gcc_arm32le/build.sh b/openeuler_gcc_arm32le/build.sh new file mode 100755 index 0000000000000000000000000000000000000000..0c33e32760fd4033a5df3b5703d004df21712b66 --- /dev/null +++ b/openeuler_gcc_arm32le/build.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +set -e +set -x + +readonly LOG_PATH="$PWD/../logs" + +if [[ -z "$COMPILER_INFO" ]];then + source $PWD/../config.xml +fi + +[ -e "$LOG_PATH/openeuler_gcc_arm32le_patch.log" ] && rm $LOG_PATH/openeuler_gcc_arm32le_patch.log +[ -e "$LOG_PATH/openeuler_gcc_arm32le_build.log" ] && rm $LOG_PATH/openeuler_gcc_arm32le_build.log +mkdir -p $LOG_PATH + +source pre_construction.sh & >> $LOG_PATH/openeuler_gcc_arm32le_patch.log + +echo "------------------------------------------" +echo "Now building the "openeuler_gcc_arm32le" toolchain ..." +echo "The entire build process takes about 45 minutes (build time is related to machine preformance), you can view the detailed build log in the ${LOG_PATH} file" +source openeuler_gcc_update_sourcecode.sh +source openeuler_gcc_arm_linux_release.sh &>> $LOG_PATH/openeuler_gcc_arm32le_build.log +echo "Build openeuler_gcc_arm32le toolchain completed!" diff --git a/openeuler_gcc_arm32le/openeuler_gcc_arm_linux_release.sh b/openeuler_gcc_arm32le/openeuler_gcc_arm_linux_release.sh new file mode 100755 index 0000000000000000000000000000000000000000..a449902ba54c60e6918bc4655417993444f3960e --- /dev/null +++ b/openeuler_gcc_arm32le/openeuler_gcc_arm_linux_release.sh @@ -0,0 +1,100 @@ +#!/bin/bash + +set -e + +# Target root directory,should be adapted according to your environment +readonly ROOT_TAR_DIR="$PWD/arm32le_build_dir" +readonly ROOT_TAR_SRC="$PWD/../../open_source" +readonly INSTALL="openeuler_gcc_arm32le" +readonly PREFIX="$PWD/arm32le_build_dir/$INSTALL" +readonly OUTPUT="$PWD/../../output/$INSTALL" + +readonly SECURE_LDFLAGS="-z relro -z now -z noexecstack" +readonly SECURE_CFLAGS="-O2 -Wall -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -Wno-stringop-overflow -fPIE" +readonly SECURE_CXXFLAGS="-O2 -Wall -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -Wno-stringop-overflow -fPIE" +readonly SECURE_CFLAGS_FOR_TARGET="-O2 -Wall -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -Wno-stringop-overflow -march=armv7-a -mfloat-abi=soft -mfpu=vfp" +readonly SECURE_CXXFLAGS_FOR_TARGET="-O2 -Wall -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -Wno-stringop-overflow -march=armv7-a -mfloat-abi=soft -mfpu=vfp" + +readonly TARGET="arm-openeuler-linux-gnueabi" +readonly HOST="$(gcc -dumpmachine)" +readonly BUILD="$(gcc -dumpmachine)" + +readonly SYSROOT="$PREFIX/sysroot" + +#OTHER CONFIG +readonly ARCH="armv7-a" + +if [[ -z "$COMPILER_INFO" ]];then + source $PWD/../config.xml +fi + +declare -x CFLAGS_FOR_TARGET="-O2 -Wall -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -Wno-stringop-overflow -march=armv7-a -mfloat-abi=soft -mfpu=vfp" +declare -x CXXFLAGS_FOR_TARGET="$CFLAGS_FOR_TARGET" + +#Create an empty file +create_new_file(){ +while [ $# != 0 ] ; do +[ -n "$1" ] && rm -rf $1 ; mkdir -p $1; shift; done } + +create_new_file $ROOT_TAR_DIR/obj $PREFIX $OUTPUT $ROOT_TAR_DIR/obj/build-gmp $ROOT_TAR_DIR/obj/build-mpfr $ROOT_TAR_DIR/obj/build-isl $ROOT_TAR_DIR/obj/build-mpc $ROOT_TAR_DIR/obj/build-binutils $ROOT_TAR_DIR/obj/build-gcc-first $ROOT_TAR_DIR/obj/glibc-headers $ROOT_TAR_DIR/obj/build-gcc-second $ROOT_TAR_DIR/obj/build-eglibc $ROOT_TAR_DIR/obj/build-gcc-final + +# Change libstdc++.so option +sed -i "s#^\\t\$(OPT_LDFLAGS).*#\\t\$(OPT_LDFLAGS) \$(SECTION_LDFLAGS) \$(AM_CXXFLAGS) \$(LTLDFLAGS) -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -o \$\@#g" $ROOT_TAR_SRC/$GCC/$GCC_DIR/libstdc++-v3/src/Makefile.in + +echo "Building gmp..." && pushd $ROOT_TAR_DIR/obj/build-gmp +LDFLAGS="${SECURE_LDFLAGS}" CFLAGS="${SECURE_CFLAGS}" CXXFLAGS="${SECURE_CXXFLAGS}" CFLAGS_FOR_TARGET="${SECURE_CFLAGS_FOR_TARGET}" CXXFLAGS_FOR_TARGET="${SECURE_CXXFLAGS_FOR_TARGET}" $ROOT_TAR_SRC/$GMP/$GMP_DIR/configure --build=$BUILD --prefix=$PREFIX --disable-shared --host=$HOST --enable-cxx +make -j 32 && make install && popd + +echo "Building mpfr..." && pushd $ROOT_TAR_DIR/obj/build-mpfr +LDFLAGS="${SECURE_LDFLAGS}" CFLAGS="${SECURE_CFLAGS}" CXXFLAGS="${SECURE_CXXFLAGS}" CFLAGS_FOR_TARGET="${SECURE_CFLAGS_FOR_TARGET}" CXXFLAGS_FOR_TARGET="${SECURE_CXXFLAGS_FOR_TARGET}" $ROOT_TAR_SRC/$MPFR/$MPFR_DIR/configure --build=$BUILD --target=$TARGET --prefix=$PREFIX --disable-shared --host=$HOST --with-gmp=$PREFIX +make -j 32 && make install && popd + +echo "Building isl..." && pushd $ROOT_TAR_DIR/obj/build-isl +LDFLAGS="${SECURE_LDFLAGS}" CFLAGS="${SECURE_CFLAGS}" CXXFLAGS="${SECURE_CXXFLAGS}" CFLAGS_FOR_TARGET="${SECURE_CFLAGS_FOR_TARGET}" CXXFLAGS_FOR_TARGET="${SECURE_CXXFLAGS_FOR_TARGET}" $ROOT_TAR_SRC/$ISL/$ISL_DIR/configure --build=$BUILD --host=$HOST --prefix=$PREFIX --with-gmp-prefix=$PREFIX --disable-shared +make -j 32 && make install && popd + +echo "Building mpc..." && pushd $ROOT_TAR_DIR/obj/build-mpc +LDFLAGS="${SECURE_LDFLAGS}" CFLAGS="${SECURE_CFLAGS}" CXXFLAGS="${SECURE_CXXFLAGS}" CFLAGS_FOR_TARGET="${SECURE_CFLAGS_FOR_TARGET}" CXXFLAGS_FOR_TARGET="${SECURE_CXXFLAGS_FOR_TARGET}" $ROOT_TAR_SRC/$MPC/$MPC_DIR/configure --build=$BUILD --target=$TARGET --prefix=$PREFIX --disable-shared --host=$HOST --with-gmp=$PREFIX +make -j 32 && make install && popd + +echo "Building binutils..." && pushd $ROOT_TAR_DIR/obj/build-binutils +LDFLAGS="${SECURE_LDFLAGS}" CFLAGS="${SECURE_CFLAGS}" CXXFLAGS="${SECURE_CXXFLAGS}" CFLAGS_FOR_TARGET="${SECURE_CFLAGS_FOR_TARGET}" CXXFLAGS_FOR_TARGET="${SECURE_CXXFLAGS_FOR_TARGET}" $ROOT_TAR_SRC/$BINUTILS/$BINUTILS_DIR/configure --build=$BUILD --target=$TARGET --prefix=$PREFIX --host=$HOST --with-pkgversion="${COMPILER_INFO}" --with-sysroot=$SYSROOT --enable-plugins --enable-ld=yes --disable-gdb --libdir=$PREFIX/lib +make -j 32 && make install prefix=$PREFIX exec_prefix=$PREFIX libdir=$PREFIX/lib && popd + +echo "Installing kernel headers..." && pushd $ROOT_TAR_SRC/$KERNEL_HEADERS/ +mkdir -p $SYSROOT/usr/ && cp -r include $SYSROOT/usr/ +mkdir -p $SYSROOT/usr/include/bits $SYSROOT/usr/include/gnu && popd + +echo "Building GCC first..." && pushd $ROOT_TAR_DIR/obj/build-gcc-first +LDFLAGS="${SECURE_LDFLAGS}" CFLAGS="${SECURE_CFLAGS}" CXXFLAGS="${SECURE_CXXFLAGS}" CFLAGS_FOR_TARGET="${SECURE_CFLAGS_FOR_TARGET}" CXXFLAGS_FOR_TARGET="${SECURE_CXXFLAGS_FOR_TARGET}" $ROOT_TAR_SRC/$GCC/$GCC_DIR/configure --build=$BUILD --host=$HOST --target=$TARGET --prefix=$PREFIX --disable-multilib --disable-libmudflap --without-headers --with-newlib --enable-threads=no --disable-shared --disable-nls --with-arch=$ARCH --with-gnu-as --with-gnu-ld --enable-poison-system-directories --disable-libssp --enable-symvers=gnu --enable-__cxa_atexit --disable-libgomp --disable-libstdcxx-pch --disable-libquadmath --disable-lto --enable-languages=c --with-pkgversion="${COMPILER_INFO}" --with-gmp=$PREFIX --with-mpfr=$PREFIX --with-mpc=$PREFIX --with-isl=$PREFIX --with-sysroot=$SYSROOT --with-build-sysroot=$SYSROOT --with-build-time-tools=$PREFIX/$TARGET/bin --libdir=$PREFIX/lib --disable-bootstrap --disable-libatomic --disable-libcilkrts --disable-libstdcxx-dual-abi --with-system-zlib +make -j 32 CPPFLAGS_FOR_TARGET=--sysroot=$SYSROOT && make install prefix=$PREFIX exec_prefix=$PREFIX libdir=$PREFIX/lib && popd + +echo "Installing eglibc headers for little-endian..." && mkdir -p $SYSROOT/lib/ $SYSROOT/usr/lib/ && pushd "$ROOT_TAR_DIR/obj/glibc-headers" +cp -f $ROOT_TAR_SRC/$GLIBC/$GLIBC_DIR/include/gnu/stubs.h $SYSROOT/usr/include/gnu +CC="$PREFIX/bin/$TARGET-gcc $CFLAGS_FOR_TARGET" $ROOT_TAR_SRC/$GLIBC/$GLIBC_DIR/configure --prefix=/usr --with-headers=$SYSROOT/usr/include --build=$BUILD --host=$TARGET --disable-profile --without-gd --without-cvs --disable-multi-arch --enable-add-ons libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes --with-float=soft --with-fp=no --enable-stack-protector=strong libc_cv_ssp=yes +make install-bootstrap-headers=yes install-headers install_root=$SYSROOT && make -j 32 csu/subdir_lib +cp csu/crt1.o csu/crti.o csu/crtn.o $SYSROOT/usr/lib/ +$PREFIX/bin/$TARGET-gcc $CFLAGS_FOR_TARGET -o "$SYSROOT/usr/lib/libc.so" -nostdlib -nostartfiles -shared -x c /dev/null && popd + +echo "Building GCC second..." && pushd $ROOT_TAR_DIR/obj/build-gcc-second +cp $ROOT_TAR_DIR/obj/glibc-headers/bits/stdio_lim.h $SYSROOT/usr/include/bits +LDFLAGS="${SECURE_LDFLAGS}" CFLAGS="${SECURE_CFLAGS}" CXXFLAGS="${SECURE_CXXFLAGS}" CFLAGS_FOR_TARGET="${SECURE_CFLAGS_FOR_TARGET}" CXXFLAGS_FOR_TARGET="${SECURE_CXXFLAGS_FOR_TARGET}" $ROOT_TAR_SRC/$GCC/$GCC_DIR/configure --build=$BUILD --host=$HOST --target=$TARGET --prefix=$PREFIX --disable-multilib --disable-libmudflap --enable-shared --with-arch=$ARCH --enable-__cxa_atexit --with-gnu-as --with-gnu-ld --disable-nls --disable-libssp --disable-libgomp --enable-lto --disable-libquadmath --enable-poison-system-directories --enable-symvers=gnu --enable-languages=c --with-pkgversion="${COMPILER_INFO}" --with-sysroot=$SYSROOT --with-build-sysroot=$SYSROOT --with-gmp=$PREFIX --with-mpfr=$PREFIX --with-mpc=$PREFIX --with-isl=$PREFIX --with-build-time-tools=$PREFIX/$TARGET/bin --libdir=$PREFIX/lib --disable-bootstrap --disable-libatomic --disable-libcilkrts --disable-libstdcxx-dual-abi --with-system-zlib +make -j 32 CPPFLAGS_FOR_TARGET=--sysroot=$SYSROOT build_tooldir=$PREFIX/$TARGET && make install-gcc install-target-libgcc prefix=$PREFIX exec_prefix=$PREFIX libdir=$PREFIX/lib && popd + +echo "Building eglibc for little-endian..." && mkdir -p $SYSROOT/lib/ $SYSROOT/usr/lib/ && pushd $ROOT_TAR_DIR/obj/build-eglibc +CC="$PREFIX/bin/$TARGET-gcc $CFLAGS_FOR_TARGET" CXX="$PREFIX/bin/$TARGET-g++ $CXXFLAGS_FOR_TARGET" LDFLAGS="${SECURE_LDFLAGS}" $ROOT_TAR_SRC/$GLIBC/$GLIBC_DIR/configure --prefix=/usr --with-headers=$SYSROOT/usr/include --build=$BUILD --host=$TARGET --disable-profile --without-gd --enable-obsolete-rpc --without-cvs --with-__thread --with-tls --disable-multi-arch --enable-shared --with-fp --enable-add-ons libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes --libdir=/usr/lib --with-float=soft --with-fp=no --enable-stack-protector=strong libc_cv_ssp=yes +make -j 32 && make install_root=$SYSROOT slibdir=/lib rtlddir=/lib install && popd + +echo "Building GCC final..." && pushd $ROOT_TAR_DIR/obj/build-gcc-final +LDFLAGS="${SECURE_LDFLAGS}" CFLAGS="${SECURE_CFLAGS}" CXXFLAGS="${SECURE_CXXFLAGS}" CFLAGS_FOR_TARGET="${SECURE_CFLAGS_FOR_TARGET}" CXXFLAGS_FOR_TARGET="${SECURE_CXXFLAGS_FOR_TARGET}" $ROOT_TAR_SRC/$GCC/$GCC_DIR/configure --build=$BUILD --host=$HOST --target=$TARGET --with-arch=$ARCH --prefix=$PREFIX --disable-multilib --enable-__cxa_atexit --with-gnu-as --with-gnu-ld --disable-libmudflap --enable-libgomp --disable-libquadmath --enable-threads --enable-plugin --enable-c99 --enable-long-long --disable-nls --enable-shared --enable-poison-system-directories --enable-symvers=gnu --with-pkgversion="${COMPILER_INFO}" --enable-languages=c,c++,fortran --with-headers=$SYSROOT/usr/include --with-sysroot=$SYSROOT --with-build-sysroot=$SYSROOT --with-gmp=$PREFIX --with-mpfr=$PREFIX --with-mpc=$PREFIX --with-isl=$PREFIX --with-build-time-tools=$PREFIX/$TARGET/bin --libdir=$PREFIX/lib --disable-bootstrap --disable-libcilkrts --disable-libstdcxx-dual-abi --with-system-zlib +make -j 32 CPPFLAGS_FOR_TARGET=--sysroot=$SYSROOT && make install prefix=$PREFIX exec_prefix=$PREFIX libdir=$PREFIX/lib && popd + +# handle rpath +for file in $(find "$PREFIX" -name "lib*so*.0") ; do + chrpath --delete $file +done + +pushd $PREFIX/.. && chmod 750 $INSTALL -R +tar --format=gnu -czf $OUTPUT/$INSTALL.tar.gz $INSTALL && popd + +echo "Build Complete!" && echo "To use this newly-built $INSTALL cross toolchain, add $PREFIX/bin to your PATH!" diff --git a/openeuler_gcc_arm32le/openeuler_gcc_update_sourcecode.sh b/openeuler_gcc_arm32le/openeuler_gcc_update_sourcecode.sh new file mode 100755 index 0000000000000000000000000000000000000000..4dbfed6f6b6eddc6594fcd6d502ada0ca991fbc9 --- /dev/null +++ b/openeuler_gcc_arm32le/openeuler_gcc_update_sourcecode.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +set -e +set -x + +readonly ROOT_TOUCH_SRC="$PWD/../../open_source" + +if [[ -z "$COMPILER_INFO" ]];then + source $PWD/../config.xml +fi + +#[task 002/007] touch .info files in source code for binutils +find $ROOT_TOUCH_SRC/$BINUTILS/$BINUTILS_DIR -name "*.info"|xargs -i bash -c "touch {}" + +touch $ROOT_TOUCH_SRC/$BINUTILS/$BINUTILS_DIR/binutils/doc/binutils.texi + +find $ROOT_TOUCH_SRC/$BINUTILS/$BINUTILS_DIR -name "*.1"|xargs -i bash -c "touch {}" + +touch $ROOT_TOUCH_SRC/$GCC/$GCC_DIR/gcc/config/arm/iterators.md + +find $ROOT_TOUCH_SRC/$GCC/$GCC_DIR -name "*.1"|xargs -i bash -c "touch {}" + +find $ROOT_TOUCH_SRC/$GCC/$GCC_DIR -name "*.info"|xargs -i bash -c "touch {}" + +touch $ROOT_TOUCH_SRC/$GLIBC/$GLIBC_DIR/locale/programs/*-kw.h + +touch $ROOT_TOUCH_SRC/$MPFR/$MPFR_DIR/*.m4 +touch $ROOT_TOUCH_SRC/$MPFR/$MPFR_DIR/configure +touch $ROOT_TOUCH_SRC/$MPFR/$MPFR_DIR/Makefile.* +touch $ROOT_TOUCH_SRC/$MPFR/$MPFR_DIR/doc/* +touch $ROOT_TOUCH_SRC/$GMP/$GMP_DIR/*.m4 +touch $ROOT_TOUCH_SRC/$GMP/$GMP_DIR/configure +touch $ROOT_TOUCH_SRC/$GMP/$GMP_DIR/Makefile.* +touch $ROOT_TOUCH_SRC/$GMP/$GMP_DIR/doc/* +touch $ROOT_TOUCH_SRC/$MPC/$MPC_DIR/*.m4 +touch $ROOT_TOUCH_SRC/$MPC/$MPC_DIR/configure +touch $ROOT_TOUCH_SRC/$MPC/$MPC_DIR/Makefile.* +touch $ROOT_TOUCH_SRC/$MPC/$MPC_DIR/doc/* +touch $ROOT_TOUCH_SRC/$ISL/$ISL_DIR/*.m4 +touch $ROOT_TOUCH_SRC/$ISL/$ISL_DIR/configure +touch $ROOT_TOUCH_SRC/$ISL/$ISL_DIR/Makefile.* diff --git a/openeuler_gcc_arm32le/pre_construction.sh b/openeuler_gcc_arm32le/pre_construction.sh new file mode 100755 index 0000000000000000000000000000000000000000..c3d534ba1b7ac0913a50a6fb1beaa9080a56c280 --- /dev/null +++ b/openeuler_gcc_arm32le/pre_construction.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +set -e +set -x + +readonly ROOT_BUILD_SRC="$PWD/../../open_source" +readonly OUTPUT_INSTALL="$PWD/../../output/openeuler_gcc_arm32le" + +if [[ -z "$COMPILER_INFO" ]];then + source $PWD/../config.xml +fi + +#clear history build legacy files +clean(){ + [ -n "$OUTPUT_INSTALL" ] && rm -rf $OUTPUT_INSTALL + mkdir -p $OUTPUT_INSTALL +} + +#clean the build direcoty +clean + +chmod 777 $ROOT_BUILD_SRC -R + +# Extract kernel header files +cd $ROOT_BUILD_SRC/$LINUX_KERNEL +make headers_install ARCH=arm INSTALL_HDR_PATH=$ROOT_BUILD_SRC/$KERNEL_HEADERS +cd - diff --git a/openeuler_gcc_arm64le/build.sh b/openeuler_gcc_arm64le/build.sh new file mode 100755 index 0000000000000000000000000000000000000000..fb29bffab2c954a8c6d47d5675d7517ea368d9a1 --- /dev/null +++ b/openeuler_gcc_arm64le/build.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +set -e +set -x + +readonly LOG_PATH="$PWD/../logs" + +source $PWD/../config.xml + +[ -e "$LOG_PATH/openeuler_gcc_arm64le_patch.log" ] && rm $LOG_PATH/openeuler_gcc_arm64le_patch.log +[ -e "$LOG_PATH/openeuler_gcc_arm64le_build.log" ] && rm $LOG_PATH/openeuler_gcc_arm64le_build.log +mkdir -p $LOG_PATH + +source pre_construction.sh & >> $LOG_PATH/openeuler_gcc_arm64le_patch.log + +echo "------------------------------------------" +echo "Now building the "openeuler_gcc_arm64le" toolchain ..." +echo "The entire build process takes about 45 minutes (build time is related to machine preformance), you can view the detailed build log in the ${LOG_PATH} file" +source openeuler_gcc_update_sourcecode.sh +source openeuler_gcc_aarch64_linux_release.sh &>> $LOG_PATH/openeuler_gcc_arm64le_build.log +echo "Build openeuler_gcc_arm64le toolchain completed!" diff --git a/openeuler_gcc_arm64le/openeuler_gcc_aarch64_linux_release.sh b/openeuler_gcc_arm64le/openeuler_gcc_aarch64_linux_release.sh new file mode 100755 index 0000000000000000000000000000000000000000..659161cdf719c815cf86bf676643dff8de15871d --- /dev/null +++ b/openeuler_gcc_arm64le/openeuler_gcc_aarch64_linux_release.sh @@ -0,0 +1,102 @@ +#!/bin/bash + +set -e + +# Target root directory,should be adapted according to your environment +readonly ROOT_TAR_DIR="$PWD/arm64le_build_dir" +readonly ROOT_TAR_SRC="$PWD/../../open_source" +readonly INSTALL="openeuler_gcc_arm64le" +readonly PREFIX="$PWD/arm64le_build_dir/$INSTALL" +readonly OUTPUT="$PWD/../../output/$INSTALL" + +readonly SECURE_LDFLAGS="-z relro -z now -z noexecstack" +readonly SECURE_CFLAGS="-fPIC -O2 -Wall -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fPIE" +readonly SECURE_CXXFLAGS="-fPIC -O2 -Wall -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fPIE" +readonly SECURE_CFLAGS_FOR_TARGET="-fPIC -O2 -Wall -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -mlittle-endian -march=armv8-a -DDONT_USE_DC" +readonly SECURE_CXXFLAGS_FOR_TARGET="-fPIC -O2 -Wall -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -mlittle-endian -march=armv8-a -DDONT_USE_DC" + +readonly HOST="$(gcc -dumpmachine)" +readonly BUILD="$(gcc -dumpmachine)" + +readonly SYSROOT="$PREFIX/sysroot" + +#OTHER CONFIG +readonly ARCH="armv8-a" +readonly TARGET="aarch64-openeuler-linux-gnu" + +source $PWD/../config.xml + +declare -x CFLAGS_FOR_TARGET="-fPIC -O2 -Wall -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -mlittle-endian -march=armv8-a -DDONT_USE_DC" +declare -x CXXFLAGS_FOR_TARGET="$CFLAGS_FOR_TARGET" + +#Create an empty file +create_new_file(){ +while [ $# != 0 ] ; do +[ -n "$1" ] && rm -rf $1 ; mkdir -p $1; shift; done } + +create_new_file $ROOT_TAR_DIR/obj $PREFIX $OUTPUT $ROOT_TAR_DIR/obj/build-gmp $ROOT_TAR_DIR/obj/build-mpfr $ROOT_TAR_DIR/obj/build-isl $ROOT_TAR_DIR/obj/build-mpc $ROOT_TAR_DIR/obj/build-binutils $ROOT_TAR_DIR/obj/build-gcc-first $ROOT_TAR_DIR/obj/glibc-headers-lp64 $ROOT_TAR_DIR/obj/build-gcc-second $ROOT_TAR_DIR/obj/build-eglibc-lp64 $ROOT_TAR_DIR/obj/build-gcc-final + +# Change GLIBC_DYNAMIC_LINKER. +sed -i "s#^\#define GLIBC_DYNAMIC_LINKER.*#\#undef STANDARD_STARTFILE_PREFIX_2\n\#define STANDARD_STARTFILE_PREFIX_2 \"/usr/lib64/\"\n\#define GLIBC_DYNAMIC_LINKER \"/lib%{mabi=lp64:64}%{mabi=ilp32:ilp32}/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1\"#g" $ROOT_TAR_SRC/$GCC/$GCC_DIR/gcc/config/aarch64/aarch64-linux.h + +# Change libstdc++.so option +sed -i "s#^\\t\$(OPT_LDFLAGS).*#\\t\$(OPT_LDFLAGS) \$(SECTION_LDFLAGS) \$(AM_CXXFLAGS) \$(LTLDFLAGS) -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -o \$\@#g" $ROOT_TAR_SRC/$GCC/$GCC_DIR/libstdc++-v3/src/Makefile.in + +echo "Building gmp..." && pushd $ROOT_TAR_DIR/obj/build-gmp +LDFLAGS="${SECURE_LDFLAGS}" CFLAGS="${SECURE_CFLAGS}" CXXFLAGS="${SECURE_CXXFLAGS}" CFLAGS_FOR_TARGET="${SECURE_CFLAGS_FOR_TARGET}" CXXFLAGS_FOR_TARGET="${SECURE_CXXFLAGS_FOR_TARGET}" $ROOT_TAR_SRC/$GMP/$GMP_DIR/configure --build=$BUILD --prefix=$PREFIX --disable-shared --host=$HOST --enable-cxx +make -j 32 && make install && popd + +echo "Building mpfr..." && pushd $ROOT_TAR_DIR/obj/build-mpfr +LDFLAGS="${SECURE_LDFLAGS}" CFLAGS="${SECURE_CFLAGS}" CXXFLAGS="${SECURE_CXXFLAGS}" CFLAGS_FOR_TARGET="${SECURE_CFLAGS_FOR_TARGET}" CXXFLAGS_FOR_TARGET="${SECURE_CXXFLAGS_FOR_TARGET}" $ROOT_TAR_SRC/$MPFR/$MPFR_DIR/configure --build=$BUILD --target=$TARGET --prefix=$PREFIX --disable-shared --host=$HOST --with-gmp=$PREFIX +make -j 32 && make install && popd + +echo "Building isl..." && pushd $ROOT_TAR_DIR/obj/build-isl +LDFLAGS="${SECURE_LDFLAGS}" CFLAGS="${SECURE_CFLAGS}" CXXFLAGS="${SECURE_CXXFLAGS}" CFLAGS_FOR_TARGET="${SECURE_CFLAGS_FOR_TARGET}" CXXFLAGS_FOR_TARGET="${SECURE_CXXFLAGS_FOR_TARGET}" $ROOT_TAR_SRC/$ISL/$ISL_DIR/configure --build=$BUILD --host=$HOST --prefix=$PREFIX --with-gmp-prefix=$PREFIX --disable-shared +make -j 32 && make install && popd + +echo "Building mpc..." && pushd $ROOT_TAR_DIR/obj/build-mpc +LDFLAGS="${SECURE_LDFLAGS}" CFLAGS="${SECURE_CFLAGS}" CXXFLAGS="${SECURE_CXXFLAGS}" CFLAGS_FOR_TARGET="${SECURE_CFLAGS_FOR_TARGET}" CXXFLAGS_FOR_TARGET="${SECURE_CXXFLAGS_FOR_TARGET}" $ROOT_TAR_SRC/$MPC/$MPC_DIR/configure --build=$BUILD --target=$TARGET --prefix=$PREFIX --disable-shared --host=$HOST --with-gmp=$PREFIX +make -j 32 && make install && popd + +echo "Building binutils..." && pushd $ROOT_TAR_DIR/obj/build-binutils +LDFLAGS="${SECURE_LDFLAGS}" CFLAGS="${SECURE_CFLAGS}" CXXFLAGS="${SECURE_CXXFLAGS}" CFLAGS_FOR_TARGET="${SECURE_CFLAGS_FOR_TARGET}" CXXFLAGS_FOR_TARGET="${SECURE_CXXFLAGS_FOR_TARGET}" $ROOT_TAR_SRC/$BINUTILS/$BINUTILS_DIR/configure --build=$BUILD --target=$TARGET --prefix=$PREFIX --host=$HOST --with-pkgversion="${COMPILER_INFO}" --with-sysroot=$SYSROOT --enable-plugins --enable-ld=yes --disable-gdb --libdir=$PREFIX/lib64 +make -j 32 && make install prefix=$PREFIX exec_prefix=$PREFIX libdir=$PREFIX/lib64 && popd + +echo "Installing kernel headers..." && pushd $ROOT_TAR_SRC/$KERNEL_HEADERS/ +mkdir -p $SYSROOT/usr/ && cp -r include $SYSROOT/usr/ +mkdir -p $SYSROOT/usr/include/bits $SYSROOT/usr/include/gnu && popd + +echo "Building GCC first..." && pushd $ROOT_TAR_DIR/obj/build-gcc-first +LDFLAGS="${SECURE_LDFLAGS}" CFLAGS="${SECURE_CFLAGS}" CXXFLAGS="${SECURE_CXXFLAGS}" CFLAGS_FOR_TARGET="${SECURE_CFLAGS_FOR_TARGET}" CXXFLAGS_FOR_TARGET="${SECURE_CXXFLAGS_FOR_TARGET}" $ROOT_TAR_SRC/$GCC/$GCC_DIR/configure --build=$BUILD --host=$HOST --target=$TARGET --prefix=$PREFIX --with-multilib-list=lp64 --disable-libmudflap --without-headers --with-newlib --enable-threads=no --disable-shared --disable-nls --with-arch=$ARCH --with-gnu-as --with-gnu-ld --enable-poison-system-directories --disable-libssp --enable-symvers=gnu --enable-__cxa_atexit --disable-libgomp --disable-libstdcxx-pch --disable-libquadmath --disable-lto --enable-languages=c --with-pkgversion="${COMPILER_INFO}" --with-gmp=$PREFIX --with-mpfr=$PREFIX --with-mpc=$PREFIX --with-isl=$PREFIX --with-sysroot=$SYSROOT --with-build-sysroot=$SYSROOT --with-build-time-tools=$PREFIX/$TARGET/bin --libdir=$PREFIX/lib64 --disable-bootstrap --disable-libatomic --disable-libcilkrts --disable-libstdcxx-dual-abi --with-system-zlib +echo $PATH +echo $LD_LIBRARY_PATH +make -j 32 CPPFLAGS_FOR_TARGET=--sysroot=$SYSROOT && make install prefix=$PREFIX exec_prefix=$PREFIX libdir=$PREFIX/lib64 && popd + +echo "Installing eglibc headers for lp64..." && mkdir -p $SYSROOT/lib64/ $SYSROOT/usr/lib64/ && pushd "$ROOT_TAR_DIR/obj/glibc-headers-lp64" +cp -af $ROOT_TAR_SRC/$GLIBC/$GLIBC_DIR/include/gnu/stubs.h $SYSROOT/usr/include/gnu +CC="$PREFIX/bin/$TARGET-gcc $CFLAGS_FOR_TARGET" $ROOT_TAR_SRC/$GLIBC/$GLIBC_DIR/configure --prefix=/usr --with-headers=$SYSROOT/usr/include --build=$BUILD --host=$TARGET --enable-obsolete-rpc --disable-profile --without-gd --without-cvs --disable-multi-arch --enable-add-ons libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes --enable-stack-protector=strong libc_cv_ssp=yes +make install-bootstrap-headers=yes install-headers install_root=$SYSROOT && make -j 32 csu/subdir_lib +cp csu/crt1.o csu/crti.o csu/crtn.o $SYSROOT/usr/lib64/ +$PREFIX/bin/$TARGET-gcc $CFLAGS_FOR_TARGET -o "$SYSROOT/usr/lib64/libc.so" -nostdlib -nostartfiles -shared -x c /dev/null && popd + +echo "Building GCC second..." && pushd $ROOT_TAR_DIR/obj/build-gcc-second +LDFLAGS="${SECURE_LDFLAGS}" CFLAGS="${SECURE_CFLAGS}" CXXFLAGS="${SECURE_CXXFLAGS}" CFLAGS_FOR_TARGET="${SECURE_CFLAGS_FOR_TARGET}" CXXFLAGS_FOR_TARGET="${SECURE_CXXFLAGS_FOR_TARGET}" $ROOT_TAR_SRC/$GCC/$GCC_DIR/configure --build=$BUILD --host=$HOST --target=$TARGET --prefix=$PREFIX --with-multilib-list=lp64 --disable-libmudflap --enable-shared --with-arch=$ARCH --enable-__cxa_atexit --with-gnu-as --with-gnu-ld --disable-nls --disable-libssp --disable-libgomp --enable-lto --disable-libquadmath --enable-poison-system-directories --enable-symvers=gnu --enable-languages=c --with-pkgversion="${COMPILER_INFO}" --with-sysroot=$SYSROOT --with-build-sysroot=$SYSROOT --with-gmp=$PREFIX --with-mpfr=$PREFIX --with-mpc=$PREFIX --with-isl=$PREFIX --with-build-time-tools=$PREFIX/$TARGET/bin --libdir=$PREFIX/lib64 --disable-bootstrap --disable-libatomic --disable-libcilkrts --disable-libstdcxx-dual-abi --with-system-zlib +make -j 32 CPPFLAGS_FOR_TARGET=--sysroot=$SYSROOT build_tooldir=$PREFIX/$TARGET && make install-gcc install-target-libgcc prefix=$PREFIX exec_prefix=$PREFIX libdir=$PREFIX/lib64 && popd + +echo "Building eglibc for lp64..." && mkdir -p $SYSROOT/lib64/ $SYSROOT/usr/lib64/ && pushd $ROOT_TAR_DIR/obj/build-eglibc-lp64 +CC="$PREFIX/bin/$TARGET-gcc $CFLAGS_FOR_TARGET" CXX="$PREFIX/bin/$TARGET-g++ $CXXFLAGS_FOR_TARGET" LDFLAGS="${SECURE_LDFLAGS}" $ROOT_TAR_SRC/$GLIBC/$GLIBC_DIR/configure --prefix=/usr --with-headers=$SYSROOT/usr/include --build=$BUILD --host=$TARGET --disable-profile --without-gd --enable-obsolete-rpc --without-cvs --with-__thread --with-tls --disable-multi-arch --enable-shared --with-fp --enable-add-ons libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes --libdir=/usr/lib64 --enable-stack-protector=strong libc_cv_ssp=yes +make -j 32 && make install_root=$SYSROOT slibdir=/lib64 rtlddir=/lib64 install && popd + +echo "Building GCC final..." && pushd $ROOT_TAR_DIR/obj/build-gcc-final +LDFLAGS="${SECURE_LDFLAGS}" CFLAGS="${SECURE_CFLAGS}" CXXFLAGS="${SECURE_CXXFLAGS}" CFLAGS_FOR_TARGET="${SECURE_CFLAGS_FOR_TARGET}" CXXFLAGS_FOR_TARGET="${SECURE_CXXFLAGS_FOR_TARGET}" $ROOT_TAR_SRC/$GCC/$GCC_DIR/configure --build=$BUILD --host=$HOST --target=$TARGET --with-arch=$ARCH --prefix=$PREFIX --with-multilib-list=lp64 --enable-__cxa_atexit --with-gnu-as --with-gnu-ld --disable-libmudflap --enable-libgomp --enable-threads --enable-plugin --enable-c99 --enable-long-long --disable-nls --enable-shared --enable-poison-system-directories --enable-symvers=gnu --with-pkgversion="${COMPILER_INFO}" --enable-languages=c,c++,fortran --with-headers=$SYSROOT/usr/include --with-sysroot=$SYSROOT --with-build-sysroot=$SYSROOT --with-gmp=$PREFIX --with-mpfr=$PREFIX --with-mpc=$PREFIX --with-isl=$PREFIX --with-build-time-tools=$PREFIX/$TARGET/bin --libdir=$PREFIX/lib64 --disable-bootstrap --disable-libsanitizer --disable-libcilkrts --disable-libstdcxx-dual-abi --with-system-zlib +make -j 32 CPPFLAGS_FOR_TARGET=--sysroot=$SYSROOT && make install prefix=$PREFIX exec_prefix=$PREFIX libdir=$PREFIX/lib64 && popd + +# handle rpath +for file in $(find "$PREFIX" -name "lib*so*.0") ; do + chrpath --delete $file +done + +pushd $PREFIX/.. && chmod 750 $INSTALL -R +tar --format=gnu -czf $OUTPUT/$INSTALL.tar.gz $INSTALL && popd + +echo "Build Complete!" && echo "To use this newly-built $INSTALL cross toolchain, add $PREFIX/bin to your PATH!" diff --git a/openeuler_gcc_arm64le/openeuler_gcc_update_sourcecode.sh b/openeuler_gcc_arm64le/openeuler_gcc_update_sourcecode.sh new file mode 100755 index 0000000000000000000000000000000000000000..56718f89db1870c0d403fa3f8cc53503fb46f423 --- /dev/null +++ b/openeuler_gcc_arm64le/openeuler_gcc_update_sourcecode.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +set -e +set -x + +readonly ROOT_TOUCH_SRC="$PWD/../../open_source" + +source $PWD/../config.xml + +#[task 002/007] touch .info files in source code for binutils +find $ROOT_TOUCH_SRC/$BINUTILS/$BINUTILS_DIR -name "*.info"|xargs -i bash -c "touch {}" + +touch $ROOT_TOUCH_SRC/$BINUTILS/$BINUTILS_DIR/binutils/doc/binutils.texi + +find $ROOT_TOUCH_SRC/$BINUTILS/$BINUTILS_DIR -name "*.1"|xargs -i bash -c "touch {}" + +touch $ROOT_TOUCH_SRC/$GCC/$GCC_DIR/gcc/config/aarch64/iterators.md + +find $ROOT_TOUCH_SRC/$GCC/$GCC_DIR -name "*.1"|xargs -i bash -c "touch {}" + +find $ROOT_TOUCH_SRC/$GCC/$GCC_DIR -name "*.info"|xargs -i bash -c "touch {}" + +touch $ROOT_TOUCH_SRC/$GLIBC/$GLIBC_DIR/locale/programs/*-kw.h + +touch $ROOT_TOUCH_SRC/$MPFR/$MPFR_DIR/*.m4 +touch $ROOT_TOUCH_SRC/$MPFR/$MPFR_DIR/configure +touch $ROOT_TOUCH_SRC/$MPFR/$MPFR_DIR/Makefile.* +touch $ROOT_TOUCH_SRC/$MPFR/$MPFR_DIR/doc/* +touch $ROOT_TOUCH_SRC/$GMP/$GMP_DIR/*.m4 +touch $ROOT_TOUCH_SRC/$GMP/$GMP_DIR/configure +touch $ROOT_TOUCH_SRC/$GMP/$GMP_DIR/Makefile.* +touch $ROOT_TOUCH_SRC/$GMP/$GMP_DIR/doc/* +touch $ROOT_TOUCH_SRC/$MPC/$MPC_DIR/*.m4 +touch $ROOT_TOUCH_SRC/$MPC/$MPC_DIR/configure +touch $ROOT_TOUCH_SRC/$MPC/$MPC_DIR/Makefile.* +touch $ROOT_TOUCH_SRC/$MPC/$MPC_DIR/doc/* +touch $ROOT_TOUCH_SRC/$ISL/$ISL_DIR/*.m4 +touch $ROOT_TOUCH_SRC/$ISL/$ISL_DIR/configure +touch $ROOT_TOUCH_SRC/$ISL/$ISL_DIR/Makefile.* diff --git a/openeuler_gcc_arm64le/pre_construction.sh b/openeuler_gcc_arm64le/pre_construction.sh new file mode 100755 index 0000000000000000000000000000000000000000..e28c6ce21d76a5df1316e39b58c0daea56503cb9 --- /dev/null +++ b/openeuler_gcc_arm64le/pre_construction.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +set -e +set -x + +readonly ROOT_BUILD_SRC="$PWD/../../open_source" +readonly OUTPUT_INSTALL="$PWD/../../output/openeuler_gcc_arm64le" + +source $PWD/../config.xml + +#clear history build legacy files +clean(){ + [ -n "$OUTPUT_INSTALL" ] && rm -rf $OUTPUT_INSTALL + mkdir -p $OUTPUT_INSTALL +} + +#clean the build direcoty +clean + +chmod 777 $ROOT_BUILD_SRC -R + +# Extract kernel header files +cd $ROOT_BUILD_SRC/$LINUX_KERNEL +make headers_install ARCH=arm64 INSTALL_HDR_PATH=$ROOT_BUILD_SRC/$KERNEL_HEADERS +cd -