cmake: use more system libs (#775)

This commit is contained in:
Alexandre Bouvier 2022-10-18 10:04:15 +02:00 committed by GitHub
parent 092006fbbe
commit c5c941e928
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 107 additions and 32 deletions

View File

@ -18,7 +18,7 @@ jobs:
matrix:
config:
- {name: i686-pc-windows-msvc, os: windows-latest, shell: cmd, arch: x86, cmakeArgs: -G Ninja, buildType: Release}
- {name: apple-darwin, os: macos-latest, shell: sh, cmakeArgs: -G Xcode -DAPPLE_BREAKPAD=ON, destDir: osx, buildType: RelWithDebInfo}
- {name: apple-darwin, os: macos-latest, shell: sh, cmakeArgs: -G Xcode -DAPPLE_BREAKPAD=ON -DCMAKE_DISABLE_FIND_PACKAGE_Vulkan=ON, destDir: osx, buildType: RelWithDebInfo}
- {name: apple-ios, os: macos-latest, shell: sh, cmakeArgs: -DCMAKE_SYSTEM_NAME=iOS -G Xcode, destDir: ios, buildType: Release}
- {name: x86_64-pc-linux-gnu, os: ubuntu-latest, shell: sh, cmakeArgs: -G Ninja, buildType: Release}
- {name: x86_64-pc-windows-msvc, os: windows-latest, shell: cmd, arch: x64, cmakeArgs: -G Ninja, buildType: Release}

View File

@ -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")

View File

@ -19,7 +19,7 @@
along with Flycast. If not, see <https://www.gnu.org/licenses/>.
*/
#include "compiler.h"
#include "SPIRV/GlslangToSpv.h"
#include <glslang/SPIRV/GlslangToSpv.h>
#include "vulkan_context.h"
static const TBuiltInResource DefaultTBuiltInResource = {

View File

@ -20,7 +20,7 @@
*/
#pragma once
#include "vulkan.h"
#include "SPIRV/GlslangToSpv.h"
#include <glslang/SPIRV/GlslangToSpv.h>
#include <glm/glm.hpp>
#include <map>

View File

@ -0,0 +1,15 @@
find_path(LuaBridge_INCLUDE_DIR LuaBridge/LuaBridge.h)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LuaBridge
REQUIRED_VARS LuaBridge_INCLUDE_DIR
)
if (LuaBridge_FOUND AND NOT TARGET LuaBridge::LuaBridge)
add_library(LuaBridge::LuaBridge INTERFACE IMPORTED)
set_target_properties(LuaBridge::LuaBridge PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${LuaBridge_INCLUDE_DIR}"
)
endif()
mark_as_advanced(LuaBridge_INCLUDE_DIR)

View File

@ -0,0 +1,14 @@
find_package(PkgConfig QUIET)
if (PKG_CONFIG_FOUND)
pkg_search_module(CHDR QUIET IMPORTED_TARGET GLOBAL libchdr)
if (CHDR_FOUND)
add_library(chdr::chdr ALIAS PkgConfig::CHDR)
set(chdr_VERSION ${CHDR_VERSION})
endif()
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(chdr
REQUIRED_VARS CHDR_LINK_LIBRARIES
VERSION_VAR chdr_VERSION
)

View File

@ -0,0 +1,14 @@
find_package(PkgConfig QUIET)
if (PKG_CONFIG_FOUND)
pkg_search_module(XXHASH QUIET IMPORTED_TARGET GLOBAL libxxhash)
if (XXHASH_FOUND)
add_library(xxHash::xxhash ALIAS PkgConfig::XXHASH)
set(xxHash_VERSION ${XXHASH_VERSION})
endif()
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(xxHash
REQUIRED_VARS XXHASH_LINK_LIBRARIES
VERSION_VAR xxHash_VERSION
)