Skip to content
Merged
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
41 changes: 41 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files

# Clang-format for C++
# This brings in a portable version of clang-format.
# See also: https://github.com/ssciwr/clang-format-wheel
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v20.1.7
hooks:
- id: clang-format
types_or: [c++, c]

# CMake linting and formatting
- repo: https://github.com/BlankSpruce/gersemi
rev: 0.15.1
hooks:
- id: gersemi
name: CMake linting

# Markdown linting
# Config file: .markdownlint.yaml
# Commented out to disable this by default. Uncomment to enable markdown linting.
# - repo: https://github.com/igorshubovych/markdownlint-cli
# rev: v0.42.0
# hooks:
# - id: markdownlint

- repo: https://github.com/codespell-project/codespell
rev: v2.3.0
hooks:
- id: codespell

exclude: 'cookiecutter/'
24 changes: 14 additions & 10 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ FetchContent_MakeAvailable(execution)

include(CTest)
if(BUILD_TESTING)
add_subdirectory(tests/beman/${TARGET_NAME})
enable_testing()
add_subdirectory(tests/beman/${TARGET_NAME})
enable_testing()
endif()

add_subdirectory(src/beman/${TARGET_NAME})
Expand All @@ -36,16 +36,20 @@ set(INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake)
include(CMakePackageConfigHelpers)

write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}ConfigVersion.cmake
VERSION ${PROJECT_VERSION}
COMPATIBILITY AnyNewerVersion)
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}ConfigVersion.cmake
VERSION ${PROJECT_VERSION}
COMPATIBILITY AnyNewerVersion
)

configure_package_config_file(
"cmake/Config.cmake.in"
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}Config.cmake
INSTALL_DESTINATION ${INSTALL_CONFIGDIR})
"cmake/Config.cmake.in"
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}Config.cmake
INSTALL_DESTINATION ${INSTALL_CONFIGDIR}
)

install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}Config.cmake
FILES
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}Config.cmake
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}ConfigVersion.cmake
DESTINATION ${INSTALL_CONFIGDIR})
DESTINATION ${INSTALL_CONFIGDIR}
)
2 changes: 1 addition & 1 deletion bin/mk-compiler-explorer.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ def build_header(file, to, header):
for new in dependencies[todo[0]]:
todo.append(new)
todo = todo[1:]

while 0 < len(deps):
empty = [item for item in deps.keys() if 0 == len(deps[item])]
for e in empty:
Expand Down
2 changes: 1 addition & 1 deletion bin/update-cmake-headers.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,4 @@ def get_headers(dir):
output.write(f' {project}/include/{header}.hpp\n')
else:
output.write(line)
pass
pass
42 changes: 35 additions & 7 deletions etc/ci-clang-toolchain.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,41 @@ set(CMAKE_C_COMPILER clang)
set(CMAKE_CXX_COMPILER clang++)

set(CMAKE_CXX_FLAGS
"-std=c++20 \
"-std=c++20 \
-Wall -Wextra \
-stdlib=libc++ -fexperimental-library"
CACHE STRING "CXX_FLAGS" FORCE)
CACHE STRING
"CXX_FLAGS"
FORCE
)

set(CMAKE_CXX_FLAGS_DEBUG "-O0 -fno-inline -g3" CACHE STRING "C++ DEBUG Flags" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE "-Ofast -g0 -DNDEBUG" CACHE STRING "C++ Release Flags" FORCE)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g -DNDEBUG" CACHE STRING "C++ RelWithDebInfo Flags" FORCE)
set(CMAKE_CXX_FLAGS_TSAN "-O3 -g -DNDEBUG -fsanitize=thread" CACHE STRING "C++ TSAN Flags" FORCE)
set(CMAKE_CXX_FLAGS_ASAN "-O3 -g -DNDEBUG -fsanitize=address -fsanitize=undefined -fsanitize=leak" CACHE STRING "C++ ASAN Flags" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG
"-O0 -fno-inline -g3"
CACHE STRING
"C++ DEBUG Flags"
FORCE
)
set(CMAKE_CXX_FLAGS_RELEASE
"-Ofast -g0 -DNDEBUG"
CACHE STRING
"C++ Release Flags"
FORCE
)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
"-O3 -g -DNDEBUG"
CACHE STRING
"C++ RelWithDebInfo Flags"
FORCE
)
set(CMAKE_CXX_FLAGS_TSAN
"-O3 -g -DNDEBUG -fsanitize=thread"
CACHE STRING
"C++ TSAN Flags"
FORCE
)
set(CMAKE_CXX_FLAGS_ASAN
"-O3 -g -DNDEBUG -fsanitize=address -fsanitize=undefined -fsanitize=leak"
CACHE STRING
"C++ ASAN Flags"
FORCE
)
42 changes: 35 additions & 7 deletions etc/clang-flags.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,39 @@ include_guard(GLOBAL)
set(CMAKE_CXX_STANDARD 23)

set(CMAKE_CXX_FLAGS
"-stdlib=libc++ -Wall -Wextra "
CACHE STRING "CXX_FLAGS" FORCE)
"-stdlib=libc++ -Wall -Wextra "
CACHE STRING
"CXX_FLAGS"
FORCE
)

set(CMAKE_CXX_FLAGS_DEBUG "-O0 -fno-inline -g3" CACHE STRING "C++ DEBUG Flags" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE "-Ofast -g0 -DNDEBUG" CACHE STRING "C++ Release Flags" FORCE)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g -DNDEBUG" CACHE STRING "C++ RelWithDebInfo Flags" FORCE)
set(CMAKE_CXX_FLAGS_TSAN "-O3 -g -DNDEBUG -fsanitize=thread" CACHE STRING "C++ TSAN Flags" FORCE)
set(CMAKE_CXX_FLAGS_ASAN "-O3 -g -DNDEBUG -fsanitize=address,undefined,leak" CACHE STRING "C++ ASAN Flags" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG
"-O0 -fno-inline -g3"
CACHE STRING
"C++ DEBUG Flags"
FORCE
)
set(CMAKE_CXX_FLAGS_RELEASE
"-Ofast -g0 -DNDEBUG"
CACHE STRING
"C++ Release Flags"
FORCE
)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
"-O3 -g -DNDEBUG"
CACHE STRING
"C++ RelWithDebInfo Flags"
FORCE
)
set(CMAKE_CXX_FLAGS_TSAN
"-O3 -g -DNDEBUG -fsanitize=thread"
CACHE STRING
"C++ TSAN Flags"
FORCE
)
set(CMAKE_CXX_FLAGS_ASAN
"-O3 -g -DNDEBUG -fsanitize=address,undefined,leak"
CACHE STRING
"C++ ASAN Flags"
FORCE
)
39 changes: 31 additions & 8 deletions etc/gcc-flags.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,35 @@ include_guard(GLOBAL)

set(CMAKE_CXX_STANDARD 23)

set(CMAKE_CXX_FLAGS
"-std=c++23 -Wall -Wextra "
CACHE STRING "CXX_FLAGS" FORCE)
set(CMAKE_CXX_FLAGS "-std=c++23 -Wall -Wextra " CACHE STRING "CXX_FLAGS" FORCE)

set(CMAKE_CXX_FLAGS_DEBUG "-O0 -fno-inline -g3" CACHE STRING "C++ DEBUG Flags" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE "-Ofast -g0 -DNDEBUG" CACHE STRING "C++ Release Flags" FORCE)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g -DNDEBUG" CACHE STRING "C++ RelWithDebInfo Flags" FORCE)
set(CMAKE_CXX_FLAGS_TSAN "-O3 -g -DNDEBUG -fsanitize=thread" CACHE STRING "C++ TSAN Flags" FORCE)
set(CMAKE_CXX_FLAGS_ASAN "-O3 -g -DNDEBUG -fsanitize=undefined" CACHE STRING "C++ ASAN Flags" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG
"-O0 -fno-inline -g3"
CACHE STRING
"C++ DEBUG Flags"
FORCE
)
set(CMAKE_CXX_FLAGS_RELEASE
"-Ofast -g0 -DNDEBUG"
CACHE STRING
"C++ Release Flags"
FORCE
)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
"-O3 -g -DNDEBUG"
CACHE STRING
"C++ RelWithDebInfo Flags"
FORCE
)
set(CMAKE_CXX_FLAGS_TSAN
"-O3 -g -DNDEBUG -fsanitize=thread"
CACHE STRING
"C++ TSAN Flags"
FORCE
)
set(CMAKE_CXX_FLAGS_ASAN
"-O3 -g -DNDEBUG -fsanitize=undefined"
CACHE STRING
"C++ ASAN Flags"
FORCE
)
42 changes: 35 additions & 7 deletions etc/gcc-toolchain.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,40 @@ set(CMAKE_C_COMPILER gcc)
set(CMAKE_CXX_COMPILER g++)

set(CMAKE_CXX_FLAGS
"-std=c++20 \
"-std=c++20 \
-Wall -Wextra "
CACHE STRING "CXX_FLAGS" FORCE)
CACHE STRING
"CXX_FLAGS"
FORCE
)

set(CMAKE_CXX_FLAGS_DEBUG "-O0 -fno-inline -g3" CACHE STRING "C++ DEBUG Flags" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE "-Ofast -g0 -DNDEBUG" CACHE STRING "C++ Release Flags" FORCE)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g -DNDEBUG" CACHE STRING "C++ RelWithDebInfo Flags" FORCE)
set(CMAKE_CXX_FLAGS_TSAN "-O3 -g -DNDEBUG -fsanitize=thread" CACHE STRING "C++ TSAN Flags" FORCE)
set(CMAKE_CXX_FLAGS_ASAN "-O3 -g -DNDEBUG -fsanitize=address,undefined,leak" CACHE STRING "C++ ASAN Flags" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG
"-O0 -fno-inline -g3"
CACHE STRING
"C++ DEBUG Flags"
FORCE
)
set(CMAKE_CXX_FLAGS_RELEASE
"-Ofast -g0 -DNDEBUG"
CACHE STRING
"C++ Release Flags"
FORCE
)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
"-O3 -g -DNDEBUG"
CACHE STRING
"C++ RelWithDebInfo Flags"
FORCE
)
set(CMAKE_CXX_FLAGS_TSAN
"-O3 -g -DNDEBUG -fsanitize=thread"
CACHE STRING
"C++ TSAN Flags"
FORCE
)
set(CMAKE_CXX_FLAGS_ASAN
"-O3 -g -DNDEBUG -fsanitize=address,undefined,leak"
CACHE STRING
"C++ ASAN Flags"
FORCE
)
42 changes: 35 additions & 7 deletions etc/llvm-16-toolchain.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,41 @@ set(CMAKE_C_COMPILER clang-16)
set(CMAKE_CXX_COMPILER clang++-16)

set(CMAKE_CXX_FLAGS
"-std=c++20 \
"-std=c++20 \
-Wall -Wextra \
-stdlib=libc++ -fexperimental-library"
CACHE STRING "CXX_FLAGS" FORCE)
CACHE STRING
"CXX_FLAGS"
FORCE
)

set(CMAKE_CXX_FLAGS_DEBUG "-O0 -fno-inline -g3" CACHE STRING "C++ DEBUG Flags" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE "-Ofast -g0 -DNDEBUG" CACHE STRING "C++ Release Flags" FORCE)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g -DNDEBUG" CACHE STRING "C++ RelWithDebInfo Flags" FORCE)
set(CMAKE_CXX_FLAGS_TSAN "-O3 -g -DNDEBUG -fsanitize=thread" CACHE STRING "C++ TSAN Flags" FORCE)
set(CMAKE_CXX_FLAGS_ASAN "-O3 -g -DNDEBUG -fsanitize=address -fsanitize=undefined -fsanitize=leak" CACHE STRING "C++ ASAN Flags" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG
"-O0 -fno-inline -g3"
CACHE STRING
"C++ DEBUG Flags"
FORCE
)
set(CMAKE_CXX_FLAGS_RELEASE
"-Ofast -g0 -DNDEBUG"
CACHE STRING
"C++ Release Flags"
FORCE
)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
"-O3 -g -DNDEBUG"
CACHE STRING
"C++ RelWithDebInfo Flags"
FORCE
)
set(CMAKE_CXX_FLAGS_TSAN
"-O3 -g -DNDEBUG -fsanitize=thread"
CACHE STRING
"C++ TSAN Flags"
FORCE
)
set(CMAKE_CXX_FLAGS_ASAN
"-O3 -g -DNDEBUG -fsanitize=address -fsanitize=undefined -fsanitize=leak"
CACHE STRING
"C++ ASAN Flags"
FORCE
)
49 changes: 40 additions & 9 deletions etc/llvm-master-toolchain.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,48 @@ set(CMAKE_C_COMPILER ${LLVM_ROOT}/bin/clang)
set(CMAKE_CXX_COMPILER ${LLVM_ROOT}/bin/clang++)

set(CMAKE_CXX_FLAGS
"-std=c++2a \
"-std=c++2a \
-Wall -Wextra \
-stdlib=libc++ "
CACHE STRING "CXX_FLAGS" FORCE)
CACHE STRING
"CXX_FLAGS"
FORCE
)

set(CMAKE_EXE_LINKER_FLAGS
"-Wl,-rpath,${LLVM_ROOT}/lib"
CACHE STRING "CMAKE_EXE_LINKER_FLAGS" FORCE)
"-Wl,-rpath,${LLVM_ROOT}/lib"
CACHE STRING
"CMAKE_EXE_LINKER_FLAGS"
FORCE
)

set(CMAKE_CXX_FLAGS_DEBUG "-O0 -fno-inline -g3" CACHE STRING "C++ DEBUG Flags" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE "-Ofast -g0 -DNDEBUG" CACHE STRING "C++ Release Flags" FORCE)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g -DNDEBUG" CACHE STRING "C++ Release Flags" FORCE)
set(CMAKE_CXX_FLAGS_TSAN "-O3 -g -DNDEBUG -fsanitize=thread" CACHE STRING "C++ TSAN Flags" FORCE)
set(CMAKE_CXX_FLAGS_ASAN "-O3 -g -DNDEBUG -fsanitize=address -fsanitize=undefined -fsanitize=leak" CACHE STRING "C++ ASAN Flags" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG
"-O0 -fno-inline -g3"
CACHE STRING
"C++ DEBUG Flags"
FORCE
)
set(CMAKE_CXX_FLAGS_RELEASE
"-Ofast -g0 -DNDEBUG"
CACHE STRING
"C++ Release Flags"
FORCE
)
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
"-O3 -g -DNDEBUG"
CACHE STRING
"C++ Release Flags"
FORCE
)
set(CMAKE_CXX_FLAGS_TSAN
"-O3 -g -DNDEBUG -fsanitize=thread"
CACHE STRING
"C++ TSAN Flags"
FORCE
)
set(CMAKE_CXX_FLAGS_ASAN
"-O3 -g -DNDEBUG -fsanitize=address -fsanitize=undefined -fsanitize=leak"
CACHE STRING
"C++ ASAN Flags"
FORCE
)
Loading
Loading