cmake_minimum_required(VERSION 3.20)
project(ra3rt CXX)
set(CMAKE_CXX_STANDARD 17)
add_compile_definitions(RA3_TRACE)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Generated code (from tools/lift_pe --emit-dir) lives outside the repo.
set(LIFTED_DIR "" CACHE PATH "directory with lifted_*.cpp, lifted_table.cpp, lifted_decl.h")
set(RT_SRC guest.cpp imports.cpp pe_loader.cpp heap.cpp rt.cpp fmt.cpp crt.cpp kernel32.cpp misc.cpp input.cpp ws2.cpp dsound.cpp d3d9.cpp d3d9_dev.cpp d3d9_fx.cpp d3d9_gl.cpp launch.cpp)
add_library(ra3rt STATIC ${RT_SRC})
target_link_libraries(ra3rt pthread)
add_executable(loadtest loadtest.cpp)
target_link_libraries(loadtest ra3rt)
if(LIFTED_DIR)
  file(GLOB LIFTED_SRC ${LIFTED_DIR}/lifted_*.cpp)
  add_executable(ra3run runner.cpp ${LIFTED_SRC})
  target_include_directories(ra3run PRIVATE ${LIFTED_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
  target_compile_options(ra3run PRIVATE -O1 -fno-strict-aliasing -w)
  target_link_libraries(ra3run -Wl,--whole-archive ra3rt -Wl,--no-whole-archive)
endif()
