2019-08-23 11:56:54 -07:00
|
|
|
#!/bin/bash
|
|
|
|
echo Starting build.sh
|
|
|
|
|
|
|
|
PATH=/usr/local/bin:$PATH:$HOME/bin
|
2020-05-21 09:21:35 -07:00
|
|
|
SCRIPTPATH=$(cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)
|
2020-06-30 12:13:20 -07:00
|
|
|
ROOTPATH="$(dirname "$SCRIPTPATH")"
|
2022-07-07 22:54:17 -03:00
|
|
|
echo Building from $SCRIPTPATH
|
2020-04-29 21:38:57 -06:00
|
|
|
cd $SCRIPTPATH
|
2019-08-23 11:56:54 -07:00
|
|
|
|
2022-11-07 09:57:27 -08:00
|
|
|
for i in "$@"
|
|
|
|
do
|
|
|
|
if [[ $i == "clean" ]]; then
|
|
|
|
echo "Cleaning..."
|
|
|
|
rm -rf ../jbuild
|
|
|
|
rm -rf ../jbuild_d
|
|
|
|
exit
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [[ $i == "sdl" ]]; then
|
|
|
|
echo "Using SDL"
|
|
|
|
USE_SDL="-DBF_ENABLE_SDL=1"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [[ $i == "no_ffi" ]]; then
|
|
|
|
echo "Disabling FFI"
|
|
|
|
USE_FFI="-DBF_DISABLE_FFI=1"
|
|
|
|
fi
|
|
|
|
done
|
2022-07-07 22:54:17 -03:00
|
|
|
|
2022-07-07 21:22:08 -03:00
|
|
|
if command -v ninja >/dev/null 2>&1 ; then
|
2022-07-07 22:54:17 -03:00
|
|
|
CAN_USE_NINJA=1
|
|
|
|
if [ -d ../jbuild_d ] && [ ! -f ../jbuild_d/build.ninja ]; then
|
|
|
|
CAN_USE_NINJA=0
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ $CAN_USE_NINJA == 1 ]; then
|
|
|
|
echo "Ninja is enabled for this build."
|
|
|
|
USE_NINJA="-GNinja"
|
|
|
|
else
|
|
|
|
echo "Ninja couldn't be enabled for this build, consider doing a clean build to start using Ninja for faster build speeds."
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
echo "Ninja isn't installed, consider installing it for faster build speeds."
|
2022-07-07 21:22:08 -03:00
|
|
|
fi
|
|
|
|
|
2024-05-06 12:43:52 -04:00
|
|
|
LLVM_CONFIG=$(command -v llvm-config-18 2>/dev/null || command -v llvm-config 2>/dev/null)
|
2024-02-16 18:40:58 -03:00
|
|
|
LLVM_FOUND=0
|
|
|
|
|
|
|
|
if [ -n "$LLVM_CONFIG" ]; then
|
|
|
|
LLVM_VERSION=$($LLVM_CONFIG --version)
|
|
|
|
LLVM_MAJOR_VERSION=$(echo "$LLVM_VERSION" | cut -d. -f1)
|
2024-05-06 12:43:52 -04:00
|
|
|
if [ "$LLVM_MAJOR_VERSION" = "18" ]; then
|
2024-02-16 18:40:58 -03:00
|
|
|
LLVM_FOUND=1
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2024-02-17 15:04:04 -03:00
|
|
|
# exit when any command fails
|
|
|
|
set -e
|
|
|
|
|
|
|
|
### Dependencies ###
|
|
|
|
|
2024-05-06 12:43:52 -04:00
|
|
|
if [ ! -f ../extern/llvm_linux_18_1_4/_Done.txt ] && [ $LLVM_FOUND == 0 ]; then
|
|
|
|
echo "ERROR: LLVM 18 was not detected on your system. Please install the package 'llvm-18-dev' and try again." >&2
|
2024-02-16 18:40:58 -03:00
|
|
|
echo "ERROR: As an alternative, you can compile LLVM from source using the script 'extern/llvm_build.sh'." >&2
|
|
|
|
exit
|
2019-08-24 08:01:43 -07:00
|
|
|
fi
|
|
|
|
|
2024-02-17 15:04:04 -03:00
|
|
|
if [ ! -f ../BeefySysLib/third_party/libffi/Makefile ]; then
|
|
|
|
echo Building libffi...
|
|
|
|
cd ../BeefySysLib/third_party/libffi
|
|
|
|
./configure
|
|
|
|
make
|
|
|
|
cd $SCRIPTPATH
|
|
|
|
fi
|
|
|
|
|
2019-08-23 11:56:54 -07:00
|
|
|
### LIBS ###
|
|
|
|
|
|
|
|
cd ..
|
|
|
|
if [ ! -d jbuild_d ]; then
|
|
|
|
mkdir jbuild_d
|
|
|
|
mkdir jbuild
|
|
|
|
fi
|
2022-11-07 09:57:27 -08:00
|
|
|
|
2019-08-23 11:56:54 -07:00
|
|
|
cd jbuild_d
|
2022-11-07 09:57:27 -08:00
|
|
|
|
|
|
|
echo cmake $USE_NINJA $USE_SDL -DCMAKE_BUILD_TYPE=Debug ../
|
|
|
|
|
|
|
|
cmake $USE_NINJA $USE_SDL $USE_FFI -DCMAKE_BUILD_TYPE=Debug ../
|
2019-08-23 11:56:54 -07:00
|
|
|
cmake --build .
|
|
|
|
cd ../jbuild
|
2022-11-07 09:57:27 -08:00
|
|
|
cmake $USE_NINJA $USE_SDL $USE_FFI -DCMAKE_BUILD_TYPE=RelWithDebInfo ../
|
2019-08-23 11:56:54 -07:00
|
|
|
cmake --build .
|
|
|
|
|
|
|
|
cd ../IDE/dist
|
|
|
|
|
2019-10-14 14:08:29 -07:00
|
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
2019-10-15 12:28:21 -07:00
|
|
|
LIBEXT=dylib
|
2022-07-27 15:39:47 +02:00
|
|
|
LINKOPTS="-Wl,-no_compact_unwind -Wl,-rpath -Wl,@executable_path"
|
2019-10-14 14:08:29 -07:00
|
|
|
else
|
2022-07-27 15:39:47 +02:00
|
|
|
LIBEXT=so
|
2020-05-21 06:58:26 -07:00
|
|
|
LINKOPTS="-ldl -lpthread -Wl,-rpath -Wl,\$ORIGIN"
|
2019-10-14 14:08:29 -07:00
|
|
|
fi
|
|
|
|
|
2020-06-30 12:13:20 -07:00
|
|
|
ln -s -f $ROOTPATH/jbuild_d/Debug/bin/libBeefRT_d.a libBeefRT_d.a
|
|
|
|
ln -s -f $ROOTPATH/jbuild_d/Debug/bin/libBeefySysLib_d.$LIBEXT libBeefySysLib_d.$LIBEXT
|
|
|
|
ln -s -f $ROOTPATH/jbuild_d/Debug/bin/libIDEHelper_d.$LIBEXT libIDEHelper_d.$LIBEXT
|
2019-10-14 14:08:29 -07:00
|
|
|
|
2020-06-30 12:13:20 -07:00
|
|
|
ln -s -f $ROOTPATH/jbuild/Release/bin/libBeefRT.a libBeefRT.a
|
|
|
|
ln -s -f $ROOTPATH/jbuild/Release/bin/libBeefySysLib.$LIBEXT libBeefySysLib.$LIBEXT
|
|
|
|
ln -s -f $ROOTPATH/jbuild/Release/bin/libIDEHelper.$LIBEXT libIDEHelper.$LIBEXT
|
2019-08-23 11:56:54 -07:00
|
|
|
|
2021-12-03 15:09:43 -08:00
|
|
|
ln -s -f $ROOTPATH/jbuild_d/Debug/bin/libBeefRT_d.a ../../BeefLibs/Beefy2D/dist/libBeefRT_d.a
|
|
|
|
ln -s -f $ROOTPATH/jbuild_d/Debug/bin/libBeefySysLib_d.$LIBEXT ../../BeefLibs/Beefy2D/dist/libBeefySysLib_d.$LIBEXT
|
|
|
|
ln -s -f $ROOTPATH/jbuild_d/Debug/bin/libIDEHelper_d.$LIBEXT ../../BeefLibs/Beefy2D/dist/libIDEHelper_d.$LIBEXT
|
|
|
|
|
2021-12-03 14:53:32 -08:00
|
|
|
ln -s -f $ROOTPATH/jbuild/Release/bin/libBeefRT.a ../../BeefLibs/Beefy2D/dist/libBeefRT.a
|
|
|
|
ln -s -f $ROOTPATH/jbuild/Release/bin/libBeefySysLib.$LIBEXT ../../BeefLibs/Beefy2D/dist/libBeefySysLib.$LIBEXT
|
|
|
|
ln -s -f $ROOTPATH/jbuild/Release/bin/libIDEHelper.$LIBEXT ../../BeefLibs/Beefy2D/dist/libIDEHelper.$LIBEXT
|
|
|
|
|
2019-08-23 11:56:54 -07:00
|
|
|
### DEBUG ###
|
|
|
|
|
|
|
|
echo Building BeefBuild_bootd
|
2020-05-21 12:55:58 -07:00
|
|
|
../../jbuild_d/Debug/bin/BeefBoot --out="BeefBuild_bootd" --src=../src --src=../../BeefBuild/src --src=../../BeefLibs/corlib/src --src=../../BeefLibs/Beefy2D/src --define=CLI --define=DEBUG --startup=BeefBuild.Program --linkparams="./libBeefRT_d.a ./libIDEHelper_d.$LIBEXT ./libBeefySysLib_d.$LIBEXT $(< ../../IDE/dist/IDEHelper_libs_d.txt) $LINKOPTS"
|
2019-08-23 11:56:54 -07:00
|
|
|
echo Building BeefBuild_d
|
2019-10-15 17:27:09 -07:00
|
|
|
./BeefBuild_bootd -clean -proddir=../../BeefBuild -config=Debug
|
2019-08-23 11:56:54 -07:00
|
|
|
echo Testing IDEHelper/Tests in BeefBuild_d
|
|
|
|
./BeefBuild_d -proddir=../../IDEHelper/Tests -test
|
|
|
|
|
|
|
|
### RELEASE ###
|
|
|
|
|
|
|
|
echo Building BeefBuild_boot
|
2020-05-21 12:55:58 -07:00
|
|
|
../../jbuild/Release/bin/BeefBoot --out="BeefBuild_boot" --src=../src --src=../../BeefBuild/src --src=../../BeefLibs/corlib/src --src=../../BeefLibs/Beefy2D/src --define=CLI --startup=BeefBuild.Program --linkparams="./libBeefRT.a ./libIDEHelper.$LIBEXT ./libBeefySysLib.$LIBEXT $(< ../../IDE/dist/IDEHelper_libs.txt) $LINKOPTS"
|
2020-03-08 14:47:17 +05:30
|
|
|
echo Building BeefBuild
|
2019-10-15 17:27:09 -07:00
|
|
|
./BeefBuild_boot -clean -proddir=../../BeefBuild -config=Release
|
2019-08-23 11:56:54 -07:00
|
|
|
echo Testing IDEHelper/Tests in BeefBuild
|
|
|
|
./BeefBuild -proddir=../../IDEHelper/Tests -test
|