From 10f9b0989fdf3f2b5c63f8b56526792c87245277 Mon Sep 17 00:00:00 2001 From: Dynamitos Date: Tue, 17 Mar 2020 02:41:33 +0100 Subject: [PATCH] Fixing linux build --- CMakeLists.txt | 15 +++++- build | 8 ++-- cmake/SuperBuild.cmake | 47 +++++++++++-------- .../Graphics/Vulkan/VulkanGraphicsEnums.cpp | 10 +++- .../Graphics/Vulkan/VulkanInitializer.cpp | 2 +- .../Graphics/Vulkan/VulkanInitializer.h | 4 +- src/Engine/MinimalEngine.h | 1 + 7 files changed, 57 insertions(+), 30 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f13cc93..4166496 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,6 +24,11 @@ ENDIF() set(Boost_USE_STATIC_LIBS ON) set(Boost_LIB_PREFIX lib) set(Boost_USE_RELEASE_LIBS OFF) +set(ENKITS_BUILD_EXAMPLES OFF CACHE BOOL "Build basic example applications" ) +set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "GLFW lib only" ) +set(GLFW_BUILD_TESTS OFF CACHE BOOL "GLFW lib only" ) +set(GLFW_BUILD_DOCS OFF CACHE BOOL "GLFW lib only" ) +set(GLFW_BUILD_INSTALL OFF CACHE BOOL "GLFW lib only" ) if (USE_SUPERBUILD) project (SUPERBUILD NONE) @@ -35,10 +40,11 @@ else() project (Seele) endif() +add_subdirectory(${GLFW_ROOT}) find_package(Vulkan REQUIRED) find_package(Boost REQUIRED COMPONENTS serialization) -include_directories(${GLFW_INCLUDE_DIRS}) +include_directories(${GLFW_ROOT}/include) include_directories(${GLM_INCLUDE_DIRS}) include_directories(${Vulkan_INCLUDE_DIR}) include_directories(${Boost_INCLUDE_DIRS}) @@ -48,13 +54,18 @@ add_definitions(${GLM_DEFINITIONS}) add_definitions(${Vulkan_DEFINITIONS}) add_definitions(${Boost_DEFINITIONS}) add_compile_definitions(GLFW_WINDOWS) +if(WIN32) + add_compile_definitions(USE_EXTENSIONS) +endif() add_executable(SeeleEngine "") add_subdirectory(src/) target_link_libraries(SeeleEngine ${Boost_LIBRARIES}) target_link_libraries(SeeleEngine ${Vulkan_LIBRARY}) -target_link_libraries(SeeleEngine ${GLFW_LIBRARY}) +target_link_libraries(SeeleEngine glfw ${GLFW_LIBRARIES}) target_link_libraries(SeeleEngine ${SLANG_LIBRARY}) +message(Libs: ${GLFW_LIBRARIES}) + add_subdirectory(test/) add_custom_command(TARGET SeeleEngine POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${DEPENDENT_BINARIES} $) diff --git a/build b/build index 2e970da..85d392a 100755 --- a/build +++ b/build @@ -1,6 +1,6 @@ #!/bin/sh -rm -rf bin/ -mkdir bin/ -cd bin/ -cmake .. -DCMAKE_BUILD_TYPE=Debug +rm -rf bin/Debug +mkdir bin/Debug +cd bin/Debug +cmake ../.. -DCMAKE_BUILD_TYPE=Debug make diff --git a/cmake/SuperBuild.cmake b/cmake/SuperBuild.cmake index 845667b..c6ba5f7 100644 --- a/cmake/SuperBuild.cmake +++ b/cmake/SuperBuild.cmake @@ -38,21 +38,21 @@ list(APPEND EXTRA_CMAKE_ARGS #--------------GLFW------------------------------ -list(APPEND DEPENDENCIES glfw) -set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE) -set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE) -set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) - -ExternalProject_Add(glfw - SOURCE_DIR ${GLFW_ROOT} - BINARY_DIR ${CMAKE_BINARY_DIR}/lib - INSTALL_COMMAND "") - -list(APPEND EXTRA_CMAKE_ARGS - -DGLFW_INCLUDE_DIRS=${GLFW_ROOT}/include - -DGLFW_LIBRARY=${CMAKE_BINARY_DIR}/lib/src/glfw3.lib - ) - +#list(APPEND DEPENDENCIES glfw) +#set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE) +#set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE) +#set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) +# +#ExternalProject_Add(glfw +# SOURCE_DIR ${GLFW_ROOT} +# BINARY_DIR ${CMAKE_BINARY_DIR}/lib +# INSTALL_COMMAND "") +# +#list(APPEND EXTRA_CMAKE_ARGS +# -DGLFW_INCLUDE_DIRS=${GLFW_ROOT}/include +# -DGLFW_LIBRARY=${CMAKE_BINARY_DIR}/lib/src/glfw3.lib +# ) +# #--------------SLang------------------------------ list(APPEND DEPENDENCIES slang) ExternalProject_Add(slang @@ -64,13 +64,20 @@ ExternalProject_Add(slang # COMMAND msbuild -m /p:WindowsTargetPlatformVersion=10.0 ${SLANG_ROOT}/source/slang/slang.vcxproj INSTALL_COMMAND "") +if(WIN32) + string(TOLOWER bin/windows-x64/${CMAKE_BUILD_TYPE}/slang.dll SLANG_BINARY) + string(TOLOWER bin/windows-x64/${CMAKE_BUILD_TYPE}/slang.lib SLANG_LIB_PATH) + set(SLANG_LIB_PATH ${SLANG_ROOT}/${SLANG_LIB_PATH}) +elseif(UNIX) + string(TOLOWER bin/linux-x86/${CMAKE_BUILD_TYPE}/libslang.so SLANG_BINARY) + set(SLANG_LIB_PATH) +endif() + list(APPEND EXTRA_CMAKE_ARGS -DSLANG_INCLUDE_DIRS=${EXTERNAL_ROOT} - -DSLANG_LIBRARY=${SLANG_ROOT}/bin/windows-x64/${CMAKE_BUILD_TYPE}/slang.lib) + -DSLANG_LIBRARY=${SLANG_LIB_PATH}) -set(SLANG_DLL) -string(TOLOWER bin/windows-x64/${CMAKE_BUILD_TYPE}/slang.dll SLANG_DLL) -list(APPEND DEPENDENT_BINARIES ${SLANG_ROOT}/${SLANG_DLL}) +list(APPEND DEPENDENT_BINARIES ${SLANG_ROOT}/${SLANG_BINARY}) list(APPEND EXTRA_CMAKE_ARGS -DDEPENDENT_BINARIES=${DEPENDENT_BINARIES}) @@ -80,4 +87,4 @@ ExternalProject_Add(SeeleEngine SOURCE_DIR ${PROJECT_SOURCE_DIR} CMAKE_ARGS -DUSE_SUPERBUILD=OFF ${EXTRA_CMAKE_ARGS} INSTALL_COMMAND "" - BINARY_DIR ${CMAKE_BINARY_DIR}) \ No newline at end of file + BINARY_DIR ${CMAKE_BINARY_DIR}) diff --git a/src/Engine/Graphics/Vulkan/VulkanGraphicsEnums.cpp b/src/Engine/Graphics/Vulkan/VulkanGraphicsEnums.cpp index 63a2c23..c1b702e 100644 --- a/src/Engine/Graphics/Vulkan/VulkanGraphicsEnums.cpp +++ b/src/Engine/Graphics/Vulkan/VulkanGraphicsEnums.cpp @@ -28,10 +28,12 @@ VkDescriptorType Seele::cast(const SeDescriptorType& descriptorType) return VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC; case SE_DESCRIPTOR_TYPE_INPUT_ATTACHMENT: return VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT; +#ifdef USE_EXTENSIONS case SE_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT: return VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT; case SE_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV: return VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV; +#endif default: break; } @@ -65,10 +67,12 @@ SeDescriptorType Seele::cast(const VkDescriptorType& descriptorType) return SE_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC; case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT: return SE_DESCRIPTOR_TYPE_INPUT_ATTACHMENT; +#ifdef USE_EXTENSIONS case VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT: return SE_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT; case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV: return SE_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV; +#endif default: break; } @@ -96,6 +100,7 @@ VkShaderStageFlagBits Seele::cast(const SeShaderStageFlagBits& stage) return VK_SHADER_STAGE_ALL_GRAPHICS; case SE_SHADER_STAGE_ALL: return VK_SHADER_STAGE_ALL; +#ifdef USE_EXTENSIONS case SE_SHADER_STAGE_RAYGEN_BIT_NV: return VK_SHADER_STAGE_RAYGEN_BIT_NV; case SE_SHADER_STAGE_ANY_HIT_BIT_NV: @@ -112,6 +117,7 @@ VkShaderStageFlagBits Seele::cast(const SeShaderStageFlagBits& stage) return VK_SHADER_STAGE_TASK_BIT_NV; case SE_SHADER_STAGE_MESH_BIT_NV: return VK_SHADER_STAGE_MESH_BIT_NV; +#endif default: break; } @@ -138,6 +144,7 @@ SeShaderStageFlagBits Seele::cast(const VkShaderStageFlagBits& stage) return SE_SHADER_STAGE_ALL_GRAPHICS; case VK_SHADER_STAGE_ALL: return SE_SHADER_STAGE_ALL; +#ifdef USE_EXTENSIONS case VK_SHADER_STAGE_RAYGEN_BIT_NV: return SE_SHADER_STAGE_RAYGEN_BIT_NV; case VK_SHADER_STAGE_ANY_HIT_BIT_NV: @@ -154,8 +161,9 @@ SeShaderStageFlagBits Seele::cast(const VkShaderStageFlagBits& stage) return SE_SHADER_STAGE_TASK_BIT_NV; case VK_SHADER_STAGE_MESH_BIT_NV: return SE_SHADER_STAGE_MESH_BIT_NV; +#endif default: break; } return SE_SHADER_STAGE_ALL; -} \ No newline at end of file +} diff --git a/src/Engine/Graphics/Vulkan/VulkanInitializer.cpp b/src/Engine/Graphics/Vulkan/VulkanInitializer.cpp index b13a673..3c15750 100644 --- a/src/Engine/Graphics/Vulkan/VulkanInitializer.cpp +++ b/src/Engine/Graphics/Vulkan/VulkanInitializer.cpp @@ -741,7 +741,7 @@ VkPipelineShaderStageCreateInfo Seele::init::PipelineShaderStageCreateInfo(VkSha } -VkBool32 __stdcall Seele::debugCallback(VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objType, uint64_t obj, size_t location, int32_t code, const char* layerPrefix, const char* msg, void* userDataManager) { +VkBool32 Seele::debugCallback(VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objType, uint64_t obj, size_t location, int32_t code, const char* layerPrefix, const char* msg, void* userDataManager) { std::cerr << layerPrefix << ": " << msg << std::endl; return VK_FALSE; } diff --git a/src/Engine/Graphics/Vulkan/VulkanInitializer.h b/src/Engine/Graphics/Vulkan/VulkanInitializer.h index 5f54cbe..89d12b8 100644 --- a/src/Engine/Graphics/Vulkan/VulkanInitializer.h +++ b/src/Engine/Graphics/Vulkan/VulkanInitializer.h @@ -3,7 +3,7 @@ namespace Seele { - VkBool32 __stdcall debugCallback(VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objType, uint64_t obj, size_t location, int32_t code, const char* layerPrefix, const char* msg, void* userData); + VkBool32 debugCallback(VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objType, uint64_t obj, size_t location, int32_t code, const char* layerPrefix, const char* msg, void* userData); VkResult CreateDebugReportCallbackEXT(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback); void DestroyDebugReportCallbackEXT(VkInstance instance, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT pCallback); @@ -298,4 +298,4 @@ namespace Seele VkShaderModule module, const char* entryName); } -} \ No newline at end of file +} diff --git a/src/Engine/MinimalEngine.h b/src/Engine/MinimalEngine.h index e2c8a11..7653103 100644 --- a/src/Engine/MinimalEngine.h +++ b/src/Engine/MinimalEngine.h @@ -3,6 +3,7 @@ #include #include #include +#include #include #include "Math/Math.h"