bloat-buster/project.sh
2024-11-04 12:55:35 -06:00

133 lines
2.9 KiB
Bash
Executable File

#!/usr/bin/env bash
set -eux
original_dir=$PWD
build_dir=$original_dir/build
C_COMPILER_PATH=clang
CXX_COMPILER_PATH=clang++
ASM_COMPILER_PATH=clang
if [[ -z "${BIRTH_OS-}" ]]; then
case "$OSTYPE" in
msys*)
BIRTH_OS=windows
;;
linux*)
BIRTH_OS=linux
;;
darwin*)
BIRTH_OS=macos
;;
*)
exit 1
;;
esac
fi
case "$BIRTH_OS" in
linux)
ls -las /
ls -las /usr
ls -las /usr/lib
;;
*)
;;
esac
if [[ -z "${BIRTH_ARCH-}" ]]; then
case "$(uname -m)" in
x86_64)
BIRTH_ARCH=x86_64;;
arm64)
BIRTH_ARCH=aarch64;;
*)
exit 1;;
esac
fi
if [[ -z "${CMAKE_BUILD_TYPE-}" ]]; then
CMAKE_BUILD_TYPE=Debug
fi
if [[ -z "${CMAKE_PREFIX_PATH-}" ]]; then
CMAKE_PREFIX_PATH="$HOME/Downloads/llvm-$BIRTH_ARCH-$BIRTH_OS-$CMAKE_BUILD_TYPE"
fi
if [[ -z "${BUSTER_GITHUB_MAIN_RUN-}" ]]; then
BUSTER_GITHUB_MAIN_RUN=false
fi
if [[ -n "${IS_CI-}" ]]; then
IS_CI=ON
else
IS_CI=OFF
fi
case $BIRTH_OS in
windows)
C_COMPILER_OPT_ARG="-DCMAKE_C_COMPILER_TARGET=x86_64-pc-windows-msvc"
CXX_COMPILER_OPT_ARG="-DCMAKE_CXX_COMPILER_TARGET=x86_64-pc-windows-msvc"
ASM_COMPILER_OPT_ARG="-DCMAKE_ASM_COMPILER_TARGET=x86_64-pc-windows-msvc"
;;
*)
C_COMPILER_OPT_ARG=""
CXX_COMPILER_OPT_ARG=""
ASM_COMPILER_OPT_ARG=""
;;
esac
case $BIRTH_OS in
linux)
USE_MOLD_OPT_ARG=-DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=mold"
;;
*)
USE_MOLD_OPT_ARG=""
;;
esac
mkdir -p $build_dir
cmake . \
-B$build_dir \
-G Ninja \
-DCMAKE_BUILD_TYPE="$CMAKE_BUILD_TYPE" \
-DCMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH \
-DCMAKE_C_COMPILER=$C_COMPILER_PATH \
-DCMAKE_CXX_COMPILER=$CXX_COMPILER_PATH \
-DCMAKE_ASM_COMPILER=$ASM_COMPILER_PATH \
-DIS_CI=$IS_CI \
$USE_MOLD_OPT_ARG \
$C_COMPILER_OPT_ARG \
$CXX_COMPILER_OPT_ARG \
$ASM_COMPILER_OPT_ARG
cd $build_dir
ninja -v
cd $original_dir
if [ "$#" -ne 0 ]; then
$build_dir/runner $@
fi
if [ "$BUSTER_GITHUB_MAIN_RUN" == "true" ]; then
case "$BIRTH_OS" in
windows)
OPT_EXTENSION=".exe";;
*)
OPT_EXTENSION="";;
esac
BB_EXE_PATH="$build_dir/bb$OPT_EXTENSION"
BB_INSTALL_NAME=bloat-buster-$BIRTH_ARCH-$BIRTH_OS-$CMAKE_BUILD_TYPE
BB_INSTALL_PATH="$PWD/$BB_INSTALL_NAME"
mkdir -p $BB_INSTALL_PATH
cp $BB_EXE_PATH $BB_INSTALL_PATH
7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=64m -ms=on $BB_INSTALL_NAME.7z $BB_INSTALL_PATH
b2sum $BB_INSTALL_NAME.7z > "$BB_INSTALL_NAME.7z.b2sum"
case "$BIRTH_OS" in
windows) BB_INSTALL_PATH="$(cygpath -w ${BB_INSTALL_PATH})" ;;
*) ;;
esac
echo "BLOAT_BUSTER_RELEASE_PATH_BASE=$BB_INSTALL_PATH" >> $GITHUB_ENV
fi