CMakeLists.txt 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. include(TargetArchitectureSpecificSources)
  2. add_executable(dynarmic_tests
  3. fp/FPToFixed.cpp
  4. fp/FPValue.cpp
  5. fp/mantissa_util_tests.cpp
  6. fp/unpacked_tests.cpp
  7. rand_int.h
  8. )
  9. if ("A32" IN_LIST DYNARMIC_FRONTENDS)
  10. target_sources(dynarmic_tests PRIVATE
  11. A32/test_arm_disassembler.cpp
  12. A32/test_arm_instructions.cpp
  13. A32/test_coprocessor.cpp
  14. A32/test_svc.cpp
  15. A32/test_thumb_instructions.cpp
  16. A32/testenv.h
  17. decoder_tests.cpp
  18. )
  19. endif()
  20. if ("A64" IN_LIST DYNARMIC_FRONTENDS)
  21. target_link_libraries(dynarmic_tests PRIVATE merry::oaknut)
  22. target_sources(dynarmic_tests PRIVATE
  23. A64/a64.cpp
  24. A64/fibonacci.cpp
  25. A64/fp_min_max.cpp
  26. A64/misaligned_page_table.cpp
  27. A64/test_invalidation.cpp
  28. A64/testenv.h
  29. )
  30. endif()
  31. if (DYNARMIC_TESTS_USE_UNICORN)
  32. target_link_libraries(dynarmic_tests PRIVATE Unicorn::Unicorn)
  33. target_sources(dynarmic_tests PRIVATE
  34. fuzz_util.cpp
  35. fuzz_util.h
  36. )
  37. if ("A32" IN_LIST DYNARMIC_FRONTENDS)
  38. target_sources(dynarmic_tests PRIVATE
  39. A32/fuzz_arm.cpp
  40. A32/fuzz_thumb.cpp
  41. unicorn_emu/a32_unicorn.cpp
  42. unicorn_emu/a32_unicorn.h
  43. )
  44. endif()
  45. if ("A64" IN_LIST DYNARMIC_FRONTENDS)
  46. target_sources(dynarmic_tests PRIVATE
  47. A64/fuzz_with_unicorn.cpp
  48. A64/verify_unicorn.cpp
  49. unicorn_emu/a64_unicorn.cpp
  50. unicorn_emu/a64_unicorn.h
  51. )
  52. endif()
  53. endif()
  54. if ("riscv" IN_LIST ARCHITECTURE)
  55. target_link_libraries(dynarmic_tests PRIVATE biscuit::biscuit)
  56. endif()
  57. if ("x86_64" IN_LIST ARCHITECTURE)
  58. target_link_libraries(dynarmic_tests PRIVATE xbyak::xbyak)
  59. target_architecture_specific_sources(dynarmic_tests "x86_64"
  60. x64_cpu_info.cpp
  61. )
  62. if (NOT MSVC AND NOT DYNARMIC_MULTIARCH_BUILD)
  63. target_sources(dynarmic_tests PRIVATE
  64. rsqrt_test.cpp
  65. rsqrt_test_fn.s
  66. )
  67. endif()
  68. endif()
  69. include(CreateDirectoryGroups)
  70. if (("A32" IN_LIST DYNARMIC_FRONTENDS) AND ("A64" IN_LIST DYNARMIC_FRONTENDS))
  71. add_executable(dynarmic_print_info
  72. print_info.cpp
  73. )
  74. create_target_directory_groups(dynarmic_print_info)
  75. target_link_libraries(dynarmic_print_info PRIVATE dynarmic Boost::boost fmt::fmt merry::mcl)
  76. target_include_directories(dynarmic_print_info PRIVATE . ../src)
  77. target_compile_options(dynarmic_print_info PRIVATE ${DYNARMIC_CXX_FLAGS})
  78. target_compile_definitions(dynarmic_print_info PRIVATE FMT_USE_USER_DEFINED_LITERALS=1)
  79. endif()
  80. if (("A32" IN_LIST DYNARMIC_FRONTENDS) AND ("A64" IN_LIST DYNARMIC_FRONTENDS))
  81. add_executable(dynarmic_test_generator
  82. fuzz_util.cpp
  83. fuzz_util.h
  84. test_generator.cpp
  85. )
  86. create_target_directory_groups(dynarmic_test_generator)
  87. target_link_libraries(dynarmic_test_generator PRIVATE dynarmic Boost::boost fmt::fmt merry::mcl)
  88. target_include_directories(dynarmic_test_generator PRIVATE . ../src)
  89. target_compile_options(dynarmic_test_generator PRIVATE ${DYNARMIC_CXX_FLAGS})
  90. target_compile_definitions(dynarmic_test_generator PRIVATE FMT_USE_USER_DEFINED_LITERALS=1)
  91. endif()
  92. if (("A32" IN_LIST DYNARMIC_FRONTENDS) AND ("A64" IN_LIST DYNARMIC_FRONTENDS))
  93. add_executable(dynarmic_test_reader
  94. test_reader.cpp
  95. )
  96. create_target_directory_groups(dynarmic_test_reader)
  97. target_link_libraries(dynarmic_test_reader PRIVATE dynarmic Boost::boost fmt::fmt merry::mcl)
  98. target_include_directories(dynarmic_test_reader PRIVATE . ../src)
  99. target_compile_options(dynarmic_test_reader PRIVATE ${DYNARMIC_CXX_FLAGS})
  100. target_compile_definitions(dynarmic_test_reader PRIVATE FMT_USE_USER_DEFINED_LITERALS=1)
  101. endif()
  102. create_target_directory_groups(dynarmic_tests)
  103. target_link_libraries(dynarmic_tests PRIVATE dynarmic Boost::boost Catch2::Catch2WithMain fmt::fmt merry::mcl)
  104. target_include_directories(dynarmic_tests PRIVATE . ../src)
  105. target_compile_options(dynarmic_tests PRIVATE ${DYNARMIC_CXX_FLAGS})
  106. target_compile_definitions(dynarmic_tests PRIVATE FMT_USE_USER_DEFINED_LITERALS=1)
  107. add_test(dynarmic_tests dynarmic_tests --durations yes)