Files
palladium/CMakeLists.txt

104 lines
2.7 KiB
CMake
Raw Normal View History

cmake_minimum_required(VERSION 3.22)
2025-04-24 16:39:24 +02:00
include(GNUInstallDirs)
2025-04-24 16:39:24 +02:00
# Set Project
project(palladium LANGUAGES C CXX VERSION 0.7.0)
# Required to add this Variable
set(PD_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include)
include(cmake/palladium.cmake)
2025-04-24 16:39:24 +02:00
option(PD_BUILD_TESTS "Sets if TestApp and TestBench get build" OFF)
option(PD_BUILD_SHARED "Build Shared Library" OFF)
option(PD_BUILD_TOOLS "Build Palladium Tools" OFF)
2025-04-24 16:39:24 +02:00
if(${PD_BUILD_TOOLS})
add_subdirectory(tools)
2025-04-24 16:39:24 +02:00
endif()
add_subdirectory(vendor)
# # Include Library Source
set(PD_SOURCES
# Core
source/core/bits.cpp
source/core/color.cpp
source/core/mat.cpp
source/core/strings.cpp
2025-04-24 16:39:24 +02:00
source/drivers/os.cpp
source/drivers/gfx.cpp
2025-04-24 16:39:24 +02:00
)
if(${PD_BUILD_SHARED})
add_library(palladium SHARED ${PD_SOURCES})
2026-01-25 20:57:14 +01:00
target_compile_definitions(palladium PRIVATE -DPD_BUILD_SHARED)
else()
add_library(palladium STATIC ${PD_SOURCES})
2026-01-29 20:17:04 +01:00
target_compile_definitions(palladium PUBLIC -DPD_BUILD_STATIC)
endif()
add_library(palladium::palladium ALIAS palladium)
target_include_directories(palladium
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
)
2026-01-29 20:17:04 +01:00
target_compile_options(palladium PRIVATE
$<$<CONFIG:Debug>:-O0 -g>
$<$<CONFIG:Release>:-O3>
)
2026-01-28 07:40:34 +01:00
install(TARGETS palladium
EXPORT palladiumTargets
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
install(DIRECTORY include/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
install(EXPORT palladiumTargets
FILE palladiumTargets.cmake
NAMESPACE palladium::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/palladium
)
include(CMakePackageConfigHelpers)
configure_package_config_file(
cmake/palladiumConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/palladiumConfig.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/palladium
)
write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/palladiumConfigVersion.cmake
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion
)
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/palladiumConfig.cmake
${CMAKE_CURRENT_BINARY_DIR}/palladiumConfigVersion.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/palladium
)
find_program(CLANG_FORMAT clang-format)
file(GLOB_RECURSE PD_FMTFILES CONFIGURE_DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/source/*.cpp
${CMAKE_CURRENT_SOURCE_DIR}/include/*.hpp
)
add_custom_target(pd-clang-format
COMMAND ${CLANG_FORMAT} --style=file -i ${PD_FMTFILES}
COMMENT "Formatting Project Sources"
2026-01-29 20:17:04 +01:00
)
add_subdirectory(backends)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/tests)