aboutsummaryrefslogtreecommitdiff
path: root/libs/acpi/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'libs/acpi/CMakeLists.txt')
-rw-r--r--libs/acpi/CMakeLists.txt64
1 files changed, 51 insertions, 13 deletions
diff --git a/libs/acpi/CMakeLists.txt b/libs/acpi/CMakeLists.txt
index 55d5b54..b0fc48f 100644
--- a/libs/acpi/CMakeLists.txt
+++ b/libs/acpi/CMakeLists.txt
@@ -6,17 +6,35 @@ project("acpi"
LANGUAGES ASM CXX
)
-add_library("acpi" STATIC)
-add_library("libs::acpi" ALIAS "acpi")
+include("CTest")
-target_include_directories("acpi" PUBLIC
- "${CMAKE_CURRENT_SOURCE_DIR}"
-)
+#[============================================================================[
+# External Dependencies
+#]============================================================================]
-file(GLOB_RECURSE ACPI_HEADERS
- RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
- "acpi/*.hpp"
-)
+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("acpi" STATIC)
+add_library("acpi::lib" ALIAS "acpi")
target_sources("acpi" PRIVATE
"acpi/common/checksum.cpp"
@@ -27,6 +45,11 @@ target_sources("acpi" PRIVATE
"acpi/pointers.cpp"
)
+file(GLOB_RECURSE ACPI_HEADERS
+ RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
+ "acpi/*.hpp"
+)
+
target_sources("acpi" PUBLIC
FILE_SET HEADERS
BASE_DIRS "acpi"
@@ -34,11 +57,23 @@ target_sources("acpi" PUBLIC
${ACPI_HEADERS}
)
+target_include_directories("acpi" PUBLIC
+ "${CMAKE_CURRENT_SOURCE_DIR}"
+)
+
target_link_libraries("acpi" PUBLIC
- "libs::kstd"
+ "kstd::lib"
)
-if(NOT CMAKE_CROSSCOMPILING)
+set_target_properties("acpi" PROPERTIES
+ VERIFY_INTERFACE_HEADER_SETS YES
+)
+
+#[============================================================================[
+# Tests
+#]============================================================================]
+
+if(BUILD_TESTING)
find_program(IASL_EXE NAMES "iasl" REQUIRED)
set(TEST_TABLES
@@ -61,7 +96,10 @@ if(NOT CMAKE_CROSSCOMPILING)
set_source_files_properties("test_data/tables.S" PROPERTIES OBJECT_DEPENDS "${GENERATED_TABLE_BLOBS}")
- add_executable("acpi_tests"
+ add_executable("acpi_tests")
+ add_executable("acpi::tests" ALIAS "acpi_tests")
+
+ target_sources("acpi_tests" PRIVATE
"acpi/common/table_header.test.cpp"
"acpi/data/madt.test.cpp"
"acpi/data/rsdt.test.cpp"
@@ -77,7 +115,7 @@ if(NOT CMAKE_CROSSCOMPILING)
target_link_libraries("acpi_tests" PRIVATE
"Catch2::Catch2WithMain"
- "libs::acpi"
+ "acpi::lib"
)
set_target_properties("acpi_tests" PROPERTIES