cmake_minimum_required(VERSION 3.25) project(bluelib C) include (TestBigEndian) set_property(GLOBAL PROPERTY USE_FOLDERS ON) set(b_modules core object term cmd) set(b_system_name ${CMAKE_SYSTEM_NAME}) string(TOLOWER ${b_system_name} b_system_name) message(STATUS "System name: ${b_system_name}") set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin) foreach (module ${b_modules}) add_subdirectory(${module}) if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${module}-test) message(STATUS "Building unit tests for module ${module}") if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${module}-test/${module}-units.c) add_executable(blue-${module}-units ${module}-test/${module}-units.c misc/AllTests.c misc/CuTest.c misc/CuTest.h) target_link_libraries(blue-${module}-units blue-${module}) target_include_directories(blue-${module}-units PRIVATE misc/) set_target_properties(blue-${module}-units PROPERTIES FOLDER "Tests/${module}") endif () file(GLOB test_sources ${module}-test/*.c) list(REMOVE_ITEM test_sources "${CMAKE_CURRENT_SOURCE_DIR}/${module}-test/${module}-units.c") foreach (test_file ${test_sources}) get_filename_component(test_name ${test_file} NAME_WE) add_executable(blue-${module}-${test_name} ${test_file}) set_target_properties(blue-${module}-${test_name} PROPERTIES FOLDER "Tests/${module}") target_link_libraries(blue-${module}-${test_name} blue-${module}) endforeach (test_file) endif () endforeach (module)