From f02be5e4281e01d935e8020dcc4691102de7e476 Mon Sep 17 00:00:00 2001 From: OmniBlade Date: Thu, 3 Mar 2022 12:50:44 +0000 Subject: [PATCH] Implements CMakePresets.json to simplify project config. Adds presets covering CI builds and generating MSVC solutions. Updates CI to use presets. Adds Ubuntu 20.04 to CI checks. Moves compiler configuration to presets. Adds example for CMakeUserPresets.json for users to copy for custom local presets. --- .github/workflows/linux.yml | 22 ++- .github/workflows/macos.yml | 12 +- .github/workflows/mingw.yml | 11 +- .github/workflows/windows.yml | 21 ++- .gitignore | 1 + CMakeLists.txt | 16 +- CMakePresets.json | 224 ++++++++++++++++++++++++ common/CMakeLists.txt | 5 + resources/CMakeUserPresets.json.example | 39 +++++ 9 files changed, 310 insertions(+), 41 deletions(-) create mode 100644 CMakePresets.json create mode 100644 resources/CMakeUserPresets.json.example diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 157ce215..38415ab0 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -18,10 +18,12 @@ jobs: title: "Development Build" vanilla-linux: - runs-on: ubuntu-18.04 + runs-on: ${{ matrix.os }} strategy: matrix: platform: [clang, gcc] + networking: [net, nonet] + os: [ubuntu-18.04, ubuntu-20.04] steps: - uses: actions/checkout@v2 @@ -49,14 +51,14 @@ jobs: - name: Install dependencies run: | sudo apt-get update -qq > /dev/null - sudo apt-get install -qq -y clang-format-10 libsdl2-dev libopenal-dev > /dev/null + sudo apt-get install -qq -y clang-format-10 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@v2 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 f7d21438..a2a8bf08 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -7,6 +7,10 @@ on: jobs: vanilla-macos: runs-on: macos-10.15 + + strategy: + matrix: + networking: [net, nonet] steps: - uses: actions/checkout@v2 @@ -29,7 +33,7 @@ jobs: - name: Configure Vanilla Conquer run: | - cmake -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DMAP_EDITORTD=ON -DMAP_EDITORRA=ON -DBUILD_TOOLS=ON -B build + cmake --preset clang-vanilla-${{ matrix.networking }}-tests - name: Build Vanilla Conquer run: | @@ -44,19 +48,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-x86_64-${{ steps.gitinfo.outputs.sha_short }}.zip ./build/vanillatd.app ./build/vanillara.app ./build/vanillamix 7z a artifact/vanilla-conquer-macos-clang-x86_64-${{ 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@v2 with: name: vanilla-conquer-macos-clang-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 @@ -68,7 +74,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 f2ad6d4f..0d53119b 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@v2 @@ -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 -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 d26914e8..1be317ad 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -14,7 +14,7 @@ jobs: fetch-depth: 0 ref: ${{ github.event.pull_request.head.sha }} - - uses: ilammy/msvc-dev-cmd@v1.4.1 + - uses: ilammy/msvc-dev-cmd@v1.10.0 with: arch: x86 @@ -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@v2 with: @@ -85,7 +86,7 @@ jobs: fetch-depth: 0 ref: ${{ github.event.pull_request.head.sha }} - - uses: ilammy/msvc-dev-cmd@v1.4.1 + - uses: ilammy/msvc-dev-cmd@v1.10.0 with: arch: ${{ matrix.platform }} @@ -123,19 +124,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_convert_EXECUTABLE=C:\Program Files\ImageMagick-7.0.10-Q16-HDRI\magick.exe" -DImageMagick_convert_FOUND=TRUE -B build + cmake --preset cl-vanilla-${{ matrix.networking }}-tests "-DSDL2_ROOT_DIR=$($Env:TEMP)\SDL2-2.0.12" "-DOPENAL_ROOT=C:\Program Files (x86)\OpenAL 1.1 SDK" "-DImageMagick_convert_EXECUTABLE=C:\Program Files\ImageMagick-7.0.10-Q16-HDRI\magick.exe" -DImageMagick_convert_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 @@ -143,13 +145,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@v2 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 @@ -161,7 +164,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..80c85526 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /build* +/CMakeUserPresets.json diff --git a/CMakeLists.txt b/CMakeLists.txt index 7a230345..3c021ea9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ 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) @@ -69,20 +69,6 @@ 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") - 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() - add_definitions(-DENGLISH -DTRUE_FALSE_DEFINED) if(WIN32) diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 00000000..8e2eaf98 --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,224 @@ +{ + "version": 2, + "cmakeMinimumRequired": { + "major": 3, + "minor": 20, + "patch": 0 + }, + "configurePresets": [ + { + "name": "default", + "displayName": "Default Config", + "generator": "Ninja", + "hidden": true, + "binaryDir": "${sourceDir}/build", + "cacheVariables": { + "DSOUND": "OFF", + "DDRAW": "OFF", + "SDL2": "ON", + "OPENAL": "ON", + "CMAKE_BUILD_TYPE": "Release" + } + }, + { + "name": "default-win", + "inherits": "default", + "displayName": "MSVC defaults", + "hidden": true, + "cacheVariables": { + "VC_CXX_FLAGS": "/Zc:strictStrings", + "CMAKE_CXX_FLAGS_RELEASE": "/MD /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_TEST": "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", + "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_TEST": "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_TEST": "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": "-gstabs3 -Og", + "CMAKE_C_FLAGS_DEBUG": "-gstabs3 -Og", + "CMAKE_CXX_FLAGS_RELEASE": "-O3 -gstabs3 -DNDEBUG", + "CMAKE_C_FLAGS_RELEASE": "-O3 -gstabs3 -DNDEBUG", + "VC_CXX_FLAGS": "-static-libstdc++;-static-libgcc;-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 e689f6b1..2e81833d 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -167,9 +167,14 @@ 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) +if(NOT MSVC) + target_compile_definitions(common PUBLIC NOMINMAX) +endif() + if(BUILD_REMASTERTD OR BUILD_REMASTERRA) add_library(commonr STATIC ${COMMONR_SRC}) target_compile_definitions(commonr PUBLIC $<$:_DEBUG> ${REMASTER_DEFS}) 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