cmake_minimum_required(VERSION 3.25)
project(guest_fma_check LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

# No game data or SDK needed. Use the production CMake function and CPU guard.
add_library(reference OBJECT math.cpp)
target_compile_definitions(reference PRIVATE REFERENCE_MATH=1)
target_compile_options(reference PRIVATE -msse4.1 -mno-avx -mno-fma -ffp-contract=off)
add_library(forza_recomp OBJECT math.cpp)
target_compile_options(forza_recomp PRIVATE -msse4.1 -mno-avx -mno-fma -ffp-contract=off)
add_executable(forza check.cpp ../../src/platform/guest_cpu.cpp ../../src/platform/cpu_target.cpp)
target_compile_options(forza PRIVATE -msse4.1 -mno-avx -mno-fma -ffp-contract=off)
target_link_libraries(forza PRIVATE reference forza_recomp)
include(../../cmake/GuestFma.cmake)
forza_configure_guest_fma(forza)
include(../../cmake/CpuTarget.cmake)
forza_configure_cpu_target(forza)
enable_testing()
add_test(NAME guest_math COMMAND forza)
