N64ModernRuntime/ultramodern/CMakeLists.txt

84 lines
2.9 KiB
CMake

cmake_minimum_required(VERSION 3.20)
project(ultramodern)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_CXX_EXTENSIONS OFF)
# Warnings
# TODO: uncoment this when we fix the warnings
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
add_library(ultramodern STATIC
"${CMAKE_CURRENT_SOURCE_DIR}/src/audio.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/src/events.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/src/mesgqueue.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/src/misc_ultra.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/src/rt64_layer.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/src/scheduling.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/src/task_win32.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/src/threadqueue.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/src/threads.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/src/timer.cpp"
)
target_include_directories(ultramodern PUBLIC
"${CMAKE_CURRENT_SOURCE_DIR}/include/"
"${PROJECT_SOURCE_DIR}/../thirdparty/concurrentqueue"
"${PROJECT_SOURCE_DIR}/../thirdparty/sse2neon"
)
target_include_directories(ultramodern PRIVATE
"${CMAKE_CURRENT_SOURCE_DIR}/include/ultramodern"
)
# TODO: remove when rt64 is no longer a hard dependency
target_include_directories(ultramodern PRIVATE
"${PROJECT_SOURCE_DIR}/../rt64/src"
"${PROJECT_SOURCE_DIR}/../rt64/src/contrib"
"${PROJECT_SOURCE_DIR}/../rt64/src/contrib/hlslpp/include"
"${PROJECT_SOURCE_DIR}/../rt64/src/contrib/dxc/inc"
"${PROJECT_SOURCE_DIR}/../rt64/src/rhi"
"${PROJECT_SOURCE_DIR}/../rt64/src/render"
"${PROJECT_SOURCE_DIR}/../rt64/src/contrib/nativefiledialog-extended/src/include"
)
# TODO: remove when librecomp is untangled from ultramodern
target_include_directories(ultramodern PRIVATE
"${CMAKE_SOURCE_DIR}/librecomp/include"
)
if (WIN32)
include(FetchContent)
# Fetch SDL2 on windows
FetchContent_Declare(
sdl2
URL https://github.com/libsdl-org/SDL/releases/download/release-2.28.5/SDL2-devel-2.28.5-VC.zip
URL_HASH MD5=d8173db078e54040c666f411c5a6afff
)
FetchContent_MakeAvailable(sdl2)
target_include_directories(ultramodern PRIVATE
${sdl2_SOURCE_DIR}/include
)
target_link_directories(ultramodern PRIVATE
${sdl2_SOURCE_DIR}/lib/x64
)
elseif (APPLE)
find_package(SDL2 REQUIRED)
target_include_directories(ultramodern PRIVATE ${SDL2_INCLUDE_DIRS})
else()
find_package(SDL2 REQUIRED)
find_package(X11 REQUIRED)
message(STATUS "SDL2_FOUND = ${SDL2_FOUND}")
message(STATUS "SDL2_INCLUDE_DIRS = ${SDL2_INCLUDE_DIRS}")
target_include_directories(ultramodern PRIVATE ${SDL2_INCLUDE_DIRS})
message(STATUS "X11_FOUND = ${X11_FOUND}")
message(STATUS "X11_INCLUDE_DIR = ${X11_INCLUDE_DIR}")
message(STATUS "X11_LIBRARIES = ${X11_LIBRARIES}")
target_include_directories(ultramodern PRIVATE ${X11_INCLUDE_DIR})
target_link_libraries(ultramodern PRIVATE ${X11_LIBRARIES})
endif()