Vulkan-Hpp/tests/CMakeLists.txt

45 lines
1.8 KiB
CMake
Raw Normal View History

# Copyright(c) 2018, NVIDIA CORPORATION. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
2023-04-20 14:50:26 +00:00
add_subdirectory( ArrayProxy )
add_subdirectory( ArrayProxyNoTemporaries )
add_subdirectory( ArrayWrapper )
if( VULKAN_HPP_ENABLE_CPP20_MODULES )
add_subdirectory( Cpp20Modules )
endif()
add_subdirectory( CppType )
2023-04-20 14:50:26 +00:00
add_subdirectory( DesignatedInitializers )
add_subdirectory( DeviceFunctions )
add_subdirectory( DispatchLoaderDynamic )
add_subdirectory( DispatchLoaderDynamicSharedLibrary )
add_subdirectory( DispatchLoaderDynamicSharedLibraryClient )
add_subdirectory( DispatchLoaderStatic )
add_subdirectory( EnableBetaExtensions )
2023-04-20 14:50:26 +00:00
add_subdirectory( ExtensionInspection )
add_subdirectory( Flags )
add_subdirectory( FormatTraits )
add_subdirectory( Handles )
2023-04-20 14:50:26 +00:00
add_subdirectory( Hash )
add_subdirectory( NoExceptions )
if( ( "cxx_std_23" IN_LIST CMAKE_CXX_COMPILE_FEATURES ) AND NOT ( ( CMAKE_CXX_COMPILER_ID STREQUAL "Clang" ) AND ( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15.0 ) ) )
# This test is for C++23 only... but clang++13 and clang++14 seem to have a problem with it
add_subdirectory( NoExceptionsRAII )
endif()
2023-04-20 14:50:26 +00:00
add_subdirectory( StridedArrayProxy )
add_subdirectory( StructureChain )
add_subdirectory( UniqueHandle )
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
add_subdirectory( UniqueHandleDefaultArguments )
Add C++20 module interface file and tests (#1582) * feat: exported vk::raii types in vulkan.ixx, with a small test * feat: *almost* complete vulkan.ixx; missing functions in vulkan_funcs.hpp and constexpr auto defines * Exported free functions in `vulkan_funcs.hpp` in `vulkan.ixx` * Completed vulkan.ixx Exported all types, structs, functions; need to handle anonymous namespace and getDispatchLoaderStatic() * Moved `vk::anon-namespace::throwResultException` to `vk::detail::throwResultException` to solve linking errors * Made `vk::getDispatchLoaderStatic` not `static` `static`in namespace/global scope has to do with internal/external linkage, and not lifetime * Fixed debug assert fail in `generateCppModuleStructUsings` * Removed references to `.cppm` * Formatting and versioning changes - CMake version handling simplified - vulkan.ixx includes new structs from new versions - vulkan.hpp and vulkan_raii.hpp reformatted with clang-format 14 * Removed extraneous includes - std::optional -> std::string::empty - std::filesystem was unused * Fixed constexpr function and value generation - 'c' prefix removed - Constants casing fixed - Types for constants fixed - Constants assigned to macros - Ordering of constants and consteval functions fixed * Moved constexprs to `vulkan.hpp` - Added corresponding `using` statements to `vulkan.ixx` - Changed `consteval auto(auto)` functions into templated SFINAE `constexpr` functions * Formatting, signposting, misc fixes - Added newlines around macro guards - Added signposting comments for relevant groups of `using`-statements in `vulkan.ixx` - Guarded createInstanceUnique with macro guard - Use m_handles.at("").commands for Funcs * Changed module file extension to `.cppm` - It follows the rest of the project convention; `ixx` looks really weird next to `.hpp` and `.cpp` - CMake transparently handles any extension anyway * Added `VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE` to `vulkan.cppm` * Added format traits and extension inspections - Straightforward, since everything is hard-coded * Added documentation about Vulkan-Hpp C++ module - Compiler requirements - CMake compilation - Command-line examples * Added vulkan_hash.hpp - No need for `using`, since all declarations are template specialisations of existing `std` objects * Documentation and comment fixes - Removed extraneous CMake version comments - Documentation about default dynamic dispatcher with the module - Comment updates in the source code * Moved constexpr defines and using statements - Moved to after resultUsings in both vulkan.hpp and vulkan.cppm - Also split up constexprDefinesAndUsings - Used const_cast for constexprDefines() * Used std::string instead of std::stringstream - Some changes also in previous commit - Also removed overly-clever ranges algorithms * Simplified protection generation - Removed `generateNotProtection` - Added optional `bool` parameter to `generateProtection` for `#if !defined( ... )` * Simplified Cpp20Modules CMakeLists - Made C++ standard and libraries into parameters - Removed FindVulkan call; already done * `constexpr` generation fixed - Made all generating functions `const` - Removed typos and extra comments - Extracted out filtering functionality into separate functions * Simplified defines partition generation - Added `DefinesPartition` struct as a member variable - Added non-const function to write to the above in `readTypeDefines` - Removed previous implementation that made many copies * Added `generateUsingsAndProtection` lambda to RAII name generation * Moved around `partitionDefines` to make more sense - called once at the end of the constructor - edited comments * Updated headers to 1.3.255 * Removed std::ranges and ranges view adaptors - CI isn't passing with them * Fixed constexpr functions for C++11 and C++14 - Removed `enable_if_t` and `is_integral_v` - Changed `auto` return type into `uint32_t` --------- Co-authored-by: Sharadh Rajaraman <r.sharadh@yahoo.com.sg>
2023-06-28 12:10:51 +00:00
endif()