mirror of
https://github.com/aaru-dps/libaaruformat.git
synced 2025-12-16 11:14:39 +00:00
Refactor CMakeLists.txt for improved organization and add test data copying
This commit is contained in:
@@ -1,17 +1,19 @@
|
||||
cmake_minimum_required(VERSION 3.13)
|
||||
|
||||
# 'Google_test' is the subproject name
|
||||
project(tests)
|
||||
# Test suite project
|
||||
project(tests CXX)
|
||||
|
||||
# 'lib' is the folder with Google Test sources
|
||||
# Temporarily disable deprecation warnings for Google Test
|
||||
set(_aaru_saved_warn_deprecated __aaru_warn_not_set__)
|
||||
if(DEFINED CMAKE_WARN_DEPRECATED)
|
||||
set(_aaru_saved_warn_deprecated ${CMAKE_WARN_DEPRECATED})
|
||||
endif()
|
||||
set(CMAKE_WARN_DEPRECATED OFF CACHE BOOL "" FORCE)
|
||||
|
||||
# Add Google Test subdirectory
|
||||
add_subdirectory(lib)
|
||||
|
||||
# Restore original deprecation warning setting
|
||||
if(_aaru_saved_warn_deprecated STREQUAL __aaru_warn_not_set__)
|
||||
unset(CMAKE_WARN_DEPRECATED CACHE)
|
||||
unset(CMAKE_WARN_DEPRECATED)
|
||||
@@ -19,38 +21,82 @@ else()
|
||||
set(CMAKE_WARN_DEPRECATED ${_aaru_saved_warn_deprecated} CACHE BOOL "" FORCE)
|
||||
endif()
|
||||
unset(_aaru_saved_warn_deprecated)
|
||||
include_directories(${gtest_SOURCE_DIR}/include ${gtest_SOURCE_DIR} ../include ../3rdparty/uthash/include ../3rdparty/uthash/src)
|
||||
|
||||
# Copy test data files into build tree
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/random DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/)
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/flac.flac DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/)
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/audio.bin DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/)
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/lzma.bin DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/)
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/data.bin DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/)
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/mf2hd_v1.aif DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/)
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/mf2hd.aif DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/)
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/floptical_v1.aif DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/)
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/floptical.aif DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/)
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/gigamo_v1.aif DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/)
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/gigamo.aif DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/)
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/hifd_v1.aif DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/)
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/hifd.aif DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/)
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/mo540_v1.aif DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/)
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/mo540.aif DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/)
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/mo640_v1.aif DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/)
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/mo640.aif DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/)
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/cdmode1_v1.aif DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/)
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/cdmode1.aif DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/)
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/cdmode2_v1.aif DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/)
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/data/cdmode2.aif DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data/)
|
||||
# Define test data files to copy
|
||||
set(TEST_DATA_FILES
|
||||
random
|
||||
flac.flac
|
||||
audio.bin
|
||||
lzma.bin
|
||||
data.bin
|
||||
mf2hd_v1.aif
|
||||
mf2hd.aif
|
||||
floptical_v1.aif
|
||||
floptical.aif
|
||||
gigamo_v1.aif
|
||||
gigamo.aif
|
||||
hifd_v1.aif
|
||||
hifd.aif
|
||||
mo540_v1.aif
|
||||
mo540.aif
|
||||
mo640_v1.aif
|
||||
mo640.aif
|
||||
cdmode1_v1.aif
|
||||
cdmode1.aif
|
||||
cdmode2_v1.aif
|
||||
cdmode2.aif
|
||||
)
|
||||
|
||||
# Create data directory in build tree
|
||||
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/data)
|
||||
|
||||
# Copy test data files at build time (not configure time)
|
||||
foreach(data_file ${TEST_DATA_FILES})
|
||||
add_custom_command(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/data/${data_file}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/data/${data_file}
|
||||
${CMAKE_CURRENT_BINARY_DIR}/data/${data_file}
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/data/${data_file}
|
||||
COMMENT "Copying test data file: ${data_file}"
|
||||
)
|
||||
list(APPEND TEST_DATA_OUTPUTS ${CMAKE_CURRENT_BINARY_DIR}/data/${data_file})
|
||||
endforeach()
|
||||
|
||||
# Add custom target to ensure data files are copied
|
||||
add_custom_target(copy_test_data ALL DEPENDS ${TEST_DATA_OUTPUTS})
|
||||
|
||||
# Test executable (all unit tests)
|
||||
add_executable(tests_run crc64.cpp spamsum.cpp crc32.c crc32.h flac.cpp lzma.cpp sha256.cpp md5.cpp sha1.cpp open_image.cpp
|
||||
create_image.cpp)
|
||||
add_executable(tests_run
|
||||
crc64.cpp
|
||||
spamsum.cpp
|
||||
crc32.c
|
||||
crc32.h
|
||||
flac.cpp
|
||||
lzma.cpp
|
||||
sha256.cpp
|
||||
md5.cpp
|
||||
sha1.cpp
|
||||
open_image.cpp
|
||||
create_image.cpp
|
||||
)
|
||||
|
||||
# Set up include directories using modern target-specific approach
|
||||
target_include_directories(tests_run
|
||||
PRIVATE
|
||||
${gtest_SOURCE_DIR}/include
|
||||
${gtest_SOURCE_DIR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../include
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../3rdparty/uthash/include
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../3rdparty/uthash/src
|
||||
)
|
||||
|
||||
# Link libraries
|
||||
target_link_libraries(tests_run PRIVATE gtest gtest_main aaruformat)
|
||||
|
||||
# Ensure test data is copied before running tests
|
||||
add_dependencies(tests_run copy_test_data)
|
||||
|
||||
# Integrate with CTest (per-test reporting)
|
||||
enable_testing()
|
||||
include(GoogleTest)
|
||||
|
||||
Reference in New Issue
Block a user