tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

jxl_tests.cmake (3037B)


      1 # Use of this source code is governed by a BSD-style
      2 # license that can be found in the LICENSE file.
      3 
      4 include(jxl_lists.cmake)
      5 
      6 if(BUILD_TESTING OR JPEGXL_ENABLE_TOOLS)
      7 # Library with test-only code shared between all tests / fuzzers.
      8 add_library(jxl_testlib-internal STATIC ${JPEGXL_INTERNAL_TESTLIB_FILES})
      9 target_compile_options(jxl_testlib-internal PRIVATE
     10  ${JPEGXL_INTERNAL_FLAGS}
     11  ${JPEGXL_COVERAGE_FLAGS}
     12 )
     13 target_compile_definitions(jxl_testlib-internal PUBLIC
     14  -DTEST_DATA_PATH="${JPEGXL_TEST_DATA_PATH}")
     15 target_include_directories(jxl_testlib-internal PUBLIC
     16  "${PROJECT_SOURCE_DIR}"
     17 )
     18 target_link_libraries(jxl_testlib-internal
     19  hwy
     20  jxl-internal
     21  jxl_threads
     22 )
     23 endif()
     24 
     25 if(NOT BUILD_TESTING)
     26  return()
     27 endif()
     28 
     29 list(APPEND JPEGXL_INTERNAL_TESTS
     30  # TODO(deymo): Move this to tools/
     31  ../tools/djxl_fuzzer_test.cc
     32  ../tools/gauss_blur_test.cc
     33 )
     34 
     35 find_package(GTest)
     36 
     37 set(JXL_WASM_TEST_LINK_FLAGS "")
     38 if (EMSCRIPTEN)
     39  # The emscripten linking step takes too much memory and crashes during the
     40  # wasm-opt step when using -O2 optimization level
     41  set(JXL_WASM_TEST_LINK_FLAGS "\
     42    -O1 \
     43    -s USE_LIBPNG=1 \
     44    -s ALLOW_MEMORY_GROWTH=1 \
     45    -s SINGLE_FILE=1 \
     46    -s EXIT_RUNTIME=1 \
     47    -s NODERAWFS=1 \
     48  ")
     49  if (JPEGXL_ENABLE_WASM_THREADS)
     50    set(JXL_WASM_TEST_LINK_FLAGS "${JXL_WASM_TEST_LINK_FLAGS} \
     51      -s PROXY_TO_PTHREAD \
     52      -s USE_PTHREADS=1 \
     53    ")
     54  endif()
     55 endif()  # EMSCRIPTEN
     56 
     57 # Individual test binaries:
     58 file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/tests)
     59 foreach (TESTFILE IN LISTS JPEGXL_INTERNAL_TESTS)
     60  # The TESTNAME is the name without the extension or directory.
     61  get_filename_component(TESTNAME ${TESTFILE} NAME_WE)
     62  if(TESTFILE STREQUAL ../tools/djxl_fuzzer_test.cc)
     63    add_executable(${TESTNAME} ${TESTFILE} ../tools/djxl_fuzzer.cc)
     64    target_link_libraries(${TESTNAME} jxl_tool)
     65  else()
     66    add_executable(${TESTNAME} ${TESTFILE})
     67  endif()
     68  if(EMSCRIPTEN)
     69    set_target_properties(${TESTNAME} PROPERTIES LINK_FLAGS "${JXL_WASM_TEST_LINK_FLAGS}")
     70  else()
     71    set_target_properties(${TESTNAME} PROPERTIES LINK_FLAGS "${JPEGXL_COVERAGE_LINK_FLAGS}")
     72  endif()
     73  target_compile_options(${TESTNAME} PRIVATE
     74    ${JPEGXL_INTERNAL_FLAGS}
     75    # Add coverage flags to the test binary so code in the private headers of
     76    # the library is also instrumented when running tests that execute it.
     77    ${JPEGXL_COVERAGE_FLAGS}
     78  )
     79  target_link_libraries(${TESTNAME}
     80    GTest::GTest
     81    GTest::Main
     82    jxl_testlib-internal
     83    jxl_extras-internal
     84  )
     85  if(TESTFILE STREQUAL ../tools/gauss_blur_test.cc)
     86    target_link_libraries(${TESTNAME} jxl_gauss_blur)
     87  endif()
     88 
     89  # Output test targets in the test directory.
     90  set_target_properties(${TESTNAME} PROPERTIES PREFIX "tests/")
     91  if (WIN32 AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
     92    set_target_properties(${TESTNAME} PROPERTIES COMPILE_FLAGS "-Wno-error")
     93  endif ()
     94  # 240 seconds because some build types (e.g. coverage) can be quite slow.
     95  gtest_discover_tests(${TESTNAME} DISCOVERY_TIMEOUT 240)
     96 endforeach ()