cmake_minimum_required(VERSION "3.27.0") project("multiboot2" DESCRIPTION "Multiboot2 bootloader specification library" VERSION "0.0.1" LANGUAGES CXX ) include("CTest") #[============================================================================[ # External Dependencies #]============================================================================] include("FetchContent") if (BUILD_TESTING) FetchContent_Declare( "Catch2" URL "https://github.com/catchorg/Catch2/archive/refs/tags/v3.7.1.tar.gz" URL_HASH "SHA256=c991b247a1a0d7bb9c39aa35faf0fe9e19764213f28ffba3109388e62ee0269c" EXCLUDE_FROM_ALL FIND_PACKAGE_ARGS ) FetchContent_MakeAvailable("Catch2") find_package("Catch2") include("Catch") endif() #[============================================================================[ # Library #]============================================================================] add_library("multiboot2" INTERFACE) add_library("multiboot2::lib" ALIAS "multiboot2") file(GLOB_RECURSE MULTIBOOT2_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} CONFIGURE_DEPENDS "include/**.hpp" ) target_sources("multiboot2" INTERFACE FILE_SET HEADERS BASE_DIRS "include" FILES ${MULTIBOOT2_HEADERS} ) target_include_directories("multiboot2" INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}" ) target_link_libraries("multiboot2" INTERFACE "elf::lib" "kstd::lib" ) set_target_properties("multiboot2" PROPERTIES VERIFY_INTERFACE_HEADER_SETS YES )