diff --git a/build_pc.bat b/build_pc.bat new file mode 100644 index 000000000..df53293f4 --- /dev/null +++ b/build_pc.bat @@ -0,0 +1,27 @@ +@echo off +if "%1"=="" ( + set BUILD_NAME=pc/build32 +) else ( + set BUILD_NAME=%1 +) + +if "%2"=="" ( + set MINGW32=C:/msys64/mingw32 +) else ( + set MINGW32=%2 +) + +set PATH=%MINGW32%/bin;%PATH% +set SCRIPT_DIR=%~dp0 +set BUILD_DIR=%SCRIPT_DIR%%BUILD_NAME% + +echo "MINGW32 path: %MINGW32%" +echo "BUILD_DIR: %BUILD_DIR%" + +if not exist "%BUILD_DIR%" mkdir "%BUILD_DIR%" +cd "%BUILD_DIR%" + +if not exist "Makefile" echo "=== Configuring CMake ===" && cmake %SCRIPT_DIR%/pc -G Ninja -DMINGW32=%MINGW32% -DCMAKE_TOOLCHAIN_FILE="%SCRIPT_DIR%/pc/cmake/Toolchain-ninja.cmake" + +echo "=== Building PC port ===" +ninja \ No newline at end of file diff --git a/pc/cmake/Toolchain-ninja.cmake b/pc/cmake/Toolchain-ninja.cmake new file mode 100644 index 000000000..fd8ef024c --- /dev/null +++ b/pc/cmake/Toolchain-ninja.cmake @@ -0,0 +1,25 @@ +# CMake toolchain file for MinGW i686 (32-bit) cross-compilation from Linux +set(CMAKE_SYSTEM_NAME Windows) +set(CMAKE_SYSTEM_PROCESSOR i686) + +if(NOT DEFINED MINGW32) + set(MINGW32 C:/msys64/mingw32) +endif() + +# Compilers +set(CMAKE_C_COMPILER ${MINGW32}/bin/i686-w64-mingw32-gcc.exe) +set(CMAKE_CXX_COMPILER ${MINGW32}/bin/i686-w64-mingw32-g++.exe) +set(CMAKE_RC_COMPILER ${MINGW32}/bin/windres.exe) + +# Linker / binutils +set(CMAKE_LINKER ${MINGW32}/i686-w64-mingw32/bin/ld.exe) +set(CMAKE_AR ${MINGW32}/i686-w64-mingw32/bin/ar.exe) +set(CMAKE_RANLIB ${MINGW32}/i686-w64-mingw32/bin/ranlib.exe) +set(CMAKE_STRIP ${MINGW32}/i686-w64-mingw32/bin/strip.exe) + +# Sysroot / search paths +set(CMAKE_FIND_ROOT_PATH ${MINGW32}) +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) # don't look here for tools +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) # only look here for libs +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) # only look here for headers +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) # only look here for packages \ No newline at end of file