if(WIN32)
  set(POP_OS_SOURCE os_win32.cpp)
else()
  set(POP_OS_SOURCE os_posix.cpp)
endif()
add_library(recomp_platform OBJECT ${POP_OS_SOURCE} env.cpp)
target_include_directories(recomp_platform PUBLIC ${POP_ROOT})
target_compile_options(recomp_platform PRIVATE ${POP_WARN_STRICT})
pop_optimize(recomp_platform 2)
if(APPLE)
  target_link_libraries(recomp_platform PUBLIC "-framework AudioToolbox" "-framework CoreAudio"
                        "-framework CoreFoundation")
endif()
if(WIN32)
  target_link_libraries(recomp_platform PUBLIC ws2_32)
endif()
if(ANDROID)
  # Bionic provides pthread functions in libc, without a separate libpthread.
  target_link_libraries(recomp_platform PUBLIC dl log)
elseif(NOT WIN32 AND NOT APPLE)
  target_link_libraries(recomp_platform PUBLIC dl pthread)
endif()

if(NOT IOS AND NOT ANDROID)
add_executable(platform_tests tests/platform_tests.cpp)
target_link_libraries(platform_tests PRIVATE recomp_platform)
target_compile_options(platform_tests PRIVATE ${POP_WARN_STRICT})
pop_optimize(platform_tests 1)
pop_test_binary(platform_tests)
add_test(NAME platform_tests COMMAND platform_tests WORKING_DIRECTORY ${POP_ROOT})
set_tests_properties(platform_tests PROPERTIES LABELS nogame)
# Explicit, silent real-device lifecycle probe. Never opens an audio device in CTest.
add_executable(audio_clock_probe tests/audio_clock_probe.cpp)
target_link_libraries(audio_clock_probe PRIVATE recomp_platform)
target_compile_options(audio_clock_probe PRIVATE ${POP_WARN_STRICT})
pop_optimize(audio_clock_probe 1)
pop_test_binary(audio_clock_probe)
endif()
