build: add enable_tests compile option
Some checks failed
continuous-integration/drone/push Build is failing

refactor: minor cmake refactor
This commit is contained in:
light7734 2025-07-16 10:52:49 +03:30
parent a54885b02e
commit b25ea41096
Signed by: light7734
GPG key ID: 8C30176798F1A6BA
6 changed files with 40 additions and 27 deletions

View file

@ -2,29 +2,15 @@ cmake_minimum_required(VERSION 3.14)
project(Light) project(Light)
set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD 23)
include(${CMAKE_CURRENT_SOURCE_DIR}/tools/cmake/macros.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/tools/cmake/functions.cmake)
include(${CMAKE_CURRENT_SOURCE_DIR}/tools/cmake/definitions.cmake)
add_option(ENABLE_STATIC_ANALYSIS "Enables clang-tidy static analysis") include(${CMAKE_CURRENT_SOURCE_DIR}/tools/cmake/dependencies.cmake)
add_option(ENABLE_STATIC_ANALYSIS "Performs static analysis via clang-tidy and fails build on failing checks")
if (ENABLE_STATIC_ANALYSIS) if (ENABLE_STATIC_ANALYSIS)
set(CMAKE_CXX_CLANG_TIDY "clang-tidy;--warnings-as-errors=*;--allow-no-checks") set(CMAKE_CXX_CLANG_TIDY "clang-tidy;--warnings-as-errors=*;--allow-no-checks")
endif () endif ()
if(WIN32) add_option(ENABLE_TESTS "Enables the building of the test modules")
add_compile_definitions(LIGHT_PLATFORM_WINDOWS)
elseif(UNIX)
add_compile_definitions(LIGHT_PLATFORM_LINUX)
endif()
find_package(glfw3 REQUIRED)
find_package(glm REQUIRED)
find_package(spdlog REQUIRED)
find_package(stb REQUIRED)
find_package(yaml-cpp REQUIRED)
find_package(EnTT REQUIRED)
find_package(opengl_system REQUIRED)
find_package(nlohmann_json REQUIRED)
find_package(lz4 REQUIRED)
add_subdirectory(./modules) add_subdirectory(./modules)
add_subdirectory(./external) add_subdirectory(./external)

View file

@ -11,11 +11,13 @@ class LightRecipe(ConanFile):
generators = "CMakeDeps" generators = "CMakeDeps"
options = { options = {
"enable_tests": [True, False],
"enable_static_analysis": [True, False], "enable_static_analysis": [True, False],
"export_compile_commands": [True, False], "export_compile_commands": [True, False],
} }
default_options = { default_options = {
"enable_tests": True,
"export_compile_commands": True, "export_compile_commands": True,
"enable_static_analysis": False, "enable_static_analysis": False,
} }
@ -43,6 +45,7 @@ class LightRecipe(ConanFile):
tc.cache_variables["CMAKE_EXPORT_COMPILE_COMMANDS"] = self.options.export_compile_commands tc.cache_variables["CMAKE_EXPORT_COMPILE_COMMANDS"] = self.options.export_compile_commands
tc.cache_variables["ENABLE_STATIC_ANALYSIS"] = self.options.enable_static_analysis tc.cache_variables["ENABLE_STATIC_ANALYSIS"] = self.options.enable_static_analysis
tc.cache_variables["ENABLE_TESTS"] = self.options.enable_tests
repo = git.Repo(search_parent_directories=True) repo = git.Repo(search_parent_directories=True)
tc.cache_variables["GIT_HASH"] = repo.head.object.hexsha tc.cache_variables["GIT_HASH"] = repo.head.object.hexsha

6
docs/index.rst Normal file
View file

@ -0,0 +1,6 @@
A bleeding-edge, cross-platform, cross-graphics-api, minimal-dependencies modern game-engine.
Supported Platforms: Windows, Mac, Linux, FreeBSD
Supported GraphicsAPIs: DirectX12-Ultimate, Vulkan 1.4, Metal, OpenGL 4.6
Dependencies: stdlib, meshoptimizer

View file

@ -0,0 +1,5 @@
if(WIN32)
add_compile_definitions(LIGHT_PLATFORM_WINDOWS)
elseif(UNIX)
add_compile_definitions(LIGHT_PLATFORM_LINUX)
endif()

View file

@ -0,0 +1,9 @@
find_package(glfw3 REQUIRED)
find_package(glm REQUIRED)
find_package(spdlog REQUIRED)
find_package(stb REQUIRED)
find_package(yaml-cpp REQUIRED)
find_package(EnTT REQUIRED)
find_package(opengl_system REQUIRED)
find_package(nlohmann_json REQUIRED)
find_package(lz4 REQUIRED)

View file

@ -1,4 +1,4 @@
macro (add_library_module libname) function (add_library_module libname)
if ("${ARGN}" STREQUAL "") # Header only library if ("${ARGN}" STREQUAL "") # Header only library
message("Adding INTERFACE library ${libname}") message("Adding INTERFACE library ${libname}")
add_library(${libname} INTERFACE) add_library(${libname} INTERFACE)
@ -25,9 +25,9 @@ macro (add_library_module libname)
target_link_libraries(${libname} PUBLIC base) target_link_libraries(${libname} PUBLIC base)
endif () endif ()
endif () endif ()
endmacro () endfunction ()
macro (add_executable_module exename) function (add_executable_module exename)
set(source_files) set(source_files)
set(source_directory "${CMAKE_CURRENT_SOURCE_DIR}/src") set(source_directory "${CMAKE_CURRENT_SOURCE_DIR}/src")
foreach (source_file ${ARGN}) foreach (source_file ${ARGN})
@ -38,9 +38,13 @@ macro (add_executable_module exename)
add_executable(${exename} ${source_files}) add_executable(${exename} ${source_files})
target_include_directories(${exename} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include) target_include_directories(${exename} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)
target_link_libraries(${exename} PRIVATE base) target_link_libraries(${exename} PRIVATE base)
endmacro () endfunction ()
function (add_test_module exename)
if (NOT ${ENABLE_TESTS})
return()
endif ()
macro (add_test_module exename)
set(source_files) set(source_files)
set(source_directory "${CMAKE_CURRENT_SOURCE_DIR}/src") set(source_directory "${CMAKE_CURRENT_SOURCE_DIR}/src")
foreach (source_file ${ARGN}) foreach (source_file ${ARGN})
@ -51,9 +55,9 @@ macro (add_test_module exename)
add_executable(${exename}_tests ${source_files}) add_executable(${exename}_tests ${source_files})
target_include_directories(${exename} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include) target_include_directories(${exename} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)
target_link_libraries(${exename}_tests PRIVATE ${exename} base test) target_link_libraries(${exename}_tests PRIVATE ${exename} base test)
endmacro () endfunction ()
macro (add_option option help) function (add_option option help)
option(${option} ${help}) option(${option} ${help})
if (${option}) if (${option})
@ -62,4 +66,4 @@ macro (add_option option help)
else () else ()
message(STATUS "${option}: OFF") message(STATUS "${option}: OFF")
endif () endif ()
endmacro () endfunction ()