cmake_minimum_required(VERSION 3.21 FATAL_ERROR) project(libutil LANGUAGES C) set(CMAKE_C_STANDARD 23) set(CMAKE_C_STANDARD_REQUIRED TRUE) set(CMAKE_C_EXTENSIONS FALSE) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin) set(CMAKE_STATIC_LIBRARY_PREFIX "") set(CMAKE_SHARED_LIBRARY_PREFIX "") file(GLOB_RECURSE SRC CONFIGURE_DEPENDS ${PROJECT_SOURCE_DIR}/src/*.c) list(FILTER SRC EXCLUDE REGEX "^.*/test_.*$") add_library(libutil_static STATIC ${SRC}) add_library(libutil_shared SHARED ${SRC}) link_libraries(libutil_static) add_executable(test_base32 ${PROJECT_SOURCE_DIR}/src/test/test_base32.c) add_executable(test_base64 ${PROJECT_SOURCE_DIR}/src/test/test_base64.c) add_executable(test_crypt ${PROJECT_SOURCE_DIR}/src/test/test_crypt.c) add_executable(test_endian ${PROJECT_SOURCE_DIR}/src/test/test_endian.c) add_executable(test_error ${PROJECT_SOURCE_DIR}/src/test/test_error.c) add_executable(test_fnv ${PROJECT_SOURCE_DIR}/src/test/test_fnv.c) add_executable(test_map ${PROJECT_SOURCE_DIR}/src/test/test_map.c) add_executable(test_optget ${PROJECT_SOURCE_DIR}/src/test/test_optget.c) add_executable(test_rc2 ${PROJECT_SOURCE_DIR}/src/test/test_rc2.c) add_executable(test_strtou ${PROJECT_SOURCE_DIR}/src/test/test_strtou.c) enable_testing() add_test(NAME test_base32 COMMAND test_base32) add_test(NAME test_base64 COMMAND test_base64) add_test(NAME test_crypt COMMAND test_crypt) add_test(NAME test_endian COMMAND test_endian) add_test(NAME test_error COMMAND test_error) add_test(NAME test_fnv COMMAND test_fnv) add_test(NAME test_map COMMAND test_map) add_test(NAME test_optget COMMAND test_optget) add_test(NAME test_rc2 COMMAND test_rc2) add_test(NAME test_strtou COMMAND test_strtou)