Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implements a CMakePresets.json file. #661

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 2 additions & 17 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,33 +30,18 @@ jobs:
with:
submodules: "recursive"

- name: Set variables
id: vars
run: |
if [ "${{ matrix.platform }}" = "clang" ]
then
echo "::set-output name=cc::clang"
echo "::set-output name=cxx::clang++"
else
echo "::set-output name=cc::gcc"
echo "::set-output name=cxx::g++"
fi

- name: Install dependencies
run: |
sudo apt-get install -y libgtk-3-dev ninja-build clang-format-10 libwxgtk3.0-gtk3-dev

- name: Build Thyme
env:
CC: ${{ steps.vars.outputs.cc }}
CXX: ${{ steps.vars.outputs.cxx }}
run: |
cmake -DBUILD_TOOLS=ON -DSTANDALONE=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTS=ON -DUSE_CRASHPAD=ON -B build -G Ninja
cmake --preset ${{ matrix.platform }} -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTS=ON -DUSE_CRASHPAD=ON -B build
cmake --build build --target format
git diff --exit-code
cmake --build build

- name: Test Thyme
run: |
cd build
ctest . --output-on-failure
ctest . --output-on-failure
2 changes: 1 addition & 1 deletion .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ jobs:

- name: Build Thyme
run: |
cmake -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTS=ON -DBUILD_TOOLS=ON -DSTANDALONE=ON -DUSE_CRASHPAD=ON -DwxWidgets_wxrc_EXECUTABLE=D:\${{ steps.vars.outputs.wx_ver }}\utils\wxrc\${{ steps.vars.outputs.wxrc_path }}\wxrc.exe -DwxWidgets_ROOT_DIR=D:\${{ steps.vars.outputs.wx_ver }} -DwxWidgets_LIB_DIR=D:\${{ steps.vars.outputs.wx_ver }}\libs\vc_x64_lib -DwxWidgets_CONFIGURATION=mswu -B build
cmake --preset cl-2019 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DBUILD_TESTS=ON -DUSE_CRASHPAD=ON -DwxWidgets_wxrc_EXECUTABLE=D:\${{ steps.vars.outputs.wx_ver }}\utils\wxrc\${{ steps.vars.outputs.wxrc_path }}\wxrc.exe -DwxWidgets_ROOT_DIR=D:\${{ steps.vars.outputs.wx_ver }} -DwxWidgets_LIB_DIR=D:\${{ steps.vars.outputs.wx_ver }}\libs\vc_x64_lib -DwxWidgets_CONFIGURATION=mswu -B build
cmake --build build --config RelWithDebInfo

- name: Test Thyme
Expand Down
46 changes: 1 addition & 45 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,43 +17,6 @@ endif()

project(thyme VERSION 1.04.0 LANGUAGES C CXX)

if(MSVC)
string(REPLACE "INCREMENTAL" "INCREMENTAL:NO" replacementFlags ${CMAKE_EXE_LINKER_FLAGS_DEBUG})
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "/DYNAMICBASE:NO /NXCOMPAT:NO /INCREMENTAL:NO ${replacementFlags}")
set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "/DYNAMICBASE:NO /NXCOMPAT:NO /INCREMENTAL:NO ${replacementFlags}")

string(REPLACE "INCREMENTAL" "INCREMENTAL:NO" replacementFlags ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO})
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "/INCREMENTAL:NO ${replacementFlags}")
set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "/INCREMENTAL:NO ${replacementFlags}")

# Disable Run Time Checking.
foreach(flag_var
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO
CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
#message("Processing flags ${flag_var}")
string(REGEX REPLACE "/RTC[^ ]*" "" ${flag_var} "${${flag_var}}")
endforeach(flag_var)

# Use x87 floating point instructions
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:IA32")

# Set warning level 3
# disable C4244: conversion from 'double' to 'float', possible loss of data
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3 /wd4244")

if (MSVC_VERSION LESS 1920)
# MSVC lower than 19
# disable C4800: 'BOOL' : forcing value to bool 'true' or 'false' (performance warning)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4800")
else()
# newer MSVC
# make C4800 error: Implicit conversion from 'type' to bool. Possible information loss
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /we4800")
endif()
endif()

set(CMAKE_CXX_STANDARD 17)

# We don't support in tree builds, so help people make the right choice.
Expand Down Expand Up @@ -122,15 +85,8 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${thyme_SOURCE_DIR}/cmake/modules)
find_package(ClangFormat)
include(ClangFormat)

include(CheckCXXCompilerFlag)
include(GNUInstallDirs)

check_cxx_compiler_flag(-Wno-invalid-offsetof HAVE_NO_INVALID_OFFSETOF)

if(HAVE_NO_INVALID_OFFSETOF)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-invalid-offsetof")
endif()

if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
# Prevent lib prefix when built with MinGW to target windows and move to own dir.
if(MINGW)
Expand Down Expand Up @@ -289,4 +245,4 @@ endif()
if(BUILD_TESTS)
enable_testing()
add_subdirectory(tests)
endif()
endif()
114 changes: 114 additions & 0 deletions CMakePresets.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
{
"version": 1,
"configurePresets": [
{
"name": "default",
"displayName": "Default Config",
"generator": "Ninja",
"hidden": true,
"binaryDir": "${sourceDir}/build",
"cacheVariables": {
"STANDALONE": "ON",
"BUILD_TOOLS": "ON"
}
},
{
"name": "default-win",
"inherits": "default",
"displayName": "MSVC defaults",
"hidden": true,
"cacheVariables": {
"CMAKE_EXE_LINKER_FLAGS_DEBUG": "/debug /INCREMENTAL:NO /DYNAMICBASE:NO /NXCOMPAT:NO",
"CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO": "/debug /INCREMENTAL:NO",
"CMAKE_MODULE_LINKER_FLAGS_DEBUG": "/debug /INCREMENTAL:NO /DYNAMICBASE:NO /NXCOMPAT:NO",
"CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO": "/debug /INCREMENTAL:NO",
"CMAKE_SHARED_LINKER_FLAGS_DEBUG": "/debug /INCREMENTAL:NO /DYNAMICBASE:NO /NXCOMPAT:NO",
"CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO": "/debug /INCREMENTAL:NO",
"CMAKE_C_FLAGS_DEBUG": "/MDd /Zi /Ob0 /Od",
"CMAKE_CXX_FLAGS_DEBUG": "/MDd /Zi /Ob0 /Od"
}
},
{
"name": "cl-2017",
"inherits": "default-win",
"displayName": "MSVC CL 2017 build",
"cacheVariables": {
"CMAKE_CXX_FLAGS": "/DWIN32 /D_WINDOWS /Zc:strictStrings /W3 /wd4244 /wd4800 /arch:IA32 /GR /EHsc"
}
},
{
"name": "cl-2019",
"inherits": "default-win",
"displayName": "MSVC CL 2019 build",
"cacheVariables": {
"CMAKE_CXX_FLAGS": "/DWIN32 /D_WINDOWS /Zc:strictStrings /W3 /wd4244 /we4800 /arch:IA32 /GR /EHsc"
}
},
{
"name": "msvc2017-i686",
"inherits": "cl-2017",
"displayName": "MSVC 2017 32bit build",
"generator": "Visual Studio 15 2017",
"cacheVariables": {
"BUILD_DLL": "ON"
}
},
{
"name": "msvc2017-x86-64",
"inherits": "cl-2017",
"displayName": "MSVC 2017 64bit build",
"generator": "Visual Studio 15 2017 Win64",
"cacheVariables": {
"BUILD_DLL": "OFF"
}
},
{
"name": "msvc2019-i686",
"inherits": "cl-2019",
"displayName": "MSVC 2019 32bit build",
"generator": "Visual Studio 16 2019",
"architecture": "Win32",
"cacheVariables": {
"BUILD_DLL": "ON"
}
},
{
"name": "msvc2019-x86-64",
"inherits": "cl-2019",
"displayName": "MSVC 2019 64bit build",
"generator": "Visual Studio 16 2019",
"architecture": "x64",
"cacheVariables": {
"BUILD_DLL": "OFF"
}
},
{
"name": "default-unix",
"inherits": "default",
"hidden": true,
"displayName": "UNIX defaults",
"cacheVariables": {
"BUILD_DLL": "OFF",
"CMAKE_CXX_FLAGS": "-Wno-invalid-offsetof"
}
},
{
"name": "gcc",
"inherits": "default-unix",
"displayName": "GCC build",
"environment": {
"CC": "gcc",
"CXX": "g++"
}
},
{
"name": "clang",
"inherits": "default-unix",
"displayName": "Clang build",
"environment": {
"CC": "clang",
"CXX": "clang++"
}
}
]
}