Files
nova-engine/engine/CMakeLists.txt

87 lines
2.1 KiB
CMake

# Copyright (c) 2025, Jayden Grubb <contact@jaydengrubb.com>
# SPDX-License-Identifier: BSD-3-Clause
set(NOVA_ENGINE_SRC
core/debug.cpp
graphics/context.cpp
)
list(TRANSFORM NOVA_ENGINE_SRC PREPEND ${CMAKE_CURRENT_SOURCE_DIR}/src/)
add_library(nova ${NOVA_ENGINE_SRC})
target_include_directories(nova
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src
)
if (NOVA_BACKEND_VULKAN)
find_package(Vulkan REQUIRED)
set(NOVA_VULKAN_SRC
backends/vulkan/context.cpp
backends/vulkan/device.cpp
)
list(TRANSFORM NOVA_VULKAN_SRC PREPEND ${CMAKE_CURRENT_SOURCE_DIR}/src/)
target_sources(nova PRIVATE ${NOVA_VULKAN_SRC})
target_compile_definitions(nova PRIVATE NOVA_BACKEND_VULKAN)
target_include_directories(nova PRIVATE ${Vulkan_INCLUDE_DIRS})
target_link_libraries(nova PRIVATE Vulkan::Vulkan)
endif()
set_target_properties(nova PROPERTIES
DEFINE_SYMBOL NOVA_EXPORT_SYMBOLS
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR}
)
add_library(nova::nova ALIAS nova)
if (NOVA_LIBRARY_INSTALL)
configure_package_config_file(
${CMAKE_CURRENT_SOURCE_DIR}/cmake/nova-config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/nova-config.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/nova
)
write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/nova-config-version.cmake
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion
)
install(
TARGETS nova
EXPORT nova-targets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
install(
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/nova
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
FILES_MATCHING PATTERN "*.hpp"
)
install(
EXPORT nova-targets
FILE nova-targets.cmake
NAMESPACE nova::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/nova
)
install(
FILES
${CMAKE_CURRENT_BINARY_DIR}/nova-config.cmake
${CMAKE_CURRENT_BINARY_DIR}/nova-config-version.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/nova
)
endif()