diff options
Diffstat (limited to 'misc/build_scripts/buildbot_plugin.sh')
-rw-r--r-- | misc/build_scripts/buildbot_plugin.sh | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/misc/build_scripts/buildbot_plugin.sh b/misc/build_scripts/buildbot_plugin.sh new file mode 100644 index 0000000..8ddd47a --- /dev/null +++ b/misc/build_scripts/buildbot_plugin.sh @@ -0,0 +1,65 @@ +#!/bin/bash +# This is similar to buildbot.sh but builds plugins for the game instead +# Some variables must be set before invoking this script. See buildtestplugin.sh +cd $ROOT +echo $(pwd) +FILES=$(find . -type f -name "*.c" | tr '\n' ' ') +FLAGS="-shared -fPIC -O1 -s -std=c99" +echo $FILES + +# ----------------------------- compile linux +NIX32_CC="gcc -m32" +NIX64_CC="gcc -m64" +NIX_FLAGS="-nostartfiles -Wl,--entry=0" + +echo "Compiling linux32.." +$NIX32_CC $FILES -I ~/client/src/ -I ./src/ -o ${PLUGIN}_nix32.so $FLAGS $NIX_FLAGS + +echo "Compiling linux64.." +$NIX64_CC $FILES -I ~/client/src/ -I ./src/ -o ${PLUGIN}_nix64.so $FLAGS $NIX_FLAGS + +# ----------------------------- compile macOS +MAC32_CC=~/osx/target/bin/o32-clang +MAC64_CC=~/osx/target/bin/o64-clang +MAC_FLAGS="-undefined dynamic_lookup" + +echo "Compiling mac32.." +$MAC32_CC $FILES -I ~/client/src/ -I ./src/ -o ${PLUGIN}_mac32.dylib $FLAGS $MAC_FLAGS + +echo "Compiling mac64.." +$MAC64_CC $FILES -I ~/client/src/ -I ./src/ -o ${PLUGIN}_mac64.dylib $FLAGS $MAC_FLAGS + +# ----------------------------- compile Windows +WIN32_CC=i686-w64-mingw32-gcc +WIN64_CC=x86_64-w64-mingw32-gcc +# TODO: Figure out why we sometimes need this with mingw +# If we don't include nostart files for some plugins, get a +# ertr000001.o:(.rdata+0x0): undefined reference to `_pei386_runtime_relocator' +# Seems to happen if you use exported variables from the game +if [ -z "$LITE_MODE" ]; then + WIN_FLAGS="" +else + WIN_FLAGS="-nostartfiles -Wl,--entry=0" +fi +# NOTE: You also need to install 'mingw-w64-tools' package for gendef + +echo "Compiling win32" +rm ClassiCube.exe ClassiCube.def +cp ~/client/src/cc-w32-d3d.exe ClassiCube.exe +gendef ClassiCube.exe +i686-w64-mingw32-dlltool -d ClassiCube.def -l libClassiCube.a -D ClassiCube.exe +$WIN32_CC $FILES -I ~/client/src/ -I ./src/ -o ${PLUGIN}_win32.dll $FLAGS $WIN_FLAGS -L . -lClassiCube + +echo "Compiling win64" +rm ClassiCube.exe ClassiCube.def +cp ~/client/src/cc-w64-d3d.exe ClassiCube.exe +gendef ClassiCube.exe +x86_64-w64-mingw32-dlltool -d ClassiCube.def -l libClassiCube.a -D ClassiCube.exe +$WIN64_CC $FILES -I ~/client/src/ -I ./src/ -o ${PLUGIN}_win64.dll $FLAGS $WIN_FLAGS -L . -lClassiCube + +# ----------------------------- compile raspberry pi +RPI_CC=~/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-gcc-4.8.3 +RPI_FLAGS="-nostartfiles -Wl,--entry=0" + +echo "Compiling rpi" +$RPI_CC $FILES -I ~/client/src/ -I ./src/ -o ${PLUGIN}_rpi.so $FLAGS $RPI_FLAGS \ No newline at end of file |