Skip to content

Commit

Permalink
Adds initial CMake presets configuration (#2169)
Browse files Browse the repository at this point in the history
* Adds CMakeUserPresets.json to gitignore

* Adds presets based on root CMakeLists

* Adds build presets

* Adds naive preset configuration detection

* Adds self review changes

* Uses NOT DEFINED for preset check
  • Loading branch information
MattBolitho authored Nov 17, 2024
1 parent c87b3ad commit d9d6338
Show file tree
Hide file tree
Showing 3 changed files with 111 additions and 4 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,5 @@ enzyme/benchmarks/ReverseMode/*/*.exe
enzyme/benchmarks/ReverseMode/*/results.txt
enzyme/benchmarks/ReverseMode/*/results.json
.cache
CMakeUserPresets.json
/out
10 changes: 6 additions & 4 deletions enzyme/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,13 @@ add_definitions(-DENZYME_VERSION_PATCH=${ENZYME_PATCH_VERSION})

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
SET(CMAKE_CXX_FLAGS "-Wall -fno-rtti ${CMAKE_CXX_FLAGS} -Werror=unused-variable -Werror=dangling-else -Werror=unused-but-set-variable -Werror=return-type -Werror=nonnull -Werror=unused-result -Werror=reorder -Werror=switch")
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "-O2")

SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g -ggdb -fno-omit-frame-pointer")
if (NOT DEFINED ENZYME_CONFIGURED_WITH_PRESETS)
set(CMAKE_CXX_FLAGS "-Wall -fno-rtti ${CMAKE_CXX_FLAGS} -Werror=unused-variable -Werror=dangling-else -Werror=unused-but-set-variable -Werror=return-type -Werror=nonnull -Werror=unused-result -Werror=reorder -Werror=switch")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g -ggdb")
set(CMAKE_CXX_FLAGS_RELEASE "-O2")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g -ggdb -fno-omit-frame-pointer")
endif()

#SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g -fno-omit-frame-pointer -fsanitize=address")
#SET(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} -fno-omit-frame-pointer -fsanitize=address")
Expand Down
103 changes: 103 additions & 0 deletions enzyme/CMakePresets.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
{
"version": 3,
"configurePresets": [
{
"name": "config-base",
"description": "Base configure preset.",
"hidden": true,
"generator": "Ninja",
"binaryDir": "${sourceDir}/out/build/${presetName}",
"installDir": "${sourceDir}/out/install/${presetName}",
"cacheVariables": {
"CMAKE_CXX_STANDARD": "17",
"CMAKE_CXX_STANDARD_REQUIRED": "ON",
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
"ENZYME_CONFIGURED_WITH_PRESETS": "ON"
}
},
{
"name": "config-base-linux",
"description": "Base configure preset for Linux.",
"inherits": "config-base",
"hidden": true,
"cacheVariables": {
"CMAKE_POSITION_INDEPENDENT_CODE": "ON"
},
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Linux"
}
},
{
"name": "config-base-x64",
"description": "Base preset for x64 platforms.",
"hidden": true,
"architecture": {
"value": "x64",
"strategy": "external"
}
},
{
"name": "x64-linux-clang",
"description": "Base preset for Linux development using Clang compilers.",
"hidden": true,
"inherits": [
"config-base-x64",
"config-base-linux"
],
"cacheVariables": {
"CMAKE_C_COMPILER": "clang",
"CMAKE_CXX_COMPILER": "clang++",
"CMAKE_CXX_FLAGS": "-Wall -fno-rtti -Werror=unused-variable -Werror=dangling-else -Werror=unused-but-set-variable -Werror=return-type -Werror=nonnull -Werror=unused-result -Werror=reorder -Werror=switch",
"CMAKE_CXX_FLAGS_DEBUG": "-O0 -g -ggdb -fno-omit-frame-pointer",
"CMAKE_CXX_FLAGS_RELEASE": "-O2",
"CMAKE_CXX_FLAGS_RELWITHDEBINFO": "-O2 -g -ggdb"
}
},
{
"name": "x64-linux-clang-debug",
"displayName": "Clang x64 Linux Debug",
"inherits": "x64-linux-clang",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug"
}
},
{
"name": "x64-linux-clang-release",
"displayName": "Clang x64 Linux Release",
"inherits": "x64-linux-clang",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
}
},
{
"name": "x64-linux-clang-release-with-debug-info",
"displayName": "Clang x64 Linux Release with Debug Info",
"inherits": "x64-linux-clang",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
}
}
],
"buildPresets": [
{
"name": "x64-linux-clang-debug",
"displayName": "Clang x64 Linux Debug",
"description": "Builds the project using Clang on Linux in Debug configuration.",
"configurePreset": "x64-linux-clang-debug"
},
{
"name": "x64-linux-clang-release",
"displayName": "Clang x64 Linux Release",
"description": "Builds the project using Clang on Linux in Release configuration.",
"configurePreset": "x64-linux-clang-release"
},
{
"name": "x64-linux-clang-release-with-debug-info",
"displayName": "Clang x64 Linux Release with Debug Info",
"description": "Builds the project using Clang on Linux in Release configuration with debug info.",
"configurePreset": "x64-linux-clang-release-with-debug-info"
}
]
}

0 comments on commit d9d6338

Please sign in to comment.