update buildbot to compile windows build without linking to mingw startup code

This commit is contained in:
UnknownShadow200 2019-07-04 18:30:16 +10:00
parent 64b325879a
commit 600c46eb1b
2 changed files with 42 additions and 20 deletions

View File

@ -24,35 +24,49 @@
# change these as needed # change these as needed
SOURCE_DIR=~/client SOURCE_DIR=~/client
EMSCRIPTEN_PATH=/usr/bin/emscripten/emcc EMSCRIPTEN_PATH=/usr/bin/emscripten/emcc
CLANGOSX_PATH=/usr/bin/clang/osx
# to simplify stuff
ALL_FLAGS="-O1 -s -fno-stack-protector -fno-math-errno -w"
WIN_FLAGS="-mwindows -nostartfiles -Wl,-e_main_real -DCC_NOMAIN"
# ----------------------------- # -----------------------------
c_build_win32() { build_win32() {
echo "Building win32.."
cp $SOURCE_DIR/misc/CCicon_32.res $SOURCE_DIR/src/CCicon_32.res cp $SOURCE_DIR/misc/CCicon_32.res $SOURCE_DIR/src/CCicon_32.res
rm cc-w32-d3d.exe cc-w32-ogl.exe rm cc-w32-d3d.exe cc-w32-ogl.exe
i686-w64-mingw32-gcc *.c -O1 -s -fno-stack-protector -fno-math-errno -DCC_COMMIT_SHA=\"$LATEST\" -o cc-w32-d3d.exe CCicon_32.res -mwindows -lws2_32 -lwininet -lwinmm -limagehlp -lcrypt32 -ld3d9 -w i686-w64-mingw32-gcc *.c $ALL_FLAGS $WIN_FLAGS -o cc-w32-d3d.exe CCicon_32.res -DCC_COMMIT_SHA=\"$LATEST\" -lws2_32 -lwininet -lwinmm -limagehlp -lcrypt32 -ld3d9
i686-w64-mingw32-gcc *.c -O1 -s -fno-stack-protector -fno-math-errno -DCC_COMMIT_SHA=\"$LATEST\" -o cc-w32-ogl.exe CCicon_32.res -DCC_BUILD_MANUAL -DCC_BUILD_WIN -DCC_BUILD_GL -DCC_BUILD_WINGUI -DCC_BUILD_WGL -DCC_BUILD_WINMM -DCC_BUILD_WININET -mwindows -lws2_32 -lwininet -lwinmm -limagehlp -lcrypt32 -lopengl32 -w i686-w64-mingw32-gcc *.c $ALL_FLAGS $WIN_FLAGS -o cc-w32-ogl.exe CCicon_32.res -DCC_COMMIT_SHA=\"$LATEST\" -DCC_BUILD_MANUAL -DCC_BUILD_WIN -DCC_BUILD_GL -DCC_BUILD_WINGUI -DCC_BUILD_WGL -DCC_BUILD_WINMM -DCC_BUILD_WININET -lws2_32 -lwininet -lwinmm -limagehlp -lcrypt32 -lopengl32
} }
c_build_win64() { build_win64() {
echo "Building win64.."
cp $SOURCE_DIR/misc/CCicon_64.res $SOURCE_DIR/src/CCicon_64.res cp $SOURCE_DIR/misc/CCicon_64.res $SOURCE_DIR/src/CCicon_64.res
rm cc-w64-d3d.exe cc-w64-ogl.exe rm cc-w64-d3d.exe cc-w64-ogl.exe
x86_64-w64-mingw32-gcc *.c -O1 -s -fno-stack-protector -fno-math-errno -DCC_COMMIT_SHA=\"$LATEST\" -o cc-w64-d3d.exe CCicon_64.res -mwindows -lws2_32 -lwininet -lwinmm -limagehlp -lcrypt32 -ld3d9 -w x86_64-w64-mingw32-gcc *.c $ALL_FLAGS $WIN_FLAGS -o cc-w64-d3d.exe CCicon_64.res -DCC_COMMIT_SHA=\"$LATEST\" -lws2_32 -lwininet -lwinmm -limagehlp -lcrypt32 -ld3d9
x86_64-w64-mingw32-gcc *.c -O1 -s -fno-stack-protector -fno-math-errno -DCC_COMMIT_SHA=\"$LATEST\" -o cc-w64-ogl.exe CCicon_64.res -DCC_BUILD_MANUAL -DCC_BUILD_WIN -DCC_BUILD_GL -DCC_BUILD_WINGUI -DCC_BUILD_WGL -DCC_BUILD_WINMM -DCC_BUILD_WININET -mwindows -lws2_32 -lwininet -lwinmm -limagehlp -lcrypt32 -lopengl32 -w x86_64-w64-mingw32-gcc *.c $ALL_FLAGS $WIN_FLAGS -o cc-w64-ogl.exe CCicon_64.res -DCC_COMMIT_SHA=\"$LATEST\" -DCC_BUILD_MANUAL -DCC_BUILD_WIN -DCC_BUILD_GL -DCC_BUILD_WINGUI -DCC_BUILD_WGL -DCC_BUILD_WINMM -DCC_BUILD_WININET -lws2_32 -lwininet -lwinmm -limagehlp -lcrypt32 -lopengl32
} }
c_build_nix32() { build_nix32() {
echo "Building linux32.."
rm cc-nix32 rm cc-nix32
gcc *.c -O1 -fvisibility=hidden -s -rdynamic -fno-stack-protector -fno-math-errno -DCC_COMMIT_SHA=\"$LATEST\" -m32 -o cc-nix32 -lX11 -lpthread -lGL -lm -lcurl -lopenal -ldl -w gcc *.c $ALL_FLAGS -fvisibility=hidden -rdynamic -DCC_COMMIT_SHA=\"$LATEST\" -m32 -o cc-nix32 -lX11 -lpthread -lGL -lm -lcurl -lopenal -ldl
} }
c_build_nix64() { build_nix64() {
echo "Building linux64.."
rm cc-nix64 rm cc-nix64
gcc *.c -O1 -fvisibility=hidden -s -rdynamic -fno-stack-protector -fno-math-errno -DCC_COMMIT_SHA=\"$LATEST\" -m64 -o cc-nix64 -lX11 -lpthread -lGL -lm -lcurl -lopenal -ldl -w gcc *.c $ALL_FLAGS -fvisibility=hidden -rdynamic -DCC_COMMIT_SHA=\"$LATEST\" -m64 -o cc-nix64 -lX11 -lpthread -lGL -lm -lcurl -lopenal -ldl
} }
c_build_web() { build_osx32() {
echo "Building mac32.."
rm cc-osx32
$CLANGOSX_PATH *.c $ALL_FLAGS -fvisibility=hidden -rdynamic -DCC_COMMIT_SHA=\"$LATEST\" -o cc-osx32 -framework Carbon -framework AGL -framework OpenAL -framework OpenGL -lcurl
}
build_web() {
echo "Building web.." echo "Building web.."
rm cc.js rm cc.js
$EMSCRIPTEN_PATH *.c -O1 -o cc.js -s FETCH=1 -s WASM=0 -s ALLOW_MEMORY_GROWTH=1 --preload-file texpacks/default.zip -w $EMSCRIPTEN_PATH *.c -O1 -o cc.js -s FETCH=1 -s WASM=0 -s ALLOW_MEMORY_GROWTH=1 --preload-file texpacks/default.zip -w
@ -73,8 +87,9 @@ git fetch --all
git reset --hard origin/master git reset --hard origin/master
LATEST=`git rev-parse --short HEAD` LATEST=`git rev-parse --short HEAD`
c_build_win32 build_win32
c_build_win64 build_win64
c_build_nix32 build_nix32
c_build_nix64 build_nix64
c_build_web build_osx32
build_web

View File

@ -40,7 +40,7 @@ int main_imdct() {
} }
#endif #endif
static void Program_RunGame(void) { static void RunGame(void) {
static const String defPath = String_FromConst("texpacks/default.zip"); static const String defPath = String_FromConst("texpacks/default.zip");
String title; char titleBuffer[STRING_SIZE]; String title; char titleBuffer[STRING_SIZE];
int width, height; int width, height;
@ -94,7 +94,14 @@ CC_NOINLINE static void ExitMissingArgs(int argsCount, const String* args) {
Process_Exit(1); Process_Exit(1);
} }
/* This is used when compiling with MingW without linking to startup files. */
/* The final code produced for "main" is our "main" combined with crt's main. (mingw-w64-crt/crt/gccmain.c) */
/* This immediately crashes the game on startup. Using a different name fixes. */
#ifdef CC_NOMAIN
int main_real(int argc, char** argv) {
#else
int main(int argc, char** argv) { int main(int argc, char** argv) {
#endif
static char ipBuffer[STRING_SIZE]; static char ipBuffer[STRING_SIZE];
String args[GAME_MAX_CMDARGS]; String args[GAME_MAX_CMDARGS];
int argsCount; int argsCount;
@ -126,7 +133,7 @@ int main(int argc, char** argv) {
if (argsCount == 0) { if (argsCount == 0) {
#ifdef CC_BUILD_WEB #ifdef CC_BUILD_WEB
String_AppendConst(&Game_Username, "WebTest!"); String_AppendConst(&Game_Username, "WebTest!");
Program_RunGame(); RunGame();
#else #else
Launcher_Run(); Launcher_Run();
#endif #endif
@ -141,7 +148,7 @@ int main(int argc, char** argv) {
} }
#endif #endif
String_Copy(&Game_Username, &args[0]); String_Copy(&Game_Username, &args[0]);
Program_RunGame(); RunGame();
} else if (argsCount < 4) { } else if (argsCount < 4) {
ExitMissingArgs(argsCount, args); ExitMissingArgs(argsCount, args);
return 1; return 1;
@ -159,7 +166,7 @@ int main(int argc, char** argv) {
return 1; return 1;
} }
Server.Port = port; Server.Port = port;
Program_RunGame(); RunGame();
} }
Process_Exit(0); Process_Exit(0);