mirror of
https://github.com/lifting-bits/sleigh
synced 2026-06-21 13:56:12 +00:00
74838a39ba
* Major CMake refactor * CI fixes * Fix CMake errors * Install graphviz on Windows * More consistent CMake build types * Fix compiler defines for Windows * Fix more bugs * Add standalone tool building support * Fix typo * Update README * Install sleighLift before trying to smoketest it * Test coverage preset The compiler option '-fkeep-inline-functions' originally included with the coverage build type causes errors with the message "undefined reference to 'vtable for OpAction*'" for all OpAction subclasses. This StackOverflow answer might help in resolving this? https://stackoverflow.com/a/57504289 * Build documentation by default with CI presets * Use COMPONENT for install commands This allows for someone to specify which components they want to install if they only want or need a subset * Support cross compiling with host system sleigh compiler * Various fixes found during review * Move "_WINDOWS" define to CMakeLists.txt file * Rename ToB 'tools' directory to 'extra-tools' * Separate projects for sleigh tools Library is still top-level CMakeLists.txt More options * CMake find_package(Git) * Fix bad merge for patch paths * Fix missing libconfig.h header install * Fix issues with installation of headers * More refactoring * Refactor sleighexample into its own project/directory * Refactor specfiles building into separate project/directory * Check for termios.h header and set define if found * Update READMEs * Better consistency with install rules * Build sleighLift as a standalone project with added source * More changes to CMake subprojects * Also add "Specs" component to sleigh installation config * Try to be better at bootstrapping subprojects (hopefully this doesn't bite us, but if it does, I'm happy to remove it and say "not supported") * Address some code review * Add project sleigh_tool for tool subdirectory Could make it easier to build just the tools * Add help text to name the tool executable name * Add license notice to CMake files * Fix/Remove too specific CPack packaging configuration * Consistent capitalization of Sleigh Co-authored-by: Alex Cameron <asc@tetsuo.sh>
131 lines
3.5 KiB
JSON
131 lines
3.5 KiB
JSON
{
|
|
"version": 2,
|
|
"cmakeMinimumRequired": {
|
|
"major": 3,
|
|
"minor": 18,
|
|
"patch": 0
|
|
},
|
|
"configurePresets": [
|
|
{
|
|
"name": "cmake-pedantic",
|
|
"hidden": true,
|
|
"warnings": {
|
|
"dev": true,
|
|
"deprecated": true,
|
|
"uninitialized": true,
|
|
"unusedCli": true,
|
|
"systemVars": false
|
|
},
|
|
"errors": {
|
|
"dev": true,
|
|
"deprecated": true
|
|
}
|
|
},
|
|
{
|
|
"name": "dev-mode",
|
|
"hidden": true,
|
|
"inherits": "cmake-pedantic",
|
|
"cacheVariables": {
|
|
"sleigh_DEVELOPER_MODE": "ON",
|
|
"sleigh_BUILD_DOCUMENTATION": "ON"
|
|
}
|
|
},
|
|
{
|
|
"name": "ci-std",
|
|
"description": "This preset makes sure the project actually builds with at least the specified standard",
|
|
"hidden": true,
|
|
"cacheVariables": {
|
|
"CMAKE_CXX_EXTENSIONS": "OFF",
|
|
"CMAKE_CXX_STANDARD": "11",
|
|
"CMAKE_CXX_STANDARD_REQUIRED": "ON"
|
|
}
|
|
},
|
|
{
|
|
"name": "ci-std-tools",
|
|
"description": "This preset makes sure the project actually builds with at least the specified standard for extra sleigh tools",
|
|
"hidden": true,
|
|
"inherits": "ci-std",
|
|
"cacheVariables": {
|
|
"CMAKE_CXX_STANDARD": "17"
|
|
}
|
|
},
|
|
{
|
|
"name": "flags-unix",
|
|
"hidden": true,
|
|
"cacheVariables": {
|
|
"CMAKE_CXX_FLAGS": "-Wall -Wextra -Wpedantic -Wconversion -Wsign-conversion -Wcast-qual -Wshadow -Wformat=2 -Wundef"
|
|
}
|
|
},
|
|
{
|
|
"name": "flags-windows",
|
|
"description": "Note that all the flags after /W4 are required for MSVC to conform to the language standard",
|
|
"hidden": true,
|
|
"cacheVariables": {
|
|
"CMAKE_CXX_FLAGS": "/utf-8 /W4 /permissive- /volatile:iso /Zc:preprocessor /EHsc /Zc:__cplusplus /Zc:externConstexpr /Zc:throwingNew"
|
|
}
|
|
},
|
|
{
|
|
"name": "ci-unix",
|
|
"generator": "Unix Makefiles",
|
|
"hidden": true,
|
|
"inherits": ["flags-unix", "ci-std"],
|
|
"cacheVariables": {
|
|
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
|
|
}
|
|
},
|
|
{
|
|
"name": "ci-win64",
|
|
"inherits": ["flags-windows", "ci-std"],
|
|
"generator": "Visual Studio 17 2022",
|
|
"architecture": "x64",
|
|
"hidden": true
|
|
},
|
|
{
|
|
"name": "coverage-unix",
|
|
"binaryDir": "${sourceDir}/build/coverage",
|
|
"inherits": "ci-unix",
|
|
"hidden": true,
|
|
"cacheVariables": {
|
|
"ENABLE_COVERAGE": "ON",
|
|
"CMAKE_BUILD_TYPE": "Coverage",
|
|
"CMAKE_CXX_FLAGS_COVERAGE": "-Og -g --coverage -fkeep-static-functions",
|
|
"CMAKE_EXE_LINKER_FLAGS_COVERAGE": "--coverage",
|
|
"CMAKE_SHARED_LINKER_FLAGS_COVERAGE": "--coverage"
|
|
}
|
|
},
|
|
{
|
|
"name": "ci-coverage",
|
|
"inherits": ["coverage-unix", "dev-mode"],
|
|
"cacheVariables": {
|
|
"COVERAGE_HTML_COMMAND": ""
|
|
}
|
|
},
|
|
{
|
|
"name": "ci-sanitize",
|
|
"binaryDir": "${sourceDir}/build/sanitize",
|
|
"inherits": ["ci-unix", "dev-mode"],
|
|
"cacheVariables": {
|
|
"CMAKE_BUILD_TYPE": "Sanitize",
|
|
"CMAKE_CXX_FLAGS_SANITIZE": "-O2 -g -fsanitize=address,undefined -fno-omit-frame-pointer -fno-common"
|
|
}
|
|
},
|
|
{
|
|
"name": "ci-build",
|
|
"binaryDir": "${sourceDir}/build",
|
|
"hidden": true
|
|
},
|
|
{
|
|
"name": "ci-macos",
|
|
"inherits": ["ci-build", "ci-unix", "dev-mode"]
|
|
},
|
|
{
|
|
"name": "ci-ubuntu",
|
|
"inherits": ["ci-build", "ci-unix", "dev-mode"]
|
|
},
|
|
{
|
|
"name": "ci-windows",
|
|
"inherits": ["ci-build", "ci-win64", "dev-mode"]
|
|
}
|
|
]
|
|
}
|