Files
RedBear-OS/local/recipes/libs/lcms2/source/cmake/Lcms2Tests.cmake
T
vasilito d551d5dc41 feat: add display stack dependency recipes
Add lcms2, libdisplay-info, libepoxy, and libxcvt recipes required
by the KWin/Mesa display stack.
2026-05-11 10:10:11 +01:00

91 lines
2.9 KiB
CMake

function(lcms2_add_tests)
if(NOT LCMS2_BUILD_TESTS)
return()
endif()
set(_testbed_bin_dir "${PROJECT_BINARY_DIR}/testbed")
if(DEFINED LCMS2_STATIC_LIBRARY_TARGET)
set(_lcms2_test_lib "${LCMS2_STATIC_LIBRARY_TARGET}")
else()
# Ensure tests can link statically even if the user disabled the installed static target.
if(COMMAND _lcms2_collect_sources)
_lcms2_collect_sources(_lcms2_sources_for_tests)
add_library(lcms2_test_static STATIC ${_lcms2_sources_for_tests})
if(COMMAND _lcms2_apply_common_settings)
_lcms2_apply_common_settings(lcms2_test_static)
endif()
if(COMMAND _lcms2_apply_thread_settings)
_lcms2_apply_thread_settings(lcms2_test_static)
endif()
set(_lcms2_test_lib lcms2_test_static)
else()
set(_lcms2_test_lib "${LCMS2_LIBRARY_TARGET}")
endif()
endif()
add_executable(testcms
"${PROJECT_SOURCE_DIR}/testbed/testcms2.c"
"${PROJECT_SOURCE_DIR}/testbed/testplugin.c"
"${PROJECT_SOURCE_DIR}/testbed/zoo_icc.c"
"${PROJECT_SOURCE_DIR}/testbed/testcms2.h"
)
target_include_directories(testcms
PRIVATE
"${PROJECT_SOURCE_DIR}/include"
"${PROJECT_SOURCE_DIR}/src"
"${PROJECT_SOURCE_DIR}/testbed"
)
if(_lcms2_test_lib)
target_link_libraries(testcms PRIVATE "${_lcms2_test_lib}")
endif()
set_target_properties(testcms PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${_testbed_bin_dir}"
)
# Per-target debug postfix for MSVC builds (avoids modifying CMAKE_DEBUG_POSTFIX globally).
if(MSVC)
set_target_properties(testcms PROPERTIES DEBUG_POSTFIX "d")
endif()
# Copy ICC fixtures into the build testbed dir (mirrors autotools make check behavior).
set(_icc_files
"${PROJECT_SOURCE_DIR}/testbed/test1.icc"
"${PROJECT_SOURCE_DIR}/testbed/test2.icc"
"${PROJECT_SOURCE_DIR}/testbed/test3.icc"
"${PROJECT_SOURCE_DIR}/testbed/test4.icc"
"${PROJECT_SOURCE_DIR}/testbed/test5.icc"
"${PROJECT_SOURCE_DIR}/testbed/ibm-t61.icc"
"${PROJECT_SOURCE_DIR}/testbed/crayons.icc"
"${PROJECT_SOURCE_DIR}/testbed/bad.icc"
"${PROJECT_SOURCE_DIR}/testbed/bad_mpe.icc"
"${PROJECT_SOURCE_DIR}/testbed/toosmall.icc"
)
set(_icc_outputs "")
foreach(_f IN LISTS _icc_files)
get_filename_component(_name "${_f}" NAME)
set(_out "${_testbed_bin_dir}/${_name}")
list(APPEND _icc_outputs "${_out}")
add_custom_command(
OUTPUT "${_out}"
COMMAND "${CMAKE_COMMAND}" -E make_directory "${_testbed_bin_dir}"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${_f}" "${_out}"
DEPENDS "${_f}"
VERBATIM
)
endforeach()
add_custom_target(lcms2_test_fixtures ALL DEPENDS ${_icc_outputs})
add_dependencies(testcms lcms2_test_fixtures)
add_test(NAME lcms2.testcms COMMAND "${_testbed_bin_dir}/testcms")
set_tests_properties(lcms2.testcms PROPERTIES WORKING_DIRECTORY "${_testbed_bin_dir}")
endfunction()