diff --git a/0003-Add-build-option-for-AI4C.patch b/0003-Add-build-option-for-AI4C.patch new file mode 100644 index 0000000000000000000000000000000000000000..1d9c4714649ef9e1534dc42b4548089a8d75b41f --- /dev/null +++ b/0003-Add-build-option-for-AI4C.patch @@ -0,0 +1,148 @@ +From 12c176c48e2cec817ef514dccfce29001032bf35 Mon Sep 17 00:00:00 2001 +From: zhenyu--zhao_admin +Date: Tue, 23 Jul 2024 11:31:26 +0800 +Subject: [PATCH] Revise build options for gcc and add build option for AI4C. + +--- + build/config.xml | 5 ++- + build/download.sh | 2 + + .../hcc_aarch64_native_release.sh | 37 ++++++++++++++++++- + build/hcc_arm64le_native/pre_construction.sh | 9 ++++- + 4 files changed, 48 insertions(+), 5 deletions(-) + +diff --git a/build/config.xml b/build/config.xml +index 530ad77..0c0410e 100644 +--- a/build/config.xml ++++ b/build/config.xml +@@ -1,6 +1,6 @@ +-BRANCH="master" ++BRANCH="openEuler-22.03-LTS-SP4" + INSTALL_NATIVE="gcc-10.3.1-2022.09-aarch64-linux" +-COMPILER_INFO="gcc for openEuler 2.3.2" ++COMPILER_INFO="gcc for openEuler 2.3.7" + + GCC="gcc-10.3.0" + BINUTILS="binutils-2.37" +@@ -24,3 +24,4 @@ CARES="c-ares-1.18.1" + ABSEIL="abseil-cpp-20220623.1" + RE2="re2-2021-11-01" + JSONCPP="jsoncpp-1.9.5" ++AI4C="AI4C-v0.1.0-alpha" +diff --git a/build/download.sh b/build/download.sh +index 73e040e..8505c78 100644 +--- a/build/download.sh ++++ b/build/download.sh +@@ -28,6 +28,7 @@ readonly CARES_NAME="c-ares" + readonly ABSEIL_NAME="abseil-cpp" + readonly RE2_NAME="re2" + readonly JSONCPP_NAME="jsoncpp" ++readonly AI4C_NAME="AI4C" + + # Create the open source software directory. + [ ! -d "$OPEN_SOURCE_PATH" ] && mkdir $OPEN_SOURCE_PATH +@@ -61,6 +62,7 @@ download $CARES_NAME + download $ABSEIL_NAME + download $RE2_NAME + download $JSONCPP_NAME ++download $AI4C_NAME + + popd + echo "Download success!!!" +diff --git a/build/hcc_arm64le_native/hcc_aarch64_native_release.sh b/build/hcc_arm64le_native/hcc_aarch64_native_release.sh +index a9e2eff..635e44f 100644 +--- a/build/hcc_arm64le_native/hcc_aarch64_native_release.sh ++++ b/build/hcc_arm64le_native/hcc_aarch64_native_release.sh +@@ -18,6 +18,7 @@ readonly PREFIX_NATIVE="$PWD/arm64le_build_dir/$INSTALL_NATIVE" + readonly PREFIX_BOLT="$PWD/arm64le_build_dir/llvm-bolt" + readonly PREFIX_OPENSSL="$PWD/arm64le_build_dir/openssl" + readonly PREFIX_MLIR="$PWD/arm64le_build_dir/llvm-mlir" ++readonly PREFIX_AI4C="$PWD/arm64le_build_dir/AI4C" + readonly OUTPUT="$PWD/../../output/$INSTALL_NATIVE" + readonly PARALLEL=$(grep ^processor /proc/cpuinfo | wc -l) + readonly HOST="aarch64-linux-gnu" +@@ -37,7 +38,7 @@ create_directory() { + done + } + +-create_directory $ROOT_NATIVE_DIR/obj $PREFIX_NATIVE $PREFIX_BOLT $PREFIX_OPENSSL $PREFIX_MLIR $OUTPUT $ROOT_NATIVE_DIR/obj/build-gmp $ROOT_NATIVE_DIR/obj/build-mpfr $ROOT_NATIVE_DIR/obj/build-isl $ROOT_NATIVE_DIR/obj/build-mpc $ROOT_NATIVE_DIR/obj/build-binutils $ROOT_NATIVE_DIR/obj/build-gcc-final $ROOT_NATIVE_DIR/obj/build-mathlib $ROOT_NATIVE_DIR/obj/build-jemalloc $ROOT_NATIVE_DIR/obj/build-autofdo $ROOT_NATIVE_DIR/obj/build-llvm-bolt $ROOT_NATIVE_DIR/obj/build-cmake $ROOT_NATIVE_DIR/obj/build-openssl $ROOT_NATIVE_DIR/obj/build-llvm-mlir $ROOT_NATIVE_DIR/obj/build-jsoncpp $ROOT_NATIVE_DIR/obj/build-grpc $ROOT_NATIVE_DIR/obj/build-protobuf $ROOT_NATIVE_DIR/obj/build-client $ROOT_NATIVE_DIR/obj/build-protobuf $ROOT_NATIVE_DIR/obj/build-ncurses ++create_directory $ROOT_NATIVE_DIR/obj $PREFIX_NATIVE $PREFIX_BOLT $PREFIX_OPENSSL $PREFIX_MLIR $PREFIX_AI4C $PREFIX_AI4C/include $PREFIX_AI4C/lib64 $PREFIX_AI4C/models $OUTPUT $ROOT_NATIVE_DIR/obj/build-gmp $ROOT_NATIVE_DIR/obj/build-mpfr $ROOT_NATIVE_DIR/obj/build-isl $ROOT_NATIVE_DIR/obj/build-mpc $ROOT_NATIVE_DIR/obj/build-binutils $ROOT_NATIVE_DIR/obj/build-gcc-final $ROOT_NATIVE_DIR/obj/build-mathlib $ROOT_NATIVE_DIR/obj/build-jemalloc $ROOT_NATIVE_DIR/obj/build-autofdo $ROOT_NATIVE_DIR/obj/build-llvm-bolt $ROOT_NATIVE_DIR/obj/build-cmake $ROOT_NATIVE_DIR/obj/build-openssl $ROOT_NATIVE_DIR/obj/build-llvm-mlir $ROOT_NATIVE_DIR/obj/build-jsoncpp $ROOT_NATIVE_DIR/obj/build-grpc $ROOT_NATIVE_DIR/obj/build-protobuf $ROOT_NATIVE_DIR/obj/build-client $ROOT_NATIVE_DIR/obj/build-protobuf $ROOT_NATIVE_DIR/obj/build-ncurses $ROOT_NATIVE_DIR/obj/build-ai4c $ROOT_NATIVE_DIR/obj/build-AI4C/third-party/cmake-8.25 $ROOT_NATIVE_DIR/obj/build-AI4C/third-party/onnxruntime-1.16.3 + + # 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_NATIVE_SRC/$GCC/libstdc++-v3/src/Makefile.in +@@ -131,3 +131,40 @@ make -j $PARALLEL && make install && popd + echo "Building GCC final..." && pushd $ROOT_NATIVE_DIR/obj/build-gcc-final + LDFLAGS="${SECURE_LDFLAGS} -ldl" CFLAGS="${SECURE_CFLAGS}" CXXFLAGS="${SECURE_CFLAGS}" CFLAGS_FOR_TARGET="${SECURE_CFLAGS}" CXXFLAGS_FOR_TARGET="${SECURE_CFLAGS}" $ROOT_NATIVE_SRC/$GCC/configure --prefix=$PREFIX_NATIVE --enable-shared --enable-threads=posix --enable-checking=release --enable-__cxa_atexit --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,fortran,lto --enable-initfini-array --enable-gnu-indirect-function --with-multilib-list=lp64 --enable-multiarch --with-gnu-as --with-gnu-ld --enable-libquadmath --with-pkgversion="${COMPILER_INFO}" --with-sysroot=/ --with-gmp=$PREFIX_NATIVE --with-mpfr=$PREFIX_NATIVE --with-mpc=$PREFIX_NATIVE --with-isl=$PREFIX_NATIVE --libdir=$PREFIX_NATIVE/lib64 --disable-bootstrap --build=$BUILD --host=$HOST --target=$TARGET --enable-bolt + make -j $PARALLEL && make install && popd ++ ++export PATH=$PWD/arm64le_build_dir/gcc-10.3.1-2024.06-aarch64-linux/bin:$PATH ++export LD_LIBRARY_PATH=$PWD/arm64le_build_dir/gcc-10.3.1-2024.06-aarch64-linux/lib64:$LD_LIBRARY_PATH ++ ++#Temporarily install high version camke required by AI4C. ++echo "Building cmake for AI4C..." && pushd $ROOT_NATIVE_DIR/obj/build-AI4C/third-party/cmake-8.25 ++LDFLAGS="${SECURE_LDFLAGS}" CFLAGS="${SECURE_CFLAGS}" CXXFLAGS="${SECURE_CFLAGS}" $ROOT_NATIVE_SRC/$AI4C/third_party/cmake-3.28.5/configure --prefix=$PREFIX_AI4C/cmake/ ++make -j $PARALLEL && make install -j $PARALLEL && popd ++ ++# install onnxruntime reuqired by AI4C. ++export PATH=$PREFIX_AI4C/cmake/bin:$PATH ++export LD_LIBRARY_PATH=$ROOT_NATIVE_DIR/gcc-10.3.1-2024.06-aarch64-linux/lib64:$LD_LIBRARY_PATH ++echo "Building onnxruntime for AI4C..." && pushd $ROOT_NATIVE_SRC/$AI4C/third_party/onnxruntime-1.16.3 ++export CC=$PREFIX_NATIVE/bin/gcc ++export CXX=$PREFIX_NATIVE/bin/g++ ++ ++cmake -DCMAKE_CXX_COMPILER=$PREFIX_NATIVE/bin/g++ -DCMAKE_INSTALL_PREFIX=$PREFIX_AI4C -DCMAKE_INSTALL_LIBDIR=$PREFIX_AI4C/lib64 -Donnxruntime_INSTALL_INCLUE=$PREFIX_AI4C/include -Donnxruntime_BUILD_SHARED_LIB=ON -Donnxruntime_BUILD_UNIT_TESTS=OFF -Donnxruntime_INSTALL_UNIT_TESTS=OFF -Donnxruntime_BUILD_BENCHMARKS=OFF -Donnxruntime_USE_FULL_PROTOBUF=ON -Donnxruntime_DISABLE_ABSEIL=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -S cmake ++make -j $PARALLEL && make install -j $PARAELLEL ++cp $PREFIX_AI4C/include/onnxruntime/*.h $PREFIX_NATIVE/include/ ++cp $PREFIX_AI4C/include/onnxruntime/*.h $ROOT_NATIVE_SRC/$AI4C/aiframe/include && popd ++ ++# install aiframe required by AI4C. ++export PATH=$PREFIX_AI4C/cmake/bin:$PATH ++echo "Building aiframe for AI4C..." && pushd $ROOT_NATIVE_SRC/$AI4C/aiframe ++export PATH=$ROOT_NATIVE_DIR/gcc-10.3.1-2024.06-aarch64-linux/bin:$PATH ++export LD_LIBRARY_PATH=$ROOT_NATIVE_DIR/gcc-10.3.1-2024.06-aarch64-linux/lib64:$LD_LIBRARY_PATH ++export PATH=$PREFIX_AI4C/cmake/bin:$PATH ++cmake . ++make -j $PARALLEL ++cp $ROOT_NATIVE_SRC/$AI4C/aiframe/*.so $PREFIX_NATIVE/lib64 ++popd ++ ++# add onnx models ++pushd $ROOT_NATIVE_SRC/$AI4C/models ++mkdir $PREFIX_NATIVE/models ++cp $ROOT_NATIVE_SRC/$AI4C/models/*.onnx $PREFIX_NATIVE/models ++popd +diff --git a/build/hcc_arm64le_native/pre_construction.sh b/build/hcc_arm64le_native/pre_construction.sh +index 54b87b2..ad73f64 100644 +--- a/build/hcc_arm64le_native/pre_construction.sh ++++ b/build/hcc_arm64le_native/pre_construction.sh +@@ -46,6 +46,7 @@ tar -xzf $ROOT_BUILD_DIR/open_source/c-ares/$CARES.tar.gz -C $ROOT_NATIVE_SRC + tar -xzf $ROOT_BUILD_DIR/open_source/abseil-cpp/$ABSEIL.tar.gz -C $ROOT_NATIVE_SRC + tar -xzf $ROOT_BUILD_DIR/open_source/re2/${RE2#*-}.tar.gz -C $ROOT_NATIVE_SRC + tar -xzf $ROOT_BUILD_DIR/open_source/jsoncpp/$JSONCPP.tar.gz -C $ROOT_NATIVE_SRC ++tar -xzf $ROOT_BUILD_DIR/open_source/AI4C/$AI4C.tar.gz -C $ROOT_NATIVE_SRC + + apply_patch() { + if [ $1 = "isl" ]; then +@@ -59,8 +60,12 @@ apply_patch() { + done + else + for file in $(grep -ne ^Patch[0-9]*:.*\.patch $ROOT_BUILD_DIR/open_source/$1/$1.spec | awk '{print $2}'); do ++ if [ $1 = "AI4C" ]; then ++ git apply --reject < $ROOT_BUILD_DIR/open_source/$1/$file ++ else + patch --fuzz=0 -p1 <$ROOT_BUILD_DIR/open_source/$1/$file +- done ++ fi ++ done + fi + cd - + } +@@ -96,4 +101,6 @@ mv $ROOT_NATIVE_SRC/$RE2 $ROOT_NATIVE_SRC/$GRPC/third_party/re2 + + apply_patch jsoncpp $JSONCPP + ++apply_patch AI4C $AI4C ++ + chmod 777 $ROOT_NATIVE_SRC -R +-- +2.33.0 + diff --git a/config.xml b/config.xml index 22d81d12e0f26191d22a1f649bbd1506fcd2a0b3..1d4324b68b1f739da2c10c5ec6fa16e706507336 100644 --- a/config.xml +++ b/config.xml @@ -24,3 +24,4 @@ CARES="c-ares-1.18.1" ABSEIL="abseil-cpp-20220623.1" RE2="re2-2021-11-01" JSONCPP="jsoncpp-1.9.5" +AI4C="AI4C-v0.1.0-alpha" diff --git a/gcc-for-openEuler.spec b/gcc-for-openEuler.spec index b08180622a7f66b2e7d2e6c04614c4ceaccd3886..aa8516cc91bff2e04410b0c36e8798156658e439 100644 --- a/gcc-for-openEuler.spec +++ b/gcc-for-openEuler.spec @@ -1,6 +1,6 @@ Name: gcc-for-openEuler Version: 1.0.8 -Release: 13 +Release: 14 Summary: GCC released as a binary package for openEuler and other OSes. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2 and BSD @@ -17,6 +17,7 @@ BuildRequires: chrpath python3 zlib-devel lksctp-tools-devel Patch1: 0001-Change-branch-name-for-jemalloc.patch Patch2: 0002-Bugfix-Append-ldl-to-fix-the-gcc-build-error.patch +Patch3: 0003-Add-build-option-for-AI4C.patch %description GCC released as a binary package for openEuler and other OSes. @@ -44,6 +45,9 @@ sha256sum %{build_name}.tar.gz > %{build_name}.tar.gz.sha256 %attr(755, root, root) /%{build_name}.tar.gz.sha256 %changelog +* Tue Jul 23 2024 Zhao Zhenyu - 1.0.8-14 +- Add build option for AI4C. + * Tue Jun 25 2024 Zheng Chenhui - 1.0.8-13 - Append -ldl to fix the gcc build error.