aboutsummaryrefslogtreecommitdiff
path: root/externals/dynarmic/tests/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'externals/dynarmic/tests/CMakeLists.txt')
-rw-r--r--externals/dynarmic/tests/CMakeLists.txt128
1 files changed, 128 insertions, 0 deletions
diff --git a/externals/dynarmic/tests/CMakeLists.txt b/externals/dynarmic/tests/CMakeLists.txt
new file mode 100644
index 0000000000..9335b972d3
--- /dev/null
+++ b/externals/dynarmic/tests/CMakeLists.txt
@@ -0,0 +1,128 @@
+include(TargetArchitectureSpecificSources)
+
+add_executable(dynarmic_tests
+ fp/FPToFixed.cpp
+ fp/FPValue.cpp
+ fp/mantissa_util_tests.cpp
+ fp/unpacked_tests.cpp
+ rand_int.h
+)
+
+if ("A32" IN_LIST DYNARMIC_FRONTENDS)
+ target_sources(dynarmic_tests PRIVATE
+ A32/test_arm_disassembler.cpp
+ A32/test_arm_instructions.cpp
+ A32/test_coprocessor.cpp
+ A32/test_svc.cpp
+ A32/test_thumb_instructions.cpp
+ A32/testenv.h
+ decoder_tests.cpp
+ )
+endif()
+
+if ("A64" IN_LIST DYNARMIC_FRONTENDS)
+ target_link_libraries(dynarmic_tests PRIVATE merry::oaknut)
+
+ target_sources(dynarmic_tests PRIVATE
+ A64/a64.cpp
+ A64/fibonacci.cpp
+ A64/fp_min_max.cpp
+ A64/misaligned_page_table.cpp
+ A64/test_invalidation.cpp
+ A64/testenv.h
+ )
+endif()
+
+if (DYNARMIC_TESTS_USE_UNICORN)
+ target_link_libraries(dynarmic_tests PRIVATE Unicorn::Unicorn)
+
+ target_sources(dynarmic_tests PRIVATE
+ fuzz_util.cpp
+ fuzz_util.h
+ )
+
+ if ("A32" IN_LIST DYNARMIC_FRONTENDS)
+ target_sources(dynarmic_tests PRIVATE
+ A32/fuzz_arm.cpp
+ A32/fuzz_thumb.cpp
+ unicorn_emu/a32_unicorn.cpp
+ unicorn_emu/a32_unicorn.h
+ )
+ endif()
+
+ if ("A64" IN_LIST DYNARMIC_FRONTENDS)
+ target_sources(dynarmic_tests PRIVATE
+ A64/fuzz_with_unicorn.cpp
+ A64/verify_unicorn.cpp
+ unicorn_emu/a64_unicorn.cpp
+ unicorn_emu/a64_unicorn.h
+ )
+ endif()
+endif()
+
+if ("x86_64" IN_LIST ARCHITECTURE)
+ target_link_libraries(dynarmic_tests PRIVATE xbyak::xbyak)
+
+ target_architecture_specific_sources(dynarmic_tests "x86_64"
+ x64_cpu_info.cpp
+ )
+
+ if (NOT MSVC AND NOT DYNARMIC_MULTIARCH_BUILD)
+ target_sources(dynarmic_tests PRIVATE
+ rsqrt_test.cpp
+ rsqrt_test_fn.s
+ )
+ endif()
+endif()
+
+include(CreateDirectoryGroups)
+
+if (("A32" IN_LIST DYNARMIC_FRONTENDS) AND ("A64" IN_LIST DYNARMIC_FRONTENDS))
+ add_executable(dynarmic_print_info
+ print_info.cpp
+ )
+
+ create_target_directory_groups(dynarmic_print_info)
+
+ target_link_libraries(dynarmic_print_info PRIVATE dynarmic Boost::boost fmt::fmt merry::mcl)
+ target_include_directories(dynarmic_print_info PRIVATE . ../src)
+ target_compile_options(dynarmic_print_info PRIVATE ${DYNARMIC_CXX_FLAGS})
+ target_compile_definitions(dynarmic_print_info PRIVATE FMT_USE_USER_DEFINED_LITERALS=1)
+endif()
+
+if (("A32" IN_LIST DYNARMIC_FRONTENDS) AND ("A64" IN_LIST DYNARMIC_FRONTENDS))
+ add_executable(dynarmic_test_generator
+ fuzz_util.cpp
+ fuzz_util.h
+ test_generator.cpp
+ )
+
+ create_target_directory_groups(dynarmic_test_generator)
+
+ target_link_libraries(dynarmic_test_generator PRIVATE dynarmic Boost::boost fmt::fmt merry::mcl)
+ target_include_directories(dynarmic_test_generator PRIVATE . ../src)
+ target_compile_options(dynarmic_test_generator PRIVATE ${DYNARMIC_CXX_FLAGS})
+ target_compile_definitions(dynarmic_test_generator PRIVATE FMT_USE_USER_DEFINED_LITERALS=1)
+endif()
+
+if (("A32" IN_LIST DYNARMIC_FRONTENDS) AND ("A64" IN_LIST DYNARMIC_FRONTENDS))
+ add_executable(dynarmic_test_reader
+ test_reader.cpp
+ )
+
+ create_target_directory_groups(dynarmic_test_reader)
+
+ target_link_libraries(dynarmic_test_reader PRIVATE dynarmic Boost::boost fmt::fmt merry::mcl)
+ target_include_directories(dynarmic_test_reader PRIVATE . ../src)
+ target_compile_options(dynarmic_test_reader PRIVATE ${DYNARMIC_CXX_FLAGS})
+ target_compile_definitions(dynarmic_test_reader PRIVATE FMT_USE_USER_DEFINED_LITERALS=1)
+endif()
+
+create_target_directory_groups(dynarmic_tests)
+
+target_link_libraries(dynarmic_tests PRIVATE dynarmic Boost::boost Catch2::Catch2WithMain fmt::fmt merry::mcl)
+target_include_directories(dynarmic_tests PRIVATE . ../src)
+target_compile_options(dynarmic_tests PRIVATE ${DYNARMIC_CXX_FLAGS})
+target_compile_definitions(dynarmic_tests PRIVATE FMT_USE_USER_DEFINED_LITERALS=1)
+
+add_test(dynarmic_tests dynarmic_tests --durations yes)