geode/loader/dobby/build-workspace/auto-build.sh
2022-07-30 19:24:03 +03:00

149 lines
6.8 KiB
Bash

#!/bin/sh
# if error, exit
set -
CURRENT_DIR=$(dirname "$0")
SOURCE_DIR=${CURRENT_DIR}/..
compress_dir_array=""
summary_output_dir_name=auto-build-output
rm -rf ${summary_output_dir_name}
# Darwin ================================================================
darwin_library_name=libdobby.a
darwin_fat_library_name=libdobby.a
# build macos x86_64
output_dir_name=auto-build-workspace/darwin-x86_64-build
echo "prepare build ${output_dir_name}"
mkdir -p ${CURRENT_DIR}/${output_dir_name}
cmake -S ${SOURCE_DIR} -B ${output_dir_name} -DCMAKE_BUILD_TYPE=Release \
-DDOBBY_GENERATE_SHARED=OFF -DDOBBY_DEBUG=OFF
cmake --build ${output_dir_name} --parallel 4 --target dobby
mkdir -p ${summary_output_dir_name}/darwin/x86_64
cp -r ${output_dir_name}/${darwin_library_name} ${summary_output_dir_name}/darwin/x86_64
# build iphone arm64
output_dir_name=auto-build-workspace/darwin-arm64-build
compress_dir_array="$compress_dir_array $output_dir_name"
echo "prepare build ${output_dir_name}"
mkdir -p ${CURRENT_DIR}/${output_dir_name}
cmake -S ${SOURCE_DIR} -B ${output_dir_name} -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_ARCHITECTURES=arm64 -DCMAKE_SYSTEM_PROCESSOR=arm64 -DCMAKE_OSX_DEPLOYMENT_TARGET=9.3 \
-DDOBBY_GENERATE_SHARED=OFF -DDOBBY_DEBUG=OFF
cmake --build ${output_dir_name} --parallel 4 --target dobby
mkdir -p ${summary_output_dir_name}/darwin/arm64
cp -r ${output_dir_name}/${darwin_library_name} ${summary_output_dir_name}/darwin/arm64
# build iphone arm64e
output_dir_name=auto-build-workspace/darwin-arm64e-build
compress_dir_array="$compress_dir_array $output_dir_name"
echo "prepare build ${output_dir_name}"
mkdir -p ${CURRENT_DIR}/${output_dir_name}
cmake -S ${SOURCE_DIR} -B ${output_dir_name} -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE=cmake/ios.toolchain.cmake \
-DPLATFORM=OS64 -DARCHS="arm64e" -DCMAKE_SYSTEM_PROCESSOR=arm64e \
-DENABLE_BITCODE=0 -DENABLE_ARC=0 -DENABLE_VISIBILITY=1 -DDEPLOYMENT_TARGET=9.3 \
-DDOBBY_GENERATE_SHARED=OFF -DDOBBY_DEBUG=OFF
cmake --build ${output_dir_name} --parallel 4 --target dobby
mkdir -p ${summary_output_dir_name}/darwin/arm64e
cp -r ${output_dir_name}/${darwin_library_name} ${summary_output_dir_name}/darwin/arm64e
# build darwin universal
output_dir_name=auto-build-workspace/darwin-universal-build
echo "prepare build ${output_dir_name}"
mkdir -p ${CURRENT_DIR}/${output_dir_name}
cp -r ${summary_output_dir_name}/darwin/arm64/${darwin_library_name} ${output_dir_name}
# create universal fat lib
lipo -create \
${summary_output_dir_name}/darwin/arm64/${darwin_fat_library_name} \
${summary_output_dir_name}/darwin/arm64e/${darwin_fat_library_name} \
${summary_output_dir_name}/darwin/x86_64/${darwin_fat_library_name} \
-output ${output_dir_name}/${darwin_fat_library_name}
mkdir -p ${summary_output_dir_name}/darwin/universal
cp -r ${output_dir_name}/${darwin_library_name} ${summary_output_dir_name}/darwin/universal
# Android ================================================================
android_library_name=libdobby.a
# build android aarch64
output_dir_name=auto-build-workspace/android-arm64-build
compress_dir_array="$compress_dir_array $output_dir_name"
echo "prepare build ${output_dir_name}"
cmake -S ${SOURCE_DIR} -B ${output_dir_name} -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_SYSTEM_NAME=Android -DCMAKE_ANDROID_ARCH_ABI="arm64-v8a" -DCMAKE_ANDROID_NDK=$ANDROID_NDK_DIR -DCMAKE_SYSTEM_VERSION=21 -DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=clang \
-DDOBBY_GENERATE_SHARED=OFF -DDOBBY_DEBUG=OFF -DPlugin.Android.BionicLinkerRestriction=ON
cmake --build ${output_dir_name} --parallel 4 --target dobby
mkdir -p ${summary_output_dir_name}/android/arm64
mv ${output_dir_name}/${android_library_name} ${summary_output_dir_name}/android/arm64/${android_library_name}
mv ${output_dir_name}/${android_library_name} "prefab/modules/dobby/libs/android.arm64-v8a/${android_library_name}"
# build android armv7
output_dir_name=auto-build-workspace/android-armv7-build
compress_dir_array="$compress_dir_array $output_dir_name"
echo "prepare build ${output_dir_name}"
cmake -S ${SOURCE_DIR} -B ${output_dir_name} -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_SYSTEM_NAME=Android -DCMAKE_ANDROID_ARCH_ABI="armeabi-v7a" -DCMAKE_ANDROID_NDK=$ANDROID_NDK_DIR -DCMAKE_SYSTEM_VERSION=16 -DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=clang \
-DDOBBY_GENERATE_SHARED=OFF -DDOBBY_DEBUG=OFF -DPlugin.Android.BionicLinkerRestriction=ON
cmake --build ${output_dir_name} --parallel 4 --target dobby
mkdir -p ${summary_output_dir_name}/android/armv7
mv ${output_dir_name}/${android_library_name} ${summary_output_dir_name}/android/armv7/${android_library_name}
mv ${output_dir_name}/${android_library_name} "prefab/modules/dobby/libs/android.armeabi-v7a/${android_library_name}"
# build android x86
output_dir_name=auto-build-workspace/android-x86-build
compress_dir_array="$compress_dir_array $output_dir_name"
echo "prepare build ${output_dir_name}"
cmake -S ${SOURCE_DIR} -B ${output_dir_name} -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_SYSTEM_NAME=Android -DCMAKE_ANDROID_ARCH_ABI="x86" -DCMAKE_ANDROID_NDK=$ANDROID_NDK_DIR -DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=clang \
-DDOBBY_GENERATE_SHARED=OFF -DDOBBY_DEBUG=OFF -DPlugin.Android.BionicLinkerRestriction=ON
cmake --build ${output_dir_name} --parallel 4 --target dobby
mkdir -p ${summary_output_dir_name}/android/x86
mv ${output_dir_name}/${android_library_name} ${summary_output_dir_name}/android/x86/${android_library_name}
mv ${output_dir_name}/${android_library_name} "prefab/modules/dobby/libs/android.x86/${android_library_name}"
# build android x86_64
output_dir_name=auto-build-workspace/android-x86_64-build
compress_dir_array="$compress_dir_array $output_dir_name"
echo "prepare build ${output_dir_name}"
cmake -S ${SOURCE_DIR} -B ${output_dir_name} -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_SYSTEM_NAME=Android -DCMAKE_ANDROID_ARCH_ABI="x86_64" -DCMAKE_ANDROID_NDK=$ANDROID_NDK_DIR -DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=clang \
-DDOBBY_GENERATE_SHARED=OFF -DDOBBY_DEBUG=OFF -DPlugin.Android.BionicLinkerRestriction=ON
cmake --build ${output_dir_name} --parallel 4 --target dobby
mkdir -p ${summary_output_dir_name}/android/x86_64
mv ${output_dir_name}/${android_library_name} ${summary_output_dir_name}/android/x86_64/${android_library_name}
#mv ${output_dir_name}/${android_library_name} "prefab/modules/dobby/libs/android.x86_64/${android_library_name}"
## zip android prefab
#mkdir -p prefab/modules/dobby/include
#cp "include/dobby.h" "prefab/modules/dobby/include/"
#cp "builtin-plugin/BionicLinkerRestriction/bionic_linker_restriction.h" "prefab/modules/dobby/include/"
#cp "builtin-plugin/SymbolResolver/dobby_symbol_resolver.h" "prefab/modules/dobby/include/"
#cp "prefab/AndroidManifest.xml" .
#zip -r ${summary_output_dir_name}/android_prefab.aar prefab AndroidManifest.xml -x prefab/AndroidManifest.xml
if [ $DOBBY_BUILD_OUTPUT_NAME ]; then
tar czvf ${DOBBY_BUILD_OUTPUT_NAME} ${summary_output_dir_name}
fi