Skip to content

Commit

Permalink
Merge branch 'main' of github.com:UwUClub/Zephyr
Browse files Browse the repository at this point in the history
  • Loading branch information
Valegox committed Jan 15, 2024
2 parents 06671d3 + 286dda4 commit a77f62b
Show file tree
Hide file tree
Showing 21 changed files with 136 additions and 134 deletions.
2 changes: 1 addition & 1 deletion .github/constants.env
Original file line number Diff line number Diff line change
@@ -1 +1 @@
PROJECT_NAME=patatocs
PROJECT_NAME=zephyr
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ cmake-build-*/
conan-cache/
CMakeCache.txt
.cache
libpatat*
patat*
libzephyr*
zephyr*
log.txt
*gcno
tests
Expand Down
28 changes: 14 additions & 14 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ set(CMAKE_CXX_EXTENSIONS OFF)

# Set the project name and language
project(
patatocs
zephyr
VERSION 0.0.1
DESCRIPTION ""
HOMEPAGE_URL "%%myurl%%"
Expand All @@ -27,13 +27,13 @@ project(
include(cmake/PreventInSourceBuilds.cmake)
include(ProjectOptions.cmake)

patatocs_setup_options()
zephyr_setup_options()

patatocs_global_options()
zephyr_global_options()
include(Dependencies.cmake)
patatocs_setup_dependencies()
zephyr_setup_dependencies()

patatocs_local_options()
zephyr_local_options()

# don't know if this should be set globally from here or not...
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
Expand All @@ -47,18 +47,18 @@ string(
8
GIT_SHORT_SHA)

target_compile_features(patatocs_options INTERFACE cxx_std_${CMAKE_CXX_STANDARD})
target_compile_features(zephyr_options INTERFACE cxx_std_${CMAKE_CXX_STANDARD})

add_library(patatocs::patatocs_options ALIAS patatocs_options)
add_library(patatocs::patatocs_warnings ALIAS patatocs_warnings)
add_library(zephyr::zephyr_options ALIAS zephyr_options)
add_library(zephyr::zephyr_warnings ALIAS zephyr_warnings)

# configure files based on CMake configuration options

add_library(${PROJECT_NAME})

target_link_libraries(${PROJECT_NAME}
PUBLIC patatocs::patatocs_options
patatocs::patatocs_warnings
PUBLIC zephyr::zephyr_options
zephyr::zephyr_warnings
)

set_target_properties(${PROJECT_NAME}
Expand Down Expand Up @@ -103,11 +103,11 @@ endif()

# Add other targets that you want installed here, by default we just package the one executable
# we know we want to ship
# patatocs_package_project(
# zephyr_package_project(
# TARGETS
# patatocs
# patatocs_options
# patatocs_warnings
# zephyr
# zephyr_options
# zephyr_warnings
# FIXME: this does not work! CK
# PRIVATE_DEPENDENCIES_CONFIGURED project_options project_warnings
# )
Expand Down
2 changes: 1 addition & 1 deletion Dependencies.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ message(STATUS "Catch2_FOUND: ${Catch2_FOUND}")
message(STATUS "spdlog_FOUND: ${spdlog_FOUND}")
message(STATUS "Boost_FOUND: ${Boost_FOUND}")

function(patatocs_setup_dependencies)
function(zephyr_setup_dependencies)

# For each dependency, see if it's
# already been provided to us by a parent project
Expand Down
188 changes: 94 additions & 94 deletions ProjectOptions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ include(CMakeDependentOption)
include(CheckCXXCompilerFlag)


macro(patatocs_supports_sanitizers)
macro(zephyr_supports_sanitizers)
if((CMAKE_CXX_COMPILER_ID MATCHES ".*Clang.*" OR CMAKE_CXX_COMPILER_ID MATCHES ".*GNU.*") AND NOT WIN32)
set(SUPPORTS_UBSAN ON)
else()
Expand All @@ -17,174 +17,174 @@ macro(patatocs_supports_sanitizers)
endif()
endmacro()

macro(patatocs_setup_options)
option(patatocs_ENABLE_HARDENING "Enable hardening" ON)
option(patatocs_ENABLE_COVERAGE "Enable coverage reporting" ON)
macro(zephyr_setup_options)
option(zephyr_ENABLE_HARDENING "Enable hardening" ON)
option(zephyr_ENABLE_COVERAGE "Enable coverage reporting" ON)
cmake_dependent_option(
patatocs_ENABLE_GLOBAL_HARDENING
zephyr_ENABLE_GLOBAL_HARDENING
"Attempt to push hardening options to built dependencies"
ON
patatocs_ENABLE_HARDENING
zephyr_ENABLE_HARDENING
OFF)

patatocs_supports_sanitizers()

if(NOT PROJECT_IS_TOP_LEVEL OR patatocs_PACKAGING_MAINTAINER_MODE)
option(patatocs_ENABLE_IPO "Enable IPO/LTO" OFF)
option(patatocs_WARNINGS_AS_ERRORS "Treat Warnings As Errors" OFF)
option(patatocs_ENABLE_USER_LINKER "Enable user-selected linker" OFF)
option(patatocs_ENABLE_SANITIZER_ADDRESS "Enable address sanitizer" OFF)
option(patatocs_ENABLE_SANITIZER_LEAK "Enable leak sanitizer" OFF)
option(patatocs_ENABLE_SANITIZER_UNDEFINED "Enable undefined sanitizer" OFF)
option(patatocs_ENABLE_SANITIZER_THREAD "Enable thread sanitizer" OFF)
option(patatocs_ENABLE_SANITIZER_MEMORY "Enable memory sanitizer" OFF)
option(patatocs_ENABLE_UNITY_BUILD "Enable unity builds" OFF)
option(patatocs_ENABLE_CLANG_TIDY "Enable clang-tidy" OFF)
option(patatocs_ENABLE_CPPCHECK "Enable cpp-check analysis" OFF)
option(patatocs_ENABLE_PCH "Enable precompiled headers" OFF)
option(patatocs_ENABLE_CACHE "Enable ccache" OFF)
zephyr_supports_sanitizers()

if(NOT PROJECT_IS_TOP_LEVEL OR zephyr_PACKAGING_MAINTAINER_MODE)
option(zephyr_ENABLE_IPO "Enable IPO/LTO" OFF)
option(zephyr_WARNINGS_AS_ERRORS "Treat Warnings As Errors" OFF)
option(zephyr_ENABLE_USER_LINKER "Enable user-selected linker" OFF)
option(zephyr_ENABLE_SANITIZER_ADDRESS "Enable address sanitizer" OFF)
option(zephyr_ENABLE_SANITIZER_LEAK "Enable leak sanitizer" OFF)
option(zephyr_ENABLE_SANITIZER_UNDEFINED "Enable undefined sanitizer" OFF)
option(zephyr_ENABLE_SANITIZER_THREAD "Enable thread sanitizer" OFF)
option(zephyr_ENABLE_SANITIZER_MEMORY "Enable memory sanitizer" OFF)
option(zephyr_ENABLE_UNITY_BUILD "Enable unity builds" OFF)
option(zephyr_ENABLE_CLANG_TIDY "Enable clang-tidy" OFF)
option(zephyr_ENABLE_CPPCHECK "Enable cpp-check analysis" OFF)
option(zephyr_ENABLE_PCH "Enable precompiled headers" OFF)
option(zephyr_ENABLE_CACHE "Enable ccache" OFF)
else()
option(patatocs_ENABLE_IPO "Enable IPO/LTO" ON)
option(patatocs_WARNINGS_AS_ERRORS "Treat Warnings As Errors" OFF)
option(patatocs_ENABLE_USER_LINKER "Enable user-selected linker" OFF)
option(patatocs_ENABLE_SANITIZER_ADDRESS "Enable address sanitizer" ${SUPPORTS_ASAN})
option(patatocs_ENABLE_SANITIZER_LEAK "Enable leak sanitizer" OFF)
option(patatocs_ENABLE_SANITIZER_UNDEFINED "Enable undefined sanitizer" ${SUPPORTS_UBSAN})
option(patatocs_ENABLE_SANITIZER_THREAD "Enable thread sanitizer" OFF)
option(patatocs_ENABLE_SANITIZER_MEMORY "Enable memory sanitizer" OFF)
option(patatocs_ENABLE_UNITY_BUILD "Enable unity builds" OFF)
option(patatocs_ENABLE_CLANG_TIDY "Enable clang-tidy" ON)
option(patatocs_ENABLE_CPPCHECK "Enable cpp-check analysis" ON)
option(patatocs_ENABLE_PCH "Enable precompiled headers" OFF)
option(patatocs_ENABLE_CACHE "Enable ccache" ON)
option(zephyr_ENABLE_IPO "Enable IPO/LTO" ON)
option(zephyr_WARNINGS_AS_ERRORS "Treat Warnings As Errors" OFF)
option(zephyr_ENABLE_USER_LINKER "Enable user-selected linker" OFF)
option(zephyr_ENABLE_SANITIZER_ADDRESS "Enable address sanitizer" ${SUPPORTS_ASAN})
option(zephyr_ENABLE_SANITIZER_LEAK "Enable leak sanitizer" OFF)
option(zephyr_ENABLE_SANITIZER_UNDEFINED "Enable undefined sanitizer" ${SUPPORTS_UBSAN})
option(zephyr_ENABLE_SANITIZER_THREAD "Enable thread sanitizer" OFF)
option(zephyr_ENABLE_SANITIZER_MEMORY "Enable memory sanitizer" OFF)
option(zephyr_ENABLE_UNITY_BUILD "Enable unity builds" OFF)
option(zephyr_ENABLE_CLANG_TIDY "Enable clang-tidy" ON)
option(zephyr_ENABLE_CPPCHECK "Enable cpp-check analysis" ON)
option(zephyr_ENABLE_PCH "Enable precompiled headers" OFF)
option(zephyr_ENABLE_CACHE "Enable ccache" ON)
endif()

if(NOT PROJECT_IS_TOP_LEVEL)
mark_as_advanced(
patatocs_ENABLE_IPO
patatocs_WARNINGS_AS_ERRORS
patatocs_ENABLE_USER_LINKER
patatocs_ENABLE_SANITIZER_ADDRESS
patatocs_ENABLE_SANITIZER_LEAK
patatocs_ENABLE_SANITIZER_UNDEFINED
patatocs_ENABLE_SANITIZER_THREAD
patatocs_ENABLE_SANITIZER_MEMORY
patatocs_ENABLE_UNITY_BUILD
patatocs_ENABLE_CLANG_TIDY
patatocs_ENABLE_CPPCHECK
patatocs_ENABLE_COVERAGE
patatocs_ENABLE_PCH
patatocs_ENABLE_CACHE)
zephyr_ENABLE_IPO
zephyr_WARNINGS_AS_ERRORS
zephyr_ENABLE_USER_LINKER
zephyr_ENABLE_SANITIZER_ADDRESS
zephyr_ENABLE_SANITIZER_LEAK
zephyr_ENABLE_SANITIZER_UNDEFINED
zephyr_ENABLE_SANITIZER_THREAD
zephyr_ENABLE_SANITIZER_MEMORY
zephyr_ENABLE_UNITY_BUILD
zephyr_ENABLE_CLANG_TIDY
zephyr_ENABLE_CPPCHECK
zephyr_ENABLE_COVERAGE
zephyr_ENABLE_PCH
zephyr_ENABLE_CACHE)
endif()

endmacro()

macro(patatocs_global_options)
if(patatocs_ENABLE_IPO)
macro(zephyr_global_options)
if(zephyr_ENABLE_IPO)
include(cmake/InterproceduralOptimization.cmake)
patatocs_enable_ipo()
zephyr_enable_ipo()
endif()

patatocs_supports_sanitizers()
zephyr_supports_sanitizers()

if(patatocs_ENABLE_HARDENING AND patatocs_ENABLE_GLOBAL_HARDENING)
if(zephyr_ENABLE_HARDENING AND zephyr_ENABLE_GLOBAL_HARDENING)
include(cmake/Hardening.cmake)
if(NOT SUPPORTS_UBSAN
OR patatocs_ENABLE_SANITIZER_UNDEFINED
OR patatocs_ENABLE_SANITIZER_ADDRESS
OR patatocs_ENABLE_SANITIZER_THREAD
OR patatocs_ENABLE_SANITIZER_LEAK)
OR zephyr_ENABLE_SANITIZER_UNDEFINED
OR zephyr_ENABLE_SANITIZER_ADDRESS
OR zephyr_ENABLE_SANITIZER_THREAD
OR zephyr_ENABLE_SANITIZER_LEAK)
set(ENABLE_UBSAN_MINIMAL_RUNTIME FALSE)
else()
set(ENABLE_UBSAN_MINIMAL_RUNTIME TRUE)
endif()
message("${patatocs_ENABLE_HARDENING} ${ENABLE_UBSAN_MINIMAL_RUNTIME} ${patatocs_ENABLE_SANITIZER_UNDEFINED}")
patatocs_enable_hardening(patatocs_options ON ${ENABLE_UBSAN_MINIMAL_RUNTIME})
message("${zephyr_ENABLE_HARDENING} ${ENABLE_UBSAN_MINIMAL_RUNTIME} ${zephyr_ENABLE_SANITIZER_UNDEFINED}")
zephyr_enable_hardening(zephyr_options ON ${ENABLE_UBSAN_MINIMAL_RUNTIME})
endif()
endmacro()

macro(patatocs_local_options)
macro(zephyr_local_options)
if(PROJECT_IS_TOP_LEVEL)
include(cmake/StandardProjectSettings.cmake)
endif()

add_library(patatocs_warnings INTERFACE)
add_library(patatocs_options INTERFACE)
add_library(zephyr_warnings INTERFACE)
add_library(zephyr_options INTERFACE)

include(cmake/CompilerWarnings.cmake)
patatocs_set_project_warnings(
patatocs_warnings
${patatocs_WARNINGS_AS_ERRORS}
zephyr_set_project_warnings(
zephyr_warnings
${zephyr_WARNINGS_AS_ERRORS}
""
""
""
"")

if(patatocs_ENABLE_USER_LINKER)
if(zephyr_ENABLE_USER_LINKER)
include(cmake/Linker.cmake)
configure_linker(patatocs_options)
configure_linker(zephyr_options)
endif()

include(cmake/Sanitizers.cmake)
patatocs_enable_sanitizers(
patatocs_options
${patatocs_ENABLE_SANITIZER_ADDRESS}
${patatocs_ENABLE_SANITIZER_LEAK}
${patatocs_ENABLE_SANITIZER_UNDEFINED}
${patatocs_ENABLE_SANITIZER_THREAD}
${patatocs_ENABLE_SANITIZER_MEMORY})
zephyr_enable_sanitizers(
zephyr_options
${zephyr_ENABLE_SANITIZER_ADDRESS}
${zephyr_ENABLE_SANITIZER_LEAK}
${zephyr_ENABLE_SANITIZER_UNDEFINED}
${zephyr_ENABLE_SANITIZER_THREAD}
${zephyr_ENABLE_SANITIZER_MEMORY})

set_target_properties(patatocs_options PROPERTIES UNITY_BUILD ${patatocs_ENABLE_UNITY_BUILD})
set_target_properties(zephyr_options PROPERTIES UNITY_BUILD ${zephyr_ENABLE_UNITY_BUILD})

if(patatocs_ENABLE_PCH)
if(zephyr_ENABLE_PCH)
target_precompile_headers(
patatocs_options
zephyr_options
INTERFACE
<vector>
<string>
<utility>)
endif()

if(patatocs_ENABLE_CACHE)
if(zephyr_ENABLE_CACHE)
include(cmake/Cache.cmake)
patatocs_enable_cache()
zephyr_enable_cache()
endif()

include(cmake/StaticAnalyzers.cmake)
if(patatocs_ENABLE_CLANG_TIDY)
patatocs_enable_clang_tidy(patatocs_options ${patatocs_WARNINGS_AS_ERRORS})
if(zephyr_ENABLE_CLANG_TIDY)
zephyr_enable_clang_tidy(zephyr_options ${zephyr_WARNINGS_AS_ERRORS})
endif()

if(patatocs_ENABLE_CPPCHECK)
patatocs_enable_cppcheck(${patatocs_WARNINGS_AS_ERRORS} "" # override cppcheck options
if(zephyr_ENABLE_CPPCHECK)
zephyr_enable_cppcheck(${zephyr_WARNINGS_AS_ERRORS} "" # override cppcheck options
)
endif()

if(patatocs_ENABLE_COVERAGE)
if(zephyr_ENABLE_COVERAGE)
include(cmake/Tests.cmake)
patatocs_enable_coverage(patatocs_options)
zephyr_enable_coverage(zephyr_options)
endif()

if(patatocs_WARNINGS_AS_ERRORS)
if(zephyr_WARNINGS_AS_ERRORS)
check_cxx_compiler_flag("-Wl,--fatal-warnings" LINKER_FATAL_WARNINGS)
if(LINKER_FATAL_WARNINGS)
# This is not working consistently, so disabling for now
# target_link_options(patatocs_options INTERFACE -Wl,--fatal-warnings)
# target_link_options(zephyr_options INTERFACE -Wl,--fatal-warnings)
endif()
endif()

if(patatocs_ENABLE_HARDENING AND NOT patatocs_ENABLE_GLOBAL_HARDENING)
if(zephyr_ENABLE_HARDENING AND NOT zephyr_ENABLE_GLOBAL_HARDENING)
include(cmake/Hardening.cmake)
if(NOT SUPPORTS_UBSAN
OR patatocs_ENABLE_SANITIZER_UNDEFINED
OR patatocs_ENABLE_SANITIZER_ADDRESS
OR patatocs_ENABLE_SANITIZER_THREAD
OR patatocs_ENABLE_SANITIZER_LEAK)
OR zephyr_ENABLE_SANITIZER_UNDEFINED
OR zephyr_ENABLE_SANITIZER_ADDRESS
OR zephyr_ENABLE_SANITIZER_THREAD
OR zephyr_ENABLE_SANITIZER_LEAK)
set(ENABLE_UBSAN_MINIMAL_RUNTIME FALSE)
else()
set(ENABLE_UBSAN_MINIMAL_RUNTIME TRUE)
endif()
patatocs_enable_hardening(patatocs_options OFF ${ENABLE_UBSAN_MINIMAL_RUNTIME})
zephyr_enable_hardening(zephyr_options OFF ${ENABLE_UBSAN_MINIMAL_RUNTIME})
endif()

endmacro()
2 changes: 1 addition & 1 deletion cmake/Cache.cmake
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Enable cache if available
function(patatocs_enable_cache)
function(zephyr_enable_cache)
set(CACHE_OPTION
"ccache"
CACHE STRING "Compiler cache to be used")
Expand Down
2 changes: 1 addition & 1 deletion cmake/CompilerWarnings.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# https://github.com/lefticus/cppbestpractices/blob/master/02-Use_the_Tools_Available.md

function(
patatocs_set_project_warnings
zephyr_set_project_warnings
project_name
WARNINGS_AS_ERRORS
MSVC_WARNINGS
Expand Down
2 changes: 1 addition & 1 deletion cmake/Cuda.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
# target_link_libraries(main_cuda PRIVATE project_options project_warnings)
# target_link_cuda(main_cuda)
#
macro(patatocs_target_link_cuda target)
macro(zephyr_target_link_cuda target)
# optional named CUDA_WARNINGS
set(oneValueArgs CUDA_WARNINGS)
cmake_parse_arguments(
Expand Down
Loading

0 comments on commit a77f62b

Please sign in to comment.