add_library("kstd" STATIC) add_library("libs::kstd" ALIAS "kstd") if(CMAKE_CROSSCOMPILING) set(KSTD_LIBC_SYMBOLS "abort" "strlen" "memcmp" "memcpy" ) set(KSTD_LIBC_SOURCES "src/libc/stdlib.cpp" "src/libc/string.cpp" ) endif() target_sources("kstd" PRIVATE ${KSTD_LIBC_SOURCES} "src/os/error.cpp" "src/mutex.cpp" ) file(GLOB_RECURSE KSTD_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "include/kstd/*") target_sources("kstd" PUBLIC FILE_SET HEADERS BASE_DIRS "include" FILES ${KSTD_HEADERS} ) target_include_directories("kstd" PUBLIC "include" ) if(CMAKE_CROSSCOMPILING) list(TRANSFORM KSTD_LIBC_SYMBOLS PREPEND "-Wl,--undefined=") target_link_options("kstd" INTERFACE ${KSTD_LIBC_SYMBOLS}) else() add_executable("kstd_tests" "tests/src/flat_map.cpp" "tests/src/vector.cpp" "tests/src/observer_ptr.cpp" "tests/src/os_panic.cpp" "tests/src/string.cpp" ) target_include_directories("kstd_tests" PRIVATE "tests/include" ) target_link_libraries("kstd_tests" PRIVATE "Catch2::Catch2WithMain" "libs::kstd" ) set_target_properties("kstd_tests" PROPERTIES C_CLANG_TIDY "" CXX_CLANG_TIDY "" EXCLUDE_FROM_ALL NO ) enable_coverage("kstd") enable_coverage("kstd_tests") catch_discover_tests("kstd_tests") endif()