cmake_minimum_required(VERSION "3.27.0") project("acpi" DESCRIPTION "An ACPI parsing library" VERSION "0.0.1" LANGUAGES ASM CXX ) add_library("acpi" STATIC) add_library("libs::acpi" ALIAS "acpi") target_include_directories("acpi" PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}" ) file(GLOB_RECURSE ACPI_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "acpi/*.hpp" ) target_sources("acpi" PRIVATE "acpi/checksum.cpp" "acpi/madt.cpp" "acpi/pointers.cpp" "acpi/sdt.cpp" ) target_sources("acpi" PUBLIC FILE_SET HEADERS BASE_DIRS "acpi" FILES ${ACPI_HEADERS} ) target_link_libraries("acpi" PUBLIC "libs::kstd" ) if(NOT CMAKE_CROSSCOMPILING) find_program(IASL_EXE NAMES "iasl" REQUIRED) set(TEST_TABLES "basic_madt" "basic_rsdt" "basic_rsdp" ) foreach(TABLE IN LISTS TEST_TABLES) add_custom_command(OUTPUT "test_data/${TABLE}.aml" COMMAND "${IASL_EXE}" -p "test_data/${TABLE}.aml" "${CMAKE_CURRENT_SOURCE_DIR}/test_data/${TABLE}.asl" DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/test_data/${TABLE}.asl" COMMENT "Compiling test_data/${TABLE}.asl" VERBATIM ) list(APPEND GENERATED_TABLE_BLOBS "${CMAKE_CURRENT_BINARY_DIR}/test_data/${TABLE}.aml") endforeach() set_source_files_properties("test_data/tables.S" PROPERTIES OBJECT_DEPENDS "${GENERATED_TABLE_BLOBS}") add_executable("acpi_tests" "acpi/madt.test.cpp" "acpi/pointers.test.cpp" "test_data/tables.S" ) target_include_directories("acpi_tests" PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/test_data" ) target_link_libraries("acpi_tests" PRIVATE "Catch2::Catch2WithMain" "libs::acpi" ) set_target_properties("acpi_tests" PROPERTIES C_CLANG_TIDY "" CXX_CLANG_TIDY "" EXCLUDE_FROM_ALL NO ) catch_discover_tests("acpi_tests") endif()