From 9d27784e08bc74be25004d0daf24691ba76afc8d Mon Sep 17 00:00:00 2001 From: GeorgH93 Date: Sun, 24 Jan 2021 21:21:21 +0100 Subject: [PATCH] Crossplatform build fixes --- CMakeLists.txt | 40 ++++++++++++++++++------- openVulkanoCpp/Host/GLFW/WindowGLFW.cpp | 2 +- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5a93028..991cb75 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16 FATAL_ERROR) set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) -if(NOT WIN32) +if(LINUX) find_package(ECM REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) endif() @@ -26,18 +26,38 @@ file(GLOB_RECURSE sources CONFIGURE_DEPENDS "openVulkanoCpp/*.cpp") target_sources(openVulkanoCpp PRIVATE ${sources}) target_include_directories(openVulkanoCpp PUBLIC openVulkanoCpp) +# Setup IOS +if(IOS) + set(CMAKE_OSX_DEPLOYMENT_TARGET "14.1") # The used ARKit features are only available starting with iOS 14 + + target_link_libraries(openVulkanoCpp + PUBLIC "-framework CoreFoundation" + PRIVATE "-framework Foundation" + PRIVATE "-framework CoreImage" + PRIVATE "-framework CoreVideo" + PRIVATE "-framework Metal" + PRIVATE "-framework MetalPerformanceShaders" + PUBLIC "-framework ARKit" + PRIVATE "-lstdc++" + PRIVATE c++ + PRIVATE c + ) +endif () #Setup Vulkan -find_package(Vulkan REQUIRED) -set(Vulkan_LIBRARIES Vulkan::Vulkan) -target_link_libraries(openVulkanoCpp PRIVATE ${Vulkan_LIBRARIES}) -target_include_directories(openVulkanoCpp PUBLIC ${Vulkan_INCLUDE_DIR}) +if (NOT IOS) + find_package(Vulkan REQUIRED) + set(Vulkan_LIBRARIES Vulkan::Vulkan) + target_link_libraries(openVulkanoCpp PRIVATE ${Vulkan_LIBRARIES}) + target_include_directories(openVulkanoCpp PUBLIC ${Vulkan_INCLUDE_DIR}) +else () +endif () if (ANDROID) add_definitions(-DVK_USE_PLATFORM_ANDROID_KHR) elseif (WIN32) add_definitions(-DVK_USE_PLATFORM_WIN32_KHR) -else() +elseif (LINUX) add_definitions(-DVK_USE_PLATFORM_XCB_KHR) find_package(XCB REQUIRED) link_libraries(${XCB_LIBRARIES}) @@ -47,12 +67,12 @@ set_property(TARGET openVulkanoCpp PROPERTY CXX_STANDARD 17) target_compile_options(openVulkanoCpp PRIVATE -Wall) if (NOT ANDROID AND NOT IOS) -target_link_libraries(openVulkanoCpp PRIVATE glfw) + Find_Package(OpenCV) + target_include_directories(openVulkanoCpp PRIVATE ${OpenCV_INCLUDE_DIRS}) + target_link_libraries(openVulkanoCpp PRIVATE glfw ${OpenCV_LIBS} sago::platform_folders) endif() -Find_Package(OpenCV) -target_include_directories(openVulkanoCpp PRIVATE ${OpenCV_INCLUDE_DIRS}) -target_link_libraries(openVulkanoCpp PRIVATE magic_enum yaml-cpp spdlog glm assimp pugixml ${OpenCV_LIBS} sago::platform_folders archive_static) +target_link_libraries(openVulkanoCpp PRIVATE magic_enum yaml-cpp spdlog glm assimp pugixml archive_static) add_compile_definitions(GLM_FORCE_INTRINSICS) diff --git a/openVulkanoCpp/Host/GLFW/WindowGLFW.cpp b/openVulkanoCpp/Host/GLFW/WindowGLFW.cpp index a0beb0a..7129874 100644 --- a/openVulkanoCpp/Host/GLFW/WindowGLFW.cpp +++ b/openVulkanoCpp/Host/GLFW/WindowGLFW.cpp @@ -247,7 +247,7 @@ namespace openVulkanoCpp::GLFW { VkSurfaceKHR rawSurface; const auto result = static_cast(glfwCreateWindowSurface(static_cast(instance), window, reinterpret_cast(pAllocator), &rawSurface)); - return std::move(rawSurface);//createResultValue(result, rawSurface, "vk::CommandBuffer::begin"); + return rawSurface;//createResultValue(result, rawSurface, "vk::CommandBuffer::begin"); } std::vector WindowGLFW::GetRequiredInstanceExtensions()