summary refs log tree commit diff
path: root/misc/build_scripts/buildbot_plugin.sh
diff options
context:
space:
mode:
Diffstat (limited to 'misc/build_scripts/buildbot_plugin.sh')
-rw-r--r--misc/build_scripts/buildbot_plugin.sh65
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