diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 1144f56b..abab59f7 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -18,10 +18,12 @@ jobs: title: "Development Build" vanilla-linux: - runs-on: ubuntu-22.04 + runs-on: ${{ matrix.os }} strategy: matrix: platform: [clang, gcc] + networking: [net, nonet] + os: [ubuntu-22.04] steps: - uses: actions/checkout@v3.3.0 @@ -49,14 +51,14 @@ jobs: - name: Install dependencies run: | sudo apt-get update -qq > /dev/null - sudo apt-get install -qq -y clang-format-14 libsdl2-dev libopenal-dev > /dev/null + sudo apt-get install -qq -y clang-format-14 libsdl2-dev libopenal-dev ninja-build > /dev/null - name: Configure Vanilla Conquer env: CC: ${{ steps.vars.outputs.cc }} CXX: ${{ steps.vars.outputs.cxx }} run: | - cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DMAP_EDITORTD=ON -DMAP_EDITORRA=ON -DBUILD_TOOLS=ON -DBUILD_TESTS=ON -B build + cmake --preset ${{ matrix.platform }}-vanilla-${{ matrix.networking }}-tests - name: Check formatting if: ${{ matrix.platform }} == clang @@ -66,7 +68,7 @@ jobs: - name: Build Vanilla Conquer run: | - cmake --build build -- -j 4 + cmake --build build cp ./build/vanillatd ./build/vanillatd.dbg cp ./build/vanillara ./build/vanillara.dbg cp ./build/vanillamix ./build/vanillamix.dbg @@ -83,19 +85,21 @@ jobs: ctest - name: Create archives + if: ${{ matrix.networking == 'net' }} run: | mkdir artifact - 7z a artifact/vanilla-conquer-linux-${{ matrix.platform }}-x86_64-${{ steps.gitinfo.outputs.sha_short }}.zip ./build/vanillatd ./build/vanillara ./build/vanillamix - 7z a artifact/vanilla-conquer-linux-${{ matrix.platform }}-x86_64-${{ steps.gitinfo.outputs.sha_short }}-debug.zip ./build/vanillatd.dbg ./build/vanillara.dbg ./build/vanillamix.dbg + 7z a artifact/vanilla-conquer-linux-${{ matrix.platform }}-${{ matrix.os }}-x86_64-${{ steps.gitinfo.outputs.sha_short }}.zip ./build/vanillatd ./build/vanillara ./build/vanillamix + 7z a artifact/vanilla-conquer-linux-${{ matrix.platform }}-${{ matrix.os }}-x86_64-${{ steps.gitinfo.outputs.sha_short }}-debug.zip ./build/vanillatd.dbg ./build/vanillara.dbg ./build/vanillamix.dbg - name: Upload artifact + if: ${{ matrix.networking == 'net' }} uses: actions/upload-artifact@v3.1.2 with: - name: vanilla-conquer-linux-${{ matrix.platform }}-x86_64 + name: vanilla-conquer-linux-${{ matrix.platform }}-${{ matrix.os }}-x86_64 path: artifact - name: Upload development release - if: ${{ github.event_name != 'pull_request' && github.ref == 'refs/heads/vanilla' }} + if: ${{ github.event_name != 'pull_request' && github.ref == 'refs/heads/vanilla' && matrix.networking == 'net' }} uses: softprops/action-gh-release@v1 with: name: Development Build @@ -107,7 +111,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Upload tagged release - if: ${{ startsWith(github.ref, 'refs/tags/') }} + if: ${{ startsWith(github.ref, 'refs/tags/') && matrix.networking == 'net' }} uses: softprops/action-gh-release@v1 with: files: | diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index ea5fbda1..e7cb2391 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -6,7 +6,11 @@ on: jobs: vanilla-macos: - runs-on: macos-12 + runs-on: macos-12 + strategy: + matrix: + networking: [net, nonet] + steps: - uses: actions/checkout@v3.3.0 with: @@ -60,7 +64,7 @@ jobs: - name: Configure Vanilla Conquer run: | export PATH="/opt/local/bin:/opt/local/sbin:$PATH" - cmake -G Ninja -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DMAP_EDITORTD=ON -DMAP_EDITORRA=ON -DBUILD_TOOLS=ON -B build + cmake --preset clang-vanilla-${{ matrix.networking }}-tests -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" - name: Build Vanilla Conquer run: | @@ -76,19 +80,21 @@ jobs: dylibbundler --create-dir --bundle-deps --overwrite-files --dest-dir ./build/vanillara.app/Contents/libs --fix-file build/vanillara.app/Contents/MacOS/vanillara - name: Create archives + if: ${{ matrix.networking == 'net' }} run: | mkdir artifact 7z a artifact/vanilla-conquer-macos-clang-universal2-${{ steps.gitinfo.outputs.sha_short }}.zip ./build/vanillatd.app ./build/vanillara.app ./build/vanillamix 7z a artifact/vanilla-conquer-macos-clang-universal2-${{ steps.gitinfo.outputs.sha_short }}-debug.zip ./build/vanillatd.dSYM ./build/vanillara.dSYM ./build/vanillamix.dSYM - name: Upload artifact + if: ${{ matrix.networking == 'net' }} uses: actions/upload-artifact@v3.1.2 with: name: vanilla-conquer-macos-clang-universal2 path: artifact - name: Upload development release - if: ${{ github.event_name != 'pull_request' && github.ref == 'refs/heads/vanilla' }} + if: ${{ github.event_name != 'pull_request' && github.ref == 'refs/heads/vanilla' && matrix.networking == 'net' }} uses: softprops/action-gh-release@v1 with: name: Development Build @@ -100,7 +106,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Upload tagged release - if: ${{ startsWith(github.ref, 'refs/tags/') }} + if: ${{ startsWith(github.ref, 'refs/tags/') && matrix.networking == 'net' }} uses: softprops/action-gh-release@v1 with: files: | diff --git a/.github/workflows/mingw.yml b/.github/workflows/mingw.yml index c9e889e1..9b450e18 100644 --- a/.github/workflows/mingw.yml +++ b/.github/workflows/mingw.yml @@ -21,11 +21,11 @@ jobs: - name: Install Dependencies run: | sudo apt-get update -qq > /dev/null - sudo apt-get install -qq -y mingw-w64 > /dev/null + sudo apt-get install -qq -y ninja-build mingw-w64 > /dev/null - name: Configure Vanilla Conquer run: | - cmake -DCMAKE_TOOLCHAIN_FILE=cmake/i686-mingw-w64-toolchain.cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_REMASTERTD=ON -DBUILD_REMASTERRA=ON -DBUILD_VANILLATD=OFF -DBUILD_VANILLARA=OFF -DNETWORKING=OFF -B build + cmake --preset mingw-i686-remaster -B build - name: Build Vanilla Conquer run: | @@ -58,6 +58,7 @@ jobs: strategy: matrix: platform: [x86, amd64] + networking: [net, nonet] steps: - uses: actions/checkout@v3.3.0 @@ -85,7 +86,7 @@ jobs: - name: Install Dependencies run: | sudo apt-get update -qq > /dev/null - sudo apt-get install -qq -y mingw-w64 imagemagick > /dev/null + sudo apt-get install -qq -y ninja-build mingw-w64 imagemagick > /dev/null wget -q https://www.libsdl.org/release/SDL2-devel-2.0.12-mingw.tar.gz wget -q https://www.openal-soft.org/openal-binaries/openal-soft-1.21.0-bin.zip tar -xf SDL2-devel-2.0.12-mingw.tar.gz -C /tmp @@ -94,11 +95,11 @@ jobs: - name: Configure Vanilla Conquer run: | - cmake -DCMAKE_TOOLCHAIN_FILE=cmake/${{ steps.vars.outputs.arc_path }}-mingw-w64-toolchain.cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DSDL2=ON -DSDL2_ROOT_DIR=/tmp/SDL2-2.0.12 -DSDL2_INCLUDE_DIR=/tmp/SDL2-2.0.12/${{ steps.vars.outputs.arc_path }}-w64-mingw32/include/SDL2 -DSDL2_LIBRARY=/tmp/SDL2-2.0.12/${{ steps.vars.outputs.arc_path }}-w64-mingw32/lib/libSDL2.dll.a -DSDL2_SDLMAIN_LIBRARY=/tmp/SDL2-2.0.12/${{ steps.vars.outputs.arc_path }}-w64-mingw32/lib/libSDL2main.a -DSDL2_RUNTIME_LIBRARY=/tmp/SDL2-2.0.12/${{ steps.vars.outputs.arc_path }}-w64-mingw32/bin/SDL2.dll -DOPENAL=ON -DOPENAL_ROOT=/tmp/openal-soft-1.21.0-bin -DOPENAL_INCLUDE_DIR=/tmp/openal-soft-1.21.0-bin/include/AL -DOPENAL_LIBRARY=/tmp/openal-soft-1.21.0-bin/libs/${{ steps.vars.outputs.oal_path }}/libOpenAL32.dll.a -DOPENAL_RUNTIME_LIBRARY=/tmp/openal-soft-1.21.0-bin/bin/${{ steps.vars.outputs.oal_path }}/OpenAL32.dll -DBUILD_TOOLS=ON -DBUILD_REMASTERTD=OFF -DBUILD_REMASTERRA=OFF -DMAP_EDITORTD=ON -DMAP_EDITORRA=ON -DImageMagick_convert_EXECUTABLE=/usr/bin/convert -DImageMagick_convert_FOUND=TRUE -B build + cmake --preset mingw-${{ steps.vars.outputs.arc_path }}-vanilla -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DSDL2_ROOT_DIR=/tmp/SDL2-2.0.12 -DSDL2_INCLUDE_DIR=/tmp/SDL2-2.0.12/${{ steps.vars.outputs.arc_path }}-w64-mingw32/include/SDL2 -DSDL2_LIBRARY=/tmp/SDL2-2.0.12/${{ steps.vars.outputs.arc_path }}-w64-mingw32/lib/libSDL2.dll.a -DSDL2_SDLMAIN_LIBRARY=/tmp/SDL2-2.0.12/${{ steps.vars.outputs.arc_path }}-w64-mingw32/lib/libSDL2main.a -DSDL2_RUNTIME_LIBRARY=/tmp/SDL2-2.0.12/${{ steps.vars.outputs.arc_path }}-w64-mingw32/bin/SDL2.dll -DOPENAL=ON -DOPENAL_ROOT=/tmp/openal-soft-1.21.0-bin -DOPENAL_INCLUDE_DIR=/tmp/openal-soft-1.21.0-bin/include/AL -DOPENAL_LIBRARY=/tmp/openal-soft-1.21.0-bin/libs/${{ steps.vars.outputs.oal_path }}/libOpenAL32.dll.a -DOPENAL_RUNTIME_LIBRARY=/tmp/openal-soft-1.21.0-bin/bin/${{ steps.vars.outputs.oal_path }}/OpenAL32.dll -DImageMagick_convert_EXECUTABLE=/usr/bin/convert -DImageMagick_convert_FOUND=TRUE - name: Build Vanilla Conquer run: | - cmake --build build -- -j 4 + cmake --build build cp ./build/vanillatd.exe ./build/vanillatd.dbg cp ./build/vanillara.exe ./build/vanillara.dbg cp ./build/vanillamix.exe ./build/vanillamix.dbg diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 2c401a2e..dcd43265 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -31,11 +31,11 @@ jobs: - name: Configure Vanilla Conquer run: | - cmake -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_REMASTERTD=ON -DBUILD_REMASTERRA=ON -DBUILD_VANILLATD=OFF -DBUILD_VANILLARA=OFF -DNETWORKING=OFF -B build + cmake --preset cl-remaster - name: Build Vanilla Conquer run: | - cmake --build build --config RelWithDebInfo + cmake --build build - name: Create archives shell: bash @@ -78,6 +78,7 @@ jobs: strategy: matrix: platform: [x86, amd64] + networking: [net, nonet] steps: - uses: actions/checkout@v3.3.0 with: @@ -122,19 +123,20 @@ jobs: - name: Configure Vanilla Conquer run: | - cmake -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TOOLS=ON -DBUILD_TESTS=ON -DSDL2=ON "-DSDL2_ROOT_DIR=$($Env:TEMP)\SDL2-2.0.12" -DOPENAL=ON "-DOPENAL_ROOT=C:\Program Files (x86)\OpenAL 1.1 SDK" -DBUILD_REMASTERTD=OFF -DBUILD_REMASTERRA=OFF -DMAP_EDITORTD=ON -DMAP_EDITORRA=ON "-DImageMagick_magick_EXECUTABLE=$($(Get-Command magick.exe).Source)" -DImageMagick_magick_FOUND=TRUE -B build + cmake --preset cl-vanilla-${{ matrix.networking }}-tests -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON "-DSDL2_ROOT_DIR=$($Env:TEMP)\SDL2-2.0.12" "-DOPENAL_ROOT=C:\Program Files (x86)\OpenAL 1.1 SDK" "-DImageMagick_magick_EXECUTABLE=$($(Get-Command magick.exe).Source)" -DImageMagick_magick_FOUND=TRUE - name: Build Vanilla Conquer run: | - cmake --build build --config RelWithDebInfo + cmake --build build - name: Run unit tests run: | cd build Copy-Item -Path "$Env:TEMP\SDL2-2.0.12\lib\${{ steps.vars.outputs.sdl_path }}\SDL2.dll" -Destination . -verbose - ctest -C RelWithDebInfo + ctest -C Release - name: Create archives + if: ${{ matrix.networking == 'net' }} shell: bash run: | mkdir artifact @@ -142,13 +144,14 @@ jobs: 7z a artifact/vanilla-conquer-win-msvc-${{ steps.vars.outputs.arc_path }}-${{ steps.gitinfo.outputs.sha_short }}-debug.zip ./build/vanillatd.pdb ./build/vanillara.pdb ./build/vanillamix.pdb - name: Upload artifact + if: ${{ matrix.networking == 'net' }} uses: actions/upload-artifact@v3.1.2 with: name: vanilla-conquer-win-msvc-${{ steps.vars.outputs.arc_path }} path: artifact - name: Upload development release - if: ${{ github.event_name != 'pull_request' && github.ref == 'refs/heads/vanilla' }} + if: ${{ github.event_name != 'pull_request' && github.ref == 'refs/heads/vanilla' && matrix.networking == 'net' }} uses: softprops/action-gh-release@v1 with: name: Development Build @@ -160,7 +163,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Upload tagged release - if: ${{ startsWith(github.ref, 'refs/tags/') }} + if: ${{ startsWith(github.ref, 'refs/tags/') && matrix.networking == 'net' }} uses: softprops/action-gh-release@v1 with: files: | diff --git a/.gitignore b/.gitignore index 0ec9e7f9..33a9a10c 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ /build* +/CMakeUserPresets.json +/.cache diff --git a/CMakeLists.txt b/CMakeLists.txt index 3ce8dad3..47bd36dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,13 +1,13 @@ -cmake_minimum_required(VERSION 3.10) +cmake_minimum_required(VERSION 3.15) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/") include(FeatureSummary) if(NOT DEFINED CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo" FORCE) + set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo" FORCE) endif() -project(VanillaConquer CXX) +project(VanillaConquer C CXX) option(BUILD_REMASTERTD "Build Tiberian Dawn remaster dll." OFF) option(BUILD_REMASTERRA "Build Red Alert remaster dll." OFF) @@ -71,21 +71,7 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) - -if(NOT MSVC) - if(WIN32) - set(CMAKE_CXX_FLAGS_DEBUG "-gstabs3") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive") - set(STATIC_LIBS "-static-libstdc++ -static-libgcc") - else() - set(CMAKE_CXX_FLAGS_DEBUG "-g3") - set(CMAKE_FIND_FRAMEWORK "LAST") - endif() - - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w -Wwrite-strings -Werror=write-strings -fcheck-new -fsigned-char -fdata-sections -ffunction-sections -DNOMINMAX") -else() - set(CMAKE_CXX_FLAGS "/Zc:strictStrings") -endif() +set(CMAKE_FIND_FRAMEWORK "LAST") add_definitions(-DTRUE_FALSE_DEFINED) diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 00000000..9d13ad7a --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,228 @@ +{ + "version": 2, + "cmakeMinimumRequired": { + "major": 3, + "minor": 20, + "patch": 0 + }, + "configurePresets": [ + { + "name": "default", + "displayName": "Default Config", + "generator": "Ninja", + "hidden": true, + "binaryDir": "${sourceDir}/build", + "cacheVariables": { + "CMAKE_EXPORT_COMPILE_COMMANDS": "ON", + "DSOUND": "OFF", + "DDRAW": "OFF", + "SDL2": "ON", + "OPENAL": "ON", + "CMAKE_BUILD_TYPE": "Release" + } + }, + { + "name": "default-win", + "inherits": "default", + "displayName": "MSVC defaults", + "hidden": true, + "cacheVariables": { + "CMAKE_MSVC_RUNTIME_LIBRARY": "MultiThreaded$<$:Debug>DLL", + "VC_CXX_FLAGS": "/Zc:strictStrings;-wd4244;-wd4018;-wd4291;-wd4101;-wd4267", + "CMAKE_CXX_FLAGS_RELEASE": "/Zi /O2 /Ob2 /DNDEBUG", + "CMAKE_EXE_LINKER_FLAGS_RELEASE": "/debug:full /INCREMENTAL:NO", + "CMAKE_MODULE_LINKER_FLAGS_RELEASE": "/debug:full /INCREMENTAL:NO", + "CMAKE_SHARED_LINKER_FLAGS_RELEASE": "/debug:full /INCREMENTAL:NO" + } + }, + { + "name": "cl-remaster", + "inherits": "default-win", + "displayName": "MSVC Remaster build", + "cacheVariables": { + "BUILD_REMASTERTD": "ON", + "BUILD_REMASTERRA": "ON", + "BUILD_VANILLATD": "OFF", + "BUILD_VANILLARA": "OFF", + "MAP_EDITORTD": "OFF", + "MAP_EDITORRA": "OFF", + "BUILD_TOOLS": "OFF" + } + }, + { + "name": "cl-vanilla", + "inherits": "default-win", + "displayName": "MSVC Vanilla build", + "cacheVariables": { + "BUILD_REMASTERTD": "OFF", + "BUILD_REMASTERRA": "OFF", + "MAP_EDITORTD": "ON", + "MAP_EDITORRA": "ON", + "BUILD_TOOLS": "ON" + } + }, + { + "name": "cl-vanilla-net-tests", + "inherits": "cl-vanilla", + "displayName": "MSVC Vanilla build with tests", + "cacheVariables": { + "BUILD_TESTS": "ON" + } + }, + { + "name": "cl-vanilla-nonet-tests", + "inherits": "cl-vanilla-net-tests", + "displayName": "MSVC Vanilla build with tests and no networking", + "cacheVariables": { + "NETWORKING": "OFF" + } + }, + { + "name": "msvc2019-i686-remaster", + "inherits": "cl-remaster", + "binaryDir": "${sourceDir}/build_remaster", + "displayName": "MSVC 2019 32bit Remaster build", + "generator": "Visual Studio 16 2019", + "architecture": "Win32" + }, + { + "name": "msvc2019-i686-vanilla", + "inherits": "cl-vanilla", + "binaryDir": "${sourceDir}/build_msvc32", + "displayName": "MSVC 2019 32bit Vanilla build", + "generator": "Visual Studio 16 2019", + "architecture": "Win32" + }, + { + "name": "msvc2019-x86-64-vanilla", + "inherits": "cl-vanilla", + "binaryDir": "${sourceDir}/build_msvc64", + "displayName": "MSVC 2019 64bit Vanilla build", + "architecture": "x64" + }, + { + "name": "default-unix", + "inherits": "default", + "hidden": true, + "displayName": "UNIX defaults", + "cacheVariables": { + "CMAKE_CXX_FLAGS_DEBUG": "-g3 -Og", + "CMAKE_C_FLAGS_DEBUG": "-g3 -Og", + "CMAKE_CXX_FLAGS_RELEASE": "-O3 -g3 -DNDEBUG", + "CMAKE_C_FLAGS_RELEASE": "-O3 -g3 -DNDEBUG", + "VC_CXX_FLAGS": "-w;-Wwrite-strings;-Werror=write-strings;-fcheck-new;-fsigned-char;-DNOMINMAX", + "MAP_EDITORTD": "ON", + "MAP_EDITORRA": "ON", + "BUILD_TOOLS": "ON" + } + }, + { + "name": "gcc-vanilla", + "inherits": "default-unix", + "displayName": "GCC Vanilla build", + "environment": { + "CC": "gcc", + "CXX": "g++" + } + }, + { + "name": "gcc-vanilla-net-tests", + "inherits": "gcc-vanilla", + "displayName": "GCC Vanilla build with tests", + "cacheVariables": { + "BUILD_TESTS": "ON" + } + }, + { + "name": "gcc-vanilla-nonet-tests", + "inherits": "gcc-vanilla-net-tests", + "displayName": "GCC Vanilla build with tests", + "cacheVariables": { + "NETWORKING": "OFF" + } + }, + { + "name": "clang-vanilla", + "inherits": "default-unix", + "displayName": "Clang Vanilla build", + "environment": { + "CC": "clang", + "CXX": "clang++" + } + }, + { + "name": "clang-vanilla-net-tests", + "inherits": "clang-vanilla", + "displayName": "Clang Vanilla build with tests", + "cacheVariables": { + "BUILD_TESTS": "ON" + } + }, + { + "name": "clang-vanilla-nonet-tests", + "inherits": "clang-vanilla-net-tests", + "displayName": "Clang Vanilla build with tests", + "cacheVariables": { + "NETWORKING": "OFF" + } + }, + { + "name": "default-mingw", + "inherits": "default", + "hidden": true, + "displayName": "MinGW-w64 defaults", + "cacheVariables": { + "CMAKE_CXX_FLAGS_DEBUG": "-g -Og", + "CMAKE_C_FLAGS_DEBUG": "-g -Og", + "CMAKE_CXX_FLAGS_RELEASE": "-O3 -g -DNDEBUG", + "CMAKE_C_FLAGS_RELEASE": "-O3 -g -DNDEBUG", + "CMAKE_EXE_LINKER_FLAGS": "-static-libstdc++ -static-libgcc", + "CMAKE_SHARESD_LINKER_FLAGS": "-static-libstdc++ -static-libgcc", + "VC_CXX_FLAGS": "-fpermissive;-w;-Wwrite-strings;-Werror=write-strings;-fcheck-new;-fsigned-char;-DNOMINMAX", + "MAP_EDITORTD": "ON", + "MAP_EDITORRA": "ON", + "BUILD_TOOLS": "ON" + } + }, + { + "name": "mingw-i686-remaster", + "inherits": "default-mingw", + "displayName": "MinGW-w64 32bit Remaster build", + "cacheVariables": { + "CMAKE_TOOLCHAIN_FILE": { + "type": "FILEPATH", + "value": "${sourceDir}/cmake/i686-mingw-w64-toolchain.cmake" + }, + "BUILD_REMASTERTD": "ON", + "BUILD_REMASTERRA": "ON", + "BUILD_VANILLATD": "OFF", + "BUILD_VANILLARA": "OFF", + "MAP_EDITORTD": "OFF", + "MAP_EDITORRA": "OFF", + "BUILD_TOOLS": "OFF" + } + }, + { + "name": "mingw-i686-vanilla", + "inherits": "default-mingw", + "displayName": "MinGW-w64 32bit Vanilla build", + "cacheVariables": { + "CMAKE_TOOLCHAIN_FILE": { + "type": "FILEPATH", + "value": "${sourceDir}/cmake/i686-mingw-w64-toolchain.cmake" + } + } + }, + { + "name": "mingw-x86_64-vanilla", + "inherits": "default-mingw", + "displayName": "MinGW-w64 64bit Vanilla build", + "cacheVariables": { + "CMAKE_TOOLCHAIN_FILE": { + "type": "FILEPATH", + "value": "${sourceDir}/cmake/x86_64-mingw-w64-toolchain.cmake" + } + } + } + ] +} \ No newline at end of file diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index f6042f1e..ead9b61a 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -169,6 +169,7 @@ add_library(common STATIC ${COMMON_SRC} ${COMMON_HEADERS}) target_link_libraries(common PUBLIC ${COMMON_LIBS}) target_include_directories(common PUBLIC .) target_compile_definitions(common PRIVATE FIXIT_FAST_LOAD $<$:_DEBUG>) +target_compile_options(common PUBLIC ${VC_CXX_FLAGS}) # Make build check state of git to check for uncommitted changes. add_dependencies(common check_git) diff --git a/resources/CMakeUserPresets.json.example b/resources/CMakeUserPresets.json.example new file mode 100644 index 00000000..7ae9d703 --- /dev/null +++ b/resources/CMakeUserPresets.json.example @@ -0,0 +1,39 @@ +{ + "version": 2, + "configurePresets": [ + { + "name": "gcc-vanilla-debug", + "inherits": "gcc-vanilla", + "displayName": "GCC Vanilla debug build", + "binaryDir": "${sourceDir}/build_gcc", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Debug" + } + }, + { + "name": "clang-vanilla-debug", + "inherits": "clang-vanilla", + "displayName": "Clang Vanilla debug build", + "binaryDir": "${sourceDir}/build_clang", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Debug" + } + }, + { + "name": "mingw-i686-vanilla-debug", + "inherits": "mingw-i686-vanilla", + "displayName": "MinGW-w64 32bit Vanilla debug build", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Debug" + } + }, + { + "name": "mingw-x86_64-vanilla-debug", + "inherits": "mingw-x86_64-vanilla", + "displayName": "MinGW-w64 64bit Vanilla debug build", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Debug" + } + } + ] +} \ No newline at end of file diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index 23e72463..438f64da 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -1,5 +1,4 @@ if (BUILD_TOOLS) - enable_language(C) # For miniposix. add_subdirectory(miniposix) add_subdirectory(mixtool) endif()