diff --git a/build2.sh b/build2.sh new file mode 100755 index 00000000000..dc7f71d9e27 --- /dev/null +++ b/build2.sh @@ -0,0 +1,70 @@ +#!/bin/bash + +cmake_flags=( + # CMAKE_BUILD_TYPE + # values: Release/Debug + -DCMAKE_BUILD_TYPE=Release + + # CMAKE_VERBOSE_MAKEFILE + # ON: verbose build output, OFF: silent build output + -DCMAKE_VERBOSE_MAKEFILE=ON + + -DOB_BUILD_RPM=OFF + + # OB_USE_CLANG + # ON: use clang, OFF: use gcc + -DOB_USE_CLANG=ON + + # OB_USE_LLVM_LIBTOOLS + # ON: use lld & llvm-objcopy, OFF: use ld & objcopy + -DOB_USE_LLVM_LIBTOOLS=ON + + -DOB_COMPRESS_DEBUG_SECTIONS=OFF + -DOB_STATIC_LINK_LGPL_DEPS=OFF + + -DOB_USE_CCACHE=OFF + -DOB_ENABLE_PCH=ON + -DOB_ENALBE_UNITY=ON + -DOB_MAX_UNITY_BATCH_SIZE=30 + -DOB_USE_ASAN=OFF + + -DOB_RELEASEID=1 +) + +# check the depends library +for i in openssl RapidJSON libisal; do + pkg-config --exists $i + if [ $? -ne 0 ];then + echo "Please install $i" + exit + fi +done + +# use split build directory for gcc/clang (release/debug) +BUILD_DIR=build +eval "export `echo "${cmake_flags[@]}" | sed 's/\-D//g'`" +if [ $OB_USE_CLANG == "ON" ]; then + BUILD_DIR="${BUILD_DIR}.clang" +elif [ $OB_USE_CLANG == "OFF" ]; then + BUILD_DIR="${BUILD_DIR}.gcc" +fi + +if [ $OB_USE_LLVM_LIBTOOLS == "ON" ]; then + BUILD_DIR="${BUILD_DIR}.lld" +elif [ $OB_USE_LLVM_LIBTOOLS == "OFF" ]; then + BUILD_DIR="${BUILD_DIR}.ld" +fi + +if [ $CMAKE_BUILD_TYPE == "Release" ];then + BUILD_DIR="${BUILD_DIR}.release" +elif [ $CMAKE_BUILD_TYPE == "Debug" ];then + BUILD_DIR="${BUILD_DIR}.debug" +fi +eval "unset `echo "${cmake_flags[@]}" | sed 's/\-D//g' | sed 's/=[0-9a-zA-Z]*/ /g'`" + +[ -d $BUILD_DIR ] || mkdir -p $BUILD_DIR +cd $BUILD_DIR + +cmake "${cmake_flags[@]}" .. + +make -j`nproc` 2>&1 | tee build.log