cmake_minimum_required(VERSION 3.21) project(sand LANGUAGES CXX HIP) find_package(PkgConfig REQUIRED) pkg_check_modules(LUAJIT REQUIRED luajit) add_library(sand STATIC include/sand/sand.h include/sand/type.h include/sand/type_builder.h include/sand/type_range.h include/sand/rule.h include/sand/rule_builder.h src/type.cpp src/type_builder.cpp src/type_range.cpp src/rule.cpp src/rule_builder.cpp src/sand.hip ) target_include_directories(sand PUBLIC include) set_target_properties(sand PROPERTIES CXX_STANDARD 20 CXX_STANDARD_REQUIRED ON POSITION_INDEPENDENT_CODE ON ) if(EXISTS third/tracy/CMakeLists.txt) add_subdirectory(third/tracy) if(TRACY_ENABLE) target_link_libraries(sand PUBLIC Tracy::TracyClient) else() target_compile_definitions(sand PUBLIC FrameMark= ZoneScoped=) endif() else() target_compile_definitions(sand PUBLIC FrameMark= ZoneScoped=) endif() add_library(lsand SHARED src/lualib.cpp ) target_include_directories(lsand PRIVATE ${LUAJIT_INCLUDE_DIRS}) target_link_libraries(lsand PRIVATE sand ${LUAJIT_LIBRARIES}) set_target_properties(lsand PROPERTIES CXX_STANDARD 20 CXX_STANDARD_REQUIRED ON ) find_package(SDL3 CONFIG REQUIRED) add_executable(sandtest src/main.cpp ) target_link_libraries(sandtest PRIVATE sand SDL3) set_target_properties(sandtest PROPERTIES CXX_STANDARD 20 CXX_STANDARD_REQUIRED ON )