|
|
|
|
@ -282,24 +282,34 @@ if(USE_OPENMP)
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
option(BUILD_SHARED_LIBS "Build shared library" OFF)
|
|
|
|
|
set(XXHASH_BUILD_XXHSUM OFF CACHE BOOL "Build the xxhsum binary")
|
|
|
|
|
add_subdirectory(core/deps/xxHash/cmake_unofficial)
|
|
|
|
|
find_package(xxHash)
|
|
|
|
|
if(NOT XXHASH_FOUND)
|
|
|
|
|
option(BUILD_SHARED_LIBS "Build shared library" OFF)
|
|
|
|
|
set(XXHASH_BUILD_XXHSUM OFF CACHE BOOL "Build the xxhsum binary")
|
|
|
|
|
add_subdirectory(core/deps/xxHash/cmake_unofficial EXCLUDE_FROM_ALL)
|
|
|
|
|
endif()
|
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE xxHash::xxhash)
|
|
|
|
|
|
|
|
|
|
option(BUILD_SHARED_LIBS "Build shared library" OFF)
|
|
|
|
|
add_subdirectory(core/deps/glm)
|
|
|
|
|
find_package(glm)
|
|
|
|
|
if(NOT glm_FOUND)
|
|
|
|
|
option(BUILD_SHARED_LIBS "Build shared library" OFF)
|
|
|
|
|
add_subdirectory(core/deps/glm EXCLUDE_FROM_ALL)
|
|
|
|
|
endif()
|
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE glm::glm)
|
|
|
|
|
|
|
|
|
|
if(USE_VULKAN)
|
|
|
|
|
option(BUILD_EXTERNAL "Build external dependencies in /External" OFF)
|
|
|
|
|
option(SKIP_GLSLANG_INSTALL "Skip installation" ON)
|
|
|
|
|
option(ENABLE_SPVREMAPPER "Enables building of SPVRemapper" OFF)
|
|
|
|
|
option(ENABLE_GLSLANG_BINARIES "Builds glslangValidator and spirv-remap" OFF)
|
|
|
|
|
option(ENABLE_HLSL "Enables HLSL input support" OFF)
|
|
|
|
|
option(ENABLE_PCH "Enables Precompiled header" OFF)
|
|
|
|
|
add_subdirectory(core/deps/glslang EXCLUDE_FROM_ALL)
|
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE SPIRV)
|
|
|
|
|
find_package(Vulkan COMPONENTS glslang)
|
|
|
|
|
if(NOT Vulkan_glslang_FOUND)
|
|
|
|
|
option(BUILD_EXTERNAL "Build external dependencies in /External" OFF)
|
|
|
|
|
option(SKIP_GLSLANG_INSTALL "Skip installation" ON)
|
|
|
|
|
option(ENABLE_SPVREMAPPER "Enables building of SPVRemapper" OFF)
|
|
|
|
|
option(ENABLE_GLSLANG_BINARIES "Builds glslangValidator and spirv-remap" OFF)
|
|
|
|
|
option(ENABLE_HLSL "Enables HLSL input support" OFF)
|
|
|
|
|
option(ENABLE_PCH "Enables Precompiled header" OFF)
|
|
|
|
|
add_subdirectory(core/deps/glslang EXCLUDE_FROM_ALL)
|
|
|
|
|
add_library(Vulkan::glslang-spirv ALIAS SPIRV)
|
|
|
|
|
endif()
|
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE Vulkan::glslang-spirv)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
if(NOT LIBRETRO)
|
|
|
|
|
@ -349,16 +359,25 @@ if(NOT LIBRETRO)
|
|
|
|
|
|
|
|
|
|
find_package(Lua)
|
|
|
|
|
if(NOT APPLE AND LUA_FOUND)
|
|
|
|
|
find_package(LuaBridge)
|
|
|
|
|
if (NOT LuaBridge_FOUND)
|
|
|
|
|
add_subdirectory(core/deps/luabridge EXCLUDE_FROM_ALL)
|
|
|
|
|
add_library(LuaBridge::LuaBridge ALIAS LuaBridge)
|
|
|
|
|
endif()
|
|
|
|
|
target_compile_definitions(${PROJECT_NAME} PRIVATE USE_LUA)
|
|
|
|
|
target_include_directories(${PROJECT_NAME} PRIVATE ${LUA_INCLUDE_DIR} core/deps/luabridge/Source)
|
|
|
|
|
target_include_directories(${PROJECT_NAME} PRIVATE ${LUA_INCLUDE_DIR})
|
|
|
|
|
list(TRANSFORM LUA_LIBRARIES REPLACE "\.dll" "")
|
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE ${LUA_LIBRARIES})
|
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE ${LUA_LIBRARIES} LuaBridge::LuaBridge)
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
add_subdirectory(core/deps/libchdr EXCLUDE_FROM_ALL)
|
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE chdr-static)
|
|
|
|
|
target_include_directories(${PROJECT_NAME} PRIVATE core/deps/libchdr/include)
|
|
|
|
|
find_package(chdr)
|
|
|
|
|
if(NOT chdr_FOUND)
|
|
|
|
|
add_subdirectory(core/deps/libchdr EXCLUDE_FROM_ALL)
|
|
|
|
|
target_include_directories(${PROJECT_NAME} PRIVATE core/deps/libchdr/include)
|
|
|
|
|
add_library(chdr::chdr ALIAS chdr-static)
|
|
|
|
|
endif()
|
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE chdr::chdr)
|
|
|
|
|
|
|
|
|
|
if(NOT WITH_SYSTEM_ZLIB)
|
|
|
|
|
target_include_directories(${PROJECT_NAME} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/core/deps/libchdr/deps/zlib-1.2.11")
|
|
|
|
|
@ -1068,12 +1087,18 @@ if(NOT LIBRETRO)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
if(USE_VULKAN)
|
|
|
|
|
add_subdirectory(core/deps/Vulkan-Headers)
|
|
|
|
|
find_package(Vulkan)
|
|
|
|
|
if(NOT Vulkan_FOUND)
|
|
|
|
|
add_subdirectory(core/deps/Vulkan-Headers EXCLUDE_FROM_ALL)
|
|
|
|
|
endif()
|
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE Vulkan::Headers)
|
|
|
|
|
|
|
|
|
|
add_library(VulkanMemoryAllocator INTERFACE)
|
|
|
|
|
target_include_directories(VulkanMemoryAllocator INTERFACE core/deps/VulkanMemoryAllocator/include)
|
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE VulkanMemoryAllocator)
|
|
|
|
|
find_package(VulkanMemoryAllocator)
|
|
|
|
|
if(NOT VulkanMemoryAllocator_FOUND)
|
|
|
|
|
add_library(VulkanMemoryAllocator::VulkanMemoryAllocator INTERFACE IMPORTED)
|
|
|
|
|
target_include_directories(VulkanMemoryAllocator::VulkanMemoryAllocator INTERFACE core/deps/VulkanMemoryAllocator/include)
|
|
|
|
|
endif()
|
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE VulkanMemoryAllocator::VulkanMemoryAllocator)
|
|
|
|
|
|
|
|
|
|
if(NOT LIBRETRO)
|
|
|
|
|
if(ANDROID)
|
|
|
|
|
@ -1086,10 +1111,14 @@ if(USE_VULKAN)
|
|
|
|
|
set(VOLK_STATIC_DEFINES VK_USE_PLATFORM_MACOS_MVK)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
set(VOLK_PULL_IN_VULKAN OFF)
|
|
|
|
|
add_subdirectory(core/deps/volk)
|
|
|
|
|
target_include_directories(volk PRIVATE core/deps/Vulkan-Headers/include)
|
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE volk)
|
|
|
|
|
find_package(volk)
|
|
|
|
|
if(NOT volk_FOUND)
|
|
|
|
|
set(VOLK_PULL_IN_VULKAN OFF)
|
|
|
|
|
add_subdirectory(core/deps/volk EXCLUDE_FROM_ALL)
|
|
|
|
|
cmake_policy(SET CMP0079 NEW)
|
|
|
|
|
target_link_libraries(volk PRIVATE Vulkan::Headers)
|
|
|
|
|
endif()
|
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE volk::volk)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
target_compile_definitions(${PROJECT_NAME} PRIVATE USE_VULKAN HAVE_VULKAN)
|
|
|
|
|
@ -1291,7 +1320,10 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*|arm64.*)" OR CMAKE_OSX_
|
|
|
|
|
set(KNOWN_ARCHITECTURE_DETECTED ON)
|
|
|
|
|
endif()
|
|
|
|
|
if(CMAKE_SYSTEM_PROCESSOR MATCHES "i686.*|i386.*|x86.*|amd64.*|x86_64.*|AMD64.*" OR CMAKE_OSX_ARCHITECTURES MATCHES "x86_64")
|
|
|
|
|
add_subdirectory(core/deps/xbyak EXCLUDE_FROM_ALL)
|
|
|
|
|
find_package(xbyak)
|
|
|
|
|
if(NOT xbyak_FOUND)
|
|
|
|
|
add_subdirectory(core/deps/xbyak EXCLUDE_FROM_ALL)
|
|
|
|
|
endif()
|
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE xbyak::xbyak)
|
|
|
|
|
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
|
|
|
|
target_sources(${PROJECT_NAME} PRIVATE
|
|
|
|
|
@ -1561,12 +1593,12 @@ if(NINTENDO_SWITCH)
|
|
|
|
|
if(LIBRETRO)
|
|
|
|
|
add_custom_target(combined ALL
|
|
|
|
|
COMMAND ${CMAKE_AR} -x $<TARGET_FILE:xxHash::xxhash>
|
|
|
|
|
COMMAND ${CMAKE_AR} -x $<TARGET_FILE:chdr-static>
|
|
|
|
|
COMMAND ${CMAKE_AR} -x $<TARGET_FILE:chdr::chdr>
|
|
|
|
|
COMMAND ${CMAKE_AR} -x $<TARGET_FILE:zip>
|
|
|
|
|
COMMAND ${CMAKE_AR} -rs flycast_libretro_libnx.a *.o
|
|
|
|
|
COMMAND rm *.o
|
|
|
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}
|
|
|
|
|
DEPENDS xxHash::xxhash chdr-static zip ${PROJECT_NAME})
|
|
|
|
|
DEPENDS xxHash::xxhash chdr::chdr zip ${PROJECT_NAME})
|
|
|
|
|
else()
|
|
|
|
|
nx_generate_nacp(flycast.nacp NAME "Flycast" AUTHOR "flyinghead, M4xw" VERSION "${GIT_VERSION}")
|
|
|
|
|
nx_create_nro(flycast NACP flycast.nacp ICON "${CMAKE_SOURCE_DIR}/shell/switch/flycast.jpeg")
|
|
|
|
|
|