Files
FEX-Emu--FEX/unittests/ThunkFunctionalTests/CMakeLists.txt
T
crueter 872aec20b8 [cmake] more parenthesis cleanups, linker gc module, more same-line stuff
I may have gotten carried away.

- I missed some stuff for end parenthesis because I accidentally
  searched within project files instead of the entire directory (so some
  thunk/test/windows stuff was missed), cleaned those up.
- `INTERFACE`, `PUBLIC`, `PRIVATE`, `RUNTIME`, `LIBRARY` should be on
  the same line as the target name. (I should really invest in making a
  style guide...)
- Some short statements were unnecessarily split across multiple
  lines--cleaned those up
- Made a common `LinkerGC` module that applies gc-sections etc. to a
  target in Release mode
- Usually for functions you want to have something on the first line,
  e.g. `FILES`/`DIRECTORY` for install, or the target/a positional
  argument, etc etc. Not always though, notably for some custom_command
  calls

TODO:
- What's with the `list(APPEND LIBS...)` stuff? It's used really
  inconsistently, sometimes not at all, sometimes it looks like there're
  duplicates? A more thorough cleanup is in order there.

Signed-off-by: crueter <crueter@eden-emu.dev>
2025-12-29 15:44:18 -05:00

48 lines
1.8 KiB
CMake

set(FUNCTIONAL_DEPENDS "")
function(AddThunksTest Bin ThunksFile)
if (NOT ThunksFile)
set(TEST_NAME ThunkFunctionalTest-NoThunks-${Bin})
else()
set(TEST_NAME ThunkFunctionalTest-Thunks-${Bin})
endif()
add_test(NAME ${TEST_NAME}
COMMAND "$<TARGET_FILE:FEX>"
${Bin})
set_property(TEST ${TEST_NAME} APPEND PROPERTY DEPENDS "${Bin}")
set_property(TEST "${TEST_NAME}" APPEND PROPERTY ENVIRONMENT
"FEX_OUTPUTLOG=stderr;FEX_SILENTLOG=0;FEX_MAXINST=500;FEX_THUNKHOSTLIBS=${HOSTLIBS_DATA_DIRECTORY}/HostThunks;FEX_THUNKGUESTLIBS=${CMAKE_INSTALL_PREFIX}/share/fex-emu/GuestThunks")
if (ThunksFile)
set_property(TEST "${TEST_NAME}" APPEND PROPERTY ENVIRONMENT "FEX_THUNKCONFIG=${CMAKE_SOURCE_DIR}/Data/CI/${ThunksFile}")
endif()
list(APPEND FUNCTIONAL_DEPENDS "${TEST_NAME}")
endfunction()
function(AddTest Bin ThunksFile)
AddThunksTest("${Bin}" "")
AddThunksTest("${Bin}" "${ThunksFile}")
endfunction()
AddTest("/usr/bin/glxinfo" "GLThunks.json")
AddTest("/usr/bin/vulkaninfo" "VulkanThunks.json")
add_custom_target(thunk_functional_tests_nothunks
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
USES_TERMINAL
COMMAND "ctest" "--output-on-failure" "--timeout" "302" ${TEST_JOB_FLAG} "-R" "ThunkFunctionalTest-NoThunks-\.*"
DEPENDS "${FUNCTIONAL_DEPENDS}")
add_custom_target(thunk_functional_tests_thunks
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
USES_TERMINAL
COMMAND "ctest" "--output-on-failure" "--timeout" "302" ${TEST_JOB_FLAG} "-R" "ThunkFunctionalTest-Thunks-\.*"
DEPENDS "${FUNCTIONAL_DEPENDS}")
add_custom_target(thunk_functional_tests
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
USES_TERMINAL
COMMAND "ctest" "--output-on-failure" "--timeout" "302" ${TEST_JOB_FLAG} "-R" "ThunkFunctionalTest\.*"
DEPENDS "${FUNCTIONAL_DEPENDS}")