diff --git a/.github/workflows/build-latest-spec.yml b/.github/workflows/build-latest-spec.yml index 5ee231bc8..0756ae4ce 100644 --- a/.github/workflows/build-latest-spec.yml +++ b/.github/workflows/build-latest-spec.yml @@ -37,7 +37,7 @@ jobs: -D VULKAN_HPP_TESTS_CTEST=ON \ -D VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=ON \ -D VULKAN_HPP_BUILD_WITH_LOCAL_VULKAN_HPP=ON \ - -D VULKAN_HPP_PRECOMPILE=OFF \ + -D VULKAN_HPP_PRECOMPILE=ON \ -D CMAKE_C_COMPILER=gcc \ -D CMAKE_CXX_COMPILER=g++ \ -D CMAKE_CXX_STANDARD=23 \ diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 05309a8f0..5f488e5b5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -106,7 +106,7 @@ jobs: -D VULKAN_HPP_TESTS_CTEST=ON \ -D VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=ON \ -D VULKAN_HPP_BUILD_WITH_LOCAL_VULKAN_HPP=ON \ - -D VULKAN_HPP_PRECOMPILE=OFF \ + -D VULKAN_HPP_PRECOMPILE=ON \ -D CMAKE_CXX_STANDARD=${{matrix.env.cxx_max}} \ -D CMAKE_BUILD_TYPE=$BUILD_TYPE cmake --build build --parallel --config $BUILD_TYPE --clean-first @@ -146,7 +146,7 @@ jobs: -D VULKAN_HPP_TESTS_CTEST=ON \ -D VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=ON \ -D VULKAN_HPP_BUILD_WITH_LOCAL_VULKAN_HPP=ON \ - -D VULKAN_HPP_PRECOMPILE=OFF \ + -D VULKAN_HPP_PRECOMPILE=ON \ -D CMAKE_CXX_STANDARD=$CXX_STANDARD \ -D CMAKE_BUILD_TYPE=$BUILD_TYPE cmake --build build --parallel --config $BUILD_TYPE --clean-first diff --git a/CMakeLists.txt b/CMakeLists.txt index 8ab0081cb..ae370d847 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,7 +34,7 @@ if( NOT DEFINED CMAKE_CXX_STANDARD AND PROJECT_IS_TOP_LEVEL ) endif() # all the options for this project -option( VULKAN_HPP_PRECOMPILE "Precompile vulkan.hpp and vulkan_raii.hpp for sample builds" OFF ) +option( VULKAN_HPP_PRECOMPILE "Precompile vulkan.hpp and vulkan_raii.hpp for sample builds" ON ) option( VULKAN_HPP_RUN_GENERATOR "Run the HPP generator" OFF ) option( VULKAN_HPP_GENERATOR_BUILD "Build the HPP generator" ${PROJECT_IS_TOP_LEVEL} ) option( VULKAN_HPP_SAMPLES_BUILD "Build samples" OFF ) @@ -264,7 +264,7 @@ function( vulkan_hpp__setup_vulkan_targets ) target_include_directories( VulkanHpp INTERFACE "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/Vulkan-Headers/include" ) else() find_package( Vulkan REQUIRED ) - target_include_directories( ${TARGET_NAME} PUBLIC "${Vulkan_INCLUDE_DIRS}" ) + target_include_directories( VulkanHpp INTERFACE "${Vulkan_INCLUDE_DIRS}" ) endif() if( VULKAN_HPP_RUN_GENERATOR ) add_dependencies( VulkanHpp build_vulkan_hpp build_video_hpp ) @@ -401,8 +401,16 @@ function( vulkan_hpp__setup_library ) endif() vulkan_hpp__setup_platform( NAME ${TARGET_NAME} ) vulkan_hpp__setup_warning_level( NAME ${TARGET_NAME} ) - target_link_libraries( ${TARGET_NAME} PUBLIC Vulkan::Hpp ) set_target_properties( ${TARGET_NAME} PROPERTIES CXX_STANDARD_REQUIRED ON ) + if( VULKAN_HPP_BUILD_WITH_LOCAL_VULKAN_HPP ) + # Vulkan C headers + target_include_directories( ${TARGET_NAME} PUBLIC "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/Vulkan-Headers/include" ) + # Vulkan C++ headers + target_include_directories( ${TARGET_NAME} PUBLIC "${CMAKE_CURRENT_FUNCTION_LIST_DIR}" ) + else() + find_package( Vulkan REQUIRED ) + target_include_directories( ${TARGET_NAME} PUBLIC "${Vulkan_INCLUDE_DIRS}" ) + endif() endif() set_target_properties( ${TARGET_NAME} PROPERTIES FOLDER ${TARGET_FOLDER} ) endfunction() @@ -413,18 +421,10 @@ function( vulkan_hpp__setup_sample ) set( multiValueArgs HEADERS LIBS PCH SOURCES ) cmake_parse_arguments( TARGET "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) - if( NOT VULKAN_HPP_BUILD_WITH_LOCAL_VULKAN_HPP ) - find_package( Vulkan REQUIRED ) - endif() - vulkan_hpp__setup_project( NAME ${TARGET_NAME} ) - add_executable( ${TARGET_NAME} ${TARGET_HEADERS} ${TARGET_SOURCES} ) - vulkan_hpp__setup_platform( NAME ${TARGET_NAME} ) vulkan_hpp__setup_warning_level( NAME ${TARGET_NAME} ) - target_link_libraries( ${TARGET_NAME} PUBLIC Vulkan::Hpp ) - set_target_properties( ${TARGET_NAME} PROPERTIES CXX_STANDARD_REQUIRED ON ) if( TARGET_FOLDER ) @@ -459,11 +459,9 @@ function( vulkan_hpp__setup_sample_static ) vulkan_hpp__setup_sample( NAME ${TARGET_NAME} FOLDER Samples - PCH + PCH_REUSE utils_static SOURCES ${TARGET_NAME}.cpp - LIBS ${Vulkan_LIBRARIES} ) - - target_compile_definitions( ${TARGET_NAME} PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=0 ) + LIBS utils_static ${Vulkan_LIBRARIES} ) endfunction() function( vulkan_hpp__setup_sample_dynamic ) @@ -482,10 +480,10 @@ function( vulkan_hpp__setup_sample_dynamic ) vulkan_hpp__setup_sample( NAME ${TARGET_NAME} FOLDER Samples - PCH_REUSE utils + PCH_REUSE utils_dynamic HEADERS ${TARGET_HEADERS} SOURCES ${TARGET_SOURCES} - LIBS utils ) + LIBS utils_dynamic ) endfunction() function( vulkan_hpp__setup_sample_raii ) @@ -504,10 +502,10 @@ function( vulkan_hpp__setup_sample_raii ) vulkan_hpp__setup_sample( NAME RAII_${TARGET_NAME} FOLDER RAII_Samples - PCH_REUSE utils + PCH_REUSE utils_dynamic HEADERS ${TARGET_HEADERS} SOURCES ${TARGET_SOURCES} - LIBS utils ) + LIBS utils_dynamic ) endfunction() # set up CTest or add_subdirectory test diff --git a/RAII_Samples/utils/shaders.hpp b/RAII_Samples/utils/shaders.hpp index 38ba8aef7..2de61499d 100644 --- a/RAII_Samples/utils/shaders.hpp +++ b/RAII_Samples/utils/shaders.hpp @@ -1,3 +1,5 @@ +#pragma once + // Copyright(c) 2019, NVIDIA CORPORATION. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/samples/utils/CMakeLists.txt b/samples/utils/CMakeLists.txt index e43eb1d26..c5e8e9cea 100644 --- a/samples/utils/CMakeLists.txt +++ b/samples/utils/CMakeLists.txt @@ -13,20 +13,35 @@ # limitations under the License. vulkan_hpp__setup_library( - NAME utils + NAME utils_static + HEADERS math.hpp shaders.hpp utils.hpp + SOURCES math.cpp shaders.cpp utils.cpp + FOLDER "Samples" ) + +vulkan_hpp__setup_library( + NAME utils_dynamic HEADERS math.hpp shaders.hpp utils.hpp SOURCES math.cpp shaders.cpp utils.cpp FOLDER "Samples" ) if( VULKAN_HPP_RUN_GENERATOR ) - add_dependencies( utils build_vulkan_hpp ) + add_dependencies( utils_static build_vulkan_hpp ) + add_dependencies( utils_dynamic build_vulkan_hpp ) endif() -target_link_libraries( utils PUBLIC glm::glm ) -target_link_libraries( utils PUBLIC glfw ) -target_link_libraries( utils PUBLIC glslang::glslang ) -target_link_libraries( utils PUBLIC glslang::glslang-default-resource-limits ) -target_link_libraries( utils PUBLIC glslang::SPIRV ) -target_compile_definitions( utils PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1 ) +target_link_libraries( utils_static PUBLIC glfw ) +target_link_libraries( utils_static PUBLIC glm::glm ) +target_link_libraries( utils_static PUBLIC glslang::glslang ) +target_link_libraries( utils_static PUBLIC glslang::glslang-default-resource-limits ) +target_link_libraries( utils_static PUBLIC glslang::SPIRV ) +target_compile_definitions( utils_static PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=0 ) +target_precompile_headers( utils_static PRIVATE "pch.hpp" ) + +target_link_libraries( utils_dynamic PUBLIC glfw ) +target_link_libraries( utils_dynamic PUBLIC glm::glm ) +target_link_libraries( utils_dynamic PUBLIC glslang::glslang ) +target_link_libraries( utils_dynamic PUBLIC glslang::glslang-default-resource-limits ) +target_link_libraries( utils_dynamic PUBLIC glslang::SPIRV ) +target_compile_definitions( utils_dynamic PUBLIC VULKAN_HPP_DISPATCH_LOADER_DYNAMIC=1 ) +target_precompile_headers( utils_dynamic PRIVATE "pch.hpp" ) -target_precompile_headers( utils PRIVATE ) diff --git a/samples/utils/geometries.hpp b/samples/utils/geometries.hpp index dcafd3d62..e05247680 100644 --- a/samples/utils/geometries.hpp +++ b/samples/utils/geometries.hpp @@ -1,3 +1,5 @@ +#pragma once + // Copyright(c) 2019, NVIDIA CORPORATION. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/samples/utils/math.hpp b/samples/utils/math.hpp index 37287aa97..16748b70e 100644 --- a/samples/utils/math.hpp +++ b/samples/utils/math.hpp @@ -1,3 +1,5 @@ +#pragma once + // Copyright(c) 2019, NVIDIA CORPORATION. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/samples/utils/pch.hpp b/samples/utils/pch.hpp new file mode 100644 index 000000000..fd34d56a8 --- /dev/null +++ b/samples/utils/pch.hpp @@ -0,0 +1,26 @@ +#include +#include + +#include +#include +#include +#define GLM_ENABLE_EXPERIMENTAL +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "math.hpp" +#include "utils.hpp" +#include "shaders.hpp" +#include "geometries.hpp" \ No newline at end of file diff --git a/samples/utils/shaders.hpp b/samples/utils/shaders.hpp index 59894358a..a872e9a18 100644 --- a/samples/utils/shaders.hpp +++ b/samples/utils/shaders.hpp @@ -1,3 +1,5 @@ +#pragma once + // Copyright(c) 2019, NVIDIA CORPORATION. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/tests/DispatchLoaderDynamicSharedLibraryClient/CMakeLists.txt b/tests/DispatchLoaderDynamicSharedLibraryClient/CMakeLists.txt index 04b796298..b616a5052 100644 --- a/tests/DispatchLoaderDynamicSharedLibraryClient/CMakeLists.txt +++ b/tests/DispatchLoaderDynamicSharedLibraryClient/CMakeLists.txt @@ -23,7 +23,7 @@ vulkan_hpp__setup_library( NAME DispatchLoaderDynamicSharedLibrary SOURCES DispatchLoaderDynamicSharedLibrary.cpp FOLDER "Tests" ) -target_compile_definitions( DispatchLoaderDynamicSharedLibrary PUBLIC VULKAN_HPP_STORAGE_SHARED ) +target_compile_definitions( DispatchLoaderDynamicSharedLibrary PUBLIC VULKAN_HPP_STORAGE_SHARED VULKAN_HPP_DISPATCH_LOADER_DYNAMIC ) target_compile_definitions( DispatchLoaderDynamicSharedLibrary PRIVATE VULKAN_HPP_STORAGE_SHARED_EXPORT ) vulkan_hpp__setup_test_project()