67 lines
2.2 KiB
CMake
67 lines
2.2 KiB
CMake
cmake_minimum_required(VERSION 3.25)
|
|
project(bluelib C)
|
|
|
|
include (TestBigEndian)
|
|
|
|
set(CMAKE_C_STANDARD 99)
|
|
set(CMAKE_C_EXTENSIONS OFF)
|
|
|
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
|
|
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
|
|
|
set(b_modules core ds object serial term cmd io compress)
|
|
|
|
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)
|
|
|
|
file(GLOB test_sources test/*.c)
|
|
list(REMOVE_ITEM test_sources "${CMAKE_CURRENT_SOURCE_DIR}/test/units.c")
|
|
|
|
foreach (test_file ${test_sources})
|
|
get_filename_component(test_name ${test_file} NAME_WE)
|
|
add_executable(blue-${test_name} ${test_file})
|
|
|
|
set_target_properties(blue-${test_name} PROPERTIES FOLDER "Tests")
|
|
|
|
foreach (module ${b_modules})
|
|
target_link_libraries(blue-${test_name} blue-${module})
|
|
endforeach (module)
|
|
endforeach (test_file)
|