mirror of
https://github.com/N64Recomp/N64ModernRuntime.git
synced 2025-10-30 08:02:29 +00:00
84 lines
2.9 KiB
CMake
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()
|