From 7fb40e424c0e38230d25522a46ee02788cea23c6 Mon Sep 17 00:00:00 2001 From: apg360 <53176930+apg360@users.noreply.github.com> Date: Sat, 14 Nov 2020 14:39:40 +0200 Subject: [PATCH] initial --- .DS_Store | Bin 0 -> 6148 bytes .gitignore | 2 + 0_Common.h | 75 + 10_Pipeline.h | 212 ++ 11_RenderLoop.h | 198 ++ 1_Window.h | 84 + 2_VulkanInstance.h | 390 ++++ 3_PhysicalDevice.h | 130 ++ 4_SwapChain.h | 141 ++ 5_RenderPass.h | 270 +++ 6_CommandBuffer.h | 64 + 7_VertexBuffer.h | 193 ++ 8_ShaderandUniforms.h | 218 ++ 9_Descriptors.h | 112 + CMakeLists.txt | 76 + compile.sh | 40 + cover.jpg | Bin 0 -> 33910 bytes frag.spv | Bin 0 -> 380 bytes libs/.DS_Store | Bin 0 -> 6148 bytes libs/dlg/.DS_Store | Bin 0 -> 6148 bytes libs/dlg/.clang_complete | 4 + libs/dlg/.gitignore | 9 + libs/dlg/.travis.yml | 17 + libs/dlg/LICENSE | 23 + libs/dlg/README.md | 55 + libs/dlg/appveyor.yml | 37 + libs/dlg/docs/api.md | 395 ++++ libs/dlg/docs/changelog.md | 31 + libs/dlg/docs/dlg_android.c | 36 + libs/dlg/docs/examples/chain.c | 21 + libs/dlg/docs/examples/example.c | 13 + libs/dlg/docs/examples/example.cpp | 156 ++ libs/dlg/docs/examples/example.png | Bin 0 -> 798923 bytes libs/dlg/docs/notes.md | 99 + libs/dlg/docs/tests/core.c | 357 +++ libs/dlg/docs/tests/cpp.cpp | 119 + libs/dlg/docs/tests/disabled.c | 30 + libs/dlg/docs/tests/disabled.cpp | 9 + libs/dlg/docs/tests/level.c | 68 + libs/dlg/docs/tests/meson.build | 17 + libs/dlg/docs/tests/outputf.cpp | 45 + libs/dlg/docs/tests/threads.cpp | 66 + libs/dlg/docs/todo.md | 55 + libs/dlg/include/dlg/dlg.h | 270 +++ libs/dlg/include/dlg/dlg.hpp | 326 +++ libs/dlg/include/dlg/output.h | 172 ++ libs/dlg/meson.build | 156 ++ libs/dlg/meson_options.txt | 18 + libs/dlg/src/dlg/dlg.c | 803 +++++++ libs/volk/.DS_Store | Bin 0 -> 6148 bytes libs/volk/CMakeLists.txt | 117 + libs/volk/LICENSE.md | 19 + libs/volk/README.md | 96 + libs/volk/_build/CMakeCache.txt | 449 ++++ .../CMakeFiles/3.18.2/CMakeCCompiler.cmake | 77 + .../3.18.2/CMakeDetermineCompilerABI_C.bin | Bin 0 -> 16592 bytes .../CMakeFiles/3.18.2/CMakeSystem.cmake | 15 + .../3.18.2/CompilerIdC/CMakeCCompilerId.c | 674 ++++++ .../CMakeFiles/3.18.2/CompilerIdC/a.out | Bin 0 -> 33192 bytes .../CMakeDirectoryInformation.cmake | 16 + libs/volk/_build/CMakeFiles/CMakeOutput.log | 130 ++ .../lib/cmake/volk/volkTargets-noconfig.cmake | 19 + .../Export/lib/cmake/volk/volkTargets.cmake | 107 + libs/volk/_build/CMakeFiles/Makefile.cmake | 111 + libs/volk/_build/CMakeFiles/Makefile2 | 125 ++ .../_build/CMakeFiles/TargetDirectories.txt | 7 + libs/volk/_build/CMakeFiles/cmake.check_cache | 1 + libs/volk/_build/CMakeFiles/progress.marks | 1 + .../_build/CMakeFiles/volk.dir/C.includecache | 116 + .../CMakeFiles/volk.dir/DependInfo.cmake | 22 + .../_build/CMakeFiles/volk.dir/build.make | 118 + .../CMakeFiles/volk.dir/cmake_clean.cmake | 10 + .../volk.dir/cmake_clean_target.cmake | 3 + .../CMakeFiles/volk.dir/depend.internal | 23 + .../_build/CMakeFiles/volk.dir/depend.make | 23 + .../_build/CMakeFiles/volk.dir/flags.make | 10 + libs/volk/_build/CMakeFiles/volk.dir/link.txt | 2 + .../_build/CMakeFiles/volk.dir/progress.make | 3 + libs/volk/_build/CMakeFiles/volk.dir/volk.c.o | Bin 0 -> 55992 bytes libs/volk/_build/Makefile | 247 +++ libs/volk/_build/cmake_install.cmake | 90 + libs/volk/_build/install_manifest.txt | 7 + libs/volk/_build/libvolk.a | Bin 0 -> 56416 bytes libs/volk/_build/volkConfig.cmake | 21 + libs/volk/_build/volkConfigVersion.cmake | 37 + libs/volk/_installed/include/volk.c | 1929 +++++++++++++++++ libs/volk/_installed/include/volk.h | 1273 +++++++++++ .../lib/cmake/volk/volkConfig.cmake | 21 + .../lib/cmake/volk/volkConfigVersion.cmake | 37 + .../lib/cmake/volk/volkTargets-noconfig.cmake | 19 + .../lib/cmake/volk/volkTargets.cmake | 107 + libs/volk/_installed/lib/libvolk.a | Bin 0 -> 56416 bytes libs/volk/cmake/volkConfig.cmake.in | 21 + libs/volk/generate.py | 169 ++ libs/volk/generate.readme | 12 + .../CMakeLists.txt | 9 + .../_build/CMakeCache.txt | 342 +++ .../CMakeFiles/3.18.2/CMakeCCompiler.cmake | 77 + .../3.18.2/CMakeDetermineCompilerABI_C.bin | Bin 0 -> 16592 bytes .../CMakeFiles/3.18.2/CMakeSystem.cmake | 15 + .../3.18.2/CompilerIdC/CMakeCCompilerId.c | 674 ++++++ .../CMakeFiles/3.18.2/CompilerIdC/a.out | Bin 0 -> 33192 bytes .../CMakeDirectoryInformation.cmake | 16 + .../_build/CMakeFiles/CMakeOutput.log | 130 ++ .../_build/CMakeFiles/Makefile.cmake | 108 + .../_build/CMakeFiles/Makefile2 | 125 ++ .../_build/CMakeFiles/TargetDirectories.txt | 3 + .../_build/CMakeFiles/cmake.check_cache | 1 + .../_build/CMakeFiles/progress.marks | 1 + .../CMakeFiles/volk_test.dir/C.includecache | 118 + .../CMakeFiles/volk_test.dir/DependInfo.cmake | 22 + .../CMakeFiles/volk_test.dir/build.make | 118 + .../volk_test.dir/cmake_clean.cmake | 10 + .../CMakeFiles/volk_test.dir/depend.internal | 23 + .../CMakeFiles/volk_test.dir/depend.make | 23 + .../CMakeFiles/volk_test.dir/flags.make | 10 + .../_build/CMakeFiles/volk_test.dir/link.txt | 1 + .../_build/CMakeFiles/volk_test.dir/main.c.o | Bin 0 -> 56496 bytes .../CMakeFiles/volk_test.dir/progress.make | 3 + .../_build/Makefile | 197 ++ .../_build/cmake_install.cmake | 49 + .../_build/volk_test | Bin 0 -> 83416 bytes .../test/cmake_using_installed_headers/main.c | 54 + .../CMakeLists.txt | 39 + .../_build/CMakeCache.txt | 339 +++ .../CMakeFiles/3.18.2/CMakeCCompiler.cmake | 77 + .../3.18.2/CMakeDetermineCompilerABI_C.bin | Bin 0 -> 16592 bytes .../CMakeFiles/3.18.2/CMakeSystem.cmake | 15 + .../3.18.2/CompilerIdC/CMakeCCompilerId.c | 674 ++++++ .../CMakeFiles/3.18.2/CompilerIdC/a.out | Bin 0 -> 33192 bytes .../CMakeDirectoryInformation.cmake | 16 + .../_build/CMakeFiles/CMakeOutput.log | 130 ++ .../_build/CMakeFiles/Makefile.cmake | 104 + .../_build/CMakeFiles/Makefile2 | 125 ++ .../_build/CMakeFiles/TargetDirectories.txt | 3 + .../_build/CMakeFiles/cmake.check_cache | 1 + .../_build/CMakeFiles/progress.marks | 1 + .../CMakeFiles/volk_test.dir/C.includecache | 136 ++ .../CMakeFiles/volk_test.dir/DependInfo.cmake | 28 + .../buildTemplate/libs/volk-1.2.140/volk.c.o | Bin 0 -> 56108 bytes .../CMakeFiles/volk_test.dir/build.make | 133 ++ .../volk_test.dir/cmake_clean.cmake | 11 + .../CMakeFiles/volk_test.dir/depend.internal | 43 + .../CMakeFiles/volk_test.dir/depend.make | 43 + .../CMakeFiles/volk_test.dir/flags.make | 10 + .../_build/CMakeFiles/volk_test.dir/link.txt | 1 + .../_build/CMakeFiles/volk_test.dir/main.c.o | Bin 0 -> 1080 bytes .../CMakeFiles/volk_test.dir/progress.make | 4 + .../_build/Makefile | 227 ++ .../_build/cmake_install.cmake | 49 + .../_build/volk_test | Bin 0 -> 83416 bytes .../test/cmake_using_source_directly/main.c | 41 + .../cmake_using_subdir_headers/CMakeLists.txt | 11 + .../_build/CMakeCache.txt | 373 ++++ .../CMakeFiles/3.18.2/CMakeCCompiler.cmake | 77 + .../3.18.2/CMakeDetermineCompilerABI_C.bin | Bin 0 -> 16592 bytes .../CMakeFiles/3.18.2/CMakeSystem.cmake | 15 + .../3.18.2/CompilerIdC/CMakeCCompilerId.c | 674 ++++++ .../CMakeFiles/3.18.2/CompilerIdC/a.out | Bin 0 -> 33192 bytes .../CMakeDirectoryInformation.cmake | 16 + .../_build/CMakeFiles/CMakeOutput.log | 130 ++ .../_build/CMakeFiles/Makefile.cmake | 107 + .../_build/CMakeFiles/Makefile2 | 172 ++ .../_build/CMakeFiles/TargetDirectories.txt | 6 + .../_build/CMakeFiles/cmake.check_cache | 1 + .../_build/CMakeFiles/progress.marks | 1 + .../CMakeFiles/volk_test.dir/C.includecache | 118 + .../CMakeFiles/volk_test.dir/DependInfo.cmake | 22 + .../CMakeFiles/volk_test.dir/build.make | 118 + .../volk_test.dir/cmake_clean.cmake | 10 + .../CMakeFiles/volk_test.dir/depend.internal | 23 + .../CMakeFiles/volk_test.dir/depend.make | 23 + .../CMakeFiles/volk_test.dir/flags.make | 10 + .../_build/CMakeFiles/volk_test.dir/link.txt | 1 + .../_build/CMakeFiles/volk_test.dir/main.c.o | Bin 0 -> 56496 bytes .../CMakeFiles/volk_test.dir/progress.make | 3 + .../_build/Makefile | 211 ++ .../_build/cmake_install.cmake | 55 + .../CMakeDirectoryInformation.cmake | 16 + .../_build/volk/CMakeFiles/progress.marks | 1 + .../volk/CMakeFiles/volk.dir/C.includecache | 116 + .../volk/CMakeFiles/volk.dir/DependInfo.cmake | 22 + .../volk/CMakeFiles/volk.dir/build.make | 118 + .../CMakeFiles/volk.dir/cmake_clean.cmake | 10 + .../volk.dir/cmake_clean_target.cmake | 3 + .../volk/CMakeFiles/volk.dir/depend.internal | 23 + .../volk/CMakeFiles/volk.dir/depend.make | 23 + .../volk/CMakeFiles/volk.dir/flags.make | 10 + .../_build/volk/CMakeFiles/volk.dir/link.txt | 2 + .../volk/CMakeFiles/volk.dir/progress.make | 3 + .../_build/volk/CMakeFiles/volk.dir/volk.c.o | Bin 0 -> 55992 bytes .../_build/volk/Makefile | 199 ++ .../_build/volk/cmake_install.cmake | 39 + .../_build/volk/libvolk.a | Bin 0 -> 56416 bytes .../_build/volk_test | Bin 0 -> 83416 bytes .../test/cmake_using_subdir_headers/main.c | 53 + .../cmake_using_subdir_static/CMakeLists.txt | 22 + .../_build/CMakeCache.txt | 369 ++++ .../CMakeFiles/3.18.2/CMakeCCompiler.cmake | 77 + .../3.18.2/CMakeDetermineCompilerABI_C.bin | Bin 0 -> 16592 bytes .../CMakeFiles/3.18.2/CMakeSystem.cmake | 15 + .../3.18.2/CompilerIdC/CMakeCCompilerId.c | 674 ++++++ .../CMakeFiles/3.18.2/CompilerIdC/a.out | Bin 0 -> 33192 bytes .../CMakeDirectoryInformation.cmake | 16 + .../_build/CMakeFiles/CMakeOutput.log | 130 ++ .../_build/CMakeFiles/Makefile.cmake | 107 + .../_build/CMakeFiles/Makefile2 | 172 ++ .../_build/CMakeFiles/TargetDirectories.txt | 6 + .../_build/CMakeFiles/cmake.check_cache | 1 + .../_build/CMakeFiles/progress.marks | 1 + .../CMakeFiles/volk_test.dir/C.includecache | 118 + .../CMakeFiles/volk_test.dir/DependInfo.cmake | 28 + .../CMakeFiles/volk_test.dir/build.make | 119 + .../volk_test.dir/cmake_clean.cmake | 10 + .../CMakeFiles/volk_test.dir/depend.internal | 23 + .../CMakeFiles/volk_test.dir/depend.make | 23 + .../CMakeFiles/volk_test.dir/flags.make | 10 + .../_build/CMakeFiles/volk_test.dir/link.txt | 1 + .../_build/CMakeFiles/volk_test.dir/main.c.o | Bin 0 -> 1080 bytes .../CMakeFiles/volk_test.dir/progress.make | 3 + .../cmake_using_subdir_static/_build/Makefile | 211 ++ .../_build/cmake_install.cmake | 55 + .../CMakeDirectoryInformation.cmake | 16 + .../_build/volk/CMakeFiles/progress.marks | 1 + .../volk/CMakeFiles/volk.dir/C.includecache | 116 + .../volk/CMakeFiles/volk.dir/DependInfo.cmake | 27 + .../volk/CMakeFiles/volk.dir/build.make | 118 + .../CMakeFiles/volk.dir/cmake_clean.cmake | 10 + .../volk.dir/cmake_clean_target.cmake | 3 + .../volk/CMakeFiles/volk.dir/depend.internal | 23 + .../volk/CMakeFiles/volk.dir/depend.make | 23 + .../volk/CMakeFiles/volk.dir/flags.make | 10 + .../_build/volk/CMakeFiles/volk.dir/link.txt | 2 + .../volk/CMakeFiles/volk.dir/progress.make | 3 + .../_build/volk/CMakeFiles/volk.dir/volk.c.o | Bin 0 -> 56108 bytes .../_build/volk/Makefile | 199 ++ .../_build/volk/cmake_install.cmake | 39 + .../_build/volk/libvolk.a | Bin 0 -> 56536 bytes .../_build/volk_test | Bin 0 -> 83416 bytes .../test/cmake_using_subdir_static/main.c | 41 + libs/volk/test/run_tests.sh | 87 + libs/volk/volk.c | 1929 +++++++++++++++++ libs/volk/volk.h | 1273 +++++++++++ main.c | 166 ++ simple.frag | 16 + simple.vert | 32 + vert.spv | Bin 0 -> 1728 bytes 247 files changed, 25415 insertions(+) create mode 100644 .DS_Store create mode 100644 .gitignore create mode 100644 0_Common.h create mode 100644 10_Pipeline.h create mode 100644 11_RenderLoop.h create mode 100644 1_Window.h create mode 100644 2_VulkanInstance.h create mode 100644 3_PhysicalDevice.h create mode 100644 4_SwapChain.h create mode 100644 5_RenderPass.h create mode 100644 6_CommandBuffer.h create mode 100644 7_VertexBuffer.h create mode 100644 8_ShaderandUniforms.h create mode 100644 9_Descriptors.h create mode 100644 CMakeLists.txt create mode 100755 compile.sh create mode 100644 cover.jpg create mode 100644 frag.spv create mode 100644 libs/.DS_Store create mode 100644 libs/dlg/.DS_Store create mode 100644 libs/dlg/.clang_complete create mode 100644 libs/dlg/.gitignore create mode 100644 libs/dlg/.travis.yml create mode 100644 libs/dlg/LICENSE create mode 100644 libs/dlg/README.md create mode 100644 libs/dlg/appveyor.yml create mode 100644 libs/dlg/docs/api.md create mode 100644 libs/dlg/docs/changelog.md create mode 100644 libs/dlg/docs/dlg_android.c create mode 100644 libs/dlg/docs/examples/chain.c create mode 100644 libs/dlg/docs/examples/example.c create mode 100644 libs/dlg/docs/examples/example.cpp create mode 100644 libs/dlg/docs/examples/example.png create mode 100644 libs/dlg/docs/notes.md create mode 100644 libs/dlg/docs/tests/core.c create mode 100644 libs/dlg/docs/tests/cpp.cpp create mode 100644 libs/dlg/docs/tests/disabled.c create mode 100644 libs/dlg/docs/tests/disabled.cpp create mode 100644 libs/dlg/docs/tests/level.c create mode 100644 libs/dlg/docs/tests/meson.build create mode 100644 libs/dlg/docs/tests/outputf.cpp create mode 100644 libs/dlg/docs/tests/threads.cpp create mode 100644 libs/dlg/docs/todo.md create mode 100644 libs/dlg/include/dlg/dlg.h create mode 100644 libs/dlg/include/dlg/dlg.hpp create mode 100644 libs/dlg/include/dlg/output.h create mode 100644 libs/dlg/meson.build create mode 100644 libs/dlg/meson_options.txt create mode 100644 libs/dlg/src/dlg/dlg.c create mode 100644 libs/volk/.DS_Store create mode 100644 libs/volk/CMakeLists.txt create mode 100644 libs/volk/LICENSE.md create mode 100644 libs/volk/README.md create mode 100644 libs/volk/_build/CMakeCache.txt create mode 100644 libs/volk/_build/CMakeFiles/3.18.2/CMakeCCompiler.cmake create mode 100755 libs/volk/_build/CMakeFiles/3.18.2/CMakeDetermineCompilerABI_C.bin create mode 100644 libs/volk/_build/CMakeFiles/3.18.2/CMakeSystem.cmake create mode 100644 libs/volk/_build/CMakeFiles/3.18.2/CompilerIdC/CMakeCCompilerId.c create mode 100755 libs/volk/_build/CMakeFiles/3.18.2/CompilerIdC/a.out create mode 100644 libs/volk/_build/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 libs/volk/_build/CMakeFiles/CMakeOutput.log create mode 100644 libs/volk/_build/CMakeFiles/Export/lib/cmake/volk/volkTargets-noconfig.cmake create mode 100644 libs/volk/_build/CMakeFiles/Export/lib/cmake/volk/volkTargets.cmake create mode 100644 libs/volk/_build/CMakeFiles/Makefile.cmake create mode 100644 libs/volk/_build/CMakeFiles/Makefile2 create mode 100644 libs/volk/_build/CMakeFiles/TargetDirectories.txt create mode 100644 libs/volk/_build/CMakeFiles/cmake.check_cache create mode 100644 libs/volk/_build/CMakeFiles/progress.marks create mode 100644 libs/volk/_build/CMakeFiles/volk.dir/C.includecache create mode 100644 libs/volk/_build/CMakeFiles/volk.dir/DependInfo.cmake create mode 100644 libs/volk/_build/CMakeFiles/volk.dir/build.make create mode 100644 libs/volk/_build/CMakeFiles/volk.dir/cmake_clean.cmake create mode 100644 libs/volk/_build/CMakeFiles/volk.dir/cmake_clean_target.cmake create mode 100644 libs/volk/_build/CMakeFiles/volk.dir/depend.internal create mode 100644 libs/volk/_build/CMakeFiles/volk.dir/depend.make create mode 100644 libs/volk/_build/CMakeFiles/volk.dir/flags.make create mode 100644 libs/volk/_build/CMakeFiles/volk.dir/link.txt create mode 100644 libs/volk/_build/CMakeFiles/volk.dir/progress.make create mode 100644 libs/volk/_build/CMakeFiles/volk.dir/volk.c.o create mode 100644 libs/volk/_build/Makefile create mode 100644 libs/volk/_build/cmake_install.cmake create mode 100644 libs/volk/_build/install_manifest.txt create mode 100644 libs/volk/_build/libvolk.a create mode 100644 libs/volk/_build/volkConfig.cmake create mode 100644 libs/volk/_build/volkConfigVersion.cmake create mode 100644 libs/volk/_installed/include/volk.c create mode 100644 libs/volk/_installed/include/volk.h create mode 100644 libs/volk/_installed/lib/cmake/volk/volkConfig.cmake create mode 100644 libs/volk/_installed/lib/cmake/volk/volkConfigVersion.cmake create mode 100644 libs/volk/_installed/lib/cmake/volk/volkTargets-noconfig.cmake create mode 100644 libs/volk/_installed/lib/cmake/volk/volkTargets.cmake create mode 100644 libs/volk/_installed/lib/libvolk.a create mode 100644 libs/volk/cmake/volkConfig.cmake.in create mode 100755 libs/volk/generate.py create mode 100644 libs/volk/generate.readme create mode 100644 libs/volk/test/cmake_using_installed_headers/CMakeLists.txt create mode 100644 libs/volk/test/cmake_using_installed_headers/_build/CMakeCache.txt create mode 100644 libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/3.18.2/CMakeCCompiler.cmake create mode 100755 libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/3.18.2/CMakeDetermineCompilerABI_C.bin create mode 100644 libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/3.18.2/CMakeSystem.cmake create mode 100644 libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/3.18.2/CompilerIdC/CMakeCCompilerId.c create mode 100755 libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/3.18.2/CompilerIdC/a.out create mode 100644 libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/CMakeOutput.log create mode 100644 libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/Makefile.cmake create mode 100644 libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/Makefile2 create mode 100644 libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/TargetDirectories.txt create mode 100644 libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/cmake.check_cache create mode 100644 libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/progress.marks create mode 100644 libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/C.includecache create mode 100644 libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/DependInfo.cmake create mode 100644 libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/build.make create mode 100644 libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/cmake_clean.cmake create mode 100644 libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/depend.internal create mode 100644 libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/depend.make create mode 100644 libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/flags.make create mode 100644 libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/link.txt create mode 100644 libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/main.c.o create mode 100644 libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/progress.make create mode 100644 libs/volk/test/cmake_using_installed_headers/_build/Makefile create mode 100644 libs/volk/test/cmake_using_installed_headers/_build/cmake_install.cmake create mode 100755 libs/volk/test/cmake_using_installed_headers/_build/volk_test create mode 100644 libs/volk/test/cmake_using_installed_headers/main.c create mode 100644 libs/volk/test/cmake_using_source_directly/CMakeLists.txt create mode 100644 libs/volk/test/cmake_using_source_directly/_build/CMakeCache.txt create mode 100644 libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/3.18.2/CMakeCCompiler.cmake create mode 100755 libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/3.18.2/CMakeDetermineCompilerABI_C.bin create mode 100644 libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/3.18.2/CMakeSystem.cmake create mode 100644 libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/3.18.2/CompilerIdC/CMakeCCompilerId.c create mode 100755 libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/3.18.2/CompilerIdC/a.out create mode 100644 libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/CMakeOutput.log create mode 100644 libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/Makefile.cmake create mode 100644 libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/Makefile2 create mode 100644 libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/TargetDirectories.txt create mode 100644 libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/cmake.check_cache create mode 100644 libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/progress.marks create mode 100644 libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/C.includecache create mode 100644 libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/DependInfo.cmake create mode 100644 libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o create mode 100644 libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/build.make create mode 100644 libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/cmake_clean.cmake create mode 100644 libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/depend.internal create mode 100644 libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/depend.make create mode 100644 libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/flags.make create mode 100644 libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/link.txt create mode 100644 libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/main.c.o create mode 100644 libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/progress.make create mode 100644 libs/volk/test/cmake_using_source_directly/_build/Makefile create mode 100644 libs/volk/test/cmake_using_source_directly/_build/cmake_install.cmake create mode 100755 libs/volk/test/cmake_using_source_directly/_build/volk_test create mode 100644 libs/volk/test/cmake_using_source_directly/main.c create mode 100644 libs/volk/test/cmake_using_subdir_headers/CMakeLists.txt create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/CMakeCache.txt create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/3.18.2/CMakeCCompiler.cmake create mode 100755 libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/3.18.2/CMakeDetermineCompilerABI_C.bin create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/3.18.2/CMakeSystem.cmake create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/3.18.2/CompilerIdC/CMakeCCompilerId.c create mode 100755 libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/3.18.2/CompilerIdC/a.out create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/CMakeOutput.log create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/Makefile.cmake create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/Makefile2 create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/TargetDirectories.txt create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/cmake.check_cache create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/progress.marks create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/C.includecache create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/DependInfo.cmake create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/build.make create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/cmake_clean.cmake create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/depend.internal create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/depend.make create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/flags.make create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/link.txt create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/main.c.o create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/progress.make create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/Makefile create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/cmake_install.cmake create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/progress.marks create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/C.includecache create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/DependInfo.cmake create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/build.make create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/cmake_clean.cmake create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/cmake_clean_target.cmake create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/depend.internal create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/depend.make create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/flags.make create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/link.txt create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/progress.make create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/volk.c.o create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/volk/Makefile create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/volk/cmake_install.cmake create mode 100644 libs/volk/test/cmake_using_subdir_headers/_build/volk/libvolk.a create mode 100755 libs/volk/test/cmake_using_subdir_headers/_build/volk_test create mode 100644 libs/volk/test/cmake_using_subdir_headers/main.c create mode 100644 libs/volk/test/cmake_using_subdir_static/CMakeLists.txt create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/CMakeCache.txt create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/3.18.2/CMakeCCompiler.cmake create mode 100755 libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/3.18.2/CMakeDetermineCompilerABI_C.bin create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/3.18.2/CMakeSystem.cmake create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/3.18.2/CompilerIdC/CMakeCCompilerId.c create mode 100755 libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/3.18.2/CompilerIdC/a.out create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/CMakeOutput.log create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/Makefile.cmake create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/Makefile2 create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/TargetDirectories.txt create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/cmake.check_cache create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/progress.marks create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/C.includecache create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/DependInfo.cmake create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/build.make create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/cmake_clean.cmake create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/depend.internal create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/depend.make create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/flags.make create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/link.txt create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/main.c.o create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/progress.make create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/Makefile create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/cmake_install.cmake create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/progress.marks create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/C.includecache create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/DependInfo.cmake create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/build.make create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/cmake_clean.cmake create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/cmake_clean_target.cmake create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/depend.internal create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/depend.make create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/flags.make create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/link.txt create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/progress.make create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/volk.c.o create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/volk/Makefile create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/volk/cmake_install.cmake create mode 100644 libs/volk/test/cmake_using_subdir_static/_build/volk/libvolk.a create mode 100755 libs/volk/test/cmake_using_subdir_static/_build/volk_test create mode 100644 libs/volk/test/cmake_using_subdir_static/main.c create mode 100755 libs/volk/test/run_tests.sh create mode 100644 libs/volk/volk.c create mode 100644 libs/volk/volk.h create mode 100644 main.c create mode 100644 simple.frag create mode 100644 simple.vert create mode 100644 vert.spv diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..3fd8b6311e33d44a5fa53a4f386c81adb1426eaa GIT binary patch literal 6148 zcmeHK%SyvQ6g^X;6a}s5!ev|uF8aWQx{DfDS`mt_?Th+oo6;ttyL^G*U%1n6@FV;l z&pgl!t>Q|H%!NB=a_`(nPRUFMfY?u36`%khPnGD+bC@8~FLg|E#pS0eZ43Q8{McuTmIqkDV=$F-Lw6zZ~cSI%-)bI zGZeFEAYt7uT2|$i%BJnj*4~)geipiRCcYPaR-e4Ws=q4tJ1pV=Rn&2VHjdfH2r;$D z@ec7IZX740c*u2IsNr6D+vuT$b42Vp;k-?22_bXD)Dq74+{RE@>nPJwW#lO>5w7WJ zstPhg!VEWz>EnpLA$_GEbaY}m`nGfC@tFOJ?2as6i|cP$UzXL2>fy3s^&>XR=_J3! z=#FCaBlfm7?02JnhxK?eIGIWY%rBE)n9A;4Q;q@0z+W;T_XnRUF))~FR9goJbp;@L zG%Mj;odiT*8i;|xR3j}Ep+ku}RG2G<(BZWEW?f(~)u_WERAuHdm4&&X2vwbSUoD3S zG`i6-;25wOn9+{~dHx@MegC(E+>>L#G4QV#5MEdd_xVcZY#n +//#define VK_EXT_metal_surface //VK_USE_PLATFORM_MACOS_MVK +//#define VK_NO_PROTOTYPES +//#define GLFW_INCLUDE_VULKAN +#define GLFW_INCLUDE_NONE +#include +*/ + + +//Note that to avoid symbol conflicts, you have to make sure all translation units in your application include volk.h instead of vulkan.h, +// or that you define VK_NO_PROTOTYPES project-wide to make sure you aren’t accidentally picking up symbols from the real Vulkan loader. +#define VK_NO_PROTOTYPES + +// Vulkan backtrace error +#define ENABLE_VULKAN_DEBUG_CALLBACK + +// If you instead want to include the Vulkan header from a custom location +// Or use your own custom Vulkan header then do this before the GLFW header. +// => https://www.glfw.org/docs/3.2/vulkan.html +#include +#include + + +#include +#include // EXIT_FAILURE, EXIT_SUCCESS +#include // C++ DBG_ASSERT become assert +#include // strcpy, strcmp, strcat(concatenates), etc... +#include // logging +#include // tanf + +//Check vulkan error and exit application +#define ERR_VULKAN_EXIT(val, err_msg) \ + if ( val != VK_SUCCESS ) { \ + dlg_fatal(err_msg); \ + fflush(stdout); \ + exit(1); \ + } + +/*//Assert value and exit application +#define ERR_ASSERT_EXIT(val1, val2, err_msg) \ + if ( !( assert(val1 == val2) ) ) { \ + dlg_fatal(err_msg); \ + fflush(stdout); \ + assert(false); \ + } +*/ + +//Error and exit application +#define ERR_EXIT(err_msg) \ + do { \ + dlg_fatal(err_msg); \ + fflush(stdout); \ + exit(1); \ + } while (0) + +// This is a universal formula to find number of elements present in an array +// it will work for arrays of all data types such as int, char, float etc. +// We must use define instead of a function. Because An array sent as a parameter to a function is treated as a pointer, +// so sizeof will return the pointer's size, instead of the array's. : void printSizeOf(int intArray[]) +#define COUNT_ARRAY_ELEMS(x) (int) (sizeof(x) / sizeof((x)[0])) + + +/* + dlg_warn("This is a warning. If on a console, it will be printed yellow"); + dlg_error("Errors are red. Colors work even on windows consoles"); + dlg_info("Another feature: Utf-8 printing works automatically, even for שׁǐʼnďốẅś consoles"); + dlg_fatal("This one is printed bold. For more information, read the example already"); + dlg_assertm(1 == 2, "Well, this assertion will probably %s...", "fail"); + dlg_infot(("tag1", "tag2"), "We can tag our stuff. Can be used to filter/redirect messages"); + dlg_asserttm(("tag3"), 3 == 2, "The same goes for asserts"); +*/ diff --git a/10_Pipeline.h b/10_Pipeline.h new file mode 100644 index 0000000..17ee87a --- /dev/null +++ b/10_Pipeline.h @@ -0,0 +1,212 @@ + +#pragma once // include guard + +//# ----------------------------------------------------- +// Step 10 - SetupPipeline +// +//________//________// START Variables and Functions before main function of this step +//________//________// END Variables and Functions before main function of this step + +void SetupPipeline(VkDevice device, + int width, + int height, + int vertexSize, + VkDescriptorSetLayout descriptorSetLayout, + VkShaderModule vertShaderModule, + VkShaderModule fragShaderModule, + VkRenderPass renderPass, + VkPipeline* outPipeline, + VkPipelineLayout* outPipelineLayout) +{ + // Graphics pipeline: + VkPipelineLayoutCreateInfo layoutCreateInfo = {}; + layoutCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO; + layoutCreateInfo.setLayoutCount = 1; + layoutCreateInfo.pSetLayouts = &descriptorSetLayout; + layoutCreateInfo.pushConstantRangeCount = 0; + layoutCreateInfo.pPushConstantRanges = NULL; + + VkResult result = + vkCreatePipelineLayout( device, + // logical device that creates the pipeline layout + &layoutCreateInfo, + // pointer to VkPipelineLayoutCreateInfo structure specifying pipeline layout object + NULL, + // optional controling host memory allocation + outPipelineLayout ); + // pointer to return VkPipelineLayout handle for pipeline layout + + ERR_VULKAN_EXIT( result, "Failed to create pipeline layout." ); + + // setup shader stages in the pipeline: + VkPipelineShaderStageCreateInfo shaderStageCreateInfo[2] = {}; + shaderStageCreateInfo[0].sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; + shaderStageCreateInfo[0].stage = VK_SHADER_STAGE_VERTEX_BIT; + shaderStageCreateInfo[0].module = vertShaderModule; + // shader entry point function name + shaderStageCreateInfo[0].pName = "main"; // shader entry point + shaderStageCreateInfo[0].pSpecializationInfo = NULL; + + shaderStageCreateInfo[1].sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO; + shaderStageCreateInfo[1].stage = VK_SHADER_STAGE_FRAGMENT_BIT; + shaderStageCreateInfo[1].module = fragShaderModule; + // shader entry point function name + shaderStageCreateInfo[1].pName = "main"; // shader entry point + shaderStageCreateInfo[1].pSpecializationInfo = NULL; + + // vertex input configuration: + VkVertexInputBindingDescription vertexBindingDescription = {}; + vertexBindingDescription.binding = 0; + vertexBindingDescription.stride = vertexSize; + vertexBindingDescription.inputRate = VK_VERTEX_INPUT_RATE_VERTEX; + + VkVertexInputAttributeDescription vertexAttributeDescription[2]; + + // position: + vertexAttributeDescription[0].location = 0; + vertexAttributeDescription[0].binding = 0; + vertexAttributeDescription[0].format = VK_FORMAT_R32G32B32A32_SFLOAT; + vertexAttributeDescription[0].offset = 0; + + // colors: + vertexAttributeDescription[1].location = 1; + vertexAttributeDescription[1].binding = 0; + vertexAttributeDescription[1].format = VK_FORMAT_R32G32B32_SFLOAT; + vertexAttributeDescription[1].offset = 4 * sizeof(float); + + VkPipelineVertexInputStateCreateInfo vertexInputStateCreateInfo = {}; + vertexInputStateCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO; + vertexInputStateCreateInfo.vertexBindingDescriptionCount = 1; + // attribute indexing is a function of the vertex index + vertexInputStateCreateInfo.pVertexBindingDescriptions = &vertexBindingDescription; + vertexInputStateCreateInfo.vertexAttributeDescriptionCount = 2; + vertexInputStateCreateInfo.pVertexAttributeDescriptions = vertexAttributeDescription; + + // vertex topology config: + VkPipelineInputAssemblyStateCreateInfo inputAssemblyStateCreateInfo = {}; + inputAssemblyStateCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO; + inputAssemblyStateCreateInfo.topology = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; + inputAssemblyStateCreateInfo.primitiveRestartEnable = VK_FALSE; + + // viewport config: + VkViewport viewport = {}; + viewport.x = 0; + viewport.y = 0; + viewport.width = (float) width; + viewport.height = (float) height; + viewport.minDepth = 0; + viewport.maxDepth = 1; + + VkRect2D scissors = {}; + VkOffset2D k = {0,0}; + VkExtent2D m = {width,height}; + scissors.offset = k; + scissors.extent = m; + + VkPipelineViewportStateCreateInfo viewportState = {}; + viewportState.sType = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO; + viewportState.viewportCount = 1; + viewportState.pViewports = &viewport; + viewportState.scissorCount = 1; + viewportState.pScissors = &scissors; + + // rasterization config: + VkPipelineRasterizationStateCreateInfo rasterizationState = {}; + rasterizationState.sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO; + rasterizationState.depthClampEnable = VK_FALSE; + rasterizationState.rasterizerDiscardEnable = VK_FALSE; + rasterizationState.polygonMode = VK_POLYGON_MODE_FILL; + rasterizationState.cullMode = VK_CULL_MODE_NONE; + rasterizationState.frontFace = VK_FRONT_FACE_COUNTER_CLOCKWISE; + rasterizationState.depthBiasEnable = VK_FALSE; + rasterizationState.depthBiasConstantFactor = 0; + rasterizationState.depthBiasClamp = 0; + rasterizationState.depthBiasSlopeFactor = 0; + rasterizationState.lineWidth = 1; + + // sampling config: + VkPipelineMultisampleStateCreateInfo multisampleState = {}; + multisampleState.sType = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO; + multisampleState.rasterizationSamples = VK_SAMPLE_COUNT_1_BIT; + multisampleState.sampleShadingEnable = VK_FALSE; + multisampleState.minSampleShading = 0; + multisampleState.pSampleMask = NULL; + multisampleState.alphaToCoverageEnable = VK_FALSE; + multisampleState.alphaToOneEnable = VK_FALSE; + + // color blend config: (Actually off for tutorial) + VkPipelineColorBlendAttachmentState colorBlendAttachmentState = {}; + colorBlendAttachmentState.blendEnable = VK_FALSE; + colorBlendAttachmentState.srcColorBlendFactor = VK_BLEND_FACTOR_SRC_COLOR; + colorBlendAttachmentState.dstColorBlendFactor = VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR; + colorBlendAttachmentState.colorBlendOp = VK_BLEND_OP_ADD; + colorBlendAttachmentState.srcAlphaBlendFactor = VK_BLEND_FACTOR_ZERO; + colorBlendAttachmentState.dstAlphaBlendFactor = VK_BLEND_FACTOR_ZERO; + colorBlendAttachmentState.alphaBlendOp = VK_BLEND_OP_ADD; + colorBlendAttachmentState.colorWriteMask = 0xf; + + VkPipelineColorBlendStateCreateInfo colorBlendState = {}; + colorBlendState.sType = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO; + colorBlendState.logicOpEnable = VK_FALSE; + colorBlendState.logicOp = VK_LOGIC_OP_CLEAR; + colorBlendState.attachmentCount = 1; + colorBlendState.pAttachments = &colorBlendAttachmentState; + colorBlendState.blendConstants[0] = 0.0; + colorBlendState.blendConstants[1] = 0.0; + colorBlendState.blendConstants[2] = 0.0; + colorBlendState.blendConstants[3] = 0.0; + + // configure dynamic state: + VkDynamicState dynamicState[2] = { VK_DYNAMIC_STATE_VIEWPORT, VK_DYNAMIC_STATE_SCISSOR }; + VkPipelineDynamicStateCreateInfo dynamicStateCreateInfo = {}; + dynamicStateCreateInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO; + dynamicStateCreateInfo.dynamicStateCount = 2; + dynamicStateCreateInfo.pDynamicStates = dynamicState; + + // add depth buffer options to the pipeline + VkPipelineDepthStencilStateCreateInfo depthStencil = {}; + depthStencil.sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO; + depthStencil.depthTestEnable = VK_TRUE; + depthStencil.depthWriteEnable = VK_TRUE; + depthStencil.depthCompareOp = VK_COMPARE_OP_LESS; + depthStencil.depthBoundsTestEnable = VK_FALSE; + depthStencil.minDepthBounds = 0.0f; // Optional + depthStencil.maxDepthBounds = 0.0f; // Optional + depthStencil.stencilTestEnable = VK_FALSE; + + // add finally, pipeline config and creation: + VkGraphicsPipelineCreateInfo pipelineCreateInfo = {}; + pipelineCreateInfo.sType = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO; + pipelineCreateInfo.stageCount = 2; + pipelineCreateInfo.pStages = shaderStageCreateInfo; + pipelineCreateInfo.pVertexInputState = &vertexInputStateCreateInfo; + pipelineCreateInfo.pInputAssemblyState = &inputAssemblyStateCreateInfo; + pipelineCreateInfo.pTessellationState = NULL; + pipelineCreateInfo.pViewportState = &viewportState; + pipelineCreateInfo.pRasterizationState = &rasterizationState; + pipelineCreateInfo.pMultisampleState = &multisampleState; + pipelineCreateInfo.pDepthStencilState = &depthStencil; + pipelineCreateInfo.pColorBlendState = &colorBlendState; + pipelineCreateInfo.pDynamicState = &dynamicStateCreateInfo; + pipelineCreateInfo.layout = *outPipelineLayout; + pipelineCreateInfo.renderPass = renderPass; + pipelineCreateInfo.subpass = 0; + pipelineCreateInfo.basePipelineHandle = NULL; + pipelineCreateInfo.basePipelineIndex = 0; + + result = + vkCreateGraphicsPipelines( device, + // logical device that creates the graphics pipelines. + VK_NULL_HANDLE, + // either VK_NULL_HANDLE indicating caching is disabled; or handle of a pipeline cache object + 1, + // length of the pCreateInfos and pPipelines arrays + &pipelineCreateInfo, + // array of VkGraphicsPipelineCreateInfo structures + NULL, + // controls host memory allocation + outPipeline ); + // pointer to an array in which the resulting graphics pipeline objects are returned + + ERR_VULKAN_EXIT( result, "Failed to create graphics pipeline." ); +}// END SetupPipeline(..) diff --git a/11_RenderLoop.h b/11_RenderLoop.h new file mode 100644 index 0000000..11e1497 --- /dev/null +++ b/11_RenderLoop.h @@ -0,0 +1,198 @@ + +#pragma once // include guard + +//# ----------------------------------------------------- +// Step 11 - RenderLoop +// +//________//________// START Variables and Functions before main function of this step +//________//________// END Variables and Functions before main function of this step + +void RenderLoop(VkDevice device, + int width, + int height, + int numberOfTriangles, + VkSwapchainKHR swapChain, + VkCommandBuffer commandBuffer, + VkImage* presentImages, + VkFramebuffer* frameBuffers, + VkRenderPass renderPass, + VkBuffer vertexInputBuffer, + VkDescriptorSet descriptorSet, + VkPipelineLayout pipelineLayout, + VkPipeline pipeline) +{ + + uint32_t nextImageIdx; + vkAcquireNextImageKHR( device, + swapChain, + UINT64_MAX, + VK_NULL_HANDLE, + VK_NULL_HANDLE, + &nextImageIdx ); + + VkCommandBufferBeginInfo beginInfo = {}; + beginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; + beginInfo.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT; + + vkBeginCommandBuffer( commandBuffer, + &beginInfo ); + + // activate render pass: + VkClearValue clearValue[] = {{1.0f,1.0f,1.0f,1.0f},{1.0,0.0}}; + VkRenderPassBeginInfo renderPassBeginInfo = {}; + renderPassBeginInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO; + renderPassBeginInfo.renderPass = renderPass; + renderPassBeginInfo.framebuffer = frameBuffers[nextImageIdx]; + VkOffset2D a = {0, 0}; + VkExtent2D b = {width, height}; + VkRect2D c = {a,b}; + renderPassBeginInfo.renderArea = c; + renderPassBeginInfo.clearValueCount = 2; + renderPassBeginInfo.pClearValues = clearValue; + /*XXXX*/ + + vkCmdBeginRenderPass( commandBuffer, + &renderPassBeginInfo, + VK_SUBPASS_CONTENTS_INLINE ); + /*XXXX*/ + // bind the graphics pipeline to the command buffer. + // Any vkDraw command afterwards is affected by this pipeline. + + vkCmdBindPipeline( commandBuffer, + VK_PIPELINE_BIND_POINT_GRAPHICS, + pipeline ); + + // take care of dynamic state: + VkViewport viewport = { 0, 0, (float)width, (float)height, 0, 1 }; + vkCmdSetViewport( commandBuffer, 0, 1, &viewport ); + + VkRect2D scissor = { 0, 0, width, height }; + vkCmdSetScissor( commandBuffer, 0, 1, &scissor); + + // bind your shader parameters: + + vkCmdBindDescriptorSets( commandBuffer, + VK_PIPELINE_BIND_POINT_GRAPHICS, + pipelineLayout, + 0, + 1, + &descriptorSet, + 0, + NULL ); + + // render the triangle: + VkDeviceSize offsets = { 0 }; + vkCmdBindVertexBuffers( commandBuffer, + 0, + 1, + &vertexInputBuffer, + &offsets ); + + // VOLK + //suitable for applications that want to use explicit multi-GPU by creating multiple VkDevice objects. + struct VolkDeviceTable device_table; + volkLoadDeviceTable(&device_table, device); + + //then using the functions from the table instead: + + device_table.vkCmdDraw( commandBuffer, + // vertex count + numberOfTriangles * 3, + // instance count + 1, + // first index + 0, + // first instance + 0 ); + + + vkCmdEndRenderPass( commandBuffer ); + + vkEndCommandBuffer( commandBuffer ); + /*XXXX*/ + + // present: + VkFence renderFence; + VkFenceCreateInfo fenceCreateInfo = {}; + fenceCreateInfo.sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO; + + vkCreateFence( device, + &fenceCreateInfo, + NULL, + &renderFence ); + + VkPipelineStageFlags waitStageMash = { VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT }; + + VkQueue presentQueue = 0; + vkGetDeviceQueue( device, + 0, + 0, + &presentQueue ); + + VkSubmitInfo submitInfo = {}; + submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO; + submitInfo.waitSemaphoreCount = 1; + submitInfo.pWaitSemaphores = VK_NULL_HANDLE; + submitInfo.pWaitDstStageMask = &waitStageMash; + submitInfo.commandBufferCount = 0; + submitInfo.pCommandBuffers = &commandBuffer; + submitInfo.signalSemaphoreCount = 0; + submitInfo.pSignalSemaphores = VK_NULL_HANDLE; + + /*VkSubmitInfo submit_info = {.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO, + .pNext = NULL, + .waitSemaphoreCount = 1, + .pWaitSemaphores = &imageAcquiredSemaphore, + .pWaitDstStageMask = &pipe_stage_flags, + .commandBufferCount = 1, + .pCommandBuffers = &demo->draw_cmd, + .signalSemaphoreCount = 1, + .pSignalSemaphores = &drawCompleteSemaphore};*/ + + // Submit command buffer (drawing) + dlg_warn("calling vkQueueSubmit"); + //dlg_warn("commandBuffer = %u",&commandBuffer); + vkQueueSubmit( presentQueue, + // the queue that the command buffers will be submitted to + 1, + // number of elements in the submitInfo array + &submitInfo, + // pointer to an array of VkSubmitInfo structures, each specifying a command buffer submission batch + renderFence ); + // handle to a fence to be signaled once all submitted command buffers have completed execution + /*XXXX*/ + + // Wait for the command/queue to finish + + vkWaitForFences( device, 1, &renderFence, VK_TRUE, UINT64_MAX ); + + + vkDestroyFence( device, renderFence, NULL ); + + // Present the backbuffer + VkPresentInfoKHR presentInfo = {}; + presentInfo.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR; + presentInfo.pNext = NULL; + presentInfo.waitSemaphoreCount = 0; + presentInfo.pWaitSemaphores = VK_NULL_HANDLE; + presentInfo.swapchainCount = 1; + presentInfo.pSwapchains = &swapChain; + presentInfo.pImageIndices = &nextImageIdx; + presentInfo.pResults = NULL; + + vkQueuePresentKHR( presentQueue, &presentInfo ); + + /*glClearColor(0.2, 0.8, 0.3, 1.0); + glClear(GL_COLOR_BUFFER_BIT); + + glRotatef(1, 0.2, 0.2, 0); + glBegin(GL_POLYGON); + glColor3f(0.4, 0.3, 1.0); + glVertex3f(-0.8, 0.8, 0.0); + glVertex3f( 0.8, 0.8, 0.0); + glVertex3f( 0.8, -0.8, 0.0); + glVertex3f(-0.8, -0.8, 0.0); + glEnd(); + */ + +}//END RenderLoop(..) diff --git a/1_Window.h b/1_Window.h new file mode 100644 index 0000000..04ef8d7 --- /dev/null +++ b/1_Window.h @@ -0,0 +1,84 @@ + +#pragma once // include guard + +//# ----------------------------------------------------- +// Step 1 - Window +// +//________//________// START Variables and Functions before main function of this step +//Most events are reported through callbacks, whether it's a key being pressed, +// a GLFW window being moved, or an error occurring. +void glfw_error_callback(int error, const char* description) +{ + fprintf(stderr, "Error: %s\n", description); + dlg_error("Error: %s\n", description); +} + +int nbFrames = 0; +double lastTime = 0; +void showFPS(GLFWwindow* windowHandle) +{ + // Measure speed + //char title_string[256]; + //title_string [255] = 'VulkanKore'; + + double currentTime = glfwGetTime(); + double delta = currentTime - lastTime; + nbFrames++; + + if ( delta >= 1.0 ){ // If last cout was more than 1 sec ago + + //dlg_warn("currentTime: %.1f",currentTime); + //dlg_warn("lastTime: %.1f",lastTime); + //dlg_warn("delta: %.1f",delta); + //dlg_warn("nbFrames: %u",nbFrames); + //dlg_warn("nbFrames/delta: %.1f",nbFrames/delta); + + double fps = (double) nbFrames/delta; + //dlg_info("FPS: %.1f",fps); + + //cout << 1000.0/double(nbFrames) << endl; + //std::stringstream ss; + //ss << GAME_NAME << " " << VERSION << " [" << fps << " FPS]"; + + //snprintf ( title, 255, "%s %s - [FPS: %3.2f]", + // GAME_NAME, VERSION, 1000.0f / (float)nbFrames ); + + //glfwSetWindowTitle(windowHandle, ss.str().c_str()); + //glfwSetWindowTitle(windowHandle, title_string); + + nbFrames = 0; + lastTime = currentTime; + } + //assert(false); +} +//________//________// END Variables and Functions before main function of this step + +GLFWwindow* SetupWindow(int width, int height) +{ + //Callback functions must be set, so GLFW knows to call them. + glfwSetErrorCallback(glfw_error_callback); + + // Initialise GLFW + if( !glfwInit() ) + { + dlg_fatal("Failed to initialize GLFW"); + return NULL; + } + + glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); + glfwWindowHint(GLFW_RESIZABLE, GL_FALSE); + GLFWwindow* windowHandle = glfwCreateWindow(width, height, "Vulkan window", NULL, NULL); + + if (!windowHandle) + { + dlg_fatal("GLFW failed to create window"); + glfwTerminate(); + return NULL; + } + + // We do not use OpenGL, this is not required + //glfwMakeContextCurrent(windowHandle); + + return windowHandle; +} + diff --git a/2_VulkanInstance.h b/2_VulkanInstance.h new file mode 100644 index 0000000..8a55fd8 --- /dev/null +++ b/2_VulkanInstance.h @@ -0,0 +1,390 @@ + +#pragma once // include guard + + +//# ----------------------------------------------------- +// Step 2 - Initialize Vulkan +// +//________//________// START Variables and Functions before main function of this step +//Vulkan report/debug callback (validation layer) +VkDebugReportCallbackEXT debugReportCallback_Error = VK_NULL_HANDLE; +VkDebugReportCallbackEXT debugReportCallback_Warning = VK_NULL_HANDLE; +VkDebugUtilsMessengerEXT debugUtilsMessenger = VK_NULL_HANDLE; + +static VKAPI_ATTR VkBool32 VKAPI_CALL funcDebugUtilsMessenger +(VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageType, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData, void* pUserData) +{ + dlg_error("validation layer: %s \n", pCallbackData->pMessage); + return VK_FALSE; +} + +static int validation_error = 0; +static VKAPI_ATTR VkBool32 VKAPI_CALL funcDebugReportCallback +( VkFlags msgFlags, VkDebugReportObjectTypeEXT objType, + uint64_t srcObject, size_t location, int32_t msgCode, + const char *pLayerPrefix, const char *pMsg, void *pUserData) +{ + char *message = (char *)malloc(strlen(pMsg) + 100); + assert(message); + validation_error = 1; + + if (msgFlags & VK_DEBUG_REPORT_ERROR_BIT_EXT) { + //sprintf(message, "ERROR: [%s] Code %d : %s", pLayerPrefix, msgCode, pMsg); + dlg_error("%s", message); + dlg_error("ERROR: [%s] Code %d : %s", pLayerPrefix, msgCode, pMsg); + } else if (msgFlags & VK_DEBUG_REPORT_WARNING_BIT_EXT) { + //sprintf(message, "WARNING: [%s] Code %d : %s", pLayerPrefix, msgCode, pMsg); + dlg_warn("%s", message); + dlg_warn("WARNING: [%s] Code %d : %s", pLayerPrefix, msgCode, pMsg); + } else { + return false; + } + + //printf("%s\n", message); + dlg_error("%s\n", message); + fflush(stdout); + free(message); + + /* + * false indicates that layer should not bail-out of an + * API call that had validation failures. This may mean that the + * app dies inside the driver due to invalid parameter(s). + * That's what would happen without validation layers, so we'll + * keep that behavior here. + */ + return false; +} +//________//________// END Variables and Functions before main function of this step + +void SetupVulkanInstance(GLFWwindow* windowHandle, + VkInstance* outInstance, + VkSurfaceKHR* outSurface) +{ + + // VOLK won't compile if the appropriate Vulkan platform define isn't set. + // Is this required because already done in CMAKE file + void* ptr = + #if defined(_WIN32) + &vkCreateWin32SurfaceKHR; + #elif defined(__linux__) || defined(__unix__) + &vkCreateXlibSurfaceKHR; + #elif defined(__APPLE__) + &vkCreateMacOSSurfaceMVK; + #else + //Platform not recogized for testing. + NULL; + #endif + + // Initialize VULKAN through VOLK + // call the following function to initialize VOLK before calling any Vulkan APIs (including instance creation): + VkResult result = volkInitialize(); + assert( VK_SUCCESS == result ); // fail the application if volkInitialize failed + uint32_t version = volkGetInstanceVersion(); + dlg_info("Volk version : %u", version); + dlg_info("Vulkan version %d.%d.%d initialized.", VK_VERSION_MAJOR(version), VK_VERSION_MINOR(version), VK_VERSION_PATCH(version)); + + if (glfwVulkanSupported()) + { + dlg_info("glfw Vulkan is available, at least for compute"); + } + + // Layer properties + uint32_t count = 0; + + // Returns the number of layer properties available, + // If the VkLayerProperties* is NULL, then the number of layer properties available is returned + result = + vkEnumerateInstanceLayerProperties (&count, // uint32_t* + // pointer to the number of layer properties available + NULL); // VkLayerProperties* + // pointer to an array of VkLayerProperties structures + + + assert( VK_SUCCESS == result ); + assert( count > 0 ); + dlg_info("Number of layer properties available : %u", count); + + VkLayerProperties* instanceLayers = malloc( count * sizeof(VkLayerProperties) ); + // As the VkLayerProperties structure array is not NULL the function returns the layers properties + // + result = + vkEnumerateInstanceLayerProperties(&count, // uint32_t* + // pointer to the number of layer properties available + &instanceLayers[0]); // VkLayerProperties* + // pointer to an array of VkLayerProperties structures + dlg_info("Layers properties available : %u", count); + // Enumerate list of Layers + for (uint32_t index = 0; index < count; index++) { + dlg_info("Retrievable Layer name : %s", instanceLayers[index].layerName); + } + + // Extension properties + // vkEnumerateInstanceExtensionProperties - Returns the requested number + // of global extension properties. The count relates to the number of + // extension properties available + result = + vkEnumerateInstanceExtensionProperties(NULL, // const char* + // pointer to the name of the layer to retrieve extensions for + &count, // uint32_t* + // pointer to the number of extension properties available + NULL); // VkExtensionProperties* + // pointer to an array of VkExtensionProperties structures + + assert( VK_SUCCESS == result ); + assert( count > 0 ); + dlg_info("Extension Properties available : %u", count); + + VkExtensionProperties* instanceExtension = malloc( count * sizeof(VkExtensionProperties) ); + // Array of LayerNames not NULL so returns an array of null-terminated UTF-8 strings + // names for the retrievable extensions. + // The VkExtensionProperties structures is not NULL so returns the extension properties + result = + vkEnumerateInstanceExtensionProperties(NULL, // const char* + // pointer to the name of the layer to retrieve extensions for + &count, // uint32_t* + // pointer to the number of extension properties available + instanceExtension); // VkExtensionProperties* + // pointer ro an array of VkExtensionProperties structures + dlg_info("Names for the retrievable extensions : %u", count); + + for (uint32_t index = 0; index < count; index++) { + //the function strcmp returns zero if the strings are the same, + //less than zero if the first string is less than the second, + //and greater than zero if the string array is greater. + if ( + strcmp(VK_EXT_DEBUG_REPORT_EXTENSION_NAME, instanceExtension[index].extensionName) == 0 + || strcmp(VK_EXT_DEBUG_UTILS_EXTENSION_NAME, instanceExtension[index].extensionName) == 0 + ) + { + dlg_info("Retrievable extension for debug : %s",instanceExtension[index].extensionName); + } else { + dlg_info("Retrievable extension name : %s", instanceExtension[index].extensionName); + } + } + + /* + e.g., VK_LAYER_NV_optimus or VK_LAYER_LUNARG_standard_validation + */ + + const char *layers[] = { "VK_LAYER_KHRONOS_validation" }; //"VK_LAYER_NV_optimus" or "VK_LAYER_LUNARG_standard_validation" + + if (COUNT_ARRAY_ELEMS(layers) != 0) dlg_info("Size of Vulkan instance enabled layers : %u", COUNT_ARRAY_ELEMS(layers)); + + /* Automatically check and list the required extensions for this Vulkan instance to start */ + uint32_t required_extension_count = 0; + const char **required_extensions = glfwGetRequiredInstanceExtensions(&required_extension_count); + if (!required_extensions) { + dlg_error("glfwGetRequiredInstanceExtensions failed to find the " + "platform surface extensions.\n\nDo you have a compatible " + "Vulkan installable client driver (ICD) installed?\nPlease " + "look at the Getting Started guide for additional " + "information.\n" + "vkCreateInstance Failure"); + } + // Now prepare the extensions list + uint32_t enabled_extension_count=0; + #ifdef ENABLE_VULKAN_DEBUG_CALLBACK // access debug callbacks + // VK_EXT_debug_report + the other required extensions + const char *extensions[2+required_extension_count]; + dlg_info("VK_EXT_debug_report + VK_EXT_debug_utils will be enabled because ENABLE_VULKAN_DEBUG_CALLBACK is defined"); + extensions[0] = VK_EXT_DEBUG_REPORT_EXTENSION_NAME; // VK_EXT_debug_report + extensions[1] = VK_EXT_DEBUG_UTILS_EXTENSION_NAME; // VK_EXT_debug_utils + enabled_extension_count=2;//COUNT_ARRAY_ELEMS(extensions); + #else + enabled_extension_count=0; + const char *extensions[required_extension_count]; + #endif + + // Build extensions list + for ( uint32_t index=0; index < required_extension_count; index++) { + extensions[enabled_extension_count] = required_extensions[index]; + enabled_extension_count++; + } + + //List the enabled extensions + dlg_info("Enabled extension count %u",enabled_extension_count); + for (uint32_t index = 0; index < enabled_extension_count; index++) + { + dlg_info("Extensions no %u : %s",index,extensions[index]); + } + + /* Example for MacOS * + #ifdef ENABLE_VULKAN_DEBUG_CALLBACK // access debug callbacks + const char *extensions[] = { "VK_EXT_debug_report", + "VK_KHR_surface", + "VK_EXT_metal_surface", + }; + #else + const char *extensions[] = { "VK_KHR_surface", + "VK_EXT_metal_surface", + }; + #endif + */ + + //--//--//--// + { + VkApplicationInfo ai = {}; + ai.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO; + ai.pApplicationName = "VulkanKore"; + ai.applicationVersion = 1; + ai.pEngineName = "VulkanKore"; + ai.engineVersion = 1; + ai.apiVersion = VK_API_VERSION_1_2; + + VkInstanceCreateInfo ici = {}; + ici.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; + ici.flags = 0; + ici.pApplicationInfo = &ai; + ici.enabledExtensionCount = COUNT_ARRAY_ELEMS(extensions); + ici.ppEnabledExtensionNames = extensions; + ici.enabledLayerCount = COUNT_ARRAY_ELEMS(layers); + ici.ppEnabledLayerNames = layers; + + //Optional - if you want Vulkan to tell you if something wrong, you must set the callback + /* + What are validation layers? + The Vulkan API is designed around the idea of minimal driver overhead and one of the manifestations of that goal is that there is very limited error checking in the API by default. Even mistakes as simple as setting enumerations to incorrect values or passing null pointers to required parameters are generally not explicitly handled and will simply result in crashes or undefined behavior. Because Vulkan requires you to be very explicit about everything you're doing, it's easy to make many small mistakes like using a new GPU feature and forgetting to request it at logical device creation time. + + However, that doesn't mean that these checks can't be added to the API. Vulkan introduces an elegant system for this known as validation layers. Validation layers are optional components that hook into Vulkan function calls to apply additional operations. Common operations in validation layers are: + + Checking the values of parameters against the specification to detect misuse + Tracking creation and destruction of objects to find resource leaks + Checking thread safety by tracking the threads that calls originate from + Logging every call and its parameters to the standard output + Tracing Vulkan calls for profiling and replaying + Here's an example of what the implementation of a function in a diagnostics validation layer + */ + #ifdef ENABLE_VULKAN_DEBUG_CALLBACK + // Register your error logging function (defined at the top of the file) + //PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT = NULL; + //*(void **)& vkCreateDebugReportCallbackEXT = vkGetInstanceProcAddr( *outInstance, "vkCreateDebugReportCallbackEXT"); + //assert(vkCreateDebugReportCallbackEXT); + + VkDebugReportCallbackCreateInfoEXT debugReportCreateInfo = {}; + debugReportCreateInfo.sType = VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT; + debugReportCreateInfo.flags = VK_DEBUG_REPORT_ERROR_BIT_EXT; + debugReportCreateInfo.pfnCallback = funcDebugReportCallback;//&MyDebugReportCallback; + + // Setup error callback function notifications + dlg_warn("HERE1"); + VkResult result = + vkCreateDebugReportCallbackEXT ( *outInstance, + // Valid VkIstance handle + &debugReportCreateInfo, + // pointer to a valid vkCreateDebugReportCallbackEXT structure + NULL, + // If pointer is not NULL then allocator callback manager + &debugReportCallback_Error); + // pointer to a VkCreateDebugReportCallbackEXT handle + dlg_warn("HERE2"); + ERR_VULKAN_EXIT(result, "VkCreateDebugReportCallbackEXT(ERROR) failed " ); + + // Capture warning as well as errors + debugReportCreateInfo.flags = VK_DEBUG_REPORT_WARNING_BIT_EXT | VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT; + debugReportCreateInfo.pfnCallback = funcDebugReportCallback;//&MyDebugReportCallback; + + // Setup warning callback function notifications + result = + vkCreateDebugReportCallbackEXT ( *outInstance, + // Valid VkIstance handle + &debugReportCreateInfo, + // pointer to a valid vkCreateDebugReportCallbackEXT structure + NULL, + // If pointer is not NULL then allocator callback manager + &debugReportCallback_Warning); + // pointer to a VkCreateDebugReportCallbackEXT handle + + dlg_warn("HERE3"); + ERR_VULKAN_EXIT(result, "VkCreateDebugReportCallbackEXT(WARN) failed " ); + switch (result) { + case VK_SUCCESS: + break; + case VK_ERROR_OUT_OF_HOST_MEMORY: + ERR_EXIT("CreateDebugReportCallback Failure: out of host memory\n"); + break; + default: + ERR_EXIT("CreateDebugReportCallback Failure: unknown failure\n"); + break; + } + + // Debug utils + //PFN_VkDebugUtilsMessengerCreateInfoEXT VkDebugUtilsMessengerCreateInfoEXT = NULL; + //*(void **)& VkDebugUtilsMessengerCreateInfoEXT = vkGetInstanceProcAddr( *outInstance, "VkDebugUtilsMessengerCreateInfoEXT"); + //assert(VkDebugUtilsMessengerCreateInfoEXT); + /* + VkDebugUtilsMessengerCreateInfoEXT debugUtilsCreateInfo; + //debugUtilsCreateInfo = {}; + debugUtilsCreateInfo.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT; + debugUtilsCreateInfo.messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT; + debugUtilsCreateInfo.messageType = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT; + debugUtilsCreateInfo.pfnUserCallback = funcDebugUtilsMessenger; + + dlg_warn("test"); + + result = + vkCreateDebugUtilsMessengerEXT(*outInstance, &debugUtilsCreateInfo, NULL, &debugUtilsMessenger); + + dlg_warn(" result : %d",result); + ERR_VULKAN_EXIT(result, "failed to set up debug messenger!" ); + */ + + #endif //END Vulkan debug callback + + //ici.pNext = &debugUtilsMessenger; // (VkDebugUtilsMessengerCreateInfoEXT*) &debugUtilsMessenger; + ici.pNext = &debugReportCreateInfo; + + // vkCreateInstance verifies that the requested layers exists. If not, + // vkCreateInstance will return VK_ERROR_LAYER_NOT_PRESENT + result = + vkCreateInstance( &ici, //const VkInstanceCreateInfo* + // points to an instance of VkInstanceCreateInfo controlling creation + NULL, //const VkAllocationCallbacks* + // controls host memory allocation + outInstance ); // VkInstance* + // pointer to a VkInstance handle for the returning resulting instance + + //assert( *outInstance!=NULL); // This does not give much detail on failure reason + if (result == VK_SUCCESS) { dlg_info("Vulkan initialized successfully !"); } + else if (result == VK_ERROR_INCOMPATIBLE_DRIVER) { + dlg_fatal("Cannot find a compatible Vulkan installable client driver (ICD).\n\n" + "Please look at the Getting Started guide for additional information.\n" \ + "Failed to create vulkan instance."); + assert( VK_SUCCESS == result ); // if result != VK_SUCCESS then make application fail & exit + } else if (result == VK_ERROR_EXTENSION_NOT_PRESENT) { + dlg_fatal("Cannot find a specified extension library" \ + ".\nMake sure your layers path is set appropriately\n" \ + "Failed to create vulkan instance."); + assert( VK_SUCCESS == result ); // if result != VK_SUCCESS then make application fail & exit + }else{ //*outInstance == NULL + dlg_fatal("Vulkan failed to initialize \n" \ + "vkCreateInstance failed.\n\nDo you have a compatible Vulkan " \ + "installable client driver (ICD) installed?\nPlease look at " \ + "the Getting Started guide for additional information.\n" \ + "Failed to create vulkan instance."); + assert( VK_SUCCESS == result ); // if result != VK_SUCCESS then make application fail & exit + } + + + //Vulkan Instance created, now make VOLK load it + volkLoadInstance(*outInstance); + + // You need to define what type of window surface you'll be rendering into. + // To create a VkSurfaceKHR object for window, this is different for each operating system and depend on every computer + // Reason why we leave the work to GLFW. + result = glfwCreateWindowSurface( *outInstance, //VkInstance + // Instance to associate with the surface + windowHandle, // GLFWwindow* windowHandle + // Window handle + NULL, // const VkAllocationCallbacks* + // allocator used for host memory allocated for the surface object + outSurface); // VkSurfaceKHR* + // VkSurfaceKHR handle in which the created surface object is returned + + ERR_VULKAN_EXIT( result, "Could not create surface." ); + assert(outSurface!=NULL); + + } + //--//--//--// + +}// END SetupVulkanInstance(..) + diff --git a/3_PhysicalDevice.h b/3_PhysicalDevice.h new file mode 100644 index 0000000..98c74dc --- /dev/null +++ b/3_PhysicalDevice.h @@ -0,0 +1,130 @@ + +#pragma once // include guard + +//# ----------------------------------------------------- +// Step 3 - Initialize Vulkan +// +//________//________// START Variables and Functions before main function of this step +//________//________// END Variables and Functions before main function of this step + +void SetupPhysicalDevice(VkInstance instance, + VkPhysicalDevice* outPhysicalDevice, + VkDevice* outDevice) +{ + // Query how many devices are present in the system + uint32_t deviceCount = 0; + // How many devices are present in the system and that support/accessible to Vulkan instance + // The instance is the handle to a Vulkan instance you previously created with vkCreateInstance. + // The VkPhysicalDevice pointer can be either NULL or a pointer to an array of VkPhysicalDevice handles. + VkResult result = + vkEnumeratePhysicalDevices(instance, // VkInstance + // handle to a Vulkan instance previously created with vkCreateInstance + &deviceCount, // uint32_t* + // pointer to an integer related to the number of physical devices available or queried + NULL); // VkPhysicalDevice* + // either NULL or pointer to an array of VkPhysicalDevice handles + + ERR_VULKAN_EXIT( result, "Failed to query the number of physical devices present." ); + + // There has to be at least one device present + if(deviceCount == 0) { ERR_EXIT("Couldn't detect any device present with Vulkan support"); } + else { dlg_info("GPU device with vulkan support : %u",deviceCount); }; + + // Prepare physical devices array list + VkPhysicalDevice* physicalDevices = malloc( deviceCount * sizeof(VkPhysicalDevice) ); + dlg_info("VkPhysicalDevice number : %u",COUNT_ARRAY_ELEMS(physicalDevices)); + assert(COUNT_ARRAY_ELEMS(physicalDevices)>0); + + // Gets the VkPhysicalDevice handle of the first device + result = + vkEnumeratePhysicalDevices(instance, // VkInstance + // handle to a Vulkan instance previously created with vkCreateInstance + &deviceCount, // uint32_t* + // pointer to an integer related to the number of physical devices available or queried + &physicalDevices[0]); // VkPhysicalDevice* + // either NULL or a pointer to an array of VkPhysicalDevice handles + + ERR_VULKAN_EXIT(result, "Failed to enumerate physical devices present" ); + + // Use the first available device + *outPhysicalDevice = physicalDevices[0]; + + // Enumerate all physical devices and print out the details + for (uint32_t index = 0; index < deviceCount; ++index) + { + VkPhysicalDeviceProperties deviceProperties; + memset(&deviceProperties, 0, sizeof deviceProperties); + + //Gets the properties of a physical device + vkGetPhysicalDeviceProperties(physicalDevices[index], // physicalDevice + // handle to the physical device whose properties will be queried + &deviceProperties); // pProperties + // pointer to VkPhysicalDeviceProperties structure, that is filled with information + + dlg_info("Driver Version: %d", deviceProperties.driverVersion); + dlg_info("Device Name: %s", deviceProperties.deviceName); + dlg_info("Device Type: %d", deviceProperties.deviceType); + dlg_info("API Version: %d.%d.%d", + (deviceProperties.apiVersion>>22)&0x3FF, + (deviceProperties.apiVersion>>12)&0x3FF, + (deviceProperties.apiVersion&0xFFF) + ); + }// END Enumerate all physical devices + + // Fill up the physical device memory properties: + VkPhysicalDeviceMemoryProperties memoryProperties; + vkGetPhysicalDeviceMemoryProperties( *outPhysicalDevice, + // handle to the device query + &memoryProperties); + // pointer to VkPhysicalDeviceMemoryProperties structure returned with properties + // Here's where you initialize your queues + // You'll discuss queues next - however, you need to specify the queue + // details for the device creation info + VkDeviceQueueCreateInfo queueCreateInfo = {}; + queueCreateInfo.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO; + // Use the first queue family in the family list + queueCreateInfo.queueFamilyIndex = 0; + queueCreateInfo.queueCount = 1; + float queuePriorities[] = { 1.0f }; + queueCreateInfo.pQueuePriorities = queuePriorities; + + // Same extension you specified when initializing Vulkan + const char *deviceExtensions[] = { "VK_KHR_swapchain" }; + const char *layers[] = {}; // "VK_LAYER_NV_optimus" + + // + VkDeviceCreateInfo dci = {}; + dci.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO; + // Set queue info on your device + dci.queueCreateInfoCount = 1; + dci.pQueueCreateInfos = &queueCreateInfo; + dci.enabledExtensionCount = COUNT_ARRAY_ELEMS(deviceExtensions); + dci.ppEnabledExtensionNames = deviceExtensions; + dci.enabledLayerCount = COUNT_ARRAY_ELEMS(layers); + dci.ppEnabledLayerNames = layers; + + // + VkPhysicalDeviceFeatures features = {}; + features.shaderClipDistance = VK_TRUE; + dci.pEnabledFeatures = &features; + + // Ideally, you'd want to enumerate and find the best device, + // however for this example we use only the first device 'physicalDevices[0]', + // which you stored in the previous section + result = + vkCreateDevice(*outPhysicalDevice, // physicalDevice + // valid handles returned from vkEnumeratePhysicalDevices + &dci, // pCreateInfo + // pointer to a VkDeviceCreateInfo structure containing device data + NULL, // pAllocator + // optional control of host memory allocation + outDevice); // pDevice + // pointer to a handle in which the created VkDevice is returned + + ERR_VULKAN_EXIT( result, "Failed to create logical device !" ); + + // VOLK + //allows you to get quick gains without changing your code, but isn’t suitable for applications that want to use explicit multi-GPU + volkLoadDevice(*outDevice); + +}// END SetupPhysicalDevice(..) diff --git a/4_SwapChain.h b/4_SwapChain.h new file mode 100644 index 0000000..7a27743 --- /dev/null +++ b/4_SwapChain.h @@ -0,0 +1,141 @@ + +#pragma once // include guard + +//# ----------------------------------------------------- +// Step 4 - SetupSwapChain +// +//________//________// START Variables and Functions before main function of this step +//________//________// END Variables and Functions before main function of this step + +void SetupSwapChain(VkDevice device, + VkPhysicalDevice physicalDevice, + VkSurfaceKHR surface, + int* outWidth, + int* outHeight, + VkSwapchainKHR* outSwapChain, + VkImage** outPresentImages, + VkImageView** outPresentImageViews) +{ + // To display something you'll need to create a set of render buffers. + // These buffers and their properties are called Swap-Chain + //--//--//--// + { + // Create Swap-Chain + VkSurfaceCapabilitiesKHR surfaceCapabilities = {}; + // You'll query the basic capabilities of the surface in order to create a swapchain + vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, // physicalDevice + // physical device that will be associated with the swapchain to be created + surface, // surface + // surface that will be associated with the swapchain + &surfaceCapabilities); // pSurfaceCapabilities + // pointer to the VkSurfaceCapabilitiesKHR structure with retrieved data + VkExtent2D surfaceResolution = surfaceCapabilities.currentExtent; + *outWidth = surfaceResolution.width; + *outHeight = surfaceResolution.height; + + dlg_info("surface resolution width : %u", *outWidth); + dlg_info("surface resolution height : %u", *outHeight ); + + VkSwapchainCreateInfoKHR ssci = {}; + ssci.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR; + ssci.surface = surface; + // You'll use 2 for 'double' buffering + ssci.minImageCount = 2; + ssci.imageFormat = VK_FORMAT_B8G8R8A8_UNORM; + ssci.imageColorSpace = VK_COLORSPACE_SRGB_NONLINEAR_KHR; + ssci.imageExtent = surfaceResolution; + ssci.imageArrayLayers = 1; + ssci.imageUsage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; + ssci.imageSharingMode = VK_SHARING_MODE_EXCLUSIVE; + ssci.preTransform = 1;//VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR; + ssci.compositeAlpha = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR; + ssci.presentMode = VK_PRESENT_MODE_MAILBOX_KHR; + // If you want clipping outside the extents + ssci.clipped = true; + ssci.oldSwapchain = NULL; + + VkResult result = + vkCreateSwapchainKHR( device, // device + // VkDevice to associate the swapchain + &ssci, // pCreateInfo + // pointer to VkSwapchainCreateInfoKHR structure with swapchain creation parameters + NULL, // pAllocator + // optional allocator used for host memory + outSwapChain ); // pSwapchain + // resulting swapchain + + ERR_VULKAN_EXIT(result, "Failed to create swapchain." ); + }//END Create Swap-Chain + //--//--//--// + { + // Create your images 'double' buffering + uint32_t imageCount =0; + // You'll need to obtain the array of presentable images associated + // with the swapchain you created. First, you pass in 'NULL' to + // obtain the number of images (i.e., should be 2) + vkGetSwapchainImagesKHR( device, // device + //device associated with swapchain + *outSwapChain, // swapchain + //swapchain to query + &imageCount, // pSwapchainImageCount + // pointer to an integer related to the number of format pairs available + NULL ); //pSwapchainImages + // either NULL or a pointer to an array of VkSwapchainImageKHR structures + assert(imageCount == 2); // If image count not equal 2, abort the software + + // this should be 2 for double-buffering + *outPresentImages = malloc( imageCount * sizeof(VkImage) ); + + // Obtain the presentable images and link them to + // the images in the swapchain + VkResult result = + vkGetSwapchainImagesKHR( device, // device + // device associated with swapchain + *outSwapChain, // swapchain + // swapchain to query + &imageCount, // pSwapchainImageCount + // pointer to an integer related to the number of format pairs available + *outPresentImages); // pSwapchain + // either NULL or a pointer to an array of VkSwapchainImageKHR structures + ERR_VULKAN_EXIT( result, "Failed to create swap-chain images"); + } + //--//--//--// + { + // You have 2 for double buffering + *outPresentImageViews = malloc( 2 * sizeof(VkImageView) ); + for(uint32_t index = 0; index < 2; ++index ) + { + // Create VkImageViews for your swap-chain + // VkImages buffers + VkImageViewCreateInfo ivci = {}; + ivci.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO; + ivci.viewType = VK_IMAGE_VIEW_TYPE_2D; + ivci.format = VK_FORMAT_B8G8R8A8_UNORM; + ivci.components.r = VK_COMPONENT_SWIZZLE_R; + ivci.components.g = VK_COMPONENT_SWIZZLE_G; + ivci.components.b = VK_COMPONENT_SWIZZLE_B; + ivci.components.a = VK_COMPONENT_SWIZZLE_A; + ivci.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; + ivci.subresourceRange.baseMipLevel = 0; + ivci.subresourceRange.levelCount = 1; + ivci.subresourceRange.baseArrayLayer = 0; + ivci.subresourceRange.layerCount = 1; + ivci.image = (*outPresentImages)[index]; + + // Create an image view from an existing image + VkResult result = + vkCreateImageView( device, // device + // logical device that creates the image view + &ivci, // pCreateInfo + // pointer to instance of the VkImageViewCreateInfo structure containing parameters for the image view + NULL, // pAllocator + // optional controls host memory allocation + &(*outPresentImageViews[1]) ); + // pointer to VkImageView handle for returned image view object + ERR_VULKAN_EXIT( result, "Could not create ImageView."); + }//END for loop + + } + //--//--//--// + +}//END SetupSwapChain(..) diff --git a/5_RenderPass.h b/5_RenderPass.h new file mode 100644 index 0000000..8f28713 --- /dev/null +++ b/5_RenderPass.h @@ -0,0 +1,270 @@ + +#pragma once // include guard + +//# ----------------------------------------------------- +// Step 5 - SetupRenderPass +// +//________//________// START Variables and Functions before main function of this step +//________//________// END Variables and Functions before main function of this step + +void SetupRenderPass(VkDevice device, + VkPhysicalDevice physicalDevice, + int width, + int height, + VkImageView* presentImageViews, + VkRenderPass* outRenderPass, + VkFramebuffer** outFrameBuffers) +{ + // The render-pass defines the role of framebuffer resources + + + //Possibilities : + // (*) You can have more than one pass with each pass (subpass) defining which framebuffer resource to use. + // (*) The command-buffer in the next section can be used for several render-passes + // (*) You can also use a single command-buffer to draw a whole frames with the multiple passes contributing to techniques like + // shadow mapping and post-processing. Managing these process more efficiently + // + // Render-pass might seem like additional work, but for more complex scenes the render-pass gives you additional screen control. + // i.e. : post-processing and deferred rendering, mapping specific regions or order of processing to different threads/GPUs + + + // Below we sets a basic fullscreen render-pass. One display update with no sub-passes + + + // Frame buffer + // define your attachment points + #ifdef DEPTH_BUFFER + // Extension (Depth Buffer) + VkImage depthImage = NULL; + VkImageView depthImageView = NULL; + + { + // Create a depth image: + VkImageCreateInfo imageCreateInfo = {}; + imageCreateInfo.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO; + imageCreateInfo.imageType = VK_IMAGE_TYPE_2D; + imageCreateInfo.format = VK_FORMAT_D16_UNORM; + VkExtent3D ef = { width, height, 1 }; + imageCreateInfo.extent = ef; + imageCreateInfo.mipLevels = 1; + imageCreateInfo.arrayLevels = 1; + imageCreateInfo.samples = VK_SAMPLE_COUNT_1_BIT; + imageCreateInfo.tiling = VK_IMAGE_TILING_OPTIMAL; + imageCreateInfo.usage = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT; + imageCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE; + imageCreateInfo.queueFamilyIndexCount = 0; + imageCreateInfo.pQueueFamilyIndices = NULL; + imageCreateInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; + + // Create a new image object for your depth buffer + VkResult result = + vkCreateImage( device, // device + // logical device that creates the image + &imageCreateInfo, // pCreateInfo + // pointer to VkImageCreateInfo structure with parameters for the created image + NULL, // pAllocator + // optional control host memory allocation + &depthImage ); // pImage + // pointer to VkImage handle returned image object + ERR_VULKAN_EXIT(result, "Failed to create depth image."); + + VkMemoryRequirements memoryRequirements = {}; + vkGetImageMemoryRequirements( device, // device + // logical device that owns the image + depthImage, // image + // image to query + &memoryRequirements ); // pMemoryRequirements + // instance pointer to VkMemoryRequirements structure returned memory requirements + + // memoryRequirements contains memoryTypeBits member which is a bitmask + // each one of the bits is set for every supported memory type for the resource + // Bit i is set if and only if the memory type i in the VkPhysicalDeviceMemoryProperties structure for the physical device is supported for the resource. + + // Allocate memory for your depth buffer + VkMemoryAllocateInfo imageAllocateInfo = {}; + imageAllocateInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO; + imageAllocateInfo.allocationSize = memoryRequirements.size; + + // memoryTypeBits is a bitfield where if bit i is set, + // it means that the VkMemoryType i of the VkPhysicalDeviceMemoryProperties structure satisfies the memory requirements : + // read the device memory properties + VkPhysicalDeviceMemoryProperties memoryProperties; + vkGetPhysicalDeviceMemoryProperties( physicalDevice, + // handle to the device to query. + &memoryProperties ); + // returned pointer to instance of VkPhysicalDeviceMemoryProperties structure + + uint32_t memoryTypeBits = memoryRequirements.memoryTypeBits; + for( uint32_t index = 0; index < VK_MAX_MEMORY_TYPES; ++index ) + { + VkMemoryType memoryType = memoryProperties.memoryTypes[index]; + if( memoryTypeBits & 1 ) + { + if( ( memoryType.propertyFlags & VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT ) ) + { + // save index + imageAllocateInfo.memoryTypeIndex = index; + break; + } + } + memoryTypeBits = memoryTypeBits >> 1; + }// END FOR LOOP index + + VkDeviceMemory imageMemory = { 0 }; + result = vkAllocateMemory( device, + // logical device that owns the memory + &imageAllocateInfo, + // pointer to VkMemoryAllocateInfo structure describing parameters of the allocation + NULL, + // optional control host memory allocation + &imageMemory ); + // pointer to returned VkDeviceMemory handle with information about the allocated memory + + ERR_VULKAN_EXIT( result, "Failed to allocate device memory." ); + + result = vkBindImageMemory( device, + // logical device that owns the image and memory + depthImage, + // image to bind + imageMemory, 0 ); + // start offset of the region of memory which is to be bound to the image + + ERR_VULKAN_EXIT( result, "Failed to bind image memory." ); + + // create the depth image view: + VkImageAspectFlags aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT; + VkImageViewCreateInfo imageViewCreateInfo = {}; + imageViewCreateInfo.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO; + imageViewCreateInfo.image = depthImage; + imageViewCreateInfo.viewType = VK_IMAGE_VIEW_TYPE_2D; + imageViewCreateInfo.format = imageViewCreateInfo.format; + VkComponentMapping g = { VK_COMPONENT_SWIZZLE_IDENTITY, + VK_COMPONENT_SWIZZLE_IDENTITY, + VK_COMPONENT_SWIZZLE_IDENTITY, + VK_COMPONENT_SWIZZLE_IDENTITY + }; + imageViewCreateInfo.components = g; + imageViewCreateInfo.subresourceRange.aspectMask = aspectMask; + imageViewCreateInfo.subresourceRange.baseMipLevel = 0; + imageViewCreateInfo.subresourceRange.levelCount = 1; + imageViewCreateInfo.subresourceRange.baseArrayLayer = 0; + imageViewCreateInfo.subresourceRange.layerCount = 1; + result = + vkCreateImageView( device, + // logical device that creates the image view + &imageViewCreateInfo, + // pointer to instance of the VkImageViewCreateInfo structure containing parameters for created image view + NULL, + // optional control host memory allocation + &depthImageView ); + // pointer to returned VkImageView handle object + + ERR_VULKAN_EXIT( result, "Failed to create image view." ); + } + #endif // DEPTH_BUFFER + + // 0 - color screen buffer + VkAttachmentDescription pass[2] = {}; + pass[0].format = VK_FORMAT_B8G8R8A8_UNORM; + pass[0].samples = VK_SAMPLE_COUNT_1_BIT; + pass[0].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; + pass[0].storeOp = VK_ATTACHMENT_STORE_OP_STORE; + pass[0].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; + pass[0].stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; + pass[0].initialLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; + pass[0].finalLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; + + VkAttachmentReference car = {}; + car.attachment = 0; + car.layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; + + // 1 - depth buffer + pass[1].format = VK_FORMAT_D16_UNORM; + pass[1].samples = VK_SAMPLE_COUNT_1_BIT; + pass[1].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR; + pass[1].storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; + pass[1].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE; + pass[1].stencilStoreOp = VK_ATTACHMENT_STORE_OP_DONT_CARE; + pass[1].initialLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; + pass[1].finalLayout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; + + // create the one main subpass of your renderpass: + VkSubpassDescription subpass = {}; + subpass.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS; + subpass.colorAttachmentCount = 1; + subpass.pColorAttachments = &car; + subpass.pDepthStencilAttachment = NULL; + + #ifdef DEPTH_BUFFER + VkAttachmentReference dar = {}; + dar.attachment = 1; + dar.layout = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL; + subpass.pDepthStencilAttachment = &dar; + #endif + + // create your main renderpass + VkRenderPassCreateInfo rpci = {}; + rpci.sType = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO; + rpci.attachmentCount = 1; // color + #ifdef DEPTH_BUFFER + rpci.attachmentCount = 2; // color and depth + #endif + rpci.pAttachments = pass; + rpci.subpassCount = 1; + rpci.pSubpasses = &subpass; + + VkResult result = + vkCreateRenderPass ( device, + // logical device that creates the render pass + &rpci, + // pointer to VkRenderPassCreateInfo structure describing parameters of the render pass + NULL, + // optional host memory allocation control + outRenderPass ); + // pointer VkRenderPass handle in which the resulting render pass object is returned + + ERR_VULKAN_EXIT( result, "Failed to create renderpass" ); + + #ifdef DEPTH_BUFFER + VkImageView frameBufferAttachments[2] = {0}; + #else + VkImageView frameBufferAttachments[1] = {0}; + #endif + // create your frame buffers: + VkFramebufferCreateInfo fbci = {}; + fbci.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO; + fbci.renderPass = *outRenderPass; + // must be equal to the attachment count on render pass + fbci.attachmentCount = 1; + #ifdef DEPTH_BUFFER + fbci.attachmentCount = 2; + #endif + fbci.pAttachments = frameBufferAttachments; + fbci.width = width; + fbci.height = height; + fbci.layers = 1; + + // Create a framebuffer per swap-chain imageView: + *outFrameBuffers = malloc( 2 * sizeof(VkFramebuffer) ); + for( uint32_t index = 0; index < 2; ++index ) + { + frameBufferAttachments[0] = presentImageViews[index]; + #ifdef DEPTH_BUFFER + frameBufferAttachments[1] = depthImageView; + #endif + // Create a new framebuffer object + result = + vkCreateFramebuffer( device, // device + // logical device that creates the framebuffer + &fbci, // pCreateInfo + // pointer to VkFramebufferCreateInfo structure describing framebuffer creation + NULL, // pAllocator + // optional control of host memory allocation + &(*outFrameBuffers)[index] // pFramebuffer + // pointer to returned VkFramebuffer handle for the framebuffer object + ); + + ERR_VULKAN_EXIT( result, "Failed to create framebuffer." ); + }//END FOR LOOP index +}//END SetupRenderPass(..) + diff --git a/6_CommandBuffer.h b/6_CommandBuffer.h new file mode 100644 index 0000000..d442ccf --- /dev/null +++ b/6_CommandBuffer.h @@ -0,0 +1,64 @@ + +#pragma once // include guard + +//# ----------------------------------------------------- +// Step 6 - SetupCommandBuffer +// +//________//________// START Variables and Functions before main function of this step +//________//________// END Variables and Functions before main function of this step + +void SetupCommandBuffer(VkDevice device, + VkPhysicalDevice physicalDevice, + VkCommandBuffer* outCommandBuffer) +{ + // Give your device some commands (orders) + { + // You can now get the device queue you will be submitting work to: + VkQueue presentQueue = NULL; + vkGetDeviceQueue( device, + // logical device that owns the queue + 0, + // index of the queue family to which the queue belongs + 0, + // index within this queue family of the queue to retrieve + &presentQueue ); + // pointer to a VkQueue object filled with the handle for the requested queue + + // Create your command buffers: + VkCommandPoolCreateInfo cpci = {}; + cpci.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO; + cpci.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT; + cpci.queueFamilyIndex = 0; + + VkCommandPool commandPool; + VkResult result = + vkCreateCommandPool( device, + // logical device that creates the command pool + &cpci, + // contains information used to create the command pool + NULL, + // controls host memory allocation (if needed) + &commandPool ); + // pointer to VkCommandPool handle in which the created pool is returned + + ERR_VULKAN_EXIT( result, "Failed to create command pool." ); + + VkCommandBufferAllocateInfo cbai = {}; + cbai.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO; + cbai.commandPool = commandPool; + cbai.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY; + cbai.commandBufferCount = 1; + + // Allocate command buffers from the command pool you just created + result = + vkAllocateCommandBuffers( device, // device + // logical device that owns the command pool + &cbai, // pAllocateInfo + // pointer to VkCommandBufferAllocateInfo structure describing allocation + outCommandBuffer ); + // pointer to an array of returned VkCommandBuffer handles + + ERR_VULKAN_EXIT( result, "Failed to allocate draw command-buffer." ); + + } +}//END SetupCommandBuffer(..) diff --git a/7_VertexBuffer.h b/7_VertexBuffer.h new file mode 100644 index 0000000..6f58aec --- /dev/null +++ b/7_VertexBuffer.h @@ -0,0 +1,193 @@ + +#pragma once // include guard + +//# ----------------------------------------------------- +// Step 7 - SetupVertexBuffer +// +//________//________// START Variables and Functions before main function of this step +//________//________// END Variables and Functions before main function of this step + +void SetupVertexBuffer(VkDevice device, + VkPhysicalDevice physicalDevice, + int* outVertexSize, + int* outNumberOfTriangles, + VkBuffer* outVertexInputBuffer) +{ + // A cube has 6 faces with 2 triangles each, so this makes 6*2=12 triangles, and 12*3 vertices + static const float verticesForCube[] = + { // see figure 6.9 for details + -1.0f,-1.0f,-1.0f, // triangle 1 : begin + -1.0f,-1.0, 1.0f, + -1.0f, 1.0f, 1.0f, // triangle 1 : end + 1.0f, 1.0f,-1.0f, // triangle 2 : begin + -1.0f,-1.0f,-1.0f, + -1.0f, 1.0f,-1.0f, // triangle 2 : end + 1.0f,-1.0f, 1.0f, + -1.0f,-1.0f,-1.0f, + 1.0f,-1.0f,-1.0f, + 1.0f, 1.0f,-1.0f, + 1.0f,-1.0f,-1.0f, + -1.0f,-1.0f,-1.0f, + -1.0f,-1.0f,-1.0f, + -1.0f, 1.0f, 1.0f, + -1.0f, 1.0f,-1.0f, + 1.0f,-1.0f, 1.0f, + -1.0f,-1.0f, 1.0f, + -1.0f,-1.0f,-1.0f, + -1.0f, 1.0f, 1.0f, + -1.0f,-1.0f, 1.0f, + 1.0f,-1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, + 1.0f,-1.0f,-1.0f, + 1.0f, 1.0f,-1.0f, + 1.0f,-1.0f,-1.0f, + 1.0f, 1.0f, 1.0f, + 1.0f,-1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, + 1.0f, 1.0f,-1.0f, + -1.0f, 1.0f,-1.0f, + 1.0f, 1.0f, 1.0f, + -1.0f, 1.0f,-1.0f, + -1.0f, 1.0f, 1.0f, + 1.0f, 1.0f, 1.0f, + -1.0f, 1.0f, 1.0f, + 1.0f,-1.0f, 1.0f + }; + + // Vertex info + struct vertex + { + float x, y, z, w; // position + float r, g, b; // color + }; + + *outVertexSize = sizeof(struct vertex); + + { + const int numberOfVertices = sizeof( verticesForCube ) / (sizeof( float ) * 3); + *outNumberOfTriangles = numberOfVertices / 3; + + // create your vertex buffer: + VkBufferCreateInfo vertexInputBufferInfo = {}; + vertexInputBufferInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO; + // size in bytes of your data + // a single triangle requires 3 vertices + vertexInputBufferInfo.size = sizeof(struct vertex) * numberOfVertices; + vertexInputBufferInfo.usage = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT; + vertexInputBufferInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE; + vertexInputBufferInfo.queueFamilyIndexCount = 0; + vertexInputBufferInfo.pQueueFamilyIndices = NULL; + + VkResult result = + vkCreateBuffer( device, + // logical device that creates the buffer object + &vertexInputBufferInfo, + // pointer VkBufferCreateInfo structure containing parameters for the buffer creation + NULL, + // optional control host memory allocation + outVertexInputBuffer ); + // pointer to returned VkBuffer handle object + + ERR_VULKAN_EXIT( result, "Failed to create vertex input buffer." ); + + // allocate memory for buffers: + VkMemoryRequirements vertexBufferMemoryRequirements = {}; + vkGetBufferMemoryRequirements( device, + // logical device that owns the buffer + *outVertexInputBuffer, + // buffer to query + &vertexBufferMemoryRequirements ); + // pointer to VkMemoryRequirements structure with returned memory requirements + + VkMemoryAllocateInfo bufferAllocateInfo = {}; + bufferAllocateInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO; + bufferAllocateInfo.pNext = NULL; + bufferAllocateInfo.allocationSize = vertexBufferMemoryRequirements.size; + + // read the device memory properties + VkPhysicalDeviceMemoryProperties memoryProperties; + vkGetPhysicalDeviceMemoryProperties( physicalDevice, + // handle to the device to query + &memoryProperties ); + // pointer to returned VkPhysicalDeviceMemoryProperties structure + + for (uint32_t index=0; index < VK_MAX_MEMORY_TYPES; ++index ) + { + VkMemoryType memoryType = memoryProperties.memoryTypes[index]; + // is this the memory type you are looking for ? + if ( (memoryType.propertyFlags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) ) + { + // save location + bufferAllocateInfo.memoryTypeIndex = index; + break; + } + }// END for loop index + + VkDeviceMemory vertexBufferMemory; + result = + vkAllocateMemory( device, + // logical device that owns the memory + &bufferAllocateInfo, + // pointer VkMemoryAllocateInfo strutcure describing allocation parameters + NULL, + // optional control host memory allocation + &vertexBufferMemory ); + // pointer to returned VkDeviceMemory handle + + ERR_VULKAN_EXIT( result, "Failed to allocate buffer memory." ); + + // set buffer content: + void *mapped = NULL; + + result = + vkMapMemory( device, + // logical device that owns the memory + vertexBufferMemory, + // VkDeviceMemory object to be mapped + 0, + // zero-based byte offset from the beginning of the memory object + VK_WHOLE_SIZE, + // size of the memory range to map (or VK_WHOLE_SIZE to map the whole allocation) + 0, + // reserved for future use + &mapped ); + // pointer in which is returned a host-accessible pointer to the beginning of the mapped range + + ERR_VULKAN_EXIT( result, "Failed to map buffer memory." ); + + struct vertex *trianglevertices = (struct vertex *) mapped; + + for (int index=0; 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

E1UQ7?0#>Cq8+Xg;6lT- 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 Uan@c@4irdmeBV00-GA%<2jsKmCjbBd literal 0 HcmV?d00001 diff --git a/frag.spv b/frag.spv new file mode 100644 index 0000000000000000000000000000000000000000..8de5917b089b7d4c226b5e1f0f1831df44d8f6a0 GIT binary patch literal 380 zcmYjM%?g5G5S%oBvVVfQh0$F)R0L6%ATQo}0wD;Y6s+E;hwKtG^I6dc>+a0X?yR;o z^?(`z_-LbgeOP3GCR~%_R!u8=*8^c&IZgE@_sl(O@(gJ?g~MfR)Xy zz=J~$*?+x5AI%i^+rCUsyW(7wghr=5Szb{wr=%OJ$tSG-7Z2zlkBM=EsfVmxav@_x zy>1bff5@-TtiKVz{$P2CQ$Jwl$-lm^JjE?}q5QNk=1i1i8B7qb~P7`W(oPhg8xdIip;mrqR%L*k0 zypd*~cV?c~euc*)B585h%tdA*Qo|MHRhOx0UVUO05vhPl@6kTZm+Nk~pH!X?D7TUq z>73*Ew{FvWA51#Gz2r7*VPys4H1*pKkQ~*6& zt-f;PN(HC@75G*_zYiI%SOR-T`*dKj5df&a@n*QTSpt|f04#yMBOTy;@Qe26-TaAfC`Kixb*Ez`~L&{%=|wlaYqHHz@Jhe zRn4+l;FY4cPF_xXZH7O>zYMijj>TFr&{{Dz+KR6Sby=^GFM++I(GfQ~kUs*d3yli= Gh610p{3^o$ literal 0 HcmV?d00001 diff --git a/libs/dlg/.DS_Store b/libs/dlg/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0](include/dlg/dlg.h) (around 230 loc): Everything you need, no dependencies +- [](include/dlg/output.h) (around 150 loc): Utilities for implementing custom output handlers +- [](include/dlg/dlg.hpp) (around 330 loc): Modern C++11 utilities, typesafe formatter + +You can either build dlg.c as library or include it directly into your project +(nothing else needed). +The name stands for some kind of super clever word mixture of the words 'debug' +and 'log' (think of something yourself, duh). Uses meson as build system, but +you don't really need a build system for this after all. + +## Show me something fancy already + +Besides a simple look into the [headers](include/dlg), have a look into the +__[synopsis](docs/api.md)__ and additional documentation for the latest release. + +Thousands words, explanations and pictures don't say as much as a single __[code example](docs/examples/example.cpp)__ though. +Here a simple preview of its core functionality (there is more fancy stuff, look into the linked example): + +```c +dlg_warn("This is a warning. If on a console, it will be printed yellow"); +dlg_error("Errors are red. Colors work even on windows consoles"); +dlg_assertm(1 == 2, "Well, this assertion will probably %s...", "fail"); +dlg_infot(("tag1", "tag2"), "We can tag our stuff. Can be used to filter/redirect messages"); +dlg_asserttm(("tag3"), 3 == 2, "The same goes for asserts"); +dlg_info("Another feature: Utf-8 printing works automatically, even for שׁǐʼnďốẅś consoles"); +dlg_fatal("This one is printed bold. For more information, read the linked example above already"); +``` + +Nontheless a rather beautiful picture of dlg in action for you. It is probably rather nonsensical without +having read the example though: + +![Here should a beautiful picture of dlg in action be erected. What a shame!](docs/examples/example.png) + +Note though that dlg can be used without weird dummy messages as well. +Building the sample can be enabled by passing the 'sample' argument as true to meson (meson -Dsample=true). + +__Contributions of all kind are welcome, this is nothing too serious though__ diff --git a/libs/dlg/appveyor.yml b/libs/dlg/appveyor.yml new file mode 100644 index 0000000..10a7c3a --- /dev/null +++ b/libs/dlg/appveyor.yml @@ -0,0 +1,37 @@ +image: Visual Studio 2019 + +environment: + matrix: + - arch: x64 + compiler: mingw + - arch: x86 + compiler: msvc2019 + - arch: x64 + compiler: msvc2019 + +platform: + - x64 + +install: + # install mingw 7.1 + - cmd: if %compiler%==mingw (appveyor-retry appveyor DownloadFile http://downloads.sourceforge.net/mingw-w64/x86_64-7.1.0-release-posix-seh-rt_v5-rev0.7z) + - cmd: if %compiler%==mingw (7z x x86_64-7.1.0-release-posix-seh-rt_v5-rev0.7z -oc:\mingw > nul) + # init msvc + - cmd: if %compiler%==msvc2019 ( call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" %arch% ) + # install ninja + - appveyor-retry appveyor DownloadFile "https://github.com/ninja-build/ninja/releases/download/v1.10.0/ninja-win.zip" -FileName ninja.zip + - 7z x ninja.zip -oC:\ninja > nul + # update the path and show information; TODO: 64 bit python? + - set PATH=C:\ninja;C:\mingw\mingw64\bin;C:\Python36\scripts;C:Python36;%PATH% + - ninja --version + # install meson + - pip3 install meson + +build_script: + # TODO: possible to automate non-ninja backend? + - echo Building on %arch% with %compiler% + - meson --backend=ninja --default-library=both -Dtests=true -Dsample=true build + - ninja -C build + +test_script: + - meson test -C build --print-errorlogs diff --git a/libs/dlg/docs/api.md b/libs/dlg/docs/api.md new file mode 100644 index 0000000..9cb6ddb --- /dev/null +++ b/libs/dlg/docs/api.md @@ -0,0 +1,395 @@ +Up-to-date api +============== + +# Synopsis of dlg.h + +## Config macros with default and semantics: + +```c +// Define this macro to make all dlg macros have no effect at all +// #define DLG_DISABLE + +// the log/assertion levels below which logs/assertions are ignored +#define DLG_LOG_LEVEL dlg_level_trace +#define DLG_ASSERT_LEVEL dlg_level_trace + +// the assert level of dlg_assert +#define DLG_DEFAULT_ASSERT dlg_level_error + +// evaluated to the 'file' member in dlg_origin +#define DLG_FILE dlg__strip_root_path(__FILE__, DLG_BASE_PATH) + +// the base path stripped from __FILE__. If you don't override DLG_FILE set this to +// the project root to make 'main.c' from '/some/bullshit/main.c' +#define DLG_BASE_PATH "" + +// Default tags applied to all logs/assertions (in the defining file). +// Must be in format ```#define DLG_DEFAULT_TAGS "tag1", "tag2"``` +// or just nothing (as defaulted here) +#define DLG_DEFAULT_TAGS + +// The function used for formatting. Can have any signature, but must be callable with +// the arguments the log/assertions macros are called with. Must return a const char* +// that will not be freed by dlg, the formatting function must keep track of it. +// The formatting function might use dlg_thread_buffer or a custom owned buffer. +// The returned const char* has to be valid until the dlg log/assertion ends. +// Usually a c function with ... (i.e. using va_list) or a variadic c++ template do +// allow formatting. +#define DLG_FMT_FUNC +``` + +## Core macros: + +```c +// Tagged/Untagged logging with variable level +// Tags must always be in the format `("tag1", "tag2")` (including brackets) +#define dlg_log(level, ...) +#define dlg_logt(level, tags, ...) + +// Dynamic level assert macros in various versions for additional arguments +#define dlg_assertl(level, expr) // assert without tags/message +#define dlg_assertlt(level, tags, expr) // assert with tags +#define dlg_assertlm(level, expr, ...) // assert with message +#define dlg_assertltm(level, tags, expr, ...) // assert with tags & message + +// Static leveled logging +#define dlg_trace(...) +#define dlg_debug(...) +#define dlg_info(...) +#define dlg_warn(...) +#define dlg_error(...) +#define dlg_fatal(...) + +// Tagged leveled logging +#define dlg_tracet(tags, ...) +#define dlg_debugt(tags, ...) +#define dlg_infot(tags, ...) +#define dlg_warnt(tags, ...) +#define dlg_errort(tags, ...) +#define dlg_fatalt(tags, ...) + +// Assert macros useing DLG_DEFAULT_ASSERT as level +#define dlg_assert(expr) +#define dlg_assertt(tags, expr) +#define dlg_assertm(expr, ...) +#define dlg_asserttm(tags, expr, ...) +``` + +## Other + +The tag order in which they are stored in origin.tags (all of them preserved in order): + +- DLG_DEFAULT_TAGS +- current tags set via dlg_add_tag +- tags used in the specific call + +```c +// Represents the importance of a log/assertion call. +enum dlg_level { + dlg_level_trace = 0, // temporary used debug, e.g. to check if control reaches function + dlg_level_debug, // general debugging, prints e.g. all major events + dlg_level_info, // general useful information + dlg_level_warn, // warning, something went wrong but might have no (really bad) side effect + dlg_level_error, // something really went wrong; expect serious issues + dlg_level_fatal // critical error; application is likely to crash/exit +}; + +// Holds various information associated with a log/assertion call. +// Forwarded to the output handler. +struct dlg_origin { + const char* file; + unsigned int line; + const char* func; + enum dlg_level level; + const char** tags; // null-terminated + const char* expr; // assertion expression, otherwise null +}; + +// Type of the output handler, see dlg_set_handler. +typedef void(*dlg_handler)(const struct dlg_origin* origin, const char* string, void* data); + +// Sets the handler that is responsible for formatting and outputting log calls. +// This function is not thread safe and the handler is set globally. +// The handler itself must not change dlg tags or call a dlg macro. +// The handler can also be used for various other things such as dealing +// with failed assertions or filtering calls based on the passed tags. +// The default handler is dlg_default_output (see its doc for more info). +// If using c++ make sure the registered handler cannot throw e.g. by +// wrapping everything into a try-catch blog. +void dlg_set_handler(dlg_handler handler, void* data); + +// Returns the currently active dlg handler and sets `data` to +// its user data pointer. `data` must not be NULL. +// Useful to create handler chains. +// This function is not threadsafe, i.e. retrieving the handler while +// changing it from another thread is unsafe. +// See `dlg_set_handler`. +dlg_handler dlg_get_handler(void** data); + +// The default output handler. Pass a valid FILE* as stream or NULL to use stderr/stdout. +// Simply calls dlg_generic_output from dlg/output.h with the file_line feature enabled, +// the style feature enabled if the stream is a console (and if on windows ansi mode could +// be set) and dlg_default_output_styles as styles. +// It also flushes the stream used. +void dlg_default_output(const struct dlg_origin* origin, const char* string, void* stream); + +// Adds the given tag associated with the given function to the thread specific list. +// If func is not NULL the tag will only applied to calls from the same function. +// Remove the tag again calling dlg_remove_tag (with exactly the same pointers!). +// Does not check if the tag is already present. +void dlg_add_tag(const char* tag, const char* func); + +// Removes a tag added with dlg_add_tag (has no effect for tags no present). +// The pointers must be exactly the same pointers that were supplied to dlg_add_tag, +// this function will not check using strcmp. When the same tag/func combination +// is added multiple times, this function remove exactly one candidate, it is +// undefined which. Returns whether a tag was found (and removed). +bool dlg_remove_tag(const char* tag, const char* func); + +// Returns the thread-specific buffer and its size for dlg. +// The buffer should only be used by formatting functions. +// The buffer can be reallocated and the size changed, just make sure +// to update both values correctly. +char** dlg_thread_buffer(size_t** size); +``` + +# Synopsis of output.h + + +```c +// Text style +enum dlg_text_style { + dlg_text_style_reset = 0, + dlg_text_style_bold = 1, + dlg_text_style_dim = 2, + dlg_text_style_italic = 3, + dlg_text_style_underline = 4, + dlg_text_style_blink = 5, + dlg_text_style_rblink = 6, + dlg_text_style_reversed = 7, + dlg_text_style_conceal = 8, + dlg_text_style_crossed = 9, + dlg_text_style_none, +}; + +// Text color +enum dlg_color { + dlg_color_black = 0, + dlg_color_red, + dlg_color_green, + dlg_color_yellow, + dlg_color_blue, + dlg_color_magenta, + dlg_color_cyan, + dlg_color_gray, + dlg_color_reset = 9, + + dlg_color_black2 = 60, + dlg_color_red2, + dlg_color_green2, + dlg_color_yellow2, + dlg_color_blue2, + dlg_color_magenta2, + dlg_color_cyan2, + dlg_color_gray2, + + dlg_color_none = 69, +}; + +struct dlg_style { + enum dlg_text_style style; + enum dlg_color fg; + enum dlg_color bg; +}; + +// Like fprintf but fixes utf-8 output to console on windows. +// On non-windows sytems just uses the corresponding standard library +// functions. On windows, if dlg was compiled with the win_console option, +// will first try to output it in a way that allows the default console +// to display utf-8. If that fails, will fall back to the standard +// library functions. +int dlg_fprintf(FILE* stream, const char* format, ...); +int dlg_vfprintf(FILE* stream, const char* format, va_list list); + +// Like dlg_printf, but also applies the given style to this output. +// The style will always be applied (using escape sequences), independent of the given stream. +// On windows escape sequences don't work out of the box, see dlg_win_init_ansi(). +int dlg_styled_fprintf(FILE* stream, const struct dlg_style style, + const char* format, ...); + +// Features to output from the generic output handler. +// Some features might have only an effect in the specializations. +enum dlg_output_feature { + dlg_output_tags = 1, // output tags list + dlg_output_time = 2, // output time of log call (hour:minute:second) + dlg_output_style = 4, // whether to use the supplied styles + dlg_output_func = 8, // output function + dlg_output_file_line = 16, // output file:line, + dlg_output_newline = 32, // output a newline at the end + dlg_output_threadsafe = 64, // locks stream before printing + dlg_output_time_msecs = 128 // output micro seconds (ms on windows) +}; + +// The default level-dependent output styles. The array values represent the styles +// to be used for the associated level (i.e. [0] for trace level). +const struct dlg_style dlg_default_output_styles[6]; + +// Generic output function. Used by the default output handler and might be useful +// for custom output handlers (that don't want to manually format the output). +// Will call the given output func with the given data (and format + args to print) +// for everything it has to print in printf format. +// See also the *_stream and *_buf specializations for common usage. +// The given output function must not be NULL. +typedef void(*dlg_generic_output_handler)(void* data, const char* format, ...); +void dlg_generic_output(dlg_generic_output_handler output, void* data, + unsigned int features, const struct dlg_origin* origin, const char* string, + const struct dlg_style styles[6]); + +// Generic output function. Used by the default output handler and might be useful +// for custom output handlers (that don't want to manually format the output). +// If stream is NULL uses stdout. +// Automatically uses dlg_fprintf to assure correct utf-8 even on windows consoles. +// Locks the stream (i.e. assures threadsafe access) when the associated feature +// is passed (note that stdout/stderr might still mix from multiple threads). +void dlg_generic_output_stream(FILE* stream, unsigned int features, + const struct dlg_origin* origin, const char* string, + const struct dlg_style styles[6]); + +// Generic output function (see dlg_generic_output) that uses a buffer instead of +// a stream. buf must at least point to *size bytes. Will set *size to the number +// of bytes written (capped to the given size), if buf == NULL will set *size +// to the needed size. The size parameter must not be NULL. +void dlg_generic_output_buf(char* buf, size_t* size, unsigned int features, + const struct dlg_origin* origin, const char* string, + const struct dlg_style styles[6]); + +// Returns if the given stream is a tty. Useful for custom output handlers +// e.g. to determine whether to use color. +// NOTE: Due to windows limitations currently returns false for wsl ttys. +bool dlg_is_tty(FILE* stream); + +// Returns the null-terminated escape sequence for the given style into buf. +// Undefined behvaiour if any member of style has a value outside its enum range (will +// probably result in a buffer overflow or garbage being printed). +// If all member of style are 'none' will simply nullterminate the first buf char. +void dlg_escape_sequence(const struct dlg_style style, char buf[12]); + +// The reset style escape sequence. +const char* dlg_reset_sequence; + +// Just returns true without other effect on non-windows systems or if dlg +// was compiled without the win_console option. +// On windows tries to set the console mode to ansi to make escape sequences work. +// This works only on newer windows 10 versions. Returns false on error. +// Only the first call to it will have an effect, following calls just return the result. +// The function is threadsafe. Automatically called by the default output handler. +// This will only be able to set the mode for the stdout and stderr consoles, so +// other streams to consoles will still not work. +bool dlg_win_init_ansi(void); +``` + +# Synopsis of dlg.hpp + +```cpp +// By default this header automatically uses a different, typesafe formatting +// function. Make sure to never include dlg.h in your translation unit before +// including dlg.hpp to make this work. +// The new formatting function works like a type-safe version of printf, see dlg::format. +// It can also be called with only an object (e.g. dlg_info(42)) which will +// then simply output the object. +#ifndef DLG_FMT_FUNC + #define DLG_FMT_FUNC +#endif + +// The default string to replace by the dlg::*format functions. +// Used as default by tlformat (set as new DLG_FMT_FUNC) or dlg::format. +// If a custom replace string is required in certain situations without +// overriding this macro, use dlg::rformat or dlg::gformat. +#ifndef DLG_FORMAT_DEFAULT_REPLACE + #define DLG_FORMAT_DEFAULT_REPLACE "{}" +#endif + +namespace dlg { + +// Sets dlg tags on its construction and removes them on its destruction. +// Instead of explicitly constructing an object, just use the dlg_tags and +// dlg_tags_global macros which will construct one in the current scope. +// Just forwards the arguments on construction to dlg_add_tag, so if func +// is nullptr the tags will be applied even to called functions from the current +// scope, otherwise only to calls coming directly from the current function. +class TagsGuard { +public: + TagsGuard(const char** tags, const char* func); + ~TagsGuard(); + +protected: + const char** tags_; + const char* func_; +}; + +// Constructs a dlg::TagsGuard in the current scope, passing correctly the +// current function, i.e. only dlg calls made from other functions +// that are called in the current scope will not use the given tags. +// Expects the tags to be set as parameters like this: +// ```dlg_tags("tag1", "tag2")```. +#define dlg_tags(...) + +// Constructs a dlg::TagsGuard in the current scope, passing nullptr as func. +// This means that even dlg calls made from other functions called in the current +// scope will use those tags. +// Expects the tags to be set as parameters like this: +// ```dlg_tags_global("tag1", "tag2")```. +#define dlg_tags_global(...) + +// Executes the given block only if dlg checking is enabled +#define dlg_check(code) + +// Executes the given blocks with the given tags only if dlg checking is enabled +// The tags must have the default `("tag1", "tag2")` format. +#define dlg_checkt(tags, code) + +/// Alternative output handler that allows to e.g. set lambdas or member functions. +using Handler = std::function; + +// Allows to set a std::function as dlg handler. +// The handler should not throw, all exceptions (and non-exceptions) are caught +// in a wrapper since they must not be passed through dlg (since it's c and dlg +// might be called from c code). +void set_handler(Handler handler); + +/// Generic version of dlg::format, allows to set the special string sequence +/// to be replaced with arguments instead of using DLG_FORMAT_DEFAULT_REPLACE. +/// Simply replaces all occurrences of 'replace' in 'fmt' with the given +/// arguments (as printed using operator<< with an ostream) in order and +/// prints everything to the given ostream. +/// Throws std::invalid_argument if there are too few or too many arguments. +/// If you want to print the replace string without being replaced, wrap +/// it into backslashes (\\). If you want to print your own types, simply +/// overload operator<< for ostream correctly. The replace string itself +/// must not be a backslash character. +/// - gformat("%", "number: '%', string: '%'", 42, "aye"); -> "number: '42', string: 'aye'" +/// - gformat("{}", "{} replaced: \\{}\\", "not"); -> "not replaced: {}" +/// - gformat("@", "@ @", 1); -> std::invalid_argument, too few arguments +/// - gformat("#", "#", 1, 2); -> std::invalid_argument, too many arguments +/// - gformat("$", "$ $", std::setw(5), 2); -> " 2" +template +void gformat(std::ostream& os, const char* replace, const char* fmt, Args&&... args); + +/// Simply calls gformat with a local stringstream and returns the stringstreams +/// contents. +template +std::string rformat(const char* replace, const char* fmt, Args&&... args); + +/// Simply calls rformat with DLG_FORMAT_DEFAULT_REPLACE (defaulted to '{}') as +/// replace string. +template +std::string format(const char* fmt, Args&&... args); + +/// Specialization of dlg_generic_output that returns a std::string. +std::string generic_output(unsigned int features, + const struct dlg_origin& origin, const char* string, + const struct dlg_style styles[6] = dlg_default_output_styles); + +} // namespace dlg +``` + diff --git a/libs/dlg/docs/changelog.md b/libs/dlg/docs/changelog.md new file mode 100644 index 0000000..dbe9a48 --- /dev/null +++ b/libs/dlg/docs/changelog.md @@ -0,0 +1,31 @@ +2019-12-07 + - Add dlg_get_handler to allow handler chaining for debugging + [api addition] + - dlg.h previously required DLG_DISABLE to be defined to 1, this + was already documented differently in api.md and examples. + Now it's enough if DLG_DISABLE is defined at all + [breaking change] + - rework dlg__strip_root_path to actually check for prefix. + If the base path isn't a prefix of the file, we won't strip it. + - change naming of header guard to not start with underscore + +=== Release of v0.2.2 === + +2018-5-20 + Rework the tags array building macro due to new errors in gcc8. + Seems like the C++ way was undefined behavior before, now uses + initializer_list. + +2018-3-20 + Fix default_output_handler output on wsl, add option to disable special + windows console handling. Also add options to always use color in + default output handler (to work around wsl color limitation). + +2018-3-19 + dlg.hpp: Allow tlformat (default dlg.hpp formatter) to be called with just a + non-string object (which will then just be printed) + +2018-01-17 + output.h: add dlg_output_msecs for more time output precision + +=== Release of v0.2.1 === diff --git a/libs/dlg/docs/dlg_android.c b/libs/dlg/docs/dlg_android.c new file mode 100644 index 0000000..12165c3 --- /dev/null +++ b/libs/dlg/docs/dlg_android.c @@ -0,0 +1,36 @@ +// Simple dlg output handler that uses the android ndk logging library. +// Include and and link its library. +// You probably want to rename the "" with the name +// of your application/library. +// +// To use this in C simply use dlg_generic_output with the +// default compute-size-then-malloc pattern. + +void output_handler(const dlg_origin& origin, const char* str) { + auto features = dlg_output_file_line; + auto output = dlg::generic_output(features, origin, str); + + auto prio = ANDROID_LOG_DEFAULT; + switch(origin.level) { + case dlg_level_trace: [[fallthrough]] + case dlg_level_debug: + prio = ANDROID_LOG_DEBUG; + break; + case dlg_level_info: + prio = ANDROID_LOG_INFO; + break; + case dlg_level_warn: + prio = ANDROID_LOG_WARN; + break; + case dlg_level_error: + prio = ANDROID_LOG_ERROR; + break; + case dlg_level_fatal: + prio = ANDROID_LOG_FATAL; + break; + default: + break; + } + + __android_log_write(prio, "", output.c_str()); +} diff --git a/libs/dlg/docs/examples/chain.c b/libs/dlg/docs/examples/chain.c new file mode 100644 index 0000000..01c3602 --- /dev/null +++ b/libs/dlg/docs/examples/chain.c @@ -0,0 +1,21 @@ +#include +#include + +static dlg_handler old_handler; +static void* old_data; + +void pre_handler(const struct dlg_origin* origin, const char* string, void* data) { + (void) data; + if(origin->expr && strcmp(origin->expr, "10 + 10 == 100") == 0) { + return; + } + + old_handler(origin, string, old_data); +} + +int main() { + old_handler = dlg_get_handler(&old_data); + dlg_set_handler(pre_handler, NULL); + dlg_assertm(false, "Obviously false"); + dlg_assertm(10 + 10 == 100, "This won't be printed due to pre_handler"); +} diff --git a/libs/dlg/docs/examples/example.c b/libs/dlg/docs/examples/example.c new file mode 100644 index 0000000..1f0002e --- /dev/null +++ b/libs/dlg/docs/examples/example.c @@ -0,0 +1,13 @@ +#include + +// NOTE: could really be extended. +// Maybe make the c++ example only showing the c++ specific features +int main() { + dlg_warn("This is a warning. If on a console, it will be printed yellow"); + dlg_error("Errors are red. Colors work even on windows consoles"); + dlg_assertm(1 == 2, "Well, this assertion will probably %s...", "fail"); + dlg_infot(("tag1", "tag2"), "We can tag our stuff. Can be used to filter/redirect messages"); + dlg_asserttm(("tag3"), 3 == 2, "The same goes for asserts"); + dlg_info("Another feature: Utf-8 printing works automatically, even for שׁǐʼnďốẅś consoles"); + dlg_fatal("This one is printed bold. For more information, read the example already"); +} diff --git a/libs/dlg/docs/examples/example.cpp b/libs/dlg/docs/examples/example.cpp new file mode 100644 index 0000000..5d45e4a --- /dev/null +++ b/libs/dlg/docs/examples/example.cpp @@ -0,0 +1,156 @@ +// this is the probably most important config macro (for more see config.hpp): +// if this is defined all dlg macros will do nothing (literally nothing, they +// will not produce a single instruction). +// #define DLG_DISABLE + +// for other macros see the header of dlg.h +// dlg.hpp has some additional settings +// we could e.g. set a custom file name, shorter than its in-project path +#define DLG_FILE "example.cpp" + +#include // dlg macros and basic stuff +#include // needed for custom output handler set later + +#include // since we manually use std::cout +#include // since we might write to a file later on +#include // std::find + +int main() +{ + // dlg offers assert and log calls mainly + // asserts work with or without message + dlg_assert(true); + + // assertions with message have the 'm' prefix + dlg_assertm(true, "This message should never be seen"); + + // there are various log levels, + // realized via static named macros + dlg_trace("A trace log"); + dlg_warn("A warn log"); + dlg_debug("A debug log"); + dlg_info("An info log"); + dlg_error("An error log"); + dlg_fatal("A fatal log"); + + // you can also attach tags to log and assert calls + // they can (as later shown) be used to e.g. filter certain + // messages or to decide where messages should go + // the tagged macros have a 't' suffix + dlg_infot(("main"), "Use dlg tags to show where a log call came from"); + dlg_infot(("main"), "We are in the main function"); + dlg_infot(("main"), "That can also be done using a scoped tag guard"); + + { + // This set those tags in the current scope + // Use dlg_tags_global to also appply it to other functions + // called from the given scope + dlg_tags("dlg", "example", "main_sub"); + + dlg_info("Now we are using the tags specified above"); + dlg_info("Btw, if this output is confusing for you, look at example.cpp"); + dlg_info("The tags applied are not printed by default"); + dlg_info("But we could output and use them (e.g. as filter) in a custom handler"); + } + + // we can also use formatting + // the default c api uses printf semantics but by including dlg.hpp we override + // them to a small typesafe replacement that simply replaces a given + // sequence (see dlg.hpp for config) with the printed object. + // Uses std::ostream with operator<< so should work for everything and is extendable. + // You could also use your custom formatting function (like libfmt) here if you wish. + // It is not included (anymore) to reduce bloat. + dlg_debug("Let's switch to debug output for some variation!"); + dlg_debug("We can also {} strings", "format"); + dlg_debug("You can use [{}], [{}] or [{}] formatter", "printf", + "our own fmtlib-like, typesafe", "your own custom"); + + std::cout << "\n"; + std::cout << "This is a message sent to std::cout\n"; + std::cerr << "And this one sent to std::cerr\n"; + std::cout << "They should not muddle with dlg in any way, i hope!\n"; + std::cout << "(The empty lines above/below are done intentionally)\n"; + std::cout << "\n"; + + // we can also filter out certain message, switch the outputs + // we set the function that is called everytime somethin is to be outputted + dlg::set_handler([](const struct dlg_origin& origin, const char* msg){ + // don't print anything below warning messages + // note that if this is done for performance reasons or statically project-wide + // prefer to use the config macros since they will result in zero + // compile and runtime overhead, this way will not + if(origin.level < dlg_level_warn) + return; + + // we can e.g. also filter out certain tags + auto tend = origin.tags; + while(*tend) ++tend; + + if(std::find(origin.tags, tend, std::string("filtered")) != tend) + return; + + // depending on tags/type/level or even based on the messages content (probably + // a bad idea) we an print the output to different streams/files + // in this case we check if the origin has an expression associated, i.e. if + // it came from an assert call and then write it without color to a file stream. + // everything else is dumped with color to cout + // NOTE: the simple color switch here will lead to troubles when cout + // is e.g. redirected to a file (but could be useful again when using unix's 'less -R') + std::ostream* os = &std::cout; + bool use_color = true; + if(origin.expr) { + static std::ofstream log_file ("example_assert_log.txt"); + if(log_file.is_open()) { + os = &log_file; + use_color = false; + } + } + + // we could add additional switches for e.g. file/line, tags or msg content + + // we call the generic output handler that will take care + // of formatting the origin (tags/type/expression/level/file/line) and color. + // We could print more stuff (like tags/time, see dlg/output.h) but stick + // with some clean defaults here + unsigned int features = dlg_output_file_line | dlg_output_newline; + features |= use_color * dlg_output_style; + (*os) << dlg::generic_output(features, origin, msg); + }); + + // test out our custom output handler + // assertions go into a file now + // there are also custom assertion levels + // we can also choose the level dynamically by using the macros with the 'l' suffix + dlg_assertl(dlg_level_debug, 42 * 42 == -42); // should not be printed at all, level too low + dlg_assertl(dlg_level_fatal, "dlg"[0] == 42); // should be printed into file + dlg_assertm(false, "Error assert message"); // default assert level is error, printed to file + + // test the tag filtering + dlg_trace("ayyy, this is never shown"); // level too low, not printed + dlg_warn("Anyone for some beautiful yellow color?"); // printed to cout + + // this is filtered in our handler due to its tag; not printed at all + dlg_fatalt(("filtered"), "I am {}: feelsbadman", "useless"); + + // example of a dynamic leveled, tagged log + // dynamic level logs just use the 'log' macro + dlg_logt(dlg_level_error, ("tag1", "tag2"), "error!"); + + // reset the output handler + dlg_set_handler(dlg_default_output, NULL); + + dlg_assertm(true == false, "Assertions are printed to cout again"); // printed to cout + dlg_tracet(("filtered"), "I am printed again, yeay"); // printed to cout + + dlg_info("If you don't like the colors here, don't despair; they may be changed!"); + dlg_info("Also make sure to check out the example_assert_log file i printed to\n"); + + dlg_fatal("What now follows are the important bottom lines"); + dlg_info("You must be really confused right now if you don't know what this program is"); + dlg_info("Just read the dlg example file which uses all this to show off"); + dlg_info("Now, it is time. I'm a busy program after all. A good day m'lady or my dear sir!"); + + // some of the utility functions for outputting custom stuff + auto style = dlg_default_output_styles[dlg_level_trace]; + dlg_styled_fprintf(stdout, style, "*tips fedora and flies away*\n"); +} diff --git a/libs/dlg/docs/examples/example.png b/libs/dlg/docs/examples/example.png new file mode 100644 index 0000000000000000000000000000000000000000..fe5fbd16ba73f28dd1fbab429c6e1eb8312ecb04 GIT binary patch literal 798923 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�zbw?>3SV*h}s6DpqhV~tBSDfib+Nwqh6$HVtp>r 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.JJ<7)2T$Fz=1~4kj{GH#$Gn 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

-B$T-ei&8M>`W9b?&omrhXvgEwpf9e*5f$U&g#<7xhM_CpU5F5EQWXI7!U z_Hs#)?^VDd2O*qssxhCf&JX)O!B1zOi8$6nxbz}}Uybb2o+$uAe1DUS|I9OhY2yf& zE|%|O3m~srYKk&JjAoT{ajGx!<;qJD=6yt*uY>2xTw|djU3jkG{?6qlUnt2J4SVSWb|j!0O9QWRuhpQJbKC?5sU1auKvR8SY6{IU#~@Chf%fvtzz57pw2X)? zqrLhH#3PObk55PY!8Y)RTfrd!9Kch3&~vLmmoEb!axfYShzHI^Jna-zNr&;ZSE4@d zScK`*L0h+iwrvAf0(l@pT}!}&ph2XF5P-TDP;cHO`f-MAU;F~5fX0kaXu$AFVhOmp8kAFKwHwwh=k zTqf5L8PmV|3h>b)-^2E8z_xAR;FXDUM3J*DwLfM?*tiMpF~25T&c?^l9Df`LjIe$^ zXxnzQOD{n+b0)&vIfzRxLU?hF6p2O&mfALy(83Jhx~o9P91TpLCK;yNwu_D!^dRlK z)EIc(dSL5z3Fb_nF44Zrawc08I+##h71G zX8f?doooNg+@oz~kPJZjmu*tvmB&HDLbj@x*Aq3Q%4B0?ZpG2MJEGVKh`zW*k03ZNKL_t)f_$MJ8Tgey* zRY1dSK60@js8hJyWh6hSta&LFlq3NB;G>|$=OcXn)1dKjVDlElRjZ|)V~zryvjFkN z?}Pg-@XmXP%O6I#_Hx9VHp{kyyMF>&vIw;B9Pm?5gPvaveEu_1U&3{7x~PCi?o@yH zJ91*erY&fGd?)bwIs@5njj8^-6d;V>zXkmII>FgPk0D;P5cKPxMi?KH?GUS8DEf&U z2MX8PM0#m0nC?b(!MVUyOM!j^e&=2A>u(x-;SYXWyqwJ+Al`D97+`=oqxe#O&bQtT ze&bDO280mM_v}_~h!B47w}3+r$xr|1pGn)_`Yy0#3vl2Z&~IEXCo^pMQ0i5@@Um%C zzVkjgb>a_xS5}aJ{v!B^pJovmk&cVb;U6(zol%Ct$wPoRE~lO>#bQH{Iv@A^BvUT} zarr|COBR6^Efo5%dlNYO%(VRgz=vBAFI@~eU=FBl!Ee70zW>3ZFZ_HpaM(vcU-%6% z4A;B{TC>*pxvB!%Mz;i!;XSr&JXY0GLr1qXRFsYce&liBymNrhUJo80L)`KKX!VOS z=7|Yl`Gera7oa`o6QG~1lv+W*{%JWqW%m?t*L~niF9yz<4|?|J;71+@F2A&JJYufs z2vx*-3>^m+emv|WsDAhJ0^>`sBEI-aUilj;&yutC(4)Yj^FY7xY0&ssnx8Mg7@+u9 zcASX-o}5H`>)oiXTne1KKx!pD_?Q&HEjS|KFwL*_`?r8!T?b4}f$z9i9FtGX2S2k4 z{P5!lmoF)tMYFBMJ59#D@Kk*8QG|=m2Yv23fq&B$@TwO8u+&&MX940reIK#kfZp3+ z@`X2U25;I7zDMLsbN)G~Rz8FHv*!_h^9I=llQOpY{kDTbonP`R{9&4(TRs5ab~oy` z-*N$k98{|Q;=c)B{P5oq-h4}p%ZDEWE;tYT>FcC8=jIQ<&#g8bSIM)m?1@zAR2=V| zNx_CJ!=R2$dSt@|`;A5wO}-v5k_k0)W5x z+j17yx4(mS`&PtA2(PR~&5Y)pv%!~KB-=LLdr!6;I{Cv^drbh>KoTWyxw2Jq-Hwr7 zeP9K6@ddyI3qemm16ubc_!DP}W6c1zZbMwUSQZT07I^1<@bU+Mn1Xo^JqB8I9ysBT zHh%!DegPDKUZ^m&bsPGNFSPIJ-3_1z9!j!^(KfAZ=Thf4sIuF+1L6J$(Oz@`aP}t< zo_+?^3ooL7!*$@QLTp+I;EtutpD+KR$gW#%NBhP)!B33P+#>#pJP-eNJNWfC3U2p~ zTz0+$f7OdGpgrs(Xg@FVHN5f~!YgYH*S0w192>PKq%@g4Z@(z~S^wjA5VmcTd9!sJ z`j=b;o+J1P@4b)u!H2TL$(*w780GdWfssI{URaHI=poqsxz7RwRBK;Hz4ldb8!>+C zt>`bl2vfiFTi~Wa{pxF|9)AK&AP^*b%ebg(Z!ka~ZUrtA{iF29PaaCEXJq4-lUBF{ zuVwHLZUHU381x5UkYf2SuLT}{EDPODTY$IUl}xdzDPa9OdApO*M@Q?2PN0^7@81F} zTMYVxF9>`uzbdCbIX&##acld?MnH*Clf{%BPVa~g3+4!^2I*t{Q0E@GzT8)?HPM4w z+l~oMKO$Bs+b_1sA&!|})12}nwVXpSQc}BaH5-{{J%r_z+EW`FuBOeXD>bfiw2;%x z9y2y-^51rP*T8|D>ZG=12xdQc9t@S#s%o2LBi8}3-@O&^Gxp8p!cDRQ#x;>4%_pw1?TxC&O*gxnI!L0MRhVFZ&kuzV-*$ zmTJ%4CTDHx@c_<;Ijda<+}ll^*wm0~-)Xe>Oo#Hy*%4(H*`C@No%zs}CHn-yKEt|y z*Ph!g7oA4K>+R`1w>SE|QS==Zl=1J5>bDF)`0w^Kr?Y)Es?GfkfaO4s79-}NaH#Cf zaF(!}2Q$EX!(c9@uYNy_XPMbfW2&kum6l-pT~!t6(xq2%2n4DKz401N$^eM{790s} zY-FWzd>m(fYCd9&`0>|%m%^GlnboPCJqzK>Uqbx)H$i$Fu9*|g zAPdgr;H*&nUfmqXDFr!uIJMX<07UuPlw}&DH(E^D>8kxzmw|Wf0zLTXpe}=>+fXUu zc)*lpGQ5m2bt^;6JjmXJOh!j4+{a)`yAHweQRISNn*CsOr7TEoMI?CGDc9CP+Ljcv zfvTvks+#;H-k! zD?XjW0Cj3H4UjG|Q*iTipg(e%c}j3^5FxENec}wz=^vM1tHN*~ z^~Z+AAAw**T0Eg zGbM&@D@A2Bdj%u`zOk_iQ&SCylQm8u;Y+sNXgwX-qLOhPQkItDHnu6l#TnPkD0rbT z2FM!;UE1n=&#N3hP@%yVM$Tr*!G3AbXryhYAPqYjdmhM41LITWvr4y{xH$lbk*?ch zGHr_LoE z6@<20D?qZFq|k2DYOlOfXY%)=^N@7geOvp6OvmqaouJ3}Kj&R)XEo44$H z%$MpF1uo0zG(LveQH3E|{txy-r}08P7siAGpl|^F<>osWU8i)wkngrV_@e{B;J94R zQ0}QJVEXhP+8C3b6`9HsxMOw@K|Zc++TNtPT@))VzujSztTWGlZ@VS3HJ(S@J3 zmF)Vu)-2L!+l+_eW4|wt5zczSKOrjm^L8YeU8mm(5Hanu%qH)E!E1f_t=qW|KQ0F& zWti9(*rGC|>Bly3zra(LrJc#=`Yx~GK@Hyy+_+)C{kUvy?$Hw(b(QdSgNh1c*S7QT zjB?ToT6KH<#Td-By+45gFBJFoZTDTh2kecO`*L+@*}b3tmik5C$uNz+SBz%JRM{68 zyZ9=f@5}b3@_i4_-ZFRGmu73&{GAtDgbDc>Mc6E5@a#UW@%E zc0mmSA|l3mW1tXFhg3)^^w6Jb#nEO_U%o)FT25VMT{47Z!gzAYXJFsUKz-57v%8H3jv6* znlfAhoLd~hj52($5GdnD&Fn(amJoMkyQX#$g+$A)!YF6AI1mJNYH~m!XJTjpS;f4q z0wm*{F1rLcYkmpKPgj<@&n)zWOUF-TYNuCRncnK?>G6VgGEJJSjAW#ywgyfiLmFq| zzbXVYF`9y9XtqppzEhtD3^TYQL_I-gz%ilfyuu~5xw1gK#R!0JRWNikI- zAXJsqwMjfy*wv|hEnq08FeRL&SM=nT9F!>y6v?Xd+Yu50Y{;b`@@bdDrc|Dv#wm`* znZN==uv!^>_&m_ZP6R*w9C+(?@R5gu7M_Fn5GpinM6VZ;V-E?6ax$C^NC7)IA&->xDEQ2DGUejvrR1eF_mGZUCb;<}5N7;3 z1uJz(^pu>;$Ds;&KR?nI0d+*vL=I{7fV9A@=NACPuy^%l+qev$!r37spKdLb8ZweC zp(jFB2``j_A|5BCxInPuujN#!)L&wssI?lQcuu{O^rLlosFJK6FhEfQk|d`+Q63bt zv>m|+p(<)iWqwSsrZ)VXjYf7Vxv#r!R!l8O%m&_&=hz|@`w^Ynds_X9U;VkJI-9LKml42 zTjz*mGQeU8M97&!xp9$Ykl4@-Xb?8lYMA9Rk!+?r69b$BW=?wD$(*V_32AMS= zW>FHSDp%$7FlQx5$u*%hmjUjKrewP~UXVt!{_%P=6DaFUc0o9}9&7=iGja{K8YE2V zkO9Y!hWGs2L(j$k2XU+T=#BNzv<<+(STCU8XjYc!^AHGiMTmhhZCZ`V$p$)g@>t01 zN99wUKc@G9RGX`W#^}zTHVUVwhVO6qW&E23_TY1s+3J8H^N|167NUsIv`vyb@``N5 z75zjcr|C5sgbliw1N6ouP(u-@dlf>(s1Pu@JLdknI8mF5NBkZ>a)`{=%s_x1URs~8&F z`Ju%L7s(lBT_KBX1vXVc1IgJict>|xP9CRphr;Prp@%*$a*&EuS8YElq&!Y9WPRIe zVB0;ZB$={CVsiW$xc?#GCl8CBYB?KqNl+w;SYMh!MQ~Y184H~urR_vX;Rb|~?ol#Q zEQ3jVvKi~}tWG1R+6oNRdaRjx0BJQ%oojML5~o9za8{V)R-c*05vNoWMEVtHo4|Gg zlp=djlxN;1Iamj3MG9+>(N5}}i1$Lt(Do-O7wOx`PB@5?(VsG49Q6m4v`hVUZRuqv zu;}+-_^g^d=bWHS4|Me!AAATJ8$!>MiVTk!AWN8ptLA0g^&zvD#jKK02oY?@t2Azrz|jm0p>^&K?>X^ z1!gAzCHi}wtt!n>5m_M4ba0uMoOwj$WV%0$|3PUHA@OK$tOB!Ux5QE|a@JX~WvC%R zE+8T>O17qEj;fL)k`-c~aiD=#lL>)Drh!rSDAmsqogfaM27#nM*|rvp<-Ng~SDy8> zl%x+S1;1M7Y?;ncxh*`R@gv!~h747v(mZ!NN^_ZymCL4Q1 zx-%jLFGB?+C!e%V6BwXir{iQjs(K)2BKgIrA{fU?V0QLP0ygRDfgqfI>U2^OJP0A< z*8PL^LxVT{)xzOU#@oUPk=q74+DLb~phh2-RGuu8REBbHi`{s1yoO8PL8)?zTWW(a zf&{pu%>MwO-xqrKDnc7u#K@?t3bC#+)o*NG<+pPI!ix@`0nNs-C{hb(;4V|3 zO7qLVWi%Y(X?Uu+aJ@V;e(qe!PRkG`ne66ot%rV~Lnl_v6pio3r`2hTX+VD}7Ccut z0S+G?4Z}G{`^_UP9rT=ytgVpiA#ZbHcj!cZH`6Z5!}3m6KzUlS$wUvk$sp@9@vGi* z&x$d#n|=Bo()=yZ#@#PduS1yMzuE1x^SkSNcn5aGbl!(+?=bC4@S&SoxVLNXK?1M) zM!~rEU_&<$GwR=azMM=h_=$^m_Jqe@g?uRh8vFGwLd(aE4@5PEGbvRTcW^OA$Gh!Kp!J zSei3Co*o=no@{%b;HA3KE2a}W3fmf4aCHY;cI~%ZXbN^`)zO^Fj)S>vJKDeenk{#U zd`v5w`IFpCFt8crEEpX%h11PlMQOTKZs~B;$l}wHjL|fyE{Yvc#VM=E@oAcTv5m>`8Pq5- z=7Pj(luMyDIXW8b6l@whGeBw4Lbg|N3WgBc6ntzN#Q~$PC6XFb@#Dy3a|_PFXf^PZ ziY%)h8eBC>|3UgPsg>rp6)1;hXQ^aLeX01+EJKxRg#jV$M%F^ef^1IebXdNEIZK>> zTL3}nsZbcXbH=Q$EypD16$U$@DYet`pw21!AjdZ;rWpuQMJO?;ifs+Zi`dA4Lg>Ou zf*Ct=g{cd{P(NJ-q?G0w+br<3CcnHCCQx15bbCJUhY`ne|<-&}&EK=&8 zeBbs(4{%gnuPc}&@*v?Z#%L>>QWGGQ{WyC`@fy>->Gi4{m`(UHn*+$gtAm%WaMNtr z!eAM8rRT&h%M3YaYtK_K(urBuM&8zFa-E~ds>H9ly@}G8RECd@*I<@Yu0Se7Q&HtA zpyk$deWu;u)wLbU@p18xJi4Ir5jJn#u-&J_R=R!fVq0!&ke zI`%~Yg_HaG(7%~K>tc{Qe}A#d5388+JoxXuw1lkxhkxLM+ucl~ZaaIwx;BgIt6_l^ zkGo$EU%s!={q0jLL)#nm&VR-=EC^BtBK8i0pCbDkl-V0R<@EClBbknQVM1Z0k^DLg z&x7OLcR2Tj?t||rjJf8FzE=Z`-k3zVxgQajfCw~AD^=Ht(6&u>{Iml_ezpQJC@2)6 z+379s4+q+&Bcqs_xf?RYuLg1#Nd=OvK1f&a4kBqd0zI7WhqGxIkW_o!PQrwUWC`oJ zw`x_ArePC^UC^c+r70C_zZN(E{!}&z)St6CXc1V zCIz4Q2L%p>@m8s%Jh({&C2-1bM+IRQ9RoXrO*Xef;6##t(656(dl78TX4%TNEk|WeEN5mZ^BLe)G9mT8 zI7X5|V?lo)7bY$Uk_{?T{4OXAklWVe`Ns9{fK#5+_`lw78YG%=!ZoFBDQq=_6b>TJ z^E7B?8C-Cf?Np~W$tFtMi~9YXk)v4?E-y51zch;K{AR>-ME9^cQ}BNpXGpvd)wm~h z;N17*=4?W1VFa0ztz$~#QMi%Ek;74LPwmyaKRhqL>wy8ZFJ_zM+ z_WdZ&TJKy9n?@^jv0rgYxOZ=b3EOw>b~x%nn)O-EQ1&|1={k1rF&9|K1W)56>R?m<;Q|c> z7>Re>wmC(P)_VkCb_z3rDni{0m~7fa`&cY!F#}bofDkd&AFMU!`)73VQh?=0XmX*j zm`NAfG!xn{K9%*HI8VYZ%OxAFqc>C*n7v7vRt6j!p~@g85BM>8;WOW>>M8{RVRZ61 zU{hSBzAHJMhs>3|U&H)_(avm#CL{Z!y}qORQT@YwZ=lybw!bHw4EKLV-Rt7BgtcpD z58fZu-!FF!ar1tu_x9y7-DhIOkFld7ypAgHsJ6|Xd0;fJ4bySC&vLwKgHY#Q=Cjhq z|3&FEN>Y_$DQyw|t>RX*V{%(oULoDDBS)YG;$#b?D0ct>EGvC=U15BD4E?Do1PX}3 z2@R-#>?(>up^*U|6d-1tq%Zx@yKNRLtZ>|6&V=@u({7E(P9Sy_eD{(j{Ul5+&|vB; zIUHzn>~P{wR-mL=EPEoVQufk2x9g*WdlDWxX8U(BgWNb0P72Xx#-kdf&Ol=1nh##f zAUkMz)wnd1lpeC$uSSjU*MZn&7bCNLhnNM1f30LDvtDw836EJ1=U|?hbt(Hp$JuHD z&SY%qmLe|3jjYH!hO**NjRDDSXX{r{DBA-CH+~p|1Oq4DP)31oUofBR)^r3}at8dY z(m7$-OGK8D)2h*Nc&|f^kB-1+M2wG*0V$g<#wd6VKwbCHG);CUol~V*3q*uoO|oTacZ*(K zp>0|;eL41RGF3L&_G~LgNrP5tm?|L3zz|Jvtt@rQ~JHa)1avq70yAJ zBAd&^9g93eHzTGaWKEnU`jA@*r&O4^l5Ko3k~!6u*@skUIMw1&KF?V@z}VOr`u#q1 zA*0u;(w4UD==rQnp%XdQW;fP0;U(iMXmNA(T2jB_5^MWpGQzT0OrE5Ztu%{G(Nv&K zq=)V>sw!EHF9Ie6aLn{7P>vx#8B(O$BoiBsGXJESIEmj>w5#-voQm}#qFmm{3lw%w zm4LmI72(hOO_EYD3>5gB|6m)CQ? zn^I3^C9676$E=@_&Y46{BpA^Nz-yoE`jyYJ4DhyjxouK)kgDk}o@3$kniJ~=qc+)K zUW})G=Sl-?`kWz8ywn>D2ow=&Dh?T7NPt}mS2vh8tpbtMq>*-V+qR8|q%igPSPh0` z*wl4E)6d1NJLZ`61=p|IFlKXhCXj9`E=F#8O1?FH5f!#fEd6KBR8wWIa!7;ZlF2KJ z1_Uuxf^Exe+ZLhHW3z=%t12X$2}yrQ`yqX+_LCkukhyV?WPr1~RJ3z}y3BjdHq!g5 z1C@R9Ftgp}at2E{5|X;B@J5XxQ3|!Gm}A^uWb##|BLa6 z+TDY&m2?L@-M!xkXMgW2+}-!RKeZ=2K7YW-+YzYq-l+bwpEh`v?F`W@DEU6~-C(fF z!|fMg1YTc%G=zYfC>8x|C1tZ7tHtS(GmXK_n3|dt0ap=%BS3*f185`)I=~HK7$=}q zL6e&}1L;jp(dR;IRCHxq6|9S4RPrZV6aZzR4w!<>vNJoZIq0K=k^$OySnmN8>w1*y<0X&@sX+a~oR;Bdl*E2Enm zsu~-a#@!XF{KFi221e{nbA6OY=%~y903ZNKL_t(MoedhVkmZk^yh4KSz|wrwdCR_U zMk&NcU8U0Pg6Iu9w*O`Pbd|^6Wl(P1<4+B&5Ri**M#*v+8?Ui@cLO~ssY<7H_3Ap| zL-9!NlpyIzQr%lysn^rQ%n(g@>QA+nDsF+bR16tlv~5h=p4tpQI&;emP);>GBJKG|^<64=z|xAfbX% zfJSgoA#%mt+?zA-FC1R0tt;0=0A=Ay?5aN_k7+gJ{d`SQ~pU7Ax`S10u(ha05 zP6h$*s`OVKn0F+hr?E3 zrQc9k0+L}PxYHVCmX+fA0n&m4^48P5T9+rKtu{LT)+`xo&}=NVy%O|fR8Fv!8OkPS z9nX?|O9eemZpCcxbr;qYZtqlQ*-dJU=JAo_SVaeio>bPx7FDQ{&7tU!Z<{7cZMi^l z3SZl%fJ6hdA|K@t0HCgAZuWWsOpLabdR4t%CBgQtja3+_W(v6H?lr}`*~cD#Kra=D zZ`yyl7Mfh0;;M)k)}%kYer}QdOZnF zLHRg@w3WOLEE;rSOTtbvV`)c$x%pMyZ-013p;kKf0 zv+G=!c-Rws!`gN8U<4k16?p#7$gt^NzevDFeK$XL^HH7dmS^OibElnsAK$d z&M@sx*CxmmHi)-$6!XsZ?JGrSelz)E(y}h7WC0nVht$iDz0ZD#f`oLq+=;LI|sRFuwy>2+lZ{ji=zU{8~J<7 z{87h<^S8=NF&R>%_l&0%hfX-ai;m$+SKGGiAlIHc(7L+LCKqxCUQz5_33*tQ{#^wC zjE(gW0x&hzf>~BVW9+AZNixvlIR$Afp~_h%X1ph!HCiP4g+M8rj-1TR ztNoM)%go?Z13Mp+OeJlNp7L#7NwI45Rp!AJ2+rxYF^w;zioH$KTKyo+<(bNKYUW+e0g3=oivNIcG^_rzs`nlkALY5H<5o3VH=Ho>ZYx82hPh zIa0Vn+qNm=DWK&j$8UFSBFBR&hrFqvMYl~{IRmd)%`c22r^hoQp+%QfcM0$MT43y8 z=-LH-jyv_MjxQKKYctDQCl}0s?gUK!U*_IBTCeI#@civ_@AsZEm?(0Qqp~m{f)GJu z8&kH+q08k^dAh4>*6NvFGxK-P%$l{jx?JTcPZ@B+McHnb4F$$n1R*eB7g2!>0!btV zP(VU@@4NTx`D34SzxO?XU0v0EZSmgwzI)HzXPydey5CDw=+i=Q}9!BFh*irwRd<=t=S(hz@xX3B~5K6Qzs* ziod%mw8T!jg$*o~=@M<@an77gzEyL+gte)AE=P5W9k{hk=9MDG-%=D?Sor7w617fx z@_Un7!6&yz2&a&hY4{WNmiQJwGG zJ651;pA9^+7>`0xh)gUh3-K)-B$W>hPy|Ci>LOYr!`f zOV7m{J487VvSdJ&Q5%W*Bmguiha%Ad(Ty%iI&MjPN$P1{f({Ttk&8xic*dL}c8fps zVC4F%(Y^bSTYg9`e5dfm&mxB%V)uoAtbYyt(e3F}n?nypufGb}I|kqVK~^#^TZ$~0 z+a>eIoCS_yxVaOLggWU2%^sToIH-{a9eEIX}|NYf0P_$&yn#WD( z2nI=1-m1!4RjXztBiwEE2ucQ!aS=Oe#Ia3}5STs{_l3{ke{v_Xb!$rbaG`xkbJ-;@ zJ_h$an4Buaw&f|LI!CQUg+)VA3^#om@`caP{`gLsEn6rf0Wy6Q_)A7rVelq}J#Lk} zD%Ew%(Xlc7idAX9M zgED^HWyaN?{}D2MT4yYM`BmB<+!monW=^O2vp+z0@5cYtO#}R3qQFpvv9X4_=df_@ zP^2L488wRX3M0K9h|-2atg*0q5?VLfA%SzODw=LXRpuFlWFTV`N#;8|4 zl=nyE%kl5zB(OJlwQgM^gpN)bmb};K$junxr#?D>%DocP!UA7Xj~;Op?Wbt*H)c-3;0bcB3b{>6Z=|9>-aWaBYaaPfbO7Zjj8KI1 zkG~9WZ$WOmGtE=7a6nL`kZ}@QJEif%OiP8ZFoB#ayVTi@zF5zc+7zCwVrm2y)zz!5 zb6WqHV;H;aQhI-Tb4QO*l^}z|JG&w~(We}L9D4QT=+|z{>@ey#(&ft{87>BRcp5M2 z6j~P0*3Q`R`AiF0X%#?b&Orb4%dlq;{LQyA3`ZRapZo2M&#!(1**BK$`zTw|N=k|( zjdM!-I_woW!RF7`Zc6v$12iq@nymjx{=2{?bk}smz&p~51KbQaR=v*?eMVNR`em3)i!NaL+$d|_V0Gyriy1Zq8>lMH2kiQ4- zp#$rn0X%4&|8t!)gHG>3XT)G6-~Qkld}i2vAAEhd`+xmuM;<(!Mt-xgGXKpm4RdsU zFtCGbI`P2tLqhgzI7|j0D83&&1juw(!u!GF4bCV39>??EQ)h+P7})sOc<3r&A@u$6 zhLMrVP7{hEwb7vMye=paQkAtUCcoNyR-ym&WC3?{LWD5pqT9iQ5Ww<^8?*C~=6e$p zER{GCgZXtfif(#?=0E)xWY$cofA{-cg=YdYvfs;28u4_~43rpw5DoJ}AQ$7LVH2;< zes#3ldNeATvAu2E#+n2ML#O4m2ItHmkt{tQIqn#E;br95W0E2jl_3TA*}bst*&G_K zKy;ogy&yfW#~u@mxbV(PsnnqY)$#mW!64KlpKq6pCwZ zbYcob7WQ45iJcZyfy(CGhW5H5VjXOY(E7Z*0}hR_0BN<$jk{+r?cdyN_e)fqAbCb3 z&XCmdmk=>jo~Xy@sN|#y3We@@AN~5b;!TEk2AD%K(6Rv*=TTK+jsu?nDXzSCB2F^B z1?t1W>dVcWK;J$Z~M z^VlR}6kyyFnv_xFw{B{n6$ewMjnW@$LZN2Cdpj9znpl6xp0DcQ3~YICM7$JZTWzKlEO1N zd^89n6C4xvXHrgvF=EKMn2k(c_g z*75Hs`+O)|u5}HcxEA@<6Y!(kp;sF%gy=>Jv|5T=eut zf)qU&iMPZ{xeE$pS5<{Lg*V@1^s8UPPoGBr_rGj3;_Q1wXN(+{mI#5?n-GA{dVcIe$wH;B^@LxkpYD~El$|8fj_c!d)L5t{Z06P{@NVKfBNMP9i@F7 zeoxI0$}3G;x_?s0MlB6P>3pAedl_|7PEHa$y`H1)Ia;geo%yZzsB?_>J-s@lYm(PG zMy0tB^%&xKL!?*(;t=N&zY}Nc(t3|`6-_AY?gU1s_KZh3@NGzaipweF`sGQt%W~H_ zmojGxg<%4rX+h%?!eDBeCh6FLv!dE2=Zvew>f(5d{xCk;rcIpoP3sFsCRuKH zsP?>1b@O*@IV7jdruu!ZXmSwXj(Ts5GN#`k;h>m8ZxlWF`#vnXKKQ;a-F2NZU7QWt^xgOD|GV<~p!){DPtI=1IL>=2)7*!lt6|Q- z{n1{zck|(Ne!d*f#oSa2^|Yt~-&dNkhW@?=htQ0V+1w?t;tr;QP#S2S7A>0MfoSV`$|I*}G^o*i~%ieAb=wg?yz30*gG;b8{G z^~n&;W~PNL=Y2(qi@*geO~hv-xpdN~c4<1!y{ZD8NE$zH+Wa#MF$x&+`euVb!`wBZ zvKXTrv%Dtm$2h(g{}Qg!dj>H#cxiGb^3J>HJMWTL(f-99UR5r&3iTfP{WjG^(NM_R zg*^OHsn7LDjITCA3B;w*GkuI=C4d>(g(Vgh#;~YEDAEoA5g1HQI+~Dr6J>x8 zHF0c=BFvlt!IqFR$d@%OahLN4{ulXrs;J!&_Dzg}Qnl!#SYR167$usV>P^2b(ld+GU?oKX zX*o~w8g_U{pd)MDouBavZHSDmE1_~qPA<2=_4iu+N0b{49J z2tl9smk+o}{3kpg^^#Z^xs<7;)9!;#33G=+A$GVb9i0g`9c3^(?jt=$`IGBtbn%`v znDXON2a4al^RE5N6CS`dU86GU2tLwkT#GI*@9doc7;+k}&u8L1tJW4y82NJ2>E3nN9It|8FHIW6kvWyL)?XuYLuijbWM zVQ&3?YdUst$VQPDe^$-~2XIDejPywStRsFCB8f^!qO3uMBz{MH4( zbrp(xW6q|wHOE%d_>`ut>IXU?TA}1l6iR%1sC8q982O=4<_ri9&f4%`a>xoXYSS-t zkT_l;5V}NcDTz@riwAjxTRX^!(mO4vBDzWeZd}i3y-B0B>dG7|1S=?VfKe^5|2;&EXR}y>) z3!S|e|K7hN=7ag}uxps%JRHv7?Akxv6F)C)<6(6Bn_QDQxd!i<41Y2GHy-Mh^b+;@ zQZ5gUI~hzc5kJG$VSnqI;noSC<>v;UmvrBt?lkNg{{08Y_z5uBXH`|DgB9l-wW_9q zgd#QCD&uY66tory4w$xWkzh#0`UKhNB^gc8Q(b^xLNyWW^2i`4KT-+R(({nHXCPIL zfBq%>ij`=;MLu!>^;bSm`{1MKV^0B4ed=S-G&DcH%f@j~U2q;U|14zYbW`TGzDxU! z@8B-G2pt ze+9kiJGgVshEq?1cXuFn+zsz+hnX{wKm7`N(|3_`7UNDm3AXP*@BBHs^_`$N3iN9D z^5>9u-bMf6&P-&0zPceVP53ZIS*SuQz?GNc&p!vYZo~c47PFP@a-{TQ7+0bdC}fU&E`-pxTIgD{3YB|{qKLC zNI`GB1=+E~?sI}W>rC{DWtsdJ&9|SgZbX0ZlaAnvhHc($_Ot%qy5qBbN4P&2O9#$` z<(D8w%tqQ4UH2UN(4$D}3xPxDXJiy^{#m$dE=x;PEjIXc{RY~<{|Nx~|B>I{eEmD< zJMWU5GnZb7j*lY;9~}1APpFoj2eS{ufAd!SdwakM)rIB$cp1Oqe%s%XaRtX?bV%j3 zpD0lBHMog}U6Sh^ZG8u}zC+!!(=;azzw~_Q_u=4!jedS~JJq@8!0bcu-}-xW_nwq? z6Wd(2O?Y>p(SFn7E;tY7odMI0|FG>{{7tt|rTQ_-1RfHM!wS%m5x8gxRoLI{Ki-Y( z+(|WS2Kt9zV)Vvu((c-WiqM>L3Vd`S`mI}SUbAN6mtO)$%tm}m`^@w3$fMAB+}Vqe z`E#kh^F2g8O{|CVh2KG+Tn%fVC!W+R5D&dm-nk(@&*Zu@b%XA~@;@bZp#GH3VeF47lXNv_E;_W&8sVhhEiTl|H% zd=q#=9g6Iqc?SOSy#Jep^X!+`HsXGCyVYa?IQLwbcLuJi;KlX$dsjk;mZ=ubL(e!B z`T70mWlIx&`Rf}EZ0|`qsaVT%i=GI)RzS`>7v`RUkMO_qF7oZaBLv1+-7<1#8WEwc z1;o>~WTRg~#7}D$Z0sN=0vcfuiz2i73~{TN^Pr6Nv2AN(v?m>pJo7y29D3sMxK~~s zaNuQ~qY7QKB7YP>7cQVbe-1ipmfiUNUPf=c*>sHQ(`YZg2tDQ~XjtIfYsoN(U1aX&xZwbVb)BG zsC<8KzF&ZI&w;sTK)F8Ox)oit02a(eZ~AUZ8CM1Q(r3}9R>PWS?S0{$DaJXfV+3WlL#~m`2NPEi3__O9B-}zp*ee~~s7Wd@S$lB+Vb3+8w z8%>P#DhLs*A`ZW3UgCcdKdHfm6WoR8qVvy0T!p^y3f#LALV<5YkR|6J^Uv(y-`{wP z@xpm?(6dgXckcr<%PvBXoJ}(}PW87pTU2EwRJG~kzP0p89dBvd;3zs^CjPQzFx%vd zKKlal@GtR=r84TD|67`Xw%&JdMc#b}smy6p_Z;nd z&~I!{5}h%LQ*`JrGKP3o8F^FbjE>q=lAP)h&-T(Bpz;+?Dy*0o^iix=ljwhW^hdoPv;Yz zIL>|`8Gx&6B$wk&t_ODE`M_HSU>$S%HmC9Z$=HQ1s#y{&`SOsCMrNs_fm z)nwE~FLHthUAeuOb!Kj(x z_wFyE#+SKB^R{Hr}0r>OMbfnT^i@) z?iX=Cd+({1T?8kei2mR<{O&!t8?MDI`6%tGN73zOq*T9sE$!P|kfUb9!3WXa{C5c{ z)n&_&Q%|D3<8FBUEo8wQ+=4l2@v8Y}(f;f{bhJnH@vHH7--}yz0dmw4RxbmnZnzfz z_-gw1tfIbdIn~Fmr1|Ep9U_Ht%jDmxOD@EnauUt0KSuZLrT%1wzr4)Wk(`4a#?h0G zr@H=X{7>&iUwWBp+Eh6D$Xwb4kdIx1KDh?H??L41%i)^k@SX1`*yLkZqff2DJ@62E zYy=3Bsq`jEPuVKY@!U0lV=HoL4ycgcO;hs!%)RGdCb_Z>IgmchO#t>f=}8 zuDT3==iTtmySPIRLN~q+2Y&=PU?zIcD&&wu&~5Kvr+h`oYay_^bINO&SI(~X|NKj+ zE2{tX-{pA$PQkBU3#->6S6z;dLnn_g)DufK%K#!oP6R470$SYigq zH@<7nEx#B!_853|15tq$KwLOED~0WvXK2?vgS&P)>>H!K=YcTE9Cg+Fr@ut%n(9CP z+dxA3I~3g9GimR-4;`tgK7JML&+etVul3=MO`+61r^iyf?x)0y0k*k(d-M12d z!4f$72=s-Q(&Yj(*}IORn2&K1a8Z^OK^VD4FnghHvo37w#oSmUToyiq=W zH9Wb7_TC3^*IbUf1(G^?001BWNkl2-fXGYNgfC4GmK|tEz&q{@ip6 zS_yL5#mF(ops#JftzAod_CnlQr!(^6i|D>S%@MO<)=YTrMN60JY`I`q1WZ@Kap11M z8hLsx^}~0y{xCl}Z7TZltB{os(mvecK7N%M`_7@ib3O9b7W|F3z?2c> z+ADEaUW&i-=O$0i|0pb)kN)%?bkim{F&~y{jzh=;K!T5B>=;90E#N*+=-i8|+!(V$9a_(aE7r)BW94)TiaI7QCAKp%6I@H zb#N4;e~tV_gtl#{TuqcR$zY0~M7A1gdIc_n&YFQ9axm_dSD|+3g83lYZHQ9H4=tF2 z6QMo#Y}$EqsaM>GZh9R(=|ud}3(U^1gyy%er`o)Q>btk1y&mnA%jqv$hWq&n)H&K4 zK8|eOLiO#xgV7QD{?cXiR@{q-&|kcmcK%#O?zxZN+i%jGZ~|lJpC3{I+XBW6w#_f( zke_olES!t{>|WUP272;|cE}L1v&`0qyY5Bad>cRa3}oI}Hpo+J;G+wXGfzj?JZn!J zb%Y(rJojSJ-AWUWOt3`OH}{N0|L(dg&=p4idc@)I()uK0x%<8n;rY;QK#}kAWRPVS z!6_%8KfMQe^KF=SCd@l4E2T?53XA5UKfMPwy#c43XbvNQr`N(ci;%NUhqX38J#scO zYbHGVV&X4RE+)qf7Wp+YrDE^LuElNMO#SV@gQ=tRmtRhM$ufHP+zZm90d&e#nrp9O zLzJlJW2WXZo!OxzJTk{OM zU?H4#Dm?R?MOYqlB<;+Z$a61(KyRd`Ki(vMElxvvwcvUc0R-!Yda7GJO^Q~z@r#I=oGdU~c9t^c=VmHJbQLP>LvT+*!&UQsd*Nk(B<7Y!F z{r&4XBqqLpa9%4wZo)vWs!}yaePxr7ui~UlL zUCPNp9CYuU%%L(_B+vftAB<9p|Dyk;-|yqvwk<068{^3T>}6K<-7epT@ZNU7(9!Un zYFfZF_W`e2WJMxa*mgk-uGd2r%*C&I7{7TdyuT0s_-f>gQ&ZS-X3v|mn7Q!CjFRzHZk^x8Wpu6B){1dD3 z>z+r)8`}4FA?m!=W1fF>wE;`SIX9#01NU!6qv^AfYu9Rpid~V$? z5&_xo16)QQeGGTel8&U6_u(cfsZ@8Mg4=p|VxGjE{2NJHJn4Jb?|Po43OH*I?If zbn_N;;~Vh)KHFb)jaxL2cICrE_eVNm3^h88{aTkdbQQ|ncA}mmy}La@T+N4VZj{u`TfYIH=u3P`r6(SWn+o&iP~W?f>h;&5-$(ZC3r;set=fSc@4$P#hOT3n z^Cs*nMtT*aJ!j9ODQzghBSKwSnn!e)#&*1MAHf3p9VBItHoKjbzW{D$oa#DJ|in?~@7^)m{ z&LX(?0b8Sf1AF&oJ+ap_{awtYc;U;%FG#NA=tyL@qf@vQBDU3SH7MBkxKn z&oW??1{oe}g_TCB=^1%zq@5x;-9ra-+dR2}=L*@t;&9(Vt9`rv!^Gy0G@{EvNoSiez69;DAEu1k(I8Kf;u&cxDg zjo&5bX;K3XsP38dg_Rw_^p)xGEEK6zqBX2A37P9*+FW3G7G05h#6%Rl}!?z~0l)>tPZApJ;F;QWS76V}?mRrJlbGx)E)K6C+n zivFNj;mk-fJ#}BAGiE@qM|HzBR5x5R0KZP$AW?aZzYE9#v(U}kGSg2THPS3;pMMdj zgRj>N;mfb2b!xq0HAgio>OyKiO@tsh=On=uuhx4jpcWt~T`#(E6LQ+gp?GG5utZ-t ze+b;yNU4Z^pdi-HKFtN;blBMIUxka$M@~CAKXl*$@ZKK$__zr}aj?T8YM43GoG+)I z1Y^e{8(%kP!AU2;!3V+CZHY#PT@kl2w=y{?%kPs=FY5l3v=Sy0UlSd4iRm#YvPi}p zm|_8i(h$cDiiG!yu6hLBz5{o`Imoq_ z)QtpX$yodwZ)e82;q@*OXHJJ+O?AW7K;GZl+22Kan(aW-E5f`2hKuvzfUcmw&!U39^G!Ke(t~n@WFV~*EWC{{<6wj;O^}$@X7|m`|EGw zzxubfUPng!XZ}A(M*8O48TT7D6{}%C+qSjzrM~ahlmd$?0NC_;;XICL2;GEA-bkd& z7)@be?0Ae`6k2cmw{5-ckGh8Iu0*c8GQ-~Qo8cmk7R(S@zrma@Z@fwSSKqLXXqa(Q z)pp9CPh>5cL}wfP)mxja@HrKYfEQuPXgql6p6bLFu^Q5h)W`PMHg4OrRv#kBjClHA zg(ByXenxs$!>(zwoJu@h;;ELx2`9j-8%(izXFGo9F7$-sE&3v^TcFX9{F?Y^d(gpV z{BPVC3NcG;Bxw&GZ~(IVef)So!?0@?0Di`d^nKN~__($^Lqz7RS+veUuZP?8dV;sy z)fQc0>#K!QXD%{D4mkuL;EPv^L_y(5TOZx@`hYBqQ&8lowQ%l2WX>7z%Byh7iI)0P zP#t8R-PK+ceRFeG$2Ytl?io~;2KaAuOhkAk@5xBxs)`0q?^u^8{_WR74uy>!W#OAHA zexo_2H@yjea}&PGsV`uDukn6U6zdO;fX$l`QM`a`dLu>H*!m0d^jh@ng~*v_!TR;+ zNheZ$=X)s%FUq!FFSJK(8>-6EV&(8d4L`4LOf>CW#=Fd#X@^PIUxjd0#$CT}k=IAf z28{oSNVk1^+-r*Q&-EK<1>B}LsK0SDEhf*Jf@V|7ZDAki0}mrRcF>%&7?xiG&%Fo_ zJ(}>Q#ebtA)TXX$p?LY`t>`PSnLhZ&n^b>$v#qU@AmhcHO8x$T6T*0f6&22h2pZ}& zmfSuWRfVx;o5B~WSmfc_1v$z>3G1!}wFiKFs|lUu!FFj&X-LZ&b`U1S+JQz8v4dd= zM5zZAVzvutIi}>DEG01)&&M&k#$fy`-N6Kane4m#cc~}l-^+W4jalk-!>>UDdC>7R z;V>bMyWe34#vge4Lq7bQM)dr1u1FXA^BtAnm3n-+d|kUL>ZC&$v*dY}xR3fqmnQ9* z{h?&I<74odiIdCE4SwI%Rrm8|Aj*vHxP$cbVI6aWc=>h4RkdR5B|b!ix^0Y^2@dr_ zn|5bt4HujFy)%?MC~3 zns5IAHgC;i6v|`AOQ@s>5*I8l-LVrn;xJ_0bL5j6!>23X6%Z-`J}K)~r05LA{nl~l zTbt3gMM9CcSd5cs?3v^*W*rX|1LcNBRsyrtSJ{WfF%Eo5^Bd4XCNKS>{OsZ0z ztRy2U!8CE*VZalvppQNVOU}t3?bu;?)pZ?eRtS9L008{XUC6$DxPuNdgXq!6aBYj6 zy}(W?_w4P!GI(YE-js}3tWjfUsKC5jWi=@hUbRqFB5wM9=vA2pf`@8?2YG<|M*OD2 zb`dho-}!zY_taY2C)OZ`ABrqrhP(Q5{EzNP-Gc1YsmqK zlFs6EuJHGJw!fS2d>?&#Yxn&F&cNP^=_Gox}3(Z&` zk;*;~DWzT&Io%wS;*2|LtLWpa@sB-Cb;RN5WlM2aUP}9;J4_MQ7X9Vpv>#oB%$xzQ zZA5nM?kLoT`>q0JsROZntRh~mBgt>SQAr529$(|!y-)AoqAIGed5-Z^k3&3QoHbIaE4=@ zL&SAy$~Tr$CJyA}6VuYiyzM-4P6dv8$a}>#4ZdLabq<5qI8FX|VRbw&E`DHjT$7W{9}j zA)-WdL?^y#l<+`+v#wn}$O#CkoX~H5s;d?P#o}WyI)Wa31bW=jw6XpUASWFUzj!1$ z|D9MtU)3C4shS-|s=LR_yFjia6Ayw{DPs@2Ip05E1ZZg3z77pKjnlDH5wgjZiyVePY!x-Q8TjS zY&c*hyt)x~zSm(tWz=JL7f;l6;wR>C$#AA<*)&E>aqgz559hr_dc`RxrmsqFk|ulF zNtBm14gB&6WXWPUV1~_a$F9uzgUspmYSde&vffC~q8PUCKxa&&akWLS2uNJBUGL@D zv`ygMM$aOktxxTvQIJq)rD^TWsj$8ib5<6`#jTNp@gJv(|EDL>a~HvZ(~%7uVdpM9 zl8pJ>sy%npa+L!o#7cw~RVHYmzsm02hM!x1glyi*$Vf#SXmK2?2k8m*R>Hbff&Yz8 z=`kJ;Ktj!@B!(om*;aC^Bg0K*rGZzfN1t2^PppC2ha#6<3|CwNxBWCb=#qY7{3=Gr zp<+dH+a|1IOmhk|jJ#F@9rT;5Gb`aRF^m_4xQJN3CRz849!UwhYKqbh{78sxoE;iJBROBv!x24U?zUUv&+@i%lM-aS3pC_2?xX%afcv;s@t*R^Fs7Truics) zgNFBT^Jg-fX!yN@P9rUF*kyb}o*v>9nfOfMxR0NdYc}}wZ{#TXO`aL{uC5+C@w?yr zU1^kGXL*WiqW!x6$n!{~fwUnxVI-|_;EJ6wf1PX4vC*}GqJEdxd&sQFK$cq|j$6V$ z2wUFggD`#AYgi=AuvH(B>@1)v}rIpid!%TclLbRm5&tj7>a)T(e&|8 ztf9VkxuwYTYUGfEaP!Yfj70>fd(?mWC8|$-%uZ5#QOy6*$B>0{ar4i_O`C%DMv&h+ zCMcrz9yfhDI@&|#&%rHTfUbJ93)j@CxGAGl3+Lj_o{z42G_8$##XAST|GUU1u1oMo zGz@xTqYFhRoWvY8erNSRIQAH1>L~2m1-o{kmCI`oIyL2R(+q1YLZzFxA}1b? z9P$yX19I9)Y5cAMU_W!Gfugh@8h3XO?Az3a~g&HQ7t$tjUnQ2BcoJ*@_Sa; zJJC+2p#cmHT*Cx4$*>Q4cUX%|+oPjZsKt@f3d=cmA|WR5_duJ8|IA0HPKB#3wbY%u z%5ap=PJ&OFHVsC4F!xMk(LCx$A2Y-J{e3V#jvjw3I%OJMb%hm(40BKqdhHeXV~&O? zqxhXWVdpNWoGGcX;MHHf}|+r;H+@cyP|)EY=|Y z(_&=;{$MP5HzBAGPrdc9Dh9izypveQ{d#2%$OQ);OTY9RhQ#tA4WA=!yzAmxo4F1 zeC>x%MkHiR1;Veh~BJpF60A;!Ztjd_u*dsFQAhB4Y<}Q*A)C#qn~#EJeuAJ{^ASKBLe*>$i_{u^F7*SOYx&q z&;w@DTznDkxfd%@4kzSkJHSXhmMXge!=;) zvuBqiWD6t%w54hhG~3>Vv2k?4T;tEnE=*CrfF0&|kItWCseM;p1_#bEc_k#Luv`6% z<({3p7^{o)2yYlS`5p^}JhnS7?w(8m0wnDZ7RMbm~-e)=b)^7b4HU zXem=Z^MHI9LYSzfhDHZ{+vYn58+RXpjrlqc{L>s>7+|{lL?L}^}YImm*hp&A(Kmv01ZsA zKtVPvW1go=%&EQaAy~Qu_dB0JMn~bDcWGBY1AsgJINUi4Xm0*{D;oCZ+q5elz+JZ- z-MS6kww?B;_u?+S0Jr39^jA;fpI(dm{3lJ&Cl6rW$UYQyE8(jD`1dSAX4|{8KmI9x z{cA%Pr1u~G6oBT|pWt746%p|FKZGnjkLt5GAfux;#_DGZPaa7bN&-O4V0KQ>7hl2u zF{BD46JMB+?YNy@>{PO$uJ@0HsZ@&xw>IS0B)hHYb zM~z0fJn+TOp@$uk*YiJw0+u&^7kOv93Hnc6k4&8c@9u!R?m?e>-JClK@k#Kk-gEg<+<~);REcf?^-U;J!D7pxm2I+?(gW#5(#M&f!Dl!HkT9#fX6jdsL#5a;QqL*JEsK+-PR^Zv4;g zLzZ1Yb>3q5rzi1GKZE<+Z=3R3cI422cd`0GF=7Fr`lBzT{mVbzP5a8L2CoW!#RIrY zEG}~#((K^XxqZO+mSo(h7B806?0mIIXGv=NGhlqY4%6A<1fB2^QaeI#;w=b27kxhxaG@`#q-c7*P;(Rj0>I2CbEk{;T6#LGXCY;jgp-Td z2nJ2YN|mBT!N0c$z59Mxc0TUB#qiiuu;y9#%qLK1>+77Osw!G6y{z9fmQo35Xd|s_ zpFs~j1U~y|vk6~XkG$}bLAL5)^V!?BsY}MJ;j0gbUN*o z;Dn6_EQ0LbLv{a3n)8>?E?R_p;wkEN&oF+&^{5lt#s}x5UCp2TAq_Bc`<=M;uNnOp z21(KwBKLlXp_B*IHZb%A#bP6S2?<5pYReH6hE41p9EUcVRSB|k0 zkB66Er3wzQ$~oNIZ!`Y>UO4%9dQYylxeYjI)2ZwDIPPaF@Ru${7tBGPUWfeRQS{QK zfX6BD54WMqE~5S7=h3Fcz5EK*FCMYzGY|ETZ==2VBK#MB7j0UqS6-p_@FT|C$HwUW zdH7j0I&65kykr@DIu?IlZL;XGvZTI8We@XIeX zyzSnDtXPRIT>|GUhR2^m);xp$&L=Dk!UvrB);>S&6lCM3EVm>Zucf{b+dONziNdd` zt*?{RF^0ecql}hf#}vy7e`f2?fBi>TzX5jdfuFBLE?#0zm4AB5oD`qE!45>m$I&}~ zj$D2*ESd{X+5VQRE+bpapiP53y$(I&R4Xc5I1ErT^a%$t=7==iRJ`K;;dXOqeChMn z_3g!1(1#wTX>+7klC9yD9@{siVXcUzvuQYW^@{gmspT5w0V%~h(!MtUt;qLjrzH4A z2##KpDc%T~)|0xK)xJUQxrhGJr8EoXAZym)e(@;&@=Jo@4)VY+kPFX6fBSm+qa(<> z+mUCU!&QRc^&ZuID`_tPwm?b0SORC;{?@h6pucki)Q-vtZH)B6fdHdzY?;yK&b!y?M#?xbOemkicA8!)B z;`5(G-r559tx6pbiFhZ&lX#96dXck;8YlL%jA9W-=u{W(Poz~qKH$vgM#vaH>y1?S z*3<8s%*(YnCBa2GY;ewY-X&c_F`HKtBvkQv{u%dqKKRS}T~J3m&rUQ_hyT9+s|(lQ zJG$S0IODw3hoYW0JWZ+8O$GrTHi2Odg~4kwTz~Mh!y|S+G$McP>!0I5+us=7$ddFa z*=f~H6Z}wU{a{F#NK1t*AL5*x7#-goE=I;>$KynYNg16|K0N3|`S4L!6XBT{mDU}* zZQBlgPoVb;F1SoZEGNC`H^!8mqpBQL4Rzh4-!@cr&BE*EqIhom>Q9P@fUe9OMyMJA z3v*DfRR8AF=*zF5zk1SC%?^$<6t=TdHDh=sCB)xL23-zDxEI%(dirLcHL73JpaG~xlQkf$6&UB!{CWxZ7}wo!?DzUOI7|Vs<4AgI8=B9ru_>5w1G{*y8uJDa-LS z(MT468MoOOk9aS~FZbI-cqi_;E-nWd>BK!WaUyYzoO7ubl5evkWx`XFFzXJUf)Xvx z3>8b`jB{5j`sy6J_lzZnL{;pCNL$`}TqX2+HT}L7j?|E25f%6j3={rPGnC?e5{nWR z=_=&?RfX_`sF>Oa%Cu=yXqrAv6HfC)LuV12mkXilBAJc=DyM*>{p_b;%{u&3>$0j1vc&phu~4u`Ojj`+IwYK|3rz?U80i@wiY&ivJ-yn6dUP6SRa3XdNDHy; zc8t3nA8!Clck0zH6%+>0z()yd*YA6Jy$bcQYmT+6jYgA2Iz%29cx0Fd^XI^sr&Im? z56v(QQ4UcIB!UW*6W2TPZwdId6MAy3uC%wxacnPuq}n4!$|3z#;xcC3Bng+PDqQ^?w9(ACd``z9JP3HMII{)(F>*O#kfJ9u)saxB0a9jdCq$SoCkjq%gn z-4;_IyL`TzP7#+Tf7acfg1{F(4Xd9)SFg)-p;lX_3K3!i+8J+raHPihx)6ckQyL|b zi_50e!l-j#j>|Siydb#PfK)X|g#HBq(6+(u?5Ii_)|09V^f^&y*T>3bpJ`d?Lpy zy=3L*lU>P4knY+aMQ4VeMh>@6?k)XbrqKB|DHGiaajvR}DJE9HH=IZZ#-A0kcp6p` zkK}F_;XWS~GEo~_E&Nu4vaaDBQCT#LgQQ4Gf+5r(k{EkqYZh~~v!D+~WAG`+@@2S1 zbGwLm?5QNQqM=ecQYr7eTScni6bfl@#m*z9_o#<9IyA(m zbQ{|TWL&A?&V@bcu-YnUE>tTHm^~YJ%E|aAR>OPmAx9sHocB@mSC1Ek6@B7IL}yaD z{*h3IX(`chBUtNJ_4r0Z?WK}$8J>Nhzr;^d1<%4TNZNpX-nK0gT2_1ChN}BHkJ!a} z3xQ`w<0RoJ%(H1)i&83_xzSMQ)UpW*e%pAYwsgE+IAJyihEKIlyf;I=LVSH>GC0 z-gdE;WgXFd6s*+oD{N5MIC@dBtS{F-Njj+JFfhxeuZ zq13&aKEZ(+7)I=l8drDx{o{Y4?J()638rE1$-if(XerOT?;I8_6UUjT z$4?4TN6rqP#0NbeyI&7;Jl0n6-P1IU6*UXmbW{YJeRg_W_iDg8b7Vtna8fd1(UV8F zP=HiDeD8;a@MI`(Ogd%gQqn}HOdK<@sev03TxpReL*j4`;$)j7f8J$Kxr0n$%oaG4 z!0Z#OLD4m%%1${;DlQ!(+3?A)Rn-u^5|zKGT+$U<$zV>X3@0!y`fsu!kkU!Y`DLXv z;$1|*g~F&&MnxyyJuA@_D?{7ecp4dSP$aqM6AVqYFG^x4PXxQln4}McJlAA&6dNhZ z_|714{1c9asZ)@jt}w*_%T;cCn_w;lZd@k|m6cR1x#UqvO${)VIM4JEV2>f?39KTT zp0t8 z=xpRowjaA=PjJeRQQ@2!uf8<{(FY?cI!h8C3yNk;^%Nl$)yBj4c)!q-r07^TWUm*v zDfu1&9wV~)ldJp~8WAMb9r055iLD-jcoC2Lq7nNHnl;5y#qjA+6sc0)x z=KD>IVj18C(%Dt^eB@P88PpgyA9#T(BcnaQ2PHnjqsicikt;}cT!18+uWCo5b~+m! z_A$&q#aaZWpA^#YchhL-j3lAJZlF!4wBFN;UH;;}4{O!>mR?<%oDVfTjOR$ID`UJu z!3h;E;UMymxV{7&Cue(#hIR>5-?o;<=iA^MBhxVwikSLP?;_$j$e}FV68-rdJE1p% ze)B)|o9v5ygWM)m$^L)c&$VA#Jp5K>5g@d@2N+#Y*5mYI~`} z6bb`O17&t-E%ER0=k?d3haUnP-#~wK2ek3NM63h6FUW{cd!q`0R|#HM?46*4#C_%q zeI(AMGY22?l0_tK@%!a+XZX0P=}zVfLZ0;dPsz*UlhDcb>NI@m{RmbZ~Z{ z&?ZAX8uFnSc}J19@28CRXxo-{+#@}3-csEqL`V4$Ze9hRDvlI++^RYFt!9f)vZB5A z8uYM3kWFtOx7}edhp5lk&8!-!h&e-9=L>w($EX&?i^sRnG`25BM(mJo-&h~8)LU1X zQ>bk{ZR?W5Mum`>8V*+i7F})cX&av+(j++@OwaLZorDPcUW!c_^|qw%ME#T)p_Fxe z7aSR0O%}vxKGPX&c;6N}2_&B6$p<1r<}F!o$~4sB0*Q9>PKtXh@+Kw9jO^Hn(S6a$ z9eHA;*mMA@xsb7q>T|gVNP5M9a!CnF!lxE`m&VaDE;Nq6$3{ucyh&b^Hfa2#WbT8KVPZDIL^}O& zFqU-Cu~oY>>5Tb7cEX3Fm7tGJa^LY_lxTCthm-UIp2(a@ zxMhH;WyKW;hNxOs1GQ7tSXelPn7YzoWP;WT;7yLxL4&?+V@@z>Q4`*ifnhV~ju!-C zM>!7jDCUy`sq;z7pgleaWrv=mq#&!S1aMP zO*2#t5wQSahOMN*LFPX3Jqg1S7@ib+AKMdc<8v1uDb^{~TXtEB=v~!}gWiZ)ebLbs5hEfY+?;T4Tw8Mt$2}G6p@5|hNM#O-CZ6hw zB!`HE_r&y)#A_m&2G=1GGzq4v7Dh&^#Ali&(?C4gO{73{GMA3BLZxx$NYT~=t_wwU zQ}kRggv$sDACH#_-B&ui!fIZ$#c6gr<#(=_UQSPl9m49KOKVft)_pBH3ffkwg5l?a zQC`Ku#Q{E7;5Z^Q8h2jlL?_035sGNWJeC=Kc0(Hsw^&aDEn~3qGR2oh!!Dmn<$Ha2 zR~#>f0{b>ZFiCgGbChL1#1U*iq_mH~Z+wuk(YULM;-iL#h@TjR6dXm~r%1K&@!XO( z-rJpHoKcA{I&@o-aFj*KDL24#hx2gB9Um*`)s}WBz`n7D)=R188MVlj)_bbpRBPHCkrol0qg#te3NikwK1aTm zX{a4}O^l?laV^zJt<5#iv`Sq`;zRLJ236{+Vtl*}donu_C3H+{Tbreb@#&_qj!>3r z8`fIQ+0%sdo?b6R!3a1U`^Nf=j9Aw;uQ?hv;?QcKw1GDmf2(^gt!a#SPf;5oy18vj zT_QU~T#TFy`di$ekq1S`Ok$dnX+na2TlcDzO4c;_ASBXAET>TFk#QsE&PrX{>QG{# zNM*HXK)+0DUC1Y2IFkN<_TD|(x~-@W{MB4*pYOZ(0vCkKLl6-V1S3xoF%g7_I+9=$ z(F}}2!vj9_h{>=}srH&2XeUY7(OkOxgrd(J1(eh=Kx&f(rORMHKb& zxI8ZRoW0hp{-f$wRdelq&Ue21UBD!F!gtT!Yp*reoHeUzR@JOW2{q?)+&5#NQVrQ9 zLNMg%J zRM;;&*<&)}e`Bo>(4p>HZ>ra~{NF!)1aU3YgCpovSj~0zS#jxbPdm299?JNmL&|yk z@(cgw7eQ6=+VA?gxXTbvgUT|!h;&M!Q88;Prk?c-pEX#`J%tB0nRG#Bx4nT%(jS3+J*$@WAUDF3eDL1Y> zp#?-t;TwgDR9T?r#!e53dA6KSy;oyKEe-799>p^bkVs-0r?CYNoY(4#?c^o4dxtCW z03;K=RRd}y#&ttWom&U6F018H@aa&#jnmVr%(;Thq{G@*_bLIV8JK2{x|`?7nHiH= zW|{d!4h0H{B-aD(_@6MS`M8&*n^DA#8Z^qJ(ZH0KNz!YjO)OhYNdW*_xU<8Bbz8?3 z^a>b^+yzt8Sj5nv36@sPjrDsb$&~~8gLqDR`1|OID3${QFeBnTnMY8YGuglOk$FSf zWI1i31iTyKXpCftRaY&BdZPu`W_anctXLOIUMo$|m+m33%=6@i3s3rMMhR9o6Ynz*ANsnYp#h>{ z7^30E)7jXw&1NvMTAq8JWU2w6FFg$OW=J5O5Jwahxw?l5_TC3W8V#Q0TQufXd?r5( zuP}(S1#y;Wf0w0uZm2-a*iS6X%R;4^^No3S@19P4_CTnTlYt~ruzquWBkMR{2`?cZ zTh1pBZ=i}cmx_d1o>u{yI*%|T;chp%F?}lwY~`RFTwOq?v6tIN+TLEj_ z_L7HllS7qP?#Z^-vK6h@f8$NYFS#Zap4)XZ zd3KO4b^Lq7!%9)H7~g8N%ArSkdiNb(zc#+h!RKok6_4TbwjJ}w3|D&7AjW?cAJUUrBc8$*tc<8zqj4n?rk5NMg^})DodBy6pyu< zuT*&Ii6YZaVV?<7K_xTZ zfsFulIF1}|@ltWvTf*MebCpPxGsiTC5>gFTJV~SQx81PvG}=D5U2`uE8-M6E-E#>{ z#{WZ^WTM|{c+fmyrkH3H;|8&IZKzD&W;ZlSyPm)Om$~^eYV$+&n_PK0j ztO&L80jC(ootp}4Zk5uZ7cIa(0d5QOFGS6ejD#HOcI1lsEj@IVjYYk$df+FFO!SNCfl*R3Lg=(|p z(|}hu)2MD{US1u#0`qJ+yiTTu-8|#;?9}?~Wj#=pbpIU2Gux-CewO>4g*<7m{K1Vu zg?~waNGE?gm?AUYuzbU{3BwNIlmnq{8eT2P|4r6+%^vHIbQ}%nd|P#xc_yxV~2`b*2KP#%${<9Ur{}d zXZJwMF>K{TUMsxvV7!O;cC1}Xf7yC{9qXq$vmERD*gF`)L~mtYi-VnYSxk6$W;4$- zRMm3M$W)TkBmfY?Zf?NGrX6H)OfkE+-P`VMAN96nFmyq_+;fNb-F=!i{*fUf@uI<4 zG`a;I>E)c)*XJnYm;!7ka1n;Eu4%~NOI(;FudA=M67E^af#DC?!FG-ud+|m@^22G$ zyZ}^|*OhrL%oSQ1vYJ;i)!^BqD<%-ty9i_LnCBVOBse?U1IW|B4q$?~Fl?R*>V}nC z4X*bTOj8JE7+1QO^JJCAhCDI1aWV9S3uj3v8w4}%I$c5uPhSYQFx)%@V2v?_V%^n~ zAKUJ1!ZuvVDN2ZGFl!DDKV=NX~^^$Mn@x-jhA6FmJeW>C-h~F961~t+yE9B z#C0d$xJ1-ibAjBwnFLT|o)fG7lnH;Osl(XAZ06>|mA%8F;4E(wJ*ueeS(Oz)V9H>Y zum+&!QPb7eXG*0^Hn618&M=H+uO&P;f?kxKD4ZuNHT6^kiT5aq4-H!)hReX?o z(BzRkYy~`FsY(1zJTzFOC_~9t)^zEDW7S|RNjn93l^Zg98eo_-+SZL;LGV-aR6;}f zD$GQE?3t4%IYt^}QcwtxcKN1R7P? zRGr5)GlFS1&ozY^GpBiqwWHCfcg2+}vtfs}NI-rvH|$|m%xJ9H@Aqg>s2jyuRcbdk ztg9J$32);u;-QzRC>ZO^yev%qPVY2d=vd9jO;`-=K&%d*6S0#8cVxRY|GAu?|!J`OtWa%<9M zPS@{k_qKc6N4}l6C9|a=p_jYP+gvYh7c)DCmXyu42t;&GhbFJ7mh{Utdv<@exPDHB zzPfA|q3B?o-bV*i7tShpB&#S$*+8~qq%tpF!G?*nDHIY;oNE{dkmW_gU=dm^WB>pl z07*naRONqa#V87T6r`CyW?k(BwXcii-&i#SNg6AbMR9euGSB^VEg>tOw}S$DfnC^r z95$vLd%SE{Xi-T4#ECTbT6LvH+^C??NFHqPa#wzc8z1O-ASEABg?GY6-Ow;iOjxT} zmsA2$fp!llzh6t4UzWB`ly?C^fXOQ#ab4RifHH|O*P$FnXbSe~o+aj~Ks4w6s+gNq zWWe1@hF_wBy!o=BiVuLD_EdaBi?@^`QLSf}Bof(+cP+q1Tus^fPGV?T9o@F(I;5=LPHSNGcCD!2@rQeYu9`kJUx<5+~ zrUDWl2EB)pM5-)phMn|Uq!FUbFzKY=!MvNSRC6;PCa@}Mtr>6WJ=a8G9&@6=vMd$~ z1PQ!g5_GOBjb|kAzB1XZDb&((ti)6Df6$oXYqc)UYaPzUuO$qKM%G?kRI~bCYm-&S za?c&1AwgM!8#vjS;=in`=ZH$P*fcTEP3|9kg&P>*g*=FFid$~Jg1gQZoSt<{?ky`O z0aVP0cY10`1E3%ck1iMVd>8SX`#@_5 z&$+-uF{7>>c4W>m?;!BIHA|wbZhQ*QJ>D`H$$7es7(ZcS9yU{WwRY{0PB@t-m5q7A zvUktdnm2Ky6<06X;GdN!3=6q3MIjz(Ck;=Y6g&FHk@k@{${c;`pj=nw`_K?@{7^8* zIU1Sn>GqN8_m4(9E=wD{lmAJfZ5i%4MB{5aU|ehq*sgyKVLH#j!{n`t=XCA19n*0y zuk&@8i~6ef@NXn)-xw+Z!EA|M)f1&>$N%TQ&ip%fcYep< zd-awRe8)e0W!&?(zU51B_2!d zIj!m|#%;QaAt`WJu9ndi_M#R>h&VAaA(@^tQSMkb4;{z?$TF6#8Gg)&(5q$M^}L- zH~~-dS64P!dX>+OK<0nk3#i-ab11rDF!GJHE4r7Y?dytpCtjVWX98fCtZTKLn6Dc+ z!hlj2F!Jbhoa|=HwUP;PN)mNf%zE+g*{o&rFcqSMmh#Z%b>k=VYTg>lK2#%942v4h<4^2$Z@Tx~x01`0;JpP^YR6D1>+MeSzf;>k2a8dMA3qQbs#a5~7U3Zh~Pyswn=Eu%H&MUqKy(@iH(?N*MyTUgw> zm0B^>GK zd`6+4hN^jINpSt8Zt$|6r)kFOl^VI?z4u63Tlq~W`2j)!%NWL*mUWI?DV$7wi<+Da z8U$Oz+E?>JYvP7yB_l6OF0r;$GJEeesZnS5HTq zCMf?dtI6Wc!tal#fhBH`(1>taTh zX`VbsT2I?E%)q}a%&zb0)sT>klr7=vBGK@qa53Z@*=kzh)rh~~RoHXvZQs_bade8~-*7`T* zTMTO)^W}^(z`*bBfp#rfF=eHc`i_t7m_kfG^G78bV>^fcQrdB^B+8O;=rzo3#HnLO z!gJqt!~l{8*1Tsc*KKu{^Ts01pRW}OQ1^+;IE`GdW6622*czBB%~AfC?R3ye0H^C} z3MtFpvbr-BLtUH;*Weft`rp^R;;p#t5x3&XO*>q4u&u!`f84=iYIpeC?K-sCNj=kkP5!aD7{I!(fK5rnU#Cl=|>*3kf9 zO1?mK^^m)UrW#&Az9J#VCSR~meO0Di3OI&_>~ke8*2NlfsTDQGrSz1o;dDRZ8wuNC)0@h~WEUtFV(9@mVXETL{+tbF@C zH=MeGMGB%@n5kl#oAD_(&WUzRVjfkIPpB8%-RO`5-NjyHMyv+${AU1Z)GF#_C~7E% zWsSp-?LU)7Y`_lRh~1ju}4JwI@L_ z88F~U&ZY_G>`Ufxd~m$pre<-{CA;f8x)6 z+NA*SN2R^<*KS9f8b0F-KE*EF{IMO+e{Jnv_}=|?8T#59S&y~Rl@=i|RKrNU@6erZ z%V_JPX7{-3c~LO!IXlVT?|W9LpmdX3X@O5( zV>P3gQ}3><`&KasO2eb5l42UP=zdvGD{P+C%{SHF8XInRHdpSW4<>t6btQcb0bhf^ z=ODQ$)N;w7f~)XqIezB9$$^1bTPm^{`V)B-M27Gup03xPOi6FWJ-)(|Cx%q8I6qeQ zsGD#f)~HPq3WTlwM9ptl2QxIR2v-tsO`7FS@keM>($x%wtC|1~xIu-78j}XhiAPcD z+m(x0TWMC|$p!a>A89EC2g7p@IqoHl4)nipuNz;l{oYQh8}Y+2h_ECL*V5PYq6j@9 zJYX4G&_fYoXa-4$$w{p*Q=kE4?jIUUx}wXPbnOPDwdB(gq!&=C+g^@b-54ZkNbG8f zR0***xi$)V*f8Hlt}hc{&vOghwdzD2^nMBN5DIXL2w$Q)&g8ik8sWT6Xq;gfhR;F* z{ep=4W}Od=Fit9iSge3~C+E6B5lOt0PZ&+~t}t@&lFnc?AhCP=&@D`JLK{JlM$R`z@jW81o}mWyRsfoZ~-Cj_T!|COBu4ej>}q$JgCO|W_yZf)ZUb0{oPt&TdUZS{uwU9}JQChjtSB4v+@$CGx=@xEi8 zT-P=T0u@fz<3UpmsE6;becA8xH~|fTr%qr?RF$v~uW7O9j>H_KcmxsH-y47Y*YKbI z)z8HB*Zt620057E(!=oL|M__UfPeI5FNxp3>Yuy-5B&K1#dmsAeDy#3Lj3giz8P=% z*>~XM9(G@R;n#c?9`x{A0RVU0{vrI(zxi3b^H*=jG&g+OXMYl&^CeHlw406s^;rAx z2TpPGeXkt-O}pYJzxz#i>Q8}7LMLr_)R za_iOj?St?AFkboXug7ow^6z6lneZvk_yj!n#ZQgrf9^+r6>om^+wrIV$}{nbZ+#tp z=U4v_S8q9qP$BJ#SHJ8{c;kQmb$sx>cS6;a^{@QLf96tiyXg78D*n$e|4w|xKl}px z;;Vigzw}eTiCb>HiWhv%XW`+GebA-mccbvVR=Ws4IKPY5=SK14BKUpl|N2At>@WH> zJoc#%$9Me0AI5_pd4GKVS3Co6ef>M|_BZ_=zThu?#)Z%S><_&KZ+PX~@Kyih1zE`f zz`y=qeh|<2yvN~5&w0#+^yS}trtHF?04)g@)}IXswP@XOZYW!dQxM z5~YlxAs)~uWBu~9jGE6VjI_oln}v!L_wXFpIF~JtOKWzSf8WI8gUSZV->P83=bPau zF-JYzENHNyK+EUZH@%FKucl(fB(5PaZdF2IjJ&#l>fR)-$g#|CoJfWN1ZB5RA&4jG z3Ph%VAG|9=CdG5K=Fwtv>}!t@g67HtJt}gpt|Uo|gsuXM-|w)BG=Y=iLP$u>T zJg-P|fjKdXW2|#*RN72y&wI;fQ&eqiX6sl(!B)>XGZ@~aD0RY|KjJXSq@~Q2kP5%& zBT}y>)_dflFs~OA!dY#tHPQ#mPV=)XBYq;htf>?QZlQ#oIV{9IULse7YUE{sD)v-H z9S+UQom1ItuEclEq`XsWUamb2Jyc4gBrQxKoTiqcHok6=7sm5csS-z=#zY6jl1YVW z90u%Eo~PL@a>kHGS&6KKm=NO?VF;b3$rZltaBGPVB*-vv1qB8PMc`E7sRL^o9!z7i zx>3MV?kF1EpuzlA-EfNZD8dB6UOf%wL1fjNB+;|*chxk)2uxXTjvw@x%G~GfJ%gAS z0KtB>3Px9UJ1a1;6YLehx=~8OJ;?Bq>CKv0UMB||!gDLI8lfDAbx1V~3F`d@5Agev z>!%?kXj%(j7@7jI;>wjBdROdDW}M!&hSwHxhKb3gtQnJ-he2uWQPC@K&3Pg{-C7fD z!&Fz*^rVA_=J>idf#rk@{9dEt*|K)b&Ad-e&-OqUi{ul+y$7BShSMS!NKMY}>i|`( z>*6@g{lF6_yEje~!MvN?Bi8w@TDftC8HyNwi8j!1(L8+7;G47q$LAnM(o@I~8@i!9 z(ne#Gs>>G*kSWVzlVY2DC+P|(y2~B(;Pt(Xx!j!gRc#+NylcpPJ!zNw-4?&bITmga zhOqiX%0P_?g}||&@9{FoHDSQXeG!gw(>!B;wg)Ay%}9@TexzNbfZs@~{T=&!vZ+g{l z;1Q3z4eQeJ?%%xww>{!kJmtBM#Z#X9*b8&aeBDdF49kAS|MeCB{#@X^?4SQ6p7#95 z;dB4u)A9Y^^jduXH@_BN@xOmQ0N^LS>x}?_um1WkL|;2z`E6zddGwP%{@ng*`)6PI zT{yjS4DwuRaTpe8PkA*4MoQKl+_N2f#M#@BBZ06c2m!1MyY=^aVJ*bC2)) ze}4);_^*EkFZi0ziZR^zfm6Kn8(xLy|HV&7n*`tcFMcY1`;nLY9Nzl6ci;tI{VY8E zlOKdP{`jxsjX(CQmzvvUpZ|exehoh5GaiY*_6;w@PyB~B;>Z8}&*Lxr{pVkEe)j}? zuhp)FAJymNtA7Jee$Hb60KfCLKg9cQ{~(_DtVaR3n7$4q6$;SK2)9glYpmH?vMF%z z-guV36-z}LYwBriQSXcUtSOIq0yK=l-UvbFhe;0z^083};5|T|N>UTak>p%*e)ZYf z?*N6kMm}0w_1po+PG;@TS0m2W5S|N^?}>g1E7x#CnD*zW*pEgcQh%^u#c`srrRaE3O4o;4vf zb8~cq5zDN0wcIuUJlDkNl7Em#jTe{RM-(-X~Kjap{N7ua9W{RJ`0`_W(DR6{;a*Ldc@hB#q+9UvQHXYCO3FlC|dH1 zRO7v*um8eCtqSu_AU&)rlU0j(|I$F?B-4uVDCxuC!Vr_>138W=+-Z3bs+FxCZXoVTqi@n>b3E#9 zEVMm`;b7t=vx}mq8IlPYjv79~@r9mx^mfdI_T&#iFToeLgRZ!Vd_j>xG%jh#O2hpZ zwECLZvzY@fXspU1{9Z!-hToHp&Qo-^w04mpW$Q(d^3S;Moab%xv2N!ZMYi+0OuPPh zUCStQ5$v~eZV?slu~ye{%rn}*O81T_YU76%7!-z6u{G;|2TZ&6CQ%o5ASjM;XR)I z{Ks8aewoX(r#=61cWi>o)E;OWnQ9DeWD-yP)-Z@%wUy!-dwkKg*`-^bNkPVi^{ z#-G4L9(DNyv48tp{v5vWYd#APdE^7|bualceBDdFEQ|*GvjuPXk+aWqo4G!JWT@dp*!xv>tFd+{OPZJ zCLZ;v55?|e#!a^zCdWOmUH19MeflThvtRTi+;pE4Jm$#{#|Pf?;Y-c$M&Wy-?ON*t z+!%gb3w{rJ_^r78ci)fSe#;-=lb`koEN3hJ;J4q4+kf}{c+kUdz2@`t$%M~*!4vUQ zFMD%@f4u&cZ^e^8=dt1Ob1{8YI=AmF1frZrrDrCy8-!hvfwAOA4Iv@+k`2=^<*jF2 zc*M9DMkS>$zd&J@KX+B^=7yVY+L^M7aXiV7$OLnGJ$fMn^i3m zhVCSMS>*^o7@#z8v3O<$>`d8cVkgaTgVb&}W8Sr>7$ucPdj6wEEU6jB{83<(23Iadmk%CIbg+UZV7dW^rHyEV|v}n24!Kdhx;li+9Sa7jwAY z{Cbs5TFWYbVKm{mL-}Ngr{T-V?uRh``}dUOiGON~DK=#lJcRJ-9dc z*99=T=$=EI9PvG6<2+!izt62TOwA&imUYF{rYM=ME^v)6tKScXgF}R?3d{Jwi@x^R zN2Ytvw8uZ=6Uq>hu>rvI{`}MMfQQ}}KlQRV;Rn9?HTcxedK8}XB~Q6W-uuD#ei+Ny zikE%ktMRgLe05wuxoR-}gWrB1_NNOz>C+x|^!fMw!3S~Q2i%O^Nkp090S~z^0N{>4 z{9qV49{Q+{!(-fo;}af#TZA$F?ytWa0Pu-Ve8}Az|7D+l;O-;aSN!VFy%V?p&Kct ze&RRqxTifFZ+rdk;IICZ!!Whu^kww8Wl(j4;|5Fv>0SuKl<#Ix4S_6#Pue zqx=`VMoOPr#vGrD!9ZarzPsIoeP3eSHQz{i5W5o^5hS~%3wgfq5NbNYEw3NKV{CS2 zIM1^SmQ;o~X&Yo%`n?Qq_FH+XD^W$aP`)ALc>xV7JQY+}GFA4|SB-n^WF;iL+xeYK>S4CP@}Bf|;vsHwus_Ozah6;)fT#`Rz@ zu>`oxuVCI{wKOeHkNOIzE*1vi_|lr8ar1K9rnovx>qLUi)s#d{uMg5)fMvCO72U_7 zQs5QimQNOz4TU#_7I|-(-#!z;W_(=NTK#8n{S>u;h(`0KzaDPEI19&KhOC zUGeE2wXrka(|XVTy^2bVQ7m_mv5fxYq0)swl(u1v=_Td{v4RBYx=i_sJ|;5Y zODO65^?>)nb7mRNn`Z_4b)4}Bn3!6G6_}cZW)$VylCTOy)^K7ngPdU9)05AU7}+nc zObxi{s)Z`4YJ@Z~`EiuEj@1(9Pb1eH=PjV|f%E_ccJqXjlNler>(s~Y;XwTmMua(_ z<`KwHzOqLI{`$L;|M*|#4r&c5iv51I(W^3*(GY?;&n=V%3pY;B35ACY)torhxa1!q z6h+K~=C1u7^aiZna`YOlN{8hJqu6U+UIw2PfaRZ|0i*j4!2kdt07*naRAyOv>i#hx zMIm(nRyv(ksGx$iFYY}?yr`iMp6e(q1(IRcZeTKbF+E)AH3=Q78IfNTX9NP33~`Nw z#DrHPKg!V7QSsLZ{an|~djn;jFf)uyvwPQct60X|bPTN$5v+c24dy}<@g(-<)d;ti zD6Hf;Nhbs9G|Hay-~kvt*vJEOB`Ts6IUs0evz8Y$37FVi(m+LTCc(V(s*bvq>+td}V#9 z9$V}Dp1I-bZv$sOF#OebU2B}&SI6sGaP#_LcI=s>hioAe7oM%-T;|p$7cy7R_P!RY zkv&jLiP{SeCpj!!Wh4av*W(_vJDISYEtkIkqW1PT{T?3nm#Vfw;b@)&J>b3adzxA9Oe%E~-a1-W}3IF~7_W5|oCqCfthS;AH7H@goJL2>G zAABEt;JtTZf3}2i=DolF0RX_Qx7{c1tNCh%?ga<1erxIfTJ3H>U-=)-pWny2U2}bK zWB73`_&w<1x8mLJyaQ0hvtIB-NE5v7hu(raKX8g$ZoPUb_|Llu&w9ZV@l)UPX54Z6 zhww?C_AuPP;Ks${8))C&>fx@!+29^ z;cHCcx3O789G+5{qS`!%OXWip^Z?ISpyKh6gBVHNBOqRQ0WqY^WN;`#2*wR zNq83pKIFKf;!xLNtmS6+{;*InRl{9+HWaJ}%`SrxL(C{Mi2##@1~d;72yYlM1Kuh< zDy_ual{sv@RI^&{6~m+ErL`S5eU9oO55&326V>d@|`R z=E{{P30%AP+ZFw6H4l^4fWDeyshM-4((is*<7A$6xpp^j(rCx(U^Et$g^$xe&F5oH z{2Af_m7wz*Lsj60gEUep7$RZHc=ItZG=rWoJ}5-^hKE0y7lu_66Q5%jKwu#+7CPg& z<{nJ+67m&tWjU4K@E%eGPg++u9!-L()>VZvtp$yuo>`>ix|2CbIy7+s|zZTv+bO)<%o_=)%tA|7Vuylw5>LmbHukcq*O zp<_)lQ7v&T1$XDKP;|9CTFpt#>_;~C{nDX5!-(wJhTc~<$eL|fTC-5BPTs@HfJsaA zI@|Bf=yv6#S+ZjfM+z{jK+&^mS1}028I7+u^#UGJSWcFLr*1HXNb*5t<+H??%yGm# zRvL1QEr;VJJsQEhQKZq)t0VV#pEuyuu$mjcGZ$5cq$LpIc`cqW&Rd!^v`GOEH&a!t zWlt$ok=%s3829~heH`!j`B*dFn{ozkZ!Rvy9teadq6je0Gxqz%N{p*l%R(BXst3Rp zj`e%JFUL%I@z`^@7Jl~;1Hnanb9mDw@B5?KZqzt)t@#t)7oiaKg~K&0#?Nz~BmRx^ zI6UyIxWKWoXC3+*=O&xq4)^rh=e61)EnN%vhu&d9%NrV~22Rss%xj$n>E1iqet(8_ zUGt=)XSQ>8a4gSE4nSj2yq-hjwab8FY!Cj#2jJI!{&#WvJMX|_!ivypj#r=_eR_9WX97! z_i^}vZ+R{L;J4q4E#rJ>H zYw*6?KZIp}x%u7b^Vgc+$GTl>eSjOok88p2{sU72as0GX^DFwQM63nP=e z!?vlV2rh6X&-hC}V1&tpxgl>2LDiM8dKM_`bTkv7sxiS8I6GajKiy+p7qlkWolI!6 z8Gequ3hFrs8ret!^&kI008o!?@$_&8-c*a)6^Uk!x1Vh&$ChO{hTdWYQ9l zwlG4O5u;Z6)5W(GSJGP%lIcx3?Iz5-$x4nk4;}KU7uhxv zJLXBF|5UOYz%y}H?R!-&byGk<}I3D%J~4tBa7 zuoeq-n6+g$TkeR~5aB4T+4Xv|$vFwkfU~aZRe2WYr}q@V zkesf9u9k53Y*8$$=b>2{Uf1(^O}VXiGo~zEao1_bs;0y(ODvz^nE7pl2Zrlhz0y z?rqj5!|x=#X^gK4mes4jxuJ;3$_07QkReEtN^JK73uStU9`J4x_bG!R`Fn&}JMZP1 z1xw(32<8%=yVW0wGkl)1*KRjMn!(X%YYI{f&lz~dEa736dj1}XzPW~5!*W$XV{JG4 zS@j&a{#JSC@eZ!X5#a8P;UnMfiE(WY6@g>0xmZ`{MfBhR?h+A*F zC9Z$--~E2Hso}PV--;LhjXyDj*4+Bw`{0Ma{q?xx_79;=f`>o$LHPWy_>Ait;05iu zFMcXs_0nI&zyHTSj?)kC@xX`O4^MjbqX7U{Zrb4s|JonNEB@{4@VZyL6;J!zPsa1U z^r`rPZ+R^M6F|Q7?>!H%{Px%5oBq!CVcJdjlxI8=&wcUbLTT>vfSd5A|H?D*WB=~w z@zXE=B|P&_JpoU7?ql(t|L8}}o1kQGzdO$#aQ;oZ*8J}2_Vr)+9{>O^{=3gTnw<9- zeq6LZz>VR@W#Iq7husgK@c7#R7`#5=@wegr55CW(p9joq<|)s6EPnYlzlBF%N7&e* z+i4MK?1sEKXqu;Xb}#wBXo%?X$RXoZk5fQ;g1A@4;9+opTKU7V4M8^CpURp7kvz1X zSXpvEs{*0jXl+?K=6S+?Z^oU}2PFP$r@k2mBVwnkyDO8O1TP))Z0|ZfJ@oRUa5%M6 zg(*Pq!nF%^eO&_(%;Um7{MKRaaViH^vNF@gJnzE$aqS)bbYIraEBwGt%CW8x@sm>; zEhJs4R~W2LCi9T6d=WhoQF0w8y6}fETq@gWdO0z-2TPYy=|~TuO#UlEJn^;FdT?On zrp+MYVLXdHH}5P2AO!u$pQ9xiGC}}m9;N2VPsPKYI0shj$mGa8txvBZfg4DqV_mpe zYQf^;ytCr=kc_v`sQB7iI0b?ilfG=2sZh-GKyOUL~sy9HuEW#2E#u|Js zWvQVFEObw-R4=_I1TY+o@Gzg7B8)L{>dy7$r78;$5cXG8P zV7(RaB^3SGrkpRBQNu4(v~;UcYvx(FKU)h-2-B8EkcRML(QbKY05kM8;!)>#+z5l* zH`ldeY7Zc#AcCNmCgN@!$+kP+mp6X!}vfDX8Os}e5 z_{)eBqlZ*|Hpe@z{pH4bqj0;(5OvJhb&&_#p;sPIHlP89^6ck)uJ#OXj7-S%psAhx z@h>&y^n1VYWqz$9^dS*(OFG?vT$+JE`Qce~v3z3txiUqbu0|KJsP z%I7==PkHWRFa6Bd|K;z7B2SvPt?Ep1%Ho86P_YI@$)SNj$e>C`aW55+{E5QT!OcFJ zLmqR4sY&s~;IWUmTXvN?*lTFynNUzf!u1+1n?R7E3+k@mssI#MukO$$3c)5=O>M&I zU1xThtLYt+a51Gb892vp2|E?$2@?kHW9zd~d_$o3?zjOG7Ae4LY>F)Bt6;?;OX9oi zmkfh);Satcwn=buWyZQ%`PDVt%gy7ZR>!HbTbx8tkt=Iuu*ovaRluY%ry6Y%2n?}v zZ;{!)G+~KtEjdQ)-gW6waf8BZ3MLw%aKxA9YfXF>_xjPUP!H9hu_#JC!%iR-R=SwU zYikpf4Y-UUD-UU`WvsJgzMm{5$@NdAfpR_-3BySVx&z0G%nw310-j{mJyO5t{vO=dqm|Pq`zHP%#{E{83?ue-)urH$iwtan1}4u;)!FU02H~6THlE zf-n~`4>I!ta>Hn_nkqQ?GXUuDAwq8uxbds3CCmV}cF!qt#83cH3n{~xPeYMw#?~gm z$;piUesA;X2>k5o`7gL$BG{kxf%d}SgpO&N0a)T?@xB2w%=Fc0xJ_Q#+zl3{T(;nm zB8s^r8aB@(!)+R*xOP{r%%%u09lN>3n%H_+hlRA+;l_ghr*Aex!*T=(w+vXGw%Nt!t0zOiqWScgx>vi_}*Q zZ>Ct&j?usn`);8!p{J#k3V=zoDm>Ismm3%&+B1$(^=!qHp8c4+ z)z9Jf>YF)*JIT{%LEe1PW_y%33>+)}j_jJ>HcAUm?Jk@}{o@`FE~KIefh<4u_4Z|@(lNQKdpyUG z6i`rh4;O#e1PT4$3>a|O`S@KHU=)R|rPGSoskfC&22|HD0x{Gl>Vr!$(w0A=4ol)O zxCWI^z+oEseC*VpC(Sgv)WL4umjNr|T=U96V5iX3xEw~i-2~mQZU~T6Zc4xO-lA}n zQyc#qx)m~HZKh&Vo?EG;0-$FM3V!(%9B^hBT^9x52V>Qs;M19=hW&o;NwgK1G7pAG zi<~&?x_StoSE1QWW+3o9Lpeu#_~gpu_}U^LO?O&>8$i^(QjAIpdr$BIk}dMt{eJblV{Pz0;-0|pDXv2Aw*PT2ga||x`~4oR zSu*Bz1y0Y>Tc@vv`}EG!ZpK4&zkz#FC<~+>+qWAstT%{7+>^ucxN8mhEQ)vtH)BXc z)os+hc^EdyHMZpCGzb=a>VzK-`8gY(+3eq|dl^|CG{;|t;X=azqAO(r-@lw^2dm_M zNji<(T~xyP+R>;H>pEE|?0&IzGu+FWjPhK5SMp!yku)rxr|h2RNpm>^z%iY%;`{KX zm|J)oZ0@+pToh7ZS-ImX!kX3T@gubatexgoEmm)>^# z7l^>aeaCU|GWLhd7_N@>f7ti621@TeJ^CJg@3wC?sIIXgCvvCj=CU_e%oL9Dq-pGU zoQN%w96hzZx82+BZP(xaFJ@l=W3ufwnlE{AABV?` zcWl@fm^3z(Fu|28JDglO!JT*BWd;#H#cLv-6pzf8LZGIhK#MTrFEN8mmJ6>28B=bh zY%t`}KBi{8buHmfV7N;pwMDp-qango08hl(yZPOt$Ew>hB%I^))d6H-Bvg_*AB}%G zg`%LBYYdy=CN(U5SxYl|XeekrDV%49NZIp?SB(+(o?v(i`iQ@IYHET2a~?5&LWX=K zmJtV-Lx!F_0F^%Cohg|V+z(w^eSOO{o}kAGaTvy$pQ0o4PN;pRg4`XKSV}nXsd`8L9`?j=RVoe5fj%#~rr3U&NL7~Dc%_4P@FltB^RHoEj5H#RzsK`iV;#ccw` z6&`ToV&O+l(5A#?UtwI-%xxm#r{c!ILZPmxZnh3zBdK(kiCLYCAy-tQ>@SVMXhye| zR5O*Xtr3enl{7j{mdhf3PuoC}x5K^KpNt2&0nL;3cDS*N_$Me{8kFTM>A7+Y8>Nhf zxpmPTwBza8dl-~K+${UTG-aM6!=)_SOu153-P3||aa?z*0)?KI2!*P7 zNSp0&W|V17%(Kb)Vt2d*#FNYyZw!YK=U$Vy*HBOzY{ZRaQhAyrUM<~oefb_wFRAny zs?Ci{ihvc@jPxOpsGb(N_UILAT?DSH6LW-@aX$#-h|h=pAU*BqSp=yvSK>wYenU<% z#CPvF8Tcm;IB0aF=c|P`itBB@UcwO8KG0ggM+=QB!YBuV%-=cBQ|vt)!vVB6iYLFH zr}S36{kR@2<=$&4+hr0lzQcFk-F6vc$vt6I8J;iu24(Qew)4E1?*6!3#*)#SJ;+4q zX`2HjZKkoatReADwriGhPuVfcyef?98jm!1emmw(RSzq-ebl{C1_R55Zz;48qVASY zY`&|C<(Q!oQVGZsS!q~#`-5jc;0Z8u=&)3?swbIMhQA2roq4G&3ll#o!lM+f4f|LtDl*5y;BBFBB?AzdigK8E zFiobwuZz=4YXf~A=A6lQ@D!e5OzK7zf#!3O$H$cchFrL4UOhyJI}r{x2+|T>6jWw% ziW)4Shq7Ud9m;V^ZeU4U-eyT==`AIZ!$+C-$3p;{h{X`CtMMvUW3v&#$}wm8Wa8ek z7Ei3eIfffm`cx=!dIx4KiDJ3Ye2e#2t@Z?Nqp7h<$aO zoXi$3vgVjYhzl%t>^vs&$w<%{6wo!5@br+=%-@1E7%_B-{AQl$L1M69L4n&1qOO>o zo-H9%E~l1cJd|dh^!w*&wuHYT=F!738E!gRsrAvO28AUWS4EV&UzaSCOe1Ez-wiRA zS1Us`=uuS#c4*blge2d4G`y%d4?*(-_nar97hd? z;$E&9&J2#F%ypF5e7`Xlxxm9wx7#Y0#J%l4e!N}Qqa_u1ZXoHocw8U7T)+2ZyN7Hb zrNiM*X?pbP_~4-f#oh8Ck~DK~bC#tnr(lr~?k&)yq5;Q>QN!@I%1t^LG7jf>Xb`Ce zl{(K0CWH|;QXsh&XzK5E9?458JjMf_`W)Z4r5!-5Ts8o7sYxf(n%&n9!32@ZdA(4X z8ebG*2)_O=fA#|iXRAl7&eQU*{aB%ksIhDxs7=#S> za=KD(J;yon(zdN*mcHTiM9MWEQF8%>#E|dY2s33}H={dpeRGW)ZwOQ}5NwVuW0QlK zQ_+f0yPQiUgm@1XSxq88HcArCILIx7uk*3?FaG5>;IDu6*ACB^@G|)cOCNr#^k`#9 z0g7c_4`FuRZwIp&z7Mp|^%~Z+{FO2uq>vXU_(+w%$+)>5(#iI-1bkCC-i~?8uD6U5 zA(WG`Wdgkv%Cp*0&bLhsYxmqQ^&Kvl*eR$0O+AL3BgxH%MyNVQg)8?8KswIclhBeo zB6y67V4kTEP3WseLdIAcSP0YV3BIC4vW^LW$0q~F}c(|D&ai-u2Q83=B<0?z}ASD4UjbU-OSk9n{!gp7+39js= zz-z`9>$SOp0#&qm2PU;YtNTk`RgAgaEsjer0EAOJ~3K~%G|#rwAYwJX}}UXZKe zY+bC9kFcD0?sbC)f(t(a&sF0!+({#0WJ1nqS=I<;+%H@|moK!+WySdEf3_7q;CyWI zy_0-$U4VIVV+So8tW7IuCU z?-KU{MK+Bw*~`~;4W3GU$kwaydL_&)c1+7VxAHl|nY013AFgoyr>Q|(Lx=hSQZcq~ zY1(ODB=eJPWwd#k(9zw?avJc9^CTQbFM%!Zzf23l8RpA&OyAC*xAHNcNt!t(Yku_F zwcnjO?qwR`p8CQuJ$OtBa5v_z_m(;*5a zaK<_N&VIxQLL9$ff|r9sx&P2BY%@x~FziPIU$(i7x|Px9e0tZJKTzUu;iquO#h%<% z^l}K3ixbu&R$<}bjy!cRFs}X?L!%V6{rd~?}!We^R z46#b}{CMMxVvB(1F~-<1-AJNU;mBFUW^j2Xk;l>?8kf zDPqfj%DA*Lt?~o~MUC6wlLlNk%aH<7pn(mog%VXZ|c&0}+K;1~tToWCGTIjdULE2|)}`pG~WAx@e=LsYRNoi#TocA)Jhu+(SQ z)i<6xE_et;fs-OC7FC6QgiVFx0bn;_qqZijhQZY|lof}c8G@EiMdbOT09pyV4yEPj-^H>=#pvcq;B= zi~I&Ymc9a~eZlTz&cu@t&)Xqs3#&r1D^->VnTkt#no*f1oml8n8r4?Gc^B4!EweF#X%b{8Mjp1TYYB-cJPiO^Yz2PG4dOfZZ1P}x|88f-uVtx*kK#4s z@1#>&2sE~sF&ENrgn1<3><)f+m`0gdH5?X!g%CNvUbI7e?$sD46heF+F+N2oD!RH7 z#qgYg-`jh;S}AJtA^_$|u-A^>eO$5WSw$idVD`K(rZ~ITMhIjAc(s|mht^Cp&{rwR zgzNq$prL}N>2`>gf-{tSQcy!1Lk?j)M|exaz2L;W5?oGho@g|7Am4|toXik4nrUJR z;9aMy=dnt!Kj!hE$4zq~+QLrNyeFFB?djPbfICIO<+Uk2RRT9S4kX<(ad~*IAn_$o zcQSa9kFUPJQ1M^g8;|`ZMjL&rB4}!wCoeI+Vw&cxbmZ>}BfprDvG<-8lUggD47T@> zk8oX7%{vebx$}HbLCemYR7W|D)f;K-UkQ)yV{%yTc14+MRt~(c8vN06>$Kn>Io0y3cYtvwC$Cg6c$P=Mnk*VN|NvQ>Nu@LI$vwU0!wP%(irMA z(WZtDKLnw{0RYQYBXSyX-Ws~j(iihYa#9-x!nsC4DAOuETb^bX?{>5(bP2 z3C*s}drN%{C0<))KpJ<_XyyAUD=9&v{C61qeaz&OEs}RjcnKnOmQ47~oNI<(YlPlT z?nT4UwQ7{PxQ+6~z+ZiKNeANrf9N9K!YeGEy*zx*H@+Nts|-`x>?K>=J#G^?^n|JN z%I}BoI;NA?caW#goQ%cP79jP0PG`rE{n(U?;97;hB4}#){g_f$-Y{IZ`)% z#`$e$P~F)2xzDBn2pjx5vXMv%-r*flCR3F>ID?EaoHK8}SPK2b7{y&(Q|cIJI55<4 ztXa11IKqy`rt;3iJJ0z}!`60Ptncb2QQNwdq<-Wrj@K00MLZN~SsZ^T_$gMU;4uNB z5i$}daN$9qpqsVflPlh9$Jyx;i`~4k(A0n?6Ye_Q+ggZwr;ry(D%cdX4``liKQJix zoZ5IVVc!v9NVS}GUotmFZluLPN}2-VYxzyBWVy89{L=7t6IW z_Gf*HAoH>`AC3!@2LEwmtz~e#X5IrTX97XmTZ~66`?UzzN4!M~pS1sv^ksZC>exn} zpU7FmLwp&Hz{UIl=(q=maiOK~-=nHkNqQ{__Eval&e=!RbBvKYhjweB;zb@)1Rtk4 zRbanZBG>TZuvHv!Vb~5TKd)D4G^-(y@bCl^_;+(r>?eb}DTqBz@rm9iS9Ul%+volf ze5`H~ZbIrgz!Y;>CRh0Ipc2*lt(>t{2wK6lH9ph3U{%F5(HqKh14XH7@vw%ZH-?ZK z=A_3ws$imgy~h7-wSSllL04;hgmKiR+(E?!@=(PUY5P}b>+&=XfucpW{B(b zgz4zwUJkHoJ#BJt20xHE@%y_QHPrLM)P%1zD6L&RhlQ5CSyI`Dx_6oE z;4Jxm-N)0ovT}XZ5kw2Dh|>^gUt_-@PAFw3BrQ!-!@}@hDRiLBQRNkwJg*89n_HzP z@&+G+u2|Lf3k`#hfJuglf~s5G)sUwc8pP1P{N47Wc`lw!-7A_2!XO!NM6+bls~Kk& zB`zo35~c>HhGoBmC#tP;!h$qTubIADHLxZM=!&zmj?=yIrfJ8yS}sgF*H{=Uq90ZG zp_0R1G8a+hrEK)r68BJTP2$<+;iLjHjBUh9>~^f+)(?JzrU6Gob~Rp2gMIbHt@~yk z)RpAA^x*M*iD4v`Tkz1EI1_+dx%$}i!^6zy%>76*iGAIFi5ILS8Q!!)gJtq0!r)?$ zgo+9yuT7;^m-16;#2_^*VGL&b>{`2?C8jY(ejXR z)CCXwukScEeachzd-1A*aS*8aJMsXkxuN;IMAGcD!hM8)*EDbMNn{BY0V?}q|Jo^WX)NZW+~PyjhT+CoTVG%ii)2wgL*)tW~(du00jqPU~T;m#wjHkQt4kVuBZ#q27D+=P4oyz6OX)8H0 zI!@2Bbfz>r{aN-4cp@yZuF3yQzDqo&@yvv4CKPs01wQXpkxoudaCWvw@WKG~mahDz zRMs5H1&B}+3Pco~6fFH+)nYfohQU1z9riO%Keo%_#*?0dY*h$=E6rYlrIz^(%0Cyc zj$I@S3~yRvh$YvzL1{#y&^?(&hPe>BC&eXTBO#)SD*|ORX6};43RQN>7-2#RugtLq zZ5_fW$4#13$;nj#B-Ut97&UPUhDS#Jntiu4`mbK<+Y*B!_GZ$MltCr^VMrkmqmStxB?RI zfqNzt*+3N2oZe31u_05I@%0x{DS-%tr^L!|Ky|ts{D*7~t5s)WdQ^tiOd^qR7%s?i zUKX)vA$bB|)ikCs-_SHOFGhC{sKmRjYv#hpCAPm}o(asaV?wp@K&x!#6_k7eOx_y% zw|Y(&pMNHbHk|4J&K5;uqEDtFr`eJalLoXX#|j)6!@>7aPKZ1)We?`wfS_!(`jYscOY&iH7{#O}n%^q{kAG#Vw0`Pn>arnzBO<|*P{YlbiQ z`{^w75#1vEl}JSc=(<`T z&G+T#aI+a65fd-nWQ&`At$CHnX>tQ!@j4%5BwTbYTh+n%J>Q@7e#uc^_^$Kszv!7u z_9=+{pPs)o?m|7J)i*NTu2JcppYzb>@ZHA46w^FMf2yP5CFB(#jN<3%u*4ItdCJuB zMt?8=o)3nLoDeEK9iyEQ=MH~A_WhV`quNYz{39-pW5%#1e%4BoAFX?f36rh^qzeOTr z7hVD@qXcrrhwN+FFByUeDl+0ik9w|{;zq9A6g(`+g+F>l@brpG@Li{8*e{+xrg%{W zzby(!OpbsLp4>53yBfWQ5?q00@s6514DkFcO@_5l7v8Ca5lA#3Fy{}552E1_#EqKw zhA>webC+-vmtl0&@%^)oiZ@Ns^J|gnB)r(itX5Y#YY=_e4C|@u$@_Vj(Oi@18{uZ?t&E`(Qz~)*lgs+KdcZ^-PlA_eGn^A6{c9q z9q7tX0UN_^o^Z08Fg3Vw#d5z`t{vt+vB6A@o|K-(xP-5$kCWa!lkb;Pvwsk{aZ6%7 zSNEWZJp<-ZaI%|mvTHcmHBUyJb5q}#=6Nh~Mkx03lL2RDq;CItxeN9vI^=n}?3#E^LJCpe;5@CGI zL2Bvg5tZv~5h6T8TC>vRYvxrEh~<7^WvEv8oWeuZ#(YsZip0y5r-*-9#Vm2%!fNK7 z<)xbEhH17uLPmoq0)kN=m(JCh{(@6AzIKKIikNp^f{E2yk*T z;mVa6CnpnlNW!*u`)6{L&Fkc3#>v$QCs$|eb`A49mCAkTg-W=mCu5PHpxEsMZB|UP z8-nY*i=4+?H0JG-x#PxG_8XzsZ0<`H2Wb2VoN)T5Y!SSMe3>#rrOn8;o!eFKiv8K@ z^XHC{#?P9sEH}Eulh_xDj56*`HQeh!HajB3r@S7MJb)JuPTFLp+!@9=_PKqIa`TaG zns3|uCI#l#bFiJV?Pc3VeIMB{FL-Zrem59MH22*!xE?%R`f(VGV&0iY_%VHpqpBVq z^xg_RrHpNW$`KJ(cx!fm%b5HEk}Hv>nA z`yxie6XLCf5kwT*F@~{InW}_8u45u&u2I75Jh!xZjlw8<+p-vrcVaSFO$Nbvu=HZm z3We;_tB#w9My*c4?&=OV-*N@-d-n$;v6}b38Tr;AV-%;s^r{f11$i`{7@n{97Zgda ziweKIVT9?S_gIC0b+oF?D+I#f{l4zQoR4{St{`y_vl$|)R!uUjOFWGnbC;nH zFIlgYC8(li$OHEo72`#rG>Z$au-r1CD=EF$Y;D@qFll-wsn4;AVBIf~m^9!+jA59A zPc;r-#ZIeDx8S&>=uxdp0L*?0uAB$Q=7TdH zV)#kV1_;9!Ca`QSltxd(KMRNOF@|RjW7{0%JAiJ98khY7=;WbOiWS|w#zY{}(WVJ^ zot|aIC#RWp@o*+La5&b1G{eezBY)1*e+N;>Dshyggn4|45EYpkR#warK5w~nXjo<` zZ;m5zTk<*PC+rqNx7+QYx|)*S$>)6EL-K0FeVdmh7`Je`jA=lkwg4lx^U zednCL_dBe2&F^~G;<25^d2%@XO1;UCG7OQ`>JSkLx?;5+n}c<7mK?K8gs!hc z^NLPO$8KxLd;Y=(5MZ}05u>FDf!!>c1dWHD-r@5u`8%D2fn!*uXMQl-q5zbI}PR6BHLe#hy(*t!b$9F*# zePDZa!>}5x!Ha6-Z0Me&Znh7b)g{zPEh2)dkCq~AR54T}aPrAmP zLjIP2*Z;<6Q{dnD*-yge+*}*xhrRZRGS#>pUMbJyKkM(%e5xKlD&~hTdcOg|6QB5a z{L$BZIlk+A{@KCza$#0G(?MKgIAev=K5VPfaW)2V+WL(SI4uNYj4}EAA+PedKFQq2 z&-?w1f9pGy2~@9rodWT5Ff!O*+2vNnxQkoI>Iv;66fMDHo_ICB>Hqu^Jod>~gC6Bn z%KT~AvRtH(|!VM$9Yx!-TybVTIO4K(=gy(j^Em@ber#-%nbSL8Xn_% zYr*4e;}9$)$TXt>B2sN{e%W^QP7B<)1YAk(sj!!IppznuL6%!CiEY`BdUT52U`_~! zO=TL6z=c{1Eg4``O}VsiaQnSYz`64qkMOY_Xezdccc0Rj9_|SCeg|hSxxQ0t;I6nT zaOs$d-^blARmJh~)}s%cCYxZM=XhRSi3dtz*|OjfMY39>P~tFNoJSm|p(0q0Zb)N= z4usMTc&;Hv<7r9m%s<|l9YK)Twc*&J5)t7>TtVSo!J8SC;vE#Fc5gz(UhwqACw0;mqSRk>Ijan+cqCC*Wo?+i@gi?iP0}EOykV_sj>;nnk6YKR1Qa*nvo< zIZxh?qylEiMAM0xxtMH?STRCCCu=6F3!V#-L>#+5x^lT=lpe*I(kjy2+BdXwHf2 z!6+N;C1N#6VbCGRV|}T6kPoPjDDaW%qB&l+$DCoLd2ST&H|jZzNNZEJ31Gm@(~N6g zwF2O>EbbhZfc-qTNZkG3+x2@nCgMkrwFD@47?nu0jA-!cK5@An_ne>Zwo5s7cyiy2 z!X$1CP6sVcyV5P?N9r6B(QE1GIjrNB-iuA_vh)C)4@bY8Mwh2wCq>izb{sXAzs6`U zo>H1QkR(RCQ30d{_-C6)hD@%Fg{o8 z{vXCYAG>d8>*}ko#JB!We-bZy=?ihoZMWk){?>Ql=3733$2|H``1e2lPw|RZeG~5e z_{RYNuYCDS@!GF@6~6u(za4GNn<4u&d6UpYiH%c_H5S^S9tP-u2N??$8**46N~Qa7u7BbfrAFq1k(- ztCcc8Fwph-q!B1(*wHw$zmWt-nsK=t<4T^$HrB#+J>PsL`yTtMZBvO&8pq!F`TL=s zqL<=S2uF?ju8ts-y{taLofPsP?$+l{_@QGY_1d$qi?NkCISRajPuUf_Okh}jj)NsW z!}wb)3WYt?-6+c698VQoC+r0H?cfw_z#m=QFk*$P-L{uEWrZV-cXZegmgW1hc)44( zD265tXxtG`_;9fd^D}ZJ=H_&ggZG`=GB(gD0FBR6RN6>`Q7V{X5Ln&MU3O)%ZH~tu zQsnLqX`!=2mWMo&CpGUbD^i^>u794R-eB}AgH;9jJTNSXTsf^hg79JAsLSx}UKmIfyLohmPh=%HkKbeLz!|pX}ltsH$tfG7&PiJ%_*+;i3W`=8)*MyvMSr%+I zR;8&g3wB;DD|Hl!$TiYYbLVR0?{fH?!-gHh`G8pT5B!LcM~h8OB9E4!i|uRKtRXqja|{jz7)uK6U+&DMfyVoCW!oB`HUN z!#L<1XKmA#m%NQUUgMwK{7(P?AOJ~3K~&jv4kq7xm=Lq z_v1QbPyTLBiYgg<)t?!Qc02Y|QGmB{47$gp=&zZ}WY z*4osR!mLkf;FKX3LyuyOovel)z#FgoKXws6^QL#=2~U3vzUF^^F^2e;L2}z7OClUh_ZVuDkBRU;8WHI>0Ak zA$x6q?u)((FMin{S#jk2%98;A{oU`y_I0m^zUTeuZ+|DYuX{bVuX{a~ANWzg6`tvfUIO`yXQThX zTd@1S?}t40QD|TAIUK0{z2ZFNHD8YY3-7@4gFjZmR3LhYG3r1-T@_#S^)J9D?|lfr z@Rs)nEC`be5manY`3|~NyW-uKg5qy=%fOMbOuNS!8;H% zj3(ZZsd+^Q49h+UW_VtlrGv?`&CsKvZ-ZTy?mPE++$hf^ui>~)E%CeG>e?eoXUst| z+Q5u88=)ofEYVIB^m~FkuiiWQu4CEuQr@!;jS9j_fNS9-WWuEX9-aonS3ee^uv`Vh zx)Qi2TtTn?PgTuOF1z^L>7=2+b!H_Ia~gCH1Gm<~Cs0HHZa|U0AC2q2Xq3TKMO56O zG0MoDaL%}GV8$sUkjxQ4JWQrp6|>y2SIwx6oO{Y2u0&VgK~jOjlUJf1V@bTNK>+4h zQf#+9qp8%5vC5Z1Ni={4e#aoZZ8k3A37#d4>sA!wTBXH~W@zAIkLpWQ*vqlL%oc2OWj{0?xvq&y$+xuoZnZfyL`wb`I&B)2=ZeW< zRhSmUPAm9qvl8o8f?Hxfj1m$_rx(j~lkW$QE`(n3vtSwkKi*f?JMz**zC=GB)fIhP zaI!1VGvX%tB5b;1x7}HkdGKP3FyqlU__|H=glU?}u@K4(8;9X|@*S=L+^Nu&#;;;N znj*Snbf6c+uPl#pJQzUcTxkv195u|d6#QncLBcBY$52<=?K%{h-=;ZlV->U5i~u|; z(VV2yEI2yXaCF36JQL2HKQg>gb%$IsKoc_!=pCC`F#9p}zU!87Jahmcjx}oXLZge^ zfF*AtpE2B8oL_3J!*#u}V>!&6NDO{5?To7_>9eSUB&ajf$!EbVPL#i=DRn z;&`rw{(Wxbsf=P;>#M0#k!MTrp@g@@I#eo7bZ%E6llIUd7zw*wIlb-e zrH}8bGCD9LH}-Xj!)x*Td;RW=DPRN`4$0Nqk3_o7S2vxOc2-+aQT@1(6zqNY~u z0=Z@Y!U370UxV)`atv^st@>1DU-nmG-lGF@nB6c}p70@GJ>-B{|2BTF3etF`9d(NG zhRZu;*6$BIynF`)b9zC^xJ)66-zN3R7crq?rIFE05?N{S<-}wgo{4f48M1YTf{Qf;) zl;M~03C^EChd=ShUxU|u=l9^}fANeuas8{e z{0IElzy2uzf`9d+KY{Q5dw&g^O@_vjG1oDjvZe`R2kl8Xa{l}|e8X#V{L+9=eBzU< z39kgq2n^_*cSC>UX6Un?30%Acz4dnBp^K2s2JNaV(LVe6=>PJ^fm?2~rY=5Q<}c6( zA42<-Ct!N&r$T@I!&u((?;sa09Gqi}#uc}AZUg-Tp9%cCpN8Ijj}h`OzX$T-&ja52 zw$L2q(T_s^p&tWoz7=@V6QZ@z?NRY??D*V;8OIlQc=`)&z>`1ydc5(k|BRK-9B5Tt z5kJ5fXarNa2l2iz7$kG#?^W^LbEq(szs{t*EFiO6E!$-rC;3${=KC4LUXyW*Fslv| z3j3n#`R7%%horzA$G|ly&Kb#k1J#b;j)1`COv8yg+*U@EiUExnQxf9%$0=9RU=d2? zTNp1;Y>sAZce_yj&G?JVA#NBsu4wKqP;p*%J(T3d%dbYrx_3(42xjKMjIxMjT*0%4 z-yED;zQj$9OE_L z70>4rN(XT&l#Q$y7|O4=zgASLuAqK@pMS>N@s-Y$py!mEsbs{v_F(!`sYvJTG$hKP zYVVc7Q%SDMio+-VQn4zI8`6t3u_`uQ(ZI?phF8)gj`h$INQdV*C9kxn?L z=7LY7fRe_lROA!xTq2(6*lq6}(xy1BVinKa5QJ4gGuX6%PhTt&jJxs{7Um^@K?Aa* zJ0gc;gH&6TswNVZlp<;pJZb=5X(=Oq#K%KfVeBa*G`w0frcH}n z9gOS{1As+F4RmIX7b$ob(SfR2k%wa!D!Nv&iSRXEV7M1NyxVwaY*P=MXLFD((8%cq zRkUfc3PMg~Q99iR)>%Q*4LPfA?lfGh#fepmic;T`M6-)=@&!t0P zN4#@-1nlU|x%0EjWov7ixw{OUKi9%upf1I+A8!}T?v$cFKp;;WJBG)(SEVZqO#$ra z6dezMv-vr1peZe!q0%mKZ0I-eCsM;mOn%OGo_@{eR>4;|ivL3}{p zPw8VY$~;*na6G#}TPxMdI>l3I|U$j#EaDJel&BPe$b@9%JC3A@10^|R$2 zYd3lr#kzWaC#H1h<|y6m7Nim?1fA$=<>ye(Yz9&W4hzMrmveRH#?RR+kplYa5HeQ%f z+_x;@AHVYf%t!OODO`2kc>urz_gyRohpZN;_FWWn7aBJ{<0-gs;XK~q(C96V4_v9*gd`dj_l{=+wwCMc;XEJfPTxZE~Ijt{M`T3TY>vN z0eR8qqy6D8g}m=3EdTlEhPj4Jae|Irjw`Q(%ro%nS73hiD{^99W|+bTciaX2jay78 zfAkLE4gbVTdDfYdsf-M!iQt>Q^ULrHZ+SmH_sc&GKmGl`f`=YB#sPEz2K;v7Z>_*h z>Z8Rukx@0{oJYn({N=qtSeMViS`YSHj}qw6_Wm^Sed2?g55gOyUjv%L&C&k#)8p~{4W%zcq- z!I_z|A+9jao_+o3XvWq{bMrj^I2Kbj$6cr5NGl6baeGvM@;$rn)>awUoRa6&0}PG`LH zrPjocE9FQ~9a`#+w{V=;wRnTfdDW(@)MYpTrz?R)c61+ytruZwWSL2(;|g7c^kHM_ zO1!ee9Oy>c-tzm&%6akjQQ&qL&=+OXMJ)XiqLWS+a7 zVz=#{D7pJM6f%pihb50)c1wv&VudWY(^HVg;M8;K0P|+@#J~xbr7N1!vBhIg$Rnb# zlHc>3dHp8XvNmzYXICrzJ{fP~ktJ1&?wP#O)zWu{4(=EeF-N8)4F)zxGj=;mrmrxX zW#u_mlo79Hrm%h{Sd?owM6`LpHlnAa$>7(3`Dj8%$HwyxO|xLP8#Gz~&8u2X*d8yj z)`L!$A4fi^NJnbWO*#w3@tTf79>c6Mq&n#NZV%_D2H%JV2iZC5k>O-7ygH(iU{+%z z(kft4kT~U9DWik2DnW;eq=f;tESVj;VciPYlhEVD{yV?IiMWa)jeEm$5}RnW@1pd) zl5fNdzFwg?mA0B4^WAmy)=j3?C88}?A7ZwTQ(_!&G&l&aumU-4b(~~FMY}9m-zwDf8KNOd7twF{IPHNwwM?DDkF?`Klihrhxfhz*Rk8}%qs~y z+iUMNe96mRbYO;+AZwdcGERa^9ls&_7ryj`rJX|jE5obO?iwz8j1`HV({paDByVSj zf9c)8FTD$R{Pmb#{)L$T@Rwrw;eVZ7?skx)Ig&d@^1S;W0Cqd*n|>Jmqj!Os-YsEg zIz-e<*%Z_&6))0=&Vd>8=Mvp_=L2}zYoCwzzSZ-})MRM2Q3o9NqW9po_tU7jRDLz$ z*&5EHB6w(d$2H$)Y=@uA-KoUYvoNXJ-e~0Q!3U{ijL+2jIW`)_H9AHL6Skp_XXSZC zGEa|^$u<-2>qLR!aHMd@+ToF7s{(@8#7ay78SXT>Iwp*ksqG-aJLwd9gw zN}vdQ8;sFc1#nfdbI|klplgZkAgT*XOEk=#YTqTJqAjWD(CBK@glTTJGbrM9Nz)M0 zGP%Xi{By9Zq_jrMB#V4MA~S(dD)t1F0oDz24JDxY9BtQlOx8&S_t05r@(xuh_J!&= zn956npX+Kp2Tl<8CGcjP51lsZa4%SaKp+_v5F+4OR`G#O{B(t``P{7P4*T*P5aKyM zC>zy|)Y-ZMDvIM{j|5ZFS1&NNd?QT!sW9VZo&`X|@ui*Nhww;CM$Pfa1eN`)oZ{^h zKE5Nq*|dQB;%nQyS`dW!NNilYrI&n82Fm$p0?^Qx#giDjQ$ZEd^OzRJpp}R=7|nBY zLt4EL(s{~v24-|6l_q|-*wwcvI-7ghtk9K_HRKDCK!x4XqYO8V;AOG(lh%A!Gf_71 zu{E&lcSc8Kr6tl2li@~0O3~R_`AI#oFGbUkS8Atdlko)}uL9bTb0>8$Ex7GY0v{vi z8?s5^N4#uSjQoNCj2H}fwU&-IR%t9s@OmeGo?DcJwz(z^S30e{suEqY1^X}aS`kk$ zz}zDfSialm(ffk)=Qfz<2^SyU0#W&>MVsQliPGmWMqs;BsP0@=YS8F*3rusvj#ajn zs@%PhOa_&DUC{N1|}{X#CYBkEz4 z8P(p&zZo%mmhS%BUk8AA@KW@?VBXAV(+pKLT1;j{PUv*ud=$yMhNvyLu0wshS9s=A zy?5If?9>~_01H!-3vkPHQZGro&tE~to}Ulek*V)g+nG8PKs~Uk5Vc z$m#2GXk)p~D>mFl@leK7e?0I2sPBwzj+=uvhely~QXUx^L1(%4LxU@S%(N+Sj}iS6_V<{=&C>BcAu%XGP_ad7kjU|K&f2zyIC;1eY!y zCjqz?!+AaGQP<+CE3d#;zUoWywXb<4zVDy@006}U4?KW}9=eDZeZe2ZV;+4SzT>a{ z1w7#ij~iz-YU190g=>9w9RF|Le4EYxYhH<~uDZ(S|Ey?fh(=)RB4Ml~0l3;1%iu5F zc{k8I+GjlvxNzPQ`CfYs#LL+MiuP4s4teUQ0_V>IpSa)tu_PngyX$V?8Bd2i_R+xk zbC72})5dnZMgNueKwkbukn0}{%roS1kAgh^(_Ja?}afmZNixYTzkR>~TeVj92RiJI-Lh)hjrCaoy%#$xvmM5>K(eGIt&UR z!MqC9^&+O+Dv`kc=3Y;~t{1sGzO1 zm#zip-B^_PuHm#{L)|NzFd8PF>v^Ub!YGU6p|v6uBWJqm{+g6A3t&ejxZdhYGjpi; z5ee?pT0}vfF`s>R8Y_b^b8pyqX$-R*bQp!?A;LLjMU424d_OQl8D_o0#m-zAC1lrO z%e7BXSM`?bS1W*x{KOR0!q+fHx297{M8u5S46Hv~Z38o)- z&I{&z@prh%H%)fjVskWkJ`zbB5||=gaH%F9=KP2^ONl1295JR~a_z;9S4I+WzRRN6 zZg&9Gj~ClSwF|ah-9&u8R`E*XD93KML+=X|R&u<1pUUwCJ^&&X#WHUuH*|7sq)kMs zEP3tysgiCr@t$Z>_1c~lW`K;$>5Cu1m?n3qaEG52FSHou8g#jq3!xg5f2u`F%$tUD z=Vq(C)2i$-{<3f!#ZMoOiNHP0cZjPV~%5wXfPjt{~GK~}*bZ6cpQG+%M1${NSv-aDo?WyCM@T?rCbCp!weTXu$L+Dn4h z0!L_ZuJQOuE9+OI^NdGzU-RD8qTXWqbQ+Ce{>*nXwH7cpCkzv>HbT=YY%#ABqsZux z;TpEk7F2sg<8iB^cZ=XT-Y%BEW!JIYT0&-p@$1DAYUi?1m753#Ye7R39%-~Ae!VZ2 z|7C9290?|OHj(#`pNQnqmwD4-?IXVr9b^eMh{Gq0RhOOGJLZjVB&s=VrdhlsyJwZPhbba+Xk=~bX(LB>+p8I+LG zzY4eBc02y-&%GU)*mZxRKlsLffS>%g-;b~Ps+Z%h{`J3yx4r#cq0Ii>*Z*Vu*+28g z@TPzM_wk_*--0*3`N#I&=k-Hxegoe2*0iP*V2$3Z}VtR^N;`?!5696Zz(t&L#l)TpSTtUEGml zIpxi{jVl{k5~-GvulSt0B2jl8>RhPIS_xLcgAY86Wv3BBzCGSX)Yzz;)Jul{+Bh7S zWW8IE^euu?YB2?L7#{u*cgEQ-4U6bq^0)xkM_qYK1JUBiA<^aD; z+1#D#4?zByuLc1`Kw@Tr0utPTHEpc*HF0YsG;140T=NZ_s#wd*}$7M@qU1jBrW?krt`m9@8{ipRT-rCTL9g+Q8O)lSVbb(64 zZs(=EeVvYuCS15M;lhO(7p|BAPmH{?5_cp1udX$1C~+))jGO3cj+B9ya=j&^&gmen zIurZKFXia8tnP;c=fD`N4&))2}wv0bYtD8ji0SWmaNx*yh>F>uSF0<%F zKK)r4^6c=WLmTL~JiD5oV=sWpGZC8^b_2m%#`p5wwcg5)ZE%<)_*vsdlj}B8AvFu^p6o#V>m{*Xj*fkL|3ulrnbR=b2kvr0WB~7D2$o?x|GUIqzjmO5f&N8p@j>H%$ zpCZrPhgf8q_QW{{MZ9wpA`i9t|#!K-=rPpp^$*5mTF0)y+S)~RJCa;?WA(gBXz__0>&Xe ztYJ8G;0f=vU}xa0X1`VV6~0I(R^9cYA(T}x_`1aJIYtd9R1{Z{%)i4%DPx&qK~>Ra zGy1#saGY_Mn8&+_SGyg{0INOgV{Xlim|9}?kdv6O2WZ~%UnZ2*Q!9vh^%Gl9(`tG)FpGa45Es%*zqhllq4LP7+3_6_%o`!Rrx0A zJTY0D4vqCrC7qNJF@ch#TGA=SqhDrN=9p>~#i~P8T{fe^nABPa`egLn=E(U;2h8aq zShhVK;K(CSq}PNWqi0&=i?WCoJNinxqf^Dk<;&Hm?^x9}=BJt_n>Y2K4@h^T*qu&`_|aBze&k1g{b*&I{P%F?l16R1O@L`qOl`))mv(4PFi)nh zoj*TYBxg4V&%z2tP#kTHwx`xGHDK3)-PRl~biU2A;M``$rH79V{yhm|yEDAyQDwk# z98Dar^JYUI%M%1K-Zc3pWE1s-*no;vt(vA8+JWQaC9A0&)Ke;+@h6w*v}w4e6Xh~> z?H-YIRUZkN;_aKvTxpAvG({aXqs>O%vo_fC-ITqQ1#IuoTty1sUeb}nyjbbXEbkI$ zI6v=3Mn=E+itIfX^Af^l|EhR-(lzMdRS!Jz z+HdTv4#3*}SAN@9Lsjt$KlsbT{k44p05i&h*k5+c^W3YjsJ#Jl;KKebbhkWSiMPI& z3@INbGXxPK-pjD66o`ILxnr0+agju{r{_M;E1tY+&;5*N;fr7PhwvkB`3c;0*T?X@ z&wMt%;p@K|Z+vq)qsF<7fL$-*S((M?;BiD}=B-r|kCgx9^A)gVe8Qbv50C6fqI0MR zgRBH0sn{per|<^22he**n7Fm10u`6DV&-{Vn=8mxiepYLx$Iq$OD%^ zV+O(O1(|>^&Hzi9SB2kdM<5tT5n5TsmWl8XLL+uE(lSdXi#k51#ldl;haSfsQmh!u zY0ixOYhQ@&3FFe|S@Cb0nujOnIpo89f#X+%6}jR|>+xnjr?s*(J{Lz+ieNn4UOBVe zflCh`XLx!jDFDj|hv6q#LBVkH@a~Zec$fmX9#J7JO;d|w5cS<0deU(2Fy!vW)Y71= zG$PGQ4(tAIaI~!D=n{NH{#I zla5J7n@AXdfEk5W-nuG5h&4j}%LxXW)MJbm5kX}U$Q)8k0^0qE9&sjM*x^o6&d-v) z&hw1z@ebXM&1sskEIX%X?)Ybp7l9pxgBt)#_awhvy%G@NtGIA(V-Y;6m_*Pg(xP~^ zG>J+=O)NUb)=g;NG_Clh%lmy-lx<6nArhh+#l07=iw(qsJ; zY5`Lc=D6j2LXA4&krj#O1_QAe2honCVZecE2PP`qDEd_B1k3>>*d8yTucWr*<7nb( zg_O)V%#P4=rosbUM-cxlBWnl)!jbuk_%7S4I%&aw1BV?`MJ5GC7aSeU*zIs{i-nkL^i}7{}1f|4XjaLD;a*@+fAp$Z<&?Gw8fURvgsP zr~`xuB_APu7bffo)_ju=&VSPBV0<;B4ihOu)@rs>=PA|3d!$Cu@4>|lWL3kd*yvI^ zS4W+xUWV5hO}c8?AF6_L>^Is`q}@oZLnIQ+b3;zxj@6YO6b_d>$6NZrz_&{msMv|H zfyRx<@r5e<_h+2+xY8X^Wc-0E^z>7%lWc(Xm2ll}aCESh4fR!9)s|X2w(r~5mdxVfeZ?M7j`6CCO)H}Jd~udAMmI}9*Y?9{y1;H z{Z3qU<0=c3|MTORO$-@6>5bRwFDrCu1vrAT?2$=@M+o^d%$8xdU<>=+lKB-_??vJvI z?J(fZCE-#_87dTT<4#L^RI=(iCT^r7fP<$KWDo{xzNYR7R+}q#aGO`&X|4HAZ-+{Y zoHuc_P23pNbT8!&j$TI8&&V^?d;JYH*tvq$KHBQ~w zsKdBQ?L8$$#-DA}aePdKJGrGgM;S_vQQ|mYl<*~f4>HmWmwBFwj7f*c;(0n)!rUUR z7wZ3Dv_^LYlaVs1fRB-zlbs_0z=)o@CWWs#ta{f-UK#5~xkPv}s?8%m82vzHmw9b= zo^Qqy1e*cP9dHqN-j41v$=X~z?;Usk78v|3Vv>1t5IeW3EMqO$p~zJyjlOhX60~W8 zc5~v0uvD~QSu#p*nkGMrx7uCiTs0k2MpllytwBAKhjc>$}@e3?2)hlTP65 zz>j#b@{b6hoqWt7)+5RNNEd_-BUEU#*mw-45;P|RztOHZ+RV6gX>0GIW8Ta-KDOco z!7f7#`ldr1Wg~5{B9<*o^GE}3VA*`Kx?zj~h^R0@mBVy8GP+Q4?%a&ND2{i=2N3+- z;M5g3n$5YibWL23)ew)$u_H^W?$~bT?1?1zMYd0_A9l^nGjZHmLU*xo%w8s(n<(17 zdYIVeNLR}>6T9`2hG_GRMQMO~R7cIFmOL?|Eu}c#R6RPdHFQx6i*p=ax}_Foq??Gf z*`~=Nj}BaQBX-dBa&-a?rNJY3d%;o4t(5!YRd_C=lh~)@RC9S%i!Nw^2a!^B9B+<) zU*o9>TOl&&Hgx9<>;g;ZcWPnT>Yq7`)^i7v);q8|u8Yhl6R@7gmqx(yYh>tOU2AX9 z{`~`nLrx`_diGa#37vURk;|}B-!aAEToH9#1OAns_Yor(|6}*whu3}Q|2^azNdO+c z&br`de~x2H0hS@Vh4GzmC6Z|QJ0cQ*h=NIn90@;n_LV!9+>HZ?R%2}x;yZH7(1#@v zw0Zl{$?$G7tP!eS9m72Mfz+L$_z2ChhR-=aj{uAC`d1mHKzC&?!agN#jl6>GMF#yI zV9RybXFRD`Q5h!AhQ$(!FB_!eGuJgEFbLEAb=zlV`|HhXpPmQdU+|;OIhm^*e6P;; z(3QKP#W_a#P8yDTBmCBLsK&?X*ZAUZhXH$!F<$n+R-ST<_Q8^;xxo_ULD!2>1?(#N z$#I!Zl;(yY4VdN$2=`_yGEFk-c$OAZSvtK?bKm(KGrV>uv9W5XqN6RV} z5&mBnF%)bqV_xGUkL0*>QY6NPYUC8ff;lw08>0g+B(1JwQaWq0%xsJ!#+%7FsT3Os za;Ixhl#0TV(J=-r1u}FuhF29?Ej&X8S_z{#VC28~7$Ui`7_Rs-`SBR%jgE_2_!oEA zxh_C;7~43{o!elZ8agy`s*F6bICE4zfuzsbd0A^#F)1R$B;`bgpw^ z#SBdCme|yeMmYX}IP2w-eO(kl-)Yd;(k+L?vPA>p|QITbz;c|TOia?Q=Ujl92z(+*Q(kU{}vsVK{ zj6q2~qyaTdU6#c*Sk#h!N zJt5Zsh&o^5u~?^>oga@=RV+KjH2D}>@<;Nhpm8S|mh?7fHS_Gi%cC35p~I*iKkeF~ zYU>f3K9c#~L>iWz!F=+_vr7*zR!-iJt1sJ~({Sc^iX2I5MxLSrV(;|cvD;0UeFI># z@v2||nsjV7rq34_ZCtAh{k;nrU;`?FgXWI5$^gb4Ad=qsR1ST~$e5p;xQ!hPaT;%>;w)jURLkj8jR`<(XjJRuFD5XZN z)OA!i9hXQU%HPB(4gFA;C2f(`2ANv%h44n_}S=eQauqfu88guk`YaSAb_ zMW7MGK$FIkHi1kq<`PhtqJ0DnDzRhLPWfdIc$`D-Y@MB;vY+3sQ5d7ZxIlG$W9ZZ) z@1GDapDUAHM;+-%XlW>`htVcnMJ$AL5)c1|DO1dVPo-N2#%#MjWL!EJcg|)VC%99J z!hXrznFzBl>tiw+_`>7V)f1d^D@;n2T@GNYWw`(RpZkj|;v-)Bnd2rIwg|X_n`^UP zo@9QyLgzJeIK<4@Mm~SiGyBiii)&xQpU>9T*e=JAf|p~eOlO4f3h#zF?DLwH9S;`jO#~>6@1(hrSJ7y9B|VZQ6OX+a?x0R> z!gjl}`~|M;iyJq#drgALchtkZo3zNGLMKYViSyV?9{B3H`^i|)a6DoW<|B+ zS5R~^DWw5Bg>lG5Vw;qKwu^7a@a9Rd-Q~EYHSD$vRP5NvLW4iLNjYz{NQV}WwxpaK zWP#70kuz1+5Cx~Hg~KQ(j~HA%`euA69qO^`>iDfN#lB5btW|6#IBr30Q>A3-iiL|P z8G%QwxFPPhC`_?u4@?CN>NbAvtoYATs=g#bpDDM-U=D0 za>Hnh42jUE0Y8f_<2TIl*U=hF3QN4h<7WnwWf-5qxBKPlgy7kN!;^QE5mZt z1M}<=W1bJMMw6Ri4$Mt(>9`j?sinhT>143+ZFjqHWC;{)GdV68e(ZMYIf%GU28o>~ z{5AMnG|l3=Ve)ker*M!YjNU~$jy7}Pxw_1)y6AS-ON5Bs-|l*py07q|-5Y$L$7x{v zK~;R2EvHNuiD#I!yoxg(qXO(`9&?;!&ZvA=*FWT{6&=H-Ftw@h@cLW;p-@k<*4&It zJ#5r#bZ94GR<0@|C1Fk`J#OHO^B3_bH*;PY46;HT^A1(HPMJ6Gs$rCQ_2NJ}O^^GX zU&cG6$zFPn6EEi(q@9x^#ZTxjf*{ht%zLGSJ>08p04YD_&1@+I$`Sf(XZ;D`Kps%7 zw7b^L$ImINC?_U5v2y75F%rlA&ZgX( zaB8iYH@cLqt4^C7L|vfzn+yO3k~x#%#l!WXXyl~Hrk6Jusg8@P;Yg?mJa#t%Y=0<~ zCsgm5IDA;yf6(ZQ<&Z8JxRR*h5kCK6YM~ao$YPelP7P5MjhhW99(O^dVx=4LOHPhSHA8 z6(dn1oYwKd3`r&c&Io`|*?Mh9Q_hG*eL!;uUr3(=5tm)M0uz27H1&MBtf$d%;}#^v zkH9wvQYo(M#9y25NH3iR!WbGC{`>H!}t7CVkuaO`S3#eM0(B9P{^H3?=v4$yYiuNfHIkT0rgM;-`9AmGGx zue8`$0k6;x|8&a=nro(Rq!&3xwPD$IPxw1W)hdhLYM|pn!#LE)Z^E1|=g)0$;r#3o zq8c)j4w&uEN=sArnbXViU>FHhqm#HN^rc0TI-YCulXmOE#fz`_9-?N&DP7|kPPLqRDgEn0@hk``TZw*IPi%_u6;u~KeI z@(~86cn7Q$6P3j@c}~y=c}o@cs^&z~!dqw+mmFJFXR23)A%BTTD^*|z=(Ge*Z@VY# zh3QHPi`dz1JxPg>CVIgH8&B_+a5i;JuDc(dW9}JW@3~3fOq8DI9K;;myIse8G~sB| z(7Rygc-*idaCwl`uW+cUm4s1THa!Ak3fY#Es(u5(_4 z4uti6`xHs60qk}=SQMW?=H}I^s8 z9()7?qvP4GiYo+B*(izWR~oRsSWrbouq-BgnL96N!)0Ss*YZ9Yx!rqT@68{u1&VBn z(e7_HSzr5`uT?a$o!V~BOC3IWqF}UBerFE45r&Vft+lhI{#K)KZ2T?0^Y5W(ED^zM zi#dV2PdoR9C$m@Rzz|Y!2f0#F90(RhY}Ql$C|tfWXdRI-k+Le&hrW*s%rTw~p!>g7 zz^2FkFtQwOQ-{BoyAB(;`-D8su_|ka=W)X5$~vwZKWWSbiAWG++#_6qWt**{-IMHj zY1g)daS|cpksn~6^4Es5;ZXh-p^H8yky15E1YLUIh&9DsMZQ;XiIoKghUiR=eZ?7E ziRTkVd7Ob1p^-0#1J+Wdhl-yi^2^8+#X9tKjRz+Q@mrBQdj^LbRepegz+QD zFta51=$oKO#h|WZ4vNZoD2)eMOo!?;&Kk!oo2b zk17In9Fc>2T0D z>^2MB03x8_6}7akeaah|ct4Mvj8cd=zmHbPUzSjo==Mby-4`a&Vd~=_3>TCLR_iDC{`Y)C6r793R`f_bR6OTo%vs z!w3t3M?&~n;d+#S_z*DZ3Y`oFE@_J%=HDrwTuw8mNnbLVB?rV~#5BXAe08~!-&sG) zlDY)vpK?R20uBDG6h$;# zGP*%FkT}%odWgp1@5nKT0BxSJ>~_%z^KOwh3e52o#W^C+9lcaapG?eGS7RgGY9!rm z>6o0)S$aXH#?HP0bEGaqG`&TKbayIR;(7;oF~)jNo-JZ)xr^h2#eo+zD?>ErB!c7P z#dW9T(KajzUeYEl$G(!+X)hZI$~GwTkO{Gi{36XPFsCcXmt2M}i$%_{8eAOLhoVh_ zU1xQu4y`%JLna{yw30&N@}m`A9MsJ9^#9PgE-v#_q+qhtSE6wV>O(j-2l-rNMRY{j zT-pnEP~Kssv5>!xNxd(2Oh=LWziPC9Ks^BQh@Hh|ZFDEGj=vihqlCqILubNt^3wu? zy?0ykGLHMKHd^J|AzLXMv33@ia9c^p?8~2BYW_k&R*5aBREfgYs1KFAT-hqJRpUEf ztbnn^G86&wNRcv2X&E&sK zatQc>P7Rw)!*;tX$an|{MJXhclT&sVVzrWKWIGjOfc=H4p>tGl_TYnDwDma7wtzXs zOnm!Dyr!qOJ%%=&6w;Iez8Dn;?_aLJ^)C*GvS3=Q%s`ORk(O5rO(ZJ~!poxulb08@ z3M&!0V?sTGObTPP$HFUfJe2t{RyU3QEDXk)e(_c9`*u_;iQ~tuH$x zo>2f99pY;i71l<8(GWhJ_C}tO6@=D|^pP>{{qFX82NlEdTJtmeZN0OXpKa_6cMc`k zox;s4>!|wClObueE7kDdV^>;i=ZEpAtD zn>Y_ijkNGiG=OIBvkT6U!~utI^}Yr$Nb_K{Tp2tj^(;UWB;n5fV!%>^+oYPL0WXp``*% zo@p4Dc+iLqwROhKMIuM&kdl+`Xg2^;m9t zkTL>?h{75bAfclpY}9qNs7!S=i~a*UmfbZS;ZZQ5r~*}QjX?v$8ms51A-r0fB6?#m z*f_ZoJwW|?PcH-90b6-RuEqKD8}wy|-QtOQC-LfX;+3j6RF8NR0X4S!XdL@fW`9KzD#xb3DWv*mlYnh>R z)}>=KO|7~CP!ou2>f{N^0y{cEG~ly;rA$>#Cy|y3hTQQZwi?k>8f#a?*9t~OcN!AJ zIr5cxo_4L}`039j52&dPE@uOVgUA%Q%jmA-6-7~$#V?RFzURa{^f_^9*`*hddeXd^ zAyW%SQ<<^4;ENUxYDZFP@~}J$dg|~vBh)nx!T^=?i!G{(7!_{=kzW zc*#p%j4Q9aa`kTh9fv>8C75?5$Z-*4tft&DCz1U=P3DxD9Km+GB|=dxsa39HYe~S- zuL3{yC9lF$uev7If$C8Bk113%fsjU`AqXRM>J&swa11+tD?A)wIj)zghahuY#Y4^< z5PZ-6W*9W#9A}gFdmFxe+NV7e&v?eu%UIUyhQ03zhm(I>J7`j2&gb|&;XJ}%eI4=) zv#(4p>LQ+PcA{0nU$|~%Ed$m*1>P4|`g07I7o7WJKJ@%aZJfqefc5&-H9xI#CsSeo z03ZNKL_t)ohz8LTJ}qUv9mg#JXMrDl$1`^KE3X|Rm#A2=3IjU4A_QD{Uc2 zn|hK0=5(2wN87-1j2Y{84 zMVL0{jV7F+#93iG1O-*ooX^ZWS3+bh`9pDm1xy`f6BU_Y&xzV>q1vhmkMLl|A zxWFXqscT3DJ_=oi&M4k5atxY|ChF=D-v&V%|yhbYa|j}b7KZ5GNi0Gb`a#IW4|3tM6 znb?}N%jl6qAXxLW_@;>QRUP)UtLj#qw|#JWh_xx3n*kfwtq1$rZ8MkSyH!$sj+SGb zri_wli73vOijG%kFLT1JZJH5B;d*~oMXoyksbD$r{u*9~uCq90>NwXM%_ptfBe63M zy*ubkYYo+ZpW&4;%o#cE&~#7G)+Q5r$prR^kKZfNVdyyTk;GpGCkm{qA2G5z&eRFL2QNqHt{?&}8D>Rrpa`qdY z14}VNnXfZtQ@uvK8}VXR-$~XoUEjw=w`RKf?M6V?_FJv#JONkG+L-6STqhXF_crNc9g9(j%inMmTVrJb5lPHB20)=L9Xf*Kv8iwaBdV-)J*QbE7-Yn+kRdcY zxIy{TBIx8Cl`Lh=s3Ft_gQ2qG}c=ra4BDR|+&t=jEE%~$&coF8WL4TnhAb^SPcDhK{xJ(Ektn1+r<3HcmPwARd!5wU28RPI~}b_Yleo@AKudc6{^ zy7~@K)3$Y8KxoHn(@A6S^V5Ncg3b8BwrR9@J+13NEo*T zhqNn};K7C`Om4m{Z}Gf2%tyisDtxbNaomS`H9B7nM^X?%u+G6j!ejY?xYlnxi}HM;-fGmzL%JXP%=~Hf zS^FN&eD-saUO;#i+&UyK>9=X(ygI=UZAY$1zmXeUCtbdltr`56)x9D{GGczEn;_SX zG&sQifbPxN*IavcKev2>bqER!6Q}CD^LK6%J6;X&tTMn}7}EhbZ!2q5`A$Al*Q<`H zR+^R7`-pajfR5Fi^4)RF6)uOa)VohQrZnQ)<*q|(_}g*L_}c&uN96GPTyN&Cxpg`< z!O_tXcDo&RyR8WvWQe4*hka(VTG)L@!uXyPrR&fl2Lo5*7%zU&i}22Oz6&?p@OWH* z{q;CLKE|*8+6VB-Pu`DbKJ%G4fBrmv^;h3l#-RAD&-yHU z(l6t|2Ooku<9OQBo`z*vaK#l@;JWLs#e3fKUOe@wPr+4JU5Q`$m3QIz_;}CQ`t2@K zbu92|ZNiIQ^aXp*e&Q3Kz`Ni59st0(bLVj5jnBk2*IW%%#T|FtiJNb}CCTHf1=C~* z`moazc}-x+H61S1xTyFekO%=M&ovX&?otyOzQ@|^0idj*E8nXeQS9Bd!T1dWol|fp ze;TU8`JW!nCjOpB0HO=;p$SVwkD;}PltRlRP!*;D?9r!7wle*Miz*Ojc=nV8HnJy7 zy+8F_ra6}ir&tZ)&j}Q(46}IBSS?9a9TE&+VDd^$hZZ9{>Qnax=h&X}%PLN2G1gtA>k zO7I#L-An|VbZLD>jv?=}^5*0rhy=zJ{StmixdZWbdn6}?NErJ9leb$s@dn;+EwIW> zH9nZHK*S9#iLM|5$DLfSnxn>y;7XIp1DPOpn)1lwLMKwoh#bpRgh3C;g>rcHL>`e6 z+2DEx$46(V4aReQDKY{Mgp2DVgtq3ItExv*8C|uo>jA>u$8n+YyE3gpjCWxS&Y3NT(iG zP$V6-Ye~a7MuPj;z^U>}A`f8xr?w>Jzt$cdoI^B5w5Wd6%N^AsQTBe=gemQfc46|c z$qb2UEs$p`Rj zzjhNYT)2S8KmKvJ{umT|M?z-!4?3M)&Km0Htz*SdWh3l@n4v&4zV{qGV-G+Paxd)GV^keXm zkKPUu!SkN?JRBb%#)KEEycr`hCAqt@ zO65jEX(Mip{bYn26@D|8Mj=#(ewMkO4Ay|;RWFliE+I$&(Wydtgk8ZO~K|Q5^ed&R%^zwRTy!ND()V@ zAHo3T8Of(3Z=>!R@}wI18w@|(u^LLRfDRVW5#s}*L1+nTbA}`P@b}{fbJ#;@gx9=o5)oVEof4Mu zO5t8<$im+wC^U{xrE%`*D)j$@I9ZG?z#2N$SrJ3_5KqtAe5d74YF+ua_Dr5q4r@t0? z{D?cFoJ%#@Ba55Se;R%cYu}*q5qTcI)TGpN^Q6Nnlf{dg(wQC5ks%tvbocusMuL?6-=GGJ{pGr?sE&9dfFqE?e8Le^0(nigX#B zLWCpv`pIpaFoW`U)YN!A`}3Xy5y5Z0?<1ETZ(AE{^E~H(6<8Bvdiu%i6Jo$vszN+Vz?c8(E$8ht_w_v;7;of`i#kq6m00=H#yoh`6{WzZVq$fuEpYkc6 zg4=KZ=ox@(_aA)lL45q<_u|r}hw_jddc~a1@ZObIUWw26 zjOXCPAHErP-+fOY|MBrLuDId?9`&f}u-onM{`cR62OfA}c=ux;yBD|Iax1pmEk5?K zdvWgE`QiRPp{58lHyz3r|`z{^-|Gd4;({9^wAN1?B_w$}}B!gw)L>S2_ORZ*FQI!D{E+;1Cgv1rgj&y}(`AXNa?$uRv&v~A` zRx{}Sb@$qPKkxgVa}{>gz2|-Q$NK2i->X+Q{_B7If8(Eh{1F}=mRR8b>j&@S?|kc< z`0?$EzyIgo#}{6GCgEp)M8%Iv1l*w$<_CZ&issd}60xbo_}9zK2(H%~UcGvW&;9(* zW7{_T(I5X2e)`Ej_x6D=eesKU|NHObgAYEyP{s9j#See@!wIf0U%te*zw;h`^x=o) zsFFDeU%q&OZ@>2~Y<#`7iw?ym;{tkv*K%o_PQ^xAl_erswC+bG~qu zZQYM_p76+Ldz|0DPl3R9)r~Fg`jLT0vc)nCEjxphE8#rY!Jvktjw$LT$1#uXdGvOE z9lv=eXUx6Uhv6p^scGSx-ulEl>F8o|$8eO!JE=_At|DAm0}Q#RGP4(?s)B7B@!n-w zEzek^5)W^ueCQ3$hPz!fR;aX~QNdNO+(P`KQen^76lF)s5|3u^%+YC}r8ZaBId2Y>W#uHDMhVclwXE(okA-cjTICTd zeaZPc9{Da~HDsz>Gkok>X#}v{@Xj544VsI@%mqlvBW66|@X}Fh^qpmGF}<65^!Xyx zSL)3qgBsznztV}Ru?}poMso;mH#=Umje$O_T=lZru?ceN>vf>_EIH0RCkBsZ36D41 z6p+BTVhDINQm#?q=Hff6)ro?_C-%lo)tN{OTB4K$5ot&#NTr9_h~yx3g7r`hBcpe# zsK&g1jG&=Il?hyzr6l*J^F@c{>KLAXP9;hq^FKNkEID*5`M7-U#7D=sC|mBidutfK z{U;%lc(kr2uZWrTK&Q(Yw zl157Apdk*ZIXTu$m^+4s(?N*BQfjGD4OJ*lq0OD9JG1>g=K+gy->D|3a> zs!s*IOL5W#tyf`!_&z?_VKQl4{Y5D+(V<|nARPnY5K^GKtRPckJ5|0^J{6xb6~!}j zr*t&rBuJG(7v)*NdgmM^%hNtU;Elu@%``r0N?q}ccynf_~3&HsVC*!?w*YvA$9$yG3p|8 zVBxodM5bh}iO8RS@qqvG8-D};`}h9@|I7E@1CUic{`+tK0lxRspW@&Dm9OGI{Wty^ z{_gwV#ou}Fn^UOo|M9_}#aM1*gfI|PW?1G?o`bllmN44u!9u-MsFe|(@y4Q0tgZLH z^Buf?^BTYW%U{A*zxu2A;Lkt6pM3XE*g9Ume2G7M|NRQFfCZWGPk!+4#=!7hLMkM^_u{xKiPKSz0Es8y?s@EB z+w9-l=$7MPG2=j_p~vynI}jH-ZzRr>Lw(=YLyW`OrWIdpQln1Vg>=#u{|AJJD4rEr z0r)OyDy`w90`Z~nXR+Pj)JQXW;Z%DoT?cNle=5kRW6QRZ2DLl`!T{7#(P(%(gkcrp zQb0gBhB4F1_#}-YWz_|pav(^nN^~B(BERRD!*KxhC@SZvLjzJZa&6C_$56Rta7b^)mCmB&{S}{c1wIbydsPC zh}hV+?q$CLf$f}&uo6@bZ&@0)n;ln}cac4xnvZ^L1G&>qc_neQjZP2(K9qhY;$(-a zKuIDWn;5}U%mK1hI@9`x1a8m~qC?SPvMiEvqwMOsAr!g;cZ;>;#F=Qq65_J2?nm&< z`H^~n%{}qe=-By4Ig$sp#Lj87>>^B&V^eRh6$6_nHQ{BEO`ze$TIrY#fB?TLhGfK| z)CSAD+s14eCg0c9ayRKf;=N?fpD-vIuwE8R;47B&79%5sNaHN%v91fc%VrVFpR$SR z-Jymp4I=h^96J`l!;2N$b_3An3SUD#*N5?|>y`4!VZ$mzu{JFnJwr9tdGUGHO@}If zW7AN@6LSObd@o!(Mw_T+(Fy9T_B%It!Uj=yH2I=47nI?U^FhHBWoTndKE~kJt^08% zj=i&LpdRoC0My68J}30x+=+k1V43tfBkw{|=Xw#pk2W2_t32Kt>O9g4qO&YgC3=!HwWG!<(?`d%ks!1X*eCwfZB4NJh?ZE_3y&y`01}{s|(b zt@(cbUGZ=~KK6Hxj`>pJ$~oTFKJPh;INoEMI9cnry*So)X{YdrJszGk*Gw7j*tX4+ z1E%M{Z#}{UvwUCyuoJVERZ!glKv2G|SMGv_k_n(1a#JH^BGEZ!fb;Q(AAX3}uV3Sr ze(9I+r7wL6Kls51xZSRE-@9=dg=FWsVc&_k-7*=Q6go5Ez);_T z_uqdXzyA;aA^y=n{(tb9&wK`7`SMo+X0PA8!O#8NXAeesFo7cU3|^!W;PvZI@bK{9 z$?t5;FJD?T)9cr73LUuvEa<}CZLMLwtS}|Z1bsLwG=)f=*B&3{wcr1H@A=tP1$5$h z{k9rt)7U_LKtu60#k4yfy3**O#p~q~C2bSxM<#yeC4Zai9`l}eBj&!&82@vHz&yU= zSkvh+E08ogBH3PXAdN`U=?Wk$?EAByeStkI7D((&LI6eOzh3INyMg4pkx4hlIWi)k zGId)^jR=XsWd;xB03Tk*Ebzw@R*3}M#B{IKDr+(wPPE- z+fj`s2#2ym$4iAX;jMTS%{E08(9vv85^KkzClZw+*F@#1#JRwkmU4%5F)~VNY?TfJ z7}If~V;5d~07tB|cM-?LSbARdd&m2i0M%f}c&P=Fn_m*`j za;O-7NTvUJ-GUdaq=kUHH+`}{Jtn};dDGGO;t|jW(X#_sRrO) ze(p9rFsb;{mB;<(qf!8Z2EtL4)5)$VkPBXOZqY|c*q{AMv|Be0VxG~PJ7K~(ojMuE zSEFC;-MyYV_nTuWybHMj5$~eH9$@-}8X=>goU8E3O){YHn_v#LKS?dO47aXr>Kyyo zD3S*s11DylaMq6O+G5`aupRm?C^3!szB<0w+iO2_Lm@*BV>r(7Tn(S`_+C57H!IGa zw04-(S-aHxWNJS)1qw}x2wLwNyQ}=~=;188%v4}@gE{|2;hBn$4Q?JRg-+dRNMOv! zk>8#HD}nf@fBHRq@r(Z&zVL;=jPHK;PlM4DS!X0a&fux*hy-~*|32{mN1yi{HDCYw z*D=PxAO7JVp7!(gum2i8_qoqmgvFaTc>VefGKt)Ct~1!p0)ek3gLH!M@Zsu=%Wnlx z!GHeszmDrr{5Svf_hG``1mEgs<^PLc|84x{FZ?2Y{^0>X>R0^W^-r-j!S&i>H=}!q zYTW@YK*}Xl&Zo@7l~56@#-xDlAOVrIEzZ9qqW~Db{A*wP*YUZ}eGcno#ns_U#S5^A ztbg?jmf+WnswEQna!5Ll$l8~Nk3RYcuiw1ESHApZTrMkKynKl-fBDP!;DZk=*O9mJ zlb`$qpa1+X;MJ>FSl1Q5_=~>?Kx{X5>%LC8F4^nc`#H1T|Gj6xRq)B~z5O@yw=}}T zbd4)A5_X3IABS@zH9sxsKe95v7Jtl#^7|IOJ>(Vbp*fA7bh zP5|!+A)l0<7Ib3pVygwzl zjK6eZLo_e~f2)!e^X8kgz@-s1!`syw7e3~|WR;&Hp`!f)-raTP+#IS?l^ZHid-&xy zIhW9_vqFnDEaQxUei{ED?^&vS3*o)^&{`WLq{Y9^YW%?RCv)6dJ{xS2|zj zomxwt4y4h#gH`#fk6}kk7Kzf$6{e(d0Flpvxp9_dab1M*p-iXxgom(v z0a+pEsNeyf!(})2P-tNr5hB3m5tWQ0Ytn$xe22C{yYasw zW77x#<)7;d_1I3|?5Lj2wFNI53T!uvAXqO;9)E*`Ge=Viai^itE7cNJJ2ug%KRSHu zxJPluMV}hSMntTlnEJgj6k{9VaEF?cGw~O3hK0>yFQ;LSzuNT{?Eu8_9L(`tl9$dhs_92m|o_wum*BrnoR zEs`RccGU2~1k19N_o_~pj)zI-^M=yNB`J?~vfFsYNIrR53c2vV!Y}gPh@&|%H%ExX z!y>ayaKyW9F+P?#el*5R;KZzB!yxYmUVD^UB+5Qj0X6=yZ%W>);EhUEDisEal>-}3 z7^RLf>lVc+HK``^acw}S=Xp$$-!aN7z;Sw|qv+ne?>T3xZm_?1UuTb&^%%iEw_X36 zzkA9-^OPPRPPfCj@3#qL1YNyHyj}By9CVb$EEBe{$r4r-0z4NZ5vE>Jk`+}2w+!Bq zF$wq#qtDttUS!7K|Nal~*-0pLvDPfBqK$0Dt>$|E+lMdcERze&=@q0H1vF8o&Chf7SEGC_eh= z$N1wv{^KVN&t1<*cvOUSW~&w&JR>I8uP}2SC2>6Y;%7dKzxl6x0RX1zOds8@_z!;f ze}lA!A6!4dfB08_9bb6$3fma?ryu_a|J^_PCm^m6W;!trAG6A|dqZ13LYx(0&>LL+ zf5WPRY&1N|Zf!ap?Z%s{IZj@@cmY+#k3aq~zV+>IyCN$1i@*3G{_vaM#FxJKMSSHe zU%?myAOGYh_~^$!o;cE;psAGolRx+aeC1bu1%LfF|1I<}@S`971>XD4cfu|e5q$p# zKfq@{`&s*5D5J?C#)VG$xE=mZQwiunjl{)q3uisp8x%kfXs-AZ#%QLpttRhSU z06(tiAhNE@ISh>C95iTDQ37W{rx19S*@q<{UfOF_v8Q4gA^&OOr1M2G+Jkb1yQ`=a z5V)7HQn--?9+?1&eiz}-91q)#V?}Iz=Q!c~qaQXAN|F5tj_dD)Q5(jhPA|l4;%^CK zHKOr`g6FYvV}(4;{$Y}EPkG?ZY4tMNRu!jV0NtlSSkizf^Ft`N4Buxs$I($Wx}u9@ zUK%xkhi(CsB(fTKLEcZ}Az>tV2C0^WMp@D9OP39>Hgi&JxHEM$n+P0W8i85z&I)LE0V~Re(4G?dZd>+9A z$ae$~JBqS!U5hHkqY2BxWA5E(zvd5b66+-bEDww2ujx81Z#96`k%#4-^Vm-sctJ)E zuO_=AkxJf>mBRRZsZng=Ituga6rQ81XplUE`EWWvH<7jPxVodVVmPiXt_^#vTNz7d!CbMojI z`L23JI?5TBErfAXtZlJ8HgqCU7fpi+3V5>aSzj#Z?=(^M$^vrADi@|z_dQc>_M(A0 z78|6#*s5d4VG?{*1Zarw_PV82|08T9a)h@1Jf=YvovF&}sa$iJd%RGZP=Gpo1GB+|RXAaIPwG>be}fNBfInSjAvpfXrMiQ|^pZ^De(DNT(1aa| z9zMgVjIQW1rM2nXI*!`UnSUU38pqdlT}&)KfA+4IBAe|K8t3YYqSNfBQe34*2NloYaEyJNu%r z9`5zekW2z>0w3l@)TylsEY)*hvd#K_5^ovpj<}vf2s5G1{Xg&fJ#w8R;$z4e#!JBQ zIF@@bJe^CSzR3Xdws{PK$^R7Q0D+fBHCd!qC7^^!Q?@TnaJ`vQ(<7OjBdX?k=W4f2 za8d!o-hF5QxEqx3>(B_VJu{SB6Ra2FVrp33tG4I>Sl(5j7@C4?M^oq50nEvy>gOW1 zTbk%=iuQ6@CIWx)a>cfpBH5Wlb85*tq#{ja$|91^=*YgUrZxK_z8xY_nk)AqJn0}n zD0zhKes?F@n2ZGW$!GbSyn^c)J7$;##B;7n|Je_BZjR$SgT>i9d$0HY`?nqIRGCf$ zTkoeVjfym1&fP5yMZ5CZCJmPd8%XbnGK$+aprZ;24MjZk$&&jdcH9bE=kbyXQ-ts- zuv49JJa`Lc<&y76ksz8%R>iXdk@#m)yy4Li0*8ZS;!husK+-Tl&bbc7hLC61qsuak zJ&OsPjvZ%viTs*7WQh9`JK+b(S?46#K_)viniR4Am~309d?V#NuiQLok>g{M<$I#R zd|xmtMNGb)k!nc`H4*`e={Sr6am*>(<%<&0ExFT#sr}kE+l`2lvVhcY=rAH&nfP?# zkE&>E3wYMux#7p@An=mAJPzXdHI&M_(ILw|r~c8f-8#mg&7QcL^FzQs;hgkIm`QUO zJG{(qOug7-P!zEBz_bNf*y>(#~1W zg}6*F6|f|GI4+B>K7WJMoeKSPx&oAZJ3GgKAmlo$n9V^C^F{!mc8pNxjp(i-6?&kaLovA<#AKF2z^4iXvgp_Bc26) zP@tc}B(5C|J^SLA&+fC`$J*l@&Je9C0FQhA^6&dQ_51JZT2&|A-cw(QZCAQ5b~fXU zW+C&dIW@LzxS^Th+JK!AZXy`bmj6#=8f6u-rtr7;TQzsp99vBAnXcj74p^2IU3(fq zMX)Nk`$yr!@OJK?jzVk|hE!6Mxz6w8sK`|Ps}#7Uxhk0Wm%?(ds*9}99Vsmnd zAgVm{?#B}jky|@KKi!iF7iznJ?+mHL8jx1^3Iyr%e2lX|nMS7b-$QL@aWd?XboX2V zl2ajVE#A%?YMkvq74 z`S8N3Ug!Y20!(C?;pG-`zOI(Hg5mNuxQf8VsiCCD+4)fE7?bQ^8}*qhR?K@NRGwRY zYn{ctlmiGwG8{-SM-<1?#i)zM1bIlzW)iOZHTK!vUBg-S(fH+2i|B{6LFZ=eQ)sOE zvwBobe3Z4{p_b^}K{a$hMhl)QjmHl%>>qU;L%}4?2S=*N1lMVvTKD!8kspRiw;FG4 zOFGYU{yOn6jsFYiB*>-KbP^PvG12`_cG5YttSyfDWJQ?b4CcU!PEiLN&gB6hHlQ?& zPUcA%I?%8bh1o71KQjZH2H)_++eTyiK6hqK$h$J)*|2k`QsjS$s6|Qq-WgLgNW#Gb zMdZyG#d%uvlIlR=7(6{{tXq9Qa6t1|$L)4AhcS2NmFtnzAxQl|)hg#eeDjWUHx%30 zoTve5mJ{nbw%9C6cyZiGBY?@)NchX%+k^x;HRnSDgp*YZF{N6;%_T(68A$T-)T5~b zFv?V8og-1S^8!_|+(0882L|T`9U0BY4J(V#l90z1xRdm>UK-X#J*uc-S#11cBQG@E z9vDz%w20@5ah^LHLUZz5>Q!93bPzjSM4%-LGM)VE8YQ*BJV0^mPc1?wlF_O;Y?|jL zw1`l_Z5!yDM!R_=$gn()ys1Jxsj)dh+5|JMuZZRI649u>riy|$$u~CNTwIy}i@m$7 zYitebni&oV0H8h=NQJPn-4@z?gwWUTiPV=J)aY>Vt39^unmhhEkN-HYASaaA_V z*3tpS2MM)hS!|OO2nR@o>Cs4^o)$GmW1gT( z2g~=)>ZLO|Ybw(B07J!9c7QLtA_vYPt^}ngm$+)@>yO6QUb&nnsG)#{Gl11W%8{9Q z;V1_=w`XE-evLDjJkM~v56{`ddgp7c2saB%txT`9QJFT4{+Rg=VfKs?uHds(?tDQ6 z%VNn5(Ycd2yy{LyRVffVjEkRm=*}G1b;Y)ACb)O_<5DvQBEHBoWaiy`?wp2U17i~6 z-fn63{nA=F2RrYM+2+5d08lti1^cE>5~?NdhOi)`^{K=$l`JnX&68^>e)d+W5MkI@ zp>_tG3^9}n>+5zKW|VknaPzf@;uHlw;beV`tn-t(f*Z2WxxL4kROJ1*D|qLQS+inB zil=GxoQc!W;PZ-BGp#%|m&Y78bqw?G=f9uh-(k7)1vri-b*);w#v-p?j$G6CX!YM^zz^|%7R2A1E zPr^9QUZPudLaoZgEH|hGoUMuR%D|ZepDIowzq4>xPE+>HG^#FDK0MrTW_OC@9qJC2 zCW|}K3x2q>pAiScBZ5>BQ5zSJi0qrr`ec%`6IdDvc1xq5))p{N;N-}yh7c6h-9tH- zcv5)G*y(_URwmU=jHk4=V7uk9T7#AI6n7@rF(h|{J3NU~faSm<4u+0a@HLXZvLrJ3 zBIP=(nK=Geqj|!6_`igWJLNUTEy#11bpdirfddoT7H(6}6dWS?kz^Dj1gTqqxUN~5 zD|8J-ciL<|e`BsC@0U;uG5Dfo=XADm{-Y1jHEGes;t8S4dM}N>-iWqRaLh(TR^>8} z{eTgin({qaSaH;k81OXyXoo*lyvmv7n_;!VDwF#*B0q?_^K&%yYB)aM$x-KU_M<14 z%VHZ2&KFEp+DoaQ7(=&>#2&fYrekTohNBNG4=b7i+s!u7nkVE=d6u-Ck)_#AtYOuU zBw<^mTj%PnXRgb5;2#lx3yip$ZvJyHfayk_>A^7m0zouaxSE+}sSH zq%P`MaOTvg_h#MA^<)(Lvre|KI7XBNB&$63m(p2;5VFBX)k?k3W7*de8 zcdpyZv|e+B%{e~aYyVz=!`}H;uak%wEe$cMB|qw3H6;g8xvC8`cLR<{V6renean+O zgU#LeT18_9gq-}IcTY3Q#@?BccMpZi$lm4R7^u`8+q&nd**ilBuR6{%9IW%HMrQR$ zCQM~|?*LOW$K#Wvr9xrhlnBMmjv%#W%FVV7ShBnMjVSDwD$~cRLEi%6N;40Y)LTmb-q` z1cb^?NJRUZyG87$HT6VxB}5;#Lw32iLu&v~9@Q9FnxE_3%wQUR)U5XoX$|YraJ}Ag z%$hiQa5}gktGr@jxE#?5j?d0RzGvfqmY3NflT=LTojqlqIWwsz&&#g$yYgctZ%mgmQSrt8^TMW zp`;46TeGAwz3huuqg>KSBB8hv&p?B$wo&+iIzrH~AbYyv00YXY%v#j(C~KH&v3KCl z3Q+RcQ2cg^hOwV?D$V7jby8LiYg}ok-h=TFDLc(RQ>a>4e_NWB4RQrLjMU*rQ3k*W zhe^TESXDDGIBDmjA)8T+*K_?!72&Ly@wW1F^3Vc^9lbCrV8kxa{xn2 za!e9PEVvoUU85}#Ggvu)>H|q1Jo=T61#8nhlhbhu&*3w+%!fGPrLvEdIZ(J9wwtTN zwTYKRCsbU%r{l`z$H)QF`S3YHaz1=NjBn~C?!?xfhGC*^MwGW^aym6;gJo-8uDZ?< zIUcSr??*lnB-0wISQm4AY&VNe%3|fY<8GD2V8>oXBFB=!LA~lxizqAVF(vTA)>%lS z^GR_xCC+Ny30gvz`4+@3=k6bWk5!ZusL&sh^nu)LCn+HCik@Pg}m-)gf z)RJ#U&^YOwdGQPnt?F8qZ!Z<6&6qKQ! zK)D=_6{MV;5zb{UX-%_Hu2JPXl*Q!3)d810>L@Sf-^U47eX#0c(sIqCpAf5t7=yAr zgn{)zy=R&i5;rEhl_Tk!_sXUNILb&vT=A|4r4s_xdYgA?M3}&|9CQe-j2V z!#jP~_k{A@2{G~pRlK{W|0^a8*z5eq`LN%!xz5jy{mt#&YwKBd%6%ey@;g;MI%e2$ zc-4oxvXV%4Z@?ioViAt-<(wvs3UdA}!Cfj7suyA zr12}_nfOcJN5>te`6VN);n}&mR*rfA4Y3nw;pBie&o={v0XvkFLe6$O`=sDe0yO6A@q9iu&w-b(F8JwBuhjEknfQCG3&&(7 zj@1>*j)xZ)=onZpEBa;?tA^ScXsFSmpTldOksg&hpt!;)gPuk6Hr~=!Cs!j#+jhtp- zy5idJt~-c$`Y7FLKDiDmnDMgkBi;|tAQNMX>Xghd_#Tk?KvIuz{#DmN z5%~5$@~#}O1fxsEp7UUik;Kn1P=ZI4rHFOONS$LuQo>6VHecVh9lpltgd8E)3_mk! zv(l;2ym~TZpSc@V+if#rk2%#G_LMU`UK7^r$FxVoI%j^Lzmyx zcp*X5O%2k8*2Ugk%)4O*ckQzxhW*(bM*xlF(WCcxFH@g6zI(2%T6r{hzAXcoD`I$+ zo@vgNzY3DR;ZC|Sf?oDU2YCqxA6iB)G*$p2@Tp9R001BWNkl09+oGF6GuwT zY7-yn?sy%)KX;BC@6U{za`dcyo;;a#=VKq$fgJEU8Oy!7WcTMb#NGk5*URs_EZ6x4&>nL5<_1+J z5i~=ki93%XOkJD@7AaWZCXgx7U>!p$8>Qk?g|iES$$P7WdC%vtHVj4seS?*%6!>{? z3%wN)td|ux{}y6LvAXYSEvpO9(a}6V$Ys3%Iv@)m=vF3q2)503JWV0D@tL3KNK2t$ zv<2s-S7(~eD;KCf7r>o)^V^JoX>9>_!tc}S^F990<6*`$_s*E(_@3_bC@AhR@1*17 z`{!+H`EBS&WqROx-SF^W#^l3=m8=juuyDnN_;qs!&W!pJir8$Na~;q4l{1Y!>(*JJ zOYa929Q!8n2T;-Qc5)2KT&alEe#lFm922ho&45hckK7K0XVVZ2_M$T_5Yo(hkVZ&0 zKpL;Sz_qtYuGTdrZw*DB6VeJZZ#UXBIuUJPq?B0*zWeVGG4ECq3Qzo>#+W%~Dn4_)817D-8Dm5O>S~zPTn!>4)+v)W zBQ^r&q6{86;W^cYN6@4(Mfv42&5?OF*tol$$3*xIkAT7Dq&*m(E2d%FHiO56O97ss z1CjZdWi2)ABgEoIv8-=*6gmu`8T~@quw$*xr;CX-XJkNK4@Oo@$LcDt6q(yE0B1m$zp!JpL;$e5pFjAn;9^9Uz=Y^6#Q*B5o{BR2o|O-g$Kod%VEQbtuoBCo6)<>U<$ z>!#>+*c^@3)Q5aE;$gIWN_<+rIldPt%{*5q8(Pr#NXv(`gZ66ItQ(LAb1uc9CQ_Wu zB^*ktY(v1Pke$&0`8s)`_>sbRPZH+}{Bpd4Ntc?KWra)fsi}CzsosG2K8^etHZk85 zUDBSNF5r{T%3F0r<=dP~mERS;=WB+8?(pUQP&og&?=wAX8uhdekB=w+KDL)OYQA^h zCNDBs^0$rEc-;CF&{L4?!fx*l`h39qZt9?F(#@lUI^N3#ni<9&?yzfPzYzN9g3ru} z_nt=7>N(r-SR@kJy*LN2^Bi-0xzLaI`5Xc|{W27vndudH6(u0N#SVJ`6+OE@MxKEd zVaT-^{+V~ccUqdb1Hc51be$F>;YDtWWZLmUdEe(?iDK;zg-(>+Yz?3TD4M4e!{Iog z;4vC0lO{UMkQHyvh%sO$EHBRWn%CBxE#`z_nbKuhur2~=8YMNCrJ13vC0rBmqZt|% zI@TpU#O6eisFc8+Nr9KR91H^%Y_}0`v4N@Wl(no*FghJ*xfDmnJ2UKRTUO;)u3~Q^CAUmgl=YIy)IUsxY*O?J0_4tl5Oe&V zP)BB3IaLAM@2R1NUCt(~LP z|D};^Ic&1JiwuuUs|q!F5P9eXF5*d{P!c)uTP4 zI@wVUN`2RPV_j3JD!`xa-Z1o z(A#GDC*VgK$nph%tX`D`tQ5l|r6Xx2)&&_IKs<0-5JlvlAoO_LE20p|C#qpq*HdYH z8mx$Kxz>zE)kxAQo>-&zVfiJ3L)iS)5jdQcHegKAAjp#E{FD&_To(lG)iLf6Cukve zAmen6aA&)0vD9O~m0pWZ6UYSTj+Hlw*&k-`r zb9e!sfVj||Afl;ECfWv-C6I2OlZKmJ#fii@@+g*)S9pI-AfB_%aNNe&7LQod;faWe zf8^z`+w?R=LPv+F;?>IwdfxyvTsOt7uWH=-oicZOX5&tMlOI-|N1BdE?jo-uBFjb*_&Or0I>*^0qbJYw z57NN?yM);+FOy~O9WF;$oLzh8Lv@mT+NhvPfP zIUF5*Z+q?go*jZN#~cSAvqkvqZp4hg1_H0OHvN9;8w2t@;UkdvetmXt&@(~jIQGl{ zcNOvoJG(QULywXbl0IyJ7al<M$ zSOQ*c!3ehA(H21y#oAJ#rNfDd+9sn(EOdEkmWOBc^VfY-FtmGVEy}qv)YdAv)I2x) zYi9oUm}HF<;Qi!X0`7|CIv~EwKF-Hb8RmTdzF@P65;_&17GSfNUQh2o^?end_dW|7 zEBFN*zl!oSjV1A`cUxcEUG(THRXnVVC9hLN#Teo?72GiF3Y=${XLJgcQD8?F6^50E zXqbh^cPk$P!cZc;&&z&q{T~hy_Ycs-jq<801{zR=&hOp0^jLgyqqlI z5i<$-5zc6b6|bC|jYZ0Lb+OENN*ISS=%Wflj{IzA!Q?I91kyZyM17(64a>SZ9@f<~ zoLg7RYr!Ks3SewK^06?9Z}*6pwpfl5?k<}V&hpwbpI|=LCP%$ED?99n*XCuh)K*aQhWwl5bn~dV}aKY_%1DypTg0(HMctXXtd9S||ezklcPzMi_~O~0qFdmF$re6vmJYO=%SpsSO1pLEQahsVPj9a-)f zJA33i4rKo3p29qPE9dqe3k?bZcxOCkUjX-!_ujq7t~w`auAGhzVCQfmno4x~GGI#9^9#-yWmE_v%cj2QN6A=qh%=*WsClhRQH*gT&M z^Rs@|aO?!>tA)QlT$VToK7v7;B#IPzMJcO7BpquyDW#Mm)wx!WWhio;q%h3=ZURJn zSJt}7qgviYWm?nfnZoem#RZCiK7h3Wmvu#J@Vp_-kC2)1y)F$)YqlP+2%=@Ru`f-~ zyN~JO)q2E|14r3nU*mq*EyydKHI+eCWMOoS&w^`FV7|X9om!$nMwva$Sh)s|@gqBe zmWprf^FGhZ=V$lcR#-g#y2LIF+s&Ql*-#Rp0-HOP-J`0u(IZU#wppoJD<3-0+8VgW z{3!|Foe~!o14rkuLpos@@fGx~c|VQ5y%OX2&X96fo*E=a;tK4UQd-xp%9cIv<*0Wc zE@mBqKk!Xq6$e3#2W1=%C4_TP{CH2u1aoNa(WU-Q$7BHZp!-mF0x5~e;RDsu=MF~Bp9Hy6jRI#LX{vlKcE#Bz@5ldkG=Bh)56h$M=*ZV7 zyD6yNbUIgq?>d~wFXM0kdD#ZMLHCUXqP=?8Jl2tX9m3?Eem&IJ#p#Uz*6VZ z1VWFLub~}JGQ+dt5y9RTN6NvYCkga8YE%|*V~Nx%08!xMh81(b*()@J(`Za7s3{lS zVF{22*!?(;;=9U(w;4C-JQrzMjkB(^url1@QH$Ipar}%qNX&<{7EMLuMS0EFiU`Cq z#5R?pFPfMPT4FR+^FGTkk9wEuxsuRwy4t-fvrfTABhL#MHJX)-BH9reNxRv~D7=~Z zlp^smGCyQnfS0c>=o_FaUNvmE<3<1-SX;yOcEh?_^6=K&*`SKsZNp`45DY8}&=(u? z?UvE2B9giWB=&yjjD#SL+%XyJ(433Jyc?vYgGpM0jFj<=^l8PQ4SicJDfY59G~osy zd4f7`=g||52;HC|pU0?RCK0Nfx93F^UdYh_&ka zf!9T2K1Ppa6jzN(hhbzKRHiSEal`VJJCLyU7S@2DKa zUVME|->dr549n^Wj@gy&GOBN1Mm%^=M9kEO3A<{a8h@?FoQrN#bf`Mc?CWIC^OB#o zR~Y`u_j>yGbFRni%0wXqmn_PHw(;&JgZTeBMo&+o&a`43i1SqXhGui^|w+gzk(6_Z-joUFJn)LyJ(O4%Mj74d~$ce~j>G-vM#CkO-2IBSm@nOrA@?{JtJY%`e%h5RSWseN2dcQNtbWnZN4M%tO|Y((+>YVW%ObeG+0Y}5c+a@^ zIGe&pb;jk2b5!G!sqGEP`pt-nD338v_Pbxp=Un$3wD-QBc+BqJBfX$1Ku^ z-sX7mVT7WxpZ~0CQn^#?VC#5Xcf+VSpI?uxq09<_6a-WN7+D2H^Ccf^Dgspjobljk znZsuN1Wzb>*`ojAw@u=>%*JX=95aswsvB=?+^@E@^Ic~~i{(ViLmyL5IpkK7_dUYE zgd2@gyDhkWPY0-QsE#ag`6|tvP<=9DgvgqSGYNC9EtC3|M4bR4;wF;8ixht4$6%W$ z`-SC*XmH1r*As4H324oTmdHOOntYvLGXp4!8`gJfStKbZAFGs1He003;(2(rh)-BqQ$_ zc{{c`e&(PXF^)=Ew!uMts$=ptR_iHyO};C@x~?W0M;c&NSJO%(l5?v^@%KhEbCK9j zMh4pmy$IFK8w%MGT$=22qUq-j1!^TrsxwO!_7THnxW8s_p;~xLq>raWJD7afU z$4)j30xm`ROzj4vDt{mKGU}>T$HlHc;R0~}Qr%Fcy~AX)@2cn5+0HOYAuoVA%>e+p zmdsg{`64wm)ase3dX?(TFXpixBiuNi@@tyYem$z48@fr1VF!`I?w)HR&dwe^{rlea z?q=vdAiy`_BE3f)-@D8SI8PDs*u2j5!}Io&X1&#C*%-6kt%qliI%c$PharJc4V3-v z-rUF8#AoC?XDIu3XNFbVIKm)zLrAb0u|Tze{}Y^#@$Ii^mzEI|1<^RJ`J1B8o;(jd z0yE;)c|PAcb3WIjv3U%+Ix^rwB(?d{MeL?F8}lu45g1dXQfe9Pb&3{Ydl{i)|Ae!G z3cu#~sbDh4LcossAk-Aq=G8lFS5YEzV6bGR9&?xwP8>^x`CuNBi6-p**0@vR(~kTg zsUS^o_T3d##gJ5B#<1~f11^^Z+%)amW~H8+B?BIPU;wx*4c*&~?}s^*7%3wUON7j- z((p)yO~=5}7OZO~g>8!_oahuf;CA8a8`RdgJZrg_I z)#zxw7;fLL8{WvxXv;(C6`AZ%q(KK0UC(ehDuqO^#IKnrmYXPeazM8kcTOSekHSzs z@W1Rl`UyvltxG+oLzbzP8L6vx(|GR=X_5<7#!h(eZH%swCjo?kNaP}kC@Jz_Ra1;d zg>M;*%g;qh#XO`UPs8~b$zc6uMNFH&&Kl7)?|U%VlR-MDBw*ZDKQoPzf%L1!lSK3xg`L{ra4qqBRsJ)TT$8Kcyn}*{A?$j9r?%bC6&#L1v(J{i0&|0&E z!+veI5i74Sxw*R2r!9h|Ex6q_M05g5V+4ug>gsZWM!k|>Xto_Nga*v{KgPFl1yToa zSimf)%=~oVzE}ZOx9?_yn2fZM$uF`C`S(2f^0eVJ|#>)dLi9{MDUMs+Ql+ zc!kY(ahy=VaW)+`)j8IhMF@2!z-9URF#u1REz+h4=c?KA==vCnj*-=hM6p~NWF)PJ zG2rmkGIv%|i=q_V^irqeSOLih@4|DUNQbKLZFVe+&0`BbU}IZWTMIg90$0S{Zbc5? zvzIDMnrOhC8w65SqZqMl-;pYI&YWFGRTSoxD^TTge#WuHotRst9l~q6s$B8^m$O9p>oL zF&s80QA#KJa=a0`r$#?@UH?U0XS(|AT$}a7a~h~HtKSq3f1+34b4JZv<@|b{u0OXy zn^V=I7SGl~^-j6$vls6Vj(|G8Q$MQ?2B`!};dH8`5;#Qg`px{ZwVOy98l#()u0ksa>VrbRYcF<$xsKLckP+W@yJE(XGY4$=Xf^GB+MgnDRhU_^%-c( zxk6;;oCESBOQ?>G%)@p-wZh017^uNhi=r4T-4&N6nc&m}5P?fZW@m$YDf_5ElqroJ zL1+7VKwj%5-+J~!$^vXlcS)&d+3hl<-qQQi{em>b1!u7I3 zwL?T9I;>iOx`K4;P*}bgj+eWcy(@0Ffpu-TtXV!(6u55oot0V!Zr6_O*0HR%Lnff1 zL1CXbQ+E!kfZ#nQD${@ z$5Du-qNT`lfp!@UI94*mI`xN%hNxt{xn8lZi-*1&jrR?Z)-1P16Ns<%dRZ`7J{ak+ zGt{qV=4W}p5gYB*`P#eX?FlZkG6J08$R4h2vqu!z`Mcy3{|1mka$~?}L zvV5L9&-Hh_9r-A7x@UWgb!-w$Nrj65Ae7Dnf05_2s2+$k#RtoOxy8jwk6>idOv6I9MmXbAGC zDsvKP8IU;?8{kLoEV7D47JNs(x(p;cqyD@!TVqCL^=&xL@hFZv3i?1>7j)`qfICZC zRDuXaCZYr!!e^@7%a@S?LZF(=iO;>F{VxV&kCqng5dCan_~- zW`8dqF1TJd>)UB)^sG3gFuh~I692CkJ9gW*4k-*a?2lLri>je+XZ>-vzgcuN$LRAL z)0oAhcLWf%{D;nu7>#3nIZiqrRy(R-7WUD|T|&exM?cze_871}uTkD|vT0ih^=q%mIQ^WNsPu5(_tR(>d;JR?stRcQuz@FY$B zW8x12;3P7!YI@q7(n7P+^c6^5z4@@LOK1)k@dI73a zrhZcy$^Eu=d?c8|>GQ`%Q5JdHiJty0{nr00B5d*K)x8HliEr5=odfgt*^j+{Z0{+= zJI{Nt_vUg8{+Cp8$Bx;$a?vONOdv->Xm`wLS3g6Yf{liKby!hBp#flHrox>HB(v;S z1x)-ocS8=lbQBg1u>%&nYi{gX_al{EN(#+&Rxf4U+?t9VWlaYVkB?*&l_??&@fEdW zOCfN8NV*G$(NJLPz$)rTjTQ&KRl4eZ!;2RyZa0f`S=I&X;I5iMqz|CK*>cq!FMBto z`Qefwq3devIN(QR8ax3YCdHRyPM94H%`^Ps?KplF7?qcm%&vkW1@akcp9hdgG(9NEbVPW6CNW zy)k*`gF4)*(VRr^?}NhQA4;2!$-UJjIp)|+ZVgJOg!9-m=3QRMtQ$ntHyVCrEOZbA zUyooIQCN6}qpX~zFyhWXe=H~0;A#W zX3iWmpkKRJ*HS;lXanqHVDWr(7GcGWFx%x_Jl~*^h2r7C^tr9qJc01vz~WAu-a8&H zD=tlNbKZ5iEZDXYQDoHlpjx6~jBFs`6951p07*naRAxeFQ{U*iZIQ^j(l0Bi8Gc!N zj1U@XPMtB3`D{wrc^dSF(=bO7%hnSwxvAul(2brQ;sa20U$0tOcZD0y03}&8ViE2o$ER&vqDx=Pw)pBIfSX5YKt7(PG>ab3TfdO$+7>~^uMZVSH0ce zNXG`{Oz_d9y81_zQ+2>+I#1r`#(+mCipj&)1gti^`I$+91RSZykKQR2b~CAyI*xUg zbGrMt>KL=0HqU8dbyIuqs?$E_yL{*QI&6G#;_&#i8C}Yw*5Sw^Rb-kjX%pP z$24zVGwlH737v(X!ZA}jJu`gj?-XK1N!zt?mVd&(KC~-)3MlOy2&V|V{h0RcJ%u;N z-OL%-RRM}zD`EI@m#ixO6T89@F8ev`@7-gHZ+9KTz4Y++Y^daj&qf&x*4uXX0wUT) z5K66Jcwu?QgdZxmYqphUQZ-^_;F~&CZE$-9p(f zmj%OhgW*75Lg31dS?aZ08hi zx!!;d2rLJZm0y2MS)AuAG#*YB)-*ci+0@@hn9qD&%XjV!h@+HxcYw(+&m7+O=XBmq zk()GP#E)J;%OYjtv4s4+n|m0Qk+fAk7mT=)$$#nO8JR;xj{-j=#iUeA8V7_I+s={f z;B{YtqcJqpk5p{5_0c$+uQ-sA_^_|mzvz3b+7qI&HCF%A{!xbw-X|D6VsM?7qsGvX*HevH}H>$2MUpx%ckODC>MuBGD@)FNfu(jZC)BrBBVG0rh8Qdd;n zF_L)gUJl5*VB0Kj&AK$azV^VEF)Xhhu}!35>k7+*=P)K8pk70RDjA78z0!GMQ?q$R zUPjj!FAr9po6%lOhTJ{6SC$4DmeAQYm-xNYPNAVFGp-TO0jl#&By-(JI)0XA!A4!r zcPy86!FKC`8>D@U)^U1scp3aHLa&Q$w6xaZD0*wN44a!a)b|IL%CNS2zxs>PJK9?Jf%atjU(jDe*d)B-XTNz zA}&LpYinmD%)HTbe}4C@(tMWVIn(#}&92px{*K?B&%xf!-;5rm9bDf5%+`69W2PG9 z`^i)!yLZjwehQcx_cE$r9?Sj+#7U2!Ku*QH?mF&?;{Np%@Q+Hoi=)C|*cYIdxJ@d| zD#2x&bAM+r-WwF>$n@CQ_wUvAXz=7a`#$fqp{8g?lLOcynPPzl)Iufgg) zT^2mNxZrl(@=R}&5Ws-_Ej*K~#Fb<`(gZ73+^)9Mr?4{6CZ8$2iU2Dm^QI#Lqyg`9 zl2@(_u}yWD$kM`4j-3+`ce)UF>e_q4Ix=a3N$s7>MKHk9tKF4$3x(Z=Vr?09U?s|% zpEp-`zVMzYF1KsP%U2h?deQLawn4=5)F_4-8Os9I;RcJtR4^H-Q4Pp67ef_%Q_3InfOS2@B%H*(W;b8}X zwjWdi>mF;HdF=G$QAOl&d7x40=yBMeD~wgP)xMrqQjk+tqyj6m9H!#$R1cAc^}!RG zs!sVk=p@Hv6iMbBDYVp@U>mucT!ADUgUe-G#}>H8F;xd)b-pHErZO61+=0)k#TcHA zK5PeHZ0FyMDn<)&z1?C}~s%O*#ZsDTvgy2cLwP+)8w0*kT<_!LzlWK^3G*^F7)-KWf)mE}DN zSkhjJYFlipc^(cf+_EkZSQQ@|Lvv$HvNW-dFc@2jSV-vQ+NlUwQ$1vOLCuET*kRI7 zeoK6=e6vn4cwK(ruVl4BM&?WgQ;E1r)x~k#ot#;T#c{Lfp0;M`R5#gF_90*H;M|pUZ z6|5Q(G#wa>0-*!N@~Wss3hBV@*3p^HPZ)KUc_J3Ce#D$B(yY?b@MG{I<~XvbGvgo2 zx_ItFYjb7Aq{d@iNH|hHmUSdQ6(=m)eA2=f30k%2XpbCQ$uow*VRReMx;9)cc5G~2 zRzQF^uWzLys9}$#&rw_+RxHDg)3#>%;_Yflg4cD$?Yf=nRC`;2d>ufXsLOXT-C$JP zjEl9+lmq9+@I6^q=yi9GZSC*P#(aJszk!I#-OEx^VmOqCNH)4ZCw1@IBWQVYx38xhC-=r# z`>SK+dsS9HrHliZ5T%Z9es-^|nMn7Fdn&O-nZiv zn)>ekGYTvI^c@QJ(h4zTvOEr4@$%&Zw%#!|3)i(>kGVe)!R>Z4<$w%DbxKZ~(@Mc> zyPL*@RlR-Z`U>A^Vp(99&S{*SfJrshP$!t$TtXBK^{9983RJ9iQzNNtE)Op(thY6D zZgfwQxGac#1C!&6crj1ejBw|Dw{76zp<(g)TUl~@e_2eWwH>^HCRQT3_l}2$6%SZ# zr>SSKsj5ZVbcUphU~IR8pnohs%uFx$nBLiO$9vZaBEIwWX}X(#xF>9V&ND=x+i~09IPw#=l+` z^xiGUM(tY_B8xdP#=zEThG~&Ch};^4MONjrw<8CR&g*K9BQK3k1GD0VU`|X+<*!5u za9w2g4S;Z@*x1bIr(=%zTz8;#D7M?k97RrQHNhwsx$Zt^RVhER%iJG(ymy#|Vh!>M zj%Q>)%K27QNO?`#*YbCzQ5(C&T5+wl)Gt8(<8ABoEb+@%ODYe?bWO1V-ZwX$h{8q} zxlseLd?>eDI*K!*k+8DLN^h>4$kM2a~cv5p-*OKL}DIP9))ZBDE z*994!Bc^X(-`GaSx>$q}%Z9flBXstWk7pNgM#>){bt-MKy=uROY^?Z8Q0)6Y*H!BC z(~}S`gPG_V9G4S*r4t*5&p{EDzs|=%M|(O?=lAR#@>)j7%*}aUlU%Nj_u6c3nwE)0 zGY4pdE_3h7kLu=#!Qt#Vv|S&I(n%Q=`r{*=?Hx4lFeA2ZGx#!XC(TC;R^I z>cuh>;XNd&NLi8n9@9Esd@8V~Bf-4|d~6Q&{*fu{$Hw-{?m|`c%2!eq1m~WWk)#hH zcbK9L{zG{%6x+5%c-OLcW`AV#3-gP#rA0zfbt%(#36`m}u~JR!&<63%yL<{jRHIGH zmOaBI*SEmXm4gbqJ*+~R^tR2>;Z7o0WRQii3V4F52_UQOt}bnXh~l=5d?u`jBH`(O z@vs7_9&S#dGH|;oE-R}Bh{Hl~yKbI*xudlO+txA0z;<(mX>|0BXR=v_8(_#a!>spL z8e-=RtblMqd(3_R4@6R1MMh}^bLE*yOfHJYb)P*pJ&4;A+5MAbE5he!8>>lpwXhN@9- zn#R|p=sem+;derKJzvm0{c2U-?$Lt(!AOrdSD(XM*2Nv!-cBfqE=$}9Zzx%UcSpZm zN6s-9UO04E8Q!6ufHTVp^GE;+P3xdcKq$Ofjp7tiSv^q@PJ!VOJ|Y$|0tL42&XK_= z6pd*6Jg(#OcVq7~8KN=#RQU5|D)Y+fH3BKQt!Unip2#V{crcYeBCvYOTP7Y3S?@XbmNj>})lkL~B}2TbLp^Tf4tSB+oNCe_Vh-EuP4V!s zct6yYy;>zK`bJ)$&NZ6+F59~J|3VZOsb3<&l&8qEJVXAl9`Pp2R zXTEE@THyYSw_P1UdX$-#gdO&zNkHGtkngUyO zoA1=AqF=Mo)>=6pl~dqR8te=L?uY`eJVKI@^A9QaDjw{C34l9xk?=IYP;k{Bm=PhN zgDwn12e2+Jlpw$&T!tugRE5|HS#pSDbW?DK#yMD1QZzzkhaX#_9BvF@Zs{o7wjRkN zfri(g+yH^^#MwG*H|7^0Ud*|3>h%;aIAf^$d!NoJ@@c;PS@gea%PWTMtCGA!OR$x1 zlcVJD3ShKScA^reUE%fwrV3Ml8HQcEQRwt>Q4vBBHsjrdU5`?@zBB5{4+E5AKt-`$ z9=zg(MTUhjFWH^7twB3Q%X$Wk;Jcel!tLZUW*$9pzM|};(drY#{mqA2LCE&`?B4k1 zHXfS}j{=O{7{#2ku!s^GEWxieom-5i;MEw(NFy)|ZYB`+?>M$Gu&kyg^lb|m0UA!_ zfsA?xW!Qf_Ha}H!Ua+bOB$e~#PPHEA9Td%v1B{+!u0bb)WZVG-eJgVh*l~U?EBe-B ztrZB|jCCBX?&^$D#&X+O=hOQfEq9+A=EM`|omgE>n8%TKd)+hj?d zP~b_wu)5e| z)uNY&0Dw7G0M09ucta%|V5F^yXBN5)C=2Fy=GQ^GCjZ^PpZWuD68j%NNsu z4N*{D z|JgZy#E-|ua*rnFzH$>LueH83d;4T+;IWXOcR_^niJV`lILzLxqjMqOuYWT``~2?t zxA({P_`>d$hWXnW(e}#X^tKd+e>d6J8RINc?PR<(%B+w5TF+y}^tJ5nI1?QdoQN<_ z^&JwfQSxCb&$fF)fmEmV6@DNGzRgM`sAb@VnMfrslBuk2%aPk5^o zwLk!;jFI;Qh+H@`)Qa#bihX^-cAi^AzXkQ zs8|J&panHUySahM-CDj+h5xWa@`Qk^*EtVHL>kaAlxTOJPw^>CO5HiHuKnC|%%5FP z&&N<^SS7T@d8Y3i)6i!EaPB~g>=Hyu;!PMHjmH)I8JO7BzGLout>gTX=uv=X^OFp35*H^9HgaFD=Ig!(}0crmYAG9 zkPyOqrHP^cfR^JP(IkyxpRE94a53V624|D9283lO=R5u?OqObcw8s+1oy>`mhH5$y zbQ)J0K&JiEf$7);R?#C5nJ8~klKt>8! zW+*EnRYB7h&qxC#-iYY*zUYt$Jf!Z(_hZha3ql))A59|4S3=jq?#d0Q#Qn;d3;y}o z7%|l&KTcN15_o?xFKYHEH&mm^_i!yRzee{1IaT-SzWwc|SC6*;YHRI_7X;h<;zV$w0AiIT5` zt_yKGBpnQo(h@(u3v@O9W*dIZoXgbr{HVDOl!z!vI`%%q2e7mjr>%&kfzR+G;)@qh z=vHRDT^vRwVX%^RwqedQq;138G$Jb^I>$FThR%^NM>&$e_s#=eDa&?vIkmCB_72rq zueh(y%$wo%H-D7YG{QIOORV!fH zn&$f=WsdPorsuO$O!vddzE76oad`8c=jb5k{hZnLkLfk#;U+3>Bf}k#F~a&&ZET0Q>jf zW-hZ+Lk{<=mv2%`O(u&nLa#nW;=J;W9IXnJFJ(lH;uN*zW+H&p#9u|3MkX zZ}ZHkX)&o>rh<6p9UX%T8-i0>^4Wy(vNQl$(ICrAmLc!frZRuNddf>q#+7a5J5a4G z^)914K%L{Eu>ey{)|JZrad($SVkm-T?Ya(NYrw(~cTd)ms~THc7vs_Ri6F zcaR*vyO)ssv3tjM9-mK=-Q)13VNngD#F?^oXZ=2% zBk`<5gEAekqZ~6$BgKbZw7b;1Q}Kl6+8BM&pl?(6>ELlZbG(tVOKr^D7%I*B$9U_# zB{W%bWG6Pafv$-5rA}Ar=nw7)8vE%S!ERU1B?k}CjyrcKOv~ShHyrq^^JEU5W=V4$V6;bB zzBdxoN^XQ$!_A!ug6oyhUCcMr|3Bv5bV+g~NfZ0j4gl^RM`qU1T{WET*hnkw|rx&c# z&>!KaNGOJCCB{rx< z!-<6z7p{qtrLTqrtf|DCQK*HaEBI19$twRMc<)f408Gnml@f>48Vfk_gmkt6_v7fW zEDgd~OAi=-A zqy77Pf>6P+Utpay-K_1qezSBgN_z!+`}UjnzITuI>Ah=9RP8x^WIK1X`RpE(5k9op zylumGf>QsSFfL&0I@=3Ny#??-0p4Nu)T~!KuG(g&>;&k3ZhGLS+}~8jNZy3Rk;c6M zoC{zIkW#IW0X?FcC?>KI+A}Ix>Q6n)bG4AP*0w|I`d5Xt+e4+!Rb42yg4N#b@*KpN zI6l1Q=E$(tKr6bcYkytW`iw))30yUybe2R;l82g@kkBh&k3Mt(|r@5@F z#hX8^rIl4c2Q*Ix3B3>o5sXn<+4a`8<_Q5brs0ORi2FcfY6X}Abjnhxo^$FQ;KZX( ztD>Q74HEn7z94&VvF;z_x6ew)b)UXNHo6})Iczo>N+66OcXU_VlFyV+ZTc$bH)PL? zW>7tzuw5hOL0!mHS3ys`DwJsXyPjaUJw2Ch&J1*dwtlynx^lCH6}0aY+5#k1^-68O zhJDFgF-zW^-@5M5pQyA0@EN3vopoEKw}>AgUfp=;o#ONNXTV2V`|?)*tY^zDyr# z-S53kbYEF(kVzB4Hf1`5#2$bhU(tQ3`8=980?$XzxrWqj32I9=wZFRN8+t%jAY{95 zOSgA=T9z;CJ$stjoIc_`*@v*{T@5(qeOD_<2~SQj)-V?h=guPY@D?a_=}6jl74R^y zmXMOEXS#;|Fj&Dk>vH0%OFTqVlK~Tv$WB5PS;G|p%T>9NQ-T45O1f@k%VNvbDh zNgQkp%Vfq9a#k6VG_?#$0ut9yM^b)F1SFv4ZBmbC?su)wCi$*v?j0|DEVBeT4i;7b zrCfNNgEtcDlrf9~RFVK!xgZq@`K%MITdoV!J+msW>UBmy^3b$?R`I(uS-Q;!|D}N7y^Cp@+fOz3ufYd^y$wgI=U(@^Jk!wzXl=&G71ZSo+Uy_o?1{Z!UGN`)3+Ra{Ip9 z>ps6Jn{og0z4v&Je!gvU&+mTeJ5@m6=Y>7k(Dz~6R_pV>*&n=f?BCs zpmD7xxB!s6N5f#zyY8}8Uj=ScX;Jr8r2}Yafw-wB{->7QQhMc}hy@kc(n@In!bXWj zJpzi(7d7E)13c@q+CSj|m5<%5!)79X+jQ5nY0v-fUDU?9q5Un*_GCd&i)m@&-LG0@ zWDVd~x}>gYwVJEde-B7)_oJTw`j=`Vt&=);MceNBSHXb(nfiNgIo5N$E+B`F$lrB6 zOPdE3wlz$Us^^c;o90dGXroSwoRhWR{aK<)Tqk#EsF!-S=rmNisvmTpgIX25?)=h< zfz&NhFJKl?4*NM&!&r<-LjF*hX-T;z3+3ON$B*vI9C#8f}u%vA@DNE9-M z!|K|YuK#E}p`VW=MgZqj>EklU6)@2dTVtfZ{JAk!<^xq})_tseU(ZWfibiJCPGtq) zwsHe)cIswL&`n&o;MI_E=RDM_PZC^qu#C3F7Nq9>a!Ka~e zDHV7rSFUSiJ;8a&y+XqOO9K%A$?sQC=Qs`QmABR;^}@GoTW>b9i6@YT>Q=(!(PE_xfV0xe~j5E@jZwlTPyjz1#D9uio^1ch9d}e-7~RmtOy78S~F< z_t(bM%V1kwlg4``||$Xu~cER$@72Snwk3VZq+i-Hu-NA z4t}AN#u&~KQ1g4-2M&Jex;Lqf;nurwZxi0O1-w^EOxtQ`*|rb&0h2%fYHe?s$?f;M zi)574_jMaicE5kSb<`9?eq#kzc$DsHCU-}u_r zV!!We;UqQ{=wRMmx@Y;*LT&y8cVOO}n-`V-Zw$ed=B1~+we3$Z80{Jm-_!q|4;493 zRN>yN|8B4F$ds(oLi@E=rkLPADLHe)Z68wyJRtgIg_9BiM}j4vsA;@j4?aW4tbunHKt>3uR(@;xyqs^6&#jU~X1R+&MaaCi>TBL}1-Dv3jj-{$OR>=nR~Y4Y zD8DW_p;%Kx#;m0ZX6gQO-b#2BK`ZQSn8Rj&p!*KpJ^jyi&oAA-1x8f9)%$x{us^5y z@Au@pd$J|nc*kz}{x-i0y3hCh@7vv;eFd#5(ETy1NYjBz@{)S~{aHe5ySLX9`!;(0 z?Y|Xh^4`0Ezf88|Huv{$<(2)}-2))~^Ec~W&-#6z8aMAh`=xIG5?Hf$dboGbueQ~9 z>79POH%_LV-1YxnBjvZ3%hm}thVY;NxBpx%7)@xxJ000~c0a+b-QGI4C1$$WK)q1c zmqy;cYxDNqV($B*?e6>B-+y!WrkzbD{hNNag<{uxJ&cq#}I0%!%{MGVu8?hOn4JURo7(e>9Apv04tdCyLT2r zlExJ@ZG%kl>uW2^AbQXwOWWF13$2vvU7yDw*|&n7+X-1#p~-8<1}EE=Kys@ zW>J_uh2_KnfpCnJw$iTL$1{p8!%JYU4?RDzs{-fb)(mam0zIb1b-C zLfyZm0M;3dqsMigx%_B9m%PaZ{Adar1A>6_guze9CDr);oC|VFvRCVfP)h2?z_h0o zOtj5=Ji7|cR&x?`1MY7`XC2)Mm@T2RC~9|w5^SEm1=QYqrWahDBsjm^zOhi?&(_9x&VafvD zd&DIotg+1lF}P<80}a-B5SUNoS`CiJVZDV>B}SA?u8^WM()wW}_A__$pcP>V92%hM z1K7fyJ0QEw8z)7Td6G~Y>kUXM)u<4!UJT%&!#a-bP=076l+F)4@2Z%FIk)qdz-y8? zBsCZ2+3eY9kV8hwtcV*^5G98Q^LncLQx*zEzz_99QBqZTNaxj54Hfk~)ld(fhf*Kr z(&z?75!RE&jLpXoS&>0^GHDnp_431xgWgbL<==P4oaz{ z2?E@}A!WIG0s$pu>0cXPDP1yUbUe18=9tNe!&QJ%0m~F~%Z<`)WuCKU1x;BJJ&VU- zlY2XP0FD0^pwXJNvCnm5$ROn;<-j4K%DlGD5vGYf6Jy{^G@RJhASdRPI;3s#-Uw?(j1kUymi;v3Nr13QD@r}Y``(LZh|-v~2IB-AM#D*V zt$`s1sH`yvAppkUe2q1n$$5wKdBHe%ILqT)SDxQL{pkw83e9wR$&m5%aYTv<>zXl* z7RGtJyah|_kk<(rtP-S@U#e838V0t&3oQ>L^wN`QpH93vQ)ZB;+ zO6mFEft_9ZZJ#zhsnHhdI|0HV=S~b!_Hf7B6i@(%fEAQY(q^UAy<*?weANf)Q25Q- zH=+&i)J?8DsEwnazpZ}Cyt03P@9ovr=AJIw4fHq5he5as3*Q^ydOS@@bXxDqZgMo_CV}-hYAq z<3lP+W4EBm``3POt?jMknq_7P<@2SnL!qAmKkZLhijYaa{PO1ImL?<0x#`^kU!GQ=^mngy)_stUEy~C1&^n(-ET5GY!!2Kfjz|l5iEU?ZA08rou zCkYhWU`$nXnzD3%+*{#E{(vUPv(6&L$ikzh;|F^Ip`#D#+JY!AMyi5nym$-+^L2$E z2oDbvatdtG5i1OLh-!X;6r#+$!4fl;5aGPRXdQA6P>+5HD3fyn6(E5HajmFSG67WJ zEQh3&l5jjuSXSP@YmD%N#W*<_OPH?#1QtNKdQ?kLX{x}|n2CamssNHPFknj^Sp(-R zG_)pn!fIofO3%F_-0xrAw>!ebc7OdEAiTA@yiW`LGr#rvr9)$HE%-~VA^SG&zmI91 zEr3d_qWs8r#<>m-oh!KZJYaDKZW&Z$-uo2CPnWdVwMeibSxaB&n z8n(4RpQ#%#t@9N3=S)gHxQnj5L0RbsN@oXl*@JFfDjXM zP9pGYr~-E?tP!qQmBBfWMa~V}BUVOADb16kQ|6f8Wl`*@KWH}sd<{WRUJX8XjUia? z;0A}V1{hH5BN|{uhG4yv)OAutFLxej#7TN%$XxXfxrX7AAy5$oATiH$&PW1Q@l=sR zwtDj9jACq6*wl;18p}D?WI;=5=e;4*c_1|KF^iInQYr{%okI)>wbCNki-nAMWQbA{ zR|aQuDkw;8uLvb+sc!ZT(WI|Q&Y*s804W4G@6jr#pjK-mFpV+LR@yEqsHMggVA6!m zDWytB>Y>DZNB)s0XtIxUDJ|a)O67^FsOj_Sjhi(OWjW5FwU=aquW5V_CRFcG57fS}(kLt}>6ZHAj)=WQi%k zSu3E7>=6MJxMVkbatz*KUO0g+6)9a$3?h|W5KBaisK!K<5sc8Klcc;+st-9wFvRqp zbAs~@*UJJbZB5ON|EX-i9>*lW3{Xmha|23FHPj0zaLyt{KCjlquw}|rLFD7XBZP!R z27@OQOIRWUttl{HFPwFp_mS|R!8-se1`mJ|j0Iu@uGdfvWFY|7v!6H_2Bobbc;gVH zsDks30YL%V3>-pQV5LHowG7ap<`T^C10m%I0*P^gfI^5NBWJ3-X?yi@|9u&yfh{uD z>P7ONLfmvDHKOaep!;zTGTc{ex4NG08TR^$faHZ!?{_uqFd%P5FAbs-79YN>vq0Ntw zr@!{{MSJ&sxl;MUUiR!|i>*w5JJw(8|1Z5?@4N4$u-7N{^8WVyeTd+D;L85{dsl(- zh_;7*i}AGYV|)MBp@WD(|LH&dufLfJ^bpenR#O&;swyx3Wrc>Qb+&g~-UAPu_oOjt zWd?`igk_l#1A9$qdrHvEByNYKZEN0=QhKy1W11$A0YV5+SM!Dx0~(ma{j_x~+(+u( zq4Ushz%Ah$V=5D9?vjSH+Y=w+ED*M;Ch7{@){uoBV+@>gm7%DW6X0y{Y>DRk)lyQG zH|aBj96f^;0g9wVATmx5C#>rV?;Pf^V46nmV-f+`FgU<5ypSYz9>X{w(jD)}W!v|c>UolP-=Ia}Kn-qiN@qnMce8n`57@Wl#3cj2()@1PY za>2u45N=4ALt+aw3_@VK59Q{2@cHuvDS0>#y!{+;ez}T*kq~2sa~>&$dZ4#MgcDsBWJy}dpMUqm2TUi2+=~47q=1&zl<0 z%bRxl>mInHdsD~Sm*4$!L7Lk`w_U~%#>rzCoCwI4h18U!noB~A3FA1R6jcO!y_)Qg!wfHxWnEvejtoTk5UR=zg&@nu9d}j7?E;9i3!(bg>z0kVVF;R z^Zg@!|JRRr`MO}f0Oyx0Vp?%HP8j@%x3?=&%&<0N7)Sig-+qh#=O2H<%O6*SMTByw z>%0M(=9#uVNI4;Wz&I#Ungk=?gtkk>~>@h24#T^O# zCp2$P@V?9$!!W>)7GFNU0L2KPlVHfg51hC-%n>MDmU%iJvBn^B4DT&61;%->7f{47 zaCpmdS!#)4fO(;F4$HhC#Q@_h{5T?qjOBWTp9TqsV-U~S%>T&Z?d1xSIef-igJJMk z=D%*U|=otFha(ZxHooP8$0v)D5|(R1LBiks_=GhqaL(cL*9Cw2d4Zt^kd1K8W1SZa zgTe7>LIM!35iv$gBjMXm6Ry{Y%N+3h{DlAV5C4L2WiZEigO~s^1;^6}6kwSHdu1I8 z4#xpuwYa>^c>ZYc>4U@5fiMgPZ|7GWrwM}xLRc{!KjFXr@e97b0h7!4{=>iqBLYH* z7zdB12ZOIK8J9r#`g6wr{SRMY$T2`d43MRq@rVETh;P1|aJkMnxq?U*DIf5E{O|vQ z<(e@L7JeLH>#Ze){7TrDTl9175$*$Y(xF_VP}XpMdEwVO>`N$o9r# z5?;V^z@{>%CNP)WjVYCl@j&@%54f`NG{P8zaU5AEu!Q-#-T)GMe*-88_(TDqU7KosD`hu6wN`X9(J2n94AzB`IO1CaYsXNieL-k(>N=MS zFsaM>W)n*XS|4onT-Yify)~$Eq;7r!Gn^vU!H(cG*&>LA-JIA$onk~-16#WjBqm*w z!WCecMtDCk!v_mfqaU!YD^Q55FDURuj8Z;7eZcv01`)>>UtX?=YetS4*06_0UzSwI z(H|awGQxgSvQk!{$U5P2UJzCeAJX!$Of>t$rQhfTZw;0>EnR6 zw-w7AF*yS_5{w&gy=3HQF|RYoPMpQR6r>CcD> z3+C&JlzK2j8Hh5GBA@^t!ckm#G){UtI?VGGX)Q6n0 zUoYZuMaVhga5NYuhg^(!!4XQ5api<8LVz{EIE`@Lvrq_vpDdOI_|v~$uv`MXH}J!N z>3GDKFJD2F@gM&72M{@Y{rZM+@c8`G8P~U!!x6;tX|2O}7&yV@;4mEyu%1J?R08z|^YUQ&gEa<#9TD)gjF@{0tqS>=L-cD%l-AqFTZm_W4snmq=I3c6J4GzW` z9FG&o5Z16Tzsn2|eEjYs#?uJn94F+=8OB=V!d77xewp9uei^2btFR?j(1-|eNk}0x zfJvo#C{&L|r6F734=gyQsEKnS;YMxFH2fjwf?*mF)&OK6t`T7gNHMa4Yzsbq{{ho! zfb$mCI1Ud2ds{w#d`5@?h788jfq}tN;0IP1t>Lj6M;OKdWF^csWvL9q3PaZS5wAIW zS)f)xB7j3iz#b+<0K|hsc^RMc8Dxoba#?<75&q_^k))muZ!d3H*MPVdtmg%B6>uyi z6e2c)P{#4(5mJORlXxPrVor{*TvtqoBVsA=-oXzRVF~P|FbW@!@!^ z^MjI+LS!%^1Q;u&w>yx|c?at(!m`S~Wut?Jl<7JuSfNRkodTH>zLOJsSd>BnW)Zvq z>+JafluT8Q$ti=372blHPo$K@2B5?SBj+sE5NeJZYuM9)_qaTh6CNK&P$^h1u>$@? zz`Cwj*MKaQ=L!LKuox_ZYAJ%1ED)?^pgOD?%2Rla{ebnlAg)pJtu;cg1}{-kb7mtI zUot<=ibY+#R1G9_hu{YXYm9i^^4$8t^PVEWkL*QUVnUb$);VIDEMjD!%XwfLN4$Iq zI6e$0$VdzD_49(4ui}+f2q7joN5Y>C2<)9PP98)V%e><0VZil##^o!J*9AEzct5~7 zgRllXJe{gxH3@Oz_U)dc9%|5g`=7TJ{i0ybrB-^n^7cmx!1ON(4%Y2&)*MmV^*89-ciO9zAkQ z4C0pNIX2d`Kbiw69c>DZ{kIyHJgTcH6fCkKKfO8|(kn#FfaG3-C_^&U>$%tIY zfGvBr05llP37D?|-trnQAe`p_#DL%Z@EuYvSm(0w)tnvE#{p^3=!+f0JMS*#;|;&1vH3ALgbq)&qjCV=hXl&xf}J2FQrHo zFE&y*0cTTUKvRK%QbfToQRD>E@t+I+En?CA1>}jQc&;GM}^wqbip`UvhbpyHyJ@Po1mpbR`IyV`cHuSNT znH#3ifR(L-L|@FNf4|a6>&t%4TL1fb*#k5vEML66zKJfVKocr0b9-jf{=PrA^r7z| z*dKrV!{6gKUcVKvfE8$2_8WW>Oh@&dpQY|)G{fhz-uf8;7F;hg3#5^mJqp!u2u;FPH#M2f{3$b2=2oet zD*L4F`=Y(s>nAeDTO}I!{i5(_{2wbi+kO;?Vz~kcqAVQ3UdCoB8polX-$f;nS1J+m& zBH-PKxF%dL0hjX?A3i?w+GWDJ6r5iJUcOxMPyh92lmbkn!S%ety907AQu>vI**E&t zd6}jGLi1DyZ=qY=DoNb_`>J3)P^|y%@u(iP zZ+q$x$#!5!O452aoA^z`U%Sqaqg=DhMkphsI{aXfPg~ShNdJ9EQ>0`|m%(Ig87A z;gFfg6=T$Go{YobdHq62$O)LH1GtC>(-k6+)&=XzR@iY8YeZy_;_Yol3JKRY&Ownv zs=%}E|ec)1ri3Aw6tmCkhGgas)Ec`fZ4jb>Y0JULLImWEDN2LHk7s) zxJhCWD<~Mp5kQ6?2Taq5X=HC2?Gq7)w~#eBJ)e*%bE=*~@ZQ7wp`%4nlD&l=1}Q%r z*tihbQzixm&9(BxI33`ex@>C+Ube3P?#J%|lQA9`YzZ;4@T2Dv6wBb>xWX2DR&b@a z2(5zTyu;&%2Mm+PFnO#? zGW84yAwWw`*Qu91>#<{NNDgh!ofWQzRt8d52*bprO5dz5>JGWvw!t z@yI3PaNs>M3?3l{_Qp%hGeSsJsq=n-v+S9sfaTylN@8AAvQ)aEf?*u7hA47m;t)*B zVAyh9W&Z(QEZqeXPGzV9ni&~xVDFS%R1s8scV%v@kjIWBuGx3)Yb?F>y^u6 zA3sd^cmMu77}1dnSr|%~&m0DwqT%GRFc>BRfjxECWkp=Um5EA0N&%62{A>C)5P=}Gv;-Ha~?#5H759Bz%oZ14kP~gpTA(9 zd6ur1gx~+wM*wFa8eCo%2FO#!IE?^hXT25dQebGhSZVL*;lH@$EMwCrwUV2Kzc^%!|e4 zdc_=pmoqS(09y_?Ut&e<4UvS_0mX6nd|C;a3bG;Cfva`8;eb>M*0|!EZyzzw5laei zg9XUr%hwBt2p^uG5Z8cp&3JuV@buw;-~ITE(}PFBf+a_^p*?`Q1 zLIxp6Oiw3V&JkfL$bt76s-mB7WDAuAl7xXCk4IL7MZs6l!kVVgx140M6yl}O%Y1A! zl$?tN6-dxrTtwRh?j-qZ_6qynSV~0IGs8L0o~4i~aF(j~Z7J%RU3M})HgixtM*yj? z%HfeQahN^FK}w#p(qz32pio2nniop1gY|uHI$9f(jxou+G|+(0CI;0~1se4EB6@~` z2|N#O18jNm7VZ1e`hj|%0tR|n>vnR_t-(**QvTe3*8k)2-3y`G&Pm_LroXp$_H@xa zleVAt^w-ZzlewDy+V{2py_dt^(--=+>)Y!4qoBVbvwMo_Kb`-5_*6d*{ki>|VE^i` z{^sw0E8uefzACb9Ue-FZ$&ek@~6t_{#l-v+!2VrFIShiZ68b5CcmQ* z$+pkBftm}Xfw8EYT(9Hlzyd~KODTt4G3Y|XZg1YQkf_Rc6eU2{+FHxVy5;a4E=SD? z&aT%P#t^(8#HF%BGzD<*-oaVR32`I4^n33s3R@4E!d^K2oc5cc|EF`y9up*^2(9 z0_#S6evJs3K-M88!rLVxmx5VhiBkeAwIE#Qh}V}Dmvcc1?2V*=8$h7KZREn?Rm-x# z*%3MOJ+EKS@Mgs8=Qq53Iph4c;PMi%TqB&bcz%9F48Zkrg@UHcWYUcgkTVeDDhb+RerpbHraG17X2zCFI%Dhz>*6-D$MQNJ4gPG{|px@JYAEMOX zr+cFD2h_czhlM6XRyy9cfB$gWGxok;x4_W0@9!Nf{XNF8CxP>9osBW_JP=#9on^uG z_dk4t>vG0;oM3Fh`FzE?uy+IlunFFKWE5ly_z(a6@9_A1#MiGcaOCmw(-*ObE;zqk zv0MV?^U6wCE=V~bQ^B{tf51GS#e0Gf16ysZEwJ9hdf+g54*|JIC?9w(h`?SN#@16vfm@yXUa;tCtUnie+EF1?pY_9l zBpw!u36LoFz17Z$_keR2WI3NfP6;6d%$J#g<-+*|VAvvUC-(eHfq{uq3SvmeCBR6I z2V+_BPmz_doKo|GNI(WF7lt^`(7dcD;P4dUVO zan&k7R8RO)ihwrk;i^UsA_nZUC?8O7DN&R&*lRPVCa6KIzXZa%23GQyh;>;|1aNWQ zbLg2h$m&^?3u1^2B;CS?Yo&UY7?1_N`St_C${rmg zd~zIzs^n8b7YSu@=}T&60${@jt3A)Vrs*@YnH^dF?u*RVLW(z{_=tt zdG1fsg!LNXCWq;CfS)Xm2ZP7a;`?uo`0kU(w;zr;og9{2u&#hN9^P5RnAx+>vI2cL z447y3sG1IJeY+yA?0vS^HM}3HXNR>0);U;j1@z#MvX~M`JU*>80_ZkyNA;dwPSM{r z44sV;3cku2M+Gs(TA@pIk}Pw%S3te@RrcE(p81&~q3zli*~6V-RQt){!%e=|^V?Y~ zWyY!Il!`In!>13`v%di^Ekp=lqvPRt;B!#;=2k~-3U?2{XoyaekJ%%+$qr3N+Afj=ZhE-vbo4E zUJD)Xc5(O2>-IgU<0DdH-lA{XSG`9s7M^YO7HIEks9ZnRZSIU)ceu^GK@|{2qpf9O zu4e{X-r0L!+lV>B8osj(a_{f$(0a~oJQfVRKdYQ4zY&DtZ zxz16NTmfu(;xQS^61I+`lv3kaz4w^sxyE$r;S$9ns+*!`yuI?Rw4mS)13@jXP!Wu) zKXepilodwI35SEn|L{Nkh+=@tc}5Ne1_PG)f`^9_e)#bbPtP9S8CY9D2(Wg<3wD3!u!b1e zP51nA0kT0@A}fF;f~X)z!q=Z)ak*Ui(6$1|qz3dUjVWluX(jpd^*`^$lQJ-)H; z-~Rpm;j;%~ZpXu(Oyf9WmFi^5GbRxza$=x{e8JG6cOFEd6rA%qM#P73TN zkMDkb!trUu<#NGgzJQE{DIV8LM4<$0M_jKf)@u|`H3n8r4=2Q!@bS|L^CclJdQbt= z(c;55CuE9v`gFwUd4d}Z=5;}i5n)Yudu72DCcqCKVa)BL4MOu@1rSzcA?c7^Q{@2#4l{D;g$jB2gmctRAo*n?=zFKEF6h9@H~fLR}Pu8pjc22uoU! z#nX_zcQPx}g#q+&9FbFog+Y?U)YcgBaA1!Sf+$I{S5wrGKr~RPdRVsjZ_Nw0;rV+H zRN}R=hWjrFkER!bH5S%bT+SEXLxFR_SnH5VL@a?HNt}Fsm^d86I*akZp-2W6>vcs; z1t~L7FnEg?XU_eiAsYf7S@HS^E7P&k-h91sm{5{XUE;hlImVg~3c}N-X~aCw2qDN` zG8Hr<;MYb2J zC5d_>IBO7Mz%nm9uHk@nE%^NTD?o%{95K%eoCl5vi@`-aKRGxXfLtU$mPHV+s^uE6 zUb)zVcLroFIENP@t_!Avho45Q%L+olFnL_(6)=R5GQM6Ggvjd`U}4;duP<-NxnNBh zFcIT{=`=>bS`OuUK5!10ahUL5{^>IY$01|L2DwPcUSyv4;}1{x?)wp6Ue5UT(6;2F%xp^Etqn5ikKCK0G3(6{SRYvX~Ad zUe5u4`j;z~tHC@c9FHeXmu0{_bV=~m;pK(HdO6#G0l~sLhzHoNp_OOwl~+fTouW;xSf@*`02rAPMiwUQy;VTHEQtfgads=Wde$HHS+bmsE-? znL1fiE2}YDT6H(^cGITGfD2Pt2D~+lHp_XDD-UQOh%pv11@X}Aqd0E8rmZDt=oXQM zF&auFVN;~ayyT_qKpqWkV%gZ#cir>YxaT$A?lGNy(;Jtz0Ep^6J+1V{7JXkY58u=M z_p)^};w$LU)^s06q`7ZM&iuU&z8_noiCY71PiwdR-|Fo5=4}to>}A9r57^I{eqTC| zt16$A``AJMcMtTmejE0fk=r&4aEo$n2mO~^`?j}kUE5AJg4iN`K!-+x>V(`9Y2SbT z*-wCOK7F>IEPY-Mh^W_726(&>6JMR zH>ycdr3|CK@;z{kh~x5Y7h4Xn5M!khOFuV^mO~hTlx-G7+K6x+*2M1G$jCY1a=A*( zXj6=JEIEVAWy(h7vXMP7#1__vhX()!!{F;2t?OFDVbns^$M|WEp!bwpWq$g68>6ld zDQSu#eoHSJi_ZE=f*(fA^9r&FjtEEr-+g<+)AJFJ&mNyYzX2x0dxKA(9xzQ4e)@dH z>stbH#_@2%m!ID-Us+%>R9F}p91hb6V=R}PC9as0#En@K5^D7VGC)dElv|FaUFMku zEn_*Z-dL1E2r;rERq2s945C2RCs*aNlp=Y7wmG4g-grIdc}9w5N8i2sxBhKwJ35EA z;7Hp`x>o&xrAqUAjP`cTx1MtQ?|WMB>7>!C@};)^^2FxZeOvuI`k(s)uxHl$gGrSO zjiv6bCag?yU&d)d%7H!A3W?AT%;yDhi5Mw|}TrDLm1t}8z zI3Sk=^O<0rt2$4$Sb<<1;qmc=7zzki9L5K%F#yQOV5RN(`3aYKL0B!$Zwpdj0PuJ` zU|CriI-WfK?tlJUyuQ4mfG{sJj)w_PPmk=iP&fo-@B@tDBID_sBTlCy=F18) z8RKcdat$a&tAJ$jo>QjSTv>Zs@B^1@w$@6h#5T5i8v|adcb>D3K_b(5R+RiF)zARR zK|zGD1W=ZEYiBVG15}t&kCMu7GUtu48eXai@?@`bQpOg>0t0a6+EUA-52MHF>Bylu zVTG~4I1bF`C9b~+SQJA*7DWwcA*LX^s5H}SVNhs=^mqf4` zxiGMAEhmO8P@#)GEkGpYs!PomMs?pXUr&hvD=xLX)eq9w!WwgRvHaA3?@om^{p2#KXc1V8mV!0pD|7TkDJ@*e9ScO=u_)i3dyw5k~VqhzwAIC=Q0@7BcGR zCcI9{oW~`w7gEZS#Mxn(CN85b;3gS^B9#QQQ~}fKS%iX=Qw`1IeF7;(zUB35u}1+y zj93<~1Y|lO79G&e;U27Lah@Xsn2hOx!&aPQWj8GB#m6~1*gGi2gcuUS8klwo)iW(i zF23W#0mI~xV#c}z#1QfLbi(=diWC#PpI`_W2Zx+5cz&D^SA!5)4j@rl*CirH0!pk( zNKTqW-{ASfh=P^9rJMm}3sY9)bj8z?gPR<#Gs|$!J1%Q)8Cc1MJ-E0mdxjevdstDz z@p!;|VQgWWr_J>>!H~haMxYoL9>BoqI!C;m4K8cJbp{eF%)o&1d|rXv$mQ z<0^z<#p7v&_Zh}Ij0XqjJ>FhtrdY#!Y&dv4eVPEUG9LqAvc+{N_~TDsm{yT-y#`Fj ziIc`=!u0}pPaq_?(ZY=kcFmWB92pRK{dz$$4$E4wzOk2>8y%8(Ymd`GDtZ-s`sRon zEv~OKkehsJOp_g2j!c7MI5a56AYPKDDvj*v%K5iYig?fE8%0(XeIjtO=yL0A(92HN z8cc@~*eR;Lmvt}C+*82S177b@UiYowTb&_Hl~t<@L_OUw2B13TdvZH}M(90} z_8`q(Pk+zp;=T6wGQ0Li*Hp)I@1FPC+Jim&G4}o0es5ax-+RhJo8c$sh~2HCqI2A%drH{4Fo?QpaM+W z^x`r{Bq)4>mP;fm`1tXo#C(^HQd`%J0HR#u(Mu5lD|4JV3WLp!w1qfbWA-Z0JfSHU=z!#3ZkI~>W~qu87!`s6(|MHCj9<)5BTA) zjtDW~>&qE$uLagSkjY3TY5s$$CTYLnx-lk?Eq|hXb*7g_i4Ykn!s@zE~p1h ze+akzr%KK*?ei_Oz32A$-l1`?@B4ml+metPaS2voGA6EAb2v=!c0>#-!pdceb1n#p z6Uq7m;p6uYTQ)Sp$@unnPq@wj!#Lo2dBZRQ zfA_!q9^=8`?d<~VGk*NWkKaDv_56nG+lrJI{Qk!eod3gQ{QigE;e1{= z7e&s^O9D!trLH-H@d~)?*MsSRLminGqLh&nj=31eafvnJLh&fTSo zViJ!;qr#F1PVDK>+|Id#bU_F!0~slUN&yV;@xv2x%2;N}w_z^GL_pt6olH{y;Qu{#U$1UOT9rm+^wJhRt<%{V=tTKQsP`X0v# z1VUUQCvi50lQ<*8dMn{cNx(pWB#%=`5@u`(&aoGdvz$P?pwzuVq~|fy#NPYa8EH=x zG?FlkEMQ-j(7XaBJ3m=Ge|p68hbMgg`72PwyTlk+aNe#037?KyIgmFs5tkw-3#nSk zx$=S}H=WNjO5pG_KXG!Ir{@Dce|`nQVHzE#$-z61fBvU0aDIXlPz?aCml?>wI1NZC zR3IGyoF_ayj|jQo^XG)0e!8$%mm!SK;LB^q&o2>vm;jlxb>;k21q2vioo5`T0msK9 zb6heQ4+husjFOmcpPvtS`NB!6kuw7ZmSF9G%b96>4F=b1L9!D*zpd<{0nC`E4bC??MML>e5Cyz;-eD4NMgu`LJ0v6^*X6aSq9*Fs+iw!?pnRQPSK$DgGzX4R<+s}ud&AmrY z4;*nGOSc*CmS(s;`Q%3DS4WHY0G7UhPs0_^_3sw2+5Y~%T&{gmy|(pl3%K=o2h;mD zB}U(_{qe^?{C%$!G(e^`!v9K57FPwLcL0%l*L`KFDOf$~SGvyuO)$D8GT^rQ$}haV zTZqO0ZWHrpdCj)TwnTob;B9}RKF5FeiK&#q>=(I5)wa*`OM%`~;}+e^n=v)Og%toD zCqJ)kZHb^-6iI-i-1?!wgaTp=_;m4*xhc+3(B_mhc9~t&*Ofz+j3peUoG!0lOX}Mz zt)*z^UTO-LZFIm-Dm{^c=uAmL)r*Tq7Z$|}{vFTit_RbAp)p8LmWt{*33-(Dw zK~#yncNK6vv@ygA4pf*+Fq!cE4+s42_s@8G8ZjOw{Gb2V&-nSL3rgg;)z|ZiIRMv7 z!a8SMuAIa#Clae4uq-RmnmD$(SY)y|d3Mn}za%UdUMEdpNrv55iAd&LXwSBTb({u_ zhXL2?f*2Ckl|e5MD?i3KI8SV)@AElzOjb*`*JP;ZJ&tk>E8qivkGi9-lM48N&peE5ZqvKT`u_XhbR2-{SnjXP{`u( z;|M=`7;EtOIAC5lByhQ&@!jtqaDI8i>2$z{Zw9=*urNQ32ZR{$@^VF36H+Sp_WMWt z?uRFkA-IVxvPutwAMxe$nXR$jip8HT$S53MFnW)$1kB5Vhfj}qcskQGMt2|eU zGM1Bx`(eO*j)2MdAOG$<{Ppji@p``E@!JEgmxXE58pPOQy+Ii$4&&swqLJ{ek~;y5 z3W&t=1uG|%l*k105fs#%BP5jrL84fak!nHAUm?O}E?M%+pbCKsFtdk`!QdT(-DKFC zq^JDnh^LPLSuVpJ1D{XMS;UkObAtB{ ze~@IP=kp90;Uj2*#_4oqC0xL7Mt}f5>bO$dGD~t*BNdYhmn-H9JaMDL;dDTs@ZAmtAHI1+ z$gIS;!NHFMO6G7Q%^SjHkqy>$L5vx1uQO7}Sgry8Z)4}y+_;TI;SV=ntV=w%O|r@S z|9`c4-m2Y+$FfBd#AP2EAR*b4tg2ii*&31pA)x#8>2sFZV<^F<&f7Zta+#Sf6JhqK zlx5B*Nf1*KW|Xm-e(1(_D>R@wS6roI8oN455eP`M1vB?;#umz;*21iVh^Z6t(!eHsgUe?+uZEVUK zFrx3EplHL1*3VExqGQaY7&ivle4XWcwML8+hKC!wJ-{xXv+MfuTJC8o>vh|bAvU&p zOWtx8J|89C6_M<)>F(4=(gIQjA2;{Mu6M;@3S1{+mV$toLO_y*A(M-MY%Urc5;ssB zuIjxU$8r09b)A5Z(@P*D;Dy|Ogkj?&acf`hF~)K@X+C`DndZQ7>c~;y{e*UDDbgzU*UE-zP>MU$d9Fy#c( z$lx5_2c9nzWP?hYWe$Xt@N1^)HCjgwqoVJm?Kmuvmy4%! zBjhaYXGT+SHKs*uw~bMZqd}1gKC?`L~$Ip4PPw=qa7*eal->=`LGaiS{n1MG~3ztan;aZ+1^yJgtiGC#IBGKs^I zF&ZC=-Tjt7DRI?O4SObKR2J8^8cSA|eLc3dcGEeEF`}~C3Iq2}psg;?9+Te2WHraV z?Szmy*ye3j%d4KFGI#1R@5k;w-rXfKKys_ycDu$g?HJz!J?+mP>+kEWU$tLvbY1h_g;H}QNL07LI#ydN)BC_ln=I7d-vcE7-{T%w*-zI36+0q& z4_NHl4)0f$|Ni`P^C|$*CSK6CB)m_r+mEq7Z@(NZs&=1ok>{EG;d@ zNT4r$;(?qK!!WR}qWSP9VTa9itGZ0wFDTVbBu44c->$!YDbyYa-Otk&Rjq%k43i%v z&G*l@-(~4@HAWWIm=Y-n8|C;o@c6k$n@n2aUw{0E@81IR>rC`uT;e)iG4_G$OJH3T zA?!(96?tpoy?qlPbE-iW9HZ4CBDJ zZ%=f#lOzaDE*8T%EBc`$gt`&8eZVqqrr5_;>brBM*n);;ymmLR{c*n-$}#t<$nAS? zfzn&czIGjW`#pRMlHA|VdX1ZXs;XeotqAsy=0Sb_o&Z|=`u+31eSLr3ZEym-StHtW z)U~XwFohs)AC=*vjU}eQ;XD>WSU4UYSe8K7Ilg}Vz|+$U*D0Y`7zayOV z1E-_reC#Cn4l6^S`SOoXeE)tShQzvP<|!~945y#^(pnT*gXZ;l#=k~ho)<1p3!RgI zd7c+?RHTs56#95Cth;6Mq$JFg$Il(lmlskrxIvf+UDt^=mDQZj2fUy7{p*om9u5Ee zdF1=c0=>c*$1+96gCudH+frIBv}Sm)bVI-C2x)D|D6|opx1u4;>zYMVP+?G+|t z48|FThXLE!;_AQ_E7w4>?rW8SNGd@?*`HEQj1L2gp8;4V5#FR~?Gze%rC_6wHW(*b zCBOduiHFn3{2GX16{d*ObT0GL+4A+bGlxUZDv_8rMtp+|Mg1 zP!igNN|I!z9Hnh8M~>$sq>L}FK>*q*vJw`E&edX9-+i|rW&s`2S{OR)l|)L?QLVoF zp)Zhmv3ORhh*wh9d`aTR!vS4d*lO`W_VyxVUM!n+VG8)gOKV61=Q7r1LQ2fjO7aDO z$#8wWisf@zJEQ^~Fv^JFx{rh<5q(5ONJ`q=OcCH!8gkMi&|4~MUDxeGwn}Z5=*CG^ zIIcp~uPiC&oal`$9-~F?qpi%DGVu4kE-ZQrfyk6&kT zgwn!pvepQ=YApTWI6oe_E)y{bQzesGeL$nITJ%eNh-4tFa(&WzR-82z8-u47hC`2?$$!qjD`QqymNtkR`xo z0hAC{jx`RyhHZ~smz5L)#u{8NaZsImx@adFD{U4c+FaPY&Hh)Jb6P2!vCONua;>Yh zT7{5soh3$?uj0}bLny^285>FJS02xrUw?U!SY%YZyiRDNIh-Dt=D;+Ck`x4vr;+EE zg?Y^^KBKbbdhw(v`@hoCe(tP*IG{zNtIUga4OrVtI~WGPh;|Yx({~-$*NOgM>H9(E zWXfn`Bvv8OkA`9FHioT2V|92@HbeRNq(V{Yw>$;KBHow|9e{YM~3)1gB+PGMl?|Lf| zwC~y0sS5sX=MlC{PJ2FgTloHQ+#~1QMPL7_sHN0yiCx>9wAG>|mTI05w{?C8cGRZV zx#{bavAK8o$?WVPZ4|C|665B|?l)9jo(d$^7;;bY_s_Y1rdGq|_CDO^L$~>48y9XZ z%j{Y$a<9_X0np~}Es3JdZSV8bJ>Pwso3;0<9jo>|71VA)s%@?m0B|2KMc1{G2>ZNk z0iyeScOR>KGk*7Z_3dYQD?#!819|`d09?Z; U@dXZ+bpQYW07*qoM6N<$g5w?v&j0`b literal 0 HcmV?d00001 diff --git a/libs/dlg/docs/notes.md b/libs/dlg/docs/notes.md new file mode 100644 index 0000000..b1e55cc --- /dev/null +++ b/libs/dlg/docs/notes.md @@ -0,0 +1,99 @@ +Notes +===== + +# General + +- The default of DLG_FILE (stripping DLG_BASE_PATH (if existent) from the current file) + will not really compare DLG_BASE_PATH with the file name but just skip its length +- Adding your project name as tag to all calls coming from your library is probably + a good idea. It can either be done defining DLG_DEFAULT_TAGS e.g. from the + build system (prefer this method). + Or add macros that add the tags like this (usually not a good idea): + +```c +#define MY_ADD_TAGS(tags, ...) (MY_EVAL tags, __VA_ARGS__) +#define MY_EVAL(...) __VA_ARGS__ + +#define my_warn(...) dlg_warnt(("my"), __VA_ARGS__) +#deinfe my_warnt(tags, ...) dlg_warnt(MY_ADD_TAGS(tags, "my"), __VA_ARGS__) +``` + +__TODO__: Add some examples on how tags could be used + +# Windows/msvc troubleshooting + +Windows and msvc are fully supported (and tested) by dlg. +We try to work around most of the... issues on windows by there are a few +things you have to keep in mind for dlg to work. + +- msvc (at the state of 2017, still) does not allow/correctly handle utf-8 string literals + - this means ```dlg_fprintf(stdout, u8"äü")``` will not work by default since the + string passed there is not utf-8 encoded + - The above example can be made to work using the ```/utf-8``` switch on msvc +- note that dlg always passes filepaths in their native representation so with msvc + the filepath will have backslashes (important if you e.g. want to handle logging + calls from different files differently) +- meson on windows: if you want to define DLG_BASE_PATH using meson you will have + to work around the backslashes (e.g. in the path returned from ```meson.source_root()```) + sine those would be interpreted as invalid escape characters and there is not meson + function to escape backslashes correctly (as of 2017). + + DLG itself handles it this way: + +```meson +source_root = meson.source_root().split('\\') +add_project_arguments('-DDLG_BASE_PATH="' + '/'.join(source_root) + '/"', language: 'c') +``` + +## C-api tag guards + +```c + #define dlg_tag_base(global, tags, code) { \ + const char* _dlg_tag_tags[] = {DLG_EVAL tags}; \ + const char** _dlg_tag_ptr = _dlg_tag_tags;; \ + const char* _dlg_tag_func = global ? NULL : __FUNCTION__; \ + while(_dlg_tag_ptr) \ + dlg_add_tag(_dlg_tag_ptr++, _dlg_tag_func); \ + code \ + _dlg_tag_ptr = _dlg_tag_tags; \ + while(_dlg_tag_ptr) \ + dlg_remove_tag(_dlg_tag_ptr++, _dlg_tag_func); \ + } + +#if DLG_CHECK + #define dlg_check(code) { code } + #define dlg_checkt(tags, code) dlg_tag(tags, code) +#else + #define dlg_check(code) + #define dlg_checkt(tags, code) +#endif // DLG_CHECK + +#define dlg_tag(tags, code) dlg_tag_base(false, tags, code) +#define dlg_tag_global(tags, code) dlg_tag_base(true, tags, code) +``` + +## Idea: Custom assert macro handler + +```c +// Can be specified to a custom assert handler/checker. +// Will be called for every failed assertion. If it returns true, +// the default failed assertion log will be done by dlg, otherwise +// no further action will be taken. +// Must have the signature 'bool (const char* expr)'. +// The default (dlg__assertion_failed) just always returns false. +// Useful as breakpoint. +#ifndef DLG_ASSERT_FILTER + #define DLG_ASSERT_FILTER dlg__assertion_failed +#endif + +bool dlg_assertion_failed(const char* expr); + +// +#define DLG__CHECK_ASSERT(lvl, expr) \ + (level > DLG_ASSERT_LEVEL && !(expr) && DLG_ASSERT_FILER(#expr)) + +#define dlg_assertl(level, expr) if(DLG__CHECK_ASSERT(level, expr)) \ + dlg__do_log(level, DLG_CREATE_TAGS(NULL), DLG_FILE, __LINE__, __func__, NULL, #expr) + +// ... +``` diff --git a/libs/dlg/docs/tests/core.c b/libs/dlg/docs/tests/core.c new file mode 100644 index 0000000..4a20d1f --- /dev/null +++ b/libs/dlg/docs/tests/core.c @@ -0,0 +1,357 @@ +#ifdef _MSC_VER +#define _CRT_SECURE_NO_WARNINGS +#endif + +#define DLG_DEFAULT_ASSERT dlg_level_fatal +#include +#include +#include +#include + +// TODO: custom format functions (using dlg_thread_buffer) +// other custom output handlers +// some more output.h testing + +enum check { + check_line = 1, + check_tags = 2, + check_expr = 4, + check_string = 8, + check_level = 16, + check_fire = 32 +}; + +struct { + enum check check; + unsigned int line; + const char** tags; + const char* expr; + const char* string; + enum dlg_level level; + bool fire; + bool fired; +} gdata = { + .check = check_line, + .fired = false +}; + +unsigned int gerror = 0; +FILE* check_file; +FILE* check_formatted_file; + +void custom_handler(const struct dlg_origin* origin, const char* string, void* data); + +#define EXPECT(a) if(!(a)) { \ + printf("$$$ Expect '" #a "' failed [%d]\n", __LINE__); \ + ++gerror; \ +} + +void foo_log(); +void foo_assert(); + +int main() { + printf("__FILE__: %s\n", __FILE__); + + dlg_log(dlg_level_trace, "trace %d", 1); + dlg_log(dlg_level_debug, "debug %d", 1); + dlg_log(dlg_level_info, "info %d", 1); + dlg_log(dlg_level_warn, "warn %d", 1); + dlg_log(dlg_level_error, "error %d", 1); + dlg_log(dlg_level_fatal, "fatal %d", 1); + printf("----\n"); // should have no color/style + + dlg_trace("%s %d", "trace", 2); + dlg_debug("%s %d", "debug", 2); + dlg_info("%s %d", "info", 2); + dlg_warn("%s %d", "warn", 2); + dlg_error("%s %d", "error", 2); + dlg_fatal("%s %d", "fatal", 2); + printf("----\n\n"); + + dlg_assertl(dlg_level_trace, false); + dlg_assertl(dlg_level_debug, false); + dlg_assertl(dlg_level_info, false); + dlg_assertl(dlg_level_warn, false); + dlg_assertl(dlg_level_error, false); + dlg_assertl(dlg_level_fatal, false); + printf("----\n\n"); + + dlg_assertlm(dlg_level_trace, false, "Should %s, %s", "fire", "trace"); + dlg_assertlm(dlg_level_debug, false, "Should %s, %s", "fire", "debug"); + dlg_assertlm(dlg_level_info, false, "Should %s, %s", "fire", "info"); + dlg_assertlm(dlg_level_warn, false, "Should %s, %s", "fire", "warn"); + dlg_assertlm(dlg_level_error, false, "Should %s, %s", "fire", "error"); + dlg_assertlm(dlg_level_fatal, false, "Should %s, %s", "fire", "fatal"); + printf("----\n\n"); + + dlg_assertlm(dlg_level_trace, true, "Should %s, %s", "not fire", "trace"); + dlg_assertlm(dlg_level_debug, true, "Should %s, %s", "not fire", "debug"); + dlg_assertlm(dlg_level_info, true, "Should %s, %s", "not fire", "info"); + dlg_assertlm(dlg_level_warn, true, "Should %s, %s", "not fire", "warn"); + dlg_assertlm(dlg_level_error, true, "Should %s, %s", "not fire", "error"); + dlg_assertlm(dlg_level_fatal, true, "Should %s, %s", "not fire", "fatal"); + printf("----\n\n"); + + dlg_set_handler(&custom_handler, &gdata); + check_file = fopen("dlg_test_output.txt", "w"); + check_formatted_file = fopen( "dlg_test_formatted_output.txt","w" ); + EXPECT(!dlg_is_tty(check_file)); + + dlg_fprintf(check_file, u8"beginning of (some utf-8: äüß) %s", "test output file with default layout of dlg_features\n"); + dlg_fprintf(check_formatted_file, u8"beginning of (some utf-8: äüß) %s", "test output file with custom layout of dlg_features\n"); + + // checks + // logging + const char* t1[] = {NULL}; + gdata.check = check_level | check_line | check_string | check_expr | check_tags | check_fire; + gdata.expr = NULL; + gdata.fire = true; + gdata.tags = t1; + + gdata.fired = false; + gdata.string = "trace 3"; + gdata.level = dlg_level_trace; + gdata.line = __LINE__ + 1; + dlg_trace("%s %d", "trace", 3); + EXPECT(gdata.fired); + + gdata.fired = false; + gdata.string = "debug 3"; + gdata.level = dlg_level_debug; + gdata.line = __LINE__ + 1; + dlg_debug("%s %d", "debug", 3); + EXPECT(gdata.fired); + + gdata.fired = false; + gdata.string = "info 3"; + gdata.level = dlg_level_info; + gdata.line = __LINE__ + 1; + dlg_info("%s %d", "info", 3); + EXPECT(gdata.fired); + + gdata.fired = false; + gdata.string = "warn 3"; + gdata.level = dlg_level_warn; + gdata.line = __LINE__ + 1; + dlg_warn("%s %d", "warn", 3); + EXPECT(gdata.fired); + + gdata.fired = false; + gdata.string = "error 3"; + gdata.level = dlg_level_error; + gdata.line = __LINE__ + 1; + dlg_error("%s %d", "error", 3); + EXPECT(gdata.fired); + + gdata.fired = false; + gdata.string = "fatal 3"; + gdata.level = dlg_level_fatal; + gdata.line = __LINE__ + 1; + dlg_fatal("%s %d", "fatal", 3); + EXPECT(gdata.fired); + printf("----\n\n"); + + + // assertion + gdata.check &= ~check_line; + gdata.string = NULL; + gdata.level = DLG_DEFAULT_ASSERT; + gdata.fire = true; + gdata.fired = false; + gdata.expr = "0 && 1"; + dlg_assert(0 && 1); + EXPECT(gdata.fired); + + gdata.string = "assertion 1"; + gdata.expr = "1 && 0"; + dlg_assertm(1 && 0, "%s %d", "assertion", 1); + + gdata.fire = false; + dlg_assert(true || false); + + gdata.string = "assertion failed"; + gdata.fire = true; + gdata.level = dlg_level_warn; + gdata.expr = "false && true"; + gdata.fired = false; + dlg_assertlm(dlg_level_warn, false && true, "%s%s %s", "assert", "ion", "failed"); + EXPECT(gdata.fired); + + // tags + // local, single + const char* t2[] = {"tag1", NULL}; + gdata.check = check_tags; + gdata.tags = t2; + gdata.fired = false; + dlg_infot(("tag1"), "."); + EXPECT(gdata.fired); + dlg_logt(dlg_level_warn, ("tag1"), "."); + dlg_assertt(("tag1"), false); + dlg_asserttm(("tag1"), false, "."); + dlg_assertltm(dlg_level_warn, ("tag1"), false, "."); + + // local, multiple + const char* t3[] = {"tag1", "tag2", NULL}; + gdata.tags = t3; + gdata.fired = false; + dlg_errort(("tag1", "tag2"), "."); + EXPECT(gdata.fired); + dlg_logt(dlg_level_trace, ("tag1", "tag2"), "."); + dlg_assertt(("tag1", "tag2"), false); + dlg_asserttm(("tag1", "tag2"), false, "."); + dlg_assertltm(dlg_level_fatal, ("tag1", "tag2"), false, "."); + + // current + const char* t4[] = {"lt", "gt", NULL}; + gdata.tags = t4; + gdata.fired = false; + dlg_add_tag("lt", __func__); + dlg_add_tag("gt", NULL); + dlg_info("."); + EXPECT(gdata.fired); + dlg_assert(false); + + // TODO: strictly speaking not correct but we know it works... + // both params should be same pointer to const char* + // this was done below the same (wrong) way... + EXPECT(dlg_remove_tag("lt", __func__)); + EXPECT(dlg_remove_tag("gt", NULL)); + EXPECT(!dlg_remove_tag("gt", __func__)); + EXPECT(!dlg_remove_tag("gt", NULL)); + + gdata.tags = t1; + gdata.fired = false; + dlg_warn("."); + dlg_assert(false); + EXPECT(gdata.fired); + + // correct scope of added tags + const char* t7[] = {"gt3", NULL}; + dlg_add_tag("lt3", __func__); + dlg_add_tag("gt3", NULL); + gdata.fired = false; + gdata.tags = t7; + foo_log(); + EXPECT(gdata.fired); + foo_assert(); + EXPECT(dlg_remove_tag("lt3", __func__)); + EXPECT(dlg_remove_tag("gt3", NULL)); + EXPECT(!dlg_remove_tag("lt3", __func__)); + EXPECT(!dlg_remove_tag("non-existent", NULL)); + + // reset handler + fclose(check_file); + fclose(check_formatted_file); + + dlg_set_handler(dlg_default_output, NULL); + gdata.fired = false; + dlg_info("Hai!"); + EXPECT(!gdata.fired); + + // fprintf + if(!dlg_win_init_ansi()) + printf("$$$ dlg init ansi console, the following might get weird\n"); + + printf(" - There should follow some utf-8 chars\n"); + + struct dlg_style mstyle = { .style = dlg_text_style_bold, .fg = dlg_color_red, .bg = dlg_color_none }; + dlg_fprintf(stdout, u8"Ŝǿмẽ śạოрłё ẶŠČÌĬ-ŧēם (%s, אָǒť %s ãşçĩị...): %d\n", "ẃέłĺ", "all", 42); + + printf(" - The following line should be bold red, using utf-8 chars\n"); + + dlg_styled_fprintf(stdout, mstyle, u8"ầŝƒđĵšҝďƒĵqשׂęрốґμĝĺ (<%s> in dingus-evlish)\n", "it's some kind of evlish"); + + // return count of total errors + return gerror; +} + +void foo_log() { + dlg_info("log call from foo"); +} + +void foo_assert() { + dlg_assert(false); +} + +void custom_handler(const struct dlg_origin* origin, const char* string, void* data) { + gdata.fired = true; + if(data != &gdata) { + printf("$$$ handler: invalid data %p [%d]\n", data, origin->line); + ++gerror; + } + +#ifdef _MSC_VER // srsly, why am i even supporting msvc?! + if(strcmp(origin->file, "docs\\tests\\core.c") != 0) { +#else + if(strcmp(origin->file, "docs/tests/core.c") != 0) { +#endif + printf("$$$ handler: invalid file %s [%d]\n", origin->file, origin->line); + ++gerror; + } + + if(gdata.check & check_string) { + if((string == NULL) != (gdata.string == NULL)) { + printf("$$$ handler: Invalid string (validness) %d, expected %d [%d]\n", + (string != NULL), (gdata.string != NULL), origin->line); + } else if(string && strcmp(string, gdata.string)) { + printf("$$$ handler: invalid string '%s' [%d]\n", string, origin->line); + } + } + + if(gdata.check & check_expr) { + if((origin->expr == NULL) != (gdata.expr == NULL)) { + printf("$$$ handler: Invalid expr (ptr) %d, expected %d [%d]\n", + (origin->expr != NULL), (gdata.expr != NULL), origin->line); + } else if(origin->expr && strcmp(origin->expr, gdata.expr)) { + printf("$$$ handler: invalid expr '%s' [%d]\n", origin->expr, origin->line); + } + } + + if(gdata.check & check_line && origin->line != gdata.line) { + printf("$$$ handler: invalid line: %d, expected %d\n", origin->line, gdata.line); + ++gerror; + } + + if(gdata.check & check_level && origin->level != gdata.level) { + printf("$$$ handler: invalid level: %d, expected %d [%d]\n", origin->level, gdata.level, origin->line); + ++gerror; + } + + if(gdata.check & check_fire && !gdata.fire) { + printf("$$$ handler: fired although it should not [%d]\n", origin->line); + ++gerror; + } + + if(gdata.check & check_tags) { + const char** tags = origin->tags; + const char** etags = gdata.tags; + while(*tags && *etags) { + if(strcmp(*tags, *etags) != 0) { + printf("$$$ handler: invalid tag %s, expected %s [%d]\n", *tags, *etags, origin->line); + ++gerror; + } + ++tags; + ++etags; + } + + if(*tags && !*etags) { + printf("$$$ handler: more tags than expected [%d]\n", origin->line); + ++gerror; + } + + if(!*tags && *etags) { + printf("$$$ handler: fewer tags than expected [%d]\n", origin->line); + ++gerror; + } + } + + unsigned int features = dlg_output_tags | dlg_output_time | dlg_output_file_line | dlg_output_newline ; + + + dlg_generic_output_stream(check_file, features, origin, string, dlg_default_output_styles); + + // unsigned int features_o = dlg_output_file_line | dlg_output_func | dlg_output_tags | dlg_output_newline | dlg_output_time | dlg_output_time_msecs | dlg_output_threadsafe; + // dlg_set_layout( "[ $ tags: {%t} $ time: %s%ms file: %l func: %F] " ); + // dlg_generic_output_stream(check_formatted_file, features_o, origin, string, dlg_default_output_styles); + // dlg_set_default_layout(); +} diff --git a/libs/dlg/docs/tests/cpp.cpp b/libs/dlg/docs/tests/cpp.cpp new file mode 100644 index 0000000..59ee4d2 --- /dev/null +++ b/libs/dlg/docs/tests/cpp.cpp @@ -0,0 +1,119 @@ +#define DLG_DEFAULT_TAGS "dlg" + +#include +#include +#include +#include +#include + +unsigned int gerror = 0; + +// TODO: pretty much todo... test all of the header correctly + +#define EXPECT(a) if(!(a)) { \ + printf("$$$ Expect '" #a "' failed [%d]\n", __LINE__); \ + ++gerror; \ +} + +int main() { + // utility functions + EXPECT(dlg::rformat("$", "\\$\\") == "$"); + EXPECT(dlg::rformat("$", "$\\", 0) == "0\\"); + EXPECT(dlg::rformat("$", "\\$", 1) == "\\1"); + EXPECT(dlg::rformat("$", "\\$\\$\\", 2) == "$2\\"); + EXPECT(dlg::rformat("@", "@", "ayyy") == "ayyy"); + EXPECT(dlg::format("{{}}", 2) == "{2}"); + EXPECT(dlg::format("\\{}\\") == "{}"); + EXPECT(dlg::format("\\{{}}\\", 2) == "\\{2}\\"); + + std::string a; + for(auto i = 0; i < 1000; ++i) { + a += std::to_string(i); + } + + EXPECT(dlg::detail::tlformat("{}", a) == a); + EXPECT(dlg::detail::tlformat(42) == std::string("42")); + EXPECT(dlg::detail::tlformat("ỦŤ₣8 ťéŝť ŝťяïאָğ") + == std::string("ỦŤ₣8 ťéŝť ŝťяïאָğ")); + + // TODO: more output.h testing + { + dlg_origin origin {}; + + size_t size; + dlg_generic_output_buf(nullptr, &size, 0, &origin, + "test", dlg_default_output_styles); + EXPECT(size == 4u); + + auto str = dlg::generic_output(0, origin, "test string"); + EXPECT(str == "test string"); + } + + std::string str; + str += 'a'; + str += 'b'; + str += 'c'; + str += '\0'; + str += 'd'; + str += 'e'; + str += 'f'; + dlg_info("{} xyz", str); + + // check output + enum check { + check_line = 1, + check_tags = 2, + check_expr = 4, + check_string = 8, + check_level = 16, + check_fire = 32 + }; + + struct { + unsigned int check; + const char* str; + bool fired; + } expected {}; + + dlg::set_handler([&](const struct dlg_origin& origin, const char* str){ + expected.fired = true; + if(expected.check & check_string) { + if((str == nullptr) != (expected.str == nullptr) || + (str && std::strcmp(str, expected.str) != 0)) { + std::printf("$$$ handler: invalid string [%d]\n", origin.line); + ++gerror; + } + } + + // output + dlg_win_init_ansi(); + dlg_generic_output_stream(nullptr, ~0u, &origin, str, dlg_default_output_styles); + }); + + { + dlg_tags("a", "b"); + expected.check &= check_string; + expected.str = "Just some formatted info"; + dlg_infot(("tag1", "tag2"), "Just some {} info", "formatted"); + } + + expected = {}; + dlg_warnt(("tag2", "tag3"), "Just some {} warning: {} {}", "sick", std::setw(10), 69); + dlg_assertm(true, "eeeehhh... {}", "wtf"); + + dlg_info("We can also just log objects"); + dlg_info(42); + + str = "should fire... {} {}"; + dlg_assertm(false, str, "!", 24); + + auto entered = false; + dlg_checkt(("checked"), { + entered = true; + dlg_info("from inside the check block"); + EXPECT(expected.fired); + }); + EXPECT(entered); + + return gerror; +} diff --git a/libs/dlg/docs/tests/disabled.c b/libs/dlg/docs/tests/disabled.c new file mode 100644 index 0000000..60ea734 --- /dev/null +++ b/libs/dlg/docs/tests/disabled.c @@ -0,0 +1,30 @@ +#define DLG_DISABLE 1 +#include + +struct { + bool fired; +} gdata = { + .fired = false +}; + +#define EXPECT(a) if(!(a)) { \ + printf("$$$ Expect '" #a "' failed [%d]\n", __LINE__); \ + ++gerror; \ +} + +unsigned int gerror = 0; + +void custom_handler(const struct dlg_origin* origin, const char* string, void* data) { + (void) origin; + (void) string; + (void) data; + gdata.fired = true; +} + +int main() +{ + dlg_set_handler(custom_handler, NULL); + dlg_info("well, this is not printed"); + EXPECT(!gdata.fired); + return gerror; +} diff --git a/libs/dlg/docs/tests/disabled.cpp b/libs/dlg/docs/tests/disabled.cpp new file mode 100644 index 0000000..f1db46f --- /dev/null +++ b/libs/dlg/docs/tests/disabled.cpp @@ -0,0 +1,9 @@ +#define DLG_DISABLE 1 +#include + +int main() +{ + // TODO: test all usual features, make sure it is NOT printed + dlg_info("well, this is not printed"); + dlg_check(dlg_info("this is not printed as well")); +} diff --git a/libs/dlg/docs/tests/level.c b/libs/dlg/docs/tests/level.c new file mode 100644 index 0000000..585bd89 --- /dev/null +++ b/libs/dlg/docs/tests/level.c @@ -0,0 +1,68 @@ +#define DLG_LOG_LEVEL dlg_level_warn +#define DLG_ASSERT_LEVEL dlg_level_debug +#include + +struct { + bool fired; +} gdata = { + .fired = false +}; + +#define EXPECT(a) if(!(a)) { \ + printf("$$$ Expect '" #a "' failed [%d]\n", __LINE__); \ + ++gerror; \ +} + +unsigned int gerror = 0; + +void custom_handler(const struct dlg_origin* origin, const char* string, void* data) { + (void) origin; + (void) string; + (void) data; + gdata.fired = true; +} + +int main() +{ + dlg_set_handler(custom_handler, NULL); + + // log + dlg_trace("well, this is not printed"); + dlg_debug("well, this is not printed"); + dlg_info("well, this is not printed"); + EXPECT(!gdata.fired); + + dlg_warn("well, this is printed"); + EXPECT(gdata.fired); + gdata.fired = false; + + dlg_error("well, this is printed"); + EXPECT(gdata.fired); + gdata.fired = false; + + dlg_fatal("well, this is printed"); + EXPECT(gdata.fired); + gdata.fired = false; + + // assert + dlg_assertlm(dlg_level_trace, false, "well, this is not printed"); + EXPECT(!gdata.fired); + + dlg_assertlm(dlg_level_debug, false, "well, this is printed"); + EXPECT(gdata.fired); + gdata.fired = false; + + dlg_assertlm(dlg_level_warn, false, "well, this is printed"); + EXPECT(gdata.fired); + gdata.fired = false; + + dlg_assertlm(dlg_level_error, false, "well, this is printed"); + EXPECT(gdata.fired); + gdata.fired = false; + + dlg_assertlm(dlg_level_fatal, false, "well, this is printed"); + EXPECT(gdata.fired); + gdata.fired = false; + + return gerror; +} diff --git a/libs/dlg/docs/tests/meson.build b/libs/dlg/docs/tests/meson.build new file mode 100644 index 0000000..235ec09 --- /dev/null +++ b/libs/dlg/docs/tests/meson.build @@ -0,0 +1,17 @@ +tests = [ + ['core', 'core.c', []], + ['level', 'level.c', []], + ['cpp', 'cpp.cpp', []], + ['disabledc', 'disabled.c', []], + ['disabledcpp', 'disabled.cpp', []], + ['threads', 'threads.cpp', [dep_threads]], + ['outputf', 'outputf.cpp', []], +] + +foreach test : tests + test(test[0], + executable(test[0], test[1], + c_args: common_args, + cpp_args: common_args, + dependencies: test[2] + [dlg_dep])) +endforeach diff --git a/libs/dlg/docs/tests/outputf.cpp b/libs/dlg/docs/tests/outputf.cpp new file mode 100644 index 0000000..281fa51 --- /dev/null +++ b/libs/dlg/docs/tests/outputf.cpp @@ -0,0 +1,45 @@ +#include + +void sample() { + dlg_trace("This is a trace"); + dlg_debug("This is a debug info"); + dlg_info("This is an info"); + dlg_warn("This is a warning"); + dlg_error("Errors are red"); + dlg_assertm(1 == 2, "Well, this assertion will probably {}...", "fail"); + dlg_infot(("tag1", "tag2"), "We can tag our stuff. Can be used to filter/redirect messages"); + dlg_asserttm(("tag3"), 3 == 2, "The same goes for asserts"); + dlg_info("Another feature: Utf-8 printing works automatically, even for שׁǐʼnďốẅś consoles"); + dlg_fatal("This one is printed bold. For more information, read the example already"); +} + +int main() { + dlg::set_handler([&](const struct dlg_origin& origin, const char* str){ + dlg_generic_outputf_stream(stdout, "%s%c\n", &origin, str, dlg_default_output_styles, false); + }); + + dlg_info("Using output handler 1, pretty simple"); + dlg_info("It should just output the messages in the appropriate styles"); + sample(); + + std::printf("-------------------------------------------\n"); + + dlg::set_handler([&](const struct dlg_origin& origin, const char* str){ + dlg_generic_outputf_stream(stdout, "[%o %h:%m {%t} %f] %s%c\n", &origin, str, dlg_default_output_styles, false); + }); + + dlg_info("outputting pretty much all information now. Only message is styled"); + sample(); + std::fprintf(stdout, "Normal, non-dlg printf message. Should not be effected by style\n"); + + std::printf("-------------------------------------------\n"); + + + dlg::set_handler([&](const struct dlg_origin& origin, const char* str){ + dlg_generic_outputf_stream(stdout, "%s[%o %h:%m %f]%r %c %s[%t]%r\n", &origin, str, dlg_default_output_styles, false); + }); + + dlg_info("This time, only the meta information is styled"); + sample(); + std::fprintf(stdout, "Normal, non-dlg printf message. Should not be effected by style\n"); +} diff --git a/libs/dlg/docs/tests/threads.cpp b/libs/dlg/docs/tests/threads.cpp new file mode 100644 index 0000000..8eb7772 --- /dev/null +++ b/libs/dlg/docs/tests/threads.cpp @@ -0,0 +1,66 @@ +#include +#include +#include +#include + +// mainly used to test that everything works multithreaded and that +// there will be no leaks +void test() +{ + dlg_info("main"); + dlg_info("initing thread 2"); + + std::thread t([&](){ + dlg_info("hello world from thread 2"); + dlg_warn("Just a small {}", "warning"); + dlg_info("Goodbye from thread 2"); + dlg_info("thread 2 id: {}", std::this_thread::get_id()); + + for(auto i = 0u; i < 10; ++i) { + dlg_warn("Some nice yellow warning (hopefully)"); + std::this_thread::sleep_for(std::chrono::nanoseconds(10)); + } + }); + + dlg_error("Just some messages from the main thread"); + dlg_info("thread 1 id: {}", std::this_thread::get_id()); + dlg_info("Waiting on thread 2 to finally spawn..."); + dlg_info("Hurry ffs!"); + dlg_info("Well i guess i go to sleep for now..."); + dlg_info("Wake me up then!"); + + for(auto i = 0u; i < 10; ++i) { + std::this_thread::sleep_for(std::chrono::nanoseconds(i * 10)); + dlg_info("Did he say something already?"); + } + + dlg_info("Hopefully he said something by now..."); + dlg_info("Goodbye from main thread"); + + t.join(); +} + +int main() { + // default handler (threadsafe) + std::cout << " =================== 1 (threadsafe) ==================== \n"; + test(); + + // custom handler (threadsafe) + std::cout << " =================== 2 (threadsafe) ==================== \n"; + auto tid1 = std::this_thread::get_id(); + dlg::set_handler([&](const struct dlg_origin& origin, const char* str){ + auto t = (std::this_thread::get_id() == tid1) ? "thread-1: " : "thread-2: "; + dlg_win_init_ansi(); + dlg_fprintf(stdout, "%s %s", t, dlg::generic_output(~0u, origin, str).c_str()); + }); + test(); + + // custom handler (not threadsafe) + std::cout << " =================== 3 (not threasafe) ==================== \n"; + dlg::set_handler([&](const struct dlg_origin& origin, const char* str){ + unsigned int features = dlg_output_file_line | dlg_output_newline | + dlg_output_style; + dlg_generic_output_stream(stdout, features, &origin, str, dlg_default_output_styles); + }); + test(); +} diff --git a/libs/dlg/docs/todo.md b/libs/dlg/docs/todo.md new file mode 100644 index 0000000..056e995 --- /dev/null +++ b/libs/dlg/docs/todo.md @@ -0,0 +1,55 @@ +# Ideas and todo + +- [x] return int from dlg printf wrappers +- [x] windows utf-8 output (see ny) +- [x] windows text style support +- [x] assert without error message +- [x] add real example and screenshot +- [x] custom (changeable) base paths (for nested projects/header calls) __[DLG_FILE]__ +- [x] possibility to get current scope (or more general: exception support) +- [x] make default scope signs customizable by macro +- [x] unit tests (at least some basic stuff) + ci (travis) +- [x] c example + - [ ] Could be extended. Examples can generally be improved/reworked +- [x] extend testing (mainly tag setting scope) + - test all macros (also disable and stuff) +- [x] fix c++ example +- [x] release version 0.2.0 +- [x] add appveyor testing (for mingw as well as visual studio) +- [x] decide on whether to catch exceptions from assert expressions. Config variable? + - Yeah, don't do it. We are c now +- [x] make dlg.c valid c++ (mainly casting issues atm) +- [x] update README picture +- [ ] Fix all todos in dlg.c (mainly error handling questions) + - [ ] Check GetLastError with winapi functions? +- [x] contrib file that implements android log handler (using android liblog) +- [ ] make wsl output faster. It currently triggers a WriteConsole error on + every output and then falls back to default, performing the formatting + twice +- [ ] get stable (or make a list of what to do for 1.0) + +### Kinda trashed ideas + +Just because you can something, doesn't mean you should, right? + +- [ ] Default dummy platform (fallback if neither unix nor windows detected) +- [ ] rework/further strip fmt.hpp + - [ ] since it is parsed to some type-erased list anyways, don't include the whole header + - [ ] ~~constexpr string parsing~~ __[Not really worth it/fully possible i guess]__ + - [ ] ~~warn about format issues~~ + - [ ] ~~warn about unused but passed variables~~ +- [ ] add field to Origin that determines whether the origin is inside a dlg::check block? +- [ ] add at least really simply pattern matching utility function for tags? +- [ ] make dlg_assert return false on failure + - not that easy to accomplish actually since we use an if, if we would use ? : we would get + an unused expression warning if it is not used. Not worth it +- [ ] compile time format specifier validation (c++) instead of exceptions + - really no way to implement it that is at least somewhat safe +- [ ] assert_failed function (maybe as c symbol) that can be easily used as breakpoint + - [ ] Also custom assertion handler? that is called inline (macro) and might throw? + - [ ] example for custom failed assertion handle, i.e. print backtrace/exception/abort + - Decided not worth it since all of this can already be achieved in the log + handler. If you want an assert failed breakpoint, just check for expr + in the log handler and depending on level call a function to + set a breakpoint on. + See notes.md for some first concepts though diff --git a/libs/dlg/include/dlg/dlg.h b/libs/dlg/include/dlg/dlg.h new file mode 100644 index 0000000..3a7abf8 --- /dev/null +++ b/libs/dlg/include/dlg/dlg.h @@ -0,0 +1,270 @@ +// Copyright (c) 2019 nyorain +// Distributed under the Boost Software License, Version 1.0. +// See accompanying file LICENSE or copy at http://www.boost.org/LICENSE_1_0.txt + +#ifndef INC_DLG_DLG_H_ +#define INC_DLG_DLG_H_ + +#include +#include +#include +#include +#include + +// Hosted at https://github.com/nyorain/dlg. +// There are examples and documentation. +// Issue reports and contributions appreciated. + +// - CONFIG - +// Define this macro to make all dlg macros have no effect at all +// #define DLG_DISABLE + +// the log/assertion levels below which logs/assertions are ignored +// defaulted depending on the NDEBUG macro +#ifndef DLG_LOG_LEVEL + #ifdef NDEBUG + #define DLG_LOG_LEVEL dlg_level_warn + #else + #define DLG_LOG_LEVEL dlg_level_trace + #endif +#endif + +#ifndef DLG_ASSERT_LEVEL + #ifdef NDEBUG + #define DLG_ASSERT_LEVEL dlg_level_warn + #else + #define DLG_ASSERT_LEVEL dlg_level_trace + #endif +#endif + +// the assert level of dlg_assert +#ifndef DLG_DEFAULT_ASSERT + #define DLG_DEFAULT_ASSERT dlg_level_error +#endif + +// evaluated to the 'file' member in dlg_origin +#ifndef DLG_FILE + #define DLG_FILE dlg__strip_root_path(__FILE__, DLG_BASE_PATH) + + // the base path stripped from __FILE__. If you don't override DLG_FILE set this to + // the project root to make 'main.c' from '/some/bullshit/main.c' + #ifndef DLG_BASE_PATH + #define DLG_BASE_PATH "" + #endif +#endif + +// Default tags applied to all logs/assertions (in the defining file). +// Must be in format ```#define DLG_DEFAULT_TAGS "tag1", "tag2"``` +// or just nothing (as defaulted here) +#ifndef DLG_DEFAULT_TAGS + #define DLG_DEFAULT_TAGS_TERM NULL +#else + #define DLG_DEFAULT_TAGS_TERM DLG_DEFAULT_TAGS, NULL +#endif + +// The function used for formatting. Can have any signature, but must be callable with +// the arguments the log/assertions macros are called with. Must return a const char* +// that will not be freed by dlg, the formatting function must keep track of it. +// The formatting function might use dlg_thread_buffer or a custom owned buffer. +// The returned const char* has to be valid until the dlg log/assertion ends. +// Usually a c function with ... (i.e. using va_list) or a variadic c++ template do +// allow formatting. +#ifndef DLG_FMT_FUNC + #define DLG_FMT_FUNC dlg__printf_format +#endif + +// Only overwrite (i.e. predefine) this if you know what you are doing. +// On windows this is used to add the dllimport specified. +// If you are using the static version of dlg (on windows) define +// DLG_STATIC before including dlg.h +#ifndef DLG_API + #if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(DLG_STATIC) + #define DLG_API __declspec(dllimport) + #else + #define DLG_API + #endif +#endif + +// - utility - +// two methods needed since cplusplus does not support compound literals +// and c does not support uniform initialization/initializer lists +#ifdef __cplusplus + #include + #define DLG_CREATE_TAGS(...) std::initializer_list \ + {DLG_DEFAULT_TAGS_TERM, __VA_ARGS__, NULL}.begin() +#else + #define DLG_CREATE_TAGS(...) (const char* const[]) {DLG_DEFAULT_TAGS_TERM, __VA_ARGS__, NULL} +#endif + +#ifdef __GNUC__ + #define DLG_PRINTF_ATTRIB(a, b) __attribute__ ((format (printf, a, b))) +#else + #define DLG_PRINTF_ATTRIB(a, b) +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +// Represents the importance of a log/assertion call. +enum dlg_level { + dlg_level_trace = 0, // temporary used debug, e.g. to check if control reaches function + dlg_level_debug, // general debugging, prints e.g. all major events + dlg_level_info, // general useful information + dlg_level_warn, // warning, something went wrong but might have no (really bad) side effect + dlg_level_error, // something really went wrong; expect serious issues + dlg_level_fatal // critical error; application is likely to crash/exit +}; + +// Holds various information associated with a log/assertion call. +// Forwarded to the output handler. +struct dlg_origin { + const char* file; + unsigned int line; + const char* func; + enum dlg_level level; + const char** tags; // null-terminated + const char* expr; // assertion expression, otherwise null +}; + +// Type of the output handler, see dlg_set_handler. +typedef void(*dlg_handler)(const struct dlg_origin* origin, const char* string, void* data); + +#ifdef DLG_DISABLE + // Tagged/Untagged logging with variable level + // Tags must always be in the format `("tag1", "tag2")` (including brackets) + #define dlg_log(level, ...) + #define dlg_logt(level, tags, ...) + + // Dynamic level assert macros in various versions for additional arguments + #define dlg_assertl(level, expr) // assert without tags/message + #define dlg_assertlt(level, tags, expr) // assert with tags + #define dlg_assertlm(level, expr, ...) // assert with message + #define dlg_assertltm(level, tags, expr, ...) // assert with tags & message + + // Sets the handler that is responsible for formatting and outputting log calls. + // This function is not thread safe and the handler is set globally. + // The handler itself must not change dlg tags or call a dlg macro (if it + // does so, the provided string or tags array in 'origin' might get invalid). + // The handler can also be used for various other things such as dealing + // with failed assertions or filtering calls based on the passed tags. + // The default handler is dlg_default_output (see its doc for more info). + // If using c++ make sure the registered handler cannot throw e.g. by + // wrapping everything into a try-catch blog. + inline void dlg_set_handler(dlg_handler handler, void* data) { + (void) handler; + (void) data; + } + + // Returns the currently active dlg handler and sets `data` to + // its user data pointer. `data` must not be NULL. + // Useful to create handler chains. + // This function is not threadsafe, i.e. retrieving the handler while + // changing it from another thread is unsafe. + // See `dlg_set_handler`. + inline dlg_handler dlg_get_handler(void** data) { + *data = NULL; + return NULL; + } + + // The default output handler. + // Only use this to reset the output handler, prefer to use + // dlg_generic_output (from output.h) which this function simply calls. + // It also flushes the stream used and correctly outputs even from multiple threads. + inline void dlg_default_output(const struct dlg_origin* o, const char* str, void* data) { + (void) o; + (void) str; + (void) data; + } + + // Adds the given tag associated with the given function to the thread specific list. + // If func is not NULL the tag will only applied to calls from the same function. + // Remove the tag again calling dlg_remove_tag (with exactly the same pointers!). + // Does not check if the tag is already present. + inline void dlg_add_tag(const char* tag, const char* func) { + (void) tag; + (void) func; + } + + // Removes a tag added with dlg_add_tag (has no effect for tags no present). + // The pointers must be exactly the same pointers that were supplied to dlg_add_tag, + // this function will not check using strcmp. When the same tag/func combination + // is added multiple times, this function remove exactly one candidate, it is + // undefined which. Returns whether a tag was found (and removed). + inline bool dlg_remove_tag(const char* tag, const char* func) { + (void) tag; + (void) func; + return true; + } + + // Returns the thread-specific buffer and its size for dlg. + // The buffer should only be used by formatting functions. + // The buffer can be reallocated and the size changed, just make sure + // to update both values correctly. + inline char** dlg_thread_buffer(size_t** size) { + (void) size; + return NULL; + } + +#else // DLG_DISABLE + #define dlg_log(level, ...) if(level >= DLG_LOG_LEVEL) \ + dlg__do_log(level, DLG_CREATE_TAGS(NULL), DLG_FILE, __LINE__, __func__, \ + DLG_FMT_FUNC(__VA_ARGS__), NULL) + #define dlg_logt(level, tags, ...) if(level >= DLG_LOG_LEVEL) \ + dlg__do_log(level, DLG_CREATE_TAGS tags, DLG_FILE, __LINE__, __func__, \ + DLG_FMT_FUNC(__VA_ARGS__), NULL) + + #define dlg_assertl(level, expr) if(level >= DLG_ASSERT_LEVEL && !(expr)) \ + dlg__do_log(level, DLG_CREATE_TAGS(NULL), DLG_FILE, __LINE__, __func__, NULL, #expr) + #define dlg_assertlt(level, tags, expr) if(level >= DLG_ASSERT_LEVEL && !(expr)) \ + dlg__do_log(level, DLG_CREATE_TAGS tags, DLG_FILE, __LINE__, __func__, NULL, #expr) + #define dlg_assertlm(level, expr, ...) if(level >= DLG_ASSERT_LEVEL && !(expr)) \ + dlg__do_log(level, DLG_CREATE_TAGS(NULL), DLG_FILE, __LINE__, __func__, \ + DLG_FMT_FUNC(__VA_ARGS__), #expr) + #define dlg_assertltm(level, tags, expr, ...) if(level >= DLG_ASSERT_LEVEL && !(expr)) \ + dlg__do_log(level, DLG_CREATE_TAGS tags, DLG_FILE, __LINE__, \ + __func__, DLG_FMT_FUNC(__VA_ARGS__), #expr) + + DLG_API void dlg_set_handler(dlg_handler handler, void* data); + DLG_API dlg_handler dlg_get_handler(void** data); + DLG_API void dlg_default_output(const struct dlg_origin*, const char* string, void*); + DLG_API void dlg_add_tag(const char* tag, const char* func); + DLG_API bool dlg_remove_tag(const char* tag, const char* func); + DLG_API char** dlg_thread_buffer(size_t** size); + + // - Private interface: not part of the abi/api but needed in macros - + // Formats the given format string and arguments as printf would, uses the thread buffer. + DLG_API const char* dlg__printf_format(const char* format, ...) DLG_PRINTF_ATTRIB(1, 2); + DLG_API void dlg__do_log(enum dlg_level lvl, const char* const*, const char*, int, + const char*, const char*, const char*); + DLG_API const char* dlg__strip_root_path(const char* file, const char* base); +#endif // DLG_DISABLE + +// Untagged leveled logging +#define dlg_trace(...) dlg_log(dlg_level_trace, __VA_ARGS__) +#define dlg_debug(...) dlg_log(dlg_level_debug, __VA_ARGS__) +#define dlg_info(...) dlg_log(dlg_level_info, __VA_ARGS__) +#define dlg_warn(...) dlg_log(dlg_level_warn, __VA_ARGS__) +#define dlg_error(...) dlg_log(dlg_level_error, __VA_ARGS__) +#define dlg_fatal(...) dlg_log(dlg_level_fatal, __VA_ARGS__) + +// Tagged leveled logging +#define dlg_tracet(tags, ...) dlg_logt(dlg_level_trace, tags, __VA_ARGS__) +#define dlg_debugt(tags, ...) dlg_logt(dlg_level_debug, tags, __VA_ARGS__) +#define dlg_infot(tags, ...) dlg_logt(dlg_level_info, tags, __VA_ARGS__) +#define dlg_warnt(tags, ...) dlg_logt(dlg_level_warn, tags, __VA_ARGS__) +#define dlg_errort(tags, ...) dlg_logt(dlg_level_error, tags, __VA_ARGS__) +#define dlg_fatalt(tags, ...) dlg_logt(dlg_level_fatal, tags, __VA_ARGS__) + +// Assert macros useing DLG_DEFAULT_ASSERT as level +#define dlg_assert(expr) dlg_assertl(DLG_DEFAULT_ASSERT, expr) +#define dlg_assertt(tags, expr) dlg_assertlt(DLG_DEFAULT_ASSERT, tags, expr) +#define dlg_assertm(expr, ...) dlg_assertlm(DLG_DEFAULT_ASSERT, expr, __VA_ARGS__) +#define dlg_asserttm(tags, expr, ...) dlg_assertltm(DLG_DEFAULT_ASSERT, tags, expr, __VA_ARGS__) + +#ifdef __cplusplus +} +#endif + +#endif // header guard diff --git a/libs/dlg/include/dlg/dlg.hpp b/libs/dlg/include/dlg/dlg.hpp new file mode 100644 index 0000000..06719eb --- /dev/null +++ b/libs/dlg/include/dlg/dlg.hpp @@ -0,0 +1,326 @@ +// Copyright (c) 2019 nyorain +// Distributed under the Boost Software License, Version 1.0. +// See accompanying file LICENSE or copy at http://www.boost.org/LICENSE_1_0.txt + +#ifndef INC_DLG_DLG_HPP_ +#define INC_DLG_DLG_HPP_ + + +// By default this header automatically uses a different, typesafe formatting +// function. Make sure to never include dlg.h in your translation unit before +// including dlg.hpp to make this work. +// The new formatting function works like a type-safe version of printf, see dlg::format. +// TODO: override the default (via undef) if a dlg.h was included before this file? +#ifndef DLG_FMT_FUNC + #define DLG_FMT_FUNC ::dlg::detail::tlformat +#endif + +#include "dlg.h" +#include "output.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// Define this macro as 1 to disable all dlg_check* blocks. +// Note that checking is defined separately from DLG_DISABLE. +// By default this is defined to 1 if NDEBUG is defined OR DLG_DISABLe is 1. +#ifndef DLG_DISABLE_CHECK + #if defined(NDEBUG) || defined(DLG_DISABLE) + #define DLG_DISABLE_CHECK 1 + #else + #define DLG_DISABLE_CHECK 0 + #endif +#endif + +// The default string to replace by the dlg::*format functions. +// Used as default by tlformat (set as new DLG_FMT_FUNC) or dlg::format. +// If a custom replace string is required in certain situations without +// overriding this macro, use dlg::rformat or dlg::gformat. +#ifndef DLG_FORMAT_DEFAULT_REPLACE + #define DLG_FORMAT_DEFAULT_REPLACE "{}" +#endif + +namespace dlg { + +// Sets dlg tags on its construction and removes them on its destruction. +// Instead of explicitly constructing an object, just use the dlg_tags and +// dlg_tags_global macros which will construct one in the current scope. +// Just forwards the arguments on construction to dlg_add_tag, so if func +// is nullptr the tags will be applied even to called functions from the current +// scope, otherwise only to calls coming directly from the current function. +class TagsGuard { +public: + TagsGuard(const char** tags, const char* func) : tags_(tags), func_(func) { + while(*tags) { + dlg_add_tag(*tags, func); + ++tags; + } + } + + ~TagsGuard() { + while(*tags_) { + dlg_remove_tag(*tags_, func_); + ++tags_; + } + } + +protected: + const char** tags_; + const char* func_; +}; + +#ifdef DLG_DISABLE + // Constructs a dlg::TagsGuard in the current scope, passing correctly the + // current function, i.e. only dlg calls made from other functions + // that are called in the current scope will not use the given tags. + // Expects the tags to be set as parameters like this: + // ```dlg_tags("tag1", "tag2")```. + #define dlg_tags(...) + + // Constructs a dlg::TagsGuard in the current scope, passing nullptr as func. + // This means that even dlg calls made from other functions called in the current + // scope will use those tags. + // Expects the tags to be set as parameters like this: + // ```dlg_tags_global("tag1", "tag2")```. + #define dlg_tags_global(...) +#else + #define dlg_tags(...) \ + const char* _dlgtags_[] = {__VA_ARGS__, nullptr}; \ + ::dlg::TagsGuard _dlgltg_(_dlgtags_, __func__) + #define dlg_tags_global(...) \ + const char* _dlgtags_[] = {__VA_ARGS__, nullptr}; \ + ::dlg::TagsGuard _dlggtg_(_dlgtags_.begin(), nullptr) +#endif + +// TODO: move this to the c api? together with (a scoped version of) dlg_tags? +#if DLG_DISABLE_CHECK + // Executes the given block only if dlg checking is enabled + #define dlg_check(code) + + // Executes the given blocks with the given tags only if dlg checking is enabled + // The tags must have the default `("tag1", "tag2")` format. + #define dlg_checkt(tags, code) +#else + #define dlg_check(code) do code while(0) + #define dlg_checkt(tags, code) do { dlg_tags(tags); code } while(0) +#endif + +/// Alternative output handler that allows to e.g. set lambdas or member functions. +using Handler = std::function; + +/// Small std::string_view replacement that allows taking std::string +/// and const char* arguments +struct StringParam { + StringParam(const std::string& s) : str(s.c_str()) {} + StringParam(const char* s) : str(s) {} + + const char* str; +}; + +/// Allows to set a std::function as dlg handler. +/// The handler should not throw, all exceptions (and non-exceptions) are caught +/// in a wrapper since they must not be passed through dlg (since it's c and dlg +/// might be called from c code). +inline void set_handler(Handler handler); + +// TODO: maybe don't use exceptions for wrong formats? + +/// Generic version of dlg::format, allows to set the special string sequence +/// to be replaced with arguments instead of using DLG_FORMAT_DEFAULT_REPLACE. +/// Simply replaces all occurrences of 'replace' in 'fmt' with the given +/// arguments (as printed using operator<< with an ostream) in order and +/// prints everything to the given ostream. +/// Throws std::invalid_argument if there are too few or too many arguments. +/// If you want to print the replace string without being replaced, wrap +/// it into backslashes (\\). If you want to print your own types, simply +/// overload operator<< for ostream correctly. The replace string itself +/// must not be a backslash character. +/// - gformat("%", "number: '%', string: '%'", 42, "aye"); -> "number: '42', string: 'aye'" +/// - gformat("{}", "not replaced: \\{}\\"); -> "not replaced: {}" +/// - gformat("$", "{} {}", 1); -> std::invalid_argument, too few arguments +/// - gformat("$", "{}", 1, 2); -> std::invalid_argument, too many arguments +/// - gformat("$", "{} {}", std::setw(5), 2); -> " 2" +template +void gformat(std::ostream& os, StringParam replace, StringParam fmt, Arg&& arg, Args&&... args); +inline void gformat(std::ostream& os, StringParam replace, StringParam fmt); + +/// Simply calls gformat with a local stringstream and returns the stringstreams +/// contents. +template +std::string rformat(StringParam replace, StringParam fmt, Args&&... args) { + std::stringstream sstream; + gformat(sstream, replace, fmt, std::forward(args)...); + return sstream.str(); +} + +/// Simply calls rformat with DLG_FORMAT_DEFAULT_REPLACE (defaulted to '{}') as +/// replace string. +template +std::string format(StringParam fmt, Args&&... args) { + return rformat(DLG_FORMAT_DEFAULT_REPLACE, fmt, std::forward(args)...); +} + +/// Specialization of dlg_generic_output that returns a std::string. +inline std::string generic_output(unsigned int features, + const struct dlg_origin& origin, StringParam string, + const struct dlg_style styles[6] = dlg_default_output_styles); + + +// - Private interface & implementation - +namespace detail { + +inline void handler_wrapper(const struct dlg_origin* origin, const char* str, void* data) { + auto& handler = *static_cast(data); + try { + handler(*origin, str); + } catch(const std::exception& err) { + fprintf(stderr, "dlg.hpp: handler has thrown exception: '%s'\n", err.what()); + } catch(...) { + fprintf(stderr, "dlg.hpp: handler has thrown something else than std::exception"); + } +} + +// Implements std::basic_streambuf into the dlg_thread_buffer. +class StreamBuffer : public std::basic_streambuf { +public: + StreamBuffer(char*& buf, std::size_t& size) : buf_(buf), size_(size) { + setp(buf, buf + size); // we will only read from it + } + + ~StreamBuffer() { + // make sure only the end has a null terminator + setp(std::remove(buf_, pptr(), '\0'), buf_ + size_); + sputc('\0'); + } + + int_type overflow(int_type ch = traits_type::eof()) override { + if(pptr() >= epptr()) { + auto off = pptr() - buf_; + size_ = size_ * 2 + 1; + buf_ = static_cast(std::realloc(buf_, size_)); + if(!buf_) { + size_ = 0; + setp(nullptr, nullptr); + return traits_type::eof(); + } + + setp(buf_ + off, buf_ + size_); + } + + if(!traits_type::eq_int_type(ch, traits_type::eof())) { + *pptr() = (char_type) ch; + pbump(1); + } + + return 0; + } + +protected: + char*& buf_; + size_t& size_; +}; + +// Like std::strstr but only matches if target is not wrapped in backslashes, +// otherwise prints the target. +inline const char* find_next(std::ostream& os, const char*& src, const char* target) { + auto len = std::strlen(target); + const char* next = std::strstr(src, target); + while(next && next > src && *(next - 1) == '\\' && *(next + len) == '\\') { + os.write(src, next - src - 1); + os.write(target, len); + src = next + len + 1; + next = std::strstr(next + 1, target); + } + + return next; +} + +// Used as DLG_FMT_FUNC, uses a threadlocal stringstream to not allocate +// a new buffer on every call +template +const char* tlformat(StringParam fmt, Args&&... args) { + { + std::size_t* size; + char** dbuf = dlg_thread_buffer(&size); + detail::StreamBuffer buf(*dbuf, *size); + std::ostream output(&buf); + gformat(output, DLG_FORMAT_DEFAULT_REPLACE, fmt, std::forward(args)...); + } + + return *dlg_thread_buffer(nullptr); +} + +template::value>::type> +const char* tlformat(Arg arg) { + { + std::size_t* size; + char** dbuf = dlg_thread_buffer(&size); + detail::StreamBuffer buf(*dbuf, *size); + std::ostream output(&buf); + output << arg; + } + + return *dlg_thread_buffer(nullptr); +} + +} // namespace detail + +void gformat(std::ostream& os, StringParam replace, StringParam fmt) { + if(detail::find_next(os, fmt.str, replace.str)) { + throw std::invalid_argument("Too few arguments given to format"); + } + + os << fmt.str; +} + +template +void gformat(std::ostream& os, StringParam replace, StringParam fmt, Arg&& arg, Args&&... args) { + const char* next = detail::find_next(os, fmt.str, replace.str); + if(!next) { + throw std::invalid_argument("Too many arguments to format supplied"); + } + + // XXX: any drawback compared to formatted? + // this allows to use temporary ostream modifiers only to real arguments + os.write(fmt.str, next - fmt.str); + os << std::forward(arg); + auto len = std::strlen(replace.str); + return gformat(os, replace, next + len, std::forward(args)...); +} + +void set_handler(Handler handler) { + static Handler handler_; + handler_ = std::move(handler); + dlg_set_handler(&detail::handler_wrapper, &handler_); +} + +std::string generic_output(unsigned int features, + const struct dlg_origin& origin, StringParam string, + const struct dlg_style styles[6]) { + std::size_t size; + dlg_generic_output_buf(nullptr, &size, features, &origin, + string.str, styles); + std::string ret(++size, ' '); + + // NOTE: this might (theoretically) cause problems before C++17 + // but this function should return a string and all compilers + // make it work. If you want to go sure, just use C++17 + // where it is guaranteed that this works (everybody is + // using it anyways so shit will blow up if this fails) + dlg_generic_output_buf(&ret[0], &size, features, &origin, + string.str, styles); + ret.pop_back(); // terminating null-char + return ret; +} + +} // namespace dlg + +#endif // header guard diff --git a/libs/dlg/include/dlg/output.h b/libs/dlg/include/dlg/output.h new file mode 100644 index 0000000..5751e81 --- /dev/null +++ b/libs/dlg/include/dlg/output.h @@ -0,0 +1,172 @@ +// Copyright (c) 2019 nyorain +// Distributed under the Boost Software License, Version 1.0. +// See accompanying file LICENSE or copy at http://www.boost.org/LICENSE_1_0.txt + +#ifndef INC_DLG_OUTPUT_H_ +#define INC_DLG_OUTPUT_H_ + +#include "dlg.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +// Text style +enum dlg_text_style { + dlg_text_style_reset = 0, + dlg_text_style_bold = 1, + dlg_text_style_dim = 2, + dlg_text_style_italic = 3, + dlg_text_style_underline = 4, + dlg_text_style_blink = 5, + dlg_text_style_rblink = 6, + dlg_text_style_reversed = 7, + dlg_text_style_conceal = 8, + dlg_text_style_crossed = 9, + dlg_text_style_none, +}; + +// Text color +enum dlg_color { + dlg_color_black = 0, + dlg_color_red, + dlg_color_green, + dlg_color_yellow, + dlg_color_blue, + dlg_color_magenta, + dlg_color_cyan, + dlg_color_gray, + dlg_color_reset = 9, + + dlg_color_black2 = 60, + dlg_color_red2, + dlg_color_green2, + dlg_color_yellow2, + dlg_color_blue2, + dlg_color_magenta2, + dlg_color_cyan2, + dlg_color_gray2, + + dlg_color_none = 69, +}; + +struct dlg_style { + enum dlg_text_style style; + enum dlg_color fg; + enum dlg_color bg; +}; + +// Like fprintf but fixes utf-8 output to console on windows. +// On non-windows sytems just uses the corresponding standard library +// functions. On windows, if dlg was compiled with the win_console option, +// will first try to output it in a way that allows the default console +// to display utf-8. If that fails, will fall back to the standard +// library functions. +DLG_API int dlg_fprintf(FILE* stream, const char* format, ...) DLG_PRINTF_ATTRIB(2, 3); +DLG_API int dlg_vfprintf(FILE* stream, const char* format, va_list list); + +// Like dlg_printf, but also applies the given style to this output. +// The style will always be applied (using escape sequences), independent of the given stream. +// On windows escape sequences don't work out of the box, see dlg_win_init_ansi(). +DLG_API int dlg_styled_fprintf(FILE* stream, struct dlg_style style, + const char* format, ...) DLG_PRINTF_ATTRIB(3, 4); + +// Features to output from the generic output handler. +// Some features might have only an effect in the specializations. +enum dlg_output_feature { + dlg_output_tags = 1, // output tags list + dlg_output_time = 2, // output time of log call (hour:minute:second) + dlg_output_style = 4, // whether to use the supplied styles + dlg_output_func = 8, // output function + dlg_output_file_line = 16, // output file:line, + dlg_output_newline = 32, // output a newline at the end + dlg_output_threadsafe = 64, // locks stream before printing + dlg_output_time_msecs = 128 // output micro seconds (ms on windows) +}; + +// The default level-dependent output styles. The array values represent the styles +// to be used for the associated level (i.e. [0] for trace level). +DLG_API extern const struct dlg_style dlg_default_output_styles[6]; + +// Generic output function. Used by the default output handler and might be useful +// for custom output handlers (that don't want to manually format the output). +// Will call the given output func with the given data (and format + args to print) +// for everything it has to print in printf format. +// See also the *_stream and *_buf specializations for common usage. +// The given output function must not be NULL. +typedef void(*dlg_generic_output_handler)(void* data, const char* format, ...); +DLG_API void dlg_generic_output(dlg_generic_output_handler output, void* data, + unsigned int features, const struct dlg_origin* origin, const char* string, + const struct dlg_style styles[6]); + +// Generic output function, using a format string instead of feature flags. +// Use following conversion characters: +// %h - output the time in H:M:S format +// %m - output the time in milliseconds +// %t - output the full list of tags, comma separated +// %f - output the function name noted in the origin +// %o - output the file:line of the origin +// %s - print the appropriate style escape sequence. +// %r - print the escape sequence to reset the style. +// %c - The content of the log/assert +// %% - print the '%' character +// Only the above specified conversion characters are valid, the rest are +// written as it is. +DLG_API void dlg_generic_outputf(dlg_generic_output_handler output, void* data, + const char* format_string, const struct dlg_origin* origin, + const char* string, const struct dlg_style styles[6]); + +// Generic output function. Used by the default output handler and might be useful +// for custom output handlers (that don't want to manually format the output). +// If stream is NULL uses stdout. +// Automatically uses dlg_fprintf to assure correct utf-8 even on windows consoles. +// Locks the stream (i.e. assures threadsafe access) when the associated feature +// is passed (note that stdout/stderr might still mix from multiple threads). +DLG_API void dlg_generic_output_stream(FILE* stream, unsigned int features, + const struct dlg_origin* origin, const char* string, + const struct dlg_style styles[6]); +DLG_API void dlg_generic_outputf_stream(FILE* stream, const char* format_string, + const struct dlg_origin* origin, const char* string, + const struct dlg_style styles[6], bool lock_stream); + +// Generic output function (see dlg_generic_output) that uses a buffer instead of +// a stream. buf must at least point to *size bytes. Will set *size to the number +// of bytes written (capped to the given size), if buf == NULL will set *size +// to the needed size. The size parameter must not be NULL. +DLG_API void dlg_generic_output_buf(char* buf, size_t* size, unsigned int features, + const struct dlg_origin* origin, const char* string, + const struct dlg_style styles[6]); +DLG_API void dlg_generic_outputf_buf(char* buf, size_t* size, const char* format_string, + const struct dlg_origin* origin, const char* string, + const struct dlg_style styles[6]); + +// Returns if the given stream is a tty. Useful for custom output handlers +// e.g. to determine whether to use color. +// NOTE: Due to windows limitations currently returns false for wsl ttys. +DLG_API bool dlg_is_tty(FILE* stream); + +// Returns the null-terminated escape sequence for the given style into buf. +// Undefined behvaiour if any member of style has a value outside its enum range (will +// probably result in a buffer overflow or garbage being printed). +// If all member of style are 'none' will simply nullterminate the first buf char. +DLG_API void dlg_escape_sequence(struct dlg_style style, char buf[12]); + +// The reset style escape sequence. +DLG_API extern const char* const dlg_reset_sequence; + +// Just returns true without other effect on non-windows systems or if dlg +// was compiled without the win_console option. +// On windows tries to set the console mode to ansi to make escape sequences work. +// This works only on newer windows 10 versions. Returns false on error. +// Only the first call to it will have an effect, following calls just return the result. +// The function is threadsafe. Automatically called by the default output handler. +// This will only be able to set the mode for the stdout and stderr consoles, so +// other streams to consoles will still not work. +DLG_API bool dlg_win_init_ansi(void); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // header guard diff --git a/libs/dlg/meson.build b/libs/dlg/meson.build new file mode 100644 index 0000000..a883449 --- /dev/null +++ b/libs/dlg/meson.build @@ -0,0 +1,156 @@ +project('dlg', ['c', 'cpp'], + version: '0.2.2', + meson_version: '>=0.46.0', + default_options: [ + 'c_std=c11', + 'cpp_std=c++11', + 'warning_level=3', + 'werror=true']) + +buildlib = get_option('buildlib') +build_sample = get_option('sample') +tests = get_option('tests') +win_console = get_option('win_console') +default_output_always_color = get_option('default_output_always_color') + +# dep variables depending on build type +inc = include_directories('include') +sources = [] +libs = [] + +# base path, correctly escaped on windows +base_path = join_paths([meson.source_root(), '']) +add_project_arguments('-DDLG_BASE_PATH="' + base_path + '"', language: ['c', 'cpp']) +message('DLG_BASE_PATH: ' + base_path) + +headers = files([ + 'include/dlg/output.h', + 'include/dlg/dlg.h', + 'include/dlg/dlg.hpp', +]) + +# TODO: import args (dllimport)? +# default warn settings +dlg_args = [] +common_args = [] +deps = [] +if meson.get_compiler('c').get_id() == 'msvc' + # make utf-8 examples work; ignore unused parameter and + # constant conditional expression warnings and a plainly wrong warning + common_args += ['/utf-8', '/wd4100', '/wd4127', '/wd4090'] +endif + +if win_console + dlg_args += '-DDLG_WIN_CONSOLE=1' +endif + +if default_output_always_color + dlg_args += '-DDLG_DEFAULT_OUTPUT_ALWAYS_COLOR=1' +endif + +# build library +dep_threads = dependency('threads') +dep_args = [] + +if buildlib + libtype = get_option('default_library') + + # TODO: temporary workaround, see https://github.com/mesonbuild/meson/issues/3304 + # The problem is that on windows, function symbols must be declared + # differently when building a static library. + if libtype == 'both' + static_args = dlg_args + ['-DDLG_STATIC'] + shared_args = dlg_args + if host_machine.system() == 'windows' + shared_args += ['-DDLG_API=__declspec(dllexport)'] + endif + + shared_lib = shared_library('dlg', + 'src/dlg/dlg.c', + c_args: shared_args + common_args + dep_args, + dependencies: dep_threads, + install: true, + include_directories: inc) + + static_lib = static_library('dlg', + 'src/dlg/dlg.c', + c_args: static_args + common_args + dep_args, + dependencies: dep_threads, + install: true, + include_directories: inc) + + # when both library types are built, the declared dependency + # and generate pkgconfig file will contain the shared library, + # since that's the default way of linking in c. + # That's also why we don't add 'DLG_STATIC' to dep_args + message('When building both libraries, the shared one will be ' + + 'used by default for dependency and pkgconfig file') + libs += [shared_lib] + else + if libtype == 'shared' + if host_machine.system() == 'windows' + dlg_args += '-DDLG_API=__declspec(dllexport)' + endif + elif libtype == 'static' + dep_args += '-DDLG_STATIC' + else + error('Unknown default_library type') + endif + + libs += library('dlg', + 'src/dlg/dlg.c', + c_args: dlg_args + common_args + dep_args, + dependencies: dep_threads, + install: true, + include_directories: inc) + endif + + pkg = import('pkgconfig') + pkg.generate( + libs, + name: 'dlg', + filebase: 'dlg', + subdirs: ['.', 'dlg'], + version: meson.project_version(), + description: 'C/C++ logging and debug library') +else + sources = ['src/dlg/dlg.c'] + deps = [dep_threads] +endif + +# dependency +dlg_dep = declare_dependency( + include_directories: inc, + compile_args: dep_args, + link_with: libs, + dependencies: deps, + sources: sources) + +# sample +if build_sample + sample = executable('sample', + 'docs/examples/example.cpp', + cpp_args: common_args, + dependencies: dlg_dep) + test('sample', sample) + + sample_c = executable('sample-c', + 'docs/examples/example.c', + c_args: common_args, + dependencies: dlg_dep) + test('sample_c', sample_c) + + sample_chain = executable('sample-chain', + 'docs/examples/chain.c', + c_args: common_args, + dependencies: dlg_dep) + test('sample_chain', sample_chain) +endif + +# tests +if tests + subdir('docs/tests') +endif + +# install +install_headers(headers, subdir: 'dlg') diff --git a/libs/dlg/meson_options.txt b/libs/dlg/meson_options.txt new file mode 100644 index 0000000..30d9d32 --- /dev/null +++ b/libs/dlg/meson_options.txt @@ -0,0 +1,18 @@ +# Whether to build a library +# If this is false, will just include dlg.c as source in the +# meson dependency (making this still usable as suproject) +option('buildlib', type: 'boolean', value: true) + +option('sample', type: 'boolean', value: false) # build the sample? +option('tests', type: 'boolean', value: false) # build the tests? + +# If set to true, the default output handler will always use color, +# and not only when stdout is a tty and dlg_win_init_ansi returns true. +option('default_output_always_color', type: 'boolean', value: false) + +# - Only relevant on windows - +# Whether to handle the windows console correctly (in terms of color/style). +# Allows apps to print utf-8 and use color on the windows command line. +# When setting this to true, on wsl dlg_win_init_ansi will return false +# since then the default handles will be files. +option('win_console', type: 'boolean', value: true) diff --git a/libs/dlg/src/dlg/dlg.c b/libs/dlg/src/dlg/dlg.c new file mode 100644 index 0000000..2238172 --- /dev/null +++ b/libs/dlg/src/dlg/dlg.c @@ -0,0 +1,803 @@ +// Copyright (c) 2019 nyorain +// Distributed under the Boost Software License, Version 1.0. +// See accompanying file LICENSE or copy at http://www.boost.org/LICENSE_1_0.txt + +#define _XOPEN_SOURCE +#define _POSIX_C_SOURCE 200809L +#define _WIN32_WINNT 0x0600 + +// Needed on windows so that we can use sprintf without warning. +#define _CRT_SECURE_NO_WARNINGS + +#include "../../include/dlg/output.h" +#include "../../include/dlg/dlg.h" +#include +#include +#include +#include +#include + +const char* const dlg_reset_sequence = "\033[0m"; +const struct dlg_style dlg_default_output_styles[] = { + {dlg_text_style_italic, dlg_color_green, dlg_color_none}, + {dlg_text_style_dim, dlg_color_gray, dlg_color_none}, + {dlg_text_style_none, dlg_color_cyan, dlg_color_none}, + {dlg_text_style_none, dlg_color_yellow, dlg_color_none}, + {dlg_text_style_none, dlg_color_red, dlg_color_none}, + {dlg_text_style_bold, dlg_color_red, dlg_color_none} +}; + +static void* xalloc(size_t size) { + void* ret = calloc(size, 1); + if(!ret) fprintf(stderr, "dlg: calloc returned NULL, probably crashing (size: %zu)\n", size); + return ret; +} + +static void* xrealloc(void* ptr, size_t size) { + void* ret = realloc(ptr, size); + if(!ret) fprintf(stderr, "dlg: realloc returned NULL, probably crashing (size: %zu)\n", size); + return ret; +} + +struct dlg_tag_func_pair { + const char* tag; + const char* func; +}; + +struct dlg_data { + const char** tags; // vec + struct dlg_tag_func_pair* pairs; // vec + char* buffer; + size_t buffer_size; +}; + +static dlg_handler g_handler = dlg_default_output; +static void* g_data = NULL; + +static void dlg_free_data(void* data); +static struct dlg_data* dlg_create_data(); + +// platform-specific +#if defined(__unix__) || defined(__unix) || defined(__linux__) || defined(__APPLE__) || defined(__MACH__) + #define DLG_OS_UNIX + #include + #include + #include + + static pthread_key_t dlg_data_key; + + static void dlg_main_cleanup() { + void* data = pthread_getspecific(dlg_data_key); + if(data) { + dlg_free_data(data); + pthread_setspecific(dlg_data_key, NULL); + } + } + + static void init_data_key(void) { + pthread_key_create(&dlg_data_key, dlg_free_data); + atexit(dlg_main_cleanup); + } + + static struct dlg_data* dlg_data(void) { + static pthread_once_t key_once = PTHREAD_ONCE_INIT; + pthread_once(&key_once, init_data_key); + + void* data = pthread_getspecific(dlg_data_key); + if(!data) { + data = dlg_create_data(); + pthread_setspecific(dlg_data_key, data); + } + + return (struct dlg_data*) data; + } + + static void lock_file(FILE* file) { + flockfile(file); + } + + static void unlock_file(FILE* file) { + funlockfile(file); + } + + bool dlg_is_tty(FILE* stream) { + return isatty(fileno(stream)); + } + + static unsigned get_msecs() { + struct timeval tv; + gettimeofday(&tv, NULL); + return tv.tv_usec; + } + +// platform switch -- end unix +#elif defined(WIN32) || defined(_WIN32) || defined(_WIN64) + #define DLG_OS_WIN + #define WIN32_LEAN_AND_MEAN + #define DEFINE_CONSOLEV2_PROPERTIES + #include + #include + + // thanks for nothing, microsoft + #ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING + #define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004 + #endif + + // the max buffer size we will convert on the stack + #define DLG_MAX_STACK_BUF_SIZE 1024 + + static void WINAPI dlg_fls_destructor(void* data) { + dlg_free_data(data); + } + + // TODO: error handling + static BOOL CALLBACK dlg_init_fls(PINIT_ONCE io, void* param, void** lpContext) { + (void) io; + (void) param; + **((DWORD**) lpContext) = FlsAlloc(dlg_fls_destructor); + return true; + } + + static struct dlg_data* dlg_data(void) { + static INIT_ONCE init_once = INIT_ONCE_STATIC_INIT; + static DWORD fls = 0; + void* flsp = (void*) &fls; + InitOnceExecuteOnce(&init_once, dlg_init_fls, NULL, &flsp); + void* data = FlsGetValue(fls); + if(!data) { + data = dlg_create_data(); + FlsSetValue(fls, data); + } + + return (struct dlg_data*) data; + } + + static void lock_file(FILE* file) { + _lock_file(file); + } + + static void unlock_file(FILE* file) { + _unlock_file(file); + } + + bool dlg_is_tty(FILE* stream) { + return _isatty(_fileno(stream)); + } + +#ifdef DLG_WIN_CONSOLE + static bool init_ansi_console(void) { + HANDLE out = GetStdHandle(STD_OUTPUT_HANDLE); + HANDLE err = GetStdHandle(STD_ERROR_HANDLE); + if(out == INVALID_HANDLE_VALUE || err == INVALID_HANDLE_VALUE) + return false; + + DWORD outMode, errMode; + if(!GetConsoleMode(out, &outMode) || !GetConsoleMode(err, &errMode)) + return false; + + outMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; + errMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; + if(!SetConsoleMode(out, outMode) || !SetConsoleMode(out, errMode)) + return false; + + return true; + } + + static bool win_write_heap(void* handle, int needed, const char* format, va_list args) { + char* buf1 = xalloc(3 * needed + 3 + (needed % 2)); + wchar_t* buf2 = (wchar_t*) (buf1 + needed + 1 + (needed % 2)); + vsnprintf(buf1, needed + 1, format, args); + needed = MultiByteToWideChar(CP_UTF8, 0, buf1, needed, buf2, needed + 1); + bool ret = (needed != 0 && WriteConsoleW(handle, buf2, needed, NULL, NULL) != 0); + free(buf1); + return ret; + } + + static bool win_write_stack(void* handle, int needed, const char* format, va_list args) { + char buf1[DLG_MAX_STACK_BUF_SIZE]; + wchar_t buf2[DLG_MAX_STACK_BUF_SIZE]; + vsnprintf(buf1, needed + 1, format, args); + needed = MultiByteToWideChar(CP_UTF8, 0, buf1, needed, buf2, needed + 1); + return (needed != 0 && WriteConsoleW(handle, buf2, needed, NULL, NULL) != 0); + } +#endif // DLG_WIN_CONSOLE + + static unsigned get_msecs() { + SYSTEMTIME st; + GetSystemTime(&st); + return st.wMilliseconds; + } + +#else // platform switch -- end windows + #error Cannot determine platform (needed for color and utf-8 and stuff) +#endif + +// general +void dlg_escape_sequence(struct dlg_style style, char buf[12]) { + int nums[3]; + unsigned int count = 0; + + if(style.fg != dlg_color_none) { + nums[count++] = style.fg + 30; + } + + if(style.bg != dlg_color_none) { + nums[count++] = style.fg + 40; + } + + if(style.style != dlg_text_style_none) { + nums[count++] = style.style; + } + + switch(count) { + case 1: snprintf(buf, 12, "\033[%dm", nums[0]); break; + case 2: snprintf(buf, 12, "\033[%d;%dm", nums[0], nums[1]); break; + case 3: snprintf(buf, 12, "\033[%d;%d;%dm", nums[0], nums[1], nums[2]); break; + default: buf[0] = '\0'; break; + } +} + +int dlg_vfprintf(FILE* stream, const char* format, va_list args) { +#if defined(DLG_OS_WIN) && defined(DLG_WIN_CONSOLE) + void* handle = NULL; + if(stream == stdout) { + handle = GetStdHandle(STD_OUTPUT_HANDLE); + } else if(stream == stderr) { + handle = GetStdHandle(STD_ERROR_HANDLE); + } + + if(handle) { + va_list args_copy; + va_copy(args_copy, args); + int needed = vsnprintf(NULL, 0, format, args_copy); + va_end(args_copy); + + if(needed < 0) { + return needed; + } + + // We don't allocate too much on the stack + // but we also don't want to call alloc every logging call + // or use another cached buffer + if(needed >= DLG_MAX_STACK_BUF_SIZE) { + if(win_write_heap(handle, needed, format, args)) { + return needed; + } + } else { + if(win_write_stack(handle, needed, format, args)) { + return needed; + } + } + } +#endif + + return vfprintf(stream, format, args); +} + +int dlg_fprintf(FILE* stream, const char* format, ...) { + va_list args; + va_start(args, format); + int ret = dlg_vfprintf(stream, format, args); + va_end(args); + return ret; +} + +int dlg_styled_fprintf(FILE* stream, struct dlg_style style, const char* format, ...) { + char buf[12]; + dlg_escape_sequence(style, buf); + + fprintf(stream, "%s", buf); + va_list args; + va_start(args, format); + int ret = dlg_vfprintf(stream, format, args); + va_end(args); + fprintf(stream, "%s", dlg_reset_sequence); + return ret; +} + +void dlg_generic_output(dlg_generic_output_handler output, void* data, + unsigned int features, const struct dlg_origin* origin, const char* string, + const struct dlg_style styles[6]) { + // We never print any dynamic content below so we can be sure at compile + // time that a buffer of size 64 is large enough. + char format_buf[64]; + char* format = format_buf; + + if(features & dlg_output_style) { + format += sprintf(format, "%%s"); + } + + if(features & (dlg_output_time | dlg_output_file_line | dlg_output_tags | dlg_output_func)) { + format += sprintf(format, "["); + } + + bool first_meta = true; + if(features & dlg_output_time) { + format += sprintf(format, "%%h"); + first_meta = false; + } + + if(features & dlg_output_time_msecs) { + if(!first_meta) { + format += sprintf(format, ":"); + } + + format += sprintf(format, "%%m"); + first_meta = false; + } + + if(features & dlg_output_file_line) { + if(!first_meta) { + format += sprintf(format, " "); + } + + format += sprintf(format, "%%o"); + first_meta = false; + } + + if(features & dlg_output_func) { + if(!first_meta) { + format += sprintf(format, " "); + } + + format += sprintf(format, "%%f"); + first_meta = false; + } + + if(features & dlg_output_tags) { + if(!first_meta) { + format += sprintf(format, " "); + } + + format += sprintf(format, "{%%t}"); + first_meta = false; + } + + if(features & (dlg_output_time | dlg_output_file_line | dlg_output_tags | dlg_output_func)) { + format += sprintf(format, "] "); + } + + format += sprintf(format, "%%c"); + + if(features & dlg_output_newline) { + format += sprintf(format, "\n"); + } + + *format = '\0'; + dlg_generic_outputf(output, data, format_buf, origin, string, styles); +} + +void dlg_generic_outputf(dlg_generic_output_handler output, void* data, + const char* format_string, const struct dlg_origin* origin, const char* string, + const struct dlg_style styles[6]) { + bool reset_style = false; + for(const char* it = format_string; *it; it++) { + if(*it != '%') { + output(data, "%c", *it); + continue; + } + + char next = *(it + 1); // must be valid since *it is not '\0' + if(next == 'h') { + time_t t = time(NULL); + struct tm tm_info; + + #ifdef DLG_OS_WIN + if(localtime_s(&tm_info, &t)) { + #else + if(!localtime_r(&t, &tm_info)) { + #endif + output(data, ""); + } else { + char timebuf[32]; + strftime(timebuf, sizeof(timebuf), "%H:%M:%S", &tm_info); + output(data, "%s", timebuf); + } + it++; + } else if(next == 'm') { + output(data, "%d", get_msecs()); + it++; + } else if(next == 't') { + bool first_tag = true; + for(const char** tags = origin->tags; *tags; ++tags) { + if(!first_tag) { + output(data, ", "); + } + + output(data, "%s", *tags); + first_tag = false; + } + ++it; + } else if(next == 'f') { + output(data, "%s", origin->func); + ++it; + } else if(next == 'o') { + output(data, "%s:%u", origin->file, origin->line); + ++it; + } else if(next == 's') { + char buf[12]; + dlg_escape_sequence(styles[origin->level], buf); + output(data, "%s", buf); + reset_style = true; + ++it; + } else if(next == 'r') { + output(data, "%s", dlg_reset_sequence); + reset_style = false; + ++it; + } else if(next == 'c') { + if(origin->expr && string) { + output(data, "assertion '%s' failed: '%s'", origin->expr, string); + } else if(origin->expr) { + output(data, "assertion '%s' failed", origin->expr); + } else if(string) { + output(data, "%s", string); + } + ++it; + } else if(next == '%') { + output(data, "%s", "%"); + ++it; + } else { + // in this case it's a '%' without known format specifier following + output(data, "%s", "%"); + } + } + + if(reset_style) { + output(data, "%s", dlg_reset_sequence); + } +} + +struct buf { + char* buf; + size_t* size; +}; + +static void print_size(void* size, const char* format, ...) { + va_list args; + va_start(args, format); + + int ret = vsnprintf(NULL, 0, format, args); + va_end(args); + + if(ret > 0) { + *((size_t*) size) += ret; + } +} + +static void print_buf(void* dbuf, const char* format, ...) { + struct buf* buf = (struct buf*) dbuf; + va_list args; + va_start(args, format); + + int printed = vsnprintf(buf->buf, *buf->size, format, args); + va_end(args); + + if(printed > 0) { + *buf->size -= printed; + buf->buf += printed; + } +} + +void dlg_generic_output_buf(char* buf, size_t* size, unsigned int features, + const struct dlg_origin* origin, const char* string, + const struct dlg_style styles[6]) { + if(buf) { + struct buf mbuf; + mbuf.buf = buf; + mbuf.size = size; + dlg_generic_output(print_buf, &mbuf, features, origin, string, styles); + } else { + *size = 0; + dlg_generic_output(print_size, size, features, origin, string, styles); + } +} + +void dlg_generic_outputf_buf(char* buf, size_t* size, const char* format_string, + const struct dlg_origin* origin, const char* string, + const struct dlg_style styles[6]) { + if(buf) { + struct buf mbuf; + mbuf.buf = buf; + mbuf.size = size; + dlg_generic_outputf(print_buf, &mbuf, format_string, origin, string, styles); + } else { + *size = 0; + dlg_generic_outputf(print_size, size, format_string, origin, string, styles); + } +} + +static void print_stream(void* stream, const char* format, ...) { + va_list args; + va_start(args, format); + dlg_vfprintf((FILE*) stream, format, args); + va_end(args); +} + +void dlg_generic_output_stream(FILE* stream, unsigned int features, + const struct dlg_origin* origin, const char* string, + const struct dlg_style styles[6]) { + stream = stream ? stream : stdout; + if(features & dlg_output_threadsafe) { + lock_file(stream); + } + + dlg_generic_output(print_stream, stream, features, origin, string, styles); + if(features & dlg_output_threadsafe) { + unlock_file(stream); + } +} + +void dlg_generic_outputf_stream(FILE* stream, const char* format_string, + const struct dlg_origin* origin, const char* string, + const struct dlg_style styles[6], bool lock_stream) { + stream = stream ? stream : stdout; + if(lock_stream) { + lock_file(stream); + } + + dlg_generic_outputf(print_stream, stream, format_string, origin, string, styles); + if(lock_stream) { + unlock_file(stream); + } +} + +void dlg_default_output(const struct dlg_origin* origin, const char* string, void* data) { + FILE* stream = data ? (FILE*) data : stdout; + unsigned int features = dlg_output_file_line | + dlg_output_newline | + dlg_output_threadsafe; + +#ifdef DLG_DEFAULT_OUTPUT_ALWAYS_COLOR + dlg_win_init_ansi(); + features |= dlg_output_style; +#else + if(dlg_is_tty(stream) && dlg_win_init_ansi()) { + features |= dlg_output_style; + } +#endif + + dlg_generic_output_stream(stream, features, origin, string, dlg_default_output_styles); + fflush(stream); +} + +bool dlg_win_init_ansi(void) { +#if defined(DLG_OS_WIN) && defined(DLG_WIN_CONSOLE) + // TODO: use init once + static volatile LONG status = 0; + LONG res = InterlockedCompareExchange(&status, 1, 0); + if(res == 0) { // not initialized + InterlockedExchange(&status, 3 + init_ansi_console()); + } + + while(status == 1); // currently initialized in another thread, spinlock + return (status == 4); +#else + return true; +#endif +} + +// small dynamic vec/array implementation +// Since the macros vec_init and vec_add[c]/vec_push might +// change the pointers value it must not be referenced somewhere else. +#define vec__raw(vec) (((unsigned int*) vec) - 2) + +static void* vec_do_create(unsigned int typesize, unsigned int cap, unsigned int size) { + unsigned long a = (size > cap) ? size : cap; + void* ptr = xalloc(2 * sizeof(unsigned int) + a * typesize); + unsigned int* begin = (unsigned int*) ptr; + begin[0] = size * typesize; + begin[1] = a * typesize; + return begin + 2; +} + +// NOTE: can be more efficient if we are allowed to reorder vector +static void vec_do_erase(void* vec, unsigned int pos, unsigned int size) { + unsigned int* begin = vec__raw(vec); + begin[0] -= size; + char* buf = (char*) vec; + memcpy(buf + pos, buf + pos + size, size); +} + +static void* vec_do_add(void** vec, unsigned int size) { + unsigned int* begin = vec__raw(*vec); + unsigned int needed = begin[0] + size; + if(needed >= begin[1]) { + void* ptr = xrealloc(begin, sizeof(unsigned int) * 2 + needed * 2); + begin = (unsigned int*) ptr; + begin[1] = needed * 2; + (*vec) = begin + 2; + } + + void* ptr = ((char*) (*vec)) + begin[0]; + begin[0] += size; + return ptr; +} + +#define vec_create(type, size) (type*) vec_do_create(sizeof(type), size * 2, size) +#define vec_create_reserve(type, size, capacity) (type*) vec_do_create(sizeof(type), capcity, size) +#define vec_init(array, size) array = vec_do_create(sizeof(*array), size * 2, size) +#define vec_init_reserve(array, size, capacity) *((void**) &array) = vec_do_create(sizeof(*array), capacity, size) +#define vec_free(vec) (free((vec) ? vec__raw(vec) : NULL), vec = NULL) +#define vec_erase_range(vec, pos, count) vec_do_erase(vec, pos * sizeof(*vec), count * sizeof(*vec)) +#define vec_erase(vec, pos) vec_do_erase(vec, pos * sizeof(*vec), sizeof(*vec)) +#define vec_size(vec) (vec__raw(vec)[0] / sizeof(*vec)) +#define vec_capacity(vec) (vec_raw(vec)[1] / sizeof(*vec)) +#define vec_add(vec) vec_do_add((void**) &vec, sizeof(*vec)) +#define vec_addc(vec, count) (vec_do_add((void**) &vec, sizeof(*vec) * count)) +#define vec_push(vec, value) (vec_do_add((void**) &vec, sizeof(*vec)), vec_last(vec) = (value)) +#define vec_pop(vec) (vec__raw(vec)[0] -= sizeof(*vec)) +#define vec_popc(vec, count) (vec__raw(vec)[0] -= sizeof(*vec) * count) +#define vec_clear(vec) (vec__raw(vec)[0] = 0) +#define vec_last(vec) (vec[vec_size(vec) - 1]) + +static struct dlg_data* dlg_create_data(void) { + struct dlg_data* data = (struct dlg_data*) xalloc(sizeof(struct dlg_data)); + vec_init_reserve(data->tags, 0, 20); + vec_init_reserve(data->pairs, 0, 20); + data->buffer_size = 100; + data->buffer = (char*) xalloc(data->buffer_size); + return data; +} + +static void dlg_free_data(void* ddata) { + struct dlg_data* data = (struct dlg_data*) ddata; + if(data) { + vec_free(data->pairs); + vec_free(data->tags); + free(data->buffer); + free(data); + } +} + +void dlg_add_tag(const char* tag, const char* func) { + struct dlg_data* data = dlg_data(); + struct dlg_tag_func_pair* pair = + (struct dlg_tag_func_pair*) vec_add(data->pairs); + pair->tag = tag; + pair->func = func; +} + +bool dlg_remove_tag(const char* tag, const char* func) { + struct dlg_data* data = dlg_data(); + for(unsigned int i = 0; i < vec_size(data->pairs); ++i) { + if(data->pairs[i].func == func && data->pairs[i].tag == tag) { + vec_erase(data->pairs, i); + return true; + } + } + + return false; +} + +char** dlg_thread_buffer(size_t** size) { + struct dlg_data* data = dlg_data(); + if(size) { + *size = &data->buffer_size; + } + return &data->buffer; +} + +void dlg_set_handler(dlg_handler handler, void* data) { + g_handler = handler; + g_data = data; +} + +dlg_handler dlg_get_handler(void** data) { + *data = g_data; + return g_handler; +} + +const char* dlg__printf_format(const char* str, ...) { + va_list vlist; + va_start(vlist, str); + + va_list vlistcopy; + va_copy(vlistcopy, vlist); + int needed = vsnprintf(NULL, 0, str, vlist); + if(needed < 0) { + printf("dlg__printf_format: invalid format given\n"); + va_end(vlist); + va_end(vlistcopy); + return NULL; + } + + va_end(vlist); + + size_t* buf_size; + char** buf = dlg_thread_buffer(&buf_size); + if(*buf_size <= (unsigned int) needed) { + *buf_size = (needed + 1) * 2; + *buf = (char*) xrealloc(*buf, *buf_size); + } + + vsnprintf(*buf, *buf_size, str, vlistcopy); + va_end(vlistcopy); + + return *buf; +} + +void dlg__do_log(enum dlg_level lvl, const char* const* tags, const char* file, int line, + const char* func, const char* string, const char* expr) { + struct dlg_data* data = dlg_data(); + unsigned int tag_count = 0; + + // push default tags + while(tags[tag_count]) { + vec_push(data->tags, tags[tag_count++]); + } + + // push current global tags + for(size_t i = 0; i < vec_size(data->pairs); ++i) { + const struct dlg_tag_func_pair pair = data->pairs[i]; + if(pair.func == NULL || !strcmp(pair.func, func)) { + vec_push(data->tags, pair.tag); + } + } + + // push call-specific tags, skip first terminating NULL + ++tag_count; + while(tags[tag_count]) { + vec_push(data->tags, tags[tag_count++]); + } + + vec_push(data->tags, NULL); // terminating NULL + struct dlg_origin origin; + origin.level = lvl; + origin.file = file; + origin.line = line; + origin.func = func; + origin.expr = expr; + origin.tags = data->tags; + + g_handler(&origin, string, g_data); + vec_clear(data->tags); +} + +#ifdef _MSC_VER +// shitty msvc compatbility +// meson gives us sane paths (separated by '/') while on MSVC, +// __FILE__ contains a '\\' separator. +static bool path_same(char a, char b) { + return (a == b) || + (a == '/' && b == '\\') || + (a == '\\' && b == '/'); +} +#else + +static inline bool path_same(char a, char b) { + return a == b; +} + +#endif + +const char* dlg__strip_root_path(const char* file, const char* base) { + if(!file) { + return NULL; + } + + const char* saved = file; + if(*file == '.') { // relative path detected + while(*(++file) == '.' || *file == '/' || *file == '\\'); + if(*file == '\0') { // weird case: purely relative path without file + return saved; + } + + return file; + } + + // strip base from file if it is given + if(base) { + char fn = *file; + char bn = *base; + while(bn != '\0' && path_same(fn, bn)) { + fn = *(++file); + bn = *(++base); + } + + if(fn == '\0' || bn != '\0') { // weird case: base isn't prefix of file + return saved; + } + } + + return file; +} diff --git a/libs/volk/.DS_Store b/libs/volk/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..1956022256cb50895e1e293bd91a869077de207d GIT binary patch literal 6148 zcmeHKOG*Pl5Uq|Q1l(llvcVJN25lHm5OA&epkRgx827Vw<#}9s2=Cx6e6Ok9EHfmoj#SmM%dnW1n34 + $ +) +if(VOLK_STATIC_DEFINES) + target_compile_definitions(volk PUBLIC ${VOLK_STATIC_DEFINES}) +endif() +if (NOT WIN32) + target_link_libraries(volk PUBLIC dl) +endif() + +# ----------------------------------------------------- +# Interface library + +add_library(volk_headers INTERFACE) +add_library(volk::volk_headers ALIAS volk_headers) +target_include_directories(volk_headers INTERFACE + $ + $ +) +if (NOT WIN32) + target_link_libraries(volk_headers INTERFACE dl) +endif() + +# ----------------------------------------------------- +# Vulkan transitive dependency + +if(VOLK_PULL_IN_VULKAN) + # If CMake has the FindVulkan module and it works, use it. + # Otherwise try the environment variable. + find_package(Vulkan QUIET) + if(TARGET Vulkan::Vulkan) + message(" Vulkan as target") + target_link_libraries(volk PUBLIC Vulkan::Vulkan) + target_link_libraries(volk_headers INTERFACE Vulkan::Vulkan) + elseif(DEFINED ENV{VULKAN_SDK}) + message(" Vulkan as path") + target_include_directories(volk PUBLIC "$ENV{VULKAN_SDK}/include") + target_include_directories(volk_headers INTERFACE "$ENV{VULKAN_SDK}/include") + endif() +endif() + +# ----------------------------------------------------- +# Installation + +if(VOLK_INSTALL) + + include(GNUInstallDirs) + set(INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake/volk) + + # Install files + install(FILES volk.h volk.c DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + + # Install library target and add it and any dependencies to export set. + install(TARGETS volk volk_headers + EXPORT volk-targets + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + ) + + # Actually write exported config w/ imported targets + install(EXPORT volk-targets + FILE volkTargets.cmake + NAMESPACE volk:: + DESTINATION ${INSTALL_CONFIGDIR} + ) + + # Create a ConfigVersion.cmake file: + include(CMakePackageConfigHelpers) + write_basic_package_version_file( + ${CMAKE_CURRENT_BINARY_DIR}/volkConfigVersion.cmake + COMPATIBILITY AnyNewerVersion + ) + + # Configure config file + configure_package_config_file(${CMAKE_CURRENT_LIST_DIR}/cmake/volkConfig.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/volkConfig.cmake + INSTALL_DESTINATION ${INSTALL_CONFIGDIR} + ) + + # Install the fully generated config and configVersion files + install(FILES + ${CMAKE_CURRENT_BINARY_DIR}/volkConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/volkConfigVersion.cmake + DESTINATION ${INSTALL_CONFIGDIR} + ) + +endif() +cmake_policy(POP) diff --git a/libs/volk/LICENSE.md b/libs/volk/LICENSE.md new file mode 100644 index 0000000..da3caa7 --- /dev/null +++ b/libs/volk/LICENSE.md @@ -0,0 +1,19 @@ +Copyright (c) 2018-2019 Arseny Kapoulkine + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/libs/volk/README.md b/libs/volk/README.md new file mode 100644 index 0000000..91e33e7 --- /dev/null +++ b/libs/volk/README.md @@ -0,0 +1,96 @@ +# 🐺 volk [![Build Status](https://github.com/zeux/volk/workflows/build/badge.svg)](https://github.com/zeux/volk/actions) + +## Purpose + +volk is a meta-loader for Vulkan. It allows you to dynamically load entrypoints required to use Vulkan +without linking to vulkan-1.dll or statically linking Vulkan loader. Additionally, volk simplifies the use of Vulkan extensions by automatically loading all associated entrypoints. Finally, volk enables loading +Vulkan entrypoints directly from the driver which can increase performance by skipping loader dispatch overhead. + +volk is written in C89 and supports Windows, Linux, Android and macOS (via MoltenVK). + +## Building + +There are multiple ways to use volk in your project: + +1. You can just add `volk.c` to your build system. Note that the usual preprocessor defines that enable Vulkan's platform-specific functions (VK_USE_PLATFORM_WIN32_KHR, VK_USE_PLATFORM_XLIB_KHR, VK_USE_PLATFORM_MACOS_MVK, etc) must be passed as desired to the compiler when building `volk.c`. +2. You can use volk in header-only fashion. Include `volk.h` whereever you want to use Vulkan functions. In exactly one source file, define `VOLK_IMPLEMENTATION` before including `volk.h`. Do not build `volk.c` at all in this case. This method of integrating volk makes it possible to set the platform defines mentioned above with arbitrary (preprocessor) logic in your code. +3. You can use provided CMake files, with the usage detailed below. + +## Basic usage + +To use volk, you have to include `volk.h` instead of `vulkan/vulkan.h`; this is necessary to use function definitions from volk. +If some files in your application include `vulkan/vulkan.h` and don't include `volk.h`, this can result in symbol conflicts; consider defining `VK_NO_PROTOTYPES` when compiling code that uses Vulkan to make sure this doesn't happen. + +To initialize volk, call this function first: + +```c++ +VkResult volkInitialize(); +``` + +This will attempt to load Vulkan loader from the system; if this function returns `VK_SUCCESS` you can proceed to create Vulkan instance. +If this function fails, this means Vulkan loader isn't installed on your system. + +After creating the Vulkan instance using Vulkan API, call this function: + +```c++ +void volkLoadInstance(VkInstance instance); +``` + +This function will load all required Vulkan entrypoints, including all extensions; you can use Vulkan from here on as usual. + +## Optimizing device calls + +If you use volk as described in the previous section, all device-related function calls, such as `vkCmdDraw`, will go through Vulkan loader dispatch code. +This allows you to transparently support multiple VkDevice objects in the same application, but comes at a price of dispatch overhead which can be as high as 7% depending on the driver and application. + +To avoid this, you have one of two options: + +1. For applications that use just one VkDevice object, load device-related Vulkan entrypoints directly from the driver with this function: + +```c++ +void volkLoadDevice(VkDevice device); +``` + +2. For applications that use multiple VkDevice objects, load device-related Vulkan entrypoints into a table: + +```c++ +void volkLoadDeviceTable(struct VolkDeviceTable* table, VkDevice device); +``` + +The second option requires you to change the application code to store one `VolkDeviceTable` per `VkDevice` and call functions from this table instead. + +Device entrypoints are loaded using `vkGetDeviceProcAddr`; when no layers are present, this commonly results in most function pointers pointing directly at the driver functions, minimizing the call overhead. When layers are loaded, the entrypoints will point at the implementations in the first applicable layer, so this is compatible with any layers including validation layers. + +## CMake support + +If your project uses CMake, volk provides you with targets corresponding to the different use cases: + +1. Target `volk` is a static library. Any platform defines can be passed to the compiler by setting `VOLK_STATIC_DEFINES`. Example: +```cmake +if (WIN32) + set(VOLK_STATIC_DEFINES VK_USE_PLATFORM_WIN32_KHR) +elseif() + ... +endif() +add_subdirectory(volk) +target_link_library(my_application PRIVATE volk) +``` +2. Target `volk_headers` is an interface target for the header-only style. Example: +```cmake +add_subdirectory(volk) +target_link_library(my_application PRIVATE volk_headers) +``` +and in the code: +```c +/* ...any logic setting VK_USE_PLATFORM_WIN32_KHR and friends... */ +#define VOLK_IMPLEMENTATION +#include "volk.h" +``` + +The above example use `add_subdirectory` to include volk into CMake's build tree. This is a good choice if you copy the volk files into your project tree or as a git submodule. + +Volk also supports installation and config-file packages. Installation is disabled by default (so as to not pollute user projects with install rules), and can be disabled by passing `-DVOLK_INSTALL=ON` to CMake. Once installed, do something like `find_package(volk CONFIG REQUIRED)` in your project's CMakeLists.txt. The imported volk targets are called `volk::volk` and `volk::volk_headers`. + +## License + +This library is available to anybody free of charge, under the terms of MIT License (see LICENSE.md). diff --git a/libs/volk/_build/CMakeCache.txt b/libs/volk/_build/CMakeCache.txt new file mode 100644 index 0000000..0ccdf40 --- /dev/null +++ b/libs/volk/_build/CMakeCache.txt @@ -0,0 +1,449 @@ +# This is the CMakeCache file. +# For build in directory: /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build +# It was generated by CMake: /usr/local/Cellar/cmake/3.18.2/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=CMAKE_ADDR2LINE-NOTFOUND + +//Path to a program. +CMAKE_AR:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/ar + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING= + +//Enable/Disable color output during build. +CMAKE_COLOR_MAKEFILE:BOOL=ON + +//C compiler +CMAKE_C_COMPILER:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/cc + +//Flags used by the C compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the C compiler during DEBUG builds. +CMAKE_C_FLAGS_DEBUG:STRING=-g + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the C compiler during RELEASE builds. +CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Executable file format +CMAKE_EXECUTABLE_FORMAT:STRING=MACHO + +//Flags used by the linker during all build types. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= + +//User executables (bin) +CMAKE_INSTALL_BINDIR:PATH=bin + +//Read-only architecture-independent data (DATAROOTDIR) +CMAKE_INSTALL_DATADIR:PATH= + +//Read-only architecture-independent data root (share) +CMAKE_INSTALL_DATAROOTDIR:PATH=share + +//Documentation root (DATAROOTDIR/doc/PROJECT_NAME) +CMAKE_INSTALL_DOCDIR:PATH= + +//C header files (include) +CMAKE_INSTALL_INCLUDEDIR:PATH=include + +//Info documentation (DATAROOTDIR/info) +CMAKE_INSTALL_INFODIR:PATH= + +//Object code libraries (lib) +CMAKE_INSTALL_LIBDIR:PATH=lib + +//Program executables (libexec) +CMAKE_INSTALL_LIBEXECDIR:PATH=libexec + +//Locale-dependent data (DATAROOTDIR/locale) +CMAKE_INSTALL_LOCALEDIR:PATH= + +//Modifiable single-machine data (var) +CMAKE_INSTALL_LOCALSTATEDIR:PATH=var + +//Man documentation (DATAROOTDIR/man) +CMAKE_INSTALL_MANDIR:PATH= + +//Path to a program. +CMAKE_INSTALL_NAME_TOOL:FILEPATH=/usr/bin/install_name_tool + +//C header files for non-gcc (/usr/include) +CMAKE_INSTALL_OLDINCLUDEDIR:PATH=/usr/include + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_installed + +//Run-time variable data (LOCALSTATEDIR/run) +CMAKE_INSTALL_RUNSTATEDIR:PATH= + +//System admin executables (sbin) +CMAKE_INSTALL_SBINDIR:PATH=sbin + +//Modifiable architecture-independent data (com) +CMAKE_INSTALL_SHAREDSTATEDIR:PATH=com + +//Read-only single-machine data (etc) +CMAKE_INSTALL_SYSCONFDIR:PATH=etc + +//Path to a program. +CMAKE_LINKER:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/ld + +//Path to a program. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make + +//Flags used by the linker during the creation of modules during +// all build types. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=CMAKE_OBJCOPY-NOTFOUND + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/objdump + +//Build architectures for OSX +CMAKE_OSX_ARCHITECTURES:STRING= + +//Minimum OS X version to target for deployment (at runtime); newer +// APIs weak linked. Set to empty string for default value. +CMAKE_OSX_DEPLOYMENT_TARGET:STRING= + +//The product will be built against the headers and libraries located +// inside the indicated SDK. +CMAKE_OSX_SYSROOT:PATH=/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=volk + +//Value Computed by CMake +CMAKE_PROJECT_VERSION:STATIC=155 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_MAJOR:STATIC=155 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_MINOR:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_PATCH:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_TWEAK:STATIC= + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=CMAKE_READELF-NOTFOUND + +//Flags used by the linker during the creation of shared libraries +// during all build types. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/strip + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//No help, variable specified on the command line. +VOLK_INSTALL:UNINITIALIZED=ON + +//Vulkan as a transitive dependency +VOLK_PULL_IN_VULKAN:BOOL=ON + +//Additional defines for building the volk static library, e.g. +// Vulkan platform defines +VOLK_STATIC_DEFINES:BOOL=OFF + +//Path to a file. +Vulkan_INCLUDE_DIR:PATH=/usr/local/include + +//Path to a library. +Vulkan_LIBRARY:FILEPATH=/usr/local/lib/libvulkan.dylib + +//Value Computed by CMake +volk_BINARY_DIR:STATIC=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build + +//Dependencies for the target +volk_LIB_DEPENDS:STATIC=general;dl;general;Vulkan::Vulkan; + +//Value Computed by CMake +volk_SOURCE_DIR:STATIC=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140 + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=18 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=2 +//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE +CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/local/Cellar/cmake/3.18.2/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/local/Cellar/cmake/3.18.2/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/local/Cellar/cmake/3.18.2/bin/ctest +//ADVANCED property for variable: CMAKE_C_COMPILER +CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Path to cache edit program executable. +CMAKE_EDIT_COMMAND:INTERNAL=/usr/local/Cellar/cmake/3.18.2/bin/ccmake +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Unix Makefiles +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140 +//ADVANCED property for variable: CMAKE_INSTALL_BINDIR +CMAKE_INSTALL_BINDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DATADIR +CMAKE_INSTALL_DATADIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DATAROOTDIR +CMAKE_INSTALL_DATAROOTDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_DOCDIR +CMAKE_INSTALL_DOCDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_INCLUDEDIR +CMAKE_INSTALL_INCLUDEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_INFODIR +CMAKE_INSTALL_INFODIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LIBDIR +CMAKE_INSTALL_LIBDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LIBEXECDIR +CMAKE_INSTALL_LIBEXECDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LOCALEDIR +CMAKE_INSTALL_LOCALEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_LOCALSTATEDIR +CMAKE_INSTALL_LOCALSTATEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_MANDIR +CMAKE_INSTALL_MANDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_NAME_TOOL +CMAKE_INSTALL_NAME_TOOL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_OLDINCLUDEDIR +CMAKE_INSTALL_OLDINCLUDEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_RUNSTATEDIR +CMAKE_INSTALL_RUNSTATEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SBINDIR +CMAKE_INSTALL_SBINDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SHAREDSTATEDIR +CMAKE_INSTALL_SHAREDSTATEDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_INSTALL_SYSCONFDIR +CMAKE_INSTALL_SYSCONFDIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/local/Cellar/cmake/3.18.2/share/cmake +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/usr/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: Vulkan_INCLUDE_DIR +Vulkan_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: Vulkan_LIBRARY +Vulkan_LIBRARY-ADVANCED:INTERNAL=1 +//CMAKE_INSTALL_PREFIX during last run +_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX:INTERNAL=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_installed + diff --git a/libs/volk/_build/CMakeFiles/3.18.2/CMakeCCompiler.cmake b/libs/volk/_build/CMakeFiles/3.18.2/CMakeCCompiler.cmake new file mode 100644 index 0000000..47d43d0 --- /dev/null +++ b/libs/volk/_build/CMakeFiles/3.18.2/CMakeCCompiler.cmake @@ -0,0 +1,77 @@ +set(CMAKE_C_COMPILER "/Library/Developer/CommandLineTools/usr/bin/cc") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "AppleClang") +set(CMAKE_C_COMPILER_VERSION "12.0.0.12000032") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") + +set(CMAKE_C_PLATFORM_ID "Darwin") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "") +set(CMAKE_C_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "/Library/Developer/CommandLineTools/usr/bin/ar") +set(CMAKE_C_COMPILER_AR "") +set(CMAKE_RANLIB "/Library/Developer/CommandLineTools/usr/bin/ranlib") +set(CMAKE_C_COMPILER_RANLIB "") +set(CMAKE_LINKER "/Library/Developer/CommandLineTools/usr/bin/ld") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCC ) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) +set(CMAKE_COMPILER_IS_MINGW ) +set(CMAKE_COMPILER_IS_CYGWIN ) +if(CMAKE_COMPILER_IS_CYGWIN) + set(CYGWIN 1) + set(UNIX 1) +endif() + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +if(CMAKE_COMPILER_IS_MINGW) + set(MINGW 1) +endif() +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "8") +set(CMAKE_C_COMPILER_ABI "") +set(CMAKE_C_LIBRARY_ARCHITECTURE "") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include;/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include;/Library/Developer/CommandLineTools/usr/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks") diff --git a/libs/volk/_build/CMakeFiles/3.18.2/CMakeDetermineCompilerABI_C.bin b/libs/volk/_build/CMakeFiles/3.18.2/CMakeDetermineCompilerABI_C.bin new file mode 100755 index 0000000000000000000000000000000000000000..8c77ab8022805d01c58daab613ddb28fe9adadfd GIT binary patch literal 16592 zcmeI3yK59t6vppleWB5$P*D_FEJQ7`AqlvM;QAQdMM;8YMU-&OW+r4H*+_O4lZcwe zVhKVDYYDdg16DQ`DfLgVv0K5yB8Z6JH#5u5_(*N>9roLM&V8IY_czm?58uE1+-;1L zGsg5l2cRN?=Oz!&n4?e`vUdE^b@!foYmBp5bF$%IBjzb$qqP(6-HGg$=zJ+VXOeg) zrYY7(vo`dX!q|`FY`zBR{q;JCx%0&6``%X1!L z+A)ZA6t5V&_HAV8)rr@4R^B`w8p2#2ik{iG*X)Am$KT0R&sq5WP{&T={>;PgA#Hqa z5#k!}?0617H>X<*>bbq#2>tni%LAw@s9_WA6vX`Hk}-QQo=IZzl8Jx_h=2%)fCz|y z2#A0Ph=2%)fCz|y2#A0Ph=2%)fCz|y2#A0Ph=2%)fCz|y2#A0Ph=2%)fCz|y2#A0P zh=2%)fCz|y2#A0Ph=2%)fCz|y2#A0P{GSA><<{p-_Xmq>J=rR^nqN2FHly;iyH$R% z|2W*fcL$wZwcV<=*WC8x`}MR{Mz4*XZv-p;!i@DEhKu(Hi<3OgUT2=ArAPKKv&VS^ zBlR-rcc#zY=w6)ck4__C8poo)K4<4=t-s_?H$&gf`ct02Xolyfg1R}!K6aZbz+B)X za^}-h{B1movfvM4WL)fX;?8TTB2_HOcge& Sj*a5B5jJbKhMs#AZGHj%wU^%j literal 0 HcmV?d00001 diff --git a/libs/volk/_build/CMakeFiles/3.18.2/CMakeSystem.cmake b/libs/volk/_build/CMakeFiles/3.18.2/CMakeSystem.cmake new file mode 100644 index 0000000..f4feaf1 --- /dev/null +++ b/libs/volk/_build/CMakeFiles/3.18.2/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Darwin-19.6.0") +set(CMAKE_HOST_SYSTEM_NAME "Darwin") +set(CMAKE_HOST_SYSTEM_VERSION "19.6.0") +set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + + + +set(CMAKE_SYSTEM "Darwin-19.6.0") +set(CMAKE_SYSTEM_NAME "Darwin") +set(CMAKE_SYSTEM_VERSION "19.6.0") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/libs/volk/_build/CMakeFiles/3.18.2/CompilerIdC/CMakeCCompilerId.c b/libs/volk/_build/CMakeFiles/3.18.2/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 0000000..6c0aa93 --- /dev/null +++ b/libs/volk/_build/CMakeFiles/3.18.2/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,674 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXE) || defined(__CRAYXC) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + + +#if !defined(__STDC__) +# if (defined(_MSC_VER) && !defined(__clang__)) \ + || (defined(__ibmxl__) || defined(__IBMC__)) +# define C_DIALECT "90" +# else +# define C_DIALECT +# endif +#elif __STDC_VERSION__ >= 201000L +# define C_DIALECT "11" +#elif __STDC_VERSION__ >= 199901L +# define C_DIALECT "99" +#else +# define C_DIALECT "90" +#endif +const char* info_language_dialect_default = + "INFO" ":" "dialect_default[" C_DIALECT "]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXE) || defined(__CRAYXC) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/libs/volk/_build/CMakeFiles/3.18.2/CompilerIdC/a.out b/libs/volk/_build/CMakeFiles/3.18.2/CompilerIdC/a.out new file mode 100755 index 0000000000000000000000000000000000000000..86e232cfdc5d56e617cf69841db1b7da5a9b708b GIT binary patch literal 33192 zcmeI*L2DaF6bJCPkxfmT)()7|r8%fR6gMQcvDJw@X5THVw~iS5#bQsqV* z`QfH*>>cmZX*1rc?U%SSiCJgj@oHh?c!Is-)$Mp++lwUbnqTK&Tvw_YZu?UNpN75V@$c-rg}ZkOa|`KjBc?J?;~$ z5zc>bEazu`;@>HkA8}sd+?n`)LXtc0*V+HJ`X}6(<$Rv=M6(f11pfL&qnsa~R_%mvQ8G-iDw$MGaKp_t(mnOSjW=phwKV5OygJ*qx>0$nWa|~*4ZL!!D&B_M4B}Egza~#%E>8zm zKYCHauZ5+YPWj1kQ_1CyEBQ%jyEe&}^Hk}Q9;LgK^}Mp)_d1u7M|cgmB&o|f;q!du zkXb=2%`!|orR&@Cb{+Y=EthTCJ`oiNKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##-kHFKQ8HgzcNFzgMpd_zx8s$Yv8T2?x8g-KR(1W5uE_W273F2Gfeh{OJ_`MI z^8$*}?F?u;-4}s&WiJH!*^xaHn(n5jdiF!0mXo39kExH6#Np!;ecaQ>eLm_t$V1Eh z1|9Q-bJ@7yqQv~=@}U{Ck--->CL8B$JYwTT8xPp{p~So?Lf!6f5J)WdY$t93t=7ogJ{rJo#@ literal 0 HcmV?d00001 diff --git a/libs/volk/_build/CMakeFiles/CMakeDirectoryInformation.cmake b/libs/volk/_build/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..ee25f54 --- /dev/null +++ b/libs/volk/_build/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/libs/volk/_build/CMakeFiles/CMakeOutput.log b/libs/volk/_build/CMakeFiles/CMakeOutput.log new file mode 100644 index 0000000..6d72eab --- /dev/null +++ b/libs/volk/_build/CMakeFiles/CMakeOutput.log @@ -0,0 +1,130 @@ +The system is: Darwin - 19.6.0 - x86_64 +Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. +Compiler: /Library/Developer/CommandLineTools/usr/bin/cc +Build flags: +Id flags: + +The output was: +0 + + +Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out" + +The C compiler identification is AppleClang, found in "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build/CMakeFiles/3.18.2/CompilerIdC/a.out" + +Detecting C compiler ABI info compiled with the following output: +Change Dir: /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/bin/make cmTC_d3f60/fast && /Library/Developer/CommandLineTools/usr/bin/make -f CMakeFiles/cmTC_d3f60.dir/build.make CMakeFiles/cmTC_d3f60.dir/build +Building C object CMakeFiles/cmTC_d3f60.dir/CMakeCCompilerABI.c.o +/Library/Developer/CommandLineTools/usr/bin/cc -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -v -Wl,-v -o CMakeFiles/cmTC_d3f60.dir/CMakeCCompilerABI.c.o -c /usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompilerABI.c +Apple clang version 12.0.0 (clang-1200.0.32.2) +Target: x86_64-apple-darwin19.6.0 +Thread model: posix +InstalledDir: /Library/Developer/CommandLineTools/usr/bin +clang: warning: -Wl,-v: 'linker' input unused [-Wunused-command-line-argument] + "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.15.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -mthread-model posix -mframe-pointer=all -fno-strict-return -masm-verbose -munwind-tables -target-sdk-version=10.15.6 -fcompatibility-qualified-id-block-type-checking -target-cpu penryn -dwarf-column-info -debugger-tuning=lldb -target-linker-version 609 -v -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include -internal-externc-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include -internal-externc-isystem /Library/Developer/CommandLineTools/usr/include -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -fdebug-compilation-dir /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build/CMakeFiles/CMakeTmp -ferror-limit 19 -fmessage-length 0 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fobjc-runtime=macosx-10.15.0 -fmax-type-align=16 -fdiagnostics-show-option -o CMakeFiles/cmTC_d3f60.dir/CMakeCCompilerABI.c.o -x c /usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompilerABI.c +clang -cc1 version 12.0.0 (clang-1200.0.32.2) default target x86_64-apple-darwin19.6.0 +ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/local/include" +ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/Library/Frameworks" +#include "..." search starts here: +#include <...> search starts here: + /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include + /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include + /Library/Developer/CommandLineTools/usr/include + /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks (framework directory) +End of search list. +Linking C executable cmTC_d3f60 +/usr/local/Cellar/cmake/3.18.2/bin/cmake -E cmake_link_script CMakeFiles/cmTC_d3f60.dir/link.txt --verbose=1 +/Library/Developer/CommandLineTools/usr/bin/cc -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names -v -Wl,-v CMakeFiles/cmTC_d3f60.dir/CMakeCCompilerABI.c.o -o cmTC_d3f60 +Apple clang version 12.0.0 (clang-1200.0.32.2) +Target: x86_64-apple-darwin19.6.0 +Thread model: posix +InstalledDir: /Library/Developer/CommandLineTools/usr/bin + "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch x86_64 -platform_version macos 10.15.0 10.15.6 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -o cmTC_d3f60 -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_d3f60.dir/CMakeCCompilerABI.c.o -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.osx.a +@(#)PROGRAM:ld PROJECT:ld64-609 +BUILD 07:59:13 Aug 25 2020 +configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em +Library search paths: + /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib +Framework search paths: + /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/ + + + +Parsed C implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include] + add: [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include] + add: [/Library/Developer/CommandLineTools/usr/include] + end of search list found + collapse include dir [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include] ==> [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include] + collapse include dir [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include] + collapse include dir [/Library/Developer/CommandLineTools/usr/include] ==> [/Library/Developer/CommandLineTools/usr/include] + implicit include dirs: [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include;/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include;/Library/Developer/CommandLineTools/usr/include] + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/usr/bin/make cmTC_d3f60/fast && /Library/Developer/CommandLineTools/usr/bin/make -f CMakeFiles/cmTC_d3f60.dir/build.make CMakeFiles/cmTC_d3f60.dir/build] + ignore line: [Building C object CMakeFiles/cmTC_d3f60.dir/CMakeCCompilerABI.c.o] + ignore line: [/Library/Developer/CommandLineTools/usr/bin/cc -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -v -Wl -v -o CMakeFiles/cmTC_d3f60.dir/CMakeCCompilerABI.c.o -c /usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompilerABI.c] + ignore line: [Apple clang version 12.0.0 (clang-1200.0.32.2)] + ignore line: [Target: x86_64-apple-darwin19.6.0] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Library/Developer/CommandLineTools/usr/bin] + ignore line: [clang: warning: -Wl -v: 'linker' input unused [-Wunused-command-line-argument]] + ignore line: [ "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.15.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -mthread-model posix -mframe-pointer=all -fno-strict-return -masm-verbose -munwind-tables -target-sdk-version=10.15.6 -fcompatibility-qualified-id-block-type-checking -target-cpu penryn -dwarf-column-info -debugger-tuning=lldb -target-linker-version 609 -v -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include -internal-externc-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include -internal-externc-isystem /Library/Developer/CommandLineTools/usr/include -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -fdebug-compilation-dir /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build/CMakeFiles/CMakeTmp -ferror-limit 19 -fmessage-length 0 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fobjc-runtime=macosx-10.15.0 -fmax-type-align=16 -fdiagnostics-show-option -o CMakeFiles/cmTC_d3f60.dir/CMakeCCompilerABI.c.o -x c /usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 12.0.0 (clang-1200.0.32.2) default target x86_64-apple-darwin19.6.0] + ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/local/include"] + ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/Library/Frameworks"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include] + ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include] + ignore line: [ /Library/Developer/CommandLineTools/usr/include] + ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks (framework directory)] + ignore line: [End of search list.] + ignore line: [Linking C executable cmTC_d3f60] + ignore line: [/usr/local/Cellar/cmake/3.18.2/bin/cmake -E cmake_link_script CMakeFiles/cmTC_d3f60.dir/link.txt --verbose=1] + ignore line: [/Library/Developer/CommandLineTools/usr/bin/cc -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -Wl -search_paths_first -Wl -headerpad_max_install_names -v -Wl -v CMakeFiles/cmTC_d3f60.dir/CMakeCCompilerABI.c.o -o cmTC_d3f60 ] + ignore line: [Apple clang version 12.0.0 (clang-1200.0.32.2)] + ignore line: [Target: x86_64-apple-darwin19.6.0] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Library/Developer/CommandLineTools/usr/bin] + link line: [ "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch x86_64 -platform_version macos 10.15.0 10.15.6 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -o cmTC_d3f60 -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_d3f60.dir/CMakeCCompilerABI.c.o -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.osx.a] + arg [/Library/Developer/CommandLineTools/usr/bin/ld] ==> ignore + arg [-demangle] ==> ignore + arg [-lto_library] ==> ignore, skip following value + arg [/Library/Developer/CommandLineTools/usr/lib/libLTO.dylib] ==> skip value of -lto_library + arg [-dynamic] ==> ignore + arg [-arch] ==> ignore + arg [x86_64] ==> ignore + arg [-platform_version] ==> ignore + arg [macos] ==> ignore + arg [10.15.0] ==> ignore + arg [10.15.6] ==> ignore + arg [-syslibroot] ==> ignore + arg [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk] ==> ignore + arg [-o] ==> ignore + arg [cmTC_d3f60] ==> ignore + arg [-search_paths_first] ==> ignore + arg [-headerpad_max_install_names] ==> ignore + arg [-v] ==> ignore + arg [CMakeFiles/cmTC_d3f60.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [-lSystem] ==> lib [System] + arg [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.osx.a] ==> lib [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.osx.a] + Library search paths: [;/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib] + Framework search paths: [;/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/] + remove lib [System] + remove lib [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.osx.a] + collapse library dir [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib] + collapse framework dir [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks] + implicit libs: [] + implicit dirs: [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib] + implicit fwks: [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks] + + diff --git a/libs/volk/_build/CMakeFiles/Export/lib/cmake/volk/volkTargets-noconfig.cmake b/libs/volk/_build/CMakeFiles/Export/lib/cmake/volk/volkTargets-noconfig.cmake new file mode 100644 index 0000000..11a6812 --- /dev/null +++ b/libs/volk/_build/CMakeFiles/Export/lib/cmake/volk/volkTargets-noconfig.cmake @@ -0,0 +1,19 @@ +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Import target "volk::volk" for configuration "" +set_property(TARGET volk::volk APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG) +set_target_properties(volk::volk PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES_NOCONFIG "C" + IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libvolk.a" + ) + +list(APPEND _IMPORT_CHECK_TARGETS volk::volk ) +list(APPEND _IMPORT_CHECK_FILES_FOR_volk::volk "${_IMPORT_PREFIX}/lib/libvolk.a" ) + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) diff --git a/libs/volk/_build/CMakeFiles/Export/lib/cmake/volk/volkTargets.cmake b/libs/volk/_build/CMakeFiles/Export/lib/cmake/volk/volkTargets.cmake new file mode 100644 index 0000000..1d0aa16 --- /dev/null +++ b/libs/volk/_build/CMakeFiles/Export/lib/cmake/volk/volkTargets.cmake @@ -0,0 +1,107 @@ +# Generated by CMake + +if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) + message(FATAL_ERROR "CMake >= 2.6.0 required") +endif() +cmake_policy(PUSH) +cmake_policy(VERSION 2.6...3.17) +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Protect against multiple inclusion, which would fail when already imported targets are added once more. +set(_targetsDefined) +set(_targetsNotDefined) +set(_expectedTargets) +foreach(_expectedTarget volk::volk volk::volk_headers) + list(APPEND _expectedTargets ${_expectedTarget}) + if(NOT TARGET ${_expectedTarget}) + list(APPEND _targetsNotDefined ${_expectedTarget}) + endif() + if(TARGET ${_expectedTarget}) + list(APPEND _targetsDefined ${_expectedTarget}) + endif() +endforeach() +if("${_targetsDefined}" STREQUAL "${_expectedTargets}") + unset(_targetsDefined) + unset(_targetsNotDefined) + unset(_expectedTargets) + set(CMAKE_IMPORT_FILE_VERSION) + cmake_policy(POP) + return() +endif() +if(NOT "${_targetsDefined}" STREQUAL "") + message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") +endif() +unset(_targetsDefined) +unset(_targetsNotDefined) +unset(_expectedTargets) + + +# Compute the installation prefix relative to this file. +get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +if(_IMPORT_PREFIX STREQUAL "/") + set(_IMPORT_PREFIX "") +endif() + +# Create imported target volk::volk +add_library(volk::volk STATIC IMPORTED) + +set_target_properties(volk::volk PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" + INTERFACE_LINK_LIBRARIES "dl;Vulkan::Vulkan" +) + +# Create imported target volk::volk_headers +add_library(volk::volk_headers INTERFACE IMPORTED) + +set_target_properties(volk::volk_headers PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" + INTERFACE_LINK_LIBRARIES "dl;Vulkan::Vulkan" +) + +if(CMAKE_VERSION VERSION_LESS 3.0.0) + message(FATAL_ERROR "This file relies on consumers using CMake 3.0.0 or greater.") +endif() + +# Load information for each installed configuration. +get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +file(GLOB CONFIG_FILES "${_DIR}/volkTargets-*.cmake") +foreach(f ${CONFIG_FILES}) + include(${f}) +endforeach() + +# Cleanup temporary variables. +set(_IMPORT_PREFIX) + +# Loop over all imported files and verify that they actually exist +foreach(target ${_IMPORT_CHECK_TARGETS} ) + foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) + if(NOT EXISTS "${file}" ) + message(FATAL_ERROR "The imported target \"${target}\" references the file + \"${file}\" +but this file does not exist. Possible reasons include: +* The file was deleted, renamed, or moved to another location. +* An install or uninstall procedure did not complete successfully. +* The installation package was faulty and contained + \"${CMAKE_CURRENT_LIST_FILE}\" +but not all the files it references. +") + endif() + endforeach() + unset(_IMPORT_CHECK_FILES_FOR_${target}) +endforeach() +unset(_IMPORT_CHECK_TARGETS) + +# This file does not depend on other imported targets which have +# been exported from the same project but in a separate export set. + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) +cmake_policy(POP) diff --git a/libs/volk/_build/CMakeFiles/Makefile.cmake b/libs/volk/_build/CMakeFiles/Makefile.cmake new file mode 100644 index 0000000..0f8d8f5 --- /dev/null +++ b/libs/volk/_build/CMakeFiles/Makefile.cmake @@ -0,0 +1,111 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# The generator used is: +set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles") + +# The top level Makefile was generated from the following files: +set(CMAKE_MAKEFILE_DEPENDS + "CMakeCache.txt" + "../CMakeLists.txt" + "CMakeFiles/3.18.2/CMakeCCompiler.cmake" + "CMakeFiles/3.18.2/CMakeSystem.cmake" + "../cmake/volkConfig.cmake.in" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/BasicConfigVersion-AnyNewerVersion.cmake.in" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompiler.cmake.in" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompilerABI.c" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCInformation.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCommonLanguageInclude.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCompilerIdDetection.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineCCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineCompileFeatures.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineCompilerABI.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineCompilerId.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineSystem.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeFindBinUtils.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeGenericSystem.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeInitializeConfigs.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeLanguageInformation.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakePackageConfigHelpers.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeParseImplicitIncludeInfo.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeParseImplicitLinkInfo.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeSystem.cmake.in" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeSystemSpecificInformation.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeSystemSpecificInitialize.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeTestCCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeTestCompilerCommon.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeUnixFindMake.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/ADSP-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/AppleClang-C.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Borland-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Bruce-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Clang-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Clang.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Compaq-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Cray-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/GHS-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/GNU-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/GNU.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/HP-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/IAR-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Intel-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/MSVC-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/PGI-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/PathScale-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/SCO-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/SDCC-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/SunPro-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/TI-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Watcom-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/XL-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/XLClang-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/zOS-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/FindPackageHandleStandardArgs.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/FindPackageMessage.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/FindVulkan.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/GNUInstallDirs.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Internal/CMakeCheckCompilerFlag.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Internal/FeatureTesting.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/Apple-AppleClang-C.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/Apple-Clang-C.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/Apple-Clang.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/Darwin-Initialize.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/Darwin.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/UnixPaths.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/WriteBasicConfigVersionFile.cmake" + ) + +# The corresponding makefile is: +set(CMAKE_MAKEFILE_OUTPUTS + "Makefile" + "CMakeFiles/cmake.check_cache" + ) + +# Byproducts of CMake generate step: +set(CMAKE_MAKEFILE_PRODUCTS + "CMakeFiles/3.18.2/CMakeSystem.cmake" + "CMakeFiles/3.18.2/CMakeCCompiler.cmake" + "CMakeFiles/3.18.2/CMakeCCompiler.cmake" + "volkConfigVersion.cmake" + "volkConfig.cmake" + "CMakeFiles/CMakeDirectoryInformation.cmake" + ) + +# Dependency information for all targets: +set(CMAKE_DEPEND_INFO_FILES + "CMakeFiles/volk.dir/DependInfo.cmake" + ) diff --git a/libs/volk/_build/CMakeFiles/Makefile2 b/libs/volk/_build/CMakeFiles/Makefile2 new file mode 100644 index 0000000..5c8c5f3 --- /dev/null +++ b/libs/volk/_build/CMakeFiles/Makefile2 @@ -0,0 +1,125 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/local/Cellar/cmake/3.18.2/bin/cmake + +# The command to remove a file. +RM = /usr/local/Cellar/cmake/3.18.2/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build + +#============================================================================= +# Directory level rules for the build root directory + +# The main recursive "all" target. +all: CMakeFiles/volk.dir/all + +.PHONY : all + +# The main recursive "preinstall" target. +preinstall: + +.PHONY : preinstall + +# The main recursive "clean" target. +clean: CMakeFiles/volk.dir/clean + +.PHONY : clean + +#============================================================================= +# Target rules for target CMakeFiles/volk.dir + +# All Build rule for target. +CMakeFiles/volk.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/volk.dir/build.make CMakeFiles/volk.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/volk.dir/build.make CMakeFiles/volk.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build/CMakeFiles --progress-num=1,2 "Built target volk" +.PHONY : CMakeFiles/volk.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/volk.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build/CMakeFiles 2 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/volk.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build/CMakeFiles 0 +.PHONY : CMakeFiles/volk.dir/rule + +# Convenience name for target. +volk: CMakeFiles/volk.dir/rule + +.PHONY : volk + +# clean rule for target. +CMakeFiles/volk.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/volk.dir/build.make CMakeFiles/volk.dir/clean +.PHONY : CMakeFiles/volk.dir/clean + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/libs/volk/_build/CMakeFiles/TargetDirectories.txt b/libs/volk/_build/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000..8907cc2 --- /dev/null +++ b/libs/volk/_build/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,7 @@ +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build/CMakeFiles/install/local.dir +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build/CMakeFiles/install/strip.dir +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build/CMakeFiles/install.dir +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build/CMakeFiles/rebuild_cache.dir +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build/CMakeFiles/edit_cache.dir +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build/CMakeFiles/list_install_components.dir +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build/CMakeFiles/volk.dir diff --git a/libs/volk/_build/CMakeFiles/cmake.check_cache b/libs/volk/_build/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..3dccd73 --- /dev/null +++ b/libs/volk/_build/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/libs/volk/_build/CMakeFiles/progress.marks b/libs/volk/_build/CMakeFiles/progress.marks new file mode 100644 index 0000000..0cfbf08 --- /dev/null +++ b/libs/volk/_build/CMakeFiles/progress.marks @@ -0,0 +1 @@ +2 diff --git a/libs/volk/_build/CMakeFiles/volk.dir/C.includecache b/libs/volk/_build/CMakeFiles/volk.dir/C.includecache new file mode 100644 index 0000000..f744e20 --- /dev/null +++ b/libs/volk/_build/CMakeFiles/volk.dir/C.includecache @@ -0,0 +1,116 @@ +#IncludeRegexLine: ^[ ]*[#%][ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c +volk.h +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.h +dlfcn.h +- + +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.h +vulkan/vk_platform.h +- +vulkan/vulkan_core.h +- +vulkan/vulkan_win32.h +- +vulkan/vulkan_beta.h +- +vulkan/vulkan.h +- + +/usr/local/include/vulkan/vk_platform.h +stddef.h +- +stdint.h +- + +/usr/local/include/vulkan/vulkan.h +vk_platform.h +/usr/local/include/vulkan/vk_platform.h +vulkan_core.h +/usr/local/include/vulkan/vulkan_core.h +vulkan_android.h +/usr/local/include/vulkan/vulkan_android.h +zircon/types.h +- +vulkan_fuchsia.h +/usr/local/include/vulkan/vulkan_fuchsia.h +vulkan_ios.h +/usr/local/include/vulkan/vulkan_ios.h +vulkan_macos.h +/usr/local/include/vulkan/vulkan_macos.h +vulkan_metal.h +/usr/local/include/vulkan/vulkan_metal.h +vulkan_vi.h +/usr/local/include/vulkan/vulkan_vi.h +wayland-client.h +- +vulkan_wayland.h +/usr/local/include/vulkan/vulkan_wayland.h +windows.h +- +vulkan_win32.h +/usr/local/include/vulkan/vulkan_win32.h +xcb/xcb.h +- +vulkan_xcb.h +/usr/local/include/vulkan/vulkan_xcb.h +X11/Xlib.h +- +vulkan_xlib.h +/usr/local/include/vulkan/vulkan_xlib.h +directfb.h +- +vulkan_directfb.h +/usr/local/include/vulkan/vulkan_directfb.h +X11/Xlib.h +- +X11/extensions/Xrandr.h +- +vulkan_xlib_xrandr.h +/usr/local/include/vulkan/vulkan_xlib_xrandr.h +ggp_c/vulkan_types.h +- +vulkan_ggp.h +/usr/local/include/vulkan/vulkan_ggp.h +vulkan_beta.h +/usr/local/include/vulkan/vulkan_beta.h + +/usr/local/include/vulkan/vulkan_android.h + +/usr/local/include/vulkan/vulkan_beta.h + +/usr/local/include/vulkan/vulkan_core.h +vk_platform.h +/usr/local/include/vulkan/vk_platform.h + +/usr/local/include/vulkan/vulkan_directfb.h + +/usr/local/include/vulkan/vulkan_fuchsia.h + +/usr/local/include/vulkan/vulkan_ggp.h + +/usr/local/include/vulkan/vulkan_ios.h + +/usr/local/include/vulkan/vulkan_macos.h + +/usr/local/include/vulkan/vulkan_metal.h + +/usr/local/include/vulkan/vulkan_vi.h + +/usr/local/include/vulkan/vulkan_wayland.h + +/usr/local/include/vulkan/vulkan_win32.h + +/usr/local/include/vulkan/vulkan_xcb.h + +/usr/local/include/vulkan/vulkan_xlib.h + +/usr/local/include/vulkan/vulkan_xlib_xrandr.h + diff --git a/libs/volk/_build/CMakeFiles/volk.dir/DependInfo.cmake b/libs/volk/_build/CMakeFiles/volk.dir/DependInfo.cmake new file mode 100644 index 0000000..161c2b0 --- /dev/null +++ b/libs/volk/_build/CMakeFiles/volk.dir/DependInfo.cmake @@ -0,0 +1,22 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + "C" + ) +# The set of files for implicit dependencies of each language: +set(CMAKE_DEPENDS_CHECK_C + "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c" "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build/CMakeFiles/volk.dir/volk.c.o" + ) +set(CMAKE_C_COMPILER_ID "AppleClang") + +# The include file search paths: +set(CMAKE_C_TARGET_INCLUDE_PATH + "../" + "/usr/local/include" + ) + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/libs/volk/_build/CMakeFiles/volk.dir/build.make b/libs/volk/_build/CMakeFiles/volk.dir/build.make new file mode 100644 index 0000000..afd2ac5 --- /dev/null +++ b/libs/volk/_build/CMakeFiles/volk.dir/build.make @@ -0,0 +1,118 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/local/Cellar/cmake/3.18.2/bin/cmake + +# The command to remove a file. +RM = /usr/local/Cellar/cmake/3.18.2/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build + +# Include any dependencies generated for this target. +include CMakeFiles/volk.dir/depend.make + +# Include the progress variables for this target. +include CMakeFiles/volk.dir/progress.make + +# Include the compile flags for this target's objects. +include CMakeFiles/volk.dir/flags.make + +CMakeFiles/volk.dir/volk.c.o: CMakeFiles/volk.dir/flags.make +CMakeFiles/volk.dir/volk.c.o: ../volk.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object CMakeFiles/volk.dir/volk.c.o" + /Library/Developer/CommandLineTools/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/volk.dir/volk.c.o -c /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c + +CMakeFiles/volk.dir/volk.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/volk.dir/volk.c.i" + /Library/Developer/CommandLineTools/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c > CMakeFiles/volk.dir/volk.c.i + +CMakeFiles/volk.dir/volk.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/volk.dir/volk.c.s" + /Library/Developer/CommandLineTools/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c -o CMakeFiles/volk.dir/volk.c.s + +# Object files for target volk +volk_OBJECTS = \ +"CMakeFiles/volk.dir/volk.c.o" + +# External object files for target volk +volk_EXTERNAL_OBJECTS = + +libvolk.a: CMakeFiles/volk.dir/volk.c.o +libvolk.a: CMakeFiles/volk.dir/build.make +libvolk.a: CMakeFiles/volk.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking C static library libvolk.a" + $(CMAKE_COMMAND) -P CMakeFiles/volk.dir/cmake_clean_target.cmake + $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/volk.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +CMakeFiles/volk.dir/build: libvolk.a + +.PHONY : CMakeFiles/volk.dir/build + +CMakeFiles/volk.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/volk.dir/cmake_clean.cmake +.PHONY : CMakeFiles/volk.dir/clean + +CMakeFiles/volk.dir/depend: + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140 /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140 /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_build/CMakeFiles/volk.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/volk.dir/depend + diff --git a/libs/volk/_build/CMakeFiles/volk.dir/cmake_clean.cmake b/libs/volk/_build/CMakeFiles/volk.dir/cmake_clean.cmake new file mode 100644 index 0000000..a78c226 --- /dev/null +++ b/libs/volk/_build/CMakeFiles/volk.dir/cmake_clean.cmake @@ -0,0 +1,10 @@ +file(REMOVE_RECURSE + "CMakeFiles/volk.dir/volk.c.o" + "libvolk.a" + "libvolk.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/volk.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/libs/volk/_build/CMakeFiles/volk.dir/cmake_clean_target.cmake b/libs/volk/_build/CMakeFiles/volk.dir/cmake_clean_target.cmake new file mode 100644 index 0000000..e7c8950 --- /dev/null +++ b/libs/volk/_build/CMakeFiles/volk.dir/cmake_clean_target.cmake @@ -0,0 +1,3 @@ +file(REMOVE_RECURSE + "libvolk.a" +) diff --git a/libs/volk/_build/CMakeFiles/volk.dir/depend.internal b/libs/volk/_build/CMakeFiles/volk.dir/depend.internal new file mode 100644 index 0000000..a9614a1 --- /dev/null +++ b/libs/volk/_build/CMakeFiles/volk.dir/depend.internal @@ -0,0 +1,23 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +CMakeFiles/volk.dir/volk.c.o + /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c + /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.h + /usr/local/include/vulkan/vk_platform.h + /usr/local/include/vulkan/vulkan.h + /usr/local/include/vulkan/vulkan_android.h + /usr/local/include/vulkan/vulkan_beta.h + /usr/local/include/vulkan/vulkan_core.h + /usr/local/include/vulkan/vulkan_directfb.h + /usr/local/include/vulkan/vulkan_fuchsia.h + /usr/local/include/vulkan/vulkan_ggp.h + /usr/local/include/vulkan/vulkan_ios.h + /usr/local/include/vulkan/vulkan_macos.h + /usr/local/include/vulkan/vulkan_metal.h + /usr/local/include/vulkan/vulkan_vi.h + /usr/local/include/vulkan/vulkan_wayland.h + /usr/local/include/vulkan/vulkan_win32.h + /usr/local/include/vulkan/vulkan_xcb.h + /usr/local/include/vulkan/vulkan_xlib.h + /usr/local/include/vulkan/vulkan_xlib_xrandr.h diff --git a/libs/volk/_build/CMakeFiles/volk.dir/depend.make b/libs/volk/_build/CMakeFiles/volk.dir/depend.make new file mode 100644 index 0000000..0fffe9e --- /dev/null +++ b/libs/volk/_build/CMakeFiles/volk.dir/depend.make @@ -0,0 +1,23 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +CMakeFiles/volk.dir/volk.c.o: ../volk.c +CMakeFiles/volk.dir/volk.c.o: ../volk.h +CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vk_platform.h +CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan.h +CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_android.h +CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_beta.h +CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_core.h +CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_directfb.h +CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_fuchsia.h +CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_ggp.h +CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_ios.h +CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_macos.h +CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_metal.h +CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_vi.h +CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_wayland.h +CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_win32.h +CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_xcb.h +CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_xlib.h +CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_xlib_xrandr.h + diff --git a/libs/volk/_build/CMakeFiles/volk.dir/flags.make b/libs/volk/_build/CMakeFiles/volk.dir/flags.make new file mode 100644 index 0000000..73787fc --- /dev/null +++ b/libs/volk/_build/CMakeFiles/volk.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# compile C with /Library/Developer/CommandLineTools/usr/bin/cc +C_DEFINES = + +C_INCLUDES = -I/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140 -isystem /usr/local/include + +C_FLAGS = -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk + diff --git a/libs/volk/_build/CMakeFiles/volk.dir/link.txt b/libs/volk/_build/CMakeFiles/volk.dir/link.txt new file mode 100644 index 0000000..f6ae7e2 --- /dev/null +++ b/libs/volk/_build/CMakeFiles/volk.dir/link.txt @@ -0,0 +1,2 @@ +/Library/Developer/CommandLineTools/usr/bin/ar qc libvolk.a CMakeFiles/volk.dir/volk.c.o +/Library/Developer/CommandLineTools/usr/bin/ranlib libvolk.a diff --git a/libs/volk/_build/CMakeFiles/volk.dir/progress.make b/libs/volk/_build/CMakeFiles/volk.dir/progress.make new file mode 100644 index 0000000..abadeb0 --- /dev/null +++ b/libs/volk/_build/CMakeFiles/volk.dir/progress.make @@ -0,0 +1,3 @@ +CMAKE_PROGRESS_1 = 1 +CMAKE_PROGRESS_2 = 2 + diff --git a/libs/volk/_build/CMakeFiles/volk.dir/volk.c.o b/libs/volk/_build/CMakeFiles/volk.dir/volk.c.o new file mode 100644 index 0000000000000000000000000000000000000000..b310663c4791fd49c96c33e6e1f4f3dacbe4db1a GIT binary patch literal 55992 zcmb7N4VYBLm2CkP1qB5S3Zq0&iJ(D1mk25_0}k@z$c%`BLNn7aEj>T>^dJZt6rv#L zq7cIh>k=Wx2r;a%E)i4|qC^x?SVN+#M2tZ(h6rnj5ZzN%_q}&-^}9VfpX1@&bL;=- z)vNBQdgIH#e06*xaZK|B{)gWd_#M*>|Lcrj{G5T`-9}J;mSmkU&4j_vT;hl`VSbM_ zM*NH)pG!^4xqmxeF?dWx#DjmmKG^-s#Aou7XiOw7Hvedmm}O}2Gk$z!LoS=HolJ)D z<7Iq7Jn3%EVQ^^>(jjFxG>#uXv7sSkCch;ED+We}pj>SuQ^M3)@Z(nz@>f?=pRCM{ zZ>+s7U0XGN{P2>%*I?gT$M#UbHT4M_-`s~2i8f9WSsXt;RXu)EHd&K$qF>$)2ycGs zDbzx=1J7TpM55Yxxc~P8bil7ozRih=Vw{`%vKOkDHtI8b{3C3nN$CUx;|=e)O`F@Cjg|}ZJMWIerSlpOl+H&s=i}e^Us8(rzTOc;6xjzV_ANsbYUhvHwP~zpB`Or`SJM>|ZGMe=7DiV*Ewp z_E4E$t%||51wlI>j#Mk0}2W75`fl`>l$7s$#!WvCmfQ_bT=UihZtPU#i$2 zRqRhI_7@cUtBU=%ihYM-e_OG?uh{>h*qaTBpT|yB?A;Xmm5Tia#Xdo?-=f%ODfR~y z`@bpnUnutH75jF@zFV>XMX|TMD!!gOD)#Rw_G=aUt%|)yvHwu9FHr1{D)v>1eT!oM zOtGI(%In8HiskcMu8)op{?WYDOtCjt>_?US{6n!HQtVo}K2rSmeoOlv#s3eA{r8G} zhhpEZ*taS6Hx&CTiv4B9{+wdpsMw!Z?CTW!(~5niV*hu=uJ!*VivI(OeV$^!N3q|j z*l$zpImKS5*e5IYO2vMYVjrj2M=SPGioH~^4^r%xDfY`1`xT1)O2yt+vG-E!7by1g z6nl|k@1WS*EB4bAyXLROf3gx!3&oyL?9CMWVdeSwxne({*#D~7KUVA?D)x63``e0r zr()lx*k4iXTfU|Jw~GIZihaFe|CM52t=Ly6_D2=_62<@qa+E->cZ~R_xk( za=PN5Q|wa}dxK)HSL`XpK1H$DDfVi`o>c5ND)#Y;U0a{mD*iQ!T`QLsPook~TCq=7 z>{>lsulQf1*oQ0js}%cS#eSJ$@2S|kDE2cHdk4kdR2B`RqP8C`$ENjzhc+cIof(@g%ZzyDE6g_eYIj= zrP!ZR>`yCp&HqWo|CfqgTdzK&_-|J1+WJ|uZ&%`ZQ?dV#V*kBj*WNomQv5$t?Eh5k z+WXo`%6r+Fiv7EaUE81hf#R>d*K7L#+CJwsO8n)D{bt3k?T6HVOaF}GKSi-?`!;hF z{|6Pjw!ft9-#((mqwQ<`T=D;fV*jaPU#8f9tk|{vw8e`5BE_!l<2|nU|CeId_79&^ z{9jP)FDmwT6#G8K{(p-7?}}a9CvUCnhimo|760QE`?25B{wmF=M<+X_0vhQpR3rvuh<7E_Th^CTE#w6vEQiJs}y^UVxOegXDIgD6#EYq z`;Qd+1B(6M6#E**zEQEipx8Gn_E!}9F2(+VV*i_BPYiA9^ELa8m}Bt;8+`vq`Erc? ze$9OAW4^&8zaR5W!<+ACh2M9g^a_37NK4Ot9%#OUgzx0cd%5&}`&FWSHvjhH!zh29 z!}R7|w-5gKwcpu#4qrjTcX-UVo#q|G?9Vg%z?PcOmI=@B5FMECG#5HEVKo=JG2v%i z=*fg-TTo}WI`?xTH3A4CR&4fF+P|t+vT$sj$nM}BA zmg|T6sHy6?Hdks>xVBJgH*;-?)NbI~a;aUdj;xz<5yo4D3lYR_=3o7Dc3Ydxj*bFTH3+JA6ufYcu3TB+3TO5n1+VebIU#YF< z+5oBjH`hv~_AJ-Rr1m7&#z<`?*Ct5q5w2BBZ2{Nnr8bLe)1)??YqO+Q&$YQyyM=2D zr8bspOQbe}Ys;n9pKDJ@?INzNk=pmTwq9yQT-zkI)3~-(YOT4pLu$>qwp(idIG>H% zJyQFMYx|^j43G1G)Q;!cVX3v^n)y2~HvUfLT1%;&%C)vqJA-Q-q}GOOouzgP*Sbkf z#Mx77BF?^26Kym=Y9d^z)I?s&q$b*SjMQ52GE9)#m%RO|rS>`3>ZSHqu1%BLL9We` z+CRBAS87MOwoqz+k@o{-ufxVA=WJGr)AYP-3%NosF%ZL8E?=h}_} z+HR?B=i&B9Z5P+}NloPQfYknnhdV5_9b7Yiqshjf$V*G9iEwSD_9lw1nbe-=;l@bqMXpVdnwSf!rS=97S1+}L9Q*4+Gku_F13AJd!m50Mrz{uzFunLIlW10Vy(DUYKM4Uc1TT> zeYey^8TLr+0FQH@)I?qmNKLGF4@>O`kJFq}z@C5q$F-JH`AvLjPUn4c~F0)>0;=N;&)Wo~R zR;h`1iycyH$;+@?YN8MBk(zw}lbRUs2c#zY?qR8kxhK(5j6bo~Zz;78&u8PIt0Dbc zwT@idB(-z6wpD7EaBYXwF6Y{Asfj(LJq5IV1+)WF8{Cbx?O~~1!?nZ-V*K66wU$y# zajmVlw|EiRnzhBM8q$SEF^L&QZBqyhad;`Z3shYa%^um!9R(LzuCbn~O)92kvbD*~pvFm)y!Owlj=*s}WshVVcbzRnU*#hoC zL-lekE3@b~K&(@2g~WRLZ58VjWj9uiZLL_(0?ifcU!25jV1{pUVkT9Qu1S^D)g;rk z4d(Q(V6>N{CN@qUm8!4H=HQ;0n5>-QWG0MAH8h~}26j6>nJmK<*HjHkO-|QZhwF0b zOvCWx#8igTtf?AYTct@D^O#fORXa6BlF3r4c5*74pDCNBr`tN#vt?y1V^%DXwQ@6i zpb~Am*G#-6Rhb)!v%*})V#JE%WYQWZ)}&cjQO%=LnN+eNRg!L~&m^b20C^*$yfHf| zS(z$M)+Z;XGifs&_j0aoDlbhXt1_r5@>60N(U{4l8kox>SPiBy^Hn(+1~(k9$vCde>EY(@6+<-D4VJmSl3+AON1ro6*i(j3FNJIt6& zHgEb?{NiVD#W`;hSNxhTXZ%#IL|14w*Mh{1_rk8O!WyW)m66J`oytx!YZN?`Va-l2 zu4}BtLtPsy1wxi3F+)>0TGRQ1TefY?WcH29R@kWwOSV*P&P*U$At+&*AC%~d>&%)X znM+SijY#73%V|+>7&$s_r4ddyL(IvM6YY{{M0#4Ps@%@B4aIde6VtVbu&%ZtK89e< zi0#brL8!E&@C-`UPR7*lN;5E%sjI{~0BNFWtK76=mT-Z92CB@a>vMHkJg~Un#s)m? z!&8JeMx3tcB8&WBvKbC7!Ggf{Cj<)ks8nqgR*C2)WJJikd>CgFBV4Dslp^P{bbTt5 zt~DLrJRiCRa$4gIT zI>WWP`sqA7#UZb#^W5TSMV%kmR!$inuA@>7cpOu{%%q*nRaU#a2Mm>w&Z33MnoZso z{mWKVsw&TrA4XcR_+jk>=C{t^X{pM_um@58hNLsJ*mntzOijy`H%_b%+capRLCI`3 zoyt0|vc`t$V)S}+(V(Cxbt*S_Dq6(3SRU3%XsgRib#E)qg1$N^gI?rCX4hP3wn6D6 zDzd4IUci)x_>tIo0GQoiieG7iy@HMw49_ zY?GDeu!UsC8Vt74xWTrNmX;OWg0Zkm<3y}?>Ke0^sjzvFSkPp)B}VrVZPlg97P33<8ShWg>)F+ zU-tBZk6ophEj|~SF=6!)JhBJjRo+<;C3PHneAsy>O44PaB89hc)U*l1C#oANCst`yauj(uInnAi(9QU?`+{XDOqO;7GkBHbF180y zq)LD1s@CC+PenFeBWKu{#=Ab9tL9ZnTT{`rWMVSSgf$ecoPuSMeen^hU2`$BSR_$I zYyo5~w(VqcVRgH1V7A_|L*r`6wZk>_$y*!ErjFTf7CN7Dbgyt5fL`84Co^^$vV$NT z^GLBgJsG>Tp*t+5r-$5R3YB9Q9@ImU*(s^)z!4=TFrHI*smPS1G4<6>cE$pA={rQ# z=@it9d)5xEom3Z^T)LvF!kwvbd$THB76n_I)X*3yRoE4)Ln&P&AfqlgGHM?p1$4Wq zH^P?KzWjs%nSeOr%x<^PDa;#H=I;;2so@48GHIrZbVFq_iv>Bo(^0f;FRiTZwv?F= zFbB{UtEtD^lJ%9<*y*JX;6jYTu51I|v)K_U0X3Sg?57wl!$#Lpzh|5lxCD|IcrGr{ePr@seAE7Isd6y~ArR%Y!OGUFY z5$a?ro+@SqP@buyMyBUOtcGNnJJ!UM0B(5s85S7uTr zjb<0Bt~S&MR@#+mS+sM9`Cw9dGWiW1SuuFHo5|7Hn3tQ{RQVdLF|z5ZlAzH3ls83>ss<*hG-5BqYD>NGRizNVxgs#T{MqkZ<*0&B-&CrOs(MS zA;se@n8UD9Gow}9OCv4rol7viWa}p3BgWdvnBJ+$f>D^Spj5#tr`tC)OMs!~`Da&R z^=z_ZoAR`s8-<9e*ZgSBJ2cic*idr$MK>@TjG|bixXxoAQd#dk$azrDkAGEiE+|^q z@!adXvr{#hfoNMpBpLKnnToXXh;0m19y=$};~~mIuxCOmJUm+(=`&StQSXAtb$u9( zO~jXUO}Fs3BR`O7zxk?Et^ER0u;1f8Dlu)GP1WO@OL%osTx?@UZ*%s84}2BD zY+c$ksI3clphfcHc5?t9ra^|y)G`7O=?Y9~4NG!`Xh-y3tX zv)QVT4bF6=XVOIv3VMM{p4vqZj%JA!gRbg&aIA~cdWbQ~4eN_8#;{h<`3Fy{#6BZl zD(D3ws6o?KCLl^P3JYvId;$%@itEhxtlYG6O&0sfObf;n3tpDYq;ffoI=5`go6h*Q zMmU!F)6>nb@!yEByOwsS(dV8tx3Eu0{khCOL2!x*{j73`V-@6&IpoFsOm&c__aqAr zgD^jN`UJA{RP=?UrxZPbKQuQ##SZe~FC+cV0p^|>v^PKS9*%tHi*WSsAV{RXnIA&VgW7@VpzNM-2 zuCRB)@78}c_tJg+HMM^tG4SNJ_cSX$34h;Ve~e!Ve#;g*Kk5guei`^ZL4H);Sii;a zTSIoWD-zM^-eiR$uYWO|z4dUAczcu7nsGg6q{1r;KE5^`rijVqPZ2pGBFUTMD zw>-aR2HQI?PkV&WTxNz~r%farLU;k;$%LPylNrCa37;i=l<;oCNrYDuUPO2*;TPxt zCZ0bKK2P`<;XQ=65RN45MR+>lmxEk9?-9O4_&DKxgtdgD2rnf(lkls7E}jnvUnYE# z@BzXs;b_9k2+tyHM)=VH7vHOdPZ2&uIF;~5!Yc^RAv})olPg_3+Xt@w`p=Ea9VscN0z`yqfSL!cz&q zz`e80%=jmKp71fkdkAkK97))V@N~j2`?z@CBYcVQal-ouYY9gYUP^c-;a9y~JRcCg zO!y?>1B6+^(S(-~o<-P<@FQF_Y|8g4;ZuYU5l$t%k?;z_a|n+k{N!R6&vwG62_GiB zo$zMDL4@ZKo=Er^9(*Q0ZxKF2_z2;hgcAve5MDrdGU4anck#SU_$=Y0gm)88BD|XL zBEnM%zre-Bw*3j8Cwz?X9>QA)M-uiTJe}}MJP1uZ?-9O4_&DKxgtdgD2rnf(lklq^ zE}jnvUnYE#@BzXs;b_9k2+tyHM)(mso6ww` zWcZ_mcN0z`yqeIQ2xR=sU&0wQeFE0*yW! zcr0)-5a}0<1~!L&Ef7CN#boaaYzN-a@zYuZkAgQReyD3AaRhun(3Im{U6~q?5?TEJkt_45Rnc5#%1-_T~F5n1+-$r~Ra5(r{;wyo}z?TwV0IUO_O*{uY z9q~;eJ`Q*oyqtIm@GkiGBi;jeDtH&-?SXB;TM<8cb|P^Q;ST~$eSQeM3Hm$4UjvQ? z-%NZRumkui;>&>F0bfLX4iN8=MKg$JfG2=g60ZP`M0&%B_XiFI?@hcb@EP!q#9ITu z1aD6K&{>H@4tzh*A6Z0b*({>Q1~9@N4jP#9ILW5Bx|GwLkCx_+H|>faoGc+lX%jB1q9%;wyo7 zBmYZ@F96np&nBJ&R)bF=J`Q*@cscPBU`OzN#CrhmK>S^Zw+GGyZ$4qOFZOuP?pI(T>Doq*VfDQZW&1#l|(ku$0NfwzP2CB6%I2KYAO z8-e#BzO}?x0)GU)l=uSRZ1CB{bHKa6rw|_pyc4{fcnNSCct7GjfLZV^#M=XJ1#d&qE*C~0kI!gw21f|;4JVN#52HC zz$=MY08a)VM!dg4@ZQ9`0{?;dI}&dV{5yDa;)gIfeGa}KXxkt7Kj1rwZvk!r-#~md z@M-WB#1{jXg3l*D6W9RWK)eb#5PU50;Xphpi;9W&0b=Sb>Q1~9@LuG<9q|^xd%%xi z(O~lTDR4IUUgEoe)4{h9-w4csuO+?`*Z{ti_yS-Sd^YhM@K*3C#K!^a!OMx40B-^B zN4y6x4c>)#dteoKE8<7nB@#*SgFxHgucyTJDn-v!(WzK!@s;9KBpiLV6i0AEUc0q_m**~D|e?ch_0j{|N4FDG6C zd=niQ@x{QOfzKyC6SxArfp``0G4Qd(hXa2KUQE0Xa5;E);+=qx zfVU&w0{Cy>M^2{p2R;nGm-sH=kHNPQ-w0d`zLxk(;3Dv)#1{Y;g3l(N1Ktllh4?t& z0`PL;CBS>Z`w{N}ya&7s@%F$u;H`)sJqhbg@Pj~8pC1BefxkoiHQ?>wn~ARjP6b~@ zd>OD7d=c?Ez#8xw#52G&cqQ=)U^VzK;{Ab>!Fv<$3Y-Mqk$7uhC3thfc?R@5#I>x2fmj0O5kPSONlQ4{s4S7@f@%(_!Q#f zfR}=o6E6W?0^W~!4`3hgF2vgddx5tie)PnI`K-9;Akelyum|`%#9sq;2j5J59qZ+Z{TIn_Y&U){0RCs;v0d3p|2&r5?Bnrl=uSR0PxwwbHK~N zrw|_p`~i45@e*Jk@P5R5051mbLcBfjBJftkj~;^uAcm~)7ypnhY@Lcd=#QOuk3*MV}SK!&;9f`LF9uMA}_@U#l ze+a%GX!83mum$)|;#+|Kf%@G*d^PY<@D;=t1OEg*pZHARP=s$FUIn}ad@S+dz?JYX zCf)})2zqzooq#pq?TEJk{t*1gvDE&+Y2bT_?*iTizK!@s;3V+1#8(1S;7f@w09Jy} zCY}Sni2O_;J`T79yqtIm@Fwtn#CrhC!MhM|59|WoiulnM`0O71Akelya0B=|#9ssc z1bj2`b-+%@&nn`}fLDSqB0dM$AAAP!46rYFCGiSiZ}4Hn`vZG|_a@#Icp-R4;;n%f zfHx<8s5#y@!1n`f`vbdz?<3x^TMGs|*3Ypi}6@m9n)As_hfxaEYi z2qzE@AnZ(-Al!rS_~&t(2$vJiBAh@tfUq+mz=nGl>p8rynm+4(@EkIH4bjt#js}>U zb%y@rAAFDN=fs2WZOtM7h2;Nt(u40+J&$#ci9h%r)Q^!K_G=RhDgB4wZ+P%Mt8o4Z~uE^I2YeW?zx(FJUlqZf;`Ye0^8RKlI}7?1jJCuMe~@ zkM9R~kLLWU_L6VKz~j34(2jGn@5=dQc#q)Rd|1MHGq3%w_WY-Le5see{$6<|c>ZU4 zJm>j8?xp`27LPoCW?z@{tzQ0nV?1&Fh{yMP{dXD04fn^|MetWKzPN6l1DyZK^IzRf z>PxVA=Kk}%@Yj3o_qrF~gI;`hc=7$l8$Vxp{Bts z_xk@QUjJ|5rS~W%8lIo`@sQzsf!7~ed-+@HrEhLD9IyS%`x%e#$6o(_z>9yM*FK%R@pBX}S3JITUjFBKyq)KNuQy)I=L|f)I*+&Z z#>bz(EB(Ll+V4uQ{N}@d9{+`2e|gUf-`PuVr1yO3-c815z7N6U|FJjT&3-f2U-9ba zGH-kx@Y?HEufG19t!Q*ECndi3?2F|9!8%UiSLK%ieg)dGqf@ zU1a&jdVHi;Uw`!4^L($o=KYS>*C}5AeZmWW(5s&n-gs{A<+r&P9`BAKJ@er$Pyc&f zeVKh|uA7U7IDgff|K9TEzfZjJ(CGD#yS(v!iMRgvk;kt+OQyfU3;zpmy!_M~|C2oa z8_)kauYZp4+Upsw{^xl0Wj;6L_0!YqkNrJ=eAXrW&AuZKzufDOm0tU{@cP@EUVES7 z<^KXt$GfCRZ z|1>YY&%E?jd;QIPFNDXR_R9ZrZ~hqFS^9tI@teHy^#d<|Bfb1x;I(J1H=d8}F4Mc& zd;k6PY^nd$)9>{1x6do@>t24hd;R}?Prt}(-#fhZ%s8+8?(*922Cx14dj8`)|BF3; ze3wDAS2u6|8RYSHUj5GS%6FMpKV!V|)OM5Uwe;3^-8}#Ez4eayJ}d8EOT6~F{amS= z@1t@5W4-y{5>Gdmx^VwiUU_ct@-xfxPkHg(@AdyfUVAk2^81K4KfQ2)%+GON`RhIZ z#h(9eFaE!I`8n0|@8bEt?zP8WZ~VUNmH$s(e0O^Jt@Xm6?&ZI)7k;>xp8=kKrRTrW z^S{pa&ekf7`wCJnO}O zzsFDX(z~#w%-;a7JV(6#`K8w$=6hkhKK6O#PkZ`)uYAvX?Ol7mjPG`DzF+FCZyxlX zr&B#{zGuYq_Y*Jvue|=T=>+Njh_~Lo&g1R9{EhJHvzh1rwpad5-g@4ApOELbw-^7v zdhPvBuRT|K`Z->G9pm+f_q_GvQ(k`G^y*!H@*|&>F_0UPPKm?CN%R$|NQV4+Zxe$(D@X6O zHMqy592`{Xg5;h5!-_Z5oH3pL*~>n!$=qsW5(WzLGR zehm~|-kIqxB=7qCKom;KHJ!a+DF4_E?h~(?BVNQg;jR);o!*h(&Th^)v4g~%{)z^% zXQ;b;#+hSIud<~LhN$RBR*5+<*rja7aK5|OwsEI|Q60EyY|_CU?-85^>XK%sewoN< zfJNtn8DlVmcvjmJJ)50c@@%Gj;s8h!Yfw+(bl$L@@~z6n6ZRMq8!W6Z<@hhEEO}!@ zc*HDnBu_Z9CAVeFKW*Gpij~X}l;RL{D9DFQ!}ZSS)SK9h*uk22;Z|I9?nqlZHrzRm zO~m}oJ>#Mat37x^VAADBMw-HeKCXwwc;wYda507Jy0QdebU~8F*}pO_KUu{~O*%YC zO{T8;+i9)|Un$3(VU2ui=Zr%tctAFE`<$>Dv0dKuSTtH>2&+!^KygP;xtNYjx-oZ|z>0O1?}_ylP5?7Y zEc1)|E8vDM7IbZN7vk-5lcF zf-^7unl>3i_X+1Nes~{gE_(YsF_xHh3P1eIxa3u{3lkoDZn9(>C#vy$51XJFi*z)< z3FMt#A0-v$-z4uHH)u>Wl>|o=vP=dOiuH15OLG$y#ht)LS8hb{@jD@4wOKZEsJ#;c z23K{=5{+IbRhUyKku>aPI7?$tk3oLyslQQa^380PVkNY*R#3d~>LF7I_?x?j*eye3 z4d=+<>LBKwfBldX(fgyjaE!^eFi#v$3+mv}oiuQyDz*=usB|GEIhf!gkI0fSGhz73 z2@f|P*$FbwZ0F7>Y*6*g66DCWMwDQ{U2*{viAkePikqS~wy}!SVT~nbA}`N1P9(|2 z6int!5Iw;hXc@#6yhO9JG%1xp2~H>+V}h8`R^X7rk)w@M*dD<L(W)gQFxD?GJ$lah8Bl6uW zacV!phBsAs7gBJ^9%E{^si+)i2e zFe9kzPz7|`sl*i=CX}_>#SksZ-R&GsVm&*&s0E5yg=dn}{TouC$k!Ljx*cwAWJK8u zuda3}6_VW&TDke!1-H42kKBgF8)&?W@~aw+UmGz09&eK{t^Q;0`DPi*8ywNtLE;5e zdYz8HO2;K&->p>#n|F7S1m+BPMGjqpgWxblwc?9$L4(`3Xw1Dk zk*HmA6MDqn7!#_tFU#9xq-LM=(N#APsiD1VM1n@LjU2DBt}z1VrPEFBh|%4=7FDiP zUG4B2eoPK+Ix+W(hq)J*@i;4MBy@xz$NZzMq3*MnNP-`RM0UCq&???-Ii?i$Ss2`F zLs6LJVszO}Wb|q%xT3}7(>$ZaR=2(D2%3qldU`_|C*HfKOUzxx%oi=?e>%plR45Ri z^g;vhr(}3vh082Sc^_Gs1Hs{8Clq#VfD4p&lsI{#fWdU>ZefqPD&6HfocN>551bHN zL2gsp-elmsT=ltUU)*ONQGVQ``J4EN2R=oh?4{aTp^f_Jo*LWJ=s_0bRf)iTViDys zSm3&4bQ9NHm^QHE2W#5A3ryl_u|RgC>$Q2sDxaQEe&uH*tPrAaQ>O{<8w+YAZx94M zCcM>Mi!pe&aZMU+vp3}*ZZtI=B*=@rkDeva#N{GXiEhbYj>2y`$)Hqr^CZsQ_3|OO zs={0yo=dyixbvGUYp;ItPwN*sDl_GZ_lO;L@vh<6waZG@u5JX`&ZArk;Bph2mVbW$ zx#m^4nJ}V@THr+wH2t;}_|SM!?`&bw@at5fke=1sBBl=F9(6P~(UnAqLc8Dwl6ET& zB#e`=y{ZU3gOM>?u87(irkw=#uw>uy%^Dm*miUE$;$?O+X^%md#| zN-imT(FGih-Hs7yMwYlY-=qpc!o>zuuP%*B#}ZItiXCqBNDUH1*JWP=U{<>-k3P*0 z726kL?B1vUfj$K{|H_6{>F|$ zrsZRa#Y+zIiNkbR_pz1A)8O;I8cW>bmAa)ruz4KOdda)j4+F+cpzJ=r{L2C3y!hpT z&~1k>%lRm&n0x);7);Df`319dQ+`cd6o@3F&r4bE!mA783MVg6ga?LFfr}iSL&3Ws zT`GC+1m?0_A?3XjL>~6Fk|we6GGCXp+oKI`--Qh=;otBJYu=n`()K4zV=FXUl3sYK z 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 jSNL2P>Y8i%3JnlGcZIrUOk6Y>jjw`bGX9iZ11u literal 0 HcmV?d00001 diff --git a/libs/volk/_build/volkConfig.cmake b/libs/volk/_build/volkConfig.cmake new file mode 100644 index 0000000..6e45c37 --- /dev/null +++ b/libs/volk/_build/volkConfig.cmake @@ -0,0 +1,21 @@ +get_filename_component(volk_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) + +if(NOT TARGET volk::volk) + include("${volk_CMAKE_DIR}/volkTargets.cmake") +endif() + +# Mirror the default behaviour of the respective option. +if(NOT DEFINED VOLK_PULL_IN_VULKAN) + set(VOLK_PULL_IN_VULKAN ON) +endif() + +if(VOLK_PULL_IN_VULKAN) + find_package(Vulkan QUIET) + if(TARGET Vulkan::Vulkan) + add_dependencies(volk::volk Vulkan::Vulkan) + add_dependencies(volk::volk_headers Vulkan::Vulkan) + elseif(DEFINED ENV{VULKAN_SDK}) + target_include_directories(volk::volk INTERFACE "$ENV{VULKAN_SDK}/include") + target_include_directories(volk::volk_headers INTERFACE "$ENV{VULKAN_SDK}/include") + endif() +endif() diff --git a/libs/volk/_build/volkConfigVersion.cmake b/libs/volk/_build/volkConfigVersion.cmake new file mode 100644 index 0000000..0527479 --- /dev/null +++ b/libs/volk/_build/volkConfigVersion.cmake @@ -0,0 +1,37 @@ +# This is a basic version file for the Config-mode of find_package(). +# It is used by write_basic_package_version_file() as input file for configure_file() +# to create a version-file which can be installed along a config.cmake file. +# +# The created file sets PACKAGE_VERSION_EXACT if the current version string and +# the requested version string are exactly the same and it sets +# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version. +# The variable CVF_VERSION must be set before calling configure_file(). + +set(PACKAGE_VERSION "155") + +if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() + + +# if the installed project requested no architecture check, don't perform the check +if("FALSE") + return() +endif() + +# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it: +if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "8" STREQUAL "") + return() +endif() + +# check that the installed version has the same 32/64bit-ness as the one which is currently searching: +if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "8") + math(EXPR installedBits "8 * 8") + set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)") + set(PACKAGE_VERSION_UNSUITABLE TRUE) +endif() diff --git a/libs/volk/_installed/include/volk.c b/libs/volk/_installed/include/volk.c new file mode 100644 index 0000000..d752e19 --- /dev/null +++ b/libs/volk/_installed/include/volk.c @@ -0,0 +1,1929 @@ +/* This file is part of volk library; see volk.h for version/license details */ +/* clang-format off */ +#include "volk.h" + +#ifdef _WIN32 + typedef const char* LPCSTR; + typedef struct HINSTANCE__* HINSTANCE; + typedef HINSTANCE HMODULE; + #ifdef _WIN64 + typedef __int64 (__stdcall* FARPROC)(void); + #else + typedef int (__stdcall* FARPROC)(void); + #endif +#else +# include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef _WIN32 +__declspec(dllimport) HMODULE __stdcall LoadLibraryA(LPCSTR); +__declspec(dllimport) FARPROC __stdcall GetProcAddress(HMODULE, LPCSTR); +#endif + +static VkInstance loadedInstance = VK_NULL_HANDLE; +static VkDevice loadedDevice = VK_NULL_HANDLE; + +static void volkGenLoadLoader(void* context, PFN_vkVoidFunction (*load)(void*, const char*)); +static void volkGenLoadInstance(void* context, PFN_vkVoidFunction (*load)(void*, const char*)); +static void volkGenLoadDevice(void* context, PFN_vkVoidFunction (*load)(void*, const char*)); +static void volkGenLoadDeviceTable(struct VolkDeviceTable* table, void* context, PFN_vkVoidFunction (*load)(void*, const char*)); + +static PFN_vkVoidFunction vkGetInstanceProcAddrStub(void* context, const char* name) +{ + return vkGetInstanceProcAddr((VkInstance)context, name); +} + +static PFN_vkVoidFunction vkGetDeviceProcAddrStub(void* context, const char* name) +{ + return vkGetDeviceProcAddr((VkDevice)context, name); +} + +VkResult volkInitialize(void) +{ +#if defined(_WIN32) + HMODULE module = LoadLibraryA("vulkan-1.dll"); + if (!module) + return VK_ERROR_INITIALIZATION_FAILED; + + // note: function pointer is cast through void function pointer to silence cast-function-type warning on gcc8 + vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)(void(*)(void))GetProcAddress(module, "vkGetInstanceProcAddr"); +#elif defined(__APPLE__) + void* module = dlopen("libvulkan.dylib", RTLD_NOW | RTLD_LOCAL); + if (!module) + module = dlopen("libvulkan.1.dylib", RTLD_NOW | RTLD_LOCAL); + if (!module) + module = dlopen("libMoltenVK.dylib", RTLD_NOW | RTLD_LOCAL); + if (!module) + return VK_ERROR_INITIALIZATION_FAILED; + + vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)dlsym(module, "vkGetInstanceProcAddr"); +#else + void* module = dlopen("libvulkan.so.1", RTLD_NOW | RTLD_LOCAL); + if (!module) + module = dlopen("libvulkan.so", RTLD_NOW | RTLD_LOCAL); + if (!module) + return VK_ERROR_INITIALIZATION_FAILED; + + vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)dlsym(module, "vkGetInstanceProcAddr"); +#endif + + volkGenLoadLoader(NULL, vkGetInstanceProcAddrStub); + + return VK_SUCCESS; +} + +void volkInitializeCustom(PFN_vkGetInstanceProcAddr handler) +{ + vkGetInstanceProcAddr = handler; + + volkGenLoadLoader(NULL, vkGetInstanceProcAddrStub); +} + +uint32_t volkGetInstanceVersion(void) +{ +#if defined(VK_VERSION_1_1) + uint32_t apiVersion = 0; + if (vkEnumerateInstanceVersion && vkEnumerateInstanceVersion(&apiVersion) == VK_SUCCESS) + return apiVersion; +#endif + + if (vkCreateInstance) + return VK_API_VERSION_1_0; + + return 0; +} + +void volkLoadInstance(VkInstance instance) +{ + loadedInstance = instance; + volkGenLoadInstance(instance, vkGetInstanceProcAddrStub); + volkGenLoadDevice(instance, vkGetInstanceProcAddrStub); +} + +void volkLoadInstanceOnly(VkInstance instance) +{ + loadedInstance = instance; + volkGenLoadInstance(instance, vkGetInstanceProcAddrStub); +} + +VkInstance volkGetLoadedInstance() +{ + return loadedInstance; +} + +void volkLoadDevice(VkDevice device) +{ + loadedDevice = device; + volkGenLoadDevice(device, vkGetDeviceProcAddrStub); +} + +VkDevice volkGetLoadedDevice() +{ + return loadedDevice; +} + +void volkLoadDeviceTable(struct VolkDeviceTable* table, VkDevice device) +{ + volkGenLoadDeviceTable(table, device, vkGetDeviceProcAddrStub); +} + +static void volkGenLoadLoader(void* context, PFN_vkVoidFunction (*load)(void*, const char*)) +{ + /* VOLK_GENERATE_LOAD_LOADER */ +#if defined(VK_VERSION_1_0) + vkCreateInstance = (PFN_vkCreateInstance)load(context, "vkCreateInstance"); + vkEnumerateInstanceExtensionProperties = (PFN_vkEnumerateInstanceExtensionProperties)load(context, "vkEnumerateInstanceExtensionProperties"); + vkEnumerateInstanceLayerProperties = (PFN_vkEnumerateInstanceLayerProperties)load(context, "vkEnumerateInstanceLayerProperties"); +#endif /* defined(VK_VERSION_1_0) */ +#if defined(VK_VERSION_1_1) + vkEnumerateInstanceVersion = (PFN_vkEnumerateInstanceVersion)load(context, "vkEnumerateInstanceVersion"); +#endif /* defined(VK_VERSION_1_1) */ + /* VOLK_GENERATE_LOAD_LOADER */ +} + +static void volkGenLoadInstance(void* context, PFN_vkVoidFunction (*load)(void*, const char*)) +{ + /* VOLK_GENERATE_LOAD_INSTANCE */ +#if defined(VK_VERSION_1_0) + vkCreateDevice = (PFN_vkCreateDevice)load(context, "vkCreateDevice"); + vkDestroyInstance = (PFN_vkDestroyInstance)load(context, "vkDestroyInstance"); + vkEnumerateDeviceExtensionProperties = (PFN_vkEnumerateDeviceExtensionProperties)load(context, "vkEnumerateDeviceExtensionProperties"); + vkEnumerateDeviceLayerProperties = (PFN_vkEnumerateDeviceLayerProperties)load(context, "vkEnumerateDeviceLayerProperties"); + vkEnumeratePhysicalDevices = (PFN_vkEnumeratePhysicalDevices)load(context, "vkEnumeratePhysicalDevices"); + vkGetDeviceProcAddr = (PFN_vkGetDeviceProcAddr)load(context, "vkGetDeviceProcAddr"); + vkGetPhysicalDeviceFeatures = (PFN_vkGetPhysicalDeviceFeatures)load(context, "vkGetPhysicalDeviceFeatures"); + vkGetPhysicalDeviceFormatProperties = (PFN_vkGetPhysicalDeviceFormatProperties)load(context, "vkGetPhysicalDeviceFormatProperties"); + vkGetPhysicalDeviceImageFormatProperties = (PFN_vkGetPhysicalDeviceImageFormatProperties)load(context, "vkGetPhysicalDeviceImageFormatProperties"); + vkGetPhysicalDeviceMemoryProperties = (PFN_vkGetPhysicalDeviceMemoryProperties)load(context, "vkGetPhysicalDeviceMemoryProperties"); + vkGetPhysicalDeviceProperties = (PFN_vkGetPhysicalDeviceProperties)load(context, "vkGetPhysicalDeviceProperties"); + vkGetPhysicalDeviceQueueFamilyProperties = (PFN_vkGetPhysicalDeviceQueueFamilyProperties)load(context, "vkGetPhysicalDeviceQueueFamilyProperties"); + vkGetPhysicalDeviceSparseImageFormatProperties = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties)load(context, "vkGetPhysicalDeviceSparseImageFormatProperties"); +#endif /* defined(VK_VERSION_1_0) */ +#if defined(VK_VERSION_1_1) + vkEnumeratePhysicalDeviceGroups = (PFN_vkEnumeratePhysicalDeviceGroups)load(context, "vkEnumeratePhysicalDeviceGroups"); + vkGetPhysicalDeviceExternalBufferProperties = (PFN_vkGetPhysicalDeviceExternalBufferProperties)load(context, "vkGetPhysicalDeviceExternalBufferProperties"); + vkGetPhysicalDeviceExternalFenceProperties = (PFN_vkGetPhysicalDeviceExternalFenceProperties)load(context, "vkGetPhysicalDeviceExternalFenceProperties"); + vkGetPhysicalDeviceExternalSemaphoreProperties = (PFN_vkGetPhysicalDeviceExternalSemaphoreProperties)load(context, "vkGetPhysicalDeviceExternalSemaphoreProperties"); + vkGetPhysicalDeviceFeatures2 = (PFN_vkGetPhysicalDeviceFeatures2)load(context, "vkGetPhysicalDeviceFeatures2"); + vkGetPhysicalDeviceFormatProperties2 = (PFN_vkGetPhysicalDeviceFormatProperties2)load(context, "vkGetPhysicalDeviceFormatProperties2"); + vkGetPhysicalDeviceImageFormatProperties2 = (PFN_vkGetPhysicalDeviceImageFormatProperties2)load(context, "vkGetPhysicalDeviceImageFormatProperties2"); + vkGetPhysicalDeviceMemoryProperties2 = (PFN_vkGetPhysicalDeviceMemoryProperties2)load(context, "vkGetPhysicalDeviceMemoryProperties2"); + vkGetPhysicalDeviceProperties2 = (PFN_vkGetPhysicalDeviceProperties2)load(context, "vkGetPhysicalDeviceProperties2"); + vkGetPhysicalDeviceQueueFamilyProperties2 = (PFN_vkGetPhysicalDeviceQueueFamilyProperties2)load(context, "vkGetPhysicalDeviceQueueFamilyProperties2"); + vkGetPhysicalDeviceSparseImageFormatProperties2 = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)load(context, "vkGetPhysicalDeviceSparseImageFormatProperties2"); +#endif /* defined(VK_VERSION_1_1) */ +#if defined(VK_EXT_acquire_xlib_display) + vkAcquireXlibDisplayEXT = (PFN_vkAcquireXlibDisplayEXT)load(context, "vkAcquireXlibDisplayEXT"); + vkGetRandROutputDisplayEXT = (PFN_vkGetRandROutputDisplayEXT)load(context, "vkGetRandROutputDisplayEXT"); +#endif /* defined(VK_EXT_acquire_xlib_display) */ +#if defined(VK_EXT_calibrated_timestamps) + vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = (PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)load(context, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"); +#endif /* defined(VK_EXT_calibrated_timestamps) */ +#if defined(VK_EXT_debug_report) + vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)load(context, "vkCreateDebugReportCallbackEXT"); + vkDebugReportMessageEXT = (PFN_vkDebugReportMessageEXT)load(context, "vkDebugReportMessageEXT"); + vkDestroyDebugReportCallbackEXT = (PFN_vkDestroyDebugReportCallbackEXT)load(context, "vkDestroyDebugReportCallbackEXT"); +#endif /* defined(VK_EXT_debug_report) */ +#if defined(VK_EXT_debug_utils) + vkCmdBeginDebugUtilsLabelEXT = (PFN_vkCmdBeginDebugUtilsLabelEXT)load(context, "vkCmdBeginDebugUtilsLabelEXT"); + vkCmdEndDebugUtilsLabelEXT = (PFN_vkCmdEndDebugUtilsLabelEXT)load(context, "vkCmdEndDebugUtilsLabelEXT"); + vkCmdInsertDebugUtilsLabelEXT = (PFN_vkCmdInsertDebugUtilsLabelEXT)load(context, "vkCmdInsertDebugUtilsLabelEXT"); + vkCreateDebugUtilsMessengerEXT = (PFN_vkCreateDebugUtilsMessengerEXT)load(context, "vkCreateDebugUtilsMessengerEXT"); + vkDestroyDebugUtilsMessengerEXT = (PFN_vkDestroyDebugUtilsMessengerEXT)load(context, "vkDestroyDebugUtilsMessengerEXT"); + vkQueueBeginDebugUtilsLabelEXT = (PFN_vkQueueBeginDebugUtilsLabelEXT)load(context, "vkQueueBeginDebugUtilsLabelEXT"); + vkQueueEndDebugUtilsLabelEXT = (PFN_vkQueueEndDebugUtilsLabelEXT)load(context, "vkQueueEndDebugUtilsLabelEXT"); + vkQueueInsertDebugUtilsLabelEXT = (PFN_vkQueueInsertDebugUtilsLabelEXT)load(context, "vkQueueInsertDebugUtilsLabelEXT"); + vkSetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT)load(context, "vkSetDebugUtilsObjectNameEXT"); + vkSetDebugUtilsObjectTagEXT = (PFN_vkSetDebugUtilsObjectTagEXT)load(context, "vkSetDebugUtilsObjectTagEXT"); + vkSubmitDebugUtilsMessageEXT = (PFN_vkSubmitDebugUtilsMessageEXT)load(context, "vkSubmitDebugUtilsMessageEXT"); +#endif /* defined(VK_EXT_debug_utils) */ +#if defined(VK_EXT_direct_mode_display) + vkReleaseDisplayEXT = (PFN_vkReleaseDisplayEXT)load(context, "vkReleaseDisplayEXT"); +#endif /* defined(VK_EXT_direct_mode_display) */ +#if defined(VK_EXT_directfb_surface) + vkCreateDirectFBSurfaceEXT = (PFN_vkCreateDirectFBSurfaceEXT)load(context, "vkCreateDirectFBSurfaceEXT"); + vkGetPhysicalDeviceDirectFBPresentationSupportEXT = (PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT)load(context, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"); +#endif /* defined(VK_EXT_directfb_surface) */ +#if defined(VK_EXT_display_surface_counter) + vkGetPhysicalDeviceSurfaceCapabilities2EXT = (PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)load(context, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"); +#endif /* defined(VK_EXT_display_surface_counter) */ +#if defined(VK_EXT_full_screen_exclusive) + vkGetPhysicalDeviceSurfacePresentModes2EXT = (PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT)load(context, "vkGetPhysicalDeviceSurfacePresentModes2EXT"); +#endif /* defined(VK_EXT_full_screen_exclusive) */ +#if defined(VK_EXT_headless_surface) + vkCreateHeadlessSurfaceEXT = (PFN_vkCreateHeadlessSurfaceEXT)load(context, "vkCreateHeadlessSurfaceEXT"); +#endif /* defined(VK_EXT_headless_surface) */ +#if defined(VK_EXT_metal_surface) + vkCreateMetalSurfaceEXT = (PFN_vkCreateMetalSurfaceEXT)load(context, "vkCreateMetalSurfaceEXT"); +#endif /* defined(VK_EXT_metal_surface) */ +#if defined(VK_EXT_sample_locations) + vkGetPhysicalDeviceMultisamplePropertiesEXT = (PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)load(context, "vkGetPhysicalDeviceMultisamplePropertiesEXT"); +#endif /* defined(VK_EXT_sample_locations) */ +#if defined(VK_EXT_tooling_info) + vkGetPhysicalDeviceToolPropertiesEXT = (PFN_vkGetPhysicalDeviceToolPropertiesEXT)load(context, "vkGetPhysicalDeviceToolPropertiesEXT"); +#endif /* defined(VK_EXT_tooling_info) */ +#if defined(VK_FUCHSIA_imagepipe_surface) + vkCreateImagePipeSurfaceFUCHSIA = (PFN_vkCreateImagePipeSurfaceFUCHSIA)load(context, "vkCreateImagePipeSurfaceFUCHSIA"); +#endif /* defined(VK_FUCHSIA_imagepipe_surface) */ +#if defined(VK_GGP_stream_descriptor_surface) + vkCreateStreamDescriptorSurfaceGGP = (PFN_vkCreateStreamDescriptorSurfaceGGP)load(context, "vkCreateStreamDescriptorSurfaceGGP"); +#endif /* defined(VK_GGP_stream_descriptor_surface) */ +#if defined(VK_KHR_android_surface) + vkCreateAndroidSurfaceKHR = (PFN_vkCreateAndroidSurfaceKHR)load(context, "vkCreateAndroidSurfaceKHR"); +#endif /* defined(VK_KHR_android_surface) */ +#if defined(VK_KHR_device_group_creation) + vkEnumeratePhysicalDeviceGroupsKHR = (PFN_vkEnumeratePhysicalDeviceGroupsKHR)load(context, "vkEnumeratePhysicalDeviceGroupsKHR"); +#endif /* defined(VK_KHR_device_group_creation) */ +#if defined(VK_KHR_display) + vkCreateDisplayModeKHR = (PFN_vkCreateDisplayModeKHR)load(context, "vkCreateDisplayModeKHR"); + vkCreateDisplayPlaneSurfaceKHR = (PFN_vkCreateDisplayPlaneSurfaceKHR)load(context, "vkCreateDisplayPlaneSurfaceKHR"); + vkGetDisplayModePropertiesKHR = (PFN_vkGetDisplayModePropertiesKHR)load(context, "vkGetDisplayModePropertiesKHR"); + vkGetDisplayPlaneCapabilitiesKHR = (PFN_vkGetDisplayPlaneCapabilitiesKHR)load(context, "vkGetDisplayPlaneCapabilitiesKHR"); + vkGetDisplayPlaneSupportedDisplaysKHR = (PFN_vkGetDisplayPlaneSupportedDisplaysKHR)load(context, "vkGetDisplayPlaneSupportedDisplaysKHR"); + vkGetPhysicalDeviceDisplayPlanePropertiesKHR = (PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)load(context, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"); + vkGetPhysicalDeviceDisplayPropertiesKHR = (PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)load(context, "vkGetPhysicalDeviceDisplayPropertiesKHR"); +#endif /* defined(VK_KHR_display) */ +#if defined(VK_KHR_external_fence_capabilities) + vkGetPhysicalDeviceExternalFencePropertiesKHR = (PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR)load(context, "vkGetPhysicalDeviceExternalFencePropertiesKHR"); +#endif /* defined(VK_KHR_external_fence_capabilities) */ +#if defined(VK_KHR_external_memory_capabilities) + vkGetPhysicalDeviceExternalBufferPropertiesKHR = (PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR)load(context, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"); +#endif /* defined(VK_KHR_external_memory_capabilities) */ +#if defined(VK_KHR_external_semaphore_capabilities) + vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = (PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR)load(context, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"); +#endif /* defined(VK_KHR_external_semaphore_capabilities) */ +#if defined(VK_KHR_get_display_properties2) + vkGetDisplayModeProperties2KHR = (PFN_vkGetDisplayModeProperties2KHR)load(context, "vkGetDisplayModeProperties2KHR"); + vkGetDisplayPlaneCapabilities2KHR = (PFN_vkGetDisplayPlaneCapabilities2KHR)load(context, "vkGetDisplayPlaneCapabilities2KHR"); + vkGetPhysicalDeviceDisplayPlaneProperties2KHR = (PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR)load(context, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"); + vkGetPhysicalDeviceDisplayProperties2KHR = (PFN_vkGetPhysicalDeviceDisplayProperties2KHR)load(context, "vkGetPhysicalDeviceDisplayProperties2KHR"); +#endif /* defined(VK_KHR_get_display_properties2) */ +#if defined(VK_KHR_get_physical_device_properties2) + vkGetPhysicalDeviceFeatures2KHR = (PFN_vkGetPhysicalDeviceFeatures2KHR)load(context, "vkGetPhysicalDeviceFeatures2KHR"); + vkGetPhysicalDeviceFormatProperties2KHR = (PFN_vkGetPhysicalDeviceFormatProperties2KHR)load(context, "vkGetPhysicalDeviceFormatProperties2KHR"); + vkGetPhysicalDeviceImageFormatProperties2KHR = (PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)load(context, "vkGetPhysicalDeviceImageFormatProperties2KHR"); + vkGetPhysicalDeviceMemoryProperties2KHR = (PFN_vkGetPhysicalDeviceMemoryProperties2KHR)load(context, "vkGetPhysicalDeviceMemoryProperties2KHR"); + vkGetPhysicalDeviceProperties2KHR = (PFN_vkGetPhysicalDeviceProperties2KHR)load(context, "vkGetPhysicalDeviceProperties2KHR"); + vkGetPhysicalDeviceQueueFamilyProperties2KHR = (PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)load(context, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"); + vkGetPhysicalDeviceSparseImageFormatProperties2KHR = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)load(context, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"); +#endif /* defined(VK_KHR_get_physical_device_properties2) */ +#if defined(VK_KHR_get_surface_capabilities2) + vkGetPhysicalDeviceSurfaceCapabilities2KHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)load(context, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"); + vkGetPhysicalDeviceSurfaceFormats2KHR = (PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)load(context, "vkGetPhysicalDeviceSurfaceFormats2KHR"); +#endif /* defined(VK_KHR_get_surface_capabilities2) */ +#if defined(VK_KHR_performance_query) + vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = (PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR)load(context, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"); + vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = (PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR)load(context, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"); +#endif /* defined(VK_KHR_performance_query) */ +#if defined(VK_KHR_surface) + vkDestroySurfaceKHR = (PFN_vkDestroySurfaceKHR)load(context, "vkDestroySurfaceKHR"); + vkGetPhysicalDeviceSurfaceCapabilitiesKHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)load(context, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"); + vkGetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)load(context, "vkGetPhysicalDeviceSurfaceFormatsKHR"); + vkGetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)load(context, "vkGetPhysicalDeviceSurfacePresentModesKHR"); + vkGetPhysicalDeviceSurfaceSupportKHR = (PFN_vkGetPhysicalDeviceSurfaceSupportKHR)load(context, "vkGetPhysicalDeviceSurfaceSupportKHR"); +#endif /* defined(VK_KHR_surface) */ +#if defined(VK_KHR_wayland_surface) + vkCreateWaylandSurfaceKHR = (PFN_vkCreateWaylandSurfaceKHR)load(context, "vkCreateWaylandSurfaceKHR"); + vkGetPhysicalDeviceWaylandPresentationSupportKHR = (PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)load(context, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"); +#endif /* defined(VK_KHR_wayland_surface) */ +#if defined(VK_KHR_win32_surface) + vkCreateWin32SurfaceKHR = (PFN_vkCreateWin32SurfaceKHR)load(context, "vkCreateWin32SurfaceKHR"); + vkGetPhysicalDeviceWin32PresentationSupportKHR = (PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)load(context, "vkGetPhysicalDeviceWin32PresentationSupportKHR"); +#endif /* defined(VK_KHR_win32_surface) */ +#if defined(VK_KHR_xcb_surface) + vkCreateXcbSurfaceKHR = (PFN_vkCreateXcbSurfaceKHR)load(context, "vkCreateXcbSurfaceKHR"); + vkGetPhysicalDeviceXcbPresentationSupportKHR = (PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)load(context, "vkGetPhysicalDeviceXcbPresentationSupportKHR"); +#endif /* defined(VK_KHR_xcb_surface) */ +#if defined(VK_KHR_xlib_surface) + vkCreateXlibSurfaceKHR = (PFN_vkCreateXlibSurfaceKHR)load(context, "vkCreateXlibSurfaceKHR"); + vkGetPhysicalDeviceXlibPresentationSupportKHR = (PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)load(context, "vkGetPhysicalDeviceXlibPresentationSupportKHR"); +#endif /* defined(VK_KHR_xlib_surface) */ +#if defined(VK_MVK_ios_surface) + vkCreateIOSSurfaceMVK = (PFN_vkCreateIOSSurfaceMVK)load(context, "vkCreateIOSSurfaceMVK"); +#endif /* defined(VK_MVK_ios_surface) */ +#if defined(VK_MVK_macos_surface) + vkCreateMacOSSurfaceMVK = (PFN_vkCreateMacOSSurfaceMVK)load(context, "vkCreateMacOSSurfaceMVK"); +#endif /* defined(VK_MVK_macos_surface) */ +#if defined(VK_NN_vi_surface) + vkCreateViSurfaceNN = (PFN_vkCreateViSurfaceNN)load(context, "vkCreateViSurfaceNN"); +#endif /* defined(VK_NN_vi_surface) */ +#if defined(VK_NV_cooperative_matrix) + vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = (PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV)load(context, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"); +#endif /* defined(VK_NV_cooperative_matrix) */ +#if defined(VK_NV_coverage_reduction_mode) + vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = (PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV)load(context, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"); +#endif /* defined(VK_NV_coverage_reduction_mode) */ +#if defined(VK_NV_external_memory_capabilities) + vkGetPhysicalDeviceExternalImageFormatPropertiesNV = (PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)load(context, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"); +#endif /* defined(VK_NV_external_memory_capabilities) */ +#if (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) + vkGetPhysicalDevicePresentRectanglesKHR = (PFN_vkGetPhysicalDevicePresentRectanglesKHR)load(context, "vkGetPhysicalDevicePresentRectanglesKHR"); +#endif /* (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) */ + /* VOLK_GENERATE_LOAD_INSTANCE */ +} + +static void volkGenLoadDevice(void* context, PFN_vkVoidFunction (*load)(void*, const char*)) +{ + /* VOLK_GENERATE_LOAD_DEVICE */ +#if defined(VK_VERSION_1_0) + vkAllocateCommandBuffers = (PFN_vkAllocateCommandBuffers)load(context, "vkAllocateCommandBuffers"); + vkAllocateDescriptorSets = (PFN_vkAllocateDescriptorSets)load(context, "vkAllocateDescriptorSets"); + vkAllocateMemory = (PFN_vkAllocateMemory)load(context, "vkAllocateMemory"); + vkBeginCommandBuffer = (PFN_vkBeginCommandBuffer)load(context, "vkBeginCommandBuffer"); + vkBindBufferMemory = (PFN_vkBindBufferMemory)load(context, "vkBindBufferMemory"); + vkBindImageMemory = (PFN_vkBindImageMemory)load(context, "vkBindImageMemory"); + vkCmdBeginQuery = (PFN_vkCmdBeginQuery)load(context, "vkCmdBeginQuery"); + vkCmdBeginRenderPass = (PFN_vkCmdBeginRenderPass)load(context, "vkCmdBeginRenderPass"); + vkCmdBindDescriptorSets = (PFN_vkCmdBindDescriptorSets)load(context, "vkCmdBindDescriptorSets"); + vkCmdBindIndexBuffer = (PFN_vkCmdBindIndexBuffer)load(context, "vkCmdBindIndexBuffer"); + vkCmdBindPipeline = (PFN_vkCmdBindPipeline)load(context, "vkCmdBindPipeline"); + vkCmdBindVertexBuffers = (PFN_vkCmdBindVertexBuffers)load(context, "vkCmdBindVertexBuffers"); + vkCmdBlitImage = (PFN_vkCmdBlitImage)load(context, "vkCmdBlitImage"); + vkCmdClearAttachments = (PFN_vkCmdClearAttachments)load(context, "vkCmdClearAttachments"); + vkCmdClearColorImage = (PFN_vkCmdClearColorImage)load(context, "vkCmdClearColorImage"); + vkCmdClearDepthStencilImage = (PFN_vkCmdClearDepthStencilImage)load(context, "vkCmdClearDepthStencilImage"); + vkCmdCopyBuffer = (PFN_vkCmdCopyBuffer)load(context, "vkCmdCopyBuffer"); + vkCmdCopyBufferToImage = (PFN_vkCmdCopyBufferToImage)load(context, "vkCmdCopyBufferToImage"); + vkCmdCopyImage = (PFN_vkCmdCopyImage)load(context, "vkCmdCopyImage"); + vkCmdCopyImageToBuffer = (PFN_vkCmdCopyImageToBuffer)load(context, "vkCmdCopyImageToBuffer"); + vkCmdCopyQueryPoolResults = (PFN_vkCmdCopyQueryPoolResults)load(context, "vkCmdCopyQueryPoolResults"); + vkCmdDispatch = (PFN_vkCmdDispatch)load(context, "vkCmdDispatch"); + vkCmdDispatchIndirect = (PFN_vkCmdDispatchIndirect)load(context, "vkCmdDispatchIndirect"); + vkCmdDraw = (PFN_vkCmdDraw)load(context, "vkCmdDraw"); + vkCmdDrawIndexed = (PFN_vkCmdDrawIndexed)load(context, "vkCmdDrawIndexed"); + vkCmdDrawIndexedIndirect = (PFN_vkCmdDrawIndexedIndirect)load(context, "vkCmdDrawIndexedIndirect"); + vkCmdDrawIndirect = (PFN_vkCmdDrawIndirect)load(context, "vkCmdDrawIndirect"); + vkCmdEndQuery = (PFN_vkCmdEndQuery)load(context, "vkCmdEndQuery"); + vkCmdEndRenderPass = (PFN_vkCmdEndRenderPass)load(context, "vkCmdEndRenderPass"); + vkCmdExecuteCommands = (PFN_vkCmdExecuteCommands)load(context, "vkCmdExecuteCommands"); + vkCmdFillBuffer = (PFN_vkCmdFillBuffer)load(context, "vkCmdFillBuffer"); + vkCmdNextSubpass = (PFN_vkCmdNextSubpass)load(context, "vkCmdNextSubpass"); + vkCmdPipelineBarrier = (PFN_vkCmdPipelineBarrier)load(context, "vkCmdPipelineBarrier"); + vkCmdPushConstants = (PFN_vkCmdPushConstants)load(context, "vkCmdPushConstants"); + vkCmdResetEvent = (PFN_vkCmdResetEvent)load(context, "vkCmdResetEvent"); + vkCmdResetQueryPool = (PFN_vkCmdResetQueryPool)load(context, "vkCmdResetQueryPool"); + vkCmdResolveImage = (PFN_vkCmdResolveImage)load(context, "vkCmdResolveImage"); + vkCmdSetBlendConstants = (PFN_vkCmdSetBlendConstants)load(context, "vkCmdSetBlendConstants"); + vkCmdSetDepthBias = (PFN_vkCmdSetDepthBias)load(context, "vkCmdSetDepthBias"); + vkCmdSetDepthBounds = (PFN_vkCmdSetDepthBounds)load(context, "vkCmdSetDepthBounds"); + vkCmdSetEvent = (PFN_vkCmdSetEvent)load(context, "vkCmdSetEvent"); + vkCmdSetLineWidth = (PFN_vkCmdSetLineWidth)load(context, "vkCmdSetLineWidth"); + vkCmdSetScissor = (PFN_vkCmdSetScissor)load(context, "vkCmdSetScissor"); + vkCmdSetStencilCompareMask = (PFN_vkCmdSetStencilCompareMask)load(context, "vkCmdSetStencilCompareMask"); + vkCmdSetStencilReference = (PFN_vkCmdSetStencilReference)load(context, "vkCmdSetStencilReference"); + vkCmdSetStencilWriteMask = (PFN_vkCmdSetStencilWriteMask)load(context, "vkCmdSetStencilWriteMask"); + vkCmdSetViewport = (PFN_vkCmdSetViewport)load(context, "vkCmdSetViewport"); + vkCmdUpdateBuffer = (PFN_vkCmdUpdateBuffer)load(context, "vkCmdUpdateBuffer"); + vkCmdWaitEvents = (PFN_vkCmdWaitEvents)load(context, "vkCmdWaitEvents"); + vkCmdWriteTimestamp = (PFN_vkCmdWriteTimestamp)load(context, "vkCmdWriteTimestamp"); + vkCreateBuffer = (PFN_vkCreateBuffer)load(context, "vkCreateBuffer"); + vkCreateBufferView = (PFN_vkCreateBufferView)load(context, "vkCreateBufferView"); + vkCreateCommandPool = (PFN_vkCreateCommandPool)load(context, "vkCreateCommandPool"); + vkCreateComputePipelines = (PFN_vkCreateComputePipelines)load(context, "vkCreateComputePipelines"); + vkCreateDescriptorPool = (PFN_vkCreateDescriptorPool)load(context, "vkCreateDescriptorPool"); + vkCreateDescriptorSetLayout = (PFN_vkCreateDescriptorSetLayout)load(context, "vkCreateDescriptorSetLayout"); + vkCreateEvent = (PFN_vkCreateEvent)load(context, "vkCreateEvent"); + vkCreateFence = (PFN_vkCreateFence)load(context, "vkCreateFence"); + vkCreateFramebuffer = (PFN_vkCreateFramebuffer)load(context, "vkCreateFramebuffer"); + vkCreateGraphicsPipelines = (PFN_vkCreateGraphicsPipelines)load(context, "vkCreateGraphicsPipelines"); + vkCreateImage = (PFN_vkCreateImage)load(context, "vkCreateImage"); + vkCreateImageView = (PFN_vkCreateImageView)load(context, "vkCreateImageView"); + vkCreatePipelineCache = (PFN_vkCreatePipelineCache)load(context, "vkCreatePipelineCache"); + vkCreatePipelineLayout = (PFN_vkCreatePipelineLayout)load(context, "vkCreatePipelineLayout"); + vkCreateQueryPool = (PFN_vkCreateQueryPool)load(context, "vkCreateQueryPool"); + vkCreateRenderPass = (PFN_vkCreateRenderPass)load(context, "vkCreateRenderPass"); + vkCreateSampler = (PFN_vkCreateSampler)load(context, "vkCreateSampler"); + vkCreateSemaphore = (PFN_vkCreateSemaphore)load(context, "vkCreateSemaphore"); + vkCreateShaderModule = (PFN_vkCreateShaderModule)load(context, "vkCreateShaderModule"); + vkDestroyBuffer = (PFN_vkDestroyBuffer)load(context, "vkDestroyBuffer"); + vkDestroyBufferView = (PFN_vkDestroyBufferView)load(context, "vkDestroyBufferView"); + vkDestroyCommandPool = (PFN_vkDestroyCommandPool)load(context, "vkDestroyCommandPool"); + vkDestroyDescriptorPool = (PFN_vkDestroyDescriptorPool)load(context, "vkDestroyDescriptorPool"); + vkDestroyDescriptorSetLayout = (PFN_vkDestroyDescriptorSetLayout)load(context, "vkDestroyDescriptorSetLayout"); + vkDestroyDevice = (PFN_vkDestroyDevice)load(context, "vkDestroyDevice"); + vkDestroyEvent = (PFN_vkDestroyEvent)load(context, "vkDestroyEvent"); + vkDestroyFence = (PFN_vkDestroyFence)load(context, "vkDestroyFence"); + vkDestroyFramebuffer = (PFN_vkDestroyFramebuffer)load(context, "vkDestroyFramebuffer"); + vkDestroyImage = (PFN_vkDestroyImage)load(context, "vkDestroyImage"); + vkDestroyImageView = (PFN_vkDestroyImageView)load(context, "vkDestroyImageView"); + vkDestroyPipeline = (PFN_vkDestroyPipeline)load(context, "vkDestroyPipeline"); + vkDestroyPipelineCache = (PFN_vkDestroyPipelineCache)load(context, "vkDestroyPipelineCache"); + vkDestroyPipelineLayout = (PFN_vkDestroyPipelineLayout)load(context, "vkDestroyPipelineLayout"); + vkDestroyQueryPool = (PFN_vkDestroyQueryPool)load(context, "vkDestroyQueryPool"); + vkDestroyRenderPass = (PFN_vkDestroyRenderPass)load(context, "vkDestroyRenderPass"); + vkDestroySampler = (PFN_vkDestroySampler)load(context, "vkDestroySampler"); + vkDestroySemaphore = (PFN_vkDestroySemaphore)load(context, "vkDestroySemaphore"); + vkDestroyShaderModule = (PFN_vkDestroyShaderModule)load(context, "vkDestroyShaderModule"); + vkDeviceWaitIdle = (PFN_vkDeviceWaitIdle)load(context, "vkDeviceWaitIdle"); + vkEndCommandBuffer = (PFN_vkEndCommandBuffer)load(context, "vkEndCommandBuffer"); + vkFlushMappedMemoryRanges = (PFN_vkFlushMappedMemoryRanges)load(context, "vkFlushMappedMemoryRanges"); + vkFreeCommandBuffers = (PFN_vkFreeCommandBuffers)load(context, "vkFreeCommandBuffers"); + vkFreeDescriptorSets = (PFN_vkFreeDescriptorSets)load(context, "vkFreeDescriptorSets"); + vkFreeMemory = (PFN_vkFreeMemory)load(context, "vkFreeMemory"); + vkGetBufferMemoryRequirements = (PFN_vkGetBufferMemoryRequirements)load(context, "vkGetBufferMemoryRequirements"); + vkGetDeviceMemoryCommitment = (PFN_vkGetDeviceMemoryCommitment)load(context, "vkGetDeviceMemoryCommitment"); + vkGetDeviceQueue = (PFN_vkGetDeviceQueue)load(context, "vkGetDeviceQueue"); + vkGetEventStatus = (PFN_vkGetEventStatus)load(context, "vkGetEventStatus"); + vkGetFenceStatus = (PFN_vkGetFenceStatus)load(context, "vkGetFenceStatus"); + vkGetImageMemoryRequirements = (PFN_vkGetImageMemoryRequirements)load(context, "vkGetImageMemoryRequirements"); + vkGetImageSparseMemoryRequirements = (PFN_vkGetImageSparseMemoryRequirements)load(context, "vkGetImageSparseMemoryRequirements"); + vkGetImageSubresourceLayout = (PFN_vkGetImageSubresourceLayout)load(context, "vkGetImageSubresourceLayout"); + vkGetPipelineCacheData = (PFN_vkGetPipelineCacheData)load(context, "vkGetPipelineCacheData"); + vkGetQueryPoolResults = (PFN_vkGetQueryPoolResults)load(context, "vkGetQueryPoolResults"); + vkGetRenderAreaGranularity = (PFN_vkGetRenderAreaGranularity)load(context, "vkGetRenderAreaGranularity"); + vkInvalidateMappedMemoryRanges = (PFN_vkInvalidateMappedMemoryRanges)load(context, "vkInvalidateMappedMemoryRanges"); + vkMapMemory = (PFN_vkMapMemory)load(context, "vkMapMemory"); + vkMergePipelineCaches = (PFN_vkMergePipelineCaches)load(context, "vkMergePipelineCaches"); + vkQueueBindSparse = (PFN_vkQueueBindSparse)load(context, "vkQueueBindSparse"); + vkQueueSubmit = (PFN_vkQueueSubmit)load(context, "vkQueueSubmit"); + vkQueueWaitIdle = (PFN_vkQueueWaitIdle)load(context, "vkQueueWaitIdle"); + vkResetCommandBuffer = (PFN_vkResetCommandBuffer)load(context, "vkResetCommandBuffer"); + vkResetCommandPool = (PFN_vkResetCommandPool)load(context, "vkResetCommandPool"); + vkResetDescriptorPool = (PFN_vkResetDescriptorPool)load(context, "vkResetDescriptorPool"); + vkResetEvent = (PFN_vkResetEvent)load(context, "vkResetEvent"); + vkResetFences = (PFN_vkResetFences)load(context, "vkResetFences"); + vkSetEvent = (PFN_vkSetEvent)load(context, "vkSetEvent"); + vkUnmapMemory = (PFN_vkUnmapMemory)load(context, "vkUnmapMemory"); + vkUpdateDescriptorSets = (PFN_vkUpdateDescriptorSets)load(context, "vkUpdateDescriptorSets"); + vkWaitForFences = (PFN_vkWaitForFences)load(context, "vkWaitForFences"); +#endif /* defined(VK_VERSION_1_0) */ +#if defined(VK_VERSION_1_1) + vkBindBufferMemory2 = (PFN_vkBindBufferMemory2)load(context, "vkBindBufferMemory2"); + vkBindImageMemory2 = (PFN_vkBindImageMemory2)load(context, "vkBindImageMemory2"); + vkCmdDispatchBase = (PFN_vkCmdDispatchBase)load(context, "vkCmdDispatchBase"); + vkCmdSetDeviceMask = (PFN_vkCmdSetDeviceMask)load(context, "vkCmdSetDeviceMask"); + vkCreateDescriptorUpdateTemplate = (PFN_vkCreateDescriptorUpdateTemplate)load(context, "vkCreateDescriptorUpdateTemplate"); + vkCreateSamplerYcbcrConversion = (PFN_vkCreateSamplerYcbcrConversion)load(context, "vkCreateSamplerYcbcrConversion"); + vkDestroyDescriptorUpdateTemplate = (PFN_vkDestroyDescriptorUpdateTemplate)load(context, "vkDestroyDescriptorUpdateTemplate"); + vkDestroySamplerYcbcrConversion = (PFN_vkDestroySamplerYcbcrConversion)load(context, "vkDestroySamplerYcbcrConversion"); + vkGetBufferMemoryRequirements2 = (PFN_vkGetBufferMemoryRequirements2)load(context, "vkGetBufferMemoryRequirements2"); + vkGetDescriptorSetLayoutSupport = (PFN_vkGetDescriptorSetLayoutSupport)load(context, "vkGetDescriptorSetLayoutSupport"); + vkGetDeviceGroupPeerMemoryFeatures = (PFN_vkGetDeviceGroupPeerMemoryFeatures)load(context, "vkGetDeviceGroupPeerMemoryFeatures"); + vkGetDeviceQueue2 = (PFN_vkGetDeviceQueue2)load(context, "vkGetDeviceQueue2"); + vkGetImageMemoryRequirements2 = (PFN_vkGetImageMemoryRequirements2)load(context, "vkGetImageMemoryRequirements2"); + vkGetImageSparseMemoryRequirements2 = (PFN_vkGetImageSparseMemoryRequirements2)load(context, "vkGetImageSparseMemoryRequirements2"); + vkTrimCommandPool = (PFN_vkTrimCommandPool)load(context, "vkTrimCommandPool"); + vkUpdateDescriptorSetWithTemplate = (PFN_vkUpdateDescriptorSetWithTemplate)load(context, "vkUpdateDescriptorSetWithTemplate"); +#endif /* defined(VK_VERSION_1_1) */ +#if defined(VK_VERSION_1_2) + vkCmdBeginRenderPass2 = (PFN_vkCmdBeginRenderPass2)load(context, "vkCmdBeginRenderPass2"); + vkCmdDrawIndexedIndirectCount = (PFN_vkCmdDrawIndexedIndirectCount)load(context, "vkCmdDrawIndexedIndirectCount"); + vkCmdDrawIndirectCount = (PFN_vkCmdDrawIndirectCount)load(context, "vkCmdDrawIndirectCount"); + vkCmdEndRenderPass2 = (PFN_vkCmdEndRenderPass2)load(context, "vkCmdEndRenderPass2"); + vkCmdNextSubpass2 = (PFN_vkCmdNextSubpass2)load(context, "vkCmdNextSubpass2"); + vkCreateRenderPass2 = (PFN_vkCreateRenderPass2)load(context, "vkCreateRenderPass2"); + vkGetBufferDeviceAddress = (PFN_vkGetBufferDeviceAddress)load(context, "vkGetBufferDeviceAddress"); + vkGetBufferOpaqueCaptureAddress = (PFN_vkGetBufferOpaqueCaptureAddress)load(context, "vkGetBufferOpaqueCaptureAddress"); + vkGetDeviceMemoryOpaqueCaptureAddress = (PFN_vkGetDeviceMemoryOpaqueCaptureAddress)load(context, "vkGetDeviceMemoryOpaqueCaptureAddress"); + vkGetSemaphoreCounterValue = (PFN_vkGetSemaphoreCounterValue)load(context, "vkGetSemaphoreCounterValue"); + vkResetQueryPool = (PFN_vkResetQueryPool)load(context, "vkResetQueryPool"); + vkSignalSemaphore = (PFN_vkSignalSemaphore)load(context, "vkSignalSemaphore"); + vkWaitSemaphores = (PFN_vkWaitSemaphores)load(context, "vkWaitSemaphores"); +#endif /* defined(VK_VERSION_1_2) */ +#if defined(VK_AMD_buffer_marker) + vkCmdWriteBufferMarkerAMD = (PFN_vkCmdWriteBufferMarkerAMD)load(context, "vkCmdWriteBufferMarkerAMD"); +#endif /* defined(VK_AMD_buffer_marker) */ +#if defined(VK_AMD_display_native_hdr) + vkSetLocalDimmingAMD = (PFN_vkSetLocalDimmingAMD)load(context, "vkSetLocalDimmingAMD"); +#endif /* defined(VK_AMD_display_native_hdr) */ +#if defined(VK_AMD_draw_indirect_count) + vkCmdDrawIndexedIndirectCountAMD = (PFN_vkCmdDrawIndexedIndirectCountAMD)load(context, "vkCmdDrawIndexedIndirectCountAMD"); + vkCmdDrawIndirectCountAMD = (PFN_vkCmdDrawIndirectCountAMD)load(context, "vkCmdDrawIndirectCountAMD"); +#endif /* defined(VK_AMD_draw_indirect_count) */ +#if defined(VK_AMD_shader_info) + vkGetShaderInfoAMD = (PFN_vkGetShaderInfoAMD)load(context, "vkGetShaderInfoAMD"); +#endif /* defined(VK_AMD_shader_info) */ +#if defined(VK_ANDROID_external_memory_android_hardware_buffer) + vkGetAndroidHardwareBufferPropertiesANDROID = (PFN_vkGetAndroidHardwareBufferPropertiesANDROID)load(context, "vkGetAndroidHardwareBufferPropertiesANDROID"); + vkGetMemoryAndroidHardwareBufferANDROID = (PFN_vkGetMemoryAndroidHardwareBufferANDROID)load(context, "vkGetMemoryAndroidHardwareBufferANDROID"); +#endif /* defined(VK_ANDROID_external_memory_android_hardware_buffer) */ +#if defined(VK_EXT_buffer_device_address) + vkGetBufferDeviceAddressEXT = (PFN_vkGetBufferDeviceAddressEXT)load(context, "vkGetBufferDeviceAddressEXT"); +#endif /* defined(VK_EXT_buffer_device_address) */ +#if defined(VK_EXT_calibrated_timestamps) + vkGetCalibratedTimestampsEXT = (PFN_vkGetCalibratedTimestampsEXT)load(context, "vkGetCalibratedTimestampsEXT"); +#endif /* defined(VK_EXT_calibrated_timestamps) */ +#if defined(VK_EXT_conditional_rendering) + vkCmdBeginConditionalRenderingEXT = (PFN_vkCmdBeginConditionalRenderingEXT)load(context, "vkCmdBeginConditionalRenderingEXT"); + vkCmdEndConditionalRenderingEXT = (PFN_vkCmdEndConditionalRenderingEXT)load(context, "vkCmdEndConditionalRenderingEXT"); +#endif /* defined(VK_EXT_conditional_rendering) */ +#if defined(VK_EXT_debug_marker) + vkCmdDebugMarkerBeginEXT = (PFN_vkCmdDebugMarkerBeginEXT)load(context, "vkCmdDebugMarkerBeginEXT"); + vkCmdDebugMarkerEndEXT = (PFN_vkCmdDebugMarkerEndEXT)load(context, "vkCmdDebugMarkerEndEXT"); + vkCmdDebugMarkerInsertEXT = (PFN_vkCmdDebugMarkerInsertEXT)load(context, "vkCmdDebugMarkerInsertEXT"); + vkDebugMarkerSetObjectNameEXT = (PFN_vkDebugMarkerSetObjectNameEXT)load(context, "vkDebugMarkerSetObjectNameEXT"); + vkDebugMarkerSetObjectTagEXT = (PFN_vkDebugMarkerSetObjectTagEXT)load(context, "vkDebugMarkerSetObjectTagEXT"); +#endif /* defined(VK_EXT_debug_marker) */ +#if defined(VK_EXT_discard_rectangles) + vkCmdSetDiscardRectangleEXT = (PFN_vkCmdSetDiscardRectangleEXT)load(context, "vkCmdSetDiscardRectangleEXT"); +#endif /* defined(VK_EXT_discard_rectangles) */ +#if defined(VK_EXT_display_control) + vkDisplayPowerControlEXT = (PFN_vkDisplayPowerControlEXT)load(context, "vkDisplayPowerControlEXT"); + vkGetSwapchainCounterEXT = (PFN_vkGetSwapchainCounterEXT)load(context, "vkGetSwapchainCounterEXT"); + vkRegisterDeviceEventEXT = (PFN_vkRegisterDeviceEventEXT)load(context, "vkRegisterDeviceEventEXT"); + vkRegisterDisplayEventEXT = (PFN_vkRegisterDisplayEventEXT)load(context, "vkRegisterDisplayEventEXT"); +#endif /* defined(VK_EXT_display_control) */ +#if defined(VK_EXT_extended_dynamic_state) + vkCmdBindVertexBuffers2EXT = (PFN_vkCmdBindVertexBuffers2EXT)load(context, "vkCmdBindVertexBuffers2EXT"); + vkCmdSetCullModeEXT = (PFN_vkCmdSetCullModeEXT)load(context, "vkCmdSetCullModeEXT"); + vkCmdSetDepthBoundsTestEnableEXT = (PFN_vkCmdSetDepthBoundsTestEnableEXT)load(context, "vkCmdSetDepthBoundsTestEnableEXT"); + vkCmdSetDepthCompareOpEXT = (PFN_vkCmdSetDepthCompareOpEXT)load(context, "vkCmdSetDepthCompareOpEXT"); + vkCmdSetDepthTestEnableEXT = (PFN_vkCmdSetDepthTestEnableEXT)load(context, "vkCmdSetDepthTestEnableEXT"); + vkCmdSetDepthWriteEnableEXT = (PFN_vkCmdSetDepthWriteEnableEXT)load(context, "vkCmdSetDepthWriteEnableEXT"); + vkCmdSetFrontFaceEXT = (PFN_vkCmdSetFrontFaceEXT)load(context, "vkCmdSetFrontFaceEXT"); + vkCmdSetPrimitiveTopologyEXT = (PFN_vkCmdSetPrimitiveTopologyEXT)load(context, "vkCmdSetPrimitiveTopologyEXT"); + vkCmdSetScissorWithCountEXT = (PFN_vkCmdSetScissorWithCountEXT)load(context, "vkCmdSetScissorWithCountEXT"); + vkCmdSetStencilOpEXT = (PFN_vkCmdSetStencilOpEXT)load(context, "vkCmdSetStencilOpEXT"); + vkCmdSetStencilTestEnableEXT = (PFN_vkCmdSetStencilTestEnableEXT)load(context, "vkCmdSetStencilTestEnableEXT"); + vkCmdSetViewportWithCountEXT = (PFN_vkCmdSetViewportWithCountEXT)load(context, "vkCmdSetViewportWithCountEXT"); +#endif /* defined(VK_EXT_extended_dynamic_state) */ +#if defined(VK_EXT_external_memory_host) + vkGetMemoryHostPointerPropertiesEXT = (PFN_vkGetMemoryHostPointerPropertiesEXT)load(context, "vkGetMemoryHostPointerPropertiesEXT"); +#endif /* defined(VK_EXT_external_memory_host) */ +#if defined(VK_EXT_full_screen_exclusive) + vkAcquireFullScreenExclusiveModeEXT = (PFN_vkAcquireFullScreenExclusiveModeEXT)load(context, "vkAcquireFullScreenExclusiveModeEXT"); + vkReleaseFullScreenExclusiveModeEXT = (PFN_vkReleaseFullScreenExclusiveModeEXT)load(context, "vkReleaseFullScreenExclusiveModeEXT"); +#endif /* defined(VK_EXT_full_screen_exclusive) */ +#if defined(VK_EXT_hdr_metadata) + vkSetHdrMetadataEXT = (PFN_vkSetHdrMetadataEXT)load(context, "vkSetHdrMetadataEXT"); +#endif /* defined(VK_EXT_hdr_metadata) */ +#if defined(VK_EXT_host_query_reset) + vkResetQueryPoolEXT = (PFN_vkResetQueryPoolEXT)load(context, "vkResetQueryPoolEXT"); +#endif /* defined(VK_EXT_host_query_reset) */ +#if defined(VK_EXT_image_drm_format_modifier) + vkGetImageDrmFormatModifierPropertiesEXT = (PFN_vkGetImageDrmFormatModifierPropertiesEXT)load(context, "vkGetImageDrmFormatModifierPropertiesEXT"); +#endif /* defined(VK_EXT_image_drm_format_modifier) */ +#if defined(VK_EXT_line_rasterization) + vkCmdSetLineStippleEXT = (PFN_vkCmdSetLineStippleEXT)load(context, "vkCmdSetLineStippleEXT"); +#endif /* defined(VK_EXT_line_rasterization) */ +#if defined(VK_EXT_private_data) + vkCreatePrivateDataSlotEXT = (PFN_vkCreatePrivateDataSlotEXT)load(context, "vkCreatePrivateDataSlotEXT"); + vkDestroyPrivateDataSlotEXT = (PFN_vkDestroyPrivateDataSlotEXT)load(context, "vkDestroyPrivateDataSlotEXT"); + vkGetPrivateDataEXT = (PFN_vkGetPrivateDataEXT)load(context, "vkGetPrivateDataEXT"); + vkSetPrivateDataEXT = (PFN_vkSetPrivateDataEXT)load(context, "vkSetPrivateDataEXT"); +#endif /* defined(VK_EXT_private_data) */ +#if defined(VK_EXT_sample_locations) + vkCmdSetSampleLocationsEXT = (PFN_vkCmdSetSampleLocationsEXT)load(context, "vkCmdSetSampleLocationsEXT"); +#endif /* defined(VK_EXT_sample_locations) */ +#if defined(VK_EXT_transform_feedback) + vkCmdBeginQueryIndexedEXT = (PFN_vkCmdBeginQueryIndexedEXT)load(context, "vkCmdBeginQueryIndexedEXT"); + vkCmdBeginTransformFeedbackEXT = (PFN_vkCmdBeginTransformFeedbackEXT)load(context, "vkCmdBeginTransformFeedbackEXT"); + vkCmdBindTransformFeedbackBuffersEXT = (PFN_vkCmdBindTransformFeedbackBuffersEXT)load(context, "vkCmdBindTransformFeedbackBuffersEXT"); + vkCmdDrawIndirectByteCountEXT = (PFN_vkCmdDrawIndirectByteCountEXT)load(context, "vkCmdDrawIndirectByteCountEXT"); + vkCmdEndQueryIndexedEXT = (PFN_vkCmdEndQueryIndexedEXT)load(context, "vkCmdEndQueryIndexedEXT"); + vkCmdEndTransformFeedbackEXT = (PFN_vkCmdEndTransformFeedbackEXT)load(context, "vkCmdEndTransformFeedbackEXT"); +#endif /* defined(VK_EXT_transform_feedback) */ +#if defined(VK_EXT_validation_cache) + vkCreateValidationCacheEXT = (PFN_vkCreateValidationCacheEXT)load(context, "vkCreateValidationCacheEXT"); + vkDestroyValidationCacheEXT = (PFN_vkDestroyValidationCacheEXT)load(context, "vkDestroyValidationCacheEXT"); + vkGetValidationCacheDataEXT = (PFN_vkGetValidationCacheDataEXT)load(context, "vkGetValidationCacheDataEXT"); + vkMergeValidationCachesEXT = (PFN_vkMergeValidationCachesEXT)load(context, "vkMergeValidationCachesEXT"); +#endif /* defined(VK_EXT_validation_cache) */ +#if defined(VK_GOOGLE_display_timing) + vkGetPastPresentationTimingGOOGLE = (PFN_vkGetPastPresentationTimingGOOGLE)load(context, "vkGetPastPresentationTimingGOOGLE"); + vkGetRefreshCycleDurationGOOGLE = (PFN_vkGetRefreshCycleDurationGOOGLE)load(context, "vkGetRefreshCycleDurationGOOGLE"); +#endif /* defined(VK_GOOGLE_display_timing) */ +#if defined(VK_INTEL_performance_query) + vkAcquirePerformanceConfigurationINTEL = (PFN_vkAcquirePerformanceConfigurationINTEL)load(context, "vkAcquirePerformanceConfigurationINTEL"); + vkCmdSetPerformanceMarkerINTEL = (PFN_vkCmdSetPerformanceMarkerINTEL)load(context, "vkCmdSetPerformanceMarkerINTEL"); + vkCmdSetPerformanceOverrideINTEL = (PFN_vkCmdSetPerformanceOverrideINTEL)load(context, "vkCmdSetPerformanceOverrideINTEL"); + vkCmdSetPerformanceStreamMarkerINTEL = (PFN_vkCmdSetPerformanceStreamMarkerINTEL)load(context, "vkCmdSetPerformanceStreamMarkerINTEL"); + vkGetPerformanceParameterINTEL = (PFN_vkGetPerformanceParameterINTEL)load(context, "vkGetPerformanceParameterINTEL"); + vkInitializePerformanceApiINTEL = (PFN_vkInitializePerformanceApiINTEL)load(context, "vkInitializePerformanceApiINTEL"); + vkQueueSetPerformanceConfigurationINTEL = (PFN_vkQueueSetPerformanceConfigurationINTEL)load(context, "vkQueueSetPerformanceConfigurationINTEL"); + vkReleasePerformanceConfigurationINTEL = (PFN_vkReleasePerformanceConfigurationINTEL)load(context, "vkReleasePerformanceConfigurationINTEL"); + vkUninitializePerformanceApiINTEL = (PFN_vkUninitializePerformanceApiINTEL)load(context, "vkUninitializePerformanceApiINTEL"); +#endif /* defined(VK_INTEL_performance_query) */ +#if defined(VK_KHR_bind_memory2) + vkBindBufferMemory2KHR = (PFN_vkBindBufferMemory2KHR)load(context, "vkBindBufferMemory2KHR"); + vkBindImageMemory2KHR = (PFN_vkBindImageMemory2KHR)load(context, "vkBindImageMemory2KHR"); +#endif /* defined(VK_KHR_bind_memory2) */ +#if defined(VK_KHR_buffer_device_address) + vkGetBufferDeviceAddressKHR = (PFN_vkGetBufferDeviceAddressKHR)load(context, "vkGetBufferDeviceAddressKHR"); + vkGetBufferOpaqueCaptureAddressKHR = (PFN_vkGetBufferOpaqueCaptureAddressKHR)load(context, "vkGetBufferOpaqueCaptureAddressKHR"); + vkGetDeviceMemoryOpaqueCaptureAddressKHR = (PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)load(context, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"); +#endif /* defined(VK_KHR_buffer_device_address) */ +#if defined(VK_KHR_copy_commands2) + vkCmdBlitImage2KHR = (PFN_vkCmdBlitImage2KHR)load(context, "vkCmdBlitImage2KHR"); + vkCmdCopyBuffer2KHR = (PFN_vkCmdCopyBuffer2KHR)load(context, "vkCmdCopyBuffer2KHR"); + vkCmdCopyBufferToImage2KHR = (PFN_vkCmdCopyBufferToImage2KHR)load(context, "vkCmdCopyBufferToImage2KHR"); + vkCmdCopyImage2KHR = (PFN_vkCmdCopyImage2KHR)load(context, "vkCmdCopyImage2KHR"); + vkCmdCopyImageToBuffer2KHR = (PFN_vkCmdCopyImageToBuffer2KHR)load(context, "vkCmdCopyImageToBuffer2KHR"); + vkCmdResolveImage2KHR = (PFN_vkCmdResolveImage2KHR)load(context, "vkCmdResolveImage2KHR"); +#endif /* defined(VK_KHR_copy_commands2) */ +#if defined(VK_KHR_create_renderpass2) + vkCmdBeginRenderPass2KHR = (PFN_vkCmdBeginRenderPass2KHR)load(context, "vkCmdBeginRenderPass2KHR"); + vkCmdEndRenderPass2KHR = (PFN_vkCmdEndRenderPass2KHR)load(context, "vkCmdEndRenderPass2KHR"); + vkCmdNextSubpass2KHR = (PFN_vkCmdNextSubpass2KHR)load(context, "vkCmdNextSubpass2KHR"); + vkCreateRenderPass2KHR = (PFN_vkCreateRenderPass2KHR)load(context, "vkCreateRenderPass2KHR"); +#endif /* defined(VK_KHR_create_renderpass2) */ +#if defined(VK_KHR_deferred_host_operations) + vkCreateDeferredOperationKHR = (PFN_vkCreateDeferredOperationKHR)load(context, "vkCreateDeferredOperationKHR"); + vkDeferredOperationJoinKHR = (PFN_vkDeferredOperationJoinKHR)load(context, "vkDeferredOperationJoinKHR"); + vkDestroyDeferredOperationKHR = (PFN_vkDestroyDeferredOperationKHR)load(context, "vkDestroyDeferredOperationKHR"); + vkGetDeferredOperationMaxConcurrencyKHR = (PFN_vkGetDeferredOperationMaxConcurrencyKHR)load(context, "vkGetDeferredOperationMaxConcurrencyKHR"); + vkGetDeferredOperationResultKHR = (PFN_vkGetDeferredOperationResultKHR)load(context, "vkGetDeferredOperationResultKHR"); +#endif /* defined(VK_KHR_deferred_host_operations) */ +#if defined(VK_KHR_descriptor_update_template) + vkCreateDescriptorUpdateTemplateKHR = (PFN_vkCreateDescriptorUpdateTemplateKHR)load(context, "vkCreateDescriptorUpdateTemplateKHR"); + vkDestroyDescriptorUpdateTemplateKHR = (PFN_vkDestroyDescriptorUpdateTemplateKHR)load(context, "vkDestroyDescriptorUpdateTemplateKHR"); + vkUpdateDescriptorSetWithTemplateKHR = (PFN_vkUpdateDescriptorSetWithTemplateKHR)load(context, "vkUpdateDescriptorSetWithTemplateKHR"); +#endif /* defined(VK_KHR_descriptor_update_template) */ +#if defined(VK_KHR_device_group) + vkCmdDispatchBaseKHR = (PFN_vkCmdDispatchBaseKHR)load(context, "vkCmdDispatchBaseKHR"); + vkCmdSetDeviceMaskKHR = (PFN_vkCmdSetDeviceMaskKHR)load(context, "vkCmdSetDeviceMaskKHR"); + vkGetDeviceGroupPeerMemoryFeaturesKHR = (PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR)load(context, "vkGetDeviceGroupPeerMemoryFeaturesKHR"); +#endif /* defined(VK_KHR_device_group) */ +#if defined(VK_KHR_display_swapchain) + vkCreateSharedSwapchainsKHR = (PFN_vkCreateSharedSwapchainsKHR)load(context, "vkCreateSharedSwapchainsKHR"); +#endif /* defined(VK_KHR_display_swapchain) */ +#if defined(VK_KHR_draw_indirect_count) + vkCmdDrawIndexedIndirectCountKHR = (PFN_vkCmdDrawIndexedIndirectCountKHR)load(context, "vkCmdDrawIndexedIndirectCountKHR"); + vkCmdDrawIndirectCountKHR = (PFN_vkCmdDrawIndirectCountKHR)load(context, "vkCmdDrawIndirectCountKHR"); +#endif /* defined(VK_KHR_draw_indirect_count) */ +#if defined(VK_KHR_external_fence_fd) + vkGetFenceFdKHR = (PFN_vkGetFenceFdKHR)load(context, "vkGetFenceFdKHR"); + vkImportFenceFdKHR = (PFN_vkImportFenceFdKHR)load(context, "vkImportFenceFdKHR"); +#endif /* defined(VK_KHR_external_fence_fd) */ +#if defined(VK_KHR_external_fence_win32) + vkGetFenceWin32HandleKHR = (PFN_vkGetFenceWin32HandleKHR)load(context, "vkGetFenceWin32HandleKHR"); + vkImportFenceWin32HandleKHR = (PFN_vkImportFenceWin32HandleKHR)load(context, "vkImportFenceWin32HandleKHR"); +#endif /* defined(VK_KHR_external_fence_win32) */ +#if defined(VK_KHR_external_memory_fd) + vkGetMemoryFdKHR = (PFN_vkGetMemoryFdKHR)load(context, "vkGetMemoryFdKHR"); + vkGetMemoryFdPropertiesKHR = (PFN_vkGetMemoryFdPropertiesKHR)load(context, "vkGetMemoryFdPropertiesKHR"); +#endif /* defined(VK_KHR_external_memory_fd) */ +#if defined(VK_KHR_external_memory_win32) + vkGetMemoryWin32HandleKHR = (PFN_vkGetMemoryWin32HandleKHR)load(context, "vkGetMemoryWin32HandleKHR"); + vkGetMemoryWin32HandlePropertiesKHR = (PFN_vkGetMemoryWin32HandlePropertiesKHR)load(context, "vkGetMemoryWin32HandlePropertiesKHR"); +#endif /* defined(VK_KHR_external_memory_win32) */ +#if defined(VK_KHR_external_semaphore_fd) + vkGetSemaphoreFdKHR = (PFN_vkGetSemaphoreFdKHR)load(context, "vkGetSemaphoreFdKHR"); + vkImportSemaphoreFdKHR = (PFN_vkImportSemaphoreFdKHR)load(context, "vkImportSemaphoreFdKHR"); +#endif /* defined(VK_KHR_external_semaphore_fd) */ +#if defined(VK_KHR_external_semaphore_win32) + vkGetSemaphoreWin32HandleKHR = (PFN_vkGetSemaphoreWin32HandleKHR)load(context, "vkGetSemaphoreWin32HandleKHR"); + vkImportSemaphoreWin32HandleKHR = (PFN_vkImportSemaphoreWin32HandleKHR)load(context, "vkImportSemaphoreWin32HandleKHR"); +#endif /* defined(VK_KHR_external_semaphore_win32) */ +#if defined(VK_KHR_get_memory_requirements2) + vkGetBufferMemoryRequirements2KHR = (PFN_vkGetBufferMemoryRequirements2KHR)load(context, "vkGetBufferMemoryRequirements2KHR"); + vkGetImageMemoryRequirements2KHR = (PFN_vkGetImageMemoryRequirements2KHR)load(context, "vkGetImageMemoryRequirements2KHR"); + vkGetImageSparseMemoryRequirements2KHR = (PFN_vkGetImageSparseMemoryRequirements2KHR)load(context, "vkGetImageSparseMemoryRequirements2KHR"); +#endif /* defined(VK_KHR_get_memory_requirements2) */ +#if defined(VK_KHR_maintenance1) + vkTrimCommandPoolKHR = (PFN_vkTrimCommandPoolKHR)load(context, "vkTrimCommandPoolKHR"); +#endif /* defined(VK_KHR_maintenance1) */ +#if defined(VK_KHR_maintenance3) + vkGetDescriptorSetLayoutSupportKHR = (PFN_vkGetDescriptorSetLayoutSupportKHR)load(context, "vkGetDescriptorSetLayoutSupportKHR"); +#endif /* defined(VK_KHR_maintenance3) */ +#if defined(VK_KHR_performance_query) + vkAcquireProfilingLockKHR = (PFN_vkAcquireProfilingLockKHR)load(context, "vkAcquireProfilingLockKHR"); + vkReleaseProfilingLockKHR = (PFN_vkReleaseProfilingLockKHR)load(context, "vkReleaseProfilingLockKHR"); +#endif /* defined(VK_KHR_performance_query) */ +#if defined(VK_KHR_pipeline_executable_properties) + vkGetPipelineExecutableInternalRepresentationsKHR = (PFN_vkGetPipelineExecutableInternalRepresentationsKHR)load(context, "vkGetPipelineExecutableInternalRepresentationsKHR"); + vkGetPipelineExecutablePropertiesKHR = (PFN_vkGetPipelineExecutablePropertiesKHR)load(context, "vkGetPipelineExecutablePropertiesKHR"); + vkGetPipelineExecutableStatisticsKHR = (PFN_vkGetPipelineExecutableStatisticsKHR)load(context, "vkGetPipelineExecutableStatisticsKHR"); +#endif /* defined(VK_KHR_pipeline_executable_properties) */ +#if defined(VK_KHR_push_descriptor) + vkCmdPushDescriptorSetKHR = (PFN_vkCmdPushDescriptorSetKHR)load(context, "vkCmdPushDescriptorSetKHR"); +#endif /* defined(VK_KHR_push_descriptor) */ +#if defined(VK_KHR_ray_tracing) + vkBindAccelerationStructureMemoryKHR = (PFN_vkBindAccelerationStructureMemoryKHR)load(context, "vkBindAccelerationStructureMemoryKHR"); + vkBuildAccelerationStructureKHR = (PFN_vkBuildAccelerationStructureKHR)load(context, "vkBuildAccelerationStructureKHR"); + vkCmdBuildAccelerationStructureIndirectKHR = (PFN_vkCmdBuildAccelerationStructureIndirectKHR)load(context, "vkCmdBuildAccelerationStructureIndirectKHR"); + vkCmdBuildAccelerationStructureKHR = (PFN_vkCmdBuildAccelerationStructureKHR)load(context, "vkCmdBuildAccelerationStructureKHR"); + vkCmdCopyAccelerationStructureKHR = (PFN_vkCmdCopyAccelerationStructureKHR)load(context, "vkCmdCopyAccelerationStructureKHR"); + vkCmdCopyAccelerationStructureToMemoryKHR = (PFN_vkCmdCopyAccelerationStructureToMemoryKHR)load(context, "vkCmdCopyAccelerationStructureToMemoryKHR"); + vkCmdCopyMemoryToAccelerationStructureKHR = (PFN_vkCmdCopyMemoryToAccelerationStructureKHR)load(context, "vkCmdCopyMemoryToAccelerationStructureKHR"); + vkCmdTraceRaysIndirectKHR = (PFN_vkCmdTraceRaysIndirectKHR)load(context, "vkCmdTraceRaysIndirectKHR"); + vkCmdTraceRaysKHR = (PFN_vkCmdTraceRaysKHR)load(context, "vkCmdTraceRaysKHR"); + vkCmdWriteAccelerationStructuresPropertiesKHR = (PFN_vkCmdWriteAccelerationStructuresPropertiesKHR)load(context, "vkCmdWriteAccelerationStructuresPropertiesKHR"); + vkCopyAccelerationStructureKHR = (PFN_vkCopyAccelerationStructureKHR)load(context, "vkCopyAccelerationStructureKHR"); + vkCopyAccelerationStructureToMemoryKHR = (PFN_vkCopyAccelerationStructureToMemoryKHR)load(context, "vkCopyAccelerationStructureToMemoryKHR"); + vkCopyMemoryToAccelerationStructureKHR = (PFN_vkCopyMemoryToAccelerationStructureKHR)load(context, "vkCopyMemoryToAccelerationStructureKHR"); + vkCreateAccelerationStructureKHR = (PFN_vkCreateAccelerationStructureKHR)load(context, "vkCreateAccelerationStructureKHR"); + vkCreateRayTracingPipelinesKHR = (PFN_vkCreateRayTracingPipelinesKHR)load(context, "vkCreateRayTracingPipelinesKHR"); + vkDestroyAccelerationStructureKHR = (PFN_vkDestroyAccelerationStructureKHR)load(context, "vkDestroyAccelerationStructureKHR"); + vkGetAccelerationStructureDeviceAddressKHR = (PFN_vkGetAccelerationStructureDeviceAddressKHR)load(context, "vkGetAccelerationStructureDeviceAddressKHR"); + vkGetAccelerationStructureMemoryRequirementsKHR = (PFN_vkGetAccelerationStructureMemoryRequirementsKHR)load(context, "vkGetAccelerationStructureMemoryRequirementsKHR"); + vkGetDeviceAccelerationStructureCompatibilityKHR = (PFN_vkGetDeviceAccelerationStructureCompatibilityKHR)load(context, "vkGetDeviceAccelerationStructureCompatibilityKHR"); + vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = (PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)load(context, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"); + vkGetRayTracingShaderGroupHandlesKHR = (PFN_vkGetRayTracingShaderGroupHandlesKHR)load(context, "vkGetRayTracingShaderGroupHandlesKHR"); + vkWriteAccelerationStructuresPropertiesKHR = (PFN_vkWriteAccelerationStructuresPropertiesKHR)load(context, "vkWriteAccelerationStructuresPropertiesKHR"); +#endif /* defined(VK_KHR_ray_tracing) */ +#if defined(VK_KHR_sampler_ycbcr_conversion) + vkCreateSamplerYcbcrConversionKHR = (PFN_vkCreateSamplerYcbcrConversionKHR)load(context, "vkCreateSamplerYcbcrConversionKHR"); + vkDestroySamplerYcbcrConversionKHR = (PFN_vkDestroySamplerYcbcrConversionKHR)load(context, "vkDestroySamplerYcbcrConversionKHR"); +#endif /* defined(VK_KHR_sampler_ycbcr_conversion) */ +#if defined(VK_KHR_shared_presentable_image) + vkGetSwapchainStatusKHR = (PFN_vkGetSwapchainStatusKHR)load(context, "vkGetSwapchainStatusKHR"); +#endif /* defined(VK_KHR_shared_presentable_image) */ +#if defined(VK_KHR_swapchain) + vkAcquireNextImageKHR = (PFN_vkAcquireNextImageKHR)load(context, "vkAcquireNextImageKHR"); + vkCreateSwapchainKHR = (PFN_vkCreateSwapchainKHR)load(context, "vkCreateSwapchainKHR"); + vkDestroySwapchainKHR = (PFN_vkDestroySwapchainKHR)load(context, "vkDestroySwapchainKHR"); + vkGetSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR)load(context, "vkGetSwapchainImagesKHR"); + vkQueuePresentKHR = (PFN_vkQueuePresentKHR)load(context, "vkQueuePresentKHR"); +#endif /* defined(VK_KHR_swapchain) */ +#if defined(VK_KHR_timeline_semaphore) + vkGetSemaphoreCounterValueKHR = (PFN_vkGetSemaphoreCounterValueKHR)load(context, "vkGetSemaphoreCounterValueKHR"); + vkSignalSemaphoreKHR = (PFN_vkSignalSemaphoreKHR)load(context, "vkSignalSemaphoreKHR"); + vkWaitSemaphoresKHR = (PFN_vkWaitSemaphoresKHR)load(context, "vkWaitSemaphoresKHR"); +#endif /* defined(VK_KHR_timeline_semaphore) */ +#if defined(VK_NVX_image_view_handle) + vkGetImageViewAddressNVX = (PFN_vkGetImageViewAddressNVX)load(context, "vkGetImageViewAddressNVX"); + vkGetImageViewHandleNVX = (PFN_vkGetImageViewHandleNVX)load(context, "vkGetImageViewHandleNVX"); +#endif /* defined(VK_NVX_image_view_handle) */ +#if defined(VK_NV_clip_space_w_scaling) + vkCmdSetViewportWScalingNV = (PFN_vkCmdSetViewportWScalingNV)load(context, "vkCmdSetViewportWScalingNV"); +#endif /* defined(VK_NV_clip_space_w_scaling) */ +#if defined(VK_NV_device_diagnostic_checkpoints) + vkCmdSetCheckpointNV = (PFN_vkCmdSetCheckpointNV)load(context, "vkCmdSetCheckpointNV"); + vkGetQueueCheckpointDataNV = (PFN_vkGetQueueCheckpointDataNV)load(context, "vkGetQueueCheckpointDataNV"); +#endif /* defined(VK_NV_device_diagnostic_checkpoints) */ +#if defined(VK_NV_device_generated_commands) + vkCmdBindPipelineShaderGroupNV = (PFN_vkCmdBindPipelineShaderGroupNV)load(context, "vkCmdBindPipelineShaderGroupNV"); + vkCmdExecuteGeneratedCommandsNV = (PFN_vkCmdExecuteGeneratedCommandsNV)load(context, "vkCmdExecuteGeneratedCommandsNV"); + vkCmdPreprocessGeneratedCommandsNV = (PFN_vkCmdPreprocessGeneratedCommandsNV)load(context, "vkCmdPreprocessGeneratedCommandsNV"); + vkCreateIndirectCommandsLayoutNV = (PFN_vkCreateIndirectCommandsLayoutNV)load(context, "vkCreateIndirectCommandsLayoutNV"); + vkDestroyIndirectCommandsLayoutNV = (PFN_vkDestroyIndirectCommandsLayoutNV)load(context, "vkDestroyIndirectCommandsLayoutNV"); + vkGetGeneratedCommandsMemoryRequirementsNV = (PFN_vkGetGeneratedCommandsMemoryRequirementsNV)load(context, "vkGetGeneratedCommandsMemoryRequirementsNV"); +#endif /* defined(VK_NV_device_generated_commands) */ +#if defined(VK_NV_external_memory_win32) + vkGetMemoryWin32HandleNV = (PFN_vkGetMemoryWin32HandleNV)load(context, "vkGetMemoryWin32HandleNV"); +#endif /* defined(VK_NV_external_memory_win32) */ +#if defined(VK_NV_mesh_shader) + vkCmdDrawMeshTasksIndirectCountNV = (PFN_vkCmdDrawMeshTasksIndirectCountNV)load(context, "vkCmdDrawMeshTasksIndirectCountNV"); + vkCmdDrawMeshTasksIndirectNV = (PFN_vkCmdDrawMeshTasksIndirectNV)load(context, "vkCmdDrawMeshTasksIndirectNV"); + vkCmdDrawMeshTasksNV = (PFN_vkCmdDrawMeshTasksNV)load(context, "vkCmdDrawMeshTasksNV"); +#endif /* defined(VK_NV_mesh_shader) */ +#if defined(VK_NV_ray_tracing) + vkBindAccelerationStructureMemoryNV = (PFN_vkBindAccelerationStructureMemoryNV)load(context, "vkBindAccelerationStructureMemoryNV"); + vkCmdBuildAccelerationStructureNV = (PFN_vkCmdBuildAccelerationStructureNV)load(context, "vkCmdBuildAccelerationStructureNV"); + vkCmdCopyAccelerationStructureNV = (PFN_vkCmdCopyAccelerationStructureNV)load(context, "vkCmdCopyAccelerationStructureNV"); + vkCmdTraceRaysNV = (PFN_vkCmdTraceRaysNV)load(context, "vkCmdTraceRaysNV"); + vkCmdWriteAccelerationStructuresPropertiesNV = (PFN_vkCmdWriteAccelerationStructuresPropertiesNV)load(context, "vkCmdWriteAccelerationStructuresPropertiesNV"); + vkCompileDeferredNV = (PFN_vkCompileDeferredNV)load(context, "vkCompileDeferredNV"); + vkCreateAccelerationStructureNV = (PFN_vkCreateAccelerationStructureNV)load(context, "vkCreateAccelerationStructureNV"); + vkCreateRayTracingPipelinesNV = (PFN_vkCreateRayTracingPipelinesNV)load(context, "vkCreateRayTracingPipelinesNV"); + vkDestroyAccelerationStructureNV = (PFN_vkDestroyAccelerationStructureNV)load(context, "vkDestroyAccelerationStructureNV"); + vkGetAccelerationStructureHandleNV = (PFN_vkGetAccelerationStructureHandleNV)load(context, "vkGetAccelerationStructureHandleNV"); + vkGetAccelerationStructureMemoryRequirementsNV = (PFN_vkGetAccelerationStructureMemoryRequirementsNV)load(context, "vkGetAccelerationStructureMemoryRequirementsNV"); + vkGetRayTracingShaderGroupHandlesNV = (PFN_vkGetRayTracingShaderGroupHandlesNV)load(context, "vkGetRayTracingShaderGroupHandlesNV"); +#endif /* defined(VK_NV_ray_tracing) */ +#if defined(VK_NV_scissor_exclusive) + vkCmdSetExclusiveScissorNV = (PFN_vkCmdSetExclusiveScissorNV)load(context, "vkCmdSetExclusiveScissorNV"); +#endif /* defined(VK_NV_scissor_exclusive) */ +#if defined(VK_NV_shading_rate_image) + vkCmdBindShadingRateImageNV = (PFN_vkCmdBindShadingRateImageNV)load(context, "vkCmdBindShadingRateImageNV"); + vkCmdSetCoarseSampleOrderNV = (PFN_vkCmdSetCoarseSampleOrderNV)load(context, "vkCmdSetCoarseSampleOrderNV"); + vkCmdSetViewportShadingRatePaletteNV = (PFN_vkCmdSetViewportShadingRatePaletteNV)load(context, "vkCmdSetViewportShadingRatePaletteNV"); +#endif /* defined(VK_NV_shading_rate_image) */ +#if (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1)) + vkGetDeviceGroupSurfacePresentModes2EXT = (PFN_vkGetDeviceGroupSurfacePresentModes2EXT)load(context, "vkGetDeviceGroupSurfacePresentModes2EXT"); +#endif /* (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1)) */ +#if (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1)) || (defined(VK_KHR_push_descriptor) && defined(VK_KHR_descriptor_update_template)) + vkCmdPushDescriptorSetWithTemplateKHR = (PFN_vkCmdPushDescriptorSetWithTemplateKHR)load(context, "vkCmdPushDescriptorSetWithTemplateKHR"); +#endif /* (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1)) || (defined(VK_KHR_push_descriptor) && defined(VK_KHR_descriptor_update_template)) */ +#if (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) + vkGetDeviceGroupPresentCapabilitiesKHR = (PFN_vkGetDeviceGroupPresentCapabilitiesKHR)load(context, "vkGetDeviceGroupPresentCapabilitiesKHR"); + vkGetDeviceGroupSurfacePresentModesKHR = (PFN_vkGetDeviceGroupSurfacePresentModesKHR)load(context, "vkGetDeviceGroupSurfacePresentModesKHR"); +#endif /* (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) */ +#if (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) + vkAcquireNextImage2KHR = (PFN_vkAcquireNextImage2KHR)load(context, "vkAcquireNextImage2KHR"); +#endif /* (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) */ + /* VOLK_GENERATE_LOAD_DEVICE */ +} + +static void volkGenLoadDeviceTable(struct VolkDeviceTable* table, void* context, PFN_vkVoidFunction (*load)(void*, const char*)) +{ + /* VOLK_GENERATE_LOAD_DEVICE_TABLE */ +#if defined(VK_VERSION_1_0) + table->vkAllocateCommandBuffers = (PFN_vkAllocateCommandBuffers)load(context, "vkAllocateCommandBuffers"); + table->vkAllocateDescriptorSets = (PFN_vkAllocateDescriptorSets)load(context, "vkAllocateDescriptorSets"); + table->vkAllocateMemory = (PFN_vkAllocateMemory)load(context, "vkAllocateMemory"); + table->vkBeginCommandBuffer = (PFN_vkBeginCommandBuffer)load(context, "vkBeginCommandBuffer"); + table->vkBindBufferMemory = (PFN_vkBindBufferMemory)load(context, "vkBindBufferMemory"); + table->vkBindImageMemory = (PFN_vkBindImageMemory)load(context, "vkBindImageMemory"); + table->vkCmdBeginQuery = (PFN_vkCmdBeginQuery)load(context, "vkCmdBeginQuery"); + table->vkCmdBeginRenderPass = (PFN_vkCmdBeginRenderPass)load(context, "vkCmdBeginRenderPass"); + table->vkCmdBindDescriptorSets = (PFN_vkCmdBindDescriptorSets)load(context, "vkCmdBindDescriptorSets"); + table->vkCmdBindIndexBuffer = (PFN_vkCmdBindIndexBuffer)load(context, "vkCmdBindIndexBuffer"); + table->vkCmdBindPipeline = (PFN_vkCmdBindPipeline)load(context, "vkCmdBindPipeline"); + table->vkCmdBindVertexBuffers = (PFN_vkCmdBindVertexBuffers)load(context, "vkCmdBindVertexBuffers"); + table->vkCmdBlitImage = (PFN_vkCmdBlitImage)load(context, "vkCmdBlitImage"); + table->vkCmdClearAttachments = (PFN_vkCmdClearAttachments)load(context, "vkCmdClearAttachments"); + table->vkCmdClearColorImage = (PFN_vkCmdClearColorImage)load(context, "vkCmdClearColorImage"); + table->vkCmdClearDepthStencilImage = (PFN_vkCmdClearDepthStencilImage)load(context, "vkCmdClearDepthStencilImage"); + table->vkCmdCopyBuffer = (PFN_vkCmdCopyBuffer)load(context, "vkCmdCopyBuffer"); + table->vkCmdCopyBufferToImage = (PFN_vkCmdCopyBufferToImage)load(context, "vkCmdCopyBufferToImage"); + table->vkCmdCopyImage = (PFN_vkCmdCopyImage)load(context, "vkCmdCopyImage"); + table->vkCmdCopyImageToBuffer = (PFN_vkCmdCopyImageToBuffer)load(context, "vkCmdCopyImageToBuffer"); + table->vkCmdCopyQueryPoolResults = (PFN_vkCmdCopyQueryPoolResults)load(context, "vkCmdCopyQueryPoolResults"); + table->vkCmdDispatch = (PFN_vkCmdDispatch)load(context, "vkCmdDispatch"); + table->vkCmdDispatchIndirect = (PFN_vkCmdDispatchIndirect)load(context, "vkCmdDispatchIndirect"); + table->vkCmdDraw = (PFN_vkCmdDraw)load(context, "vkCmdDraw"); + table->vkCmdDrawIndexed = (PFN_vkCmdDrawIndexed)load(context, "vkCmdDrawIndexed"); + table->vkCmdDrawIndexedIndirect = (PFN_vkCmdDrawIndexedIndirect)load(context, "vkCmdDrawIndexedIndirect"); + table->vkCmdDrawIndirect = (PFN_vkCmdDrawIndirect)load(context, "vkCmdDrawIndirect"); + table->vkCmdEndQuery = (PFN_vkCmdEndQuery)load(context, "vkCmdEndQuery"); + table->vkCmdEndRenderPass = (PFN_vkCmdEndRenderPass)load(context, "vkCmdEndRenderPass"); + table->vkCmdExecuteCommands = (PFN_vkCmdExecuteCommands)load(context, "vkCmdExecuteCommands"); + table->vkCmdFillBuffer = (PFN_vkCmdFillBuffer)load(context, "vkCmdFillBuffer"); + table->vkCmdNextSubpass = (PFN_vkCmdNextSubpass)load(context, "vkCmdNextSubpass"); + table->vkCmdPipelineBarrier = (PFN_vkCmdPipelineBarrier)load(context, "vkCmdPipelineBarrier"); + table->vkCmdPushConstants = (PFN_vkCmdPushConstants)load(context, "vkCmdPushConstants"); + table->vkCmdResetEvent = (PFN_vkCmdResetEvent)load(context, "vkCmdResetEvent"); + table->vkCmdResetQueryPool = (PFN_vkCmdResetQueryPool)load(context, "vkCmdResetQueryPool"); + table->vkCmdResolveImage = (PFN_vkCmdResolveImage)load(context, "vkCmdResolveImage"); + table->vkCmdSetBlendConstants = (PFN_vkCmdSetBlendConstants)load(context, "vkCmdSetBlendConstants"); + table->vkCmdSetDepthBias = (PFN_vkCmdSetDepthBias)load(context, "vkCmdSetDepthBias"); + table->vkCmdSetDepthBounds = (PFN_vkCmdSetDepthBounds)load(context, "vkCmdSetDepthBounds"); + table->vkCmdSetEvent = (PFN_vkCmdSetEvent)load(context, "vkCmdSetEvent"); + table->vkCmdSetLineWidth = (PFN_vkCmdSetLineWidth)load(context, "vkCmdSetLineWidth"); + table->vkCmdSetScissor = (PFN_vkCmdSetScissor)load(context, "vkCmdSetScissor"); + table->vkCmdSetStencilCompareMask = (PFN_vkCmdSetStencilCompareMask)load(context, "vkCmdSetStencilCompareMask"); + table->vkCmdSetStencilReference = (PFN_vkCmdSetStencilReference)load(context, "vkCmdSetStencilReference"); + table->vkCmdSetStencilWriteMask = (PFN_vkCmdSetStencilWriteMask)load(context, "vkCmdSetStencilWriteMask"); + table->vkCmdSetViewport = (PFN_vkCmdSetViewport)load(context, "vkCmdSetViewport"); + table->vkCmdUpdateBuffer = (PFN_vkCmdUpdateBuffer)load(context, "vkCmdUpdateBuffer"); + table->vkCmdWaitEvents = (PFN_vkCmdWaitEvents)load(context, "vkCmdWaitEvents"); + table->vkCmdWriteTimestamp = (PFN_vkCmdWriteTimestamp)load(context, "vkCmdWriteTimestamp"); + table->vkCreateBuffer = (PFN_vkCreateBuffer)load(context, "vkCreateBuffer"); + table->vkCreateBufferView = (PFN_vkCreateBufferView)load(context, "vkCreateBufferView"); + table->vkCreateCommandPool = (PFN_vkCreateCommandPool)load(context, "vkCreateCommandPool"); + table->vkCreateComputePipelines = (PFN_vkCreateComputePipelines)load(context, "vkCreateComputePipelines"); + table->vkCreateDescriptorPool = (PFN_vkCreateDescriptorPool)load(context, "vkCreateDescriptorPool"); + table->vkCreateDescriptorSetLayout = (PFN_vkCreateDescriptorSetLayout)load(context, "vkCreateDescriptorSetLayout"); + table->vkCreateEvent = (PFN_vkCreateEvent)load(context, "vkCreateEvent"); + table->vkCreateFence = (PFN_vkCreateFence)load(context, "vkCreateFence"); + table->vkCreateFramebuffer = (PFN_vkCreateFramebuffer)load(context, "vkCreateFramebuffer"); + table->vkCreateGraphicsPipelines = (PFN_vkCreateGraphicsPipelines)load(context, "vkCreateGraphicsPipelines"); + table->vkCreateImage = (PFN_vkCreateImage)load(context, "vkCreateImage"); + table->vkCreateImageView = (PFN_vkCreateImageView)load(context, "vkCreateImageView"); + table->vkCreatePipelineCache = (PFN_vkCreatePipelineCache)load(context, "vkCreatePipelineCache"); + table->vkCreatePipelineLayout = (PFN_vkCreatePipelineLayout)load(context, "vkCreatePipelineLayout"); + table->vkCreateQueryPool = (PFN_vkCreateQueryPool)load(context, "vkCreateQueryPool"); + table->vkCreateRenderPass = (PFN_vkCreateRenderPass)load(context, "vkCreateRenderPass"); + table->vkCreateSampler = (PFN_vkCreateSampler)load(context, "vkCreateSampler"); + table->vkCreateSemaphore = (PFN_vkCreateSemaphore)load(context, "vkCreateSemaphore"); + table->vkCreateShaderModule = (PFN_vkCreateShaderModule)load(context, "vkCreateShaderModule"); + table->vkDestroyBuffer = (PFN_vkDestroyBuffer)load(context, "vkDestroyBuffer"); + table->vkDestroyBufferView = (PFN_vkDestroyBufferView)load(context, "vkDestroyBufferView"); + table->vkDestroyCommandPool = (PFN_vkDestroyCommandPool)load(context, "vkDestroyCommandPool"); + table->vkDestroyDescriptorPool = (PFN_vkDestroyDescriptorPool)load(context, "vkDestroyDescriptorPool"); + table->vkDestroyDescriptorSetLayout = (PFN_vkDestroyDescriptorSetLayout)load(context, "vkDestroyDescriptorSetLayout"); + table->vkDestroyDevice = (PFN_vkDestroyDevice)load(context, "vkDestroyDevice"); + table->vkDestroyEvent = (PFN_vkDestroyEvent)load(context, "vkDestroyEvent"); + table->vkDestroyFence = (PFN_vkDestroyFence)load(context, "vkDestroyFence"); + table->vkDestroyFramebuffer = (PFN_vkDestroyFramebuffer)load(context, "vkDestroyFramebuffer"); + table->vkDestroyImage = (PFN_vkDestroyImage)load(context, "vkDestroyImage"); + table->vkDestroyImageView = (PFN_vkDestroyImageView)load(context, "vkDestroyImageView"); + table->vkDestroyPipeline = (PFN_vkDestroyPipeline)load(context, "vkDestroyPipeline"); + table->vkDestroyPipelineCache = (PFN_vkDestroyPipelineCache)load(context, "vkDestroyPipelineCache"); + table->vkDestroyPipelineLayout = (PFN_vkDestroyPipelineLayout)load(context, "vkDestroyPipelineLayout"); + table->vkDestroyQueryPool = (PFN_vkDestroyQueryPool)load(context, "vkDestroyQueryPool"); + table->vkDestroyRenderPass = (PFN_vkDestroyRenderPass)load(context, "vkDestroyRenderPass"); + table->vkDestroySampler = (PFN_vkDestroySampler)load(context, "vkDestroySampler"); + table->vkDestroySemaphore = (PFN_vkDestroySemaphore)load(context, "vkDestroySemaphore"); + table->vkDestroyShaderModule = (PFN_vkDestroyShaderModule)load(context, "vkDestroyShaderModule"); + table->vkDeviceWaitIdle = (PFN_vkDeviceWaitIdle)load(context, "vkDeviceWaitIdle"); + table->vkEndCommandBuffer = (PFN_vkEndCommandBuffer)load(context, "vkEndCommandBuffer"); + table->vkFlushMappedMemoryRanges = (PFN_vkFlushMappedMemoryRanges)load(context, "vkFlushMappedMemoryRanges"); + table->vkFreeCommandBuffers = (PFN_vkFreeCommandBuffers)load(context, "vkFreeCommandBuffers"); + table->vkFreeDescriptorSets = (PFN_vkFreeDescriptorSets)load(context, "vkFreeDescriptorSets"); + table->vkFreeMemory = (PFN_vkFreeMemory)load(context, "vkFreeMemory"); + table->vkGetBufferMemoryRequirements = (PFN_vkGetBufferMemoryRequirements)load(context, "vkGetBufferMemoryRequirements"); + table->vkGetDeviceMemoryCommitment = (PFN_vkGetDeviceMemoryCommitment)load(context, "vkGetDeviceMemoryCommitment"); + table->vkGetDeviceQueue = (PFN_vkGetDeviceQueue)load(context, "vkGetDeviceQueue"); + table->vkGetEventStatus = (PFN_vkGetEventStatus)load(context, "vkGetEventStatus"); + table->vkGetFenceStatus = (PFN_vkGetFenceStatus)load(context, "vkGetFenceStatus"); + table->vkGetImageMemoryRequirements = (PFN_vkGetImageMemoryRequirements)load(context, "vkGetImageMemoryRequirements"); + table->vkGetImageSparseMemoryRequirements = (PFN_vkGetImageSparseMemoryRequirements)load(context, "vkGetImageSparseMemoryRequirements"); + table->vkGetImageSubresourceLayout = (PFN_vkGetImageSubresourceLayout)load(context, "vkGetImageSubresourceLayout"); + table->vkGetPipelineCacheData = (PFN_vkGetPipelineCacheData)load(context, "vkGetPipelineCacheData"); + table->vkGetQueryPoolResults = (PFN_vkGetQueryPoolResults)load(context, "vkGetQueryPoolResults"); + table->vkGetRenderAreaGranularity = (PFN_vkGetRenderAreaGranularity)load(context, "vkGetRenderAreaGranularity"); + table->vkInvalidateMappedMemoryRanges = (PFN_vkInvalidateMappedMemoryRanges)load(context, "vkInvalidateMappedMemoryRanges"); + table->vkMapMemory = (PFN_vkMapMemory)load(context, "vkMapMemory"); + table->vkMergePipelineCaches = (PFN_vkMergePipelineCaches)load(context, "vkMergePipelineCaches"); + table->vkQueueBindSparse = (PFN_vkQueueBindSparse)load(context, "vkQueueBindSparse"); + table->vkQueueSubmit = (PFN_vkQueueSubmit)load(context, "vkQueueSubmit"); + table->vkQueueWaitIdle = (PFN_vkQueueWaitIdle)load(context, "vkQueueWaitIdle"); + table->vkResetCommandBuffer = (PFN_vkResetCommandBuffer)load(context, "vkResetCommandBuffer"); + table->vkResetCommandPool = (PFN_vkResetCommandPool)load(context, "vkResetCommandPool"); + table->vkResetDescriptorPool = (PFN_vkResetDescriptorPool)load(context, "vkResetDescriptorPool"); + table->vkResetEvent = (PFN_vkResetEvent)load(context, "vkResetEvent"); + table->vkResetFences = (PFN_vkResetFences)load(context, "vkResetFences"); + table->vkSetEvent = (PFN_vkSetEvent)load(context, "vkSetEvent"); + table->vkUnmapMemory = (PFN_vkUnmapMemory)load(context, "vkUnmapMemory"); + table->vkUpdateDescriptorSets = (PFN_vkUpdateDescriptorSets)load(context, "vkUpdateDescriptorSets"); + table->vkWaitForFences = (PFN_vkWaitForFences)load(context, "vkWaitForFences"); +#endif /* defined(VK_VERSION_1_0) */ +#if defined(VK_VERSION_1_1) + table->vkBindBufferMemory2 = (PFN_vkBindBufferMemory2)load(context, "vkBindBufferMemory2"); + table->vkBindImageMemory2 = (PFN_vkBindImageMemory2)load(context, "vkBindImageMemory2"); + table->vkCmdDispatchBase = (PFN_vkCmdDispatchBase)load(context, "vkCmdDispatchBase"); + table->vkCmdSetDeviceMask = (PFN_vkCmdSetDeviceMask)load(context, "vkCmdSetDeviceMask"); + table->vkCreateDescriptorUpdateTemplate = (PFN_vkCreateDescriptorUpdateTemplate)load(context, "vkCreateDescriptorUpdateTemplate"); + table->vkCreateSamplerYcbcrConversion = (PFN_vkCreateSamplerYcbcrConversion)load(context, "vkCreateSamplerYcbcrConversion"); + table->vkDestroyDescriptorUpdateTemplate = (PFN_vkDestroyDescriptorUpdateTemplate)load(context, "vkDestroyDescriptorUpdateTemplate"); + table->vkDestroySamplerYcbcrConversion = (PFN_vkDestroySamplerYcbcrConversion)load(context, "vkDestroySamplerYcbcrConversion"); + table->vkGetBufferMemoryRequirements2 = (PFN_vkGetBufferMemoryRequirements2)load(context, "vkGetBufferMemoryRequirements2"); + table->vkGetDescriptorSetLayoutSupport = (PFN_vkGetDescriptorSetLayoutSupport)load(context, "vkGetDescriptorSetLayoutSupport"); + table->vkGetDeviceGroupPeerMemoryFeatures = (PFN_vkGetDeviceGroupPeerMemoryFeatures)load(context, "vkGetDeviceGroupPeerMemoryFeatures"); + table->vkGetDeviceQueue2 = (PFN_vkGetDeviceQueue2)load(context, "vkGetDeviceQueue2"); + table->vkGetImageMemoryRequirements2 = (PFN_vkGetImageMemoryRequirements2)load(context, "vkGetImageMemoryRequirements2"); + table->vkGetImageSparseMemoryRequirements2 = (PFN_vkGetImageSparseMemoryRequirements2)load(context, "vkGetImageSparseMemoryRequirements2"); + table->vkTrimCommandPool = (PFN_vkTrimCommandPool)load(context, "vkTrimCommandPool"); + table->vkUpdateDescriptorSetWithTemplate = (PFN_vkUpdateDescriptorSetWithTemplate)load(context, "vkUpdateDescriptorSetWithTemplate"); +#endif /* defined(VK_VERSION_1_1) */ +#if defined(VK_VERSION_1_2) + table->vkCmdBeginRenderPass2 = (PFN_vkCmdBeginRenderPass2)load(context, "vkCmdBeginRenderPass2"); + table->vkCmdDrawIndexedIndirectCount = (PFN_vkCmdDrawIndexedIndirectCount)load(context, "vkCmdDrawIndexedIndirectCount"); + table->vkCmdDrawIndirectCount = (PFN_vkCmdDrawIndirectCount)load(context, "vkCmdDrawIndirectCount"); + table->vkCmdEndRenderPass2 = (PFN_vkCmdEndRenderPass2)load(context, "vkCmdEndRenderPass2"); + table->vkCmdNextSubpass2 = (PFN_vkCmdNextSubpass2)load(context, "vkCmdNextSubpass2"); + table->vkCreateRenderPass2 = (PFN_vkCreateRenderPass2)load(context, "vkCreateRenderPass2"); + table->vkGetBufferDeviceAddress = (PFN_vkGetBufferDeviceAddress)load(context, "vkGetBufferDeviceAddress"); + table->vkGetBufferOpaqueCaptureAddress = (PFN_vkGetBufferOpaqueCaptureAddress)load(context, "vkGetBufferOpaqueCaptureAddress"); + table->vkGetDeviceMemoryOpaqueCaptureAddress = (PFN_vkGetDeviceMemoryOpaqueCaptureAddress)load(context, "vkGetDeviceMemoryOpaqueCaptureAddress"); + table->vkGetSemaphoreCounterValue = (PFN_vkGetSemaphoreCounterValue)load(context, "vkGetSemaphoreCounterValue"); + table->vkResetQueryPool = (PFN_vkResetQueryPool)load(context, "vkResetQueryPool"); + table->vkSignalSemaphore = (PFN_vkSignalSemaphore)load(context, "vkSignalSemaphore"); + table->vkWaitSemaphores = (PFN_vkWaitSemaphores)load(context, "vkWaitSemaphores"); +#endif /* defined(VK_VERSION_1_2) */ +#if defined(VK_AMD_buffer_marker) + table->vkCmdWriteBufferMarkerAMD = (PFN_vkCmdWriteBufferMarkerAMD)load(context, "vkCmdWriteBufferMarkerAMD"); +#endif /* defined(VK_AMD_buffer_marker) */ +#if defined(VK_AMD_display_native_hdr) + table->vkSetLocalDimmingAMD = (PFN_vkSetLocalDimmingAMD)load(context, "vkSetLocalDimmingAMD"); +#endif /* defined(VK_AMD_display_native_hdr) */ +#if defined(VK_AMD_draw_indirect_count) + table->vkCmdDrawIndexedIndirectCountAMD = (PFN_vkCmdDrawIndexedIndirectCountAMD)load(context, "vkCmdDrawIndexedIndirectCountAMD"); + table->vkCmdDrawIndirectCountAMD = (PFN_vkCmdDrawIndirectCountAMD)load(context, "vkCmdDrawIndirectCountAMD"); +#endif /* defined(VK_AMD_draw_indirect_count) */ +#if defined(VK_AMD_shader_info) + table->vkGetShaderInfoAMD = (PFN_vkGetShaderInfoAMD)load(context, "vkGetShaderInfoAMD"); +#endif /* defined(VK_AMD_shader_info) */ +#if defined(VK_ANDROID_external_memory_android_hardware_buffer) + table->vkGetAndroidHardwareBufferPropertiesANDROID = (PFN_vkGetAndroidHardwareBufferPropertiesANDROID)load(context, "vkGetAndroidHardwareBufferPropertiesANDROID"); + table->vkGetMemoryAndroidHardwareBufferANDROID = (PFN_vkGetMemoryAndroidHardwareBufferANDROID)load(context, "vkGetMemoryAndroidHardwareBufferANDROID"); +#endif /* defined(VK_ANDROID_external_memory_android_hardware_buffer) */ +#if defined(VK_EXT_buffer_device_address) + table->vkGetBufferDeviceAddressEXT = (PFN_vkGetBufferDeviceAddressEXT)load(context, "vkGetBufferDeviceAddressEXT"); +#endif /* defined(VK_EXT_buffer_device_address) */ +#if defined(VK_EXT_calibrated_timestamps) + table->vkGetCalibratedTimestampsEXT = (PFN_vkGetCalibratedTimestampsEXT)load(context, "vkGetCalibratedTimestampsEXT"); +#endif /* defined(VK_EXT_calibrated_timestamps) */ +#if defined(VK_EXT_conditional_rendering) + table->vkCmdBeginConditionalRenderingEXT = (PFN_vkCmdBeginConditionalRenderingEXT)load(context, "vkCmdBeginConditionalRenderingEXT"); + table->vkCmdEndConditionalRenderingEXT = (PFN_vkCmdEndConditionalRenderingEXT)load(context, "vkCmdEndConditionalRenderingEXT"); +#endif /* defined(VK_EXT_conditional_rendering) */ +#if defined(VK_EXT_debug_marker) + table->vkCmdDebugMarkerBeginEXT = (PFN_vkCmdDebugMarkerBeginEXT)load(context, "vkCmdDebugMarkerBeginEXT"); + table->vkCmdDebugMarkerEndEXT = (PFN_vkCmdDebugMarkerEndEXT)load(context, "vkCmdDebugMarkerEndEXT"); + table->vkCmdDebugMarkerInsertEXT = (PFN_vkCmdDebugMarkerInsertEXT)load(context, "vkCmdDebugMarkerInsertEXT"); + table->vkDebugMarkerSetObjectNameEXT = (PFN_vkDebugMarkerSetObjectNameEXT)load(context, "vkDebugMarkerSetObjectNameEXT"); + table->vkDebugMarkerSetObjectTagEXT = (PFN_vkDebugMarkerSetObjectTagEXT)load(context, "vkDebugMarkerSetObjectTagEXT"); +#endif /* defined(VK_EXT_debug_marker) */ +#if defined(VK_EXT_discard_rectangles) + table->vkCmdSetDiscardRectangleEXT = (PFN_vkCmdSetDiscardRectangleEXT)load(context, "vkCmdSetDiscardRectangleEXT"); +#endif /* defined(VK_EXT_discard_rectangles) */ +#if defined(VK_EXT_display_control) + table->vkDisplayPowerControlEXT = (PFN_vkDisplayPowerControlEXT)load(context, "vkDisplayPowerControlEXT"); + table->vkGetSwapchainCounterEXT = (PFN_vkGetSwapchainCounterEXT)load(context, "vkGetSwapchainCounterEXT"); + table->vkRegisterDeviceEventEXT = (PFN_vkRegisterDeviceEventEXT)load(context, "vkRegisterDeviceEventEXT"); + table->vkRegisterDisplayEventEXT = (PFN_vkRegisterDisplayEventEXT)load(context, "vkRegisterDisplayEventEXT"); +#endif /* defined(VK_EXT_display_control) */ +#if defined(VK_EXT_extended_dynamic_state) + table->vkCmdBindVertexBuffers2EXT = (PFN_vkCmdBindVertexBuffers2EXT)load(context, "vkCmdBindVertexBuffers2EXT"); + table->vkCmdSetCullModeEXT = (PFN_vkCmdSetCullModeEXT)load(context, "vkCmdSetCullModeEXT"); + table->vkCmdSetDepthBoundsTestEnableEXT = (PFN_vkCmdSetDepthBoundsTestEnableEXT)load(context, "vkCmdSetDepthBoundsTestEnableEXT"); + table->vkCmdSetDepthCompareOpEXT = (PFN_vkCmdSetDepthCompareOpEXT)load(context, "vkCmdSetDepthCompareOpEXT"); + table->vkCmdSetDepthTestEnableEXT = (PFN_vkCmdSetDepthTestEnableEXT)load(context, "vkCmdSetDepthTestEnableEXT"); + table->vkCmdSetDepthWriteEnableEXT = (PFN_vkCmdSetDepthWriteEnableEXT)load(context, "vkCmdSetDepthWriteEnableEXT"); + table->vkCmdSetFrontFaceEXT = (PFN_vkCmdSetFrontFaceEXT)load(context, "vkCmdSetFrontFaceEXT"); + table->vkCmdSetPrimitiveTopologyEXT = (PFN_vkCmdSetPrimitiveTopologyEXT)load(context, "vkCmdSetPrimitiveTopologyEXT"); + table->vkCmdSetScissorWithCountEXT = (PFN_vkCmdSetScissorWithCountEXT)load(context, "vkCmdSetScissorWithCountEXT"); + table->vkCmdSetStencilOpEXT = (PFN_vkCmdSetStencilOpEXT)load(context, "vkCmdSetStencilOpEXT"); + table->vkCmdSetStencilTestEnableEXT = (PFN_vkCmdSetStencilTestEnableEXT)load(context, "vkCmdSetStencilTestEnableEXT"); + table->vkCmdSetViewportWithCountEXT = (PFN_vkCmdSetViewportWithCountEXT)load(context, "vkCmdSetViewportWithCountEXT"); +#endif /* defined(VK_EXT_extended_dynamic_state) */ +#if defined(VK_EXT_external_memory_host) + table->vkGetMemoryHostPointerPropertiesEXT = (PFN_vkGetMemoryHostPointerPropertiesEXT)load(context, "vkGetMemoryHostPointerPropertiesEXT"); +#endif /* defined(VK_EXT_external_memory_host) */ +#if defined(VK_EXT_full_screen_exclusive) + table->vkAcquireFullScreenExclusiveModeEXT = (PFN_vkAcquireFullScreenExclusiveModeEXT)load(context, "vkAcquireFullScreenExclusiveModeEXT"); + table->vkReleaseFullScreenExclusiveModeEXT = (PFN_vkReleaseFullScreenExclusiveModeEXT)load(context, "vkReleaseFullScreenExclusiveModeEXT"); +#endif /* defined(VK_EXT_full_screen_exclusive) */ +#if defined(VK_EXT_hdr_metadata) + table->vkSetHdrMetadataEXT = (PFN_vkSetHdrMetadataEXT)load(context, "vkSetHdrMetadataEXT"); +#endif /* defined(VK_EXT_hdr_metadata) */ +#if defined(VK_EXT_host_query_reset) + table->vkResetQueryPoolEXT = (PFN_vkResetQueryPoolEXT)load(context, "vkResetQueryPoolEXT"); +#endif /* defined(VK_EXT_host_query_reset) */ +#if defined(VK_EXT_image_drm_format_modifier) + table->vkGetImageDrmFormatModifierPropertiesEXT = (PFN_vkGetImageDrmFormatModifierPropertiesEXT)load(context, "vkGetImageDrmFormatModifierPropertiesEXT"); +#endif /* defined(VK_EXT_image_drm_format_modifier) */ +#if defined(VK_EXT_line_rasterization) + table->vkCmdSetLineStippleEXT = (PFN_vkCmdSetLineStippleEXT)load(context, "vkCmdSetLineStippleEXT"); +#endif /* defined(VK_EXT_line_rasterization) */ +#if defined(VK_EXT_private_data) + table->vkCreatePrivateDataSlotEXT = (PFN_vkCreatePrivateDataSlotEXT)load(context, "vkCreatePrivateDataSlotEXT"); + table->vkDestroyPrivateDataSlotEXT = (PFN_vkDestroyPrivateDataSlotEXT)load(context, "vkDestroyPrivateDataSlotEXT"); + table->vkGetPrivateDataEXT = (PFN_vkGetPrivateDataEXT)load(context, "vkGetPrivateDataEXT"); + table->vkSetPrivateDataEXT = (PFN_vkSetPrivateDataEXT)load(context, "vkSetPrivateDataEXT"); +#endif /* defined(VK_EXT_private_data) */ +#if defined(VK_EXT_sample_locations) + table->vkCmdSetSampleLocationsEXT = (PFN_vkCmdSetSampleLocationsEXT)load(context, "vkCmdSetSampleLocationsEXT"); +#endif /* defined(VK_EXT_sample_locations) */ +#if defined(VK_EXT_transform_feedback) + table->vkCmdBeginQueryIndexedEXT = (PFN_vkCmdBeginQueryIndexedEXT)load(context, "vkCmdBeginQueryIndexedEXT"); + table->vkCmdBeginTransformFeedbackEXT = (PFN_vkCmdBeginTransformFeedbackEXT)load(context, "vkCmdBeginTransformFeedbackEXT"); + table->vkCmdBindTransformFeedbackBuffersEXT = (PFN_vkCmdBindTransformFeedbackBuffersEXT)load(context, "vkCmdBindTransformFeedbackBuffersEXT"); + table->vkCmdDrawIndirectByteCountEXT = (PFN_vkCmdDrawIndirectByteCountEXT)load(context, "vkCmdDrawIndirectByteCountEXT"); + table->vkCmdEndQueryIndexedEXT = (PFN_vkCmdEndQueryIndexedEXT)load(context, "vkCmdEndQueryIndexedEXT"); + table->vkCmdEndTransformFeedbackEXT = (PFN_vkCmdEndTransformFeedbackEXT)load(context, "vkCmdEndTransformFeedbackEXT"); +#endif /* defined(VK_EXT_transform_feedback) */ +#if defined(VK_EXT_validation_cache) + table->vkCreateValidationCacheEXT = (PFN_vkCreateValidationCacheEXT)load(context, "vkCreateValidationCacheEXT"); + table->vkDestroyValidationCacheEXT = (PFN_vkDestroyValidationCacheEXT)load(context, "vkDestroyValidationCacheEXT"); + table->vkGetValidationCacheDataEXT = (PFN_vkGetValidationCacheDataEXT)load(context, "vkGetValidationCacheDataEXT"); + table->vkMergeValidationCachesEXT = (PFN_vkMergeValidationCachesEXT)load(context, "vkMergeValidationCachesEXT"); +#endif /* defined(VK_EXT_validation_cache) */ +#if defined(VK_GOOGLE_display_timing) + table->vkGetPastPresentationTimingGOOGLE = (PFN_vkGetPastPresentationTimingGOOGLE)load(context, "vkGetPastPresentationTimingGOOGLE"); + table->vkGetRefreshCycleDurationGOOGLE = (PFN_vkGetRefreshCycleDurationGOOGLE)load(context, "vkGetRefreshCycleDurationGOOGLE"); +#endif /* defined(VK_GOOGLE_display_timing) */ +#if defined(VK_INTEL_performance_query) + table->vkAcquirePerformanceConfigurationINTEL = (PFN_vkAcquirePerformanceConfigurationINTEL)load(context, "vkAcquirePerformanceConfigurationINTEL"); + table->vkCmdSetPerformanceMarkerINTEL = (PFN_vkCmdSetPerformanceMarkerINTEL)load(context, "vkCmdSetPerformanceMarkerINTEL"); + table->vkCmdSetPerformanceOverrideINTEL = (PFN_vkCmdSetPerformanceOverrideINTEL)load(context, "vkCmdSetPerformanceOverrideINTEL"); + table->vkCmdSetPerformanceStreamMarkerINTEL = (PFN_vkCmdSetPerformanceStreamMarkerINTEL)load(context, "vkCmdSetPerformanceStreamMarkerINTEL"); + table->vkGetPerformanceParameterINTEL = (PFN_vkGetPerformanceParameterINTEL)load(context, "vkGetPerformanceParameterINTEL"); + table->vkInitializePerformanceApiINTEL = (PFN_vkInitializePerformanceApiINTEL)load(context, "vkInitializePerformanceApiINTEL"); + table->vkQueueSetPerformanceConfigurationINTEL = (PFN_vkQueueSetPerformanceConfigurationINTEL)load(context, "vkQueueSetPerformanceConfigurationINTEL"); + table->vkReleasePerformanceConfigurationINTEL = (PFN_vkReleasePerformanceConfigurationINTEL)load(context, "vkReleasePerformanceConfigurationINTEL"); + table->vkUninitializePerformanceApiINTEL = (PFN_vkUninitializePerformanceApiINTEL)load(context, "vkUninitializePerformanceApiINTEL"); +#endif /* defined(VK_INTEL_performance_query) */ +#if defined(VK_KHR_bind_memory2) + table->vkBindBufferMemory2KHR = (PFN_vkBindBufferMemory2KHR)load(context, "vkBindBufferMemory2KHR"); + table->vkBindImageMemory2KHR = (PFN_vkBindImageMemory2KHR)load(context, "vkBindImageMemory2KHR"); +#endif /* defined(VK_KHR_bind_memory2) */ +#if defined(VK_KHR_buffer_device_address) + table->vkGetBufferDeviceAddressKHR = (PFN_vkGetBufferDeviceAddressKHR)load(context, "vkGetBufferDeviceAddressKHR"); + table->vkGetBufferOpaqueCaptureAddressKHR = (PFN_vkGetBufferOpaqueCaptureAddressKHR)load(context, "vkGetBufferOpaqueCaptureAddressKHR"); + table->vkGetDeviceMemoryOpaqueCaptureAddressKHR = (PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)load(context, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"); +#endif /* defined(VK_KHR_buffer_device_address) */ +#if defined(VK_KHR_copy_commands2) + table->vkCmdBlitImage2KHR = (PFN_vkCmdBlitImage2KHR)load(context, "vkCmdBlitImage2KHR"); + table->vkCmdCopyBuffer2KHR = (PFN_vkCmdCopyBuffer2KHR)load(context, "vkCmdCopyBuffer2KHR"); + table->vkCmdCopyBufferToImage2KHR = (PFN_vkCmdCopyBufferToImage2KHR)load(context, "vkCmdCopyBufferToImage2KHR"); + table->vkCmdCopyImage2KHR = (PFN_vkCmdCopyImage2KHR)load(context, "vkCmdCopyImage2KHR"); + table->vkCmdCopyImageToBuffer2KHR = (PFN_vkCmdCopyImageToBuffer2KHR)load(context, "vkCmdCopyImageToBuffer2KHR"); + table->vkCmdResolveImage2KHR = (PFN_vkCmdResolveImage2KHR)load(context, "vkCmdResolveImage2KHR"); +#endif /* defined(VK_KHR_copy_commands2) */ +#if defined(VK_KHR_create_renderpass2) + table->vkCmdBeginRenderPass2KHR = (PFN_vkCmdBeginRenderPass2KHR)load(context, "vkCmdBeginRenderPass2KHR"); + table->vkCmdEndRenderPass2KHR = (PFN_vkCmdEndRenderPass2KHR)load(context, "vkCmdEndRenderPass2KHR"); + table->vkCmdNextSubpass2KHR = (PFN_vkCmdNextSubpass2KHR)load(context, "vkCmdNextSubpass2KHR"); + table->vkCreateRenderPass2KHR = (PFN_vkCreateRenderPass2KHR)load(context, "vkCreateRenderPass2KHR"); +#endif /* defined(VK_KHR_create_renderpass2) */ +#if defined(VK_KHR_deferred_host_operations) + table->vkCreateDeferredOperationKHR = (PFN_vkCreateDeferredOperationKHR)load(context, "vkCreateDeferredOperationKHR"); + table->vkDeferredOperationJoinKHR = (PFN_vkDeferredOperationJoinKHR)load(context, "vkDeferredOperationJoinKHR"); + table->vkDestroyDeferredOperationKHR = (PFN_vkDestroyDeferredOperationKHR)load(context, "vkDestroyDeferredOperationKHR"); + table->vkGetDeferredOperationMaxConcurrencyKHR = (PFN_vkGetDeferredOperationMaxConcurrencyKHR)load(context, "vkGetDeferredOperationMaxConcurrencyKHR"); + table->vkGetDeferredOperationResultKHR = (PFN_vkGetDeferredOperationResultKHR)load(context, "vkGetDeferredOperationResultKHR"); +#endif /* defined(VK_KHR_deferred_host_operations) */ +#if defined(VK_KHR_descriptor_update_template) + table->vkCreateDescriptorUpdateTemplateKHR = (PFN_vkCreateDescriptorUpdateTemplateKHR)load(context, "vkCreateDescriptorUpdateTemplateKHR"); + table->vkDestroyDescriptorUpdateTemplateKHR = (PFN_vkDestroyDescriptorUpdateTemplateKHR)load(context, "vkDestroyDescriptorUpdateTemplateKHR"); + table->vkUpdateDescriptorSetWithTemplateKHR = (PFN_vkUpdateDescriptorSetWithTemplateKHR)load(context, "vkUpdateDescriptorSetWithTemplateKHR"); +#endif /* defined(VK_KHR_descriptor_update_template) */ +#if defined(VK_KHR_device_group) + table->vkCmdDispatchBaseKHR = (PFN_vkCmdDispatchBaseKHR)load(context, "vkCmdDispatchBaseKHR"); + table->vkCmdSetDeviceMaskKHR = (PFN_vkCmdSetDeviceMaskKHR)load(context, "vkCmdSetDeviceMaskKHR"); + table->vkGetDeviceGroupPeerMemoryFeaturesKHR = (PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR)load(context, "vkGetDeviceGroupPeerMemoryFeaturesKHR"); +#endif /* defined(VK_KHR_device_group) */ +#if defined(VK_KHR_display_swapchain) + table->vkCreateSharedSwapchainsKHR = (PFN_vkCreateSharedSwapchainsKHR)load(context, "vkCreateSharedSwapchainsKHR"); +#endif /* defined(VK_KHR_display_swapchain) */ +#if defined(VK_KHR_draw_indirect_count) + table->vkCmdDrawIndexedIndirectCountKHR = (PFN_vkCmdDrawIndexedIndirectCountKHR)load(context, "vkCmdDrawIndexedIndirectCountKHR"); + table->vkCmdDrawIndirectCountKHR = (PFN_vkCmdDrawIndirectCountKHR)load(context, "vkCmdDrawIndirectCountKHR"); +#endif /* defined(VK_KHR_draw_indirect_count) */ +#if defined(VK_KHR_external_fence_fd) + table->vkGetFenceFdKHR = (PFN_vkGetFenceFdKHR)load(context, "vkGetFenceFdKHR"); + table->vkImportFenceFdKHR = (PFN_vkImportFenceFdKHR)load(context, "vkImportFenceFdKHR"); +#endif /* defined(VK_KHR_external_fence_fd) */ +#if defined(VK_KHR_external_fence_win32) + table->vkGetFenceWin32HandleKHR = (PFN_vkGetFenceWin32HandleKHR)load(context, "vkGetFenceWin32HandleKHR"); + table->vkImportFenceWin32HandleKHR = (PFN_vkImportFenceWin32HandleKHR)load(context, "vkImportFenceWin32HandleKHR"); +#endif /* defined(VK_KHR_external_fence_win32) */ +#if defined(VK_KHR_external_memory_fd) + table->vkGetMemoryFdKHR = (PFN_vkGetMemoryFdKHR)load(context, "vkGetMemoryFdKHR"); + table->vkGetMemoryFdPropertiesKHR = (PFN_vkGetMemoryFdPropertiesKHR)load(context, "vkGetMemoryFdPropertiesKHR"); +#endif /* defined(VK_KHR_external_memory_fd) */ +#if defined(VK_KHR_external_memory_win32) + table->vkGetMemoryWin32HandleKHR = (PFN_vkGetMemoryWin32HandleKHR)load(context, "vkGetMemoryWin32HandleKHR"); + table->vkGetMemoryWin32HandlePropertiesKHR = (PFN_vkGetMemoryWin32HandlePropertiesKHR)load(context, "vkGetMemoryWin32HandlePropertiesKHR"); +#endif /* defined(VK_KHR_external_memory_win32) */ +#if defined(VK_KHR_external_semaphore_fd) + table->vkGetSemaphoreFdKHR = (PFN_vkGetSemaphoreFdKHR)load(context, "vkGetSemaphoreFdKHR"); + table->vkImportSemaphoreFdKHR = (PFN_vkImportSemaphoreFdKHR)load(context, "vkImportSemaphoreFdKHR"); +#endif /* defined(VK_KHR_external_semaphore_fd) */ +#if defined(VK_KHR_external_semaphore_win32) + table->vkGetSemaphoreWin32HandleKHR = (PFN_vkGetSemaphoreWin32HandleKHR)load(context, "vkGetSemaphoreWin32HandleKHR"); + table->vkImportSemaphoreWin32HandleKHR = (PFN_vkImportSemaphoreWin32HandleKHR)load(context, "vkImportSemaphoreWin32HandleKHR"); +#endif /* defined(VK_KHR_external_semaphore_win32) */ +#if defined(VK_KHR_get_memory_requirements2) + table->vkGetBufferMemoryRequirements2KHR = (PFN_vkGetBufferMemoryRequirements2KHR)load(context, "vkGetBufferMemoryRequirements2KHR"); + table->vkGetImageMemoryRequirements2KHR = (PFN_vkGetImageMemoryRequirements2KHR)load(context, "vkGetImageMemoryRequirements2KHR"); + table->vkGetImageSparseMemoryRequirements2KHR = (PFN_vkGetImageSparseMemoryRequirements2KHR)load(context, "vkGetImageSparseMemoryRequirements2KHR"); +#endif /* defined(VK_KHR_get_memory_requirements2) */ +#if defined(VK_KHR_maintenance1) + table->vkTrimCommandPoolKHR = (PFN_vkTrimCommandPoolKHR)load(context, "vkTrimCommandPoolKHR"); +#endif /* defined(VK_KHR_maintenance1) */ +#if defined(VK_KHR_maintenance3) + table->vkGetDescriptorSetLayoutSupportKHR = (PFN_vkGetDescriptorSetLayoutSupportKHR)load(context, "vkGetDescriptorSetLayoutSupportKHR"); +#endif /* defined(VK_KHR_maintenance3) */ +#if defined(VK_KHR_performance_query) + table->vkAcquireProfilingLockKHR = (PFN_vkAcquireProfilingLockKHR)load(context, "vkAcquireProfilingLockKHR"); + table->vkReleaseProfilingLockKHR = (PFN_vkReleaseProfilingLockKHR)load(context, "vkReleaseProfilingLockKHR"); +#endif /* defined(VK_KHR_performance_query) */ +#if defined(VK_KHR_pipeline_executable_properties) + table->vkGetPipelineExecutableInternalRepresentationsKHR = (PFN_vkGetPipelineExecutableInternalRepresentationsKHR)load(context, "vkGetPipelineExecutableInternalRepresentationsKHR"); + table->vkGetPipelineExecutablePropertiesKHR = (PFN_vkGetPipelineExecutablePropertiesKHR)load(context, "vkGetPipelineExecutablePropertiesKHR"); + table->vkGetPipelineExecutableStatisticsKHR = (PFN_vkGetPipelineExecutableStatisticsKHR)load(context, "vkGetPipelineExecutableStatisticsKHR"); +#endif /* defined(VK_KHR_pipeline_executable_properties) */ +#if defined(VK_KHR_push_descriptor) + table->vkCmdPushDescriptorSetKHR = (PFN_vkCmdPushDescriptorSetKHR)load(context, "vkCmdPushDescriptorSetKHR"); +#endif /* defined(VK_KHR_push_descriptor) */ +#if defined(VK_KHR_ray_tracing) + table->vkBindAccelerationStructureMemoryKHR = (PFN_vkBindAccelerationStructureMemoryKHR)load(context, "vkBindAccelerationStructureMemoryKHR"); + table->vkBuildAccelerationStructureKHR = (PFN_vkBuildAccelerationStructureKHR)load(context, "vkBuildAccelerationStructureKHR"); + table->vkCmdBuildAccelerationStructureIndirectKHR = (PFN_vkCmdBuildAccelerationStructureIndirectKHR)load(context, "vkCmdBuildAccelerationStructureIndirectKHR"); + table->vkCmdBuildAccelerationStructureKHR = (PFN_vkCmdBuildAccelerationStructureKHR)load(context, "vkCmdBuildAccelerationStructureKHR"); + table->vkCmdCopyAccelerationStructureKHR = (PFN_vkCmdCopyAccelerationStructureKHR)load(context, "vkCmdCopyAccelerationStructureKHR"); + table->vkCmdCopyAccelerationStructureToMemoryKHR = (PFN_vkCmdCopyAccelerationStructureToMemoryKHR)load(context, "vkCmdCopyAccelerationStructureToMemoryKHR"); + table->vkCmdCopyMemoryToAccelerationStructureKHR = (PFN_vkCmdCopyMemoryToAccelerationStructureKHR)load(context, "vkCmdCopyMemoryToAccelerationStructureKHR"); + table->vkCmdTraceRaysIndirectKHR = (PFN_vkCmdTraceRaysIndirectKHR)load(context, "vkCmdTraceRaysIndirectKHR"); + table->vkCmdTraceRaysKHR = (PFN_vkCmdTraceRaysKHR)load(context, "vkCmdTraceRaysKHR"); + table->vkCmdWriteAccelerationStructuresPropertiesKHR = (PFN_vkCmdWriteAccelerationStructuresPropertiesKHR)load(context, "vkCmdWriteAccelerationStructuresPropertiesKHR"); + table->vkCopyAccelerationStructureKHR = (PFN_vkCopyAccelerationStructureKHR)load(context, "vkCopyAccelerationStructureKHR"); + table->vkCopyAccelerationStructureToMemoryKHR = (PFN_vkCopyAccelerationStructureToMemoryKHR)load(context, "vkCopyAccelerationStructureToMemoryKHR"); + table->vkCopyMemoryToAccelerationStructureKHR = (PFN_vkCopyMemoryToAccelerationStructureKHR)load(context, "vkCopyMemoryToAccelerationStructureKHR"); + table->vkCreateAccelerationStructureKHR = (PFN_vkCreateAccelerationStructureKHR)load(context, "vkCreateAccelerationStructureKHR"); + table->vkCreateRayTracingPipelinesKHR = (PFN_vkCreateRayTracingPipelinesKHR)load(context, "vkCreateRayTracingPipelinesKHR"); + table->vkDestroyAccelerationStructureKHR = (PFN_vkDestroyAccelerationStructureKHR)load(context, "vkDestroyAccelerationStructureKHR"); + table->vkGetAccelerationStructureDeviceAddressKHR = (PFN_vkGetAccelerationStructureDeviceAddressKHR)load(context, "vkGetAccelerationStructureDeviceAddressKHR"); + table->vkGetAccelerationStructureMemoryRequirementsKHR = (PFN_vkGetAccelerationStructureMemoryRequirementsKHR)load(context, "vkGetAccelerationStructureMemoryRequirementsKHR"); + table->vkGetDeviceAccelerationStructureCompatibilityKHR = (PFN_vkGetDeviceAccelerationStructureCompatibilityKHR)load(context, "vkGetDeviceAccelerationStructureCompatibilityKHR"); + table->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = (PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)load(context, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"); + table->vkGetRayTracingShaderGroupHandlesKHR = (PFN_vkGetRayTracingShaderGroupHandlesKHR)load(context, "vkGetRayTracingShaderGroupHandlesKHR"); + table->vkWriteAccelerationStructuresPropertiesKHR = (PFN_vkWriteAccelerationStructuresPropertiesKHR)load(context, "vkWriteAccelerationStructuresPropertiesKHR"); +#endif /* defined(VK_KHR_ray_tracing) */ +#if defined(VK_KHR_sampler_ycbcr_conversion) + table->vkCreateSamplerYcbcrConversionKHR = (PFN_vkCreateSamplerYcbcrConversionKHR)load(context, "vkCreateSamplerYcbcrConversionKHR"); + table->vkDestroySamplerYcbcrConversionKHR = (PFN_vkDestroySamplerYcbcrConversionKHR)load(context, "vkDestroySamplerYcbcrConversionKHR"); +#endif /* defined(VK_KHR_sampler_ycbcr_conversion) */ +#if defined(VK_KHR_shared_presentable_image) + table->vkGetSwapchainStatusKHR = (PFN_vkGetSwapchainStatusKHR)load(context, "vkGetSwapchainStatusKHR"); +#endif /* defined(VK_KHR_shared_presentable_image) */ +#if defined(VK_KHR_swapchain) + table->vkAcquireNextImageKHR = (PFN_vkAcquireNextImageKHR)load(context, "vkAcquireNextImageKHR"); + table->vkCreateSwapchainKHR = (PFN_vkCreateSwapchainKHR)load(context, "vkCreateSwapchainKHR"); + table->vkDestroySwapchainKHR = (PFN_vkDestroySwapchainKHR)load(context, "vkDestroySwapchainKHR"); + table->vkGetSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR)load(context, "vkGetSwapchainImagesKHR"); + table->vkQueuePresentKHR = (PFN_vkQueuePresentKHR)load(context, "vkQueuePresentKHR"); +#endif /* defined(VK_KHR_swapchain) */ +#if defined(VK_KHR_timeline_semaphore) + table->vkGetSemaphoreCounterValueKHR = (PFN_vkGetSemaphoreCounterValueKHR)load(context, "vkGetSemaphoreCounterValueKHR"); + table->vkSignalSemaphoreKHR = (PFN_vkSignalSemaphoreKHR)load(context, "vkSignalSemaphoreKHR"); + table->vkWaitSemaphoresKHR = (PFN_vkWaitSemaphoresKHR)load(context, "vkWaitSemaphoresKHR"); +#endif /* defined(VK_KHR_timeline_semaphore) */ +#if defined(VK_NVX_image_view_handle) + table->vkGetImageViewAddressNVX = (PFN_vkGetImageViewAddressNVX)load(context, "vkGetImageViewAddressNVX"); + table->vkGetImageViewHandleNVX = (PFN_vkGetImageViewHandleNVX)load(context, "vkGetImageViewHandleNVX"); +#endif /* defined(VK_NVX_image_view_handle) */ +#if defined(VK_NV_clip_space_w_scaling) + table->vkCmdSetViewportWScalingNV = (PFN_vkCmdSetViewportWScalingNV)load(context, "vkCmdSetViewportWScalingNV"); +#endif /* defined(VK_NV_clip_space_w_scaling) */ +#if defined(VK_NV_device_diagnostic_checkpoints) + table->vkCmdSetCheckpointNV = (PFN_vkCmdSetCheckpointNV)load(context, "vkCmdSetCheckpointNV"); + table->vkGetQueueCheckpointDataNV = (PFN_vkGetQueueCheckpointDataNV)load(context, "vkGetQueueCheckpointDataNV"); +#endif /* defined(VK_NV_device_diagnostic_checkpoints) */ +#if defined(VK_NV_device_generated_commands) + table->vkCmdBindPipelineShaderGroupNV = (PFN_vkCmdBindPipelineShaderGroupNV)load(context, "vkCmdBindPipelineShaderGroupNV"); + table->vkCmdExecuteGeneratedCommandsNV = (PFN_vkCmdExecuteGeneratedCommandsNV)load(context, "vkCmdExecuteGeneratedCommandsNV"); + table->vkCmdPreprocessGeneratedCommandsNV = (PFN_vkCmdPreprocessGeneratedCommandsNV)load(context, "vkCmdPreprocessGeneratedCommandsNV"); + table->vkCreateIndirectCommandsLayoutNV = (PFN_vkCreateIndirectCommandsLayoutNV)load(context, "vkCreateIndirectCommandsLayoutNV"); + table->vkDestroyIndirectCommandsLayoutNV = (PFN_vkDestroyIndirectCommandsLayoutNV)load(context, "vkDestroyIndirectCommandsLayoutNV"); + table->vkGetGeneratedCommandsMemoryRequirementsNV = (PFN_vkGetGeneratedCommandsMemoryRequirementsNV)load(context, "vkGetGeneratedCommandsMemoryRequirementsNV"); +#endif /* defined(VK_NV_device_generated_commands) */ +#if defined(VK_NV_external_memory_win32) + table->vkGetMemoryWin32HandleNV = (PFN_vkGetMemoryWin32HandleNV)load(context, "vkGetMemoryWin32HandleNV"); +#endif /* defined(VK_NV_external_memory_win32) */ +#if defined(VK_NV_mesh_shader) + table->vkCmdDrawMeshTasksIndirectCountNV = (PFN_vkCmdDrawMeshTasksIndirectCountNV)load(context, "vkCmdDrawMeshTasksIndirectCountNV"); + table->vkCmdDrawMeshTasksIndirectNV = (PFN_vkCmdDrawMeshTasksIndirectNV)load(context, "vkCmdDrawMeshTasksIndirectNV"); + table->vkCmdDrawMeshTasksNV = (PFN_vkCmdDrawMeshTasksNV)load(context, "vkCmdDrawMeshTasksNV"); +#endif /* defined(VK_NV_mesh_shader) */ +#if defined(VK_NV_ray_tracing) + table->vkBindAccelerationStructureMemoryNV = (PFN_vkBindAccelerationStructureMemoryNV)load(context, "vkBindAccelerationStructureMemoryNV"); + table->vkCmdBuildAccelerationStructureNV = (PFN_vkCmdBuildAccelerationStructureNV)load(context, "vkCmdBuildAccelerationStructureNV"); + table->vkCmdCopyAccelerationStructureNV = (PFN_vkCmdCopyAccelerationStructureNV)load(context, "vkCmdCopyAccelerationStructureNV"); + table->vkCmdTraceRaysNV = (PFN_vkCmdTraceRaysNV)load(context, "vkCmdTraceRaysNV"); + table->vkCmdWriteAccelerationStructuresPropertiesNV = (PFN_vkCmdWriteAccelerationStructuresPropertiesNV)load(context, "vkCmdWriteAccelerationStructuresPropertiesNV"); + table->vkCompileDeferredNV = (PFN_vkCompileDeferredNV)load(context, "vkCompileDeferredNV"); + table->vkCreateAccelerationStructureNV = (PFN_vkCreateAccelerationStructureNV)load(context, "vkCreateAccelerationStructureNV"); + table->vkCreateRayTracingPipelinesNV = (PFN_vkCreateRayTracingPipelinesNV)load(context, "vkCreateRayTracingPipelinesNV"); + table->vkDestroyAccelerationStructureNV = (PFN_vkDestroyAccelerationStructureNV)load(context, "vkDestroyAccelerationStructureNV"); + table->vkGetAccelerationStructureHandleNV = (PFN_vkGetAccelerationStructureHandleNV)load(context, "vkGetAccelerationStructureHandleNV"); + table->vkGetAccelerationStructureMemoryRequirementsNV = (PFN_vkGetAccelerationStructureMemoryRequirementsNV)load(context, "vkGetAccelerationStructureMemoryRequirementsNV"); + table->vkGetRayTracingShaderGroupHandlesNV = (PFN_vkGetRayTracingShaderGroupHandlesNV)load(context, "vkGetRayTracingShaderGroupHandlesNV"); +#endif /* defined(VK_NV_ray_tracing) */ +#if defined(VK_NV_scissor_exclusive) + table->vkCmdSetExclusiveScissorNV = (PFN_vkCmdSetExclusiveScissorNV)load(context, "vkCmdSetExclusiveScissorNV"); +#endif /* defined(VK_NV_scissor_exclusive) */ +#if defined(VK_NV_shading_rate_image) + table->vkCmdBindShadingRateImageNV = (PFN_vkCmdBindShadingRateImageNV)load(context, "vkCmdBindShadingRateImageNV"); + table->vkCmdSetCoarseSampleOrderNV = (PFN_vkCmdSetCoarseSampleOrderNV)load(context, "vkCmdSetCoarseSampleOrderNV"); + table->vkCmdSetViewportShadingRatePaletteNV = (PFN_vkCmdSetViewportShadingRatePaletteNV)load(context, "vkCmdSetViewportShadingRatePaletteNV"); +#endif /* defined(VK_NV_shading_rate_image) */ +#if (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1)) + table->vkGetDeviceGroupSurfacePresentModes2EXT = (PFN_vkGetDeviceGroupSurfacePresentModes2EXT)load(context, "vkGetDeviceGroupSurfacePresentModes2EXT"); +#endif /* (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1)) */ +#if (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1)) || (defined(VK_KHR_push_descriptor) && defined(VK_KHR_descriptor_update_template)) + table->vkCmdPushDescriptorSetWithTemplateKHR = (PFN_vkCmdPushDescriptorSetWithTemplateKHR)load(context, "vkCmdPushDescriptorSetWithTemplateKHR"); +#endif /* (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1)) || (defined(VK_KHR_push_descriptor) && defined(VK_KHR_descriptor_update_template)) */ +#if (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) + table->vkGetDeviceGroupPresentCapabilitiesKHR = (PFN_vkGetDeviceGroupPresentCapabilitiesKHR)load(context, "vkGetDeviceGroupPresentCapabilitiesKHR"); + table->vkGetDeviceGroupSurfacePresentModesKHR = (PFN_vkGetDeviceGroupSurfacePresentModesKHR)load(context, "vkGetDeviceGroupSurfacePresentModesKHR"); +#endif /* (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) */ +#if (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) + table->vkAcquireNextImage2KHR = (PFN_vkAcquireNextImage2KHR)load(context, "vkAcquireNextImage2KHR"); +#endif /* (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) */ + /* VOLK_GENERATE_LOAD_DEVICE_TABLE */ +} + +#ifdef __GNUC__ +#ifdef VOLK_DEFAULT_VISIBILITY +# pragma GCC visibility push(default) +#else +# pragma GCC visibility push(hidden) +#endif +#endif + +/* VOLK_GENERATE_PROTOTYPES_C */ +#if defined(VK_VERSION_1_0) +PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers; +PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets; +PFN_vkAllocateMemory vkAllocateMemory; +PFN_vkBeginCommandBuffer vkBeginCommandBuffer; +PFN_vkBindBufferMemory vkBindBufferMemory; +PFN_vkBindImageMemory vkBindImageMemory; +PFN_vkCmdBeginQuery vkCmdBeginQuery; +PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass; +PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets; +PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer; +PFN_vkCmdBindPipeline vkCmdBindPipeline; +PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers; +PFN_vkCmdBlitImage vkCmdBlitImage; +PFN_vkCmdClearAttachments vkCmdClearAttachments; +PFN_vkCmdClearColorImage vkCmdClearColorImage; +PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage; +PFN_vkCmdCopyBuffer vkCmdCopyBuffer; +PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage; +PFN_vkCmdCopyImage vkCmdCopyImage; +PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer; +PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults; +PFN_vkCmdDispatch vkCmdDispatch; +PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect; +PFN_vkCmdDraw vkCmdDraw; +PFN_vkCmdDrawIndexed vkCmdDrawIndexed; +PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect; +PFN_vkCmdDrawIndirect vkCmdDrawIndirect; +PFN_vkCmdEndQuery vkCmdEndQuery; +PFN_vkCmdEndRenderPass vkCmdEndRenderPass; +PFN_vkCmdExecuteCommands vkCmdExecuteCommands; +PFN_vkCmdFillBuffer vkCmdFillBuffer; +PFN_vkCmdNextSubpass vkCmdNextSubpass; +PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier; +PFN_vkCmdPushConstants vkCmdPushConstants; +PFN_vkCmdResetEvent vkCmdResetEvent; +PFN_vkCmdResetQueryPool vkCmdResetQueryPool; +PFN_vkCmdResolveImage vkCmdResolveImage; +PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants; +PFN_vkCmdSetDepthBias vkCmdSetDepthBias; +PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds; +PFN_vkCmdSetEvent vkCmdSetEvent; +PFN_vkCmdSetLineWidth vkCmdSetLineWidth; +PFN_vkCmdSetScissor vkCmdSetScissor; +PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask; +PFN_vkCmdSetStencilReference vkCmdSetStencilReference; +PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask; +PFN_vkCmdSetViewport vkCmdSetViewport; +PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer; +PFN_vkCmdWaitEvents vkCmdWaitEvents; +PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp; +PFN_vkCreateBuffer vkCreateBuffer; +PFN_vkCreateBufferView vkCreateBufferView; +PFN_vkCreateCommandPool vkCreateCommandPool; +PFN_vkCreateComputePipelines vkCreateComputePipelines; +PFN_vkCreateDescriptorPool vkCreateDescriptorPool; +PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout; +PFN_vkCreateDevice vkCreateDevice; +PFN_vkCreateEvent vkCreateEvent; +PFN_vkCreateFence vkCreateFence; +PFN_vkCreateFramebuffer vkCreateFramebuffer; +PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines; +PFN_vkCreateImage vkCreateImage; +PFN_vkCreateImageView vkCreateImageView; +PFN_vkCreateInstance vkCreateInstance; +PFN_vkCreatePipelineCache vkCreatePipelineCache; +PFN_vkCreatePipelineLayout vkCreatePipelineLayout; +PFN_vkCreateQueryPool vkCreateQueryPool; +PFN_vkCreateRenderPass vkCreateRenderPass; +PFN_vkCreateSampler vkCreateSampler; +PFN_vkCreateSemaphore vkCreateSemaphore; +PFN_vkCreateShaderModule vkCreateShaderModule; +PFN_vkDestroyBuffer vkDestroyBuffer; +PFN_vkDestroyBufferView vkDestroyBufferView; +PFN_vkDestroyCommandPool vkDestroyCommandPool; +PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool; +PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout; +PFN_vkDestroyDevice vkDestroyDevice; +PFN_vkDestroyEvent vkDestroyEvent; +PFN_vkDestroyFence vkDestroyFence; +PFN_vkDestroyFramebuffer vkDestroyFramebuffer; +PFN_vkDestroyImage vkDestroyImage; +PFN_vkDestroyImageView vkDestroyImageView; +PFN_vkDestroyInstance vkDestroyInstance; +PFN_vkDestroyPipeline vkDestroyPipeline; +PFN_vkDestroyPipelineCache vkDestroyPipelineCache; +PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout; +PFN_vkDestroyQueryPool vkDestroyQueryPool; +PFN_vkDestroyRenderPass vkDestroyRenderPass; +PFN_vkDestroySampler vkDestroySampler; +PFN_vkDestroySemaphore vkDestroySemaphore; +PFN_vkDestroyShaderModule vkDestroyShaderModule; +PFN_vkDeviceWaitIdle vkDeviceWaitIdle; +PFN_vkEndCommandBuffer vkEndCommandBuffer; +PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties; +PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties; +PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties; +PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties; +PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices; +PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges; +PFN_vkFreeCommandBuffers vkFreeCommandBuffers; +PFN_vkFreeDescriptorSets vkFreeDescriptorSets; +PFN_vkFreeMemory vkFreeMemory; +PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements; +PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment; +PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr; +PFN_vkGetDeviceQueue vkGetDeviceQueue; +PFN_vkGetEventStatus vkGetEventStatus; +PFN_vkGetFenceStatus vkGetFenceStatus; +PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements; +PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements; +PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout; +PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr; +PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures; +PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties; +PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties; +PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties; +PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties; +PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties; +PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties; +PFN_vkGetPipelineCacheData vkGetPipelineCacheData; +PFN_vkGetQueryPoolResults vkGetQueryPoolResults; +PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity; +PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges; +PFN_vkMapMemory vkMapMemory; +PFN_vkMergePipelineCaches vkMergePipelineCaches; +PFN_vkQueueBindSparse vkQueueBindSparse; +PFN_vkQueueSubmit vkQueueSubmit; +PFN_vkQueueWaitIdle vkQueueWaitIdle; +PFN_vkResetCommandBuffer vkResetCommandBuffer; +PFN_vkResetCommandPool vkResetCommandPool; +PFN_vkResetDescriptorPool vkResetDescriptorPool; +PFN_vkResetEvent vkResetEvent; +PFN_vkResetFences vkResetFences; +PFN_vkSetEvent vkSetEvent; +PFN_vkUnmapMemory vkUnmapMemory; +PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets; +PFN_vkWaitForFences vkWaitForFences; +#endif /* defined(VK_VERSION_1_0) */ +#if defined(VK_VERSION_1_1) +PFN_vkBindBufferMemory2 vkBindBufferMemory2; +PFN_vkBindImageMemory2 vkBindImageMemory2; +PFN_vkCmdDispatchBase vkCmdDispatchBase; +PFN_vkCmdSetDeviceMask vkCmdSetDeviceMask; +PFN_vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate; +PFN_vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion; +PFN_vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate; +PFN_vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion; +PFN_vkEnumerateInstanceVersion vkEnumerateInstanceVersion; +PFN_vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups; +PFN_vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2; +PFN_vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport; +PFN_vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures; +PFN_vkGetDeviceQueue2 vkGetDeviceQueue2; +PFN_vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2; +PFN_vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2; +PFN_vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties; +PFN_vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties; +PFN_vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties; +PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2; +PFN_vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2; +PFN_vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2; +PFN_vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2; +PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2; +PFN_vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2; +PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2; +PFN_vkTrimCommandPool vkTrimCommandPool; +PFN_vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate; +#endif /* defined(VK_VERSION_1_1) */ +#if defined(VK_VERSION_1_2) +PFN_vkCmdBeginRenderPass2 vkCmdBeginRenderPass2; +PFN_vkCmdDrawIndexedIndirectCount vkCmdDrawIndexedIndirectCount; +PFN_vkCmdDrawIndirectCount vkCmdDrawIndirectCount; +PFN_vkCmdEndRenderPass2 vkCmdEndRenderPass2; +PFN_vkCmdNextSubpass2 vkCmdNextSubpass2; +PFN_vkCreateRenderPass2 vkCreateRenderPass2; +PFN_vkGetBufferDeviceAddress vkGetBufferDeviceAddress; +PFN_vkGetBufferOpaqueCaptureAddress vkGetBufferOpaqueCaptureAddress; +PFN_vkGetDeviceMemoryOpaqueCaptureAddress vkGetDeviceMemoryOpaqueCaptureAddress; +PFN_vkGetSemaphoreCounterValue vkGetSemaphoreCounterValue; +PFN_vkResetQueryPool vkResetQueryPool; +PFN_vkSignalSemaphore vkSignalSemaphore; +PFN_vkWaitSemaphores vkWaitSemaphores; +#endif /* defined(VK_VERSION_1_2) */ +#if defined(VK_AMD_buffer_marker) +PFN_vkCmdWriteBufferMarkerAMD vkCmdWriteBufferMarkerAMD; +#endif /* defined(VK_AMD_buffer_marker) */ +#if defined(VK_AMD_display_native_hdr) +PFN_vkSetLocalDimmingAMD vkSetLocalDimmingAMD; +#endif /* defined(VK_AMD_display_native_hdr) */ +#if defined(VK_AMD_draw_indirect_count) +PFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD; +PFN_vkCmdDrawIndirectCountAMD vkCmdDrawIndirectCountAMD; +#endif /* defined(VK_AMD_draw_indirect_count) */ +#if defined(VK_AMD_shader_info) +PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD; +#endif /* defined(VK_AMD_shader_info) */ +#if defined(VK_ANDROID_external_memory_android_hardware_buffer) +PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID; +PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID; +#endif /* defined(VK_ANDROID_external_memory_android_hardware_buffer) */ +#if defined(VK_EXT_acquire_xlib_display) +PFN_vkAcquireXlibDisplayEXT vkAcquireXlibDisplayEXT; +PFN_vkGetRandROutputDisplayEXT vkGetRandROutputDisplayEXT; +#endif /* defined(VK_EXT_acquire_xlib_display) */ +#if defined(VK_EXT_buffer_device_address) +PFN_vkGetBufferDeviceAddressEXT vkGetBufferDeviceAddressEXT; +#endif /* defined(VK_EXT_buffer_device_address) */ +#if defined(VK_EXT_calibrated_timestamps) +PFN_vkGetCalibratedTimestampsEXT vkGetCalibratedTimestampsEXT; +PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT vkGetPhysicalDeviceCalibrateableTimeDomainsEXT; +#endif /* defined(VK_EXT_calibrated_timestamps) */ +#if defined(VK_EXT_conditional_rendering) +PFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT; +PFN_vkCmdEndConditionalRenderingEXT vkCmdEndConditionalRenderingEXT; +#endif /* defined(VK_EXT_conditional_rendering) */ +#if defined(VK_EXT_debug_marker) +PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT; +PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT; +PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT; +PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT; +PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT; +#endif /* defined(VK_EXT_debug_marker) */ +#if defined(VK_EXT_debug_report) +PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT; +PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT; +PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT; +#endif /* defined(VK_EXT_debug_report) */ +#if defined(VK_EXT_debug_utils) +PFN_vkCmdBeginDebugUtilsLabelEXT vkCmdBeginDebugUtilsLabelEXT; +PFN_vkCmdEndDebugUtilsLabelEXT vkCmdEndDebugUtilsLabelEXT; +PFN_vkCmdInsertDebugUtilsLabelEXT vkCmdInsertDebugUtilsLabelEXT; +PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT; +PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT; +PFN_vkQueueBeginDebugUtilsLabelEXT vkQueueBeginDebugUtilsLabelEXT; +PFN_vkQueueEndDebugUtilsLabelEXT vkQueueEndDebugUtilsLabelEXT; +PFN_vkQueueInsertDebugUtilsLabelEXT vkQueueInsertDebugUtilsLabelEXT; +PFN_vkSetDebugUtilsObjectNameEXT vkSetDebugUtilsObjectNameEXT; +PFN_vkSetDebugUtilsObjectTagEXT vkSetDebugUtilsObjectTagEXT; +PFN_vkSubmitDebugUtilsMessageEXT vkSubmitDebugUtilsMessageEXT; +#endif /* defined(VK_EXT_debug_utils) */ +#if defined(VK_EXT_direct_mode_display) +PFN_vkReleaseDisplayEXT vkReleaseDisplayEXT; +#endif /* defined(VK_EXT_direct_mode_display) */ +#if defined(VK_EXT_directfb_surface) +PFN_vkCreateDirectFBSurfaceEXT vkCreateDirectFBSurfaceEXT; +PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT vkGetPhysicalDeviceDirectFBPresentationSupportEXT; +#endif /* defined(VK_EXT_directfb_surface) */ +#if defined(VK_EXT_discard_rectangles) +PFN_vkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXT; +#endif /* defined(VK_EXT_discard_rectangles) */ +#if defined(VK_EXT_display_control) +PFN_vkDisplayPowerControlEXT vkDisplayPowerControlEXT; +PFN_vkGetSwapchainCounterEXT vkGetSwapchainCounterEXT; +PFN_vkRegisterDeviceEventEXT vkRegisterDeviceEventEXT; +PFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT; +#endif /* defined(VK_EXT_display_control) */ +#if defined(VK_EXT_display_surface_counter) +PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT vkGetPhysicalDeviceSurfaceCapabilities2EXT; +#endif /* defined(VK_EXT_display_surface_counter) */ +#if defined(VK_EXT_extended_dynamic_state) +PFN_vkCmdBindVertexBuffers2EXT vkCmdBindVertexBuffers2EXT; +PFN_vkCmdSetCullModeEXT vkCmdSetCullModeEXT; +PFN_vkCmdSetDepthBoundsTestEnableEXT vkCmdSetDepthBoundsTestEnableEXT; +PFN_vkCmdSetDepthCompareOpEXT vkCmdSetDepthCompareOpEXT; +PFN_vkCmdSetDepthTestEnableEXT vkCmdSetDepthTestEnableEXT; +PFN_vkCmdSetDepthWriteEnableEXT vkCmdSetDepthWriteEnableEXT; +PFN_vkCmdSetFrontFaceEXT vkCmdSetFrontFaceEXT; +PFN_vkCmdSetPrimitiveTopologyEXT vkCmdSetPrimitiveTopologyEXT; +PFN_vkCmdSetScissorWithCountEXT vkCmdSetScissorWithCountEXT; +PFN_vkCmdSetStencilOpEXT vkCmdSetStencilOpEXT; +PFN_vkCmdSetStencilTestEnableEXT vkCmdSetStencilTestEnableEXT; +PFN_vkCmdSetViewportWithCountEXT vkCmdSetViewportWithCountEXT; +#endif /* defined(VK_EXT_extended_dynamic_state) */ +#if defined(VK_EXT_external_memory_host) +PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT; +#endif /* defined(VK_EXT_external_memory_host) */ +#if defined(VK_EXT_full_screen_exclusive) +PFN_vkAcquireFullScreenExclusiveModeEXT vkAcquireFullScreenExclusiveModeEXT; +PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT vkGetPhysicalDeviceSurfacePresentModes2EXT; +PFN_vkReleaseFullScreenExclusiveModeEXT vkReleaseFullScreenExclusiveModeEXT; +#endif /* defined(VK_EXT_full_screen_exclusive) */ +#if defined(VK_EXT_hdr_metadata) +PFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT; +#endif /* defined(VK_EXT_hdr_metadata) */ +#if defined(VK_EXT_headless_surface) +PFN_vkCreateHeadlessSurfaceEXT vkCreateHeadlessSurfaceEXT; +#endif /* defined(VK_EXT_headless_surface) */ +#if defined(VK_EXT_host_query_reset) +PFN_vkResetQueryPoolEXT vkResetQueryPoolEXT; +#endif /* defined(VK_EXT_host_query_reset) */ +#if defined(VK_EXT_image_drm_format_modifier) +PFN_vkGetImageDrmFormatModifierPropertiesEXT vkGetImageDrmFormatModifierPropertiesEXT; +#endif /* defined(VK_EXT_image_drm_format_modifier) */ +#if defined(VK_EXT_line_rasterization) +PFN_vkCmdSetLineStippleEXT vkCmdSetLineStippleEXT; +#endif /* defined(VK_EXT_line_rasterization) */ +#if defined(VK_EXT_metal_surface) +PFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT; +#endif /* defined(VK_EXT_metal_surface) */ +#if defined(VK_EXT_private_data) +PFN_vkCreatePrivateDataSlotEXT vkCreatePrivateDataSlotEXT; +PFN_vkDestroyPrivateDataSlotEXT vkDestroyPrivateDataSlotEXT; +PFN_vkGetPrivateDataEXT vkGetPrivateDataEXT; +PFN_vkSetPrivateDataEXT vkSetPrivateDataEXT; +#endif /* defined(VK_EXT_private_data) */ +#if defined(VK_EXT_sample_locations) +PFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT; +PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT vkGetPhysicalDeviceMultisamplePropertiesEXT; +#endif /* defined(VK_EXT_sample_locations) */ +#if defined(VK_EXT_tooling_info) +PFN_vkGetPhysicalDeviceToolPropertiesEXT vkGetPhysicalDeviceToolPropertiesEXT; +#endif /* defined(VK_EXT_tooling_info) */ +#if defined(VK_EXT_transform_feedback) +PFN_vkCmdBeginQueryIndexedEXT vkCmdBeginQueryIndexedEXT; +PFN_vkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXT; +PFN_vkCmdBindTransformFeedbackBuffersEXT vkCmdBindTransformFeedbackBuffersEXT; +PFN_vkCmdDrawIndirectByteCountEXT vkCmdDrawIndirectByteCountEXT; +PFN_vkCmdEndQueryIndexedEXT vkCmdEndQueryIndexedEXT; +PFN_vkCmdEndTransformFeedbackEXT vkCmdEndTransformFeedbackEXT; +#endif /* defined(VK_EXT_transform_feedback) */ +#if defined(VK_EXT_validation_cache) +PFN_vkCreateValidationCacheEXT vkCreateValidationCacheEXT; +PFN_vkDestroyValidationCacheEXT vkDestroyValidationCacheEXT; +PFN_vkGetValidationCacheDataEXT vkGetValidationCacheDataEXT; +PFN_vkMergeValidationCachesEXT vkMergeValidationCachesEXT; +#endif /* defined(VK_EXT_validation_cache) */ +#if defined(VK_FUCHSIA_imagepipe_surface) +PFN_vkCreateImagePipeSurfaceFUCHSIA vkCreateImagePipeSurfaceFUCHSIA; +#endif /* defined(VK_FUCHSIA_imagepipe_surface) */ +#if defined(VK_GGP_stream_descriptor_surface) +PFN_vkCreateStreamDescriptorSurfaceGGP vkCreateStreamDescriptorSurfaceGGP; +#endif /* defined(VK_GGP_stream_descriptor_surface) */ +#if defined(VK_GOOGLE_display_timing) +PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE; +PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE; +#endif /* defined(VK_GOOGLE_display_timing) */ +#if defined(VK_INTEL_performance_query) +PFN_vkAcquirePerformanceConfigurationINTEL vkAcquirePerformanceConfigurationINTEL; +PFN_vkCmdSetPerformanceMarkerINTEL vkCmdSetPerformanceMarkerINTEL; +PFN_vkCmdSetPerformanceOverrideINTEL vkCmdSetPerformanceOverrideINTEL; +PFN_vkCmdSetPerformanceStreamMarkerINTEL vkCmdSetPerformanceStreamMarkerINTEL; +PFN_vkGetPerformanceParameterINTEL vkGetPerformanceParameterINTEL; +PFN_vkInitializePerformanceApiINTEL vkInitializePerformanceApiINTEL; +PFN_vkQueueSetPerformanceConfigurationINTEL vkQueueSetPerformanceConfigurationINTEL; +PFN_vkReleasePerformanceConfigurationINTEL vkReleasePerformanceConfigurationINTEL; +PFN_vkUninitializePerformanceApiINTEL vkUninitializePerformanceApiINTEL; +#endif /* defined(VK_INTEL_performance_query) */ +#if defined(VK_KHR_android_surface) +PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR; +#endif /* defined(VK_KHR_android_surface) */ +#if defined(VK_KHR_bind_memory2) +PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR; +PFN_vkBindImageMemory2KHR vkBindImageMemory2KHR; +#endif /* defined(VK_KHR_bind_memory2) */ +#if defined(VK_KHR_buffer_device_address) +PFN_vkGetBufferDeviceAddressKHR vkGetBufferDeviceAddressKHR; +PFN_vkGetBufferOpaqueCaptureAddressKHR vkGetBufferOpaqueCaptureAddressKHR; +PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR vkGetDeviceMemoryOpaqueCaptureAddressKHR; +#endif /* defined(VK_KHR_buffer_device_address) */ +#if defined(VK_KHR_copy_commands2) +PFN_vkCmdBlitImage2KHR vkCmdBlitImage2KHR; +PFN_vkCmdCopyBuffer2KHR vkCmdCopyBuffer2KHR; +PFN_vkCmdCopyBufferToImage2KHR vkCmdCopyBufferToImage2KHR; +PFN_vkCmdCopyImage2KHR vkCmdCopyImage2KHR; +PFN_vkCmdCopyImageToBuffer2KHR vkCmdCopyImageToBuffer2KHR; +PFN_vkCmdResolveImage2KHR vkCmdResolveImage2KHR; +#endif /* defined(VK_KHR_copy_commands2) */ +#if defined(VK_KHR_create_renderpass2) +PFN_vkCmdBeginRenderPass2KHR vkCmdBeginRenderPass2KHR; +PFN_vkCmdEndRenderPass2KHR vkCmdEndRenderPass2KHR; +PFN_vkCmdNextSubpass2KHR vkCmdNextSubpass2KHR; +PFN_vkCreateRenderPass2KHR vkCreateRenderPass2KHR; +#endif /* defined(VK_KHR_create_renderpass2) */ +#if defined(VK_KHR_deferred_host_operations) +PFN_vkCreateDeferredOperationKHR vkCreateDeferredOperationKHR; +PFN_vkDeferredOperationJoinKHR vkDeferredOperationJoinKHR; +PFN_vkDestroyDeferredOperationKHR vkDestroyDeferredOperationKHR; +PFN_vkGetDeferredOperationMaxConcurrencyKHR vkGetDeferredOperationMaxConcurrencyKHR; +PFN_vkGetDeferredOperationResultKHR vkGetDeferredOperationResultKHR; +#endif /* defined(VK_KHR_deferred_host_operations) */ +#if defined(VK_KHR_descriptor_update_template) +PFN_vkCreateDescriptorUpdateTemplateKHR vkCreateDescriptorUpdateTemplateKHR; +PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR; +PFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR; +#endif /* defined(VK_KHR_descriptor_update_template) */ +#if defined(VK_KHR_device_group) +PFN_vkCmdDispatchBaseKHR vkCmdDispatchBaseKHR; +PFN_vkCmdSetDeviceMaskKHR vkCmdSetDeviceMaskKHR; +PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR vkGetDeviceGroupPeerMemoryFeaturesKHR; +#endif /* defined(VK_KHR_device_group) */ +#if defined(VK_KHR_device_group_creation) +PFN_vkEnumeratePhysicalDeviceGroupsKHR vkEnumeratePhysicalDeviceGroupsKHR; +#endif /* defined(VK_KHR_device_group_creation) */ +#if defined(VK_KHR_display) +PFN_vkCreateDisplayModeKHR vkCreateDisplayModeKHR; +PFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR; +PFN_vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR; +PFN_vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR; +PFN_vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR; +PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR; +PFN_vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR; +#endif /* defined(VK_KHR_display) */ +#if defined(VK_KHR_display_swapchain) +PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR; +#endif /* defined(VK_KHR_display_swapchain) */ +#if defined(VK_KHR_draw_indirect_count) +PFN_vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR; +PFN_vkCmdDrawIndirectCountKHR vkCmdDrawIndirectCountKHR; +#endif /* defined(VK_KHR_draw_indirect_count) */ +#if defined(VK_KHR_external_fence_capabilities) +PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR vkGetPhysicalDeviceExternalFencePropertiesKHR; +#endif /* defined(VK_KHR_external_fence_capabilities) */ +#if defined(VK_KHR_external_fence_fd) +PFN_vkGetFenceFdKHR vkGetFenceFdKHR; +PFN_vkImportFenceFdKHR vkImportFenceFdKHR; +#endif /* defined(VK_KHR_external_fence_fd) */ +#if defined(VK_KHR_external_fence_win32) +PFN_vkGetFenceWin32HandleKHR vkGetFenceWin32HandleKHR; +PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR; +#endif /* defined(VK_KHR_external_fence_win32) */ +#if defined(VK_KHR_external_memory_capabilities) +PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR vkGetPhysicalDeviceExternalBufferPropertiesKHR; +#endif /* defined(VK_KHR_external_memory_capabilities) */ +#if defined(VK_KHR_external_memory_fd) +PFN_vkGetMemoryFdKHR vkGetMemoryFdKHR; +PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR; +#endif /* defined(VK_KHR_external_memory_fd) */ +#if defined(VK_KHR_external_memory_win32) +PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR; +PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR; +#endif /* defined(VK_KHR_external_memory_win32) */ +#if defined(VK_KHR_external_semaphore_capabilities) +PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR vkGetPhysicalDeviceExternalSemaphorePropertiesKHR; +#endif /* defined(VK_KHR_external_semaphore_capabilities) */ +#if defined(VK_KHR_external_semaphore_fd) +PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR; +PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR; +#endif /* defined(VK_KHR_external_semaphore_fd) */ +#if defined(VK_KHR_external_semaphore_win32) +PFN_vkGetSemaphoreWin32HandleKHR vkGetSemaphoreWin32HandleKHR; +PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR; +#endif /* defined(VK_KHR_external_semaphore_win32) */ +#if defined(VK_KHR_get_display_properties2) +PFN_vkGetDisplayModeProperties2KHR vkGetDisplayModeProperties2KHR; +PFN_vkGetDisplayPlaneCapabilities2KHR vkGetDisplayPlaneCapabilities2KHR; +PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR vkGetPhysicalDeviceDisplayPlaneProperties2KHR; +PFN_vkGetPhysicalDeviceDisplayProperties2KHR vkGetPhysicalDeviceDisplayProperties2KHR; +#endif /* defined(VK_KHR_get_display_properties2) */ +#if defined(VK_KHR_get_memory_requirements2) +PFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR; +PFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR; +PFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR; +#endif /* defined(VK_KHR_get_memory_requirements2) */ +#if defined(VK_KHR_get_physical_device_properties2) +PFN_vkGetPhysicalDeviceFeatures2KHR vkGetPhysicalDeviceFeatures2KHR; +PFN_vkGetPhysicalDeviceFormatProperties2KHR vkGetPhysicalDeviceFormatProperties2KHR; +PFN_vkGetPhysicalDeviceImageFormatProperties2KHR vkGetPhysicalDeviceImageFormatProperties2KHR; +PFN_vkGetPhysicalDeviceMemoryProperties2KHR vkGetPhysicalDeviceMemoryProperties2KHR; +PFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR; +PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR vkGetPhysicalDeviceQueueFamilyProperties2KHR; +PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR vkGetPhysicalDeviceSparseImageFormatProperties2KHR; +#endif /* defined(VK_KHR_get_physical_device_properties2) */ +#if defined(VK_KHR_get_surface_capabilities2) +PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR vkGetPhysicalDeviceSurfaceCapabilities2KHR; +PFN_vkGetPhysicalDeviceSurfaceFormats2KHR vkGetPhysicalDeviceSurfaceFormats2KHR; +#endif /* defined(VK_KHR_get_surface_capabilities2) */ +#if defined(VK_KHR_maintenance1) +PFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR; +#endif /* defined(VK_KHR_maintenance1) */ +#if defined(VK_KHR_maintenance3) +PFN_vkGetDescriptorSetLayoutSupportKHR vkGetDescriptorSetLayoutSupportKHR; +#endif /* defined(VK_KHR_maintenance3) */ +#if defined(VK_KHR_performance_query) +PFN_vkAcquireProfilingLockKHR vkAcquireProfilingLockKHR; +PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR; +PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR; +PFN_vkReleaseProfilingLockKHR vkReleaseProfilingLockKHR; +#endif /* defined(VK_KHR_performance_query) */ +#if defined(VK_KHR_pipeline_executable_properties) +PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInternalRepresentationsKHR; +PFN_vkGetPipelineExecutablePropertiesKHR vkGetPipelineExecutablePropertiesKHR; +PFN_vkGetPipelineExecutableStatisticsKHR vkGetPipelineExecutableStatisticsKHR; +#endif /* defined(VK_KHR_pipeline_executable_properties) */ +#if defined(VK_KHR_push_descriptor) +PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR; +#endif /* defined(VK_KHR_push_descriptor) */ +#if defined(VK_KHR_ray_tracing) +PFN_vkBindAccelerationStructureMemoryKHR vkBindAccelerationStructureMemoryKHR; +PFN_vkBuildAccelerationStructureKHR vkBuildAccelerationStructureKHR; +PFN_vkCmdBuildAccelerationStructureIndirectKHR vkCmdBuildAccelerationStructureIndirectKHR; +PFN_vkCmdBuildAccelerationStructureKHR vkCmdBuildAccelerationStructureKHR; +PFN_vkCmdCopyAccelerationStructureKHR vkCmdCopyAccelerationStructureKHR; +PFN_vkCmdCopyAccelerationStructureToMemoryKHR vkCmdCopyAccelerationStructureToMemoryKHR; +PFN_vkCmdCopyMemoryToAccelerationStructureKHR vkCmdCopyMemoryToAccelerationStructureKHR; +PFN_vkCmdTraceRaysIndirectKHR vkCmdTraceRaysIndirectKHR; +PFN_vkCmdTraceRaysKHR vkCmdTraceRaysKHR; +PFN_vkCmdWriteAccelerationStructuresPropertiesKHR vkCmdWriteAccelerationStructuresPropertiesKHR; +PFN_vkCopyAccelerationStructureKHR vkCopyAccelerationStructureKHR; +PFN_vkCopyAccelerationStructureToMemoryKHR vkCopyAccelerationStructureToMemoryKHR; +PFN_vkCopyMemoryToAccelerationStructureKHR vkCopyMemoryToAccelerationStructureKHR; +PFN_vkCreateAccelerationStructureKHR vkCreateAccelerationStructureKHR; +PFN_vkCreateRayTracingPipelinesKHR vkCreateRayTracingPipelinesKHR; +PFN_vkDestroyAccelerationStructureKHR vkDestroyAccelerationStructureKHR; +PFN_vkGetAccelerationStructureDeviceAddressKHR vkGetAccelerationStructureDeviceAddressKHR; +PFN_vkGetAccelerationStructureMemoryRequirementsKHR vkGetAccelerationStructureMemoryRequirementsKHR; +PFN_vkGetDeviceAccelerationStructureCompatibilityKHR vkGetDeviceAccelerationStructureCompatibilityKHR; +PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR vkGetRayTracingCaptureReplayShaderGroupHandlesKHR; +PFN_vkGetRayTracingShaderGroupHandlesKHR vkGetRayTracingShaderGroupHandlesKHR; +PFN_vkWriteAccelerationStructuresPropertiesKHR vkWriteAccelerationStructuresPropertiesKHR; +#endif /* defined(VK_KHR_ray_tracing) */ +#if defined(VK_KHR_sampler_ycbcr_conversion) +PFN_vkCreateSamplerYcbcrConversionKHR vkCreateSamplerYcbcrConversionKHR; +PFN_vkDestroySamplerYcbcrConversionKHR vkDestroySamplerYcbcrConversionKHR; +#endif /* defined(VK_KHR_sampler_ycbcr_conversion) */ +#if defined(VK_KHR_shared_presentable_image) +PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR; +#endif /* defined(VK_KHR_shared_presentable_image) */ +#if defined(VK_KHR_surface) +PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR; +PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR; +PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR; +PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR; +PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR; +#endif /* defined(VK_KHR_surface) */ +#if defined(VK_KHR_swapchain) +PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR; +PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR; +PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR; +PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR; +PFN_vkQueuePresentKHR vkQueuePresentKHR; +#endif /* defined(VK_KHR_swapchain) */ +#if defined(VK_KHR_timeline_semaphore) +PFN_vkGetSemaphoreCounterValueKHR vkGetSemaphoreCounterValueKHR; +PFN_vkSignalSemaphoreKHR vkSignalSemaphoreKHR; +PFN_vkWaitSemaphoresKHR vkWaitSemaphoresKHR; +#endif /* defined(VK_KHR_timeline_semaphore) */ +#if defined(VK_KHR_wayland_surface) +PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR; +PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR; +#endif /* defined(VK_KHR_wayland_surface) */ +#if defined(VK_KHR_win32_surface) +PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR; +PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR; +#endif /* defined(VK_KHR_win32_surface) */ +#if defined(VK_KHR_xcb_surface) +PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR; +PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR; +#endif /* defined(VK_KHR_xcb_surface) */ +#if defined(VK_KHR_xlib_surface) +PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR; +PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR; +#endif /* defined(VK_KHR_xlib_surface) */ +#if defined(VK_MVK_ios_surface) +PFN_vkCreateIOSSurfaceMVK vkCreateIOSSurfaceMVK; +#endif /* defined(VK_MVK_ios_surface) */ +#if defined(VK_MVK_macos_surface) +PFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK; +#endif /* defined(VK_MVK_macos_surface) */ +#if defined(VK_NN_vi_surface) +PFN_vkCreateViSurfaceNN vkCreateViSurfaceNN; +#endif /* defined(VK_NN_vi_surface) */ +#if defined(VK_NVX_image_view_handle) +PFN_vkGetImageViewAddressNVX vkGetImageViewAddressNVX; +PFN_vkGetImageViewHandleNVX vkGetImageViewHandleNVX; +#endif /* defined(VK_NVX_image_view_handle) */ +#if defined(VK_NV_clip_space_w_scaling) +PFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV; +#endif /* defined(VK_NV_clip_space_w_scaling) */ +#if defined(VK_NV_cooperative_matrix) +PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV vkGetPhysicalDeviceCooperativeMatrixPropertiesNV; +#endif /* defined(VK_NV_cooperative_matrix) */ +#if defined(VK_NV_coverage_reduction_mode) +PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV; +#endif /* defined(VK_NV_coverage_reduction_mode) */ +#if defined(VK_NV_device_diagnostic_checkpoints) +PFN_vkCmdSetCheckpointNV vkCmdSetCheckpointNV; +PFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV; +#endif /* defined(VK_NV_device_diagnostic_checkpoints) */ +#if defined(VK_NV_device_generated_commands) +PFN_vkCmdBindPipelineShaderGroupNV vkCmdBindPipelineShaderGroupNV; +PFN_vkCmdExecuteGeneratedCommandsNV vkCmdExecuteGeneratedCommandsNV; +PFN_vkCmdPreprocessGeneratedCommandsNV vkCmdPreprocessGeneratedCommandsNV; +PFN_vkCreateIndirectCommandsLayoutNV vkCreateIndirectCommandsLayoutNV; +PFN_vkDestroyIndirectCommandsLayoutNV vkDestroyIndirectCommandsLayoutNV; +PFN_vkGetGeneratedCommandsMemoryRequirementsNV vkGetGeneratedCommandsMemoryRequirementsNV; +#endif /* defined(VK_NV_device_generated_commands) */ +#if defined(VK_NV_external_memory_capabilities) +PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV; +#endif /* defined(VK_NV_external_memory_capabilities) */ +#if defined(VK_NV_external_memory_win32) +PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV; +#endif /* defined(VK_NV_external_memory_win32) */ +#if defined(VK_NV_mesh_shader) +PFN_vkCmdDrawMeshTasksIndirectCountNV vkCmdDrawMeshTasksIndirectCountNV; +PFN_vkCmdDrawMeshTasksIndirectNV vkCmdDrawMeshTasksIndirectNV; +PFN_vkCmdDrawMeshTasksNV vkCmdDrawMeshTasksNV; +#endif /* defined(VK_NV_mesh_shader) */ +#if defined(VK_NV_ray_tracing) +PFN_vkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNV; +PFN_vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV; +PFN_vkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNV; +PFN_vkCmdTraceRaysNV vkCmdTraceRaysNV; +PFN_vkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNV; +PFN_vkCompileDeferredNV vkCompileDeferredNV; +PFN_vkCreateAccelerationStructureNV vkCreateAccelerationStructureNV; +PFN_vkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNV; +PFN_vkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNV; +PFN_vkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNV; +PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV; +PFN_vkGetRayTracingShaderGroupHandlesNV vkGetRayTracingShaderGroupHandlesNV; +#endif /* defined(VK_NV_ray_tracing) */ +#if defined(VK_NV_scissor_exclusive) +PFN_vkCmdSetExclusiveScissorNV vkCmdSetExclusiveScissorNV; +#endif /* defined(VK_NV_scissor_exclusive) */ +#if defined(VK_NV_shading_rate_image) +PFN_vkCmdBindShadingRateImageNV vkCmdBindShadingRateImageNV; +PFN_vkCmdSetCoarseSampleOrderNV vkCmdSetCoarseSampleOrderNV; +PFN_vkCmdSetViewportShadingRatePaletteNV vkCmdSetViewportShadingRatePaletteNV; +#endif /* defined(VK_NV_shading_rate_image) */ +#if (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1)) +PFN_vkGetDeviceGroupSurfacePresentModes2EXT vkGetDeviceGroupSurfacePresentModes2EXT; +#endif /* (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1)) */ +#if (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1)) || (defined(VK_KHR_push_descriptor) && defined(VK_KHR_descriptor_update_template)) +PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR; +#endif /* (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1)) || (defined(VK_KHR_push_descriptor) && defined(VK_KHR_descriptor_update_template)) */ +#if (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) +PFN_vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR; +PFN_vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR; +PFN_vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR; +#endif /* (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) */ +#if (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) +PFN_vkAcquireNextImage2KHR vkAcquireNextImage2KHR; +#endif /* (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) */ +/* VOLK_GENERATE_PROTOTYPES_C */ + +#ifdef __GNUC__ +# pragma GCC visibility pop +#endif + +#ifdef __cplusplus +} +#endif +/* clang-format on */ diff --git a/libs/volk/_installed/include/volk.h b/libs/volk/_installed/include/volk.h new file mode 100644 index 0000000..adf2f0a --- /dev/null +++ b/libs/volk/_installed/include/volk.h @@ -0,0 +1,1273 @@ +/** + * volk + * + * Copyright (C) 2018-2019, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com) + * Report bugs and download new versions at https://github.com/zeux/volk + * + * This library is distributed under the MIT License. See notice at the end of this file. + */ +/* clang-format off */ +#ifndef VOLK_H_ +#define VOLK_H_ + +#if defined(VULKAN_H_) && !defined(VK_NO_PROTOTYPES) +# error To use volk, you need to define VK_NO_PROTOTYPES before including vulkan.h +#endif + +/* VOLK_GENERATE_VERSION_DEFINE */ +#define VOLK_HEADER_VERSION 155 +/* VOLK_GENERATE_VERSION_DEFINE */ + +#ifndef VK_NO_PROTOTYPES +# define VK_NO_PROTOTYPES +#endif + +#ifndef VULKAN_H_ +# ifdef VOLK_VULKAN_H_PATH +# include VOLK_VULKAN_H_PATH +# elif defined(VK_USE_PLATFORM_WIN32_KHR) +# include +# include + + /* When VK_USE_PLATFORM_WIN32_KHR is defined, instead of including vulkan.h directly, we include individual parts of the SDK + * This is necessary to avoid including which is very heavy - it takes 200ms to parse without WIN32_LEAN_AND_MEAN + * and 100ms to parse with it. vulkan_win32.h only needs a few symbols that are easy to redefine ourselves. + */ + typedef unsigned long DWORD; + typedef const wchar_t* LPCWSTR; + typedef void* HANDLE; + typedef struct HINSTANCE__* HINSTANCE; + typedef struct HWND__* HWND; + typedef struct HMONITOR__* HMONITOR; + typedef struct _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES; + +# include + +# ifdef VK_ENABLE_BETA_EXTENSIONS +# include +# endif +# else +# include +# endif +#endif + +/* Disable VK_NVX_image_view_handle because SDK 140 introduced a change that can't be used with prior versions */ +#if VK_HEADER_VERSION < 140 +# undef VK_NVX_image_view_handle +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +struct VolkDeviceTable; + +/** + * Initialize library by loading Vulkan loader; call this function before creating the Vulkan instance. + * + * Returns VK_SUCCESS on success and VK_ERROR_INITIALIZATION_FAILED otherwise. + */ +VkResult volkInitialize(void); + +/** + * Initialize library by providing a custom handler to load global symbols. + * + * This function can be used instead of volkInitialize. + * The handler function pointer will be asked to load global Vulkan symbols which require no instance + * (such as vkCreateInstance, vkEnumerateInstance* and vkEnumerateInstanceVersion if available). + */ +void volkInitializeCustom(PFN_vkGetInstanceProcAddr handler); + +/** + * Get Vulkan instance version supported by the Vulkan loader, or 0 if Vulkan isn't supported + * + * Returns 0 if volkInitialize wasn't called or failed. + */ +uint32_t volkGetInstanceVersion(void); + +/** + * Load global function pointers using application-created VkInstance; call this function after creating the Vulkan instance. + */ +void volkLoadInstance(VkInstance instance); + +/** + * Load global function pointers using application-created VkInstance; call this function after creating the Vulkan instance. + * Skips loading device-based function pointers, requires usage of volkLoadDevice afterwards. + */ +void volkLoadInstanceOnly(VkInstance instance); + +/** + * Load global function pointers using application-created VkDevice; call this function after creating the Vulkan device. + * + * Note: this is not suitable for applications that want to use multiple VkDevice objects concurrently. + */ +void volkLoadDevice(VkDevice device); + +/** + * Return last VkInstance for which global function pointers have been loaded via volkLoadInstance(), + * or VK_NULL_HANDLE if volkLoadInstance() has not been called. + */ +VkInstance volkGetLoadedInstance(void); + +/** + * Return last VkDevice for which global function pointers have been loaded via volkLoadDevice(), + * or VK_NULL_HANDLE if volkLoadDevice() has not been called. + */ +VkDevice volkGetLoadedDevice(void); + +/** + * Load function pointers using application-created VkDevice into a table. + * Application should use function pointers from that table instead of using global function pointers. + */ +void volkLoadDeviceTable(struct VolkDeviceTable* table, VkDevice device); + +/** + * Device-specific function pointer table + */ +struct VolkDeviceTable +{ + /* VOLK_GENERATE_DEVICE_TABLE */ +#if defined(VK_VERSION_1_0) + PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers; + PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets; + PFN_vkAllocateMemory vkAllocateMemory; + PFN_vkBeginCommandBuffer vkBeginCommandBuffer; + PFN_vkBindBufferMemory vkBindBufferMemory; + PFN_vkBindImageMemory vkBindImageMemory; + PFN_vkCmdBeginQuery vkCmdBeginQuery; + PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass; + PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets; + PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer; + PFN_vkCmdBindPipeline vkCmdBindPipeline; + PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers; + PFN_vkCmdBlitImage vkCmdBlitImage; + PFN_vkCmdClearAttachments vkCmdClearAttachments; + PFN_vkCmdClearColorImage vkCmdClearColorImage; + PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage; + PFN_vkCmdCopyBuffer vkCmdCopyBuffer; + PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage; + PFN_vkCmdCopyImage vkCmdCopyImage; + PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer; + PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults; + PFN_vkCmdDispatch vkCmdDispatch; + PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect; + PFN_vkCmdDraw vkCmdDraw; + PFN_vkCmdDrawIndexed vkCmdDrawIndexed; + PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect; + PFN_vkCmdDrawIndirect vkCmdDrawIndirect; + PFN_vkCmdEndQuery vkCmdEndQuery; + PFN_vkCmdEndRenderPass vkCmdEndRenderPass; + PFN_vkCmdExecuteCommands vkCmdExecuteCommands; + PFN_vkCmdFillBuffer vkCmdFillBuffer; + PFN_vkCmdNextSubpass vkCmdNextSubpass; + PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier; + PFN_vkCmdPushConstants vkCmdPushConstants; + PFN_vkCmdResetEvent vkCmdResetEvent; + PFN_vkCmdResetQueryPool vkCmdResetQueryPool; + PFN_vkCmdResolveImage vkCmdResolveImage; + PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants; + PFN_vkCmdSetDepthBias vkCmdSetDepthBias; + PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds; + PFN_vkCmdSetEvent vkCmdSetEvent; + PFN_vkCmdSetLineWidth vkCmdSetLineWidth; + PFN_vkCmdSetScissor vkCmdSetScissor; + PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask; + PFN_vkCmdSetStencilReference vkCmdSetStencilReference; + PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask; + PFN_vkCmdSetViewport vkCmdSetViewport; + PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer; + PFN_vkCmdWaitEvents vkCmdWaitEvents; + PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp; + PFN_vkCreateBuffer vkCreateBuffer; + PFN_vkCreateBufferView vkCreateBufferView; + PFN_vkCreateCommandPool vkCreateCommandPool; + PFN_vkCreateComputePipelines vkCreateComputePipelines; + PFN_vkCreateDescriptorPool vkCreateDescriptorPool; + PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout; + PFN_vkCreateEvent vkCreateEvent; + PFN_vkCreateFence vkCreateFence; + PFN_vkCreateFramebuffer vkCreateFramebuffer; + PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines; + PFN_vkCreateImage vkCreateImage; + PFN_vkCreateImageView vkCreateImageView; + PFN_vkCreatePipelineCache vkCreatePipelineCache; + PFN_vkCreatePipelineLayout vkCreatePipelineLayout; + PFN_vkCreateQueryPool vkCreateQueryPool; + PFN_vkCreateRenderPass vkCreateRenderPass; + PFN_vkCreateSampler vkCreateSampler; + PFN_vkCreateSemaphore vkCreateSemaphore; + PFN_vkCreateShaderModule vkCreateShaderModule; + PFN_vkDestroyBuffer vkDestroyBuffer; + PFN_vkDestroyBufferView vkDestroyBufferView; + PFN_vkDestroyCommandPool vkDestroyCommandPool; + PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool; + PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout; + PFN_vkDestroyDevice vkDestroyDevice; + PFN_vkDestroyEvent vkDestroyEvent; + PFN_vkDestroyFence vkDestroyFence; + PFN_vkDestroyFramebuffer vkDestroyFramebuffer; + PFN_vkDestroyImage vkDestroyImage; + PFN_vkDestroyImageView vkDestroyImageView; + PFN_vkDestroyPipeline vkDestroyPipeline; + PFN_vkDestroyPipelineCache vkDestroyPipelineCache; + PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout; + PFN_vkDestroyQueryPool vkDestroyQueryPool; + PFN_vkDestroyRenderPass vkDestroyRenderPass; + PFN_vkDestroySampler vkDestroySampler; + PFN_vkDestroySemaphore vkDestroySemaphore; + PFN_vkDestroyShaderModule vkDestroyShaderModule; + PFN_vkDeviceWaitIdle vkDeviceWaitIdle; + PFN_vkEndCommandBuffer vkEndCommandBuffer; + PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges; + PFN_vkFreeCommandBuffers vkFreeCommandBuffers; + PFN_vkFreeDescriptorSets vkFreeDescriptorSets; + PFN_vkFreeMemory vkFreeMemory; + PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements; + PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment; + PFN_vkGetDeviceQueue vkGetDeviceQueue; + PFN_vkGetEventStatus vkGetEventStatus; + PFN_vkGetFenceStatus vkGetFenceStatus; + PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements; + PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements; + PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout; + PFN_vkGetPipelineCacheData vkGetPipelineCacheData; + PFN_vkGetQueryPoolResults vkGetQueryPoolResults; + PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity; + PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges; + PFN_vkMapMemory vkMapMemory; + PFN_vkMergePipelineCaches vkMergePipelineCaches; + PFN_vkQueueBindSparse vkQueueBindSparse; + PFN_vkQueueSubmit vkQueueSubmit; + PFN_vkQueueWaitIdle vkQueueWaitIdle; + PFN_vkResetCommandBuffer vkResetCommandBuffer; + PFN_vkResetCommandPool vkResetCommandPool; + PFN_vkResetDescriptorPool vkResetDescriptorPool; + PFN_vkResetEvent vkResetEvent; + PFN_vkResetFences vkResetFences; + PFN_vkSetEvent vkSetEvent; + PFN_vkUnmapMemory vkUnmapMemory; + PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets; + PFN_vkWaitForFences vkWaitForFences; +#endif /* defined(VK_VERSION_1_0) */ +#if defined(VK_VERSION_1_1) + PFN_vkBindBufferMemory2 vkBindBufferMemory2; + PFN_vkBindImageMemory2 vkBindImageMemory2; + PFN_vkCmdDispatchBase vkCmdDispatchBase; + PFN_vkCmdSetDeviceMask vkCmdSetDeviceMask; + PFN_vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate; + PFN_vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion; + PFN_vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate; + PFN_vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion; + PFN_vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2; + PFN_vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport; + PFN_vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures; + PFN_vkGetDeviceQueue2 vkGetDeviceQueue2; + PFN_vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2; + PFN_vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2; + PFN_vkTrimCommandPool vkTrimCommandPool; + PFN_vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate; +#endif /* defined(VK_VERSION_1_1) */ +#if defined(VK_VERSION_1_2) + PFN_vkCmdBeginRenderPass2 vkCmdBeginRenderPass2; + PFN_vkCmdDrawIndexedIndirectCount vkCmdDrawIndexedIndirectCount; + PFN_vkCmdDrawIndirectCount vkCmdDrawIndirectCount; + PFN_vkCmdEndRenderPass2 vkCmdEndRenderPass2; + PFN_vkCmdNextSubpass2 vkCmdNextSubpass2; + PFN_vkCreateRenderPass2 vkCreateRenderPass2; + PFN_vkGetBufferDeviceAddress vkGetBufferDeviceAddress; + PFN_vkGetBufferOpaqueCaptureAddress vkGetBufferOpaqueCaptureAddress; + PFN_vkGetDeviceMemoryOpaqueCaptureAddress vkGetDeviceMemoryOpaqueCaptureAddress; + PFN_vkGetSemaphoreCounterValue vkGetSemaphoreCounterValue; + PFN_vkResetQueryPool vkResetQueryPool; + PFN_vkSignalSemaphore vkSignalSemaphore; + PFN_vkWaitSemaphores vkWaitSemaphores; +#endif /* defined(VK_VERSION_1_2) */ +#if defined(VK_AMD_buffer_marker) + PFN_vkCmdWriteBufferMarkerAMD vkCmdWriteBufferMarkerAMD; +#endif /* defined(VK_AMD_buffer_marker) */ +#if defined(VK_AMD_display_native_hdr) + PFN_vkSetLocalDimmingAMD vkSetLocalDimmingAMD; +#endif /* defined(VK_AMD_display_native_hdr) */ +#if defined(VK_AMD_draw_indirect_count) + PFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD; + PFN_vkCmdDrawIndirectCountAMD vkCmdDrawIndirectCountAMD; +#endif /* defined(VK_AMD_draw_indirect_count) */ +#if defined(VK_AMD_shader_info) + PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD; +#endif /* defined(VK_AMD_shader_info) */ +#if defined(VK_ANDROID_external_memory_android_hardware_buffer) + PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID; + PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID; +#endif /* defined(VK_ANDROID_external_memory_android_hardware_buffer) */ +#if defined(VK_EXT_buffer_device_address) + PFN_vkGetBufferDeviceAddressEXT vkGetBufferDeviceAddressEXT; +#endif /* defined(VK_EXT_buffer_device_address) */ +#if defined(VK_EXT_calibrated_timestamps) + PFN_vkGetCalibratedTimestampsEXT vkGetCalibratedTimestampsEXT; +#endif /* defined(VK_EXT_calibrated_timestamps) */ +#if defined(VK_EXT_conditional_rendering) + PFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT; + PFN_vkCmdEndConditionalRenderingEXT vkCmdEndConditionalRenderingEXT; +#endif /* defined(VK_EXT_conditional_rendering) */ +#if defined(VK_EXT_debug_marker) + PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT; + PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT; + PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT; + PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT; + PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT; +#endif /* defined(VK_EXT_debug_marker) */ +#if defined(VK_EXT_discard_rectangles) + PFN_vkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXT; +#endif /* defined(VK_EXT_discard_rectangles) */ +#if defined(VK_EXT_display_control) + PFN_vkDisplayPowerControlEXT vkDisplayPowerControlEXT; + PFN_vkGetSwapchainCounterEXT vkGetSwapchainCounterEXT; + PFN_vkRegisterDeviceEventEXT vkRegisterDeviceEventEXT; + PFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT; +#endif /* defined(VK_EXT_display_control) */ +#if defined(VK_EXT_extended_dynamic_state) + PFN_vkCmdBindVertexBuffers2EXT vkCmdBindVertexBuffers2EXT; + PFN_vkCmdSetCullModeEXT vkCmdSetCullModeEXT; + PFN_vkCmdSetDepthBoundsTestEnableEXT vkCmdSetDepthBoundsTestEnableEXT; + PFN_vkCmdSetDepthCompareOpEXT vkCmdSetDepthCompareOpEXT; + PFN_vkCmdSetDepthTestEnableEXT vkCmdSetDepthTestEnableEXT; + PFN_vkCmdSetDepthWriteEnableEXT vkCmdSetDepthWriteEnableEXT; + PFN_vkCmdSetFrontFaceEXT vkCmdSetFrontFaceEXT; + PFN_vkCmdSetPrimitiveTopologyEXT vkCmdSetPrimitiveTopologyEXT; + PFN_vkCmdSetScissorWithCountEXT vkCmdSetScissorWithCountEXT; + PFN_vkCmdSetStencilOpEXT vkCmdSetStencilOpEXT; + PFN_vkCmdSetStencilTestEnableEXT vkCmdSetStencilTestEnableEXT; + PFN_vkCmdSetViewportWithCountEXT vkCmdSetViewportWithCountEXT; +#endif /* defined(VK_EXT_extended_dynamic_state) */ +#if defined(VK_EXT_external_memory_host) + PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT; +#endif /* defined(VK_EXT_external_memory_host) */ +#if defined(VK_EXT_full_screen_exclusive) + PFN_vkAcquireFullScreenExclusiveModeEXT vkAcquireFullScreenExclusiveModeEXT; + PFN_vkReleaseFullScreenExclusiveModeEXT vkReleaseFullScreenExclusiveModeEXT; +#endif /* defined(VK_EXT_full_screen_exclusive) */ +#if defined(VK_EXT_hdr_metadata) + PFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT; +#endif /* defined(VK_EXT_hdr_metadata) */ +#if defined(VK_EXT_host_query_reset) + PFN_vkResetQueryPoolEXT vkResetQueryPoolEXT; +#endif /* defined(VK_EXT_host_query_reset) */ +#if defined(VK_EXT_image_drm_format_modifier) + PFN_vkGetImageDrmFormatModifierPropertiesEXT vkGetImageDrmFormatModifierPropertiesEXT; +#endif /* defined(VK_EXT_image_drm_format_modifier) */ +#if defined(VK_EXT_line_rasterization) + PFN_vkCmdSetLineStippleEXT vkCmdSetLineStippleEXT; +#endif /* defined(VK_EXT_line_rasterization) */ +#if defined(VK_EXT_private_data) + PFN_vkCreatePrivateDataSlotEXT vkCreatePrivateDataSlotEXT; + PFN_vkDestroyPrivateDataSlotEXT vkDestroyPrivateDataSlotEXT; + PFN_vkGetPrivateDataEXT vkGetPrivateDataEXT; + PFN_vkSetPrivateDataEXT vkSetPrivateDataEXT; +#endif /* defined(VK_EXT_private_data) */ +#if defined(VK_EXT_sample_locations) + PFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT; +#endif /* defined(VK_EXT_sample_locations) */ +#if defined(VK_EXT_transform_feedback) + PFN_vkCmdBeginQueryIndexedEXT vkCmdBeginQueryIndexedEXT; + PFN_vkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXT; + PFN_vkCmdBindTransformFeedbackBuffersEXT vkCmdBindTransformFeedbackBuffersEXT; + PFN_vkCmdDrawIndirectByteCountEXT vkCmdDrawIndirectByteCountEXT; + PFN_vkCmdEndQueryIndexedEXT vkCmdEndQueryIndexedEXT; + PFN_vkCmdEndTransformFeedbackEXT vkCmdEndTransformFeedbackEXT; +#endif /* defined(VK_EXT_transform_feedback) */ +#if defined(VK_EXT_validation_cache) + PFN_vkCreateValidationCacheEXT vkCreateValidationCacheEXT; + PFN_vkDestroyValidationCacheEXT vkDestroyValidationCacheEXT; + PFN_vkGetValidationCacheDataEXT vkGetValidationCacheDataEXT; + PFN_vkMergeValidationCachesEXT vkMergeValidationCachesEXT; +#endif /* defined(VK_EXT_validation_cache) */ +#if defined(VK_GOOGLE_display_timing) + PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE; + PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE; +#endif /* defined(VK_GOOGLE_display_timing) */ +#if defined(VK_INTEL_performance_query) + PFN_vkAcquirePerformanceConfigurationINTEL vkAcquirePerformanceConfigurationINTEL; + PFN_vkCmdSetPerformanceMarkerINTEL vkCmdSetPerformanceMarkerINTEL; + PFN_vkCmdSetPerformanceOverrideINTEL vkCmdSetPerformanceOverrideINTEL; + PFN_vkCmdSetPerformanceStreamMarkerINTEL vkCmdSetPerformanceStreamMarkerINTEL; + PFN_vkGetPerformanceParameterINTEL vkGetPerformanceParameterINTEL; + PFN_vkInitializePerformanceApiINTEL vkInitializePerformanceApiINTEL; + PFN_vkQueueSetPerformanceConfigurationINTEL vkQueueSetPerformanceConfigurationINTEL; + PFN_vkReleasePerformanceConfigurationINTEL vkReleasePerformanceConfigurationINTEL; + PFN_vkUninitializePerformanceApiINTEL vkUninitializePerformanceApiINTEL; +#endif /* defined(VK_INTEL_performance_query) */ +#if defined(VK_KHR_bind_memory2) + PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR; + PFN_vkBindImageMemory2KHR vkBindImageMemory2KHR; +#endif /* defined(VK_KHR_bind_memory2) */ +#if defined(VK_KHR_buffer_device_address) + PFN_vkGetBufferDeviceAddressKHR vkGetBufferDeviceAddressKHR; + PFN_vkGetBufferOpaqueCaptureAddressKHR vkGetBufferOpaqueCaptureAddressKHR; + PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR vkGetDeviceMemoryOpaqueCaptureAddressKHR; +#endif /* defined(VK_KHR_buffer_device_address) */ +#if defined(VK_KHR_copy_commands2) + PFN_vkCmdBlitImage2KHR vkCmdBlitImage2KHR; + PFN_vkCmdCopyBuffer2KHR vkCmdCopyBuffer2KHR; + PFN_vkCmdCopyBufferToImage2KHR vkCmdCopyBufferToImage2KHR; + PFN_vkCmdCopyImage2KHR vkCmdCopyImage2KHR; + PFN_vkCmdCopyImageToBuffer2KHR vkCmdCopyImageToBuffer2KHR; + PFN_vkCmdResolveImage2KHR vkCmdResolveImage2KHR; +#endif /* defined(VK_KHR_copy_commands2) */ +#if defined(VK_KHR_create_renderpass2) + PFN_vkCmdBeginRenderPass2KHR vkCmdBeginRenderPass2KHR; + PFN_vkCmdEndRenderPass2KHR vkCmdEndRenderPass2KHR; + PFN_vkCmdNextSubpass2KHR vkCmdNextSubpass2KHR; + PFN_vkCreateRenderPass2KHR vkCreateRenderPass2KHR; +#endif /* defined(VK_KHR_create_renderpass2) */ +#if defined(VK_KHR_deferred_host_operations) + PFN_vkCreateDeferredOperationKHR vkCreateDeferredOperationKHR; + PFN_vkDeferredOperationJoinKHR vkDeferredOperationJoinKHR; + PFN_vkDestroyDeferredOperationKHR vkDestroyDeferredOperationKHR; + PFN_vkGetDeferredOperationMaxConcurrencyKHR vkGetDeferredOperationMaxConcurrencyKHR; + PFN_vkGetDeferredOperationResultKHR vkGetDeferredOperationResultKHR; +#endif /* defined(VK_KHR_deferred_host_operations) */ +#if defined(VK_KHR_descriptor_update_template) + PFN_vkCreateDescriptorUpdateTemplateKHR vkCreateDescriptorUpdateTemplateKHR; + PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR; + PFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR; +#endif /* defined(VK_KHR_descriptor_update_template) */ +#if defined(VK_KHR_device_group) + PFN_vkCmdDispatchBaseKHR vkCmdDispatchBaseKHR; + PFN_vkCmdSetDeviceMaskKHR vkCmdSetDeviceMaskKHR; + PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR vkGetDeviceGroupPeerMemoryFeaturesKHR; +#endif /* defined(VK_KHR_device_group) */ +#if defined(VK_KHR_display_swapchain) + PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR; +#endif /* defined(VK_KHR_display_swapchain) */ +#if defined(VK_KHR_draw_indirect_count) + PFN_vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR; + PFN_vkCmdDrawIndirectCountKHR vkCmdDrawIndirectCountKHR; +#endif /* defined(VK_KHR_draw_indirect_count) */ +#if defined(VK_KHR_external_fence_fd) + PFN_vkGetFenceFdKHR vkGetFenceFdKHR; + PFN_vkImportFenceFdKHR vkImportFenceFdKHR; +#endif /* defined(VK_KHR_external_fence_fd) */ +#if defined(VK_KHR_external_fence_win32) + PFN_vkGetFenceWin32HandleKHR vkGetFenceWin32HandleKHR; + PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR; +#endif /* defined(VK_KHR_external_fence_win32) */ +#if defined(VK_KHR_external_memory_fd) + PFN_vkGetMemoryFdKHR vkGetMemoryFdKHR; + PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR; +#endif /* defined(VK_KHR_external_memory_fd) */ +#if defined(VK_KHR_external_memory_win32) + PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR; + PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR; +#endif /* defined(VK_KHR_external_memory_win32) */ +#if defined(VK_KHR_external_semaphore_fd) + PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR; + PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR; +#endif /* defined(VK_KHR_external_semaphore_fd) */ +#if defined(VK_KHR_external_semaphore_win32) + PFN_vkGetSemaphoreWin32HandleKHR vkGetSemaphoreWin32HandleKHR; + PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR; +#endif /* defined(VK_KHR_external_semaphore_win32) */ +#if defined(VK_KHR_get_memory_requirements2) + PFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR; + PFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR; + PFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR; +#endif /* defined(VK_KHR_get_memory_requirements2) */ +#if defined(VK_KHR_maintenance1) + PFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR; +#endif /* defined(VK_KHR_maintenance1) */ +#if defined(VK_KHR_maintenance3) + PFN_vkGetDescriptorSetLayoutSupportKHR vkGetDescriptorSetLayoutSupportKHR; +#endif /* defined(VK_KHR_maintenance3) */ +#if defined(VK_KHR_performance_query) + PFN_vkAcquireProfilingLockKHR vkAcquireProfilingLockKHR; + PFN_vkReleaseProfilingLockKHR vkReleaseProfilingLockKHR; +#endif /* defined(VK_KHR_performance_query) */ +#if defined(VK_KHR_pipeline_executable_properties) + PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInternalRepresentationsKHR; + PFN_vkGetPipelineExecutablePropertiesKHR vkGetPipelineExecutablePropertiesKHR; + PFN_vkGetPipelineExecutableStatisticsKHR vkGetPipelineExecutableStatisticsKHR; +#endif /* defined(VK_KHR_pipeline_executable_properties) */ +#if defined(VK_KHR_push_descriptor) + PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR; +#endif /* defined(VK_KHR_push_descriptor) */ +#if defined(VK_KHR_ray_tracing) + PFN_vkBindAccelerationStructureMemoryKHR vkBindAccelerationStructureMemoryKHR; + PFN_vkBuildAccelerationStructureKHR vkBuildAccelerationStructureKHR; + PFN_vkCmdBuildAccelerationStructureIndirectKHR vkCmdBuildAccelerationStructureIndirectKHR; + PFN_vkCmdBuildAccelerationStructureKHR vkCmdBuildAccelerationStructureKHR; + PFN_vkCmdCopyAccelerationStructureKHR vkCmdCopyAccelerationStructureKHR; + PFN_vkCmdCopyAccelerationStructureToMemoryKHR vkCmdCopyAccelerationStructureToMemoryKHR; + PFN_vkCmdCopyMemoryToAccelerationStructureKHR vkCmdCopyMemoryToAccelerationStructureKHR; + PFN_vkCmdTraceRaysIndirectKHR vkCmdTraceRaysIndirectKHR; + PFN_vkCmdTraceRaysKHR vkCmdTraceRaysKHR; + PFN_vkCmdWriteAccelerationStructuresPropertiesKHR vkCmdWriteAccelerationStructuresPropertiesKHR; + PFN_vkCopyAccelerationStructureKHR vkCopyAccelerationStructureKHR; + PFN_vkCopyAccelerationStructureToMemoryKHR vkCopyAccelerationStructureToMemoryKHR; + PFN_vkCopyMemoryToAccelerationStructureKHR vkCopyMemoryToAccelerationStructureKHR; + PFN_vkCreateAccelerationStructureKHR vkCreateAccelerationStructureKHR; + PFN_vkCreateRayTracingPipelinesKHR vkCreateRayTracingPipelinesKHR; + PFN_vkDestroyAccelerationStructureKHR vkDestroyAccelerationStructureKHR; + PFN_vkGetAccelerationStructureDeviceAddressKHR vkGetAccelerationStructureDeviceAddressKHR; + PFN_vkGetAccelerationStructureMemoryRequirementsKHR vkGetAccelerationStructureMemoryRequirementsKHR; + PFN_vkGetDeviceAccelerationStructureCompatibilityKHR vkGetDeviceAccelerationStructureCompatibilityKHR; + PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR vkGetRayTracingCaptureReplayShaderGroupHandlesKHR; + PFN_vkGetRayTracingShaderGroupHandlesKHR vkGetRayTracingShaderGroupHandlesKHR; + PFN_vkWriteAccelerationStructuresPropertiesKHR vkWriteAccelerationStructuresPropertiesKHR; +#endif /* defined(VK_KHR_ray_tracing) */ +#if defined(VK_KHR_sampler_ycbcr_conversion) + PFN_vkCreateSamplerYcbcrConversionKHR vkCreateSamplerYcbcrConversionKHR; + PFN_vkDestroySamplerYcbcrConversionKHR vkDestroySamplerYcbcrConversionKHR; +#endif /* defined(VK_KHR_sampler_ycbcr_conversion) */ +#if defined(VK_KHR_shared_presentable_image) + PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR; +#endif /* defined(VK_KHR_shared_presentable_image) */ +#if defined(VK_KHR_swapchain) + PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR; + PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR; + PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR; + PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR; + PFN_vkQueuePresentKHR vkQueuePresentKHR; +#endif /* defined(VK_KHR_swapchain) */ +#if defined(VK_KHR_timeline_semaphore) + PFN_vkGetSemaphoreCounterValueKHR vkGetSemaphoreCounterValueKHR; + PFN_vkSignalSemaphoreKHR vkSignalSemaphoreKHR; + PFN_vkWaitSemaphoresKHR vkWaitSemaphoresKHR; +#endif /* defined(VK_KHR_timeline_semaphore) */ +#if defined(VK_NVX_image_view_handle) + PFN_vkGetImageViewAddressNVX vkGetImageViewAddressNVX; + PFN_vkGetImageViewHandleNVX vkGetImageViewHandleNVX; +#endif /* defined(VK_NVX_image_view_handle) */ +#if defined(VK_NV_clip_space_w_scaling) + PFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV; +#endif /* defined(VK_NV_clip_space_w_scaling) */ +#if defined(VK_NV_device_diagnostic_checkpoints) + PFN_vkCmdSetCheckpointNV vkCmdSetCheckpointNV; + PFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV; +#endif /* defined(VK_NV_device_diagnostic_checkpoints) */ +#if defined(VK_NV_device_generated_commands) + PFN_vkCmdBindPipelineShaderGroupNV vkCmdBindPipelineShaderGroupNV; + PFN_vkCmdExecuteGeneratedCommandsNV vkCmdExecuteGeneratedCommandsNV; + PFN_vkCmdPreprocessGeneratedCommandsNV vkCmdPreprocessGeneratedCommandsNV; + PFN_vkCreateIndirectCommandsLayoutNV vkCreateIndirectCommandsLayoutNV; + PFN_vkDestroyIndirectCommandsLayoutNV vkDestroyIndirectCommandsLayoutNV; + PFN_vkGetGeneratedCommandsMemoryRequirementsNV vkGetGeneratedCommandsMemoryRequirementsNV; +#endif /* defined(VK_NV_device_generated_commands) */ +#if defined(VK_NV_external_memory_win32) + PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV; +#endif /* defined(VK_NV_external_memory_win32) */ +#if defined(VK_NV_mesh_shader) + PFN_vkCmdDrawMeshTasksIndirectCountNV vkCmdDrawMeshTasksIndirectCountNV; + PFN_vkCmdDrawMeshTasksIndirectNV vkCmdDrawMeshTasksIndirectNV; + PFN_vkCmdDrawMeshTasksNV vkCmdDrawMeshTasksNV; +#endif /* defined(VK_NV_mesh_shader) */ +#if defined(VK_NV_ray_tracing) + PFN_vkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNV; + PFN_vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV; + PFN_vkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNV; + PFN_vkCmdTraceRaysNV vkCmdTraceRaysNV; + PFN_vkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNV; + PFN_vkCompileDeferredNV vkCompileDeferredNV; + PFN_vkCreateAccelerationStructureNV vkCreateAccelerationStructureNV; + PFN_vkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNV; + PFN_vkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNV; + PFN_vkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNV; + PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV; + PFN_vkGetRayTracingShaderGroupHandlesNV vkGetRayTracingShaderGroupHandlesNV; +#endif /* defined(VK_NV_ray_tracing) */ +#if defined(VK_NV_scissor_exclusive) + PFN_vkCmdSetExclusiveScissorNV vkCmdSetExclusiveScissorNV; +#endif /* defined(VK_NV_scissor_exclusive) */ +#if defined(VK_NV_shading_rate_image) + PFN_vkCmdBindShadingRateImageNV vkCmdBindShadingRateImageNV; + PFN_vkCmdSetCoarseSampleOrderNV vkCmdSetCoarseSampleOrderNV; + PFN_vkCmdSetViewportShadingRatePaletteNV vkCmdSetViewportShadingRatePaletteNV; +#endif /* defined(VK_NV_shading_rate_image) */ +#if (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1)) + PFN_vkGetDeviceGroupSurfacePresentModes2EXT vkGetDeviceGroupSurfacePresentModes2EXT; +#endif /* (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1)) */ +#if (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1)) || (defined(VK_KHR_push_descriptor) && defined(VK_KHR_descriptor_update_template)) + PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR; +#endif /* (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1)) || (defined(VK_KHR_push_descriptor) && defined(VK_KHR_descriptor_update_template)) */ +#if (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) + PFN_vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR; + PFN_vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR; +#endif /* (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) */ +#if (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) + PFN_vkAcquireNextImage2KHR vkAcquireNextImage2KHR; +#endif /* (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) */ + /* VOLK_GENERATE_DEVICE_TABLE */ +}; + +/* VOLK_GENERATE_PROTOTYPES_H */ +#if defined(VK_VERSION_1_0) +extern PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers; +extern PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets; +extern PFN_vkAllocateMemory vkAllocateMemory; +extern PFN_vkBeginCommandBuffer vkBeginCommandBuffer; +extern PFN_vkBindBufferMemory vkBindBufferMemory; +extern PFN_vkBindImageMemory vkBindImageMemory; +extern PFN_vkCmdBeginQuery vkCmdBeginQuery; +extern PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass; +extern PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets; +extern PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer; +extern PFN_vkCmdBindPipeline vkCmdBindPipeline; +extern PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers; +extern PFN_vkCmdBlitImage vkCmdBlitImage; +extern PFN_vkCmdClearAttachments vkCmdClearAttachments; +extern PFN_vkCmdClearColorImage vkCmdClearColorImage; +extern PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage; +extern PFN_vkCmdCopyBuffer vkCmdCopyBuffer; +extern PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage; +extern PFN_vkCmdCopyImage vkCmdCopyImage; +extern PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer; +extern PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults; +extern PFN_vkCmdDispatch vkCmdDispatch; +extern PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect; +extern PFN_vkCmdDraw vkCmdDraw; +extern PFN_vkCmdDrawIndexed vkCmdDrawIndexed; +extern PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect; +extern PFN_vkCmdDrawIndirect vkCmdDrawIndirect; +extern PFN_vkCmdEndQuery vkCmdEndQuery; +extern PFN_vkCmdEndRenderPass vkCmdEndRenderPass; +extern PFN_vkCmdExecuteCommands vkCmdExecuteCommands; +extern PFN_vkCmdFillBuffer vkCmdFillBuffer; +extern PFN_vkCmdNextSubpass vkCmdNextSubpass; +extern PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier; +extern PFN_vkCmdPushConstants vkCmdPushConstants; +extern PFN_vkCmdResetEvent vkCmdResetEvent; +extern PFN_vkCmdResetQueryPool vkCmdResetQueryPool; +extern PFN_vkCmdResolveImage vkCmdResolveImage; +extern PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants; +extern PFN_vkCmdSetDepthBias vkCmdSetDepthBias; +extern PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds; +extern PFN_vkCmdSetEvent vkCmdSetEvent; +extern PFN_vkCmdSetLineWidth vkCmdSetLineWidth; +extern PFN_vkCmdSetScissor vkCmdSetScissor; +extern PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask; +extern PFN_vkCmdSetStencilReference vkCmdSetStencilReference; +extern PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask; +extern PFN_vkCmdSetViewport vkCmdSetViewport; +extern PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer; +extern PFN_vkCmdWaitEvents vkCmdWaitEvents; +extern PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp; +extern PFN_vkCreateBuffer vkCreateBuffer; +extern PFN_vkCreateBufferView vkCreateBufferView; +extern PFN_vkCreateCommandPool vkCreateCommandPool; +extern PFN_vkCreateComputePipelines vkCreateComputePipelines; +extern PFN_vkCreateDescriptorPool vkCreateDescriptorPool; +extern PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout; +extern PFN_vkCreateDevice vkCreateDevice; +extern PFN_vkCreateEvent vkCreateEvent; +extern PFN_vkCreateFence vkCreateFence; +extern PFN_vkCreateFramebuffer vkCreateFramebuffer; +extern PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines; +extern PFN_vkCreateImage vkCreateImage; +extern PFN_vkCreateImageView vkCreateImageView; +extern PFN_vkCreateInstance vkCreateInstance; +extern PFN_vkCreatePipelineCache vkCreatePipelineCache; +extern PFN_vkCreatePipelineLayout vkCreatePipelineLayout; +extern PFN_vkCreateQueryPool vkCreateQueryPool; +extern PFN_vkCreateRenderPass vkCreateRenderPass; +extern PFN_vkCreateSampler vkCreateSampler; +extern PFN_vkCreateSemaphore vkCreateSemaphore; +extern PFN_vkCreateShaderModule vkCreateShaderModule; +extern PFN_vkDestroyBuffer vkDestroyBuffer; +extern PFN_vkDestroyBufferView vkDestroyBufferView; +extern PFN_vkDestroyCommandPool vkDestroyCommandPool; +extern PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool; +extern PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout; +extern PFN_vkDestroyDevice vkDestroyDevice; +extern PFN_vkDestroyEvent vkDestroyEvent; +extern PFN_vkDestroyFence vkDestroyFence; +extern PFN_vkDestroyFramebuffer vkDestroyFramebuffer; +extern PFN_vkDestroyImage vkDestroyImage; +extern PFN_vkDestroyImageView vkDestroyImageView; +extern PFN_vkDestroyInstance vkDestroyInstance; +extern PFN_vkDestroyPipeline vkDestroyPipeline; +extern PFN_vkDestroyPipelineCache vkDestroyPipelineCache; +extern PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout; +extern PFN_vkDestroyQueryPool vkDestroyQueryPool; +extern PFN_vkDestroyRenderPass vkDestroyRenderPass; +extern PFN_vkDestroySampler vkDestroySampler; +extern PFN_vkDestroySemaphore vkDestroySemaphore; +extern PFN_vkDestroyShaderModule vkDestroyShaderModule; +extern PFN_vkDeviceWaitIdle vkDeviceWaitIdle; +extern PFN_vkEndCommandBuffer vkEndCommandBuffer; +extern PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties; +extern PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties; +extern PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties; +extern PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties; +extern PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices; +extern PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges; +extern PFN_vkFreeCommandBuffers vkFreeCommandBuffers; +extern PFN_vkFreeDescriptorSets vkFreeDescriptorSets; +extern PFN_vkFreeMemory vkFreeMemory; +extern PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements; +extern PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment; +extern PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr; +extern PFN_vkGetDeviceQueue vkGetDeviceQueue; +extern PFN_vkGetEventStatus vkGetEventStatus; +extern PFN_vkGetFenceStatus vkGetFenceStatus; +extern PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements; +extern PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements; +extern PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout; +extern PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr; +extern PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures; +extern PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties; +extern PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties; +extern PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties; +extern PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties; +extern PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties; +extern PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties; +extern PFN_vkGetPipelineCacheData vkGetPipelineCacheData; +extern PFN_vkGetQueryPoolResults vkGetQueryPoolResults; +extern PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity; +extern PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges; +extern PFN_vkMapMemory vkMapMemory; +extern PFN_vkMergePipelineCaches vkMergePipelineCaches; +extern PFN_vkQueueBindSparse vkQueueBindSparse; +extern PFN_vkQueueSubmit vkQueueSubmit; +extern PFN_vkQueueWaitIdle vkQueueWaitIdle; +extern PFN_vkResetCommandBuffer vkResetCommandBuffer; +extern PFN_vkResetCommandPool vkResetCommandPool; +extern PFN_vkResetDescriptorPool vkResetDescriptorPool; +extern PFN_vkResetEvent vkResetEvent; +extern PFN_vkResetFences vkResetFences; +extern PFN_vkSetEvent vkSetEvent; +extern PFN_vkUnmapMemory vkUnmapMemory; +extern PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets; +extern PFN_vkWaitForFences vkWaitForFences; +#endif /* defined(VK_VERSION_1_0) */ +#if defined(VK_VERSION_1_1) +extern PFN_vkBindBufferMemory2 vkBindBufferMemory2; +extern PFN_vkBindImageMemory2 vkBindImageMemory2; +extern PFN_vkCmdDispatchBase vkCmdDispatchBase; +extern PFN_vkCmdSetDeviceMask vkCmdSetDeviceMask; +extern PFN_vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate; +extern PFN_vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion; +extern PFN_vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate; +extern PFN_vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion; +extern PFN_vkEnumerateInstanceVersion vkEnumerateInstanceVersion; +extern PFN_vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups; +extern PFN_vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2; +extern PFN_vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport; +extern PFN_vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures; +extern PFN_vkGetDeviceQueue2 vkGetDeviceQueue2; +extern PFN_vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2; +extern PFN_vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2; +extern PFN_vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties; +extern PFN_vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties; +extern PFN_vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties; +extern PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2; +extern PFN_vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2; +extern PFN_vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2; +extern PFN_vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2; +extern PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2; +extern PFN_vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2; +extern PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2; +extern PFN_vkTrimCommandPool vkTrimCommandPool; +extern PFN_vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate; +#endif /* defined(VK_VERSION_1_1) */ +#if defined(VK_VERSION_1_2) +extern PFN_vkCmdBeginRenderPass2 vkCmdBeginRenderPass2; +extern PFN_vkCmdDrawIndexedIndirectCount vkCmdDrawIndexedIndirectCount; +extern PFN_vkCmdDrawIndirectCount vkCmdDrawIndirectCount; +extern PFN_vkCmdEndRenderPass2 vkCmdEndRenderPass2; +extern PFN_vkCmdNextSubpass2 vkCmdNextSubpass2; +extern PFN_vkCreateRenderPass2 vkCreateRenderPass2; +extern PFN_vkGetBufferDeviceAddress vkGetBufferDeviceAddress; +extern PFN_vkGetBufferOpaqueCaptureAddress vkGetBufferOpaqueCaptureAddress; +extern PFN_vkGetDeviceMemoryOpaqueCaptureAddress vkGetDeviceMemoryOpaqueCaptureAddress; +extern PFN_vkGetSemaphoreCounterValue vkGetSemaphoreCounterValue; +extern PFN_vkResetQueryPool vkResetQueryPool; +extern PFN_vkSignalSemaphore vkSignalSemaphore; +extern PFN_vkWaitSemaphores vkWaitSemaphores; +#endif /* defined(VK_VERSION_1_2) */ +#if defined(VK_AMD_buffer_marker) +extern PFN_vkCmdWriteBufferMarkerAMD vkCmdWriteBufferMarkerAMD; +#endif /* defined(VK_AMD_buffer_marker) */ +#if defined(VK_AMD_display_native_hdr) +extern PFN_vkSetLocalDimmingAMD vkSetLocalDimmingAMD; +#endif /* defined(VK_AMD_display_native_hdr) */ +#if defined(VK_AMD_draw_indirect_count) +extern PFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD; +extern PFN_vkCmdDrawIndirectCountAMD vkCmdDrawIndirectCountAMD; +#endif /* defined(VK_AMD_draw_indirect_count) */ +#if defined(VK_AMD_shader_info) +extern PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD; +#endif /* defined(VK_AMD_shader_info) */ +#if defined(VK_ANDROID_external_memory_android_hardware_buffer) +extern PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID; +extern PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID; +#endif /* defined(VK_ANDROID_external_memory_android_hardware_buffer) */ +#if defined(VK_EXT_acquire_xlib_display) +extern PFN_vkAcquireXlibDisplayEXT vkAcquireXlibDisplayEXT; +extern PFN_vkGetRandROutputDisplayEXT vkGetRandROutputDisplayEXT; +#endif /* defined(VK_EXT_acquire_xlib_display) */ +#if defined(VK_EXT_buffer_device_address) +extern PFN_vkGetBufferDeviceAddressEXT vkGetBufferDeviceAddressEXT; +#endif /* defined(VK_EXT_buffer_device_address) */ +#if defined(VK_EXT_calibrated_timestamps) +extern PFN_vkGetCalibratedTimestampsEXT vkGetCalibratedTimestampsEXT; +extern PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT vkGetPhysicalDeviceCalibrateableTimeDomainsEXT; +#endif /* defined(VK_EXT_calibrated_timestamps) */ +#if defined(VK_EXT_conditional_rendering) +extern PFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT; +extern PFN_vkCmdEndConditionalRenderingEXT vkCmdEndConditionalRenderingEXT; +#endif /* defined(VK_EXT_conditional_rendering) */ +#if defined(VK_EXT_debug_marker) +extern PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT; +extern PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT; +extern PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT; +extern PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT; +extern PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT; +#endif /* defined(VK_EXT_debug_marker) */ +#if defined(VK_EXT_debug_report) +extern PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT; +extern PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT; +extern PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT; +#endif /* defined(VK_EXT_debug_report) */ +#if defined(VK_EXT_debug_utils) +extern PFN_vkCmdBeginDebugUtilsLabelEXT vkCmdBeginDebugUtilsLabelEXT; +extern PFN_vkCmdEndDebugUtilsLabelEXT vkCmdEndDebugUtilsLabelEXT; +extern PFN_vkCmdInsertDebugUtilsLabelEXT vkCmdInsertDebugUtilsLabelEXT; +extern PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT; +extern PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT; +extern PFN_vkQueueBeginDebugUtilsLabelEXT vkQueueBeginDebugUtilsLabelEXT; +extern PFN_vkQueueEndDebugUtilsLabelEXT vkQueueEndDebugUtilsLabelEXT; +extern PFN_vkQueueInsertDebugUtilsLabelEXT vkQueueInsertDebugUtilsLabelEXT; +extern PFN_vkSetDebugUtilsObjectNameEXT vkSetDebugUtilsObjectNameEXT; +extern PFN_vkSetDebugUtilsObjectTagEXT vkSetDebugUtilsObjectTagEXT; +extern PFN_vkSubmitDebugUtilsMessageEXT vkSubmitDebugUtilsMessageEXT; +#endif /* defined(VK_EXT_debug_utils) */ +#if defined(VK_EXT_direct_mode_display) +extern PFN_vkReleaseDisplayEXT vkReleaseDisplayEXT; +#endif /* defined(VK_EXT_direct_mode_display) */ +#if defined(VK_EXT_directfb_surface) +extern PFN_vkCreateDirectFBSurfaceEXT vkCreateDirectFBSurfaceEXT; +extern PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT vkGetPhysicalDeviceDirectFBPresentationSupportEXT; +#endif /* defined(VK_EXT_directfb_surface) */ +#if defined(VK_EXT_discard_rectangles) +extern PFN_vkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXT; +#endif /* defined(VK_EXT_discard_rectangles) */ +#if defined(VK_EXT_display_control) +extern PFN_vkDisplayPowerControlEXT vkDisplayPowerControlEXT; +extern PFN_vkGetSwapchainCounterEXT vkGetSwapchainCounterEXT; +extern PFN_vkRegisterDeviceEventEXT vkRegisterDeviceEventEXT; +extern PFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT; +#endif /* defined(VK_EXT_display_control) */ +#if defined(VK_EXT_display_surface_counter) +extern PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT vkGetPhysicalDeviceSurfaceCapabilities2EXT; +#endif /* defined(VK_EXT_display_surface_counter) */ +#if defined(VK_EXT_extended_dynamic_state) +extern PFN_vkCmdBindVertexBuffers2EXT vkCmdBindVertexBuffers2EXT; +extern PFN_vkCmdSetCullModeEXT vkCmdSetCullModeEXT; +extern PFN_vkCmdSetDepthBoundsTestEnableEXT vkCmdSetDepthBoundsTestEnableEXT; +extern PFN_vkCmdSetDepthCompareOpEXT vkCmdSetDepthCompareOpEXT; +extern PFN_vkCmdSetDepthTestEnableEXT vkCmdSetDepthTestEnableEXT; +extern PFN_vkCmdSetDepthWriteEnableEXT vkCmdSetDepthWriteEnableEXT; +extern PFN_vkCmdSetFrontFaceEXT vkCmdSetFrontFaceEXT; +extern PFN_vkCmdSetPrimitiveTopologyEXT vkCmdSetPrimitiveTopologyEXT; +extern PFN_vkCmdSetScissorWithCountEXT vkCmdSetScissorWithCountEXT; +extern PFN_vkCmdSetStencilOpEXT vkCmdSetStencilOpEXT; +extern PFN_vkCmdSetStencilTestEnableEXT vkCmdSetStencilTestEnableEXT; +extern PFN_vkCmdSetViewportWithCountEXT vkCmdSetViewportWithCountEXT; +#endif /* defined(VK_EXT_extended_dynamic_state) */ +#if defined(VK_EXT_external_memory_host) +extern PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT; +#endif /* defined(VK_EXT_external_memory_host) */ +#if defined(VK_EXT_full_screen_exclusive) +extern PFN_vkAcquireFullScreenExclusiveModeEXT vkAcquireFullScreenExclusiveModeEXT; +extern PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT vkGetPhysicalDeviceSurfacePresentModes2EXT; +extern PFN_vkReleaseFullScreenExclusiveModeEXT vkReleaseFullScreenExclusiveModeEXT; +#endif /* defined(VK_EXT_full_screen_exclusive) */ +#if defined(VK_EXT_hdr_metadata) +extern PFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT; +#endif /* defined(VK_EXT_hdr_metadata) */ +#if defined(VK_EXT_headless_surface) +extern PFN_vkCreateHeadlessSurfaceEXT vkCreateHeadlessSurfaceEXT; +#endif /* defined(VK_EXT_headless_surface) */ +#if defined(VK_EXT_host_query_reset) +extern PFN_vkResetQueryPoolEXT vkResetQueryPoolEXT; +#endif /* defined(VK_EXT_host_query_reset) */ +#if defined(VK_EXT_image_drm_format_modifier) +extern PFN_vkGetImageDrmFormatModifierPropertiesEXT vkGetImageDrmFormatModifierPropertiesEXT; +#endif /* defined(VK_EXT_image_drm_format_modifier) */ +#if defined(VK_EXT_line_rasterization) +extern PFN_vkCmdSetLineStippleEXT vkCmdSetLineStippleEXT; +#endif /* defined(VK_EXT_line_rasterization) */ +#if defined(VK_EXT_metal_surface) +extern PFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT; +#endif /* defined(VK_EXT_metal_surface) */ +#if defined(VK_EXT_private_data) +extern PFN_vkCreatePrivateDataSlotEXT vkCreatePrivateDataSlotEXT; +extern PFN_vkDestroyPrivateDataSlotEXT vkDestroyPrivateDataSlotEXT; +extern PFN_vkGetPrivateDataEXT vkGetPrivateDataEXT; +extern PFN_vkSetPrivateDataEXT vkSetPrivateDataEXT; +#endif /* defined(VK_EXT_private_data) */ +#if defined(VK_EXT_sample_locations) +extern PFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT; +extern PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT vkGetPhysicalDeviceMultisamplePropertiesEXT; +#endif /* defined(VK_EXT_sample_locations) */ +#if defined(VK_EXT_tooling_info) +extern PFN_vkGetPhysicalDeviceToolPropertiesEXT vkGetPhysicalDeviceToolPropertiesEXT; +#endif /* defined(VK_EXT_tooling_info) */ +#if defined(VK_EXT_transform_feedback) +extern PFN_vkCmdBeginQueryIndexedEXT vkCmdBeginQueryIndexedEXT; +extern PFN_vkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXT; +extern PFN_vkCmdBindTransformFeedbackBuffersEXT vkCmdBindTransformFeedbackBuffersEXT; +extern PFN_vkCmdDrawIndirectByteCountEXT vkCmdDrawIndirectByteCountEXT; +extern PFN_vkCmdEndQueryIndexedEXT vkCmdEndQueryIndexedEXT; +extern PFN_vkCmdEndTransformFeedbackEXT vkCmdEndTransformFeedbackEXT; +#endif /* defined(VK_EXT_transform_feedback) */ +#if defined(VK_EXT_validation_cache) +extern PFN_vkCreateValidationCacheEXT vkCreateValidationCacheEXT; +extern PFN_vkDestroyValidationCacheEXT vkDestroyValidationCacheEXT; +extern PFN_vkGetValidationCacheDataEXT vkGetValidationCacheDataEXT; +extern PFN_vkMergeValidationCachesEXT vkMergeValidationCachesEXT; +#endif /* defined(VK_EXT_validation_cache) */ +#if defined(VK_FUCHSIA_imagepipe_surface) +extern PFN_vkCreateImagePipeSurfaceFUCHSIA vkCreateImagePipeSurfaceFUCHSIA; +#endif /* defined(VK_FUCHSIA_imagepipe_surface) */ +#if defined(VK_GGP_stream_descriptor_surface) +extern PFN_vkCreateStreamDescriptorSurfaceGGP vkCreateStreamDescriptorSurfaceGGP; +#endif /* defined(VK_GGP_stream_descriptor_surface) */ +#if defined(VK_GOOGLE_display_timing) +extern PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE; +extern PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE; +#endif /* defined(VK_GOOGLE_display_timing) */ +#if defined(VK_INTEL_performance_query) +extern PFN_vkAcquirePerformanceConfigurationINTEL vkAcquirePerformanceConfigurationINTEL; +extern PFN_vkCmdSetPerformanceMarkerINTEL vkCmdSetPerformanceMarkerINTEL; +extern PFN_vkCmdSetPerformanceOverrideINTEL vkCmdSetPerformanceOverrideINTEL; +extern PFN_vkCmdSetPerformanceStreamMarkerINTEL vkCmdSetPerformanceStreamMarkerINTEL; +extern PFN_vkGetPerformanceParameterINTEL vkGetPerformanceParameterINTEL; +extern PFN_vkInitializePerformanceApiINTEL vkInitializePerformanceApiINTEL; +extern PFN_vkQueueSetPerformanceConfigurationINTEL vkQueueSetPerformanceConfigurationINTEL; +extern PFN_vkReleasePerformanceConfigurationINTEL vkReleasePerformanceConfigurationINTEL; +extern PFN_vkUninitializePerformanceApiINTEL vkUninitializePerformanceApiINTEL; +#endif /* defined(VK_INTEL_performance_query) */ +#if defined(VK_KHR_android_surface) +extern PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR; +#endif /* defined(VK_KHR_android_surface) */ +#if defined(VK_KHR_bind_memory2) +extern PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR; +extern PFN_vkBindImageMemory2KHR vkBindImageMemory2KHR; +#endif /* defined(VK_KHR_bind_memory2) */ +#if defined(VK_KHR_buffer_device_address) +extern PFN_vkGetBufferDeviceAddressKHR vkGetBufferDeviceAddressKHR; +extern PFN_vkGetBufferOpaqueCaptureAddressKHR vkGetBufferOpaqueCaptureAddressKHR; +extern PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR vkGetDeviceMemoryOpaqueCaptureAddressKHR; +#endif /* defined(VK_KHR_buffer_device_address) */ +#if defined(VK_KHR_copy_commands2) +extern PFN_vkCmdBlitImage2KHR vkCmdBlitImage2KHR; +extern PFN_vkCmdCopyBuffer2KHR vkCmdCopyBuffer2KHR; +extern PFN_vkCmdCopyBufferToImage2KHR vkCmdCopyBufferToImage2KHR; +extern PFN_vkCmdCopyImage2KHR vkCmdCopyImage2KHR; +extern PFN_vkCmdCopyImageToBuffer2KHR vkCmdCopyImageToBuffer2KHR; +extern PFN_vkCmdResolveImage2KHR vkCmdResolveImage2KHR; +#endif /* defined(VK_KHR_copy_commands2) */ +#if defined(VK_KHR_create_renderpass2) +extern PFN_vkCmdBeginRenderPass2KHR vkCmdBeginRenderPass2KHR; +extern PFN_vkCmdEndRenderPass2KHR vkCmdEndRenderPass2KHR; +extern PFN_vkCmdNextSubpass2KHR vkCmdNextSubpass2KHR; +extern PFN_vkCreateRenderPass2KHR vkCreateRenderPass2KHR; +#endif /* defined(VK_KHR_create_renderpass2) */ +#if defined(VK_KHR_deferred_host_operations) +extern PFN_vkCreateDeferredOperationKHR vkCreateDeferredOperationKHR; +extern PFN_vkDeferredOperationJoinKHR vkDeferredOperationJoinKHR; +extern PFN_vkDestroyDeferredOperationKHR vkDestroyDeferredOperationKHR; +extern PFN_vkGetDeferredOperationMaxConcurrencyKHR vkGetDeferredOperationMaxConcurrencyKHR; +extern PFN_vkGetDeferredOperationResultKHR vkGetDeferredOperationResultKHR; +#endif /* defined(VK_KHR_deferred_host_operations) */ +#if defined(VK_KHR_descriptor_update_template) +extern PFN_vkCreateDescriptorUpdateTemplateKHR vkCreateDescriptorUpdateTemplateKHR; +extern PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR; +extern PFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR; +#endif /* defined(VK_KHR_descriptor_update_template) */ +#if defined(VK_KHR_device_group) +extern PFN_vkCmdDispatchBaseKHR vkCmdDispatchBaseKHR; +extern PFN_vkCmdSetDeviceMaskKHR vkCmdSetDeviceMaskKHR; +extern PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR vkGetDeviceGroupPeerMemoryFeaturesKHR; +#endif /* defined(VK_KHR_device_group) */ +#if defined(VK_KHR_device_group_creation) +extern PFN_vkEnumeratePhysicalDeviceGroupsKHR vkEnumeratePhysicalDeviceGroupsKHR; +#endif /* defined(VK_KHR_device_group_creation) */ +#if defined(VK_KHR_display) +extern PFN_vkCreateDisplayModeKHR vkCreateDisplayModeKHR; +extern PFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR; +extern PFN_vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR; +extern PFN_vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR; +extern PFN_vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR; +extern PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR; +extern PFN_vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR; +#endif /* defined(VK_KHR_display) */ +#if defined(VK_KHR_display_swapchain) +extern PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR; +#endif /* defined(VK_KHR_display_swapchain) */ +#if defined(VK_KHR_draw_indirect_count) +extern PFN_vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR; +extern PFN_vkCmdDrawIndirectCountKHR vkCmdDrawIndirectCountKHR; +#endif /* defined(VK_KHR_draw_indirect_count) */ +#if defined(VK_KHR_external_fence_capabilities) +extern PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR vkGetPhysicalDeviceExternalFencePropertiesKHR; +#endif /* defined(VK_KHR_external_fence_capabilities) */ +#if defined(VK_KHR_external_fence_fd) +extern PFN_vkGetFenceFdKHR vkGetFenceFdKHR; +extern PFN_vkImportFenceFdKHR vkImportFenceFdKHR; +#endif /* defined(VK_KHR_external_fence_fd) */ +#if defined(VK_KHR_external_fence_win32) +extern PFN_vkGetFenceWin32HandleKHR vkGetFenceWin32HandleKHR; +extern PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR; +#endif /* defined(VK_KHR_external_fence_win32) */ +#if defined(VK_KHR_external_memory_capabilities) +extern PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR vkGetPhysicalDeviceExternalBufferPropertiesKHR; +#endif /* defined(VK_KHR_external_memory_capabilities) */ +#if defined(VK_KHR_external_memory_fd) +extern PFN_vkGetMemoryFdKHR vkGetMemoryFdKHR; +extern PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR; +#endif /* defined(VK_KHR_external_memory_fd) */ +#if defined(VK_KHR_external_memory_win32) +extern PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR; +extern PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR; +#endif /* defined(VK_KHR_external_memory_win32) */ +#if defined(VK_KHR_external_semaphore_capabilities) +extern PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR vkGetPhysicalDeviceExternalSemaphorePropertiesKHR; +#endif /* defined(VK_KHR_external_semaphore_capabilities) */ +#if defined(VK_KHR_external_semaphore_fd) +extern PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR; +extern PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR; +#endif /* defined(VK_KHR_external_semaphore_fd) */ +#if defined(VK_KHR_external_semaphore_win32) +extern PFN_vkGetSemaphoreWin32HandleKHR vkGetSemaphoreWin32HandleKHR; +extern PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR; +#endif /* defined(VK_KHR_external_semaphore_win32) */ +#if defined(VK_KHR_get_display_properties2) +extern PFN_vkGetDisplayModeProperties2KHR vkGetDisplayModeProperties2KHR; +extern PFN_vkGetDisplayPlaneCapabilities2KHR vkGetDisplayPlaneCapabilities2KHR; +extern PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR vkGetPhysicalDeviceDisplayPlaneProperties2KHR; +extern PFN_vkGetPhysicalDeviceDisplayProperties2KHR vkGetPhysicalDeviceDisplayProperties2KHR; +#endif /* defined(VK_KHR_get_display_properties2) */ +#if defined(VK_KHR_get_memory_requirements2) +extern PFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR; +extern PFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR; +extern PFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR; +#endif /* defined(VK_KHR_get_memory_requirements2) */ +#if defined(VK_KHR_get_physical_device_properties2) +extern PFN_vkGetPhysicalDeviceFeatures2KHR vkGetPhysicalDeviceFeatures2KHR; +extern PFN_vkGetPhysicalDeviceFormatProperties2KHR vkGetPhysicalDeviceFormatProperties2KHR; +extern PFN_vkGetPhysicalDeviceImageFormatProperties2KHR vkGetPhysicalDeviceImageFormatProperties2KHR; +extern PFN_vkGetPhysicalDeviceMemoryProperties2KHR vkGetPhysicalDeviceMemoryProperties2KHR; +extern PFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR; +extern PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR vkGetPhysicalDeviceQueueFamilyProperties2KHR; +extern PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR vkGetPhysicalDeviceSparseImageFormatProperties2KHR; +#endif /* defined(VK_KHR_get_physical_device_properties2) */ +#if defined(VK_KHR_get_surface_capabilities2) +extern PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR vkGetPhysicalDeviceSurfaceCapabilities2KHR; +extern PFN_vkGetPhysicalDeviceSurfaceFormats2KHR vkGetPhysicalDeviceSurfaceFormats2KHR; +#endif /* defined(VK_KHR_get_surface_capabilities2) */ +#if defined(VK_KHR_maintenance1) +extern PFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR; +#endif /* defined(VK_KHR_maintenance1) */ +#if defined(VK_KHR_maintenance3) +extern PFN_vkGetDescriptorSetLayoutSupportKHR vkGetDescriptorSetLayoutSupportKHR; +#endif /* defined(VK_KHR_maintenance3) */ +#if defined(VK_KHR_performance_query) +extern PFN_vkAcquireProfilingLockKHR vkAcquireProfilingLockKHR; +extern PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR; +extern PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR; +extern PFN_vkReleaseProfilingLockKHR vkReleaseProfilingLockKHR; +#endif /* defined(VK_KHR_performance_query) */ +#if defined(VK_KHR_pipeline_executable_properties) +extern PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInternalRepresentationsKHR; +extern PFN_vkGetPipelineExecutablePropertiesKHR vkGetPipelineExecutablePropertiesKHR; +extern PFN_vkGetPipelineExecutableStatisticsKHR vkGetPipelineExecutableStatisticsKHR; +#endif /* defined(VK_KHR_pipeline_executable_properties) */ +#if defined(VK_KHR_push_descriptor) +extern PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR; +#endif /* defined(VK_KHR_push_descriptor) */ +#if defined(VK_KHR_ray_tracing) +extern PFN_vkBindAccelerationStructureMemoryKHR vkBindAccelerationStructureMemoryKHR; +extern PFN_vkBuildAccelerationStructureKHR vkBuildAccelerationStructureKHR; +extern PFN_vkCmdBuildAccelerationStructureIndirectKHR vkCmdBuildAccelerationStructureIndirectKHR; +extern PFN_vkCmdBuildAccelerationStructureKHR vkCmdBuildAccelerationStructureKHR; +extern PFN_vkCmdCopyAccelerationStructureKHR vkCmdCopyAccelerationStructureKHR; +extern PFN_vkCmdCopyAccelerationStructureToMemoryKHR vkCmdCopyAccelerationStructureToMemoryKHR; +extern PFN_vkCmdCopyMemoryToAccelerationStructureKHR vkCmdCopyMemoryToAccelerationStructureKHR; +extern PFN_vkCmdTraceRaysIndirectKHR vkCmdTraceRaysIndirectKHR; +extern PFN_vkCmdTraceRaysKHR vkCmdTraceRaysKHR; +extern PFN_vkCmdWriteAccelerationStructuresPropertiesKHR vkCmdWriteAccelerationStructuresPropertiesKHR; +extern PFN_vkCopyAccelerationStructureKHR vkCopyAccelerationStructureKHR; +extern PFN_vkCopyAccelerationStructureToMemoryKHR vkCopyAccelerationStructureToMemoryKHR; +extern PFN_vkCopyMemoryToAccelerationStructureKHR vkCopyMemoryToAccelerationStructureKHR; +extern PFN_vkCreateAccelerationStructureKHR vkCreateAccelerationStructureKHR; +extern PFN_vkCreateRayTracingPipelinesKHR vkCreateRayTracingPipelinesKHR; +extern PFN_vkDestroyAccelerationStructureKHR vkDestroyAccelerationStructureKHR; +extern PFN_vkGetAccelerationStructureDeviceAddressKHR vkGetAccelerationStructureDeviceAddressKHR; +extern PFN_vkGetAccelerationStructureMemoryRequirementsKHR vkGetAccelerationStructureMemoryRequirementsKHR; +extern PFN_vkGetDeviceAccelerationStructureCompatibilityKHR vkGetDeviceAccelerationStructureCompatibilityKHR; +extern PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR vkGetRayTracingCaptureReplayShaderGroupHandlesKHR; +extern PFN_vkGetRayTracingShaderGroupHandlesKHR vkGetRayTracingShaderGroupHandlesKHR; +extern PFN_vkWriteAccelerationStructuresPropertiesKHR vkWriteAccelerationStructuresPropertiesKHR; +#endif /* defined(VK_KHR_ray_tracing) */ +#if defined(VK_KHR_sampler_ycbcr_conversion) +extern PFN_vkCreateSamplerYcbcrConversionKHR vkCreateSamplerYcbcrConversionKHR; +extern PFN_vkDestroySamplerYcbcrConversionKHR vkDestroySamplerYcbcrConversionKHR; +#endif /* defined(VK_KHR_sampler_ycbcr_conversion) */ +#if defined(VK_KHR_shared_presentable_image) +extern PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR; +#endif /* defined(VK_KHR_shared_presentable_image) */ +#if defined(VK_KHR_surface) +extern PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR; +extern PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR; +extern PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR; +extern PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR; +extern PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR; +#endif /* defined(VK_KHR_surface) */ +#if defined(VK_KHR_swapchain) +extern PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR; +extern PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR; +extern PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR; +extern PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR; +extern PFN_vkQueuePresentKHR vkQueuePresentKHR; +#endif /* defined(VK_KHR_swapchain) */ +#if defined(VK_KHR_timeline_semaphore) +extern PFN_vkGetSemaphoreCounterValueKHR vkGetSemaphoreCounterValueKHR; +extern PFN_vkSignalSemaphoreKHR vkSignalSemaphoreKHR; +extern PFN_vkWaitSemaphoresKHR vkWaitSemaphoresKHR; +#endif /* defined(VK_KHR_timeline_semaphore) */ +#if defined(VK_KHR_wayland_surface) +extern PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR; +extern PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR; +#endif /* defined(VK_KHR_wayland_surface) */ +#if defined(VK_KHR_win32_surface) +extern PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR; +extern PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR; +#endif /* defined(VK_KHR_win32_surface) */ +#if defined(VK_KHR_xcb_surface) +extern PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR; +extern PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR; +#endif /* defined(VK_KHR_xcb_surface) */ +#if defined(VK_KHR_xlib_surface) +extern PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR; +extern PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR; +#endif /* defined(VK_KHR_xlib_surface) */ +#if defined(VK_MVK_ios_surface) +extern PFN_vkCreateIOSSurfaceMVK vkCreateIOSSurfaceMVK; +#endif /* defined(VK_MVK_ios_surface) */ +#if defined(VK_MVK_macos_surface) +extern PFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK; +#endif /* defined(VK_MVK_macos_surface) */ +#if defined(VK_NN_vi_surface) +extern PFN_vkCreateViSurfaceNN vkCreateViSurfaceNN; +#endif /* defined(VK_NN_vi_surface) */ +#if defined(VK_NVX_image_view_handle) +extern PFN_vkGetImageViewAddressNVX vkGetImageViewAddressNVX; +extern PFN_vkGetImageViewHandleNVX vkGetImageViewHandleNVX; +#endif /* defined(VK_NVX_image_view_handle) */ +#if defined(VK_NV_clip_space_w_scaling) +extern PFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV; +#endif /* defined(VK_NV_clip_space_w_scaling) */ +#if defined(VK_NV_cooperative_matrix) +extern PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV vkGetPhysicalDeviceCooperativeMatrixPropertiesNV; +#endif /* defined(VK_NV_cooperative_matrix) */ +#if defined(VK_NV_coverage_reduction_mode) +extern PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV; +#endif /* defined(VK_NV_coverage_reduction_mode) */ +#if defined(VK_NV_device_diagnostic_checkpoints) +extern PFN_vkCmdSetCheckpointNV vkCmdSetCheckpointNV; +extern PFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV; +#endif /* defined(VK_NV_device_diagnostic_checkpoints) */ +#if defined(VK_NV_device_generated_commands) +extern PFN_vkCmdBindPipelineShaderGroupNV vkCmdBindPipelineShaderGroupNV; +extern PFN_vkCmdExecuteGeneratedCommandsNV vkCmdExecuteGeneratedCommandsNV; +extern PFN_vkCmdPreprocessGeneratedCommandsNV vkCmdPreprocessGeneratedCommandsNV; +extern PFN_vkCreateIndirectCommandsLayoutNV vkCreateIndirectCommandsLayoutNV; +extern PFN_vkDestroyIndirectCommandsLayoutNV vkDestroyIndirectCommandsLayoutNV; +extern PFN_vkGetGeneratedCommandsMemoryRequirementsNV vkGetGeneratedCommandsMemoryRequirementsNV; +#endif /* defined(VK_NV_device_generated_commands) */ +#if defined(VK_NV_external_memory_capabilities) +extern PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV; +#endif /* defined(VK_NV_external_memory_capabilities) */ +#if defined(VK_NV_external_memory_win32) +extern PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV; +#endif /* defined(VK_NV_external_memory_win32) */ +#if defined(VK_NV_mesh_shader) +extern PFN_vkCmdDrawMeshTasksIndirectCountNV vkCmdDrawMeshTasksIndirectCountNV; +extern PFN_vkCmdDrawMeshTasksIndirectNV vkCmdDrawMeshTasksIndirectNV; +extern PFN_vkCmdDrawMeshTasksNV vkCmdDrawMeshTasksNV; +#endif /* defined(VK_NV_mesh_shader) */ +#if defined(VK_NV_ray_tracing) +extern PFN_vkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNV; +extern PFN_vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV; +extern PFN_vkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNV; +extern PFN_vkCmdTraceRaysNV vkCmdTraceRaysNV; +extern PFN_vkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNV; +extern PFN_vkCompileDeferredNV vkCompileDeferredNV; +extern PFN_vkCreateAccelerationStructureNV vkCreateAccelerationStructureNV; +extern PFN_vkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNV; +extern PFN_vkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNV; +extern PFN_vkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNV; +extern PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV; +extern PFN_vkGetRayTracingShaderGroupHandlesNV vkGetRayTracingShaderGroupHandlesNV; +#endif /* defined(VK_NV_ray_tracing) */ +#if defined(VK_NV_scissor_exclusive) +extern PFN_vkCmdSetExclusiveScissorNV vkCmdSetExclusiveScissorNV; +#endif /* defined(VK_NV_scissor_exclusive) */ +#if defined(VK_NV_shading_rate_image) +extern PFN_vkCmdBindShadingRateImageNV vkCmdBindShadingRateImageNV; +extern PFN_vkCmdSetCoarseSampleOrderNV vkCmdSetCoarseSampleOrderNV; +extern PFN_vkCmdSetViewportShadingRatePaletteNV vkCmdSetViewportShadingRatePaletteNV; +#endif /* defined(VK_NV_shading_rate_image) */ +#if (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1)) +extern PFN_vkGetDeviceGroupSurfacePresentModes2EXT vkGetDeviceGroupSurfacePresentModes2EXT; +#endif /* (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1)) */ +#if (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1)) || (defined(VK_KHR_push_descriptor) && defined(VK_KHR_descriptor_update_template)) +extern PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR; +#endif /* (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1)) || (defined(VK_KHR_push_descriptor) && defined(VK_KHR_descriptor_update_template)) */ +#if (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) +extern PFN_vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR; +extern PFN_vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR; +extern PFN_vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR; +#endif /* (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) */ +#if (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) +extern PFN_vkAcquireNextImage2KHR vkAcquireNextImage2KHR; +#endif /* (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) */ +/* VOLK_GENERATE_PROTOTYPES_H */ + +#ifdef __cplusplus +} +#endif + +#endif + +#ifdef VOLK_IMPLEMENTATION +#undef VOLK_IMPLEMENTATION +// Prevent tools like dependency checkers that don't evaluate +// macros from detecting a cyclic dependency. +#define VOLK_SOURCE "volk.c" +#include VOLK_SOURCE +#endif + +/** + * Copyright (c) 2018-2019 Arseny Kapoulkine + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. +*/ +/* clang-format on */ diff --git a/libs/volk/_installed/lib/cmake/volk/volkConfig.cmake b/libs/volk/_installed/lib/cmake/volk/volkConfig.cmake new file mode 100644 index 0000000..6e45c37 --- /dev/null +++ b/libs/volk/_installed/lib/cmake/volk/volkConfig.cmake @@ -0,0 +1,21 @@ +get_filename_component(volk_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) + +if(NOT TARGET volk::volk) + include("${volk_CMAKE_DIR}/volkTargets.cmake") +endif() + +# Mirror the default behaviour of the respective option. +if(NOT DEFINED VOLK_PULL_IN_VULKAN) + set(VOLK_PULL_IN_VULKAN ON) +endif() + +if(VOLK_PULL_IN_VULKAN) + find_package(Vulkan QUIET) + if(TARGET Vulkan::Vulkan) + add_dependencies(volk::volk Vulkan::Vulkan) + add_dependencies(volk::volk_headers Vulkan::Vulkan) + elseif(DEFINED ENV{VULKAN_SDK}) + target_include_directories(volk::volk INTERFACE "$ENV{VULKAN_SDK}/include") + target_include_directories(volk::volk_headers INTERFACE "$ENV{VULKAN_SDK}/include") + endif() +endif() diff --git a/libs/volk/_installed/lib/cmake/volk/volkConfigVersion.cmake b/libs/volk/_installed/lib/cmake/volk/volkConfigVersion.cmake new file mode 100644 index 0000000..0527479 --- /dev/null +++ b/libs/volk/_installed/lib/cmake/volk/volkConfigVersion.cmake @@ -0,0 +1,37 @@ +# This is a basic version file for the Config-mode of find_package(). +# It is used by write_basic_package_version_file() as input file for configure_file() +# to create a version-file which can be installed along a config.cmake file. +# +# The created file sets PACKAGE_VERSION_EXACT if the current version string and +# the requested version string are exactly the same and it sets +# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version. +# The variable CVF_VERSION must be set before calling configure_file(). + +set(PACKAGE_VERSION "155") + +if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() + + +# if the installed project requested no architecture check, don't perform the check +if("FALSE") + return() +endif() + +# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it: +if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "8" STREQUAL "") + return() +endif() + +# check that the installed version has the same 32/64bit-ness as the one which is currently searching: +if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "8") + math(EXPR installedBits "8 * 8") + set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)") + set(PACKAGE_VERSION_UNSUITABLE TRUE) +endif() diff --git a/libs/volk/_installed/lib/cmake/volk/volkTargets-noconfig.cmake b/libs/volk/_installed/lib/cmake/volk/volkTargets-noconfig.cmake new file mode 100644 index 0000000..11a6812 --- /dev/null +++ b/libs/volk/_installed/lib/cmake/volk/volkTargets-noconfig.cmake @@ -0,0 +1,19 @@ +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Import target "volk::volk" for configuration "" +set_property(TARGET volk::volk APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG) +set_target_properties(volk::volk PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES_NOCONFIG "C" + IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libvolk.a" + ) + +list(APPEND _IMPORT_CHECK_TARGETS volk::volk ) +list(APPEND _IMPORT_CHECK_FILES_FOR_volk::volk "${_IMPORT_PREFIX}/lib/libvolk.a" ) + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) diff --git a/libs/volk/_installed/lib/cmake/volk/volkTargets.cmake b/libs/volk/_installed/lib/cmake/volk/volkTargets.cmake new file mode 100644 index 0000000..1d0aa16 --- /dev/null +++ b/libs/volk/_installed/lib/cmake/volk/volkTargets.cmake @@ -0,0 +1,107 @@ +# Generated by CMake + +if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) + message(FATAL_ERROR "CMake >= 2.6.0 required") +endif() +cmake_policy(PUSH) +cmake_policy(VERSION 2.6...3.17) +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Protect against multiple inclusion, which would fail when already imported targets are added once more. +set(_targetsDefined) +set(_targetsNotDefined) +set(_expectedTargets) +foreach(_expectedTarget volk::volk volk::volk_headers) + list(APPEND _expectedTargets ${_expectedTarget}) + if(NOT TARGET ${_expectedTarget}) + list(APPEND _targetsNotDefined ${_expectedTarget}) + endif() + if(TARGET ${_expectedTarget}) + list(APPEND _targetsDefined ${_expectedTarget}) + endif() +endforeach() +if("${_targetsDefined}" STREQUAL "${_expectedTargets}") + unset(_targetsDefined) + unset(_targetsNotDefined) + unset(_expectedTargets) + set(CMAKE_IMPORT_FILE_VERSION) + cmake_policy(POP) + return() +endif() +if(NOT "${_targetsDefined}" STREQUAL "") + message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") +endif() +unset(_targetsDefined) +unset(_targetsNotDefined) +unset(_expectedTargets) + + +# Compute the installation prefix relative to this file. +get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +if(_IMPORT_PREFIX STREQUAL "/") + set(_IMPORT_PREFIX "") +endif() + +# Create imported target volk::volk +add_library(volk::volk STATIC IMPORTED) + +set_target_properties(volk::volk PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" + INTERFACE_LINK_LIBRARIES "dl;Vulkan::Vulkan" +) + +# Create imported target volk::volk_headers +add_library(volk::volk_headers INTERFACE IMPORTED) + +set_target_properties(volk::volk_headers PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" + INTERFACE_LINK_LIBRARIES "dl;Vulkan::Vulkan" +) + +if(CMAKE_VERSION VERSION_LESS 3.0.0) + message(FATAL_ERROR "This file relies on consumers using CMake 3.0.0 or greater.") +endif() + +# Load information for each installed configuration. +get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +file(GLOB CONFIG_FILES "${_DIR}/volkTargets-*.cmake") +foreach(f ${CONFIG_FILES}) + include(${f}) +endforeach() + +# Cleanup temporary variables. +set(_IMPORT_PREFIX) + +# Loop over all imported files and verify that they actually exist +foreach(target ${_IMPORT_CHECK_TARGETS} ) + foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) + if(NOT EXISTS "${file}" ) + message(FATAL_ERROR "The imported target \"${target}\" references the file + \"${file}\" +but this file does not exist. Possible reasons include: +* The file was deleted, renamed, or moved to another location. +* An install or uninstall procedure did not complete successfully. +* The installation package was faulty and contained + \"${CMAKE_CURRENT_LIST_FILE}\" +but not all the files it references. +") + endif() + endforeach() + unset(_IMPORT_CHECK_FILES_FOR_${target}) +endforeach() +unset(_IMPORT_CHECK_TARGETS) + +# This file does not depend on other imported targets which have +# been exported from the same project but in a separate export set. + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) +cmake_policy(POP) diff --git a/libs/volk/_installed/lib/libvolk.a b/libs/volk/_installed/lib/libvolk.a new file mode 100644 index 0000000000000000000000000000000000000000..e17c7915774f3efd8d604f87429991b59667608e GIT binary patch literal 56416 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 literal 0 HcmV?d00001 diff --git a/libs/volk/cmake/volkConfig.cmake.in b/libs/volk/cmake/volkConfig.cmake.in new file mode 100644 index 0000000..6e45c37 --- /dev/null +++ b/libs/volk/cmake/volkConfig.cmake.in @@ -0,0 +1,21 @@ +get_filename_component(volk_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) + +if(NOT TARGET volk::volk) + include("${volk_CMAKE_DIR}/volkTargets.cmake") +endif() + +# Mirror the default behaviour of the respective option. +if(NOT DEFINED VOLK_PULL_IN_VULKAN) + set(VOLK_PULL_IN_VULKAN ON) +endif() + +if(VOLK_PULL_IN_VULKAN) + find_package(Vulkan QUIET) + if(TARGET Vulkan::Vulkan) + add_dependencies(volk::volk Vulkan::Vulkan) + add_dependencies(volk::volk_headers Vulkan::Vulkan) + elseif(DEFINED ENV{VULKAN_SDK}) + target_include_directories(volk::volk INTERFACE "$ENV{VULKAN_SDK}/include") + target_include_directories(volk::volk_headers INTERFACE "$ENV{VULKAN_SDK}/include") + endif() +endif() diff --git a/libs/volk/generate.py b/libs/volk/generate.py new file mode 100755 index 0000000..b4c044e --- /dev/null +++ b/libs/volk/generate.py @@ -0,0 +1,169 @@ +#!/usr/bin/python3 +# This file is part of volk library; see volk.h for version/license details + +from collections import OrderedDict +import sys +import urllib +import xml.etree.ElementTree as etree +import urllib.request + +def parse_xml(path): + file = urllib.request.urlopen(path) if path.startswith("http") else open(path, 'r') + with file: + tree = etree.parse(file) + return tree + +def patch_file(path, blocks): + result = [] + block = None + + with open(path, 'r') as file: + for line in file.readlines(): + if block: + if line == block: + result.append(line) + block = None + else: + result.append(line) + # C comment marker + if line.strip().startswith('/* VOLK_GENERATE_'): + block = line + result.append(blocks[line.strip()[17:-3]]) + # Shell/CMake comment marker + elif line.strip().startswith('# VOLK_GENERATE_'): + block = line + result.append(blocks[line.strip()[16:]]) + + with open(path, 'w') as file: + for line in result: + file.write(line) + +def is_descendant_type(types, name, base): + if name == base: + return True + type = types.get(name) + if not type: + return False + parents = type.get('parent') + if not parents: + return False + return any([is_descendant_type(types, parent, base) for parent in parents.split(',')]) + +def defined(key): + return 'defined(' + key + ')' + +if __name__ == "__main__": + specpath = "https://raw.githubusercontent.com/KhronosGroup/Vulkan-Docs/main/xml/vk.xml" + + if len(sys.argv) > 1: + specpath = sys.argv[1] + + spec = parse_xml(specpath) + + block_keys = ('DEVICE_TABLE', 'PROTOTYPES_H', 'PROTOTYPES_C', 'LOAD_LOADER', 'LOAD_INSTANCE', 'LOAD_DEVICE', 'LOAD_DEVICE_TABLE') + + blocks = {} + + version = spec.find('types/type[name="VK_HEADER_VERSION"]') + blocks['VERSION'] = version.find('name').tail.strip() + '\n' + blocks['VERSION_DEFINE'] = '#define VOLK_HEADER_VERSION ' + version.find('name').tail.strip() + '\n' + + command_groups = OrderedDict() + instance_commands = set() + + for feature in spec.findall('feature'): + key = defined(feature.get('name')) + cmdrefs = feature.findall('require/command') + command_groups[key] = [cmdref.get('name') for cmdref in cmdrefs] + + for ext in sorted(spec.findall('extensions/extension'), key=lambda ext: ext.get('name')): + supported = ext.get('supported') + if supported == 'disabled': + continue + name = ext.get('name') + type = ext.get('type') + for req in ext.findall('require'): + key = defined(name) + if req.get('feature'): + key += ' && ' + defined(req.get('feature')) + if req.get('extension'): + key += ' && ' + defined(req.get('extension')) + cmdrefs = req.findall('command') + command_groups.setdefault(key, []).extend([cmdref.get('name') for cmdref in cmdrefs]) + if type == 'instance': + for cmdref in cmdrefs: + instance_commands.add(cmdref.get('name')) + + commands_to_groups = OrderedDict() + + for (group, cmdnames) in command_groups.items(): + for name in cmdnames: + commands_to_groups.setdefault(name, []).append(group) + + for (group, cmdnames) in command_groups.items(): + command_groups[group] = [name for name in cmdnames if len(commands_to_groups[name]) == 1] + + for (name, groups) in commands_to_groups.items(): + if len(groups) == 1: + continue + key = ' || '.join(['(' + g + ')' for g in groups]) + command_groups.setdefault(key, []).append(name) + + commands = {} + + for cmd in spec.findall('commands/command'): + if not cmd.get('alias'): + name = cmd.findtext('proto/name') + commands[name] = cmd + + for cmd in spec.findall('commands/command'): + if cmd.get('alias'): + name = cmd.get('name') + commands[name] = commands[cmd.get('alias')] + + types = {} + + for type in spec.findall('types/type'): + name = type.findtext('name') + if name: + types[name] = type + + for key in block_keys: + blocks[key] = '' + + for (group, cmdnames) in command_groups.items(): + ifdef = '#if ' + group + '\n' + + for key in block_keys: + blocks[key] += ifdef + + for name in sorted(cmdnames): + cmd = commands[name] + type = cmd.findtext('param[1]/type') + + if name == 'vkGetInstanceProcAddr': + type = '' + if name == 'vkGetDeviceProcAddr': + type = 'VkInstance' + + if is_descendant_type(types, type, 'VkDevice') and name not in instance_commands: + blocks['LOAD_DEVICE'] += '\t' + name + ' = (PFN_' + name + ')load(context, "' + name + '");\n' + blocks['DEVICE_TABLE'] += '\tPFN_' + name + ' ' + name + ';\n' + blocks['LOAD_DEVICE_TABLE'] += '\ttable->' + name + ' = (PFN_' + name + ')load(context, "' + name + '");\n' + elif is_descendant_type(types, type, 'VkInstance'): + blocks['LOAD_INSTANCE'] += '\t' + name + ' = (PFN_' + name + ')load(context, "' + name + '");\n' + elif type != '': + blocks['LOAD_LOADER'] += '\t' + name + ' = (PFN_' + name + ')load(context, "' + name + '");\n' + + blocks['PROTOTYPES_H'] += 'extern PFN_' + name + ' ' + name + ';\n' + blocks['PROTOTYPES_C'] += 'PFN_' + name + ' ' + name + ';\n' + + for key in block_keys: + if blocks[key].endswith(ifdef): + blocks[key] = blocks[key][:-len(ifdef)] + else: + blocks[key] += '#endif /* ' + group + ' */\n' + + patch_file('volk.h', blocks) + patch_file('volk.c', blocks) + patch_file('CMakeLists.txt', blocks) diff --git a/libs/volk/generate.readme b/libs/volk/generate.readme new file mode 100644 index 0000000..916052f --- /dev/null +++ b/libs/volk/generate.readme @@ -0,0 +1,12 @@ + +To have latest Vulkan header version, do in SSH : +./generate.py + +Do not forget to recompile everything : +test/./run_tests.sh + +Last time run : 2020-OCT-04 +September 28, 2020 : Vulkan 1.2.155 spec update + +VOLK_HEADER_VERSION 155 +Vulkan 1.2.155 spec update diff --git a/libs/volk/test/cmake_using_installed_headers/CMakeLists.txt b/libs/volk/test/cmake_using_installed_headers/CMakeLists.txt new file mode 100644 index 0000000..b852c6d --- /dev/null +++ b/libs/volk/test/cmake_using_installed_headers/CMakeLists.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 3.0) +project(volk_test LANGUAGES C) + +# Include volk from a CMake package config. +# CMAKE_PREFIX_PATH or volk_DIR must be set properly. +find_package(volk CONFIG REQUIRED) + +add_executable(volk_test main.c) +target_link_libraries(volk_test PRIVATE volk::volk_headers) diff --git a/libs/volk/test/cmake_using_installed_headers/_build/CMakeCache.txt b/libs/volk/test/cmake_using_installed_headers/_build/CMakeCache.txt new file mode 100644 index 0000000..14bd257 --- /dev/null +++ b/libs/volk/test/cmake_using_installed_headers/_build/CMakeCache.txt @@ -0,0 +1,342 @@ +# This is the CMakeCache file. +# For build in directory: /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/_build +# It was generated by CMake: /usr/local/Cellar/cmake/3.18.2/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=CMAKE_ADDR2LINE-NOTFOUND + +//Path to a program. +CMAKE_AR:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/ar + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING= + +//Enable/Disable color output during build. +CMAKE_COLOR_MAKEFILE:BOOL=ON + +//C compiler +CMAKE_C_COMPILER:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/cc + +//Flags used by the C compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the C compiler during DEBUG builds. +CMAKE_C_FLAGS_DEBUG:STRING=-g + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the C compiler during RELEASE builds. +CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Executable file format +CMAKE_EXECUTABLE_FORMAT:STRING=MACHO + +//Flags used by the linker during all build types. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= + +//Path to a program. +CMAKE_INSTALL_NAME_TOOL:FILEPATH=/usr/bin/install_name_tool + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_installed/lib/cmake + +//Path to a program. +CMAKE_LINKER:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/ld + +//Path to a program. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make + +//Flags used by the linker during the creation of modules during +// all build types. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=CMAKE_OBJCOPY-NOTFOUND + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/objdump + +//Build architectures for OSX +CMAKE_OSX_ARCHITECTURES:STRING= + +//Minimum OS X version to target for deployment (at runtime); newer +// APIs weak linked. Set to empty string for default value. +CMAKE_OSX_DEPLOYMENT_TARGET:STRING= + +//The product will be built against the headers and libraries located +// inside the indicated SDK. +CMAKE_OSX_SYSROOT:PATH=/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=volk_test + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=CMAKE_READELF-NOTFOUND + +//Flags used by the linker during the creation of shared libraries +// during all build types. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/strip + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Path to a file. +Vulkan_INCLUDE_DIR:PATH=/usr/local/include + +//Path to a library. +Vulkan_LIBRARY:FILEPATH=/usr/local/lib/libvulkan.dylib + +//The directory containing a CMake configuration file for volk. +volk_DIR:PATH=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_installed/lib/cmake/volk + +//Value Computed by CMake +volk_test_BINARY_DIR:STATIC=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/_build + +//Value Computed by CMake +volk_test_SOURCE_DIR:STATIC=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/_build +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=18 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=2 +//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE +CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/local/Cellar/cmake/3.18.2/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/local/Cellar/cmake/3.18.2/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/local/Cellar/cmake/3.18.2/bin/ctest +//ADVANCED property for variable: CMAKE_C_COMPILER +CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Path to cache edit program executable. +CMAKE_EDIT_COMMAND:INTERNAL=/usr/local/Cellar/cmake/3.18.2/bin/ccmake +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Unix Makefiles +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers +//ADVANCED property for variable: CMAKE_INSTALL_NAME_TOOL +CMAKE_INSTALL_NAME_TOOL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/local/Cellar/cmake/3.18.2/share/cmake +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/usr/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: Vulkan_INCLUDE_DIR +Vulkan_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: Vulkan_LIBRARY +Vulkan_LIBRARY-ADVANCED:INTERNAL=1 + diff --git a/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/3.18.2/CMakeCCompiler.cmake b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/3.18.2/CMakeCCompiler.cmake new file mode 100644 index 0000000..47d43d0 --- /dev/null +++ b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/3.18.2/CMakeCCompiler.cmake @@ -0,0 +1,77 @@ +set(CMAKE_C_COMPILER "/Library/Developer/CommandLineTools/usr/bin/cc") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "AppleClang") +set(CMAKE_C_COMPILER_VERSION "12.0.0.12000032") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") + +set(CMAKE_C_PLATFORM_ID "Darwin") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "") +set(CMAKE_C_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "/Library/Developer/CommandLineTools/usr/bin/ar") +set(CMAKE_C_COMPILER_AR "") +set(CMAKE_RANLIB "/Library/Developer/CommandLineTools/usr/bin/ranlib") +set(CMAKE_C_COMPILER_RANLIB "") +set(CMAKE_LINKER "/Library/Developer/CommandLineTools/usr/bin/ld") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCC ) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) +set(CMAKE_COMPILER_IS_MINGW ) +set(CMAKE_COMPILER_IS_CYGWIN ) +if(CMAKE_COMPILER_IS_CYGWIN) + set(CYGWIN 1) + set(UNIX 1) +endif() + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +if(CMAKE_COMPILER_IS_MINGW) + set(MINGW 1) +endif() +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "8") +set(CMAKE_C_COMPILER_ABI "") +set(CMAKE_C_LIBRARY_ARCHITECTURE "") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include;/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include;/Library/Developer/CommandLineTools/usr/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks") diff --git a/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/3.18.2/CMakeDetermineCompilerABI_C.bin b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/3.18.2/CMakeDetermineCompilerABI_C.bin new file mode 100755 index 0000000000000000000000000000000000000000..8c77ab8022805d01c58daab613ddb28fe9adadfd GIT binary patch literal 16592 zcmeI3yK59t6vppleWB5$P*D_FEJQ7`AqlvM;QAQdMM;8YMU-&OW+r4H*+_O4lZcwe zVhKVDYYDdg16DQ`DfLgVv0K5yB8Z6JH#5u5_(*N>9roLM&V8IY_czm?58uE1+-;1L zGsg5l2cRN?=Oz!&n4?e`vUdE^b@!foYmBp5bF$%IBjzb$qqP(6-HGg$=zJ+VXOeg) zrYY7(vo`dX!q|`FY`zBR{q;JCx%0&6``%X1!L z+A)ZA6t5V&_HAV8)rr@4R^B`w8p2#2ik{iG*X)Am$KT0R&sq5WP{&T={>;PgA#Hqa z5#k!}?0617H>X<*>bbq#2>tni%LAw@s9_WA6vX`Hk}-QQo=IZzl8Jx_h=2%)fCz|y z2#A0Ph=2%)fCz|y2#A0Ph=2%)fCz|y2#A0Ph=2%)fCz|y2#A0Ph=2%)fCz|y2#A0P zh=2%)fCz|y2#A0Ph=2%)fCz|y2#A0P{GSA><<{p-_Xmq>J=rR^nqN2FHly;iyH$R% z|2W*fcL$wZwcV<=*WC8x`}MR{Mz4*XZv-p;!i@DEhKu(Hi<3OgUT2=ArAPKKv&VS^ zBlR-rcc#zY=w6)ck4__C8poo)K4<4=t-s_?H$&gf`ct02Xolyfg1R}!K6aZbz+B)X za^}-h{B1movfvM4WL)fX;?8TTB2_HOcge& Sj*a5B5jJbKhMs#AZGHj%wU^%j literal 0 HcmV?d00001 diff --git a/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/3.18.2/CMakeSystem.cmake b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/3.18.2/CMakeSystem.cmake new file mode 100644 index 0000000..f4feaf1 --- /dev/null +++ b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/3.18.2/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Darwin-19.6.0") +set(CMAKE_HOST_SYSTEM_NAME "Darwin") +set(CMAKE_HOST_SYSTEM_VERSION "19.6.0") +set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + + + +set(CMAKE_SYSTEM "Darwin-19.6.0") +set(CMAKE_SYSTEM_NAME "Darwin") +set(CMAKE_SYSTEM_VERSION "19.6.0") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/3.18.2/CompilerIdC/CMakeCCompilerId.c b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/3.18.2/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 0000000..6c0aa93 --- /dev/null +++ b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/3.18.2/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,674 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXE) || defined(__CRAYXC) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + + +#if !defined(__STDC__) +# if (defined(_MSC_VER) && !defined(__clang__)) \ + || (defined(__ibmxl__) || defined(__IBMC__)) +# define C_DIALECT "90" +# else +# define C_DIALECT +# endif +#elif __STDC_VERSION__ >= 201000L +# define C_DIALECT "11" +#elif __STDC_VERSION__ >= 199901L +# define C_DIALECT "99" +#else +# define C_DIALECT "90" +#endif +const char* info_language_dialect_default = + "INFO" ":" "dialect_default[" C_DIALECT "]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXE) || defined(__CRAYXC) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/3.18.2/CompilerIdC/a.out b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/3.18.2/CompilerIdC/a.out new file mode 100755 index 0000000000000000000000000000000000000000..86e232cfdc5d56e617cf69841db1b7da5a9b708b GIT binary patch literal 33192 zcmeI*L2DaF6bJCPkxfmT)()7|r8%fR6gMQcvDJw@X5THVw~iS5#bQsqV* z`QfH*>>cmZX*1rc?U%SSiCJgj@oHh?c!Is-)$Mp++lwUbnqTK&Tvw_YZu?UNpN75V@$c-rg}ZkOa|`KjBc?J?;~$ z5zc>bEazu`;@>HkA8}sd+?n`)LXtc0*V+HJ`X}6(<$Rv=M6(f11pfL&qnsa~R_%mvQ8G-iDw$MGaKp_t(mnOSjW=phwKV5OygJ*qx>0$nWa|~*4ZL!!D&B_M4B}Egza~#%E>8zm zKYCHauZ5+YPWj1kQ_1CyEBQ%jyEe&}^Hk}Q9;LgK^}Mp)_d1u7M|cgmB&o|f;q!du zkXb=2%`!|orR&@Cb{+Y=EthTCJ`oiNKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##-kHFKQ8HgzcNFzgMpd_zx8s$Yv8T2?x8g-KR(1W5uE_W273F2Gfeh{OJ_`MI z^8$*}?F?u;-4}s&WiJH!*^xaHn(n5jdiF!0mXo39kExH6#Np!;ecaQ>eLm_t$V1Eh z1|9Q-bJ@7yqQv~=@}U{Ck--->CL8B$JYwTT8xPp{p~So?Lf!6f5J)WdY$t93t=7ogJ{rJo#@ literal 0 HcmV?d00001 diff --git a/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/CMakeDirectoryInformation.cmake b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..e589814 --- /dev/null +++ b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/_build") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/CMakeOutput.log b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/CMakeOutput.log new file mode 100644 index 0000000..4cf0d14 --- /dev/null +++ b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/CMakeOutput.log @@ -0,0 +1,130 @@ +The system is: Darwin - 19.6.0 - x86_64 +Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. +Compiler: /Library/Developer/CommandLineTools/usr/bin/cc +Build flags: +Id flags: + +The output was: +0 + + +Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out" + +The C compiler identification is AppleClang, found in "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/_build/CMakeFiles/3.18.2/CompilerIdC/a.out" + +Detecting C compiler ABI info compiled with the following output: +Change Dir: /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/_build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/bin/make cmTC_4c351/fast && /Library/Developer/CommandLineTools/usr/bin/make -f CMakeFiles/cmTC_4c351.dir/build.make CMakeFiles/cmTC_4c351.dir/build +Building C object CMakeFiles/cmTC_4c351.dir/CMakeCCompilerABI.c.o +/Library/Developer/CommandLineTools/usr/bin/cc -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -v -Wl,-v -o CMakeFiles/cmTC_4c351.dir/CMakeCCompilerABI.c.o -c /usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompilerABI.c +Apple clang version 12.0.0 (clang-1200.0.32.2) +Target: x86_64-apple-darwin19.6.0 +Thread model: posix +InstalledDir: /Library/Developer/CommandLineTools/usr/bin +clang: warning: -Wl,-v: 'linker' input unused [-Wunused-command-line-argument] + "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.15.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -mthread-model posix -mframe-pointer=all -fno-strict-return -masm-verbose -munwind-tables -target-sdk-version=10.15.6 -fcompatibility-qualified-id-block-type-checking -target-cpu penryn -dwarf-column-info -debugger-tuning=lldb -target-linker-version 609 -v -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include -internal-externc-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include -internal-externc-isystem /Library/Developer/CommandLineTools/usr/include -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -fdebug-compilation-dir /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/_build/CMakeFiles/CMakeTmp -ferror-limit 19 -fmessage-length 0 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fobjc-runtime=macosx-10.15.0 -fmax-type-align=16 -fdiagnostics-show-option -o CMakeFiles/cmTC_4c351.dir/CMakeCCompilerABI.c.o -x c /usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompilerABI.c +clang -cc1 version 12.0.0 (clang-1200.0.32.2) default target x86_64-apple-darwin19.6.0 +ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/local/include" +ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/Library/Frameworks" +#include "..." search starts here: +#include <...> search starts here: + /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include + /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include + /Library/Developer/CommandLineTools/usr/include + /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks (framework directory) +End of search list. +Linking C executable cmTC_4c351 +/usr/local/Cellar/cmake/3.18.2/bin/cmake -E cmake_link_script CMakeFiles/cmTC_4c351.dir/link.txt --verbose=1 +/Library/Developer/CommandLineTools/usr/bin/cc -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names -v -Wl,-v CMakeFiles/cmTC_4c351.dir/CMakeCCompilerABI.c.o -o cmTC_4c351 +Apple clang version 12.0.0 (clang-1200.0.32.2) +Target: x86_64-apple-darwin19.6.0 +Thread model: posix +InstalledDir: /Library/Developer/CommandLineTools/usr/bin + "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch x86_64 -platform_version macos 10.15.0 10.15.6 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -o cmTC_4c351 -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_4c351.dir/CMakeCCompilerABI.c.o -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.osx.a +@(#)PROGRAM:ld PROJECT:ld64-609 +BUILD 07:59:13 Aug 25 2020 +configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em +Library search paths: + /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib +Framework search paths: + /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/ + + + +Parsed C implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include] + add: [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include] + add: [/Library/Developer/CommandLineTools/usr/include] + end of search list found + collapse include dir [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include] ==> [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include] + collapse include dir [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include] + collapse include dir [/Library/Developer/CommandLineTools/usr/include] ==> [/Library/Developer/CommandLineTools/usr/include] + implicit include dirs: [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include;/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include;/Library/Developer/CommandLineTools/usr/include] + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/_build/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/usr/bin/make cmTC_4c351/fast && /Library/Developer/CommandLineTools/usr/bin/make -f CMakeFiles/cmTC_4c351.dir/build.make CMakeFiles/cmTC_4c351.dir/build] + ignore line: [Building C object CMakeFiles/cmTC_4c351.dir/CMakeCCompilerABI.c.o] + ignore line: [/Library/Developer/CommandLineTools/usr/bin/cc -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -v -Wl -v -o CMakeFiles/cmTC_4c351.dir/CMakeCCompilerABI.c.o -c /usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompilerABI.c] + ignore line: [Apple clang version 12.0.0 (clang-1200.0.32.2)] + ignore line: [Target: x86_64-apple-darwin19.6.0] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Library/Developer/CommandLineTools/usr/bin] + ignore line: [clang: warning: -Wl -v: 'linker' input unused [-Wunused-command-line-argument]] + ignore line: [ "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.15.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -mthread-model posix -mframe-pointer=all -fno-strict-return -masm-verbose -munwind-tables -target-sdk-version=10.15.6 -fcompatibility-qualified-id-block-type-checking -target-cpu penryn -dwarf-column-info -debugger-tuning=lldb -target-linker-version 609 -v -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include -internal-externc-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include -internal-externc-isystem /Library/Developer/CommandLineTools/usr/include -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -fdebug-compilation-dir /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/_build/CMakeFiles/CMakeTmp -ferror-limit 19 -fmessage-length 0 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fobjc-runtime=macosx-10.15.0 -fmax-type-align=16 -fdiagnostics-show-option -o CMakeFiles/cmTC_4c351.dir/CMakeCCompilerABI.c.o -x c /usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 12.0.0 (clang-1200.0.32.2) default target x86_64-apple-darwin19.6.0] + ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/local/include"] + ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/Library/Frameworks"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include] + ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include] + ignore line: [ /Library/Developer/CommandLineTools/usr/include] + ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks (framework directory)] + ignore line: [End of search list.] + ignore line: [Linking C executable cmTC_4c351] + ignore line: [/usr/local/Cellar/cmake/3.18.2/bin/cmake -E cmake_link_script CMakeFiles/cmTC_4c351.dir/link.txt --verbose=1] + ignore line: [/Library/Developer/CommandLineTools/usr/bin/cc -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -Wl -search_paths_first -Wl -headerpad_max_install_names -v -Wl -v CMakeFiles/cmTC_4c351.dir/CMakeCCompilerABI.c.o -o cmTC_4c351 ] + ignore line: [Apple clang version 12.0.0 (clang-1200.0.32.2)] + ignore line: [Target: x86_64-apple-darwin19.6.0] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Library/Developer/CommandLineTools/usr/bin] + link line: [ "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch x86_64 -platform_version macos 10.15.0 10.15.6 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -o cmTC_4c351 -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_4c351.dir/CMakeCCompilerABI.c.o -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.osx.a] + arg [/Library/Developer/CommandLineTools/usr/bin/ld] ==> ignore + arg [-demangle] ==> ignore + arg [-lto_library] ==> ignore, skip following value + arg [/Library/Developer/CommandLineTools/usr/lib/libLTO.dylib] ==> skip value of -lto_library + arg [-dynamic] ==> ignore + arg [-arch] ==> ignore + arg [x86_64] ==> ignore + arg [-platform_version] ==> ignore + arg [macos] ==> ignore + arg [10.15.0] ==> ignore + arg [10.15.6] ==> ignore + arg [-syslibroot] ==> ignore + arg [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk] ==> ignore + arg [-o] ==> ignore + arg [cmTC_4c351] ==> ignore + arg [-search_paths_first] ==> ignore + arg [-headerpad_max_install_names] ==> ignore + arg [-v] ==> ignore + arg [CMakeFiles/cmTC_4c351.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [-lSystem] ==> lib [System] + arg [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.osx.a] ==> lib [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.osx.a] + Library search paths: [;/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib] + Framework search paths: [;/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/] + remove lib [System] + remove lib [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.osx.a] + collapse library dir [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib] + collapse framework dir [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks] + implicit libs: [] + implicit dirs: [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib] + implicit fwks: [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks] + + diff --git a/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/Makefile.cmake b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/Makefile.cmake new file mode 100644 index 0000000..ee83469 --- /dev/null +++ b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/Makefile.cmake @@ -0,0 +1,108 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# The generator used is: +set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles") + +# The top level Makefile was generated from the following files: +set(CMAKE_MAKEFILE_DEPENDS + "CMakeCache.txt" + "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_installed/lib/cmake/volk/volkConfig.cmake" + "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_installed/lib/cmake/volk/volkConfigVersion.cmake" + "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_installed/lib/cmake/volk/volkTargets-noconfig.cmake" + "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_installed/lib/cmake/volk/volkTargets.cmake" + "../CMakeLists.txt" + "CMakeFiles/3.18.2/CMakeCCompiler.cmake" + "CMakeFiles/3.18.2/CMakeSystem.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompiler.cmake.in" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompilerABI.c" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCInformation.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCommonLanguageInclude.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCompilerIdDetection.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineCCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineCompileFeatures.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineCompilerABI.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineCompilerId.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineSystem.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeFindBinUtils.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeGenericSystem.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeInitializeConfigs.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeLanguageInformation.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeParseImplicitIncludeInfo.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeParseImplicitLinkInfo.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeSystem.cmake.in" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeSystemSpecificInformation.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeSystemSpecificInitialize.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeTestCCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeTestCompilerCommon.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeUnixFindMake.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/ADSP-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/AppleClang-C.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Borland-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Bruce-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Clang-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Clang.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Compaq-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Cray-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/GHS-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/GNU-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/GNU.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/HP-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/IAR-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Intel-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/MSVC-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/PGI-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/PathScale-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/SCO-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/SDCC-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/SunPro-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/TI-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Watcom-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/XL-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/XLClang-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/zOS-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/FindPackageHandleStandardArgs.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/FindPackageMessage.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/FindVulkan.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Internal/CMakeCheckCompilerFlag.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Internal/FeatureTesting.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/Apple-AppleClang-C.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/Apple-Clang-C.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/Apple-Clang.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/Darwin-Initialize.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/Darwin.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/UnixPaths.cmake" + ) + +# The corresponding makefile is: +set(CMAKE_MAKEFILE_OUTPUTS + "Makefile" + "CMakeFiles/cmake.check_cache" + ) + +# Byproducts of CMake generate step: +set(CMAKE_MAKEFILE_PRODUCTS + "CMakeFiles/3.18.2/CMakeSystem.cmake" + "CMakeFiles/3.18.2/CMakeCCompiler.cmake" + "CMakeFiles/3.18.2/CMakeCCompiler.cmake" + "CMakeFiles/CMakeDirectoryInformation.cmake" + ) + +# Dependency information for all targets: +set(CMAKE_DEPEND_INFO_FILES + "CMakeFiles/volk_test.dir/DependInfo.cmake" + ) diff --git a/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/Makefile2 b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/Makefile2 new file mode 100644 index 0000000..e78fef4 --- /dev/null +++ b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/Makefile2 @@ -0,0 +1,125 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/local/Cellar/cmake/3.18.2/bin/cmake + +# The command to remove a file. +RM = /usr/local/Cellar/cmake/3.18.2/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/_build + +#============================================================================= +# Directory level rules for the build root directory + +# The main recursive "all" target. +all: CMakeFiles/volk_test.dir/all + +.PHONY : all + +# The main recursive "preinstall" target. +preinstall: + +.PHONY : preinstall + +# The main recursive "clean" target. +clean: CMakeFiles/volk_test.dir/clean + +.PHONY : clean + +#============================================================================= +# Target rules for target CMakeFiles/volk_test.dir + +# All Build rule for target. +CMakeFiles/volk_test.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/volk_test.dir/build.make CMakeFiles/volk_test.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/volk_test.dir/build.make CMakeFiles/volk_test.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/_build/CMakeFiles --progress-num=1,2 "Built target volk_test" +.PHONY : CMakeFiles/volk_test.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/volk_test.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/_build/CMakeFiles 2 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/volk_test.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/_build/CMakeFiles 0 +.PHONY : CMakeFiles/volk_test.dir/rule + +# Convenience name for target. +volk_test: CMakeFiles/volk_test.dir/rule + +.PHONY : volk_test + +# clean rule for target. +CMakeFiles/volk_test.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/volk_test.dir/build.make CMakeFiles/volk_test.dir/clean +.PHONY : CMakeFiles/volk_test.dir/clean + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/TargetDirectories.txt b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000..597f06e --- /dev/null +++ b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,3 @@ +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/_build/CMakeFiles/rebuild_cache.dir +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/_build/CMakeFiles/edit_cache.dir +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir diff --git a/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/cmake.check_cache b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..3dccd73 --- /dev/null +++ b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/progress.marks b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/progress.marks new file mode 100644 index 0000000..0cfbf08 --- /dev/null +++ b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/progress.marks @@ -0,0 +1 @@ +2 diff --git a/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/C.includecache b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/C.includecache new file mode 100644 index 0000000..77c2cf9 --- /dev/null +++ b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/C.includecache @@ -0,0 +1,118 @@ +#IncludeRegexLine: ^[ ]*[#%][ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_installed/include/volk.h +vulkan/vk_platform.h +- +vulkan/vulkan_core.h +- +vulkan/vulkan_win32.h +- +vulkan/vulkan_beta.h +- +vulkan/vulkan.h +- + +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/main.c +volk.h +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/volk.h +stdio.h +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/stdio.h +stdlib.h +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/stdlib.h + +/usr/local/include/vulkan/vk_platform.h +stddef.h +- +stdint.h +- + +/usr/local/include/vulkan/vulkan.h +vk_platform.h +/usr/local/include/vulkan/vk_platform.h +vulkan_core.h +/usr/local/include/vulkan/vulkan_core.h +vulkan_android.h +/usr/local/include/vulkan/vulkan_android.h +zircon/types.h +- +vulkan_fuchsia.h +/usr/local/include/vulkan/vulkan_fuchsia.h +vulkan_ios.h +/usr/local/include/vulkan/vulkan_ios.h +vulkan_macos.h +/usr/local/include/vulkan/vulkan_macos.h +vulkan_metal.h +/usr/local/include/vulkan/vulkan_metal.h +vulkan_vi.h +/usr/local/include/vulkan/vulkan_vi.h +wayland-client.h +- +vulkan_wayland.h +/usr/local/include/vulkan/vulkan_wayland.h +windows.h +- +vulkan_win32.h +/usr/local/include/vulkan/vulkan_win32.h +xcb/xcb.h +- +vulkan_xcb.h +/usr/local/include/vulkan/vulkan_xcb.h +X11/Xlib.h +- +vulkan_xlib.h +/usr/local/include/vulkan/vulkan_xlib.h +directfb.h +- +vulkan_directfb.h +/usr/local/include/vulkan/vulkan_directfb.h +X11/Xlib.h +- +X11/extensions/Xrandr.h +- +vulkan_xlib_xrandr.h +/usr/local/include/vulkan/vulkan_xlib_xrandr.h +ggp_c/vulkan_types.h +- +vulkan_ggp.h +/usr/local/include/vulkan/vulkan_ggp.h +vulkan_beta.h +/usr/local/include/vulkan/vulkan_beta.h + +/usr/local/include/vulkan/vulkan_android.h + +/usr/local/include/vulkan/vulkan_beta.h + +/usr/local/include/vulkan/vulkan_core.h +vk_platform.h +/usr/local/include/vulkan/vk_platform.h + +/usr/local/include/vulkan/vulkan_directfb.h + +/usr/local/include/vulkan/vulkan_fuchsia.h + +/usr/local/include/vulkan/vulkan_ggp.h + +/usr/local/include/vulkan/vulkan_ios.h + +/usr/local/include/vulkan/vulkan_macos.h + +/usr/local/include/vulkan/vulkan_metal.h + +/usr/local/include/vulkan/vulkan_vi.h + +/usr/local/include/vulkan/vulkan_wayland.h + +/usr/local/include/vulkan/vulkan_win32.h + +/usr/local/include/vulkan/vulkan_xcb.h + +/usr/local/include/vulkan/vulkan_xlib.h + +/usr/local/include/vulkan/vulkan_xlib_xrandr.h + diff --git a/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/DependInfo.cmake b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/DependInfo.cmake new file mode 100644 index 0000000..0c7af5d --- /dev/null +++ b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/DependInfo.cmake @@ -0,0 +1,22 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + "C" + ) +# The set of files for implicit dependencies of each language: +set(CMAKE_DEPENDS_CHECK_C + "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/main.c" "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/main.c.o" + ) +set(CMAKE_C_COMPILER_ID "AppleClang") + +# The include file search paths: +set(CMAKE_C_TARGET_INCLUDE_PATH + "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_installed/include" + "/usr/local/include" + ) + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/build.make b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/build.make new file mode 100644 index 0000000..ea1d829 --- /dev/null +++ b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/build.make @@ -0,0 +1,118 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/local/Cellar/cmake/3.18.2/bin/cmake + +# The command to remove a file. +RM = /usr/local/Cellar/cmake/3.18.2/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/_build + +# Include any dependencies generated for this target. +include CMakeFiles/volk_test.dir/depend.make + +# Include the progress variables for this target. +include CMakeFiles/volk_test.dir/progress.make + +# Include the compile flags for this target's objects. +include CMakeFiles/volk_test.dir/flags.make + +CMakeFiles/volk_test.dir/main.c.o: CMakeFiles/volk_test.dir/flags.make +CMakeFiles/volk_test.dir/main.c.o: ../main.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/_build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object CMakeFiles/volk_test.dir/main.c.o" + /Library/Developer/CommandLineTools/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/volk_test.dir/main.c.o -c /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/main.c + +CMakeFiles/volk_test.dir/main.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/volk_test.dir/main.c.i" + /Library/Developer/CommandLineTools/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/main.c > CMakeFiles/volk_test.dir/main.c.i + +CMakeFiles/volk_test.dir/main.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/volk_test.dir/main.c.s" + /Library/Developer/CommandLineTools/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/main.c -o CMakeFiles/volk_test.dir/main.c.s + +# Object files for target volk_test +volk_test_OBJECTS = \ +"CMakeFiles/volk_test.dir/main.c.o" + +# External object files for target volk_test +volk_test_EXTERNAL_OBJECTS = + +volk_test: CMakeFiles/volk_test.dir/main.c.o +volk_test: CMakeFiles/volk_test.dir/build.make +volk_test: /usr/local/lib/libvulkan.dylib +volk_test: CMakeFiles/volk_test.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/_build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking C executable volk_test" + $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/volk_test.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +CMakeFiles/volk_test.dir/build: volk_test + +.PHONY : CMakeFiles/volk_test.dir/build + +CMakeFiles/volk_test.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/volk_test.dir/cmake_clean.cmake +.PHONY : CMakeFiles/volk_test.dir/clean + +CMakeFiles/volk_test.dir/depend: + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/_build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/_build /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/_build /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/volk_test.dir/depend + diff --git a/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/cmake_clean.cmake b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/cmake_clean.cmake new file mode 100644 index 0000000..1617c22 --- /dev/null +++ b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/cmake_clean.cmake @@ -0,0 +1,10 @@ +file(REMOVE_RECURSE + "CMakeFiles/volk_test.dir/main.c.o" + "volk_test" + "volk_test.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/volk_test.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/depend.internal b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/depend.internal new file mode 100644 index 0000000..acff113 --- /dev/null +++ b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/depend.internal @@ -0,0 +1,23 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +CMakeFiles/volk_test.dir/main.c.o + /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_installed/include/volk.h + /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_installed_headers/main.c + /usr/local/include/vulkan/vk_platform.h + /usr/local/include/vulkan/vulkan.h + /usr/local/include/vulkan/vulkan_android.h + /usr/local/include/vulkan/vulkan_beta.h + /usr/local/include/vulkan/vulkan_core.h + /usr/local/include/vulkan/vulkan_directfb.h + /usr/local/include/vulkan/vulkan_fuchsia.h + /usr/local/include/vulkan/vulkan_ggp.h + /usr/local/include/vulkan/vulkan_ios.h + /usr/local/include/vulkan/vulkan_macos.h + /usr/local/include/vulkan/vulkan_metal.h + /usr/local/include/vulkan/vulkan_vi.h + /usr/local/include/vulkan/vulkan_wayland.h + /usr/local/include/vulkan/vulkan_win32.h + /usr/local/include/vulkan/vulkan_xcb.h + /usr/local/include/vulkan/vulkan_xlib.h + /usr/local/include/vulkan/vulkan_xlib_xrandr.h diff --git a/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/depend.make b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/depend.make new file mode 100644 index 0000000..00af2be --- /dev/null +++ b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/depend.make @@ -0,0 +1,23 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +CMakeFiles/volk_test.dir/main.c.o: /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_installed/include/volk.h +CMakeFiles/volk_test.dir/main.c.o: ../main.c +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vk_platform.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_android.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_beta.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_core.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_directfb.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_fuchsia.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_ggp.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_ios.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_macos.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_metal.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_vi.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_wayland.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_win32.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_xcb.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_xlib.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_xlib_xrandr.h + diff --git a/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/flags.make b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/flags.make new file mode 100644 index 0000000..e30da4e --- /dev/null +++ b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# compile C with /Library/Developer/CommandLineTools/usr/bin/cc +C_DEFINES = + +C_INCLUDES = -isystem /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/_installed/include -isystem /usr/local/include + +C_FLAGS = -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk + diff --git a/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/link.txt b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/link.txt new file mode 100644 index 0000000..92c9d09 --- /dev/null +++ b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/link.txt @@ -0,0 +1 @@ +/Library/Developer/CommandLineTools/usr/bin/cc -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/volk_test.dir/main.c.o -o volk_test -Wl,-rpath,/usr/local/lib -ldl /usr/local/lib/libvulkan.dylib diff --git a/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/main.c.o b/libs/volk/test/cmake_using_installed_headers/_build/CMakeFiles/volk_test.dir/main.c.o new file mode 100644 index 0000000000000000000000000000000000000000..3cf31d9e8e4ee24c1bc0de107334bd0f4b00d1ff GIT binary patch literal 56496 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 O(#@JlKSa++y2p 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 Sj*a5B5jJbKhMs#AZGHj%wU^%j literal 0 HcmV?d00001 diff --git a/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/3.18.2/CMakeSystem.cmake b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/3.18.2/CMakeSystem.cmake new file mode 100644 index 0000000..f4feaf1 --- /dev/null +++ b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/3.18.2/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Darwin-19.6.0") +set(CMAKE_HOST_SYSTEM_NAME "Darwin") +set(CMAKE_HOST_SYSTEM_VERSION "19.6.0") +set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + + + +set(CMAKE_SYSTEM "Darwin-19.6.0") +set(CMAKE_SYSTEM_NAME "Darwin") +set(CMAKE_SYSTEM_VERSION "19.6.0") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/3.18.2/CompilerIdC/CMakeCCompilerId.c b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/3.18.2/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 0000000..6c0aa93 --- /dev/null +++ b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/3.18.2/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,674 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXE) || defined(__CRAYXC) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + + +#if !defined(__STDC__) +# if (defined(_MSC_VER) && !defined(__clang__)) \ + || (defined(__ibmxl__) || defined(__IBMC__)) +# define C_DIALECT "90" +# else +# define C_DIALECT +# endif +#elif __STDC_VERSION__ >= 201000L +# define C_DIALECT "11" +#elif __STDC_VERSION__ >= 199901L +# define C_DIALECT "99" +#else +# define C_DIALECT "90" +#endif +const char* info_language_dialect_default = + "INFO" ":" "dialect_default[" C_DIALECT "]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXE) || defined(__CRAYXC) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/3.18.2/CompilerIdC/a.out b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/3.18.2/CompilerIdC/a.out new file mode 100755 index 0000000000000000000000000000000000000000..86e232cfdc5d56e617cf69841db1b7da5a9b708b GIT binary patch literal 33192 zcmeI*L2DaF6bJCPkxfmT)()7|r8%fR6gMQcvDJw@X5THVw~iS5#bQsqV* z`QfH*>>cmZX*1rc?U%SSiCJgj@oHh?c!Is-)$Mp++lwUbnqTK&Tvw_YZu?UNpN75V@$c-rg}ZkOa|`KjBc?J?;~$ z5zc>bEazu`;@>HkA8}sd+?n`)LXtc0*V+HJ`X}6(<$Rv=M6(f11pfL&qnsa~R_%mvQ8G-iDw$MGaKp_t(mnOSjW=phwKV5OygJ*qx>0$nWa|~*4ZL!!D&B_M4B}Egza~#%E>8zm zKYCHauZ5+YPWj1kQ_1CyEBQ%jyEe&}^Hk}Q9;LgK^}Mp)_d1u7M|cgmB&o|f;q!du zkXb=2%`!|orR&@Cb{+Y=EthTCJ`oiNKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##-kHFKQ8HgzcNFzgMpd_zx8s$Yv8T2?x8g-KR(1W5uE_W273F2Gfeh{OJ_`MI z^8$*}?F?u;-4}s&WiJH!*^xaHn(n5jdiF!0mXo39kExH6#Np!;ecaQ>eLm_t$V1Eh z1|9Q-bJ@7yqQv~=@}U{Ck--->CL8B$JYwTT8xPp{p~So?Lf!6f5J)WdY$t93t=7ogJ{rJo#@ literal 0 HcmV?d00001 diff --git a/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/CMakeDirectoryInformation.cmake b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..ee5b6dc --- /dev/null +++ b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/_build") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/CMakeOutput.log b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/CMakeOutput.log new file mode 100644 index 0000000..081dddb --- /dev/null +++ b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/CMakeOutput.log @@ -0,0 +1,130 @@ +The system is: Darwin - 19.6.0 - x86_64 +Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. +Compiler: /Library/Developer/CommandLineTools/usr/bin/cc +Build flags: +Id flags: + +The output was: +0 + + +Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out" + +The C compiler identification is AppleClang, found in "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/_build/CMakeFiles/3.18.2/CompilerIdC/a.out" + +Detecting C compiler ABI info compiled with the following output: +Change Dir: /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/_build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/bin/make cmTC_87d15/fast && /Library/Developer/CommandLineTools/usr/bin/make -f CMakeFiles/cmTC_87d15.dir/build.make CMakeFiles/cmTC_87d15.dir/build +Building C object CMakeFiles/cmTC_87d15.dir/CMakeCCompilerABI.c.o +/Library/Developer/CommandLineTools/usr/bin/cc -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -v -Wl,-v -o CMakeFiles/cmTC_87d15.dir/CMakeCCompilerABI.c.o -c /usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompilerABI.c +Apple clang version 12.0.0 (clang-1200.0.32.2) +Target: x86_64-apple-darwin19.6.0 +Thread model: posix +InstalledDir: /Library/Developer/CommandLineTools/usr/bin +clang: warning: -Wl,-v: 'linker' input unused [-Wunused-command-line-argument] + "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.15.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -mthread-model posix -mframe-pointer=all -fno-strict-return -masm-verbose -munwind-tables -target-sdk-version=10.15.6 -fcompatibility-qualified-id-block-type-checking -target-cpu penryn -dwarf-column-info -debugger-tuning=lldb -target-linker-version 609 -v -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include -internal-externc-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include -internal-externc-isystem /Library/Developer/CommandLineTools/usr/include -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -fdebug-compilation-dir /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/_build/CMakeFiles/CMakeTmp -ferror-limit 19 -fmessage-length 0 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fobjc-runtime=macosx-10.15.0 -fmax-type-align=16 -fdiagnostics-show-option -o CMakeFiles/cmTC_87d15.dir/CMakeCCompilerABI.c.o -x c /usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompilerABI.c +clang -cc1 version 12.0.0 (clang-1200.0.32.2) default target x86_64-apple-darwin19.6.0 +ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/local/include" +ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/Library/Frameworks" +#include "..." search starts here: +#include <...> search starts here: + /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include + /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include + /Library/Developer/CommandLineTools/usr/include + /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks (framework directory) +End of search list. +Linking C executable cmTC_87d15 +/usr/local/Cellar/cmake/3.18.2/bin/cmake -E cmake_link_script CMakeFiles/cmTC_87d15.dir/link.txt --verbose=1 +/Library/Developer/CommandLineTools/usr/bin/cc -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names -v -Wl,-v CMakeFiles/cmTC_87d15.dir/CMakeCCompilerABI.c.o -o cmTC_87d15 +Apple clang version 12.0.0 (clang-1200.0.32.2) +Target: x86_64-apple-darwin19.6.0 +Thread model: posix +InstalledDir: /Library/Developer/CommandLineTools/usr/bin + "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch x86_64 -platform_version macos 10.15.0 10.15.6 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -o cmTC_87d15 -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_87d15.dir/CMakeCCompilerABI.c.o -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.osx.a +@(#)PROGRAM:ld PROJECT:ld64-609 +BUILD 07:59:13 Aug 25 2020 +configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em +Library search paths: + /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib +Framework search paths: + /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/ + + + +Parsed C implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include] + add: [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include] + add: [/Library/Developer/CommandLineTools/usr/include] + end of search list found + collapse include dir [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include] ==> [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include] + collapse include dir [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include] + collapse include dir [/Library/Developer/CommandLineTools/usr/include] ==> [/Library/Developer/CommandLineTools/usr/include] + implicit include dirs: [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include;/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include;/Library/Developer/CommandLineTools/usr/include] + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/_build/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/usr/bin/make cmTC_87d15/fast && /Library/Developer/CommandLineTools/usr/bin/make -f CMakeFiles/cmTC_87d15.dir/build.make CMakeFiles/cmTC_87d15.dir/build] + ignore line: [Building C object CMakeFiles/cmTC_87d15.dir/CMakeCCompilerABI.c.o] + ignore line: [/Library/Developer/CommandLineTools/usr/bin/cc -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -v -Wl -v -o CMakeFiles/cmTC_87d15.dir/CMakeCCompilerABI.c.o -c /usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompilerABI.c] + ignore line: [Apple clang version 12.0.0 (clang-1200.0.32.2)] + ignore line: [Target: x86_64-apple-darwin19.6.0] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Library/Developer/CommandLineTools/usr/bin] + ignore line: [clang: warning: -Wl -v: 'linker' input unused [-Wunused-command-line-argument]] + ignore line: [ "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.15.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -mthread-model posix -mframe-pointer=all -fno-strict-return -masm-verbose -munwind-tables -target-sdk-version=10.15.6 -fcompatibility-qualified-id-block-type-checking -target-cpu penryn -dwarf-column-info -debugger-tuning=lldb -target-linker-version 609 -v -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include -internal-externc-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include -internal-externc-isystem /Library/Developer/CommandLineTools/usr/include -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -fdebug-compilation-dir /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/_build/CMakeFiles/CMakeTmp -ferror-limit 19 -fmessage-length 0 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fobjc-runtime=macosx-10.15.0 -fmax-type-align=16 -fdiagnostics-show-option -o CMakeFiles/cmTC_87d15.dir/CMakeCCompilerABI.c.o -x c /usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 12.0.0 (clang-1200.0.32.2) default target x86_64-apple-darwin19.6.0] + ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/local/include"] + ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/Library/Frameworks"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include] + ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include] + ignore line: [ /Library/Developer/CommandLineTools/usr/include] + ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks (framework directory)] + ignore line: [End of search list.] + ignore line: [Linking C executable cmTC_87d15] + ignore line: [/usr/local/Cellar/cmake/3.18.2/bin/cmake -E cmake_link_script CMakeFiles/cmTC_87d15.dir/link.txt --verbose=1] + ignore line: [/Library/Developer/CommandLineTools/usr/bin/cc -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -Wl -search_paths_first -Wl -headerpad_max_install_names -v -Wl -v CMakeFiles/cmTC_87d15.dir/CMakeCCompilerABI.c.o -o cmTC_87d15 ] + ignore line: [Apple clang version 12.0.0 (clang-1200.0.32.2)] + ignore line: [Target: x86_64-apple-darwin19.6.0] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Library/Developer/CommandLineTools/usr/bin] + link line: [ "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch x86_64 -platform_version macos 10.15.0 10.15.6 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -o cmTC_87d15 -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_87d15.dir/CMakeCCompilerABI.c.o -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.osx.a] + arg [/Library/Developer/CommandLineTools/usr/bin/ld] ==> ignore + arg [-demangle] ==> ignore + arg [-lto_library] ==> ignore, skip following value + arg [/Library/Developer/CommandLineTools/usr/lib/libLTO.dylib] ==> skip value of -lto_library + arg [-dynamic] ==> ignore + arg [-arch] ==> ignore + arg [x86_64] ==> ignore + arg [-platform_version] ==> ignore + arg [macos] ==> ignore + arg [10.15.0] ==> ignore + arg [10.15.6] ==> ignore + arg [-syslibroot] ==> ignore + arg [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk] ==> ignore + arg [-o] ==> ignore + arg [cmTC_87d15] ==> ignore + arg [-search_paths_first] ==> ignore + arg [-headerpad_max_install_names] ==> ignore + arg [-v] ==> ignore + arg [CMakeFiles/cmTC_87d15.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [-lSystem] ==> lib [System] + arg [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.osx.a] ==> lib [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.osx.a] + Library search paths: [;/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib] + Framework search paths: [;/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/] + remove lib [System] + remove lib [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.osx.a] + collapse library dir [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib] + collapse framework dir [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks] + implicit libs: [] + implicit dirs: [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib] + implicit fwks: [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks] + + diff --git a/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/Makefile.cmake b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/Makefile.cmake new file mode 100644 index 0000000..3eab083 --- /dev/null +++ b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/Makefile.cmake @@ -0,0 +1,104 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# The generator used is: +set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles") + +# The top level Makefile was generated from the following files: +set(CMAKE_MAKEFILE_DEPENDS + "CMakeCache.txt" + "../CMakeLists.txt" + "CMakeFiles/3.18.2/CMakeCCompiler.cmake" + "CMakeFiles/3.18.2/CMakeSystem.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompiler.cmake.in" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompilerABI.c" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCInformation.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCommonLanguageInclude.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCompilerIdDetection.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineCCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineCompileFeatures.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineCompilerABI.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineCompilerId.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineSystem.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeFindBinUtils.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeGenericSystem.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeInitializeConfigs.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeLanguageInformation.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeParseImplicitIncludeInfo.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeParseImplicitLinkInfo.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeSystem.cmake.in" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeSystemSpecificInformation.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeSystemSpecificInitialize.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeTestCCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeTestCompilerCommon.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeUnixFindMake.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/ADSP-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/AppleClang-C.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Borland-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Bruce-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Clang-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Clang.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Compaq-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Cray-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/GHS-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/GNU-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/GNU.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/HP-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/IAR-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Intel-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/MSVC-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/PGI-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/PathScale-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/SCO-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/SDCC-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/SunPro-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/TI-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Watcom-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/XL-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/XLClang-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/zOS-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/FindPackageHandleStandardArgs.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/FindPackageMessage.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/FindVulkan.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Internal/CMakeCheckCompilerFlag.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Internal/FeatureTesting.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/Apple-AppleClang-C.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/Apple-Clang-C.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/Apple-Clang.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/Darwin-Initialize.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/Darwin.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/UnixPaths.cmake" + ) + +# The corresponding makefile is: +set(CMAKE_MAKEFILE_OUTPUTS + "Makefile" + "CMakeFiles/cmake.check_cache" + ) + +# Byproducts of CMake generate step: +set(CMAKE_MAKEFILE_PRODUCTS + "CMakeFiles/3.18.2/CMakeSystem.cmake" + "CMakeFiles/3.18.2/CMakeCCompiler.cmake" + "CMakeFiles/3.18.2/CMakeCCompiler.cmake" + "CMakeFiles/CMakeDirectoryInformation.cmake" + ) + +# Dependency information for all targets: +set(CMAKE_DEPEND_INFO_FILES + "CMakeFiles/volk_test.dir/DependInfo.cmake" + ) diff --git a/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/Makefile2 b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/Makefile2 new file mode 100644 index 0000000..6a85850 --- /dev/null +++ b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/Makefile2 @@ -0,0 +1,125 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/local/Cellar/cmake/3.18.2/bin/cmake + +# The command to remove a file. +RM = /usr/local/Cellar/cmake/3.18.2/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/_build + +#============================================================================= +# Directory level rules for the build root directory + +# The main recursive "all" target. +all: CMakeFiles/volk_test.dir/all + +.PHONY : all + +# The main recursive "preinstall" target. +preinstall: + +.PHONY : preinstall + +# The main recursive "clean" target. +clean: CMakeFiles/volk_test.dir/clean + +.PHONY : clean + +#============================================================================= +# Target rules for target CMakeFiles/volk_test.dir + +# All Build rule for target. +CMakeFiles/volk_test.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/volk_test.dir/build.make CMakeFiles/volk_test.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/volk_test.dir/build.make CMakeFiles/volk_test.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/_build/CMakeFiles --progress-num=1,2,3 "Built target volk_test" +.PHONY : CMakeFiles/volk_test.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/volk_test.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/_build/CMakeFiles 3 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/volk_test.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/_build/CMakeFiles 0 +.PHONY : CMakeFiles/volk_test.dir/rule + +# Convenience name for target. +volk_test: CMakeFiles/volk_test.dir/rule + +.PHONY : volk_test + +# clean rule for target. +CMakeFiles/volk_test.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/volk_test.dir/build.make CMakeFiles/volk_test.dir/clean +.PHONY : CMakeFiles/volk_test.dir/clean + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/TargetDirectories.txt b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000..5ada6af --- /dev/null +++ b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,3 @@ +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/_build/CMakeFiles/rebuild_cache.dir +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/_build/CMakeFiles/edit_cache.dir +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir diff --git a/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/cmake.check_cache b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..3dccd73 --- /dev/null +++ b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/progress.marks b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/progress.marks new file mode 100644 index 0000000..00750ed --- /dev/null +++ b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/progress.marks @@ -0,0 +1 @@ +3 diff --git a/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/C.includecache b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/C.includecache new file mode 100644 index 0000000..e73ec7e --- /dev/null +++ b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/C.includecache @@ -0,0 +1,136 @@ +#IncludeRegexLine: ^[ ]*[#%][ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +../../../volk.h +vulkan/vk_platform.h +- +vulkan/vulkan_core.h +- +vulkan/vulkan_win32.h +- +vulkan/vulkan_beta.h +- +vulkan/vulkan.h +- + +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/main.c +volk.h +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/volk.h +stdio.h +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/stdio.h +stdlib.h +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/stdlib.h + +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c +volk.h +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.h +dlfcn.h +- + +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.h +vulkan/vk_platform.h +- +vulkan/vulkan_core.h +- +vulkan/vulkan_win32.h +- +vulkan/vulkan_beta.h +- +vulkan/vulkan.h +- + +/usr/local/include/vulkan/vk_platform.h +stddef.h +- +stdint.h +- + +/usr/local/include/vulkan/vulkan.h +vk_platform.h +/usr/local/include/vulkan/vk_platform.h +vulkan_core.h +/usr/local/include/vulkan/vulkan_core.h +vulkan_android.h +/usr/local/include/vulkan/vulkan_android.h +zircon/types.h +- +vulkan_fuchsia.h +/usr/local/include/vulkan/vulkan_fuchsia.h +vulkan_ios.h +/usr/local/include/vulkan/vulkan_ios.h +vulkan_macos.h +/usr/local/include/vulkan/vulkan_macos.h +vulkan_metal.h +/usr/local/include/vulkan/vulkan_metal.h +vulkan_vi.h +/usr/local/include/vulkan/vulkan_vi.h +wayland-client.h +- +vulkan_wayland.h +/usr/local/include/vulkan/vulkan_wayland.h +windows.h +- +vulkan_win32.h +/usr/local/include/vulkan/vulkan_win32.h +xcb/xcb.h +- +vulkan_xcb.h +/usr/local/include/vulkan/vulkan_xcb.h +X11/Xlib.h +- +vulkan_xlib.h +/usr/local/include/vulkan/vulkan_xlib.h +directfb.h +- +vulkan_directfb.h +/usr/local/include/vulkan/vulkan_directfb.h +X11/Xlib.h +- +X11/extensions/Xrandr.h +- +vulkan_xlib_xrandr.h +/usr/local/include/vulkan/vulkan_xlib_xrandr.h +ggp_c/vulkan_types.h +- +vulkan_ggp.h +/usr/local/include/vulkan/vulkan_ggp.h +vulkan_beta.h +/usr/local/include/vulkan/vulkan_beta.h + +/usr/local/include/vulkan/vulkan_android.h + +/usr/local/include/vulkan/vulkan_beta.h + +/usr/local/include/vulkan/vulkan_core.h +vk_platform.h +/usr/local/include/vulkan/vk_platform.h + +/usr/local/include/vulkan/vulkan_directfb.h + +/usr/local/include/vulkan/vulkan_fuchsia.h + +/usr/local/include/vulkan/vulkan_ggp.h + +/usr/local/include/vulkan/vulkan_ios.h + +/usr/local/include/vulkan/vulkan_macos.h + +/usr/local/include/vulkan/vulkan_metal.h + +/usr/local/include/vulkan/vulkan_vi.h + +/usr/local/include/vulkan/vulkan_wayland.h + +/usr/local/include/vulkan/vulkan_win32.h + +/usr/local/include/vulkan/vulkan_xcb.h + +/usr/local/include/vulkan/vulkan_xlib.h + +/usr/local/include/vulkan/vulkan_xlib_xrandr.h + diff --git a/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/DependInfo.cmake b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/DependInfo.cmake new file mode 100644 index 0000000..80acf9d --- /dev/null +++ b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/DependInfo.cmake @@ -0,0 +1,28 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + "C" + ) +# The set of files for implicit dependencies of each language: +set(CMAKE_DEPENDS_CHECK_C + "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c" "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o" + "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/main.c" "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/main.c.o" + ) +set(CMAKE_C_COMPILER_ID "AppleClang") + +# Preprocessor definitions for this target. +set(CMAKE_TARGET_DEFINITIONS_C + "VK_USE_PLATFORM_MACOS_MVK" + ) + +# The include file search paths: +set(CMAKE_C_TARGET_INCLUDE_PATH + "../../.." + "/usr/local/include" + ) + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o new file mode 100644 index 0000000000000000000000000000000000000000..4142543c0da4694f1eb4a5b2c5f27cb60a96c2fb GIT binary patch literal 56108 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 z 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 E4-C1J)c^nh literal 0 HcmV?d00001 diff --git a/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/build.make b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/build.make new file mode 100644 index 0000000..4dc60e8 --- /dev/null +++ b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/build.make @@ -0,0 +1,133 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/local/Cellar/cmake/3.18.2/bin/cmake + +# The command to remove a file. +RM = /usr/local/Cellar/cmake/3.18.2/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/_build + +# Include any dependencies generated for this target. +include CMakeFiles/volk_test.dir/depend.make + +# Include the progress variables for this target. +include CMakeFiles/volk_test.dir/progress.make + +# Include the compile flags for this target's objects. +include CMakeFiles/volk_test.dir/flags.make + +CMakeFiles/volk_test.dir/main.c.o: CMakeFiles/volk_test.dir/flags.make +CMakeFiles/volk_test.dir/main.c.o: ../main.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/_build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object CMakeFiles/volk_test.dir/main.c.o" + /Library/Developer/CommandLineTools/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/volk_test.dir/main.c.o -c /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/main.c + +CMakeFiles/volk_test.dir/main.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/volk_test.dir/main.c.i" + /Library/Developer/CommandLineTools/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/main.c > CMakeFiles/volk_test.dir/main.c.i + +CMakeFiles/volk_test.dir/main.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/volk_test.dir/main.c.s" + /Library/Developer/CommandLineTools/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/main.c -o CMakeFiles/volk_test.dir/main.c.s + +CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o: CMakeFiles/volk_test.dir/flags.make +CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o: /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/_build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building C object CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o" + /Library/Developer/CommandLineTools/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o -c /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c + +CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.i" + /Library/Developer/CommandLineTools/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c > CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.i + +CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.s" + /Library/Developer/CommandLineTools/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c -o CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.s + +# Object files for target volk_test +volk_test_OBJECTS = \ +"CMakeFiles/volk_test.dir/main.c.o" \ +"CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o" + +# External object files for target volk_test +volk_test_EXTERNAL_OBJECTS = + +volk_test: CMakeFiles/volk_test.dir/main.c.o +volk_test: CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o +volk_test: CMakeFiles/volk_test.dir/build.make +volk_test: /usr/local/lib/libvulkan.dylib +volk_test: CMakeFiles/volk_test.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/_build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Linking C executable volk_test" + $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/volk_test.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +CMakeFiles/volk_test.dir/build: volk_test + +.PHONY : CMakeFiles/volk_test.dir/build + +CMakeFiles/volk_test.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/volk_test.dir/cmake_clean.cmake +.PHONY : CMakeFiles/volk_test.dir/clean + +CMakeFiles/volk_test.dir/depend: + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/_build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/_build /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/_build /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/volk_test.dir/depend + diff --git a/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/cmake_clean.cmake b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/cmake_clean.cmake new file mode 100644 index 0000000..b1577c7 --- /dev/null +++ b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/cmake_clean.cmake @@ -0,0 +1,11 @@ +file(REMOVE_RECURSE + "CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o" + "CMakeFiles/volk_test.dir/main.c.o" + "volk_test" + "volk_test.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/volk_test.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/depend.internal b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/depend.internal new file mode 100644 index 0000000..b827e9a --- /dev/null +++ b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/depend.internal @@ -0,0 +1,43 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o + /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c + /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.h + /usr/local/include/vulkan/vk_platform.h + /usr/local/include/vulkan/vulkan.h + /usr/local/include/vulkan/vulkan_android.h + /usr/local/include/vulkan/vulkan_beta.h + /usr/local/include/vulkan/vulkan_core.h + /usr/local/include/vulkan/vulkan_directfb.h + /usr/local/include/vulkan/vulkan_fuchsia.h + /usr/local/include/vulkan/vulkan_ggp.h + /usr/local/include/vulkan/vulkan_ios.h + /usr/local/include/vulkan/vulkan_macos.h + /usr/local/include/vulkan/vulkan_metal.h + /usr/local/include/vulkan/vulkan_vi.h + /usr/local/include/vulkan/vulkan_wayland.h + /usr/local/include/vulkan/vulkan_win32.h + /usr/local/include/vulkan/vulkan_xcb.h + /usr/local/include/vulkan/vulkan_xlib.h + /usr/local/include/vulkan/vulkan_xlib_xrandr.h +CMakeFiles/volk_test.dir/main.c.o + ../../../volk.h + /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/main.c + /usr/local/include/vulkan/vk_platform.h + /usr/local/include/vulkan/vulkan.h + /usr/local/include/vulkan/vulkan_android.h + /usr/local/include/vulkan/vulkan_beta.h + /usr/local/include/vulkan/vulkan_core.h + /usr/local/include/vulkan/vulkan_directfb.h + /usr/local/include/vulkan/vulkan_fuchsia.h + /usr/local/include/vulkan/vulkan_ggp.h + /usr/local/include/vulkan/vulkan_ios.h + /usr/local/include/vulkan/vulkan_macos.h + /usr/local/include/vulkan/vulkan_metal.h + /usr/local/include/vulkan/vulkan_vi.h + /usr/local/include/vulkan/vulkan_wayland.h + /usr/local/include/vulkan/vulkan_win32.h + /usr/local/include/vulkan/vulkan_xcb.h + /usr/local/include/vulkan/vulkan_xlib.h + /usr/local/include/vulkan/vulkan_xlib_xrandr.h diff --git a/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/depend.make b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/depend.make new file mode 100644 index 0000000..85c973e --- /dev/null +++ b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/depend.make @@ -0,0 +1,43 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o: /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c +CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o: /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.h +CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o: /usr/local/include/vulkan/vk_platform.h +CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o: /usr/local/include/vulkan/vulkan.h +CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o: /usr/local/include/vulkan/vulkan_android.h +CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o: /usr/local/include/vulkan/vulkan_beta.h +CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o: /usr/local/include/vulkan/vulkan_core.h +CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o: /usr/local/include/vulkan/vulkan_directfb.h +CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o: /usr/local/include/vulkan/vulkan_fuchsia.h +CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o: /usr/local/include/vulkan/vulkan_ggp.h +CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o: /usr/local/include/vulkan/vulkan_ios.h +CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o: /usr/local/include/vulkan/vulkan_macos.h +CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o: /usr/local/include/vulkan/vulkan_metal.h +CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o: /usr/local/include/vulkan/vulkan_vi.h +CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o: /usr/local/include/vulkan/vulkan_wayland.h +CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o: /usr/local/include/vulkan/vulkan_win32.h +CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o: /usr/local/include/vulkan/vulkan_xcb.h +CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o: /usr/local/include/vulkan/vulkan_xlib.h +CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o: /usr/local/include/vulkan/vulkan_xlib_xrandr.h + +CMakeFiles/volk_test.dir/main.c.o: ../../../volk.h +CMakeFiles/volk_test.dir/main.c.o: ../main.c +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vk_platform.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_android.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_beta.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_core.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_directfb.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_fuchsia.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_ggp.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_ios.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_macos.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_metal.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_vi.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_wayland.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_win32.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_xcb.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_xlib.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_xlib_xrandr.h + diff --git a/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/flags.make b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/flags.make new file mode 100644 index 0000000..a8a3e0a --- /dev/null +++ b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# compile C with /Library/Developer/CommandLineTools/usr/bin/cc +C_DEFINES = -DVK_USE_PLATFORM_MACOS_MVK + +C_INCLUDES = -I/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_source_directly/../.. -isystem /usr/local/include + +C_FLAGS = -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk + diff --git a/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/link.txt b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/link.txt new file mode 100644 index 0000000..5b5c669 --- /dev/null +++ b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/link.txt @@ -0,0 +1 @@ +/Library/Developer/CommandLineTools/usr/bin/cc -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/volk_test.dir/main.c.o CMakeFiles/volk_test.dir/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c.o -o volk_test -Wl,-rpath,/usr/local/lib -ldl /usr/local/lib/libvulkan.dylib diff --git a/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/main.c.o b/libs/volk/test/cmake_using_source_directly/_build/CMakeFiles/volk_test.dir/main.c.o new file mode 100644 index 0000000000000000000000000000000000000000..96f0d374e03769f5b82a78137a70e3ec2ada0a0b GIT binary patch literal 1080 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 rc)thpgAwaQPj literal 0 HcmV?d00001 diff --git a/libs/volk/test/cmake_using_source_directly/main.c b/libs/volk/test/cmake_using_source_directly/main.c new file mode 100644 index 0000000..6ce41ea --- /dev/null +++ b/libs/volk/test/cmake_using_source_directly/main.c @@ -0,0 +1,41 @@ +#include "volk.h" + +#include "stdio.h" +#include "stdlib.h" + +int main() +{ + VkResult r; + uint32_t version; + void* ptr; + + /* This won't compile if the appropriate Vulkan platform define isn't set. */ + ptr = +#if defined(_WIN32) + &vkCreateWin32SurfaceKHR; +#elif defined(__linux__) || defined(__unix__) + &vkCreateXlibSurfaceKHR; +#elif defined(__APPLE__) + &vkCreateMacOSSurfaceMVK; +#else + /* Platform not recogized for testing. */ + NULL; +#endif + + /* Try to initialize volk. This might not work on CI builds, but the + * above should have compiled at least. */ + r = volkInitialize(); + if (r != VK_SUCCESS) { + printf("volkInitialize failed!\n"); + return -1; + } + + version = volkGetInstanceVersion(); + printf("Vulkan version %d.%d.%d initialized.\n", + VK_VERSION_MAJOR(version), + VK_VERSION_MINOR(version), + VK_VERSION_PATCH(version)); + + return 0; +} + diff --git a/libs/volk/test/cmake_using_subdir_headers/CMakeLists.txt b/libs/volk/test/cmake_using_subdir_headers/CMakeLists.txt new file mode 100644 index 0000000..021c5f1 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/CMakeLists.txt @@ -0,0 +1,11 @@ +# Include the volk target through add_subdirectory. + +cmake_minimum_required(VERSION 3.0) +project(volk_test LANGUAGES C) + +# Include volk as part of the build tree to make the target known. +# The two-argument version of add_subdirectory allows adding non-subdirs. +add_subdirectory(../.. volk) + +add_executable(volk_test main.c) +target_link_libraries(volk_test PRIVATE volk_headers) diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/CMakeCache.txt b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeCache.txt new file mode 100644 index 0000000..409593c --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeCache.txt @@ -0,0 +1,373 @@ +# This is the CMakeCache file. +# For build in directory: /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build +# It was generated by CMake: /usr/local/Cellar/cmake/3.18.2/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=CMAKE_ADDR2LINE-NOTFOUND + +//Path to a program. +CMAKE_AR:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/ar + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING= + +//Enable/Disable color output during build. +CMAKE_COLOR_MAKEFILE:BOOL=ON + +//C compiler +CMAKE_C_COMPILER:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/cc + +//Flags used by the C compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the C compiler during DEBUG builds. +CMAKE_C_FLAGS_DEBUG:STRING=-g + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the C compiler during RELEASE builds. +CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Executable file format +CMAKE_EXECUTABLE_FORMAT:STRING=MACHO + +//Flags used by the linker during all build types. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= + +//Path to a program. +CMAKE_INSTALL_NAME_TOOL:FILEPATH=/usr/bin/install_name_tool + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//Path to a program. +CMAKE_LINKER:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/ld + +//Path to a program. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make + +//Flags used by the linker during the creation of modules during +// all build types. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=CMAKE_OBJCOPY-NOTFOUND + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/objdump + +//Build architectures for OSX +CMAKE_OSX_ARCHITECTURES:STRING= + +//Minimum OS X version to target for deployment (at runtime); newer +// APIs weak linked. Set to empty string for default value. +CMAKE_OSX_DEPLOYMENT_TARGET:STRING= + +//The product will be built against the headers and libraries located +// inside the indicated SDK. +CMAKE_OSX_SYSROOT:PATH=/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=volk_test + +//Value Computed by CMake +CMAKE_PROJECT_VERSION:STATIC=155 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_MAJOR:STATIC=155 + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_MINOR:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_PATCH:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_VERSION_TWEAK:STATIC= + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=CMAKE_READELF-NOTFOUND + +//Flags used by the linker during the creation of shared libraries +// during all build types. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/strip + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Create installation targets +VOLK_INSTALL:BOOL=OFF + +//Vulkan as a transitive dependency +VOLK_PULL_IN_VULKAN:BOOL=ON + +//Additional defines for building the volk static library, e.g. +// Vulkan platform defines +VOLK_STATIC_DEFINES:BOOL=OFF + +//Path to a file. +Vulkan_INCLUDE_DIR:PATH=/usr/local/include + +//Path to a library. +Vulkan_LIBRARY:FILEPATH=/usr/local/lib/libvulkan.dylib + +//Value Computed by CMake +volk_BINARY_DIR:STATIC=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/volk + +//Dependencies for the target +volk_LIB_DEPENDS:STATIC=general;dl;general;Vulkan::Vulkan; + +//Value Computed by CMake +volk_SOURCE_DIR:STATIC=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140 + +//Value Computed by CMake +volk_test_BINARY_DIR:STATIC=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build + +//Value Computed by CMake +volk_test_SOURCE_DIR:STATIC=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=18 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=2 +//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE +CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/local/Cellar/cmake/3.18.2/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/local/Cellar/cmake/3.18.2/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/local/Cellar/cmake/3.18.2/bin/ctest +//ADVANCED property for variable: CMAKE_C_COMPILER +CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Path to cache edit program executable. +CMAKE_EDIT_COMMAND:INTERNAL=/usr/local/Cellar/cmake/3.18.2/bin/ccmake +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Unix Makefiles +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers +//ADVANCED property for variable: CMAKE_INSTALL_NAME_TOOL +CMAKE_INSTALL_NAME_TOOL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=2 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/local/Cellar/cmake/3.18.2/share/cmake +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/usr/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: Vulkan_INCLUDE_DIR +Vulkan_INCLUDE_DIR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: Vulkan_LIBRARY +Vulkan_LIBRARY-ADVANCED:INTERNAL=1 + diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/3.18.2/CMakeCCompiler.cmake b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/3.18.2/CMakeCCompiler.cmake new file mode 100644 index 0000000..47d43d0 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/3.18.2/CMakeCCompiler.cmake @@ -0,0 +1,77 @@ +set(CMAKE_C_COMPILER "/Library/Developer/CommandLineTools/usr/bin/cc") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "AppleClang") +set(CMAKE_C_COMPILER_VERSION "12.0.0.12000032") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") + +set(CMAKE_C_PLATFORM_ID "Darwin") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "") +set(CMAKE_C_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "/Library/Developer/CommandLineTools/usr/bin/ar") +set(CMAKE_C_COMPILER_AR "") +set(CMAKE_RANLIB "/Library/Developer/CommandLineTools/usr/bin/ranlib") +set(CMAKE_C_COMPILER_RANLIB "") +set(CMAKE_LINKER "/Library/Developer/CommandLineTools/usr/bin/ld") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCC ) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) +set(CMAKE_COMPILER_IS_MINGW ) +set(CMAKE_COMPILER_IS_CYGWIN ) +if(CMAKE_COMPILER_IS_CYGWIN) + set(CYGWIN 1) + set(UNIX 1) +endif() + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +if(CMAKE_COMPILER_IS_MINGW) + set(MINGW 1) +endif() +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "8") +set(CMAKE_C_COMPILER_ABI "") +set(CMAKE_C_LIBRARY_ARCHITECTURE "") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include;/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include;/Library/Developer/CommandLineTools/usr/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks") diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/3.18.2/CMakeDetermineCompilerABI_C.bin b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/3.18.2/CMakeDetermineCompilerABI_C.bin new file mode 100755 index 0000000000000000000000000000000000000000..8c77ab8022805d01c58daab613ddb28fe9adadfd GIT binary patch literal 16592 zcmeI3yK59t6vppleWB5$P*D_FEJQ7`AqlvM;QAQdMM;8YMU-&OW+r4H*+_O4lZcwe zVhKVDYYDdg16DQ`DfLgVv0K5yB8Z6JH#5u5_(*N>9roLM&V8IY_czm?58uE1+-;1L zGsg5l2cRN?=Oz!&n4?e`vUdE^b@!foYmBp5bF$%IBjzb$qqP(6-HGg$=zJ+VXOeg) zrYY7(vo`dX!q|`FY`zBR{q;JCx%0&6``%X1!L z+A)ZA6t5V&_HAV8)rr@4R^B`w8p2#2ik{iG*X)Am$KT0R&sq5WP{&T={>;PgA#Hqa z5#k!}?0617H>X<*>bbq#2>tni%LAw@s9_WA6vX`Hk}-QQo=IZzl8Jx_h=2%)fCz|y z2#A0Ph=2%)fCz|y2#A0Ph=2%)fCz|y2#A0Ph=2%)fCz|y2#A0Ph=2%)fCz|y2#A0P zh=2%)fCz|y2#A0Ph=2%)fCz|y2#A0P{GSA><<{p-_Xmq>J=rR^nqN2FHly;iyH$R% z|2W*fcL$wZwcV<=*WC8x`}MR{Mz4*XZv-p;!i@DEhKu(Hi<3OgUT2=ArAPKKv&VS^ zBlR-rcc#zY=w6)ck4__C8poo)K4<4=t-s_?H$&gf`ct02Xolyfg1R}!K6aZbz+B)X za^}-h{B1movfvM4WL)fX;?8TTB2_HOcge& Sj*a5B5jJbKhMs#AZGHj%wU^%j literal 0 HcmV?d00001 diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/3.18.2/CMakeSystem.cmake b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/3.18.2/CMakeSystem.cmake new file mode 100644 index 0000000..f4feaf1 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/3.18.2/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Darwin-19.6.0") +set(CMAKE_HOST_SYSTEM_NAME "Darwin") +set(CMAKE_HOST_SYSTEM_VERSION "19.6.0") +set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + + + +set(CMAKE_SYSTEM "Darwin-19.6.0") +set(CMAKE_SYSTEM_NAME "Darwin") +set(CMAKE_SYSTEM_VERSION "19.6.0") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/3.18.2/CompilerIdC/CMakeCCompilerId.c b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/3.18.2/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 0000000..6c0aa93 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/3.18.2/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,674 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXE) || defined(__CRAYXC) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + + +#if !defined(__STDC__) +# if (defined(_MSC_VER) && !defined(__clang__)) \ + || (defined(__ibmxl__) || defined(__IBMC__)) +# define C_DIALECT "90" +# else +# define C_DIALECT +# endif +#elif __STDC_VERSION__ >= 201000L +# define C_DIALECT "11" +#elif __STDC_VERSION__ >= 199901L +# define C_DIALECT "99" +#else +# define C_DIALECT "90" +#endif +const char* info_language_dialect_default = + "INFO" ":" "dialect_default[" C_DIALECT "]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXE) || defined(__CRAYXC) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/3.18.2/CompilerIdC/a.out b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/3.18.2/CompilerIdC/a.out new file mode 100755 index 0000000000000000000000000000000000000000..86e232cfdc5d56e617cf69841db1b7da5a9b708b GIT binary patch literal 33192 zcmeI*L2DaF6bJCPkxfmT)()7|r8%fR6gMQcvDJw@X5THVw~iS5#bQsqV* z`QfH*>>cmZX*1rc?U%SSiCJgj@oHh?c!Is-)$Mp++lwUbnqTK&Tvw_YZu?UNpN75V@$c-rg}ZkOa|`KjBc?J?;~$ z5zc>bEazu`;@>HkA8}sd+?n`)LXtc0*V+HJ`X}6(<$Rv=M6(f11pfL&qnsa~R_%mvQ8G-iDw$MGaKp_t(mnOSjW=phwKV5OygJ*qx>0$nWa|~*4ZL!!D&B_M4B}Egza~#%E>8zm zKYCHauZ5+YPWj1kQ_1CyEBQ%jyEe&}^Hk}Q9;LgK^}Mp)_d1u7M|cgmB&o|f;q!du zkXb=2%`!|orR&@Cb{+Y=EthTCJ`oiNKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##-kHFKQ8HgzcNFzgMpd_zx8s$Yv8T2?x8g-KR(1W5uE_W273F2Gfeh{OJ_`MI z^8$*}?F?u;-4}s&WiJH!*^xaHn(n5jdiF!0mXo39kExH6#Np!;ecaQ>eLm_t$V1Eh z1|9Q-bJ@7yqQv~=@}U{Ck--->CL8B$JYwTT8xPp{p~So?Lf!6f5J)WdY$t93t=7ogJ{rJo#@ literal 0 HcmV?d00001 diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/CMakeDirectoryInformation.cmake b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..677821c --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/CMakeOutput.log b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/CMakeOutput.log new file mode 100644 index 0000000..95dcb8a --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/CMakeOutput.log @@ -0,0 +1,130 @@ +The system is: Darwin - 19.6.0 - x86_64 +Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. +Compiler: /Library/Developer/CommandLineTools/usr/bin/cc +Build flags: +Id flags: + +The output was: +0 + + +Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out" + +The C compiler identification is AppleClang, found in "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/CMakeFiles/3.18.2/CompilerIdC/a.out" + +Detecting C compiler ABI info compiled with the following output: +Change Dir: /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/bin/make cmTC_f9957/fast && /Library/Developer/CommandLineTools/usr/bin/make -f CMakeFiles/cmTC_f9957.dir/build.make CMakeFiles/cmTC_f9957.dir/build +Building C object CMakeFiles/cmTC_f9957.dir/CMakeCCompilerABI.c.o +/Library/Developer/CommandLineTools/usr/bin/cc -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -v -Wl,-v -o CMakeFiles/cmTC_f9957.dir/CMakeCCompilerABI.c.o -c /usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompilerABI.c +Apple clang version 12.0.0 (clang-1200.0.32.2) +Target: x86_64-apple-darwin19.6.0 +Thread model: posix +InstalledDir: /Library/Developer/CommandLineTools/usr/bin +clang: warning: -Wl,-v: 'linker' input unused [-Wunused-command-line-argument] + "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.15.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -mthread-model posix -mframe-pointer=all -fno-strict-return -masm-verbose -munwind-tables -target-sdk-version=10.15.6 -fcompatibility-qualified-id-block-type-checking -target-cpu penryn -dwarf-column-info -debugger-tuning=lldb -target-linker-version 609 -v -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include -internal-externc-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include -internal-externc-isystem /Library/Developer/CommandLineTools/usr/include -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -fdebug-compilation-dir /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/CMakeFiles/CMakeTmp -ferror-limit 19 -fmessage-length 0 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fobjc-runtime=macosx-10.15.0 -fmax-type-align=16 -fdiagnostics-show-option -o CMakeFiles/cmTC_f9957.dir/CMakeCCompilerABI.c.o -x c /usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompilerABI.c +clang -cc1 version 12.0.0 (clang-1200.0.32.2) default target x86_64-apple-darwin19.6.0 +ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/local/include" +ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/Library/Frameworks" +#include "..." search starts here: +#include <...> search starts here: + /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include + /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include + /Library/Developer/CommandLineTools/usr/include + /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks (framework directory) +End of search list. +Linking C executable cmTC_f9957 +/usr/local/Cellar/cmake/3.18.2/bin/cmake -E cmake_link_script CMakeFiles/cmTC_f9957.dir/link.txt --verbose=1 +/Library/Developer/CommandLineTools/usr/bin/cc -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names -v -Wl,-v CMakeFiles/cmTC_f9957.dir/CMakeCCompilerABI.c.o -o cmTC_f9957 +Apple clang version 12.0.0 (clang-1200.0.32.2) +Target: x86_64-apple-darwin19.6.0 +Thread model: posix +InstalledDir: /Library/Developer/CommandLineTools/usr/bin + "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch x86_64 -platform_version macos 10.15.0 10.15.6 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -o cmTC_f9957 -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_f9957.dir/CMakeCCompilerABI.c.o -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.osx.a +@(#)PROGRAM:ld PROJECT:ld64-609 +BUILD 07:59:13 Aug 25 2020 +configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em +Library search paths: + /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib +Framework search paths: + /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/ + + + +Parsed C implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include] + add: [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include] + add: [/Library/Developer/CommandLineTools/usr/include] + end of search list found + collapse include dir [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include] ==> [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include] + collapse include dir [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include] + collapse include dir [/Library/Developer/CommandLineTools/usr/include] ==> [/Library/Developer/CommandLineTools/usr/include] + implicit include dirs: [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include;/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include;/Library/Developer/CommandLineTools/usr/include] + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/usr/bin/make cmTC_f9957/fast && /Library/Developer/CommandLineTools/usr/bin/make -f CMakeFiles/cmTC_f9957.dir/build.make CMakeFiles/cmTC_f9957.dir/build] + ignore line: [Building C object CMakeFiles/cmTC_f9957.dir/CMakeCCompilerABI.c.o] + ignore line: [/Library/Developer/CommandLineTools/usr/bin/cc -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -v -Wl -v -o CMakeFiles/cmTC_f9957.dir/CMakeCCompilerABI.c.o -c /usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompilerABI.c] + ignore line: [Apple clang version 12.0.0 (clang-1200.0.32.2)] + ignore line: [Target: x86_64-apple-darwin19.6.0] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Library/Developer/CommandLineTools/usr/bin] + ignore line: [clang: warning: -Wl -v: 'linker' input unused [-Wunused-command-line-argument]] + ignore line: [ "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.15.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -mthread-model posix -mframe-pointer=all -fno-strict-return -masm-verbose -munwind-tables -target-sdk-version=10.15.6 -fcompatibility-qualified-id-block-type-checking -target-cpu penryn -dwarf-column-info -debugger-tuning=lldb -target-linker-version 609 -v -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include -internal-externc-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include -internal-externc-isystem /Library/Developer/CommandLineTools/usr/include -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -fdebug-compilation-dir /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/CMakeFiles/CMakeTmp -ferror-limit 19 -fmessage-length 0 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fobjc-runtime=macosx-10.15.0 -fmax-type-align=16 -fdiagnostics-show-option -o CMakeFiles/cmTC_f9957.dir/CMakeCCompilerABI.c.o -x c /usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 12.0.0 (clang-1200.0.32.2) default target x86_64-apple-darwin19.6.0] + ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/local/include"] + ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/Library/Frameworks"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include] + ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include] + ignore line: [ /Library/Developer/CommandLineTools/usr/include] + ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks (framework directory)] + ignore line: [End of search list.] + ignore line: [Linking C executable cmTC_f9957] + ignore line: [/usr/local/Cellar/cmake/3.18.2/bin/cmake -E cmake_link_script CMakeFiles/cmTC_f9957.dir/link.txt --verbose=1] + ignore line: [/Library/Developer/CommandLineTools/usr/bin/cc -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -Wl -search_paths_first -Wl -headerpad_max_install_names -v -Wl -v CMakeFiles/cmTC_f9957.dir/CMakeCCompilerABI.c.o -o cmTC_f9957 ] + ignore line: [Apple clang version 12.0.0 (clang-1200.0.32.2)] + ignore line: [Target: x86_64-apple-darwin19.6.0] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Library/Developer/CommandLineTools/usr/bin] + link line: [ "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch x86_64 -platform_version macos 10.15.0 10.15.6 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -o cmTC_f9957 -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_f9957.dir/CMakeCCompilerABI.c.o -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.osx.a] + arg [/Library/Developer/CommandLineTools/usr/bin/ld] ==> ignore + arg [-demangle] ==> ignore + arg [-lto_library] ==> ignore, skip following value + arg [/Library/Developer/CommandLineTools/usr/lib/libLTO.dylib] ==> skip value of -lto_library + arg [-dynamic] ==> ignore + arg [-arch] ==> ignore + arg [x86_64] ==> ignore + arg [-platform_version] ==> ignore + arg [macos] ==> ignore + arg [10.15.0] ==> ignore + arg [10.15.6] ==> ignore + arg [-syslibroot] ==> ignore + arg [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk] ==> ignore + arg [-o] ==> ignore + arg [cmTC_f9957] ==> ignore + arg [-search_paths_first] ==> ignore + arg [-headerpad_max_install_names] ==> ignore + arg [-v] ==> ignore + arg [CMakeFiles/cmTC_f9957.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [-lSystem] ==> lib [System] + arg [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.osx.a] ==> lib [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.osx.a] + Library search paths: [;/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib] + Framework search paths: [;/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/] + remove lib [System] + remove lib [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.osx.a] + collapse library dir [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib] + collapse framework dir [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks] + implicit libs: [] + implicit dirs: [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib] + implicit fwks: [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks] + + diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/Makefile.cmake b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/Makefile.cmake new file mode 100644 index 0000000..ed9b9c8 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/Makefile.cmake @@ -0,0 +1,107 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# The generator used is: +set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles") + +# The top level Makefile was generated from the following files: +set(CMAKE_MAKEFILE_DEPENDS + "CMakeCache.txt" + "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/CMakeLists.txt" + "../CMakeLists.txt" + "CMakeFiles/3.18.2/CMakeCCompiler.cmake" + "CMakeFiles/3.18.2/CMakeSystem.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompiler.cmake.in" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompilerABI.c" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCInformation.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCommonLanguageInclude.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCompilerIdDetection.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineCCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineCompileFeatures.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineCompilerABI.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineCompilerId.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineSystem.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeFindBinUtils.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeGenericSystem.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeInitializeConfigs.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeLanguageInformation.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeParseImplicitIncludeInfo.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeParseImplicitLinkInfo.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeSystem.cmake.in" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeSystemSpecificInformation.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeSystemSpecificInitialize.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeTestCCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeTestCompilerCommon.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeUnixFindMake.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/ADSP-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/AppleClang-C.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Borland-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Bruce-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Clang-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Clang.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Compaq-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Cray-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/GHS-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/GNU-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/GNU.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/HP-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/IAR-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Intel-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/MSVC-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/PGI-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/PathScale-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/SCO-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/SDCC-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/SunPro-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/TI-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Watcom-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/XL-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/XLClang-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/zOS-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/FindPackageHandleStandardArgs.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/FindPackageMessage.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/FindVulkan.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Internal/CMakeCheckCompilerFlag.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Internal/FeatureTesting.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/Apple-AppleClang-C.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/Apple-Clang-C.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/Apple-Clang.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/Darwin-Initialize.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/Darwin.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/UnixPaths.cmake" + ) + +# The corresponding makefile is: +set(CMAKE_MAKEFILE_OUTPUTS + "Makefile" + "CMakeFiles/cmake.check_cache" + ) + +# Byproducts of CMake generate step: +set(CMAKE_MAKEFILE_PRODUCTS + "CMakeFiles/3.18.2/CMakeSystem.cmake" + "CMakeFiles/3.18.2/CMakeCCompiler.cmake" + "CMakeFiles/3.18.2/CMakeCCompiler.cmake" + "CMakeFiles/CMakeDirectoryInformation.cmake" + "volk/CMakeFiles/CMakeDirectoryInformation.cmake" + ) + +# Dependency information for all targets: +set(CMAKE_DEPEND_INFO_FILES + "CMakeFiles/volk_test.dir/DependInfo.cmake" + "volk/CMakeFiles/volk.dir/DependInfo.cmake" + ) diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/Makefile2 b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/Makefile2 new file mode 100644 index 0000000..618cc8b --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/Makefile2 @@ -0,0 +1,172 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/local/Cellar/cmake/3.18.2/bin/cmake + +# The command to remove a file. +RM = /usr/local/Cellar/cmake/3.18.2/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build + +#============================================================================= +# Directory level rules for the build root directory + +# The main recursive "all" target. +all: CMakeFiles/volk_test.dir/all +all: volk/all + +.PHONY : all + +# The main recursive "preinstall" target. +preinstall: volk/preinstall + +.PHONY : preinstall + +# The main recursive "clean" target. +clean: CMakeFiles/volk_test.dir/clean +clean: volk/clean + +.PHONY : clean + +#============================================================================= +# Directory level rules for directory volk + +# Recursive "all" directory target. +volk/all: volk/CMakeFiles/volk.dir/all + +.PHONY : volk/all + +# Recursive "preinstall" directory target. +volk/preinstall: + +.PHONY : volk/preinstall + +# Recursive "clean" directory target. +volk/clean: volk/CMakeFiles/volk.dir/clean + +.PHONY : volk/clean + +#============================================================================= +# Target rules for target CMakeFiles/volk_test.dir + +# All Build rule for target. +CMakeFiles/volk_test.dir/all: + $(MAKE) $(MAKESILENT) -f CMakeFiles/volk_test.dir/build.make CMakeFiles/volk_test.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/volk_test.dir/build.make CMakeFiles/volk_test.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/CMakeFiles --progress-num=3,4 "Built target volk_test" +.PHONY : CMakeFiles/volk_test.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/volk_test.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/CMakeFiles 2 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/volk_test.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/CMakeFiles 0 +.PHONY : CMakeFiles/volk_test.dir/rule + +# Convenience name for target. +volk_test: CMakeFiles/volk_test.dir/rule + +.PHONY : volk_test + +# clean rule for target. +CMakeFiles/volk_test.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/volk_test.dir/build.make CMakeFiles/volk_test.dir/clean +.PHONY : CMakeFiles/volk_test.dir/clean + +#============================================================================= +# Target rules for target volk/CMakeFiles/volk.dir + +# All Build rule for target. +volk/CMakeFiles/volk.dir/all: + $(MAKE) $(MAKESILENT) -f volk/CMakeFiles/volk.dir/build.make volk/CMakeFiles/volk.dir/depend + $(MAKE) $(MAKESILENT) -f volk/CMakeFiles/volk.dir/build.make volk/CMakeFiles/volk.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/CMakeFiles --progress-num=1,2 "Built target volk" +.PHONY : volk/CMakeFiles/volk.dir/all + +# Build rule for subdir invocation for target. +volk/CMakeFiles/volk.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/CMakeFiles 2 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 volk/CMakeFiles/volk.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/CMakeFiles 0 +.PHONY : volk/CMakeFiles/volk.dir/rule + +# Convenience name for target. +volk: volk/CMakeFiles/volk.dir/rule + +.PHONY : volk + +# clean rule for target. +volk/CMakeFiles/volk.dir/clean: + $(MAKE) $(MAKESILENT) -f volk/CMakeFiles/volk.dir/build.make volk/CMakeFiles/volk.dir/clean +.PHONY : volk/CMakeFiles/volk.dir/clean + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/TargetDirectories.txt b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000..f40c0a1 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,6 @@ +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/CMakeFiles/rebuild_cache.dir +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/CMakeFiles/edit_cache.dir +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/rebuild_cache.dir +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/edit_cache.dir +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/cmake.check_cache b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..3dccd73 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/progress.marks b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/progress.marks new file mode 100644 index 0000000..b8626c4 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/progress.marks @@ -0,0 +1 @@ +4 diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/C.includecache b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/C.includecache new file mode 100644 index 0000000..09060a5 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/C.includecache @@ -0,0 +1,118 @@ +#IncludeRegexLine: ^[ ]*[#%][ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/main.c +volk.h +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/volk.h +stdio.h +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/stdio.h +stdlib.h +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/stdlib.h + +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.h +vulkan/vk_platform.h +- +vulkan/vulkan_core.h +- +vulkan/vulkan_win32.h +- +vulkan/vulkan_beta.h +- +vulkan/vulkan.h +- + +/usr/local/include/vulkan/vk_platform.h +stddef.h +- +stdint.h +- + +/usr/local/include/vulkan/vulkan.h +vk_platform.h +/usr/local/include/vulkan/vk_platform.h +vulkan_core.h +/usr/local/include/vulkan/vulkan_core.h +vulkan_android.h +/usr/local/include/vulkan/vulkan_android.h +zircon/types.h +- +vulkan_fuchsia.h +/usr/local/include/vulkan/vulkan_fuchsia.h +vulkan_ios.h +/usr/local/include/vulkan/vulkan_ios.h +vulkan_macos.h +/usr/local/include/vulkan/vulkan_macos.h +vulkan_metal.h +/usr/local/include/vulkan/vulkan_metal.h +vulkan_vi.h +/usr/local/include/vulkan/vulkan_vi.h +wayland-client.h +- +vulkan_wayland.h +/usr/local/include/vulkan/vulkan_wayland.h +windows.h +- +vulkan_win32.h +/usr/local/include/vulkan/vulkan_win32.h +xcb/xcb.h +- +vulkan_xcb.h +/usr/local/include/vulkan/vulkan_xcb.h +X11/Xlib.h +- +vulkan_xlib.h +/usr/local/include/vulkan/vulkan_xlib.h +directfb.h +- +vulkan_directfb.h +/usr/local/include/vulkan/vulkan_directfb.h +X11/Xlib.h +- +X11/extensions/Xrandr.h +- +vulkan_xlib_xrandr.h +/usr/local/include/vulkan/vulkan_xlib_xrandr.h +ggp_c/vulkan_types.h +- +vulkan_ggp.h +/usr/local/include/vulkan/vulkan_ggp.h +vulkan_beta.h +/usr/local/include/vulkan/vulkan_beta.h + +/usr/local/include/vulkan/vulkan_android.h + +/usr/local/include/vulkan/vulkan_beta.h + +/usr/local/include/vulkan/vulkan_core.h +vk_platform.h +/usr/local/include/vulkan/vk_platform.h + +/usr/local/include/vulkan/vulkan_directfb.h + +/usr/local/include/vulkan/vulkan_fuchsia.h + +/usr/local/include/vulkan/vulkan_ggp.h + +/usr/local/include/vulkan/vulkan_ios.h + +/usr/local/include/vulkan/vulkan_macos.h + +/usr/local/include/vulkan/vulkan_metal.h + +/usr/local/include/vulkan/vulkan_vi.h + +/usr/local/include/vulkan/vulkan_wayland.h + +/usr/local/include/vulkan/vulkan_win32.h + +/usr/local/include/vulkan/vulkan_xcb.h + +/usr/local/include/vulkan/vulkan_xlib.h + +/usr/local/include/vulkan/vulkan_xlib_xrandr.h + diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/DependInfo.cmake b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/DependInfo.cmake new file mode 100644 index 0000000..db6bb2f --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/DependInfo.cmake @@ -0,0 +1,22 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + "C" + ) +# The set of files for implicit dependencies of each language: +set(CMAKE_DEPENDS_CHECK_C + "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/main.c" "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/main.c.o" + ) +set(CMAKE_C_COMPILER_ID "AppleClang") + +# The include file search paths: +set(CMAKE_C_TARGET_INCLUDE_PATH + "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140" + "/usr/local/include" + ) + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/build.make b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/build.make new file mode 100644 index 0000000..9f63f2d --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/build.make @@ -0,0 +1,118 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/local/Cellar/cmake/3.18.2/bin/cmake + +# The command to remove a file. +RM = /usr/local/Cellar/cmake/3.18.2/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build + +# Include any dependencies generated for this target. +include CMakeFiles/volk_test.dir/depend.make + +# Include the progress variables for this target. +include CMakeFiles/volk_test.dir/progress.make + +# Include the compile flags for this target's objects. +include CMakeFiles/volk_test.dir/flags.make + +CMakeFiles/volk_test.dir/main.c.o: CMakeFiles/volk_test.dir/flags.make +CMakeFiles/volk_test.dir/main.c.o: ../main.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object CMakeFiles/volk_test.dir/main.c.o" + /Library/Developer/CommandLineTools/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/volk_test.dir/main.c.o -c /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/main.c + +CMakeFiles/volk_test.dir/main.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/volk_test.dir/main.c.i" + /Library/Developer/CommandLineTools/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/main.c > CMakeFiles/volk_test.dir/main.c.i + +CMakeFiles/volk_test.dir/main.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/volk_test.dir/main.c.s" + /Library/Developer/CommandLineTools/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/main.c -o CMakeFiles/volk_test.dir/main.c.s + +# Object files for target volk_test +volk_test_OBJECTS = \ +"CMakeFiles/volk_test.dir/main.c.o" + +# External object files for target volk_test +volk_test_EXTERNAL_OBJECTS = + +volk_test: CMakeFiles/volk_test.dir/main.c.o +volk_test: CMakeFiles/volk_test.dir/build.make +volk_test: /usr/local/lib/libvulkan.dylib +volk_test: CMakeFiles/volk_test.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking C executable volk_test" + $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/volk_test.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +CMakeFiles/volk_test.dir/build: volk_test + +.PHONY : CMakeFiles/volk_test.dir/build + +CMakeFiles/volk_test.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/volk_test.dir/cmake_clean.cmake +.PHONY : CMakeFiles/volk_test.dir/clean + +CMakeFiles/volk_test.dir/depend: + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/volk_test.dir/depend + diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/cmake_clean.cmake b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/cmake_clean.cmake new file mode 100644 index 0000000..1617c22 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/cmake_clean.cmake @@ -0,0 +1,10 @@ +file(REMOVE_RECURSE + "CMakeFiles/volk_test.dir/main.c.o" + "volk_test" + "volk_test.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/volk_test.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/depend.internal b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/depend.internal new file mode 100644 index 0000000..fb44b59 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/depend.internal @@ -0,0 +1,23 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +CMakeFiles/volk_test.dir/main.c.o + /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/main.c + /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.h + /usr/local/include/vulkan/vk_platform.h + /usr/local/include/vulkan/vulkan.h + /usr/local/include/vulkan/vulkan_android.h + /usr/local/include/vulkan/vulkan_beta.h + /usr/local/include/vulkan/vulkan_core.h + /usr/local/include/vulkan/vulkan_directfb.h + /usr/local/include/vulkan/vulkan_fuchsia.h + /usr/local/include/vulkan/vulkan_ggp.h + /usr/local/include/vulkan/vulkan_ios.h + /usr/local/include/vulkan/vulkan_macos.h + /usr/local/include/vulkan/vulkan_metal.h + /usr/local/include/vulkan/vulkan_vi.h + /usr/local/include/vulkan/vulkan_wayland.h + /usr/local/include/vulkan/vulkan_win32.h + /usr/local/include/vulkan/vulkan_xcb.h + /usr/local/include/vulkan/vulkan_xlib.h + /usr/local/include/vulkan/vulkan_xlib_xrandr.h diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/depend.make b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/depend.make new file mode 100644 index 0000000..314e288 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/depend.make @@ -0,0 +1,23 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +CMakeFiles/volk_test.dir/main.c.o: ../main.c +CMakeFiles/volk_test.dir/main.c.o: /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vk_platform.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_android.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_beta.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_core.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_directfb.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_fuchsia.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_ggp.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_ios.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_macos.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_metal.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_vi.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_wayland.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_win32.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_xcb.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_xlib.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_xlib_xrandr.h + diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/flags.make b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/flags.make new file mode 100644 index 0000000..73787fc --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# compile C with /Library/Developer/CommandLineTools/usr/bin/cc +C_DEFINES = + +C_INCLUDES = -I/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140 -isystem /usr/local/include + +C_FLAGS = -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk + diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/link.txt b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/link.txt new file mode 100644 index 0000000..92c9d09 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/link.txt @@ -0,0 +1 @@ +/Library/Developer/CommandLineTools/usr/bin/cc -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/volk_test.dir/main.c.o -o volk_test -Wl,-rpath,/usr/local/lib -ldl /usr/local/lib/libvulkan.dylib diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/main.c.o b/libs/volk/test/cmake_using_subdir_headers/_build/CMakeFiles/volk_test.dir/main.c.o new file mode 100644 index 0000000000000000000000000000000000000000..3cf31d9e8e4ee24c1bc0de107334bd0f4b00d1ff GIT binary patch literal 56496 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 O(#@JlKSa++]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c +volk.h +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.h +dlfcn.h +- + +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.h +vulkan/vk_platform.h +- +vulkan/vulkan_core.h +- +vulkan/vulkan_win32.h +- +vulkan/vulkan_beta.h +- +vulkan/vulkan.h +- + +/usr/local/include/vulkan/vk_platform.h +stddef.h +- +stdint.h +- + +/usr/local/include/vulkan/vulkan.h +vk_platform.h +/usr/local/include/vulkan/vk_platform.h +vulkan_core.h +/usr/local/include/vulkan/vulkan_core.h +vulkan_android.h +/usr/local/include/vulkan/vulkan_android.h +zircon/types.h +- +vulkan_fuchsia.h +/usr/local/include/vulkan/vulkan_fuchsia.h +vulkan_ios.h +/usr/local/include/vulkan/vulkan_ios.h +vulkan_macos.h +/usr/local/include/vulkan/vulkan_macos.h +vulkan_metal.h +/usr/local/include/vulkan/vulkan_metal.h +vulkan_vi.h +/usr/local/include/vulkan/vulkan_vi.h +wayland-client.h +- +vulkan_wayland.h +/usr/local/include/vulkan/vulkan_wayland.h +windows.h +- +vulkan_win32.h +/usr/local/include/vulkan/vulkan_win32.h +xcb/xcb.h +- +vulkan_xcb.h +/usr/local/include/vulkan/vulkan_xcb.h +X11/Xlib.h +- +vulkan_xlib.h +/usr/local/include/vulkan/vulkan_xlib.h +directfb.h +- +vulkan_directfb.h +/usr/local/include/vulkan/vulkan_directfb.h +X11/Xlib.h +- +X11/extensions/Xrandr.h +- +vulkan_xlib_xrandr.h +/usr/local/include/vulkan/vulkan_xlib_xrandr.h +ggp_c/vulkan_types.h +- +vulkan_ggp.h +/usr/local/include/vulkan/vulkan_ggp.h +vulkan_beta.h +/usr/local/include/vulkan/vulkan_beta.h + +/usr/local/include/vulkan/vulkan_android.h + +/usr/local/include/vulkan/vulkan_beta.h + +/usr/local/include/vulkan/vulkan_core.h +vk_platform.h +/usr/local/include/vulkan/vk_platform.h + +/usr/local/include/vulkan/vulkan_directfb.h + +/usr/local/include/vulkan/vulkan_fuchsia.h + +/usr/local/include/vulkan/vulkan_ggp.h + +/usr/local/include/vulkan/vulkan_ios.h + +/usr/local/include/vulkan/vulkan_macos.h + +/usr/local/include/vulkan/vulkan_metal.h + +/usr/local/include/vulkan/vulkan_vi.h + +/usr/local/include/vulkan/vulkan_wayland.h + +/usr/local/include/vulkan/vulkan_win32.h + +/usr/local/include/vulkan/vulkan_xcb.h + +/usr/local/include/vulkan/vulkan_xlib.h + +/usr/local/include/vulkan/vulkan_xlib_xrandr.h + diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/DependInfo.cmake b/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/DependInfo.cmake new file mode 100644 index 0000000..4b007bc --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/DependInfo.cmake @@ -0,0 +1,22 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + "C" + ) +# The set of files for implicit dependencies of each language: +set(CMAKE_DEPENDS_CHECK_C + "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c" "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/volk.c.o" + ) +set(CMAKE_C_COMPILER_ID "AppleClang") + +# The include file search paths: +set(CMAKE_C_TARGET_INCLUDE_PATH + "../../../" + "/usr/local/include" + ) + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/build.make b/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/build.make new file mode 100644 index 0000000..e0302cb --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/build.make @@ -0,0 +1,118 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/local/Cellar/cmake/3.18.2/bin/cmake + +# The command to remove a file. +RM = /usr/local/Cellar/cmake/3.18.2/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build + +# Include any dependencies generated for this target. +include volk/CMakeFiles/volk.dir/depend.make + +# Include the progress variables for this target. +include volk/CMakeFiles/volk.dir/progress.make + +# Include the compile flags for this target's objects. +include volk/CMakeFiles/volk.dir/flags.make + +volk/CMakeFiles/volk.dir/volk.c.o: volk/CMakeFiles/volk.dir/flags.make +volk/CMakeFiles/volk.dir/volk.c.o: ../../../volk.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object volk/CMakeFiles/volk.dir/volk.c.o" + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/volk && /Library/Developer/CommandLineTools/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/volk.dir/volk.c.o -c /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c + +volk/CMakeFiles/volk.dir/volk.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/volk.dir/volk.c.i" + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/volk && /Library/Developer/CommandLineTools/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c > CMakeFiles/volk.dir/volk.c.i + +volk/CMakeFiles/volk.dir/volk.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/volk.dir/volk.c.s" + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/volk && /Library/Developer/CommandLineTools/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c -o CMakeFiles/volk.dir/volk.c.s + +# Object files for target volk +volk_OBJECTS = \ +"CMakeFiles/volk.dir/volk.c.o" + +# External object files for target volk +volk_EXTERNAL_OBJECTS = + +volk/libvolk.a: volk/CMakeFiles/volk.dir/volk.c.o +volk/libvolk.a: volk/CMakeFiles/volk.dir/build.make +volk/libvolk.a: volk/CMakeFiles/volk.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking C static library libvolk.a" + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/volk && $(CMAKE_COMMAND) -P CMakeFiles/volk.dir/cmake_clean_target.cmake + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/volk && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/volk.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +volk/CMakeFiles/volk.dir/build: volk/libvolk.a + +.PHONY : volk/CMakeFiles/volk.dir/build + +volk/CMakeFiles/volk.dir/clean: + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/volk && $(CMAKE_COMMAND) -P CMakeFiles/volk.dir/cmake_clean.cmake +.PHONY : volk/CMakeFiles/volk.dir/clean + +volk/CMakeFiles/volk.dir/depend: + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140 /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/volk /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : volk/CMakeFiles/volk.dir/depend + diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/cmake_clean.cmake b/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/cmake_clean.cmake new file mode 100644 index 0000000..a78c226 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/cmake_clean.cmake @@ -0,0 +1,10 @@ +file(REMOVE_RECURSE + "CMakeFiles/volk.dir/volk.c.o" + "libvolk.a" + "libvolk.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/volk.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/cmake_clean_target.cmake b/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/cmake_clean_target.cmake new file mode 100644 index 0000000..e7c8950 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/cmake_clean_target.cmake @@ -0,0 +1,3 @@ +file(REMOVE_RECURSE + "libvolk.a" +) diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/depend.internal b/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/depend.internal new file mode 100644 index 0000000..e3df17e --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/depend.internal @@ -0,0 +1,23 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +volk/CMakeFiles/volk.dir/volk.c.o + /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c + /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.h + /usr/local/include/vulkan/vk_platform.h + /usr/local/include/vulkan/vulkan.h + /usr/local/include/vulkan/vulkan_android.h + /usr/local/include/vulkan/vulkan_beta.h + /usr/local/include/vulkan/vulkan_core.h + /usr/local/include/vulkan/vulkan_directfb.h + /usr/local/include/vulkan/vulkan_fuchsia.h + /usr/local/include/vulkan/vulkan_ggp.h + /usr/local/include/vulkan/vulkan_ios.h + /usr/local/include/vulkan/vulkan_macos.h + /usr/local/include/vulkan/vulkan_metal.h + /usr/local/include/vulkan/vulkan_vi.h + /usr/local/include/vulkan/vulkan_wayland.h + /usr/local/include/vulkan/vulkan_win32.h + /usr/local/include/vulkan/vulkan_xcb.h + /usr/local/include/vulkan/vulkan_xlib.h + /usr/local/include/vulkan/vulkan_xlib_xrandr.h diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/depend.make b/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/depend.make new file mode 100644 index 0000000..f4efde4 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/depend.make @@ -0,0 +1,23 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +volk/CMakeFiles/volk.dir/volk.c.o: ../../../volk.c +volk/CMakeFiles/volk.dir/volk.c.o: ../../../volk.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vk_platform.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_android.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_beta.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_core.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_directfb.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_fuchsia.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_ggp.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_ios.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_macos.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_metal.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_vi.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_wayland.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_win32.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_xcb.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_xlib.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_xlib_xrandr.h + diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/flags.make b/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/flags.make new file mode 100644 index 0000000..73787fc --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# compile C with /Library/Developer/CommandLineTools/usr/bin/cc +C_DEFINES = + +C_INCLUDES = -I/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140 -isystem /usr/local/include + +C_FLAGS = -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk + diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/link.txt b/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/link.txt new file mode 100644 index 0000000..f6ae7e2 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/link.txt @@ -0,0 +1,2 @@ +/Library/Developer/CommandLineTools/usr/bin/ar qc libvolk.a CMakeFiles/volk.dir/volk.c.o +/Library/Developer/CommandLineTools/usr/bin/ranlib libvolk.a diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/progress.make b/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/progress.make new file mode 100644 index 0000000..abadeb0 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/progress.make @@ -0,0 +1,3 @@ +CMAKE_PROGRESS_1 = 1 +CMAKE_PROGRESS_2 = 2 + diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/volk.c.o b/libs/volk/test/cmake_using_subdir_headers/_build/volk/CMakeFiles/volk.dir/volk.c.o new file mode 100644 index 0000000000000000000000000000000000000000..b310663c4791fd49c96c33e6e1f4f3dacbe4db1a GIT binary patch literal 55992 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 literal 0 HcmV?d00001 diff --git a/libs/volk/test/cmake_using_subdir_headers/_build/volk_test b/libs/volk/test/cmake_using_subdir_headers/_build/volk_test new file mode 100755 index 0000000000000000000000000000000000000000..115d95d3ac51a33ea39edf360733f8a3d0dc2c02 GIT binary patch literal 83416 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 Sj*a5B5jJbKhMs#AZGHj%wU^%j literal 0 HcmV?d00001 diff --git a/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/3.18.2/CMakeSystem.cmake b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/3.18.2/CMakeSystem.cmake new file mode 100644 index 0000000..f4feaf1 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/3.18.2/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Darwin-19.6.0") +set(CMAKE_HOST_SYSTEM_NAME "Darwin") +set(CMAKE_HOST_SYSTEM_VERSION "19.6.0") +set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + + + +set(CMAKE_SYSTEM "Darwin-19.6.0") +set(CMAKE_SYSTEM_NAME "Darwin") +set(CMAKE_SYSTEM_VERSION "19.6.0") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/3.18.2/CompilerIdC/CMakeCCompilerId.c b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/3.18.2/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 0000000..6c0aa93 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/3.18.2/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,674 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXE) || defined(__CRAYXC) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + + +#if !defined(__STDC__) +# if (defined(_MSC_VER) && !defined(__clang__)) \ + || (defined(__ibmxl__) || defined(__IBMC__)) +# define C_DIALECT "90" +# else +# define C_DIALECT +# endif +#elif __STDC_VERSION__ >= 201000L +# define C_DIALECT "11" +#elif __STDC_VERSION__ >= 199901L +# define C_DIALECT "99" +#else +# define C_DIALECT "90" +#endif +const char* info_language_dialect_default = + "INFO" ":" "dialect_default[" C_DIALECT "]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXE) || defined(__CRAYXC) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/3.18.2/CompilerIdC/a.out b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/3.18.2/CompilerIdC/a.out new file mode 100755 index 0000000000000000000000000000000000000000..86e232cfdc5d56e617cf69841db1b7da5a9b708b GIT binary patch literal 33192 zcmeI*L2DaF6bJCPkxfmT)()7|r8%fR6gMQcvDJw@X5THVw~iS5#bQsqV* z`QfH*>>cmZX*1rc?U%SSiCJgj@oHh?c!Is-)$Mp++lwUbnqTK&Tvw_YZu?UNpN75V@$c-rg}ZkOa|`KjBc?J?;~$ z5zc>bEazu`;@>HkA8}sd+?n`)LXtc0*V+HJ`X}6(<$Rv=M6(f11pfL&qnsa~R_%mvQ8G-iDw$MGaKp_t(mnOSjW=phwKV5OygJ*qx>0$nWa|~*4ZL!!D&B_M4B}Egza~#%E>8zm zKYCHauZ5+YPWj1kQ_1CyEBQ%jyEe&}^Hk}Q9;LgK^}Mp)_d1u7M|cgmB&o|f;q!du zkXb=2%`!|orR&@Cb{+Y=EthTCJ`oiNKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##-kHFKQ8HgzcNFzgMpd_zx8s$Yv8T2?x8g-KR(1W5uE_W273F2Gfeh{OJ_`MI z^8$*}?F?u;-4}s&WiJH!*^xaHn(n5jdiF!0mXo39kExH6#Np!;ecaQ>eLm_t$V1Eh z1|9Q-bJ@7yqQv~=@}U{Ck--->CL8B$JYwTT8xPp{p~So?Lf!6f5J)WdY$t93t=7ogJ{rJo#@ literal 0 HcmV?d00001 diff --git a/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/CMakeDirectoryInformation.cmake b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..54b2e02 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/CMakeOutput.log b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/CMakeOutput.log new file mode 100644 index 0000000..f2d223f --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/CMakeOutput.log @@ -0,0 +1,130 @@ +The system is: Darwin - 19.6.0 - x86_64 +Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. +Compiler: /Library/Developer/CommandLineTools/usr/bin/cc +Build flags: +Id flags: + +The output was: +0 + + +Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out" + +The C compiler identification is AppleClang, found in "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/CMakeFiles/3.18.2/CompilerIdC/a.out" + +Detecting C compiler ABI info compiled with the following output: +Change Dir: /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/bin/make cmTC_1d3a8/fast && /Library/Developer/CommandLineTools/usr/bin/make -f CMakeFiles/cmTC_1d3a8.dir/build.make CMakeFiles/cmTC_1d3a8.dir/build +Building C object CMakeFiles/cmTC_1d3a8.dir/CMakeCCompilerABI.c.o +/Library/Developer/CommandLineTools/usr/bin/cc -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -v -Wl,-v -o CMakeFiles/cmTC_1d3a8.dir/CMakeCCompilerABI.c.o -c /usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompilerABI.c +Apple clang version 12.0.0 (clang-1200.0.32.2) +Target: x86_64-apple-darwin19.6.0 +Thread model: posix +InstalledDir: /Library/Developer/CommandLineTools/usr/bin +clang: warning: -Wl,-v: 'linker' input unused [-Wunused-command-line-argument] + "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.15.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -mthread-model posix -mframe-pointer=all -fno-strict-return -masm-verbose -munwind-tables -target-sdk-version=10.15.6 -fcompatibility-qualified-id-block-type-checking -target-cpu penryn -dwarf-column-info -debugger-tuning=lldb -target-linker-version 609 -v -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include -internal-externc-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include -internal-externc-isystem /Library/Developer/CommandLineTools/usr/include -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -fdebug-compilation-dir /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/CMakeFiles/CMakeTmp -ferror-limit 19 -fmessage-length 0 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fobjc-runtime=macosx-10.15.0 -fmax-type-align=16 -fdiagnostics-show-option -o CMakeFiles/cmTC_1d3a8.dir/CMakeCCompilerABI.c.o -x c /usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompilerABI.c +clang -cc1 version 12.0.0 (clang-1200.0.32.2) default target x86_64-apple-darwin19.6.0 +ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/local/include" +ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/Library/Frameworks" +#include "..." search starts here: +#include <...> search starts here: + /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include + /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include + /Library/Developer/CommandLineTools/usr/include + /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks (framework directory) +End of search list. +Linking C executable cmTC_1d3a8 +/usr/local/Cellar/cmake/3.18.2/bin/cmake -E cmake_link_script CMakeFiles/cmTC_1d3a8.dir/link.txt --verbose=1 +/Library/Developer/CommandLineTools/usr/bin/cc -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names -v -Wl,-v CMakeFiles/cmTC_1d3a8.dir/CMakeCCompilerABI.c.o -o cmTC_1d3a8 +Apple clang version 12.0.0 (clang-1200.0.32.2) +Target: x86_64-apple-darwin19.6.0 +Thread model: posix +InstalledDir: /Library/Developer/CommandLineTools/usr/bin + "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch x86_64 -platform_version macos 10.15.0 10.15.6 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -o cmTC_1d3a8 -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_1d3a8.dir/CMakeCCompilerABI.c.o -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.osx.a +@(#)PROGRAM:ld PROJECT:ld64-609 +BUILD 07:59:13 Aug 25 2020 +configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em +Library search paths: + /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib +Framework search paths: + /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/ + + + +Parsed C implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include] + add: [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include] + add: [/Library/Developer/CommandLineTools/usr/include] + end of search list found + collapse include dir [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include] ==> [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include] + collapse include dir [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include] + collapse include dir [/Library/Developer/CommandLineTools/usr/include] ==> [/Library/Developer/CommandLineTools/usr/include] + implicit include dirs: [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include;/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include;/Library/Developer/CommandLineTools/usr/include] + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/usr/bin/make cmTC_1d3a8/fast && /Library/Developer/CommandLineTools/usr/bin/make -f CMakeFiles/cmTC_1d3a8.dir/build.make CMakeFiles/cmTC_1d3a8.dir/build] + ignore line: [Building C object CMakeFiles/cmTC_1d3a8.dir/CMakeCCompilerABI.c.o] + ignore line: [/Library/Developer/CommandLineTools/usr/bin/cc -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -v -Wl -v -o CMakeFiles/cmTC_1d3a8.dir/CMakeCCompilerABI.c.o -c /usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompilerABI.c] + ignore line: [Apple clang version 12.0.0 (clang-1200.0.32.2)] + ignore line: [Target: x86_64-apple-darwin19.6.0] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Library/Developer/CommandLineTools/usr/bin] + ignore line: [clang: warning: -Wl -v: 'linker' input unused [-Wunused-command-line-argument]] + ignore line: [ "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.15.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -mthread-model posix -mframe-pointer=all -fno-strict-return -masm-verbose -munwind-tables -target-sdk-version=10.15.6 -fcompatibility-qualified-id-block-type-checking -target-cpu penryn -dwarf-column-info -debugger-tuning=lldb -target-linker-version 609 -v -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include -internal-externc-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include -internal-externc-isystem /Library/Developer/CommandLineTools/usr/include -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -fdebug-compilation-dir /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/CMakeFiles/CMakeTmp -ferror-limit 19 -fmessage-length 0 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fobjc-runtime=macosx-10.15.0 -fmax-type-align=16 -fdiagnostics-show-option -o CMakeFiles/cmTC_1d3a8.dir/CMakeCCompilerABI.c.o -x c /usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 12.0.0 (clang-1200.0.32.2) default target x86_64-apple-darwin19.6.0] + ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/local/include"] + ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/Library/Frameworks"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/include] + ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include] + ignore line: [ /Library/Developer/CommandLineTools/usr/include] + ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks (framework directory)] + ignore line: [End of search list.] + ignore line: [Linking C executable cmTC_1d3a8] + ignore line: [/usr/local/Cellar/cmake/3.18.2/bin/cmake -E cmake_link_script CMakeFiles/cmTC_1d3a8.dir/link.txt --verbose=1] + ignore line: [/Library/Developer/CommandLineTools/usr/bin/cc -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -Wl -search_paths_first -Wl -headerpad_max_install_names -v -Wl -v CMakeFiles/cmTC_1d3a8.dir/CMakeCCompilerABI.c.o -o cmTC_1d3a8 ] + ignore line: [Apple clang version 12.0.0 (clang-1200.0.32.2)] + ignore line: [Target: x86_64-apple-darwin19.6.0] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Library/Developer/CommandLineTools/usr/bin] + link line: [ "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch x86_64 -platform_version macos 10.15.0 10.15.6 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -o cmTC_1d3a8 -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_1d3a8.dir/CMakeCCompilerABI.c.o -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.osx.a] + arg [/Library/Developer/CommandLineTools/usr/bin/ld] ==> ignore + arg [-demangle] ==> ignore + arg [-lto_library] ==> ignore, skip following value + arg [/Library/Developer/CommandLineTools/usr/lib/libLTO.dylib] ==> skip value of -lto_library + arg [-dynamic] ==> ignore + arg [-arch] ==> ignore + arg [x86_64] ==> ignore + arg [-platform_version] ==> ignore + arg [macos] ==> ignore + arg [10.15.0] ==> ignore + arg [10.15.6] ==> ignore + arg [-syslibroot] ==> ignore + arg [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk] ==> ignore + arg [-o] ==> ignore + arg [cmTC_1d3a8] ==> ignore + arg [-search_paths_first] ==> ignore + arg [-headerpad_max_install_names] ==> ignore + arg [-v] ==> ignore + arg [CMakeFiles/cmTC_1d3a8.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [-lSystem] ==> lib [System] + arg [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.osx.a] ==> lib [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.osx.a] + Library search paths: [;/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib] + Framework search paths: [;/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/] + remove lib [System] + remove lib [/Library/Developer/CommandLineTools/usr/lib/clang/12.0.0/lib/darwin/libclang_rt.osx.a] + collapse library dir [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib] + collapse framework dir [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks] + implicit libs: [] + implicit dirs: [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/lib] + implicit fwks: [/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks] + + diff --git a/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/Makefile.cmake b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/Makefile.cmake new file mode 100644 index 0000000..ed9b9c8 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/Makefile.cmake @@ -0,0 +1,107 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# The generator used is: +set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles") + +# The top level Makefile was generated from the following files: +set(CMAKE_MAKEFILE_DEPENDS + "CMakeCache.txt" + "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/CMakeLists.txt" + "../CMakeLists.txt" + "CMakeFiles/3.18.2/CMakeCCompiler.cmake" + "CMakeFiles/3.18.2/CMakeSystem.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompiler.cmake.in" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCCompilerABI.c" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCInformation.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCommonLanguageInclude.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeCompilerIdDetection.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineCCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineCompileFeatures.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineCompilerABI.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineCompilerId.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeDetermineSystem.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeFindBinUtils.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeGenericSystem.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeInitializeConfigs.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeLanguageInformation.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeParseImplicitIncludeInfo.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeParseImplicitLinkInfo.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeSystem.cmake.in" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeSystemSpecificInformation.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeSystemSpecificInitialize.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeTestCCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeTestCompilerCommon.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/CMakeUnixFindMake.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/ADSP-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/ARMCC-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/ARMClang-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/AppleClang-C.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/AppleClang-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Borland-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Bruce-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Clang-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Clang-DetermineCompilerInternal.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Clang.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Compaq-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Cray-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Embarcadero-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Fujitsu-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/GHS-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/GNU-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/GNU.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/HP-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/IAR-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Intel-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/MSVC-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/NVIDIA-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/PGI-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/PathScale-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/SCO-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/SDCC-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/SunPro-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/TI-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/Watcom-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/XL-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/XLClang-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Compiler/zOS-C-DetermineCompiler.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/FindPackageHandleStandardArgs.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/FindPackageMessage.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/FindVulkan.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Internal/CMakeCheckCompilerFlag.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Internal/FeatureTesting.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/Apple-AppleClang-C.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/Apple-Clang-C.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/Apple-Clang.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/Darwin-Initialize.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/Darwin.cmake" + "/usr/local/Cellar/cmake/3.18.2/share/cmake/Modules/Platform/UnixPaths.cmake" + ) + +# The corresponding makefile is: +set(CMAKE_MAKEFILE_OUTPUTS + "Makefile" + "CMakeFiles/cmake.check_cache" + ) + +# Byproducts of CMake generate step: +set(CMAKE_MAKEFILE_PRODUCTS + "CMakeFiles/3.18.2/CMakeSystem.cmake" + "CMakeFiles/3.18.2/CMakeCCompiler.cmake" + "CMakeFiles/3.18.2/CMakeCCompiler.cmake" + "CMakeFiles/CMakeDirectoryInformation.cmake" + "volk/CMakeFiles/CMakeDirectoryInformation.cmake" + ) + +# Dependency information for all targets: +set(CMAKE_DEPEND_INFO_FILES + "CMakeFiles/volk_test.dir/DependInfo.cmake" + "volk/CMakeFiles/volk.dir/DependInfo.cmake" + ) diff --git a/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/Makefile2 b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/Makefile2 new file mode 100644 index 0000000..0e5ed20 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/Makefile2 @@ -0,0 +1,172 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/local/Cellar/cmake/3.18.2/bin/cmake + +# The command to remove a file. +RM = /usr/local/Cellar/cmake/3.18.2/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build + +#============================================================================= +# Directory level rules for the build root directory + +# The main recursive "all" target. +all: CMakeFiles/volk_test.dir/all +all: volk/all + +.PHONY : all + +# The main recursive "preinstall" target. +preinstall: volk/preinstall + +.PHONY : preinstall + +# The main recursive "clean" target. +clean: CMakeFiles/volk_test.dir/clean +clean: volk/clean + +.PHONY : clean + +#============================================================================= +# Directory level rules for directory volk + +# Recursive "all" directory target. +volk/all: volk/CMakeFiles/volk.dir/all + +.PHONY : volk/all + +# Recursive "preinstall" directory target. +volk/preinstall: + +.PHONY : volk/preinstall + +# Recursive "clean" directory target. +volk/clean: volk/CMakeFiles/volk.dir/clean + +.PHONY : volk/clean + +#============================================================================= +# Target rules for target CMakeFiles/volk_test.dir + +# All Build rule for target. +CMakeFiles/volk_test.dir/all: volk/CMakeFiles/volk.dir/all + $(MAKE) $(MAKESILENT) -f CMakeFiles/volk_test.dir/build.make CMakeFiles/volk_test.dir/depend + $(MAKE) $(MAKESILENT) -f CMakeFiles/volk_test.dir/build.make CMakeFiles/volk_test.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/CMakeFiles --progress-num=3,4 "Built target volk_test" +.PHONY : CMakeFiles/volk_test.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/volk_test.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/CMakeFiles 4 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/volk_test.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/CMakeFiles 0 +.PHONY : CMakeFiles/volk_test.dir/rule + +# Convenience name for target. +volk_test: CMakeFiles/volk_test.dir/rule + +.PHONY : volk_test + +# clean rule for target. +CMakeFiles/volk_test.dir/clean: + $(MAKE) $(MAKESILENT) -f CMakeFiles/volk_test.dir/build.make CMakeFiles/volk_test.dir/clean +.PHONY : CMakeFiles/volk_test.dir/clean + +#============================================================================= +# Target rules for target volk/CMakeFiles/volk.dir + +# All Build rule for target. +volk/CMakeFiles/volk.dir/all: + $(MAKE) $(MAKESILENT) -f volk/CMakeFiles/volk.dir/build.make volk/CMakeFiles/volk.dir/depend + $(MAKE) $(MAKESILENT) -f volk/CMakeFiles/volk.dir/build.make volk/CMakeFiles/volk.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/CMakeFiles --progress-num=1,2 "Built target volk" +.PHONY : volk/CMakeFiles/volk.dir/all + +# Build rule for subdir invocation for target. +volk/CMakeFiles/volk.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/CMakeFiles 2 + $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 volk/CMakeFiles/volk.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/CMakeFiles 0 +.PHONY : volk/CMakeFiles/volk.dir/rule + +# Convenience name for target. +volk: volk/CMakeFiles/volk.dir/rule + +.PHONY : volk + +# clean rule for target. +volk/CMakeFiles/volk.dir/clean: + $(MAKE) $(MAKESILENT) -f volk/CMakeFiles/volk.dir/build.make volk/CMakeFiles/volk.dir/clean +.PHONY : volk/CMakeFiles/volk.dir/clean + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/TargetDirectories.txt b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000..ae5676b --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,6 @@ +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/CMakeFiles/rebuild_cache.dir +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/CMakeFiles/edit_cache.dir +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/volk/CMakeFiles/rebuild_cache.dir +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/volk/CMakeFiles/edit_cache.dir +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir diff --git a/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/cmake.check_cache b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..3dccd73 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/progress.marks b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/progress.marks new file mode 100644 index 0000000..b8626c4 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/progress.marks @@ -0,0 +1 @@ +4 diff --git a/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/C.includecache b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/C.includecache new file mode 100644 index 0000000..93d7f92 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/C.includecache @@ -0,0 +1,118 @@ +#IncludeRegexLine: ^[ ]*[#%][ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/main.c +volk.h +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/volk.h +stdio.h +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/stdio.h +stdlib.h +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/stdlib.h + +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.h +vulkan/vk_platform.h +- +vulkan/vulkan_core.h +- +vulkan/vulkan_win32.h +- +vulkan/vulkan_beta.h +- +vulkan/vulkan.h +- + +/usr/local/include/vulkan/vk_platform.h +stddef.h +- +stdint.h +- + +/usr/local/include/vulkan/vulkan.h +vk_platform.h +/usr/local/include/vulkan/vk_platform.h +vulkan_core.h +/usr/local/include/vulkan/vulkan_core.h +vulkan_android.h +/usr/local/include/vulkan/vulkan_android.h +zircon/types.h +- +vulkan_fuchsia.h +/usr/local/include/vulkan/vulkan_fuchsia.h +vulkan_ios.h +/usr/local/include/vulkan/vulkan_ios.h +vulkan_macos.h +/usr/local/include/vulkan/vulkan_macos.h +vulkan_metal.h +/usr/local/include/vulkan/vulkan_metal.h +vulkan_vi.h +/usr/local/include/vulkan/vulkan_vi.h +wayland-client.h +- +vulkan_wayland.h +/usr/local/include/vulkan/vulkan_wayland.h +windows.h +- +vulkan_win32.h +/usr/local/include/vulkan/vulkan_win32.h +xcb/xcb.h +- +vulkan_xcb.h +/usr/local/include/vulkan/vulkan_xcb.h +X11/Xlib.h +- +vulkan_xlib.h +/usr/local/include/vulkan/vulkan_xlib.h +directfb.h +- +vulkan_directfb.h +/usr/local/include/vulkan/vulkan_directfb.h +X11/Xlib.h +- +X11/extensions/Xrandr.h +- +vulkan_xlib_xrandr.h +/usr/local/include/vulkan/vulkan_xlib_xrandr.h +ggp_c/vulkan_types.h +- +vulkan_ggp.h +/usr/local/include/vulkan/vulkan_ggp.h +vulkan_beta.h +/usr/local/include/vulkan/vulkan_beta.h + +/usr/local/include/vulkan/vulkan_android.h + +/usr/local/include/vulkan/vulkan_beta.h + +/usr/local/include/vulkan/vulkan_core.h +vk_platform.h +/usr/local/include/vulkan/vk_platform.h + +/usr/local/include/vulkan/vulkan_directfb.h + +/usr/local/include/vulkan/vulkan_fuchsia.h + +/usr/local/include/vulkan/vulkan_ggp.h + +/usr/local/include/vulkan/vulkan_ios.h + +/usr/local/include/vulkan/vulkan_macos.h + +/usr/local/include/vulkan/vulkan_metal.h + +/usr/local/include/vulkan/vulkan_vi.h + +/usr/local/include/vulkan/vulkan_wayland.h + +/usr/local/include/vulkan/vulkan_win32.h + +/usr/local/include/vulkan/vulkan_xcb.h + +/usr/local/include/vulkan/vulkan_xlib.h + +/usr/local/include/vulkan/vulkan_xlib_xrandr.h + diff --git a/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/DependInfo.cmake b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/DependInfo.cmake new file mode 100644 index 0000000..7caf51c --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/DependInfo.cmake @@ -0,0 +1,28 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + "C" + ) +# The set of files for implicit dependencies of each language: +set(CMAKE_DEPENDS_CHECK_C + "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/main.c" "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/main.c.o" + ) +set(CMAKE_C_COMPILER_ID "AppleClang") + +# Preprocessor definitions for this target. +set(CMAKE_TARGET_DEFINITIONS_C + "VK_USE_PLATFORM_MACOS_MVK" + ) + +# The include file search paths: +set(CMAKE_C_TARGET_INCLUDE_PATH + "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140" + "/usr/local/include" + ) + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/DependInfo.cmake" + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/build.make b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/build.make new file mode 100644 index 0000000..23ba2a6 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/build.make @@ -0,0 +1,119 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/local/Cellar/cmake/3.18.2/bin/cmake + +# The command to remove a file. +RM = /usr/local/Cellar/cmake/3.18.2/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build + +# Include any dependencies generated for this target. +include CMakeFiles/volk_test.dir/depend.make + +# Include the progress variables for this target. +include CMakeFiles/volk_test.dir/progress.make + +# Include the compile flags for this target's objects. +include CMakeFiles/volk_test.dir/flags.make + +CMakeFiles/volk_test.dir/main.c.o: CMakeFiles/volk_test.dir/flags.make +CMakeFiles/volk_test.dir/main.c.o: ../main.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object CMakeFiles/volk_test.dir/main.c.o" + /Library/Developer/CommandLineTools/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/volk_test.dir/main.c.o -c /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/main.c + +CMakeFiles/volk_test.dir/main.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/volk_test.dir/main.c.i" + /Library/Developer/CommandLineTools/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/main.c > CMakeFiles/volk_test.dir/main.c.i + +CMakeFiles/volk_test.dir/main.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/volk_test.dir/main.c.s" + /Library/Developer/CommandLineTools/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/main.c -o CMakeFiles/volk_test.dir/main.c.s + +# Object files for target volk_test +volk_test_OBJECTS = \ +"CMakeFiles/volk_test.dir/main.c.o" + +# External object files for target volk_test +volk_test_EXTERNAL_OBJECTS = + +volk_test: CMakeFiles/volk_test.dir/main.c.o +volk_test: CMakeFiles/volk_test.dir/build.make +volk_test: volk/libvolk.a +volk_test: /usr/local/lib/libvulkan.dylib +volk_test: CMakeFiles/volk_test.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking C executable volk_test" + $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/volk_test.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +CMakeFiles/volk_test.dir/build: volk_test + +.PHONY : CMakeFiles/volk_test.dir/build + +CMakeFiles/volk_test.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/volk_test.dir/cmake_clean.cmake +.PHONY : CMakeFiles/volk_test.dir/clean + +CMakeFiles/volk_test.dir/depend: + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/volk_test.dir/depend + diff --git a/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/cmake_clean.cmake b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/cmake_clean.cmake new file mode 100644 index 0000000..1617c22 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/cmake_clean.cmake @@ -0,0 +1,10 @@ +file(REMOVE_RECURSE + "CMakeFiles/volk_test.dir/main.c.o" + "volk_test" + "volk_test.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/volk_test.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/depend.internal b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/depend.internal new file mode 100644 index 0000000..40133e1 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/depend.internal @@ -0,0 +1,23 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +CMakeFiles/volk_test.dir/main.c.o + /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/main.c + /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.h + /usr/local/include/vulkan/vk_platform.h + /usr/local/include/vulkan/vulkan.h + /usr/local/include/vulkan/vulkan_android.h + /usr/local/include/vulkan/vulkan_beta.h + /usr/local/include/vulkan/vulkan_core.h + /usr/local/include/vulkan/vulkan_directfb.h + /usr/local/include/vulkan/vulkan_fuchsia.h + /usr/local/include/vulkan/vulkan_ggp.h + /usr/local/include/vulkan/vulkan_ios.h + /usr/local/include/vulkan/vulkan_macos.h + /usr/local/include/vulkan/vulkan_metal.h + /usr/local/include/vulkan/vulkan_vi.h + /usr/local/include/vulkan/vulkan_wayland.h + /usr/local/include/vulkan/vulkan_win32.h + /usr/local/include/vulkan/vulkan_xcb.h + /usr/local/include/vulkan/vulkan_xlib.h + /usr/local/include/vulkan/vulkan_xlib_xrandr.h diff --git a/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/depend.make b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/depend.make new file mode 100644 index 0000000..314e288 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/depend.make @@ -0,0 +1,23 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +CMakeFiles/volk_test.dir/main.c.o: ../main.c +CMakeFiles/volk_test.dir/main.c.o: /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vk_platform.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_android.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_beta.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_core.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_directfb.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_fuchsia.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_ggp.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_ios.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_macos.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_metal.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_vi.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_wayland.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_win32.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_xcb.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_xlib.h +CMakeFiles/volk_test.dir/main.c.o: /usr/local/include/vulkan/vulkan_xlib_xrandr.h + diff --git a/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/flags.make b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/flags.make new file mode 100644 index 0000000..6d3fc1c --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# compile C with /Library/Developer/CommandLineTools/usr/bin/cc +C_DEFINES = -DVK_USE_PLATFORM_MACOS_MVK + +C_INCLUDES = -I/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140 -isystem /usr/local/include + +C_FLAGS = -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk + diff --git a/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/link.txt b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/link.txt new file mode 100644 index 0000000..d0bad95 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/link.txt @@ -0,0 +1 @@ +/Library/Developer/CommandLineTools/usr/bin/cc -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/volk_test.dir/main.c.o -o volk_test -Wl,-rpath,/usr/local/lib volk/libvolk.a -ldl /usr/local/lib/libvulkan.dylib diff --git a/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/main.c.o b/libs/volk/test/cmake_using_subdir_static/_build/CMakeFiles/volk_test.dir/main.c.o new file mode 100644 index 0000000000000000000000000000000000000000..96f0d374e03769f5b82a78137a70e3ec2ada0a0b GIT binary patch literal 1080 zcma)5&ubGw6rNN~ORXjcmHGo*LD5U9^ic6oQR~tz8Wh`vUUV2X6T4)yDVt3#g@Pp_ zE{jla{uy397Dd5}{tHTl6cl>MAxP=^z1`U)4G2E=&G&wOGy7)u>!08I!;Ga4F)Yx- z(2*f58WeIG`ic_&kZUS;g?b=~4^Bo(d?cKEa@C9N*k8~W7kYkTy-^17QSTxSMm%ty z6C}d9S@&Gad8z`OALL7TZmRryb-tv3z{UB@T6I~N9&b3$ET_cz{kusm;Wy=I3OgX6 znQdZGBRD|Gxm@C9S5#%(FnGRQ#dAyHICzLJk)w<)B{tzCbQ~J(l^JDeC<$#!@waF` z0&D>v0?{8Kpexi%n%qe@@gGLP@P8W3Uz!onF6^_uM_~ARt3`&dcbe-RmU(f8qOYf) z0N$}Eh0+kRa|a<++Ya>hR_j!dZ*T34ZF~=L=Ah8t_z`BJ<{L!#$uDgCUxNI0j|O2D z=zB)hFuYkwj$lSRdcjUrHSa#tZr>-A|4&l zG4-9OD~v+XazdG@wMQ(qnoVWLhDSD0brJD%(A|A{sW42wGj{uU_T|vbv9#)22ckS@ z193+uXMuRl+?0x6Rq?Yx+((Y?3w6@~>Pypqm+3pz`8ZDLNUme;OGkFUe|aF!I1Ox8 xdUH=98UK=3j;nfOg]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c +volk.h +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.h +dlfcn.h +- + +/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.h +vulkan/vk_platform.h +- +vulkan/vulkan_core.h +- +vulkan/vulkan_win32.h +- +vulkan/vulkan_beta.h +- +vulkan/vulkan.h +- + +/usr/local/include/vulkan/vk_platform.h +stddef.h +- +stdint.h +- + +/usr/local/include/vulkan/vulkan.h +vk_platform.h +/usr/local/include/vulkan/vk_platform.h +vulkan_core.h +/usr/local/include/vulkan/vulkan_core.h +vulkan_android.h +/usr/local/include/vulkan/vulkan_android.h +zircon/types.h +- +vulkan_fuchsia.h +/usr/local/include/vulkan/vulkan_fuchsia.h +vulkan_ios.h +/usr/local/include/vulkan/vulkan_ios.h +vulkan_macos.h +/usr/local/include/vulkan/vulkan_macos.h +vulkan_metal.h +/usr/local/include/vulkan/vulkan_metal.h +vulkan_vi.h +/usr/local/include/vulkan/vulkan_vi.h +wayland-client.h +- +vulkan_wayland.h +/usr/local/include/vulkan/vulkan_wayland.h +windows.h +- +vulkan_win32.h +/usr/local/include/vulkan/vulkan_win32.h +xcb/xcb.h +- +vulkan_xcb.h +/usr/local/include/vulkan/vulkan_xcb.h +X11/Xlib.h +- +vulkan_xlib.h +/usr/local/include/vulkan/vulkan_xlib.h +directfb.h +- +vulkan_directfb.h +/usr/local/include/vulkan/vulkan_directfb.h +X11/Xlib.h +- +X11/extensions/Xrandr.h +- +vulkan_xlib_xrandr.h +/usr/local/include/vulkan/vulkan_xlib_xrandr.h +ggp_c/vulkan_types.h +- +vulkan_ggp.h +/usr/local/include/vulkan/vulkan_ggp.h +vulkan_beta.h +/usr/local/include/vulkan/vulkan_beta.h + +/usr/local/include/vulkan/vulkan_android.h + +/usr/local/include/vulkan/vulkan_beta.h + +/usr/local/include/vulkan/vulkan_core.h +vk_platform.h +/usr/local/include/vulkan/vk_platform.h + +/usr/local/include/vulkan/vulkan_directfb.h + +/usr/local/include/vulkan/vulkan_fuchsia.h + +/usr/local/include/vulkan/vulkan_ggp.h + +/usr/local/include/vulkan/vulkan_ios.h + +/usr/local/include/vulkan/vulkan_macos.h + +/usr/local/include/vulkan/vulkan_metal.h + +/usr/local/include/vulkan/vulkan_vi.h + +/usr/local/include/vulkan/vulkan_wayland.h + +/usr/local/include/vulkan/vulkan_win32.h + +/usr/local/include/vulkan/vulkan_xcb.h + +/usr/local/include/vulkan/vulkan_xlib.h + +/usr/local/include/vulkan/vulkan_xlib_xrandr.h + diff --git a/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/DependInfo.cmake b/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/DependInfo.cmake new file mode 100644 index 0000000..f687186 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/DependInfo.cmake @@ -0,0 +1,27 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + "C" + ) +# The set of files for implicit dependencies of each language: +set(CMAKE_DEPENDS_CHECK_C + "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c" "/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/volk.c.o" + ) +set(CMAKE_C_COMPILER_ID "AppleClang") + +# Preprocessor definitions for this target. +set(CMAKE_TARGET_DEFINITIONS_C + "VK_USE_PLATFORM_MACOS_MVK" + ) + +# The include file search paths: +set(CMAKE_C_TARGET_INCLUDE_PATH + "../../../" + "/usr/local/include" + ) + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/build.make b/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/build.make new file mode 100644 index 0000000..f7288c8 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/build.make @@ -0,0 +1,118 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/local/Cellar/cmake/3.18.2/bin/cmake + +# The command to remove a file. +RM = /usr/local/Cellar/cmake/3.18.2/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build + +# Include any dependencies generated for this target. +include volk/CMakeFiles/volk.dir/depend.make + +# Include the progress variables for this target. +include volk/CMakeFiles/volk.dir/progress.make + +# Include the compile flags for this target's objects. +include volk/CMakeFiles/volk.dir/flags.make + +volk/CMakeFiles/volk.dir/volk.c.o: volk/CMakeFiles/volk.dir/flags.make +volk/CMakeFiles/volk.dir/volk.c.o: ../../../volk.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object volk/CMakeFiles/volk.dir/volk.c.o" + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/volk && /Library/Developer/CommandLineTools/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/volk.dir/volk.c.o -c /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c + +volk/CMakeFiles/volk.dir/volk.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/volk.dir/volk.c.i" + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/volk && /Library/Developer/CommandLineTools/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c > CMakeFiles/volk.dir/volk.c.i + +volk/CMakeFiles/volk.dir/volk.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/volk.dir/volk.c.s" + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/volk && /Library/Developer/CommandLineTools/usr/bin/cc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c -o CMakeFiles/volk.dir/volk.c.s + +# Object files for target volk +volk_OBJECTS = \ +"CMakeFiles/volk.dir/volk.c.o" + +# External object files for target volk +volk_EXTERNAL_OBJECTS = + +volk/libvolk.a: volk/CMakeFiles/volk.dir/volk.c.o +volk/libvolk.a: volk/CMakeFiles/volk.dir/build.make +volk/libvolk.a: volk/CMakeFiles/volk.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking C static library libvolk.a" + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/volk && $(CMAKE_COMMAND) -P CMakeFiles/volk.dir/cmake_clean_target.cmake + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/volk && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/volk.dir/link.txt --verbose=$(VERBOSE) + +# Rule to build all files generated by this target. +volk/CMakeFiles/volk.dir/build: volk/libvolk.a + +.PHONY : volk/CMakeFiles/volk.dir/build + +volk/CMakeFiles/volk.dir/clean: + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/volk && $(CMAKE_COMMAND) -P CMakeFiles/volk.dir/cmake_clean.cmake +.PHONY : volk/CMakeFiles/volk.dir/clean + +volk/CMakeFiles/volk.dir/depend: + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140 /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/volk /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : volk/CMakeFiles/volk.dir/depend + diff --git a/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/cmake_clean.cmake b/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/cmake_clean.cmake new file mode 100644 index 0000000..a78c226 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/cmake_clean.cmake @@ -0,0 +1,10 @@ +file(REMOVE_RECURSE + "CMakeFiles/volk.dir/volk.c.o" + "libvolk.a" + "libvolk.pdb" +) + +# Per-language clean rules from dependency scanning. +foreach(lang C) + include(CMakeFiles/volk.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/cmake_clean_target.cmake b/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/cmake_clean_target.cmake new file mode 100644 index 0000000..e7c8950 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/cmake_clean_target.cmake @@ -0,0 +1,3 @@ +file(REMOVE_RECURSE + "libvolk.a" +) diff --git a/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/depend.internal b/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/depend.internal new file mode 100644 index 0000000..e3df17e --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/depend.internal @@ -0,0 +1,23 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +volk/CMakeFiles/volk.dir/volk.c.o + /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.c + /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/volk.h + /usr/local/include/vulkan/vk_platform.h + /usr/local/include/vulkan/vulkan.h + /usr/local/include/vulkan/vulkan_android.h + /usr/local/include/vulkan/vulkan_beta.h + /usr/local/include/vulkan/vulkan_core.h + /usr/local/include/vulkan/vulkan_directfb.h + /usr/local/include/vulkan/vulkan_fuchsia.h + /usr/local/include/vulkan/vulkan_ggp.h + /usr/local/include/vulkan/vulkan_ios.h + /usr/local/include/vulkan/vulkan_macos.h + /usr/local/include/vulkan/vulkan_metal.h + /usr/local/include/vulkan/vulkan_vi.h + /usr/local/include/vulkan/vulkan_wayland.h + /usr/local/include/vulkan/vulkan_win32.h + /usr/local/include/vulkan/vulkan_xcb.h + /usr/local/include/vulkan/vulkan_xlib.h + /usr/local/include/vulkan/vulkan_xlib_xrandr.h diff --git a/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/depend.make b/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/depend.make new file mode 100644 index 0000000..f4efde4 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/depend.make @@ -0,0 +1,23 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +volk/CMakeFiles/volk.dir/volk.c.o: ../../../volk.c +volk/CMakeFiles/volk.dir/volk.c.o: ../../../volk.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vk_platform.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_android.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_beta.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_core.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_directfb.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_fuchsia.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_ggp.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_ios.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_macos.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_metal.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_vi.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_wayland.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_win32.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_xcb.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_xlib.h +volk/CMakeFiles/volk.dir/volk.c.o: /usr/local/include/vulkan/vulkan_xlib_xrandr.h + diff --git a/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/flags.make b/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/flags.make new file mode 100644 index 0000000..6d3fc1c --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/flags.make @@ -0,0 +1,10 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# compile C with /Library/Developer/CommandLineTools/usr/bin/cc +C_DEFINES = -DVK_USE_PLATFORM_MACOS_MVK + +C_INCLUDES = -I/Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140 -isystem /usr/local/include + +C_FLAGS = -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk + diff --git a/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/link.txt b/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/link.txt new file mode 100644 index 0000000..f6ae7e2 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/link.txt @@ -0,0 +1,2 @@ +/Library/Developer/CommandLineTools/usr/bin/ar qc libvolk.a CMakeFiles/volk.dir/volk.c.o +/Library/Developer/CommandLineTools/usr/bin/ranlib libvolk.a diff --git a/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/progress.make b/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/progress.make new file mode 100644 index 0000000..abadeb0 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/progress.make @@ -0,0 +1,3 @@ +CMAKE_PROGRESS_1 = 1 +CMAKE_PROGRESS_2 = 2 + diff --git a/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/volk.c.o b/libs/volk/test/cmake_using_subdir_static/_build/volk/CMakeFiles/volk.dir/volk.c.o new file mode 100644 index 0000000000000000000000000000000000000000..4142543c0da4694f1eb4a5b2c5f27cb60a96c2fb GIT binary patch literal 56108 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 z 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 E4-C1J)c^nh literal 0 HcmV?d00001 diff --git a/libs/volk/test/cmake_using_subdir_static/_build/volk/Makefile b/libs/volk/test/cmake_using_subdir_static/_build/volk/Makefile new file mode 100644 index 0000000..2d86479 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/volk/Makefile @@ -0,0 +1,199 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.18 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Disable VCS-based implicit rules. +% : %,v + + +# Disable VCS-based implicit rules. +% : RCS/% + + +# Disable VCS-based implicit rules. +% : RCS/%,v + + +# Disable VCS-based implicit rules. +% : SCCS/s.% + + +# Disable VCS-based implicit rules. +% : s.% + + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Command-line flag to silence nested $(MAKE). +$(VERBOSE)MAKESILENT = -s + +#Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/local/Cellar/cmake/3.18.2/bin/cmake + +# The command to remove a file. +RM = /usr/local/Cellar/cmake/3.18.2/bin/cmake -E rm -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/local/Cellar/cmake/3.18.2/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache + +.PHONY : rebuild_cache/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..." + /usr/local/Cellar/cmake/3.18.2/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache + +.PHONY : edit_cache/fast + +# The main all target +all: cmake_check_build_system + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build && $(CMAKE_COMMAND) -E cmake_progress_start /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/CMakeFiles /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/volk//CMakeFiles/progress.marks + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 volk/all + $(CMAKE_COMMAND) -E cmake_progress_start /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 volk/clean +.PHONY : clean + +# The main clean target +clean/fast: clean + +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 volk/preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 volk/preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +# Convenience name for target. +volk/CMakeFiles/volk.dir/rule: + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 volk/CMakeFiles/volk.dir/rule +.PHONY : volk/CMakeFiles/volk.dir/rule + +# Convenience name for target. +volk: volk/CMakeFiles/volk.dir/rule + +.PHONY : volk + +# fast build rule for target. +volk/fast: + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build && $(MAKE) $(MAKESILENT) -f volk/CMakeFiles/volk.dir/build.make volk/CMakeFiles/volk.dir/build +.PHONY : volk/fast + +volk.o: volk.c.o + +.PHONY : volk.o + +# target to build an object file +volk.c.o: + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build && $(MAKE) $(MAKESILENT) -f volk/CMakeFiles/volk.dir/build.make volk/CMakeFiles/volk.dir/volk.c.o +.PHONY : volk.c.o + +volk.i: volk.c.i + +.PHONY : volk.i + +# target to preprocess a source file +volk.c.i: + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build && $(MAKE) $(MAKESILENT) -f volk/CMakeFiles/volk.dir/build.make volk/CMakeFiles/volk.dir/volk.c.i +.PHONY : volk.c.i + +volk.s: volk.c.s + +.PHONY : volk.s + +# target to generate assembly for a file +volk.c.s: + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build && $(MAKE) $(MAKESILENT) -f volk/CMakeFiles/volk.dir/build.make volk/CMakeFiles/volk.dir/volk.c.s +.PHONY : volk.c.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... rebuild_cache" + @echo "... volk" + @echo "... volk.o" + @echo "... volk.i" + @echo "... volk.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + cd /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140/test/cmake_using_subdir_static/_build && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/libs/volk/test/cmake_using_subdir_static/_build/volk/cmake_install.cmake b/libs/volk/test/cmake_using_subdir_static/_build/volk/cmake_install.cmake new file mode 100644 index 0000000..6f29581 --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/_build/volk/cmake_install.cmake @@ -0,0 +1,39 @@ +# Install script for directory: /Users/a0/MyProjects/GitHub/buildTemplate/libs/volk-1.2.140 + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +# Set default install directory permissions. +if(NOT DEFINED CMAKE_OBJDUMP) + set(CMAKE_OBJDUMP "/Library/Developer/CommandLineTools/usr/bin/objdump") +endif() + diff --git a/libs/volk/test/cmake_using_subdir_static/_build/volk/libvolk.a b/libs/volk/test/cmake_using_subdir_static/_build/volk/libvolk.a new file mode 100644 index 0000000000000000000000000000000000000000..0596e2e58b9ca224b070d9b2482a4fb8741ae1a6 GIT binary patch literal 56536 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 T{6o6gGwDL~!OwFe&GGqvtmyu7 literal 0 HcmV?d00001 diff --git a/libs/volk/test/cmake_using_subdir_static/_build/volk_test b/libs/volk/test/cmake_using_subdir_static/_build/volk_test new file mode 100755 index 0000000000000000000000000000000000000000..952261bc9b0f410faf5fe449aa8ab9b44c176b76 GIT binary patch literal 83416 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 rc)thpgAwaQPj literal 0 HcmV?d00001 diff --git a/libs/volk/test/cmake_using_subdir_static/main.c b/libs/volk/test/cmake_using_subdir_static/main.c new file mode 100644 index 0000000..6ce41ea --- /dev/null +++ b/libs/volk/test/cmake_using_subdir_static/main.c @@ -0,0 +1,41 @@ +#include "volk.h" + +#include "stdio.h" +#include "stdlib.h" + +int main() +{ + VkResult r; + uint32_t version; + void* ptr; + + /* This won't compile if the appropriate Vulkan platform define isn't set. */ + ptr = +#if defined(_WIN32) + &vkCreateWin32SurfaceKHR; +#elif defined(__linux__) || defined(__unix__) + &vkCreateXlibSurfaceKHR; +#elif defined(__APPLE__) + &vkCreateMacOSSurfaceMVK; +#else + /* Platform not recogized for testing. */ + NULL; +#endif + + /* Try to initialize volk. This might not work on CI builds, but the + * above should have compiled at least. */ + r = volkInitialize(); + if (r != VK_SUCCESS) { + printf("volkInitialize failed!\n"); + return -1; + } + + version = volkGetInstanceVersion(); + printf("Vulkan version %d.%d.%d initialized.\n", + VK_VERSION_MAJOR(version), + VK_VERSION_MINOR(version), + VK_VERSION_PATCH(version)); + + return 0; +} + diff --git a/libs/volk/test/run_tests.sh b/libs/volk/test/run_tests.sh new file mode 100755 index 0000000..2d06459 --- /dev/null +++ b/libs/volk/test/run_tests.sh @@ -0,0 +1,87 @@ +#!/usr/bin/env bash + +function reset_build { + for DIR in "_build" "_installed" + do + if [ -d $DIR ]; then + rm -rf $DIR + fi + mkdir -p $DIR + done +} +function run_volk_test { + for FILE in "./volk_test" "./volk_test.exe" "Debug/volk_test.exe" "Release/volk_test.exe" + do + if [ -f $FILE ]; then + echo "Running test:" + $FILE + RC=$? + break + fi + done + echo "volk_test return code: $RC" +} + +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +pushd $SCRIPT_DIR/.. + +reset_build +pushd _build +cmake -DCMAKE_INSTALL_PREFIX=../_installed -DVOLK_INSTALL=ON .. || exit 1 +cmake --build . --target install || exit 1 +popd + +echo +echo "cmake_using_source_directly =======================================>" +echo + +pushd test/cmake_using_source_directly +reset_build +pushd _build +cmake .. || exit 1 +cmake --build . || exit 1 +run_volk_test +popd +popd + +echo +echo "cmake_using_subdir_static =======================================>" +echo + +pushd test/cmake_using_subdir_static +reset_build +pushd _build +cmake .. || exit 1 +cmake --build . || exit 1 +run_volk_test +popd +popd + +echo +echo "cmake_using_subdir_headers =======================================>" +echo + +pushd test/cmake_using_subdir_headers +reset_build +pushd _build +cmake .. || exit 1 +cmake --build . || exit 1 +run_volk_test +popd +popd + +echo +echo "cmake_using_installed_headers =======================================>" +echo + +pushd test/cmake_using_installed_headers +reset_build +pushd _build +cmake -DCMAKE_INSTALL_PREFIX=../../../_installed/lib/cmake .. || exit 1 +cmake --build . || exit 1 +run_volk_test +popd +popd + +popd + diff --git a/libs/volk/volk.c b/libs/volk/volk.c new file mode 100644 index 0000000..d752e19 --- /dev/null +++ b/libs/volk/volk.c @@ -0,0 +1,1929 @@ +/* This file is part of volk library; see volk.h for version/license details */ +/* clang-format off */ +#include "volk.h" + +#ifdef _WIN32 + typedef const char* LPCSTR; + typedef struct HINSTANCE__* HINSTANCE; + typedef HINSTANCE HMODULE; + #ifdef _WIN64 + typedef __int64 (__stdcall* FARPROC)(void); + #else + typedef int (__stdcall* FARPROC)(void); + #endif +#else +# include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef _WIN32 +__declspec(dllimport) HMODULE __stdcall LoadLibraryA(LPCSTR); +__declspec(dllimport) FARPROC __stdcall GetProcAddress(HMODULE, LPCSTR); +#endif + +static VkInstance loadedInstance = VK_NULL_HANDLE; +static VkDevice loadedDevice = VK_NULL_HANDLE; + +static void volkGenLoadLoader(void* context, PFN_vkVoidFunction (*load)(void*, const char*)); +static void volkGenLoadInstance(void* context, PFN_vkVoidFunction (*load)(void*, const char*)); +static void volkGenLoadDevice(void* context, PFN_vkVoidFunction (*load)(void*, const char*)); +static void volkGenLoadDeviceTable(struct VolkDeviceTable* table, void* context, PFN_vkVoidFunction (*load)(void*, const char*)); + +static PFN_vkVoidFunction vkGetInstanceProcAddrStub(void* context, const char* name) +{ + return vkGetInstanceProcAddr((VkInstance)context, name); +} + +static PFN_vkVoidFunction vkGetDeviceProcAddrStub(void* context, const char* name) +{ + return vkGetDeviceProcAddr((VkDevice)context, name); +} + +VkResult volkInitialize(void) +{ +#if defined(_WIN32) + HMODULE module = LoadLibraryA("vulkan-1.dll"); + if (!module) + return VK_ERROR_INITIALIZATION_FAILED; + + // note: function pointer is cast through void function pointer to silence cast-function-type warning on gcc8 + vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)(void(*)(void))GetProcAddress(module, "vkGetInstanceProcAddr"); +#elif defined(__APPLE__) + void* module = dlopen("libvulkan.dylib", RTLD_NOW | RTLD_LOCAL); + if (!module) + module = dlopen("libvulkan.1.dylib", RTLD_NOW | RTLD_LOCAL); + if (!module) + module = dlopen("libMoltenVK.dylib", RTLD_NOW | RTLD_LOCAL); + if (!module) + return VK_ERROR_INITIALIZATION_FAILED; + + vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)dlsym(module, "vkGetInstanceProcAddr"); +#else + void* module = dlopen("libvulkan.so.1", RTLD_NOW | RTLD_LOCAL); + if (!module) + module = dlopen("libvulkan.so", RTLD_NOW | RTLD_LOCAL); + if (!module) + return VK_ERROR_INITIALIZATION_FAILED; + + vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)dlsym(module, "vkGetInstanceProcAddr"); +#endif + + volkGenLoadLoader(NULL, vkGetInstanceProcAddrStub); + + return VK_SUCCESS; +} + +void volkInitializeCustom(PFN_vkGetInstanceProcAddr handler) +{ + vkGetInstanceProcAddr = handler; + + volkGenLoadLoader(NULL, vkGetInstanceProcAddrStub); +} + +uint32_t volkGetInstanceVersion(void) +{ +#if defined(VK_VERSION_1_1) + uint32_t apiVersion = 0; + if (vkEnumerateInstanceVersion && vkEnumerateInstanceVersion(&apiVersion) == VK_SUCCESS) + return apiVersion; +#endif + + if (vkCreateInstance) + return VK_API_VERSION_1_0; + + return 0; +} + +void volkLoadInstance(VkInstance instance) +{ + loadedInstance = instance; + volkGenLoadInstance(instance, vkGetInstanceProcAddrStub); + volkGenLoadDevice(instance, vkGetInstanceProcAddrStub); +} + +void volkLoadInstanceOnly(VkInstance instance) +{ + loadedInstance = instance; + volkGenLoadInstance(instance, vkGetInstanceProcAddrStub); +} + +VkInstance volkGetLoadedInstance() +{ + return loadedInstance; +} + +void volkLoadDevice(VkDevice device) +{ + loadedDevice = device; + volkGenLoadDevice(device, vkGetDeviceProcAddrStub); +} + +VkDevice volkGetLoadedDevice() +{ + return loadedDevice; +} + +void volkLoadDeviceTable(struct VolkDeviceTable* table, VkDevice device) +{ + volkGenLoadDeviceTable(table, device, vkGetDeviceProcAddrStub); +} + +static void volkGenLoadLoader(void* context, PFN_vkVoidFunction (*load)(void*, const char*)) +{ + /* VOLK_GENERATE_LOAD_LOADER */ +#if defined(VK_VERSION_1_0) + vkCreateInstance = (PFN_vkCreateInstance)load(context, "vkCreateInstance"); + vkEnumerateInstanceExtensionProperties = (PFN_vkEnumerateInstanceExtensionProperties)load(context, "vkEnumerateInstanceExtensionProperties"); + vkEnumerateInstanceLayerProperties = (PFN_vkEnumerateInstanceLayerProperties)load(context, "vkEnumerateInstanceLayerProperties"); +#endif /* defined(VK_VERSION_1_0) */ +#if defined(VK_VERSION_1_1) + vkEnumerateInstanceVersion = (PFN_vkEnumerateInstanceVersion)load(context, "vkEnumerateInstanceVersion"); +#endif /* defined(VK_VERSION_1_1) */ + /* VOLK_GENERATE_LOAD_LOADER */ +} + +static void volkGenLoadInstance(void* context, PFN_vkVoidFunction (*load)(void*, const char*)) +{ + /* VOLK_GENERATE_LOAD_INSTANCE */ +#if defined(VK_VERSION_1_0) + vkCreateDevice = (PFN_vkCreateDevice)load(context, "vkCreateDevice"); + vkDestroyInstance = (PFN_vkDestroyInstance)load(context, "vkDestroyInstance"); + vkEnumerateDeviceExtensionProperties = (PFN_vkEnumerateDeviceExtensionProperties)load(context, "vkEnumerateDeviceExtensionProperties"); + vkEnumerateDeviceLayerProperties = (PFN_vkEnumerateDeviceLayerProperties)load(context, "vkEnumerateDeviceLayerProperties"); + vkEnumeratePhysicalDevices = (PFN_vkEnumeratePhysicalDevices)load(context, "vkEnumeratePhysicalDevices"); + vkGetDeviceProcAddr = (PFN_vkGetDeviceProcAddr)load(context, "vkGetDeviceProcAddr"); + vkGetPhysicalDeviceFeatures = (PFN_vkGetPhysicalDeviceFeatures)load(context, "vkGetPhysicalDeviceFeatures"); + vkGetPhysicalDeviceFormatProperties = (PFN_vkGetPhysicalDeviceFormatProperties)load(context, "vkGetPhysicalDeviceFormatProperties"); + vkGetPhysicalDeviceImageFormatProperties = (PFN_vkGetPhysicalDeviceImageFormatProperties)load(context, "vkGetPhysicalDeviceImageFormatProperties"); + vkGetPhysicalDeviceMemoryProperties = (PFN_vkGetPhysicalDeviceMemoryProperties)load(context, "vkGetPhysicalDeviceMemoryProperties"); + vkGetPhysicalDeviceProperties = (PFN_vkGetPhysicalDeviceProperties)load(context, "vkGetPhysicalDeviceProperties"); + vkGetPhysicalDeviceQueueFamilyProperties = (PFN_vkGetPhysicalDeviceQueueFamilyProperties)load(context, "vkGetPhysicalDeviceQueueFamilyProperties"); + vkGetPhysicalDeviceSparseImageFormatProperties = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties)load(context, "vkGetPhysicalDeviceSparseImageFormatProperties"); +#endif /* defined(VK_VERSION_1_0) */ +#if defined(VK_VERSION_1_1) + vkEnumeratePhysicalDeviceGroups = (PFN_vkEnumeratePhysicalDeviceGroups)load(context, "vkEnumeratePhysicalDeviceGroups"); + vkGetPhysicalDeviceExternalBufferProperties = (PFN_vkGetPhysicalDeviceExternalBufferProperties)load(context, "vkGetPhysicalDeviceExternalBufferProperties"); + vkGetPhysicalDeviceExternalFenceProperties = (PFN_vkGetPhysicalDeviceExternalFenceProperties)load(context, "vkGetPhysicalDeviceExternalFenceProperties"); + vkGetPhysicalDeviceExternalSemaphoreProperties = (PFN_vkGetPhysicalDeviceExternalSemaphoreProperties)load(context, "vkGetPhysicalDeviceExternalSemaphoreProperties"); + vkGetPhysicalDeviceFeatures2 = (PFN_vkGetPhysicalDeviceFeatures2)load(context, "vkGetPhysicalDeviceFeatures2"); + vkGetPhysicalDeviceFormatProperties2 = (PFN_vkGetPhysicalDeviceFormatProperties2)load(context, "vkGetPhysicalDeviceFormatProperties2"); + vkGetPhysicalDeviceImageFormatProperties2 = (PFN_vkGetPhysicalDeviceImageFormatProperties2)load(context, "vkGetPhysicalDeviceImageFormatProperties2"); + vkGetPhysicalDeviceMemoryProperties2 = (PFN_vkGetPhysicalDeviceMemoryProperties2)load(context, "vkGetPhysicalDeviceMemoryProperties2"); + vkGetPhysicalDeviceProperties2 = (PFN_vkGetPhysicalDeviceProperties2)load(context, "vkGetPhysicalDeviceProperties2"); + vkGetPhysicalDeviceQueueFamilyProperties2 = (PFN_vkGetPhysicalDeviceQueueFamilyProperties2)load(context, "vkGetPhysicalDeviceQueueFamilyProperties2"); + vkGetPhysicalDeviceSparseImageFormatProperties2 = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)load(context, "vkGetPhysicalDeviceSparseImageFormatProperties2"); +#endif /* defined(VK_VERSION_1_1) */ +#if defined(VK_EXT_acquire_xlib_display) + vkAcquireXlibDisplayEXT = (PFN_vkAcquireXlibDisplayEXT)load(context, "vkAcquireXlibDisplayEXT"); + vkGetRandROutputDisplayEXT = (PFN_vkGetRandROutputDisplayEXT)load(context, "vkGetRandROutputDisplayEXT"); +#endif /* defined(VK_EXT_acquire_xlib_display) */ +#if defined(VK_EXT_calibrated_timestamps) + vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = (PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)load(context, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"); +#endif /* defined(VK_EXT_calibrated_timestamps) */ +#if defined(VK_EXT_debug_report) + vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)load(context, "vkCreateDebugReportCallbackEXT"); + vkDebugReportMessageEXT = (PFN_vkDebugReportMessageEXT)load(context, "vkDebugReportMessageEXT"); + vkDestroyDebugReportCallbackEXT = (PFN_vkDestroyDebugReportCallbackEXT)load(context, "vkDestroyDebugReportCallbackEXT"); +#endif /* defined(VK_EXT_debug_report) */ +#if defined(VK_EXT_debug_utils) + vkCmdBeginDebugUtilsLabelEXT = (PFN_vkCmdBeginDebugUtilsLabelEXT)load(context, "vkCmdBeginDebugUtilsLabelEXT"); + vkCmdEndDebugUtilsLabelEXT = (PFN_vkCmdEndDebugUtilsLabelEXT)load(context, "vkCmdEndDebugUtilsLabelEXT"); + vkCmdInsertDebugUtilsLabelEXT = (PFN_vkCmdInsertDebugUtilsLabelEXT)load(context, "vkCmdInsertDebugUtilsLabelEXT"); + vkCreateDebugUtilsMessengerEXT = (PFN_vkCreateDebugUtilsMessengerEXT)load(context, "vkCreateDebugUtilsMessengerEXT"); + vkDestroyDebugUtilsMessengerEXT = (PFN_vkDestroyDebugUtilsMessengerEXT)load(context, "vkDestroyDebugUtilsMessengerEXT"); + vkQueueBeginDebugUtilsLabelEXT = (PFN_vkQueueBeginDebugUtilsLabelEXT)load(context, "vkQueueBeginDebugUtilsLabelEXT"); + vkQueueEndDebugUtilsLabelEXT = (PFN_vkQueueEndDebugUtilsLabelEXT)load(context, "vkQueueEndDebugUtilsLabelEXT"); + vkQueueInsertDebugUtilsLabelEXT = (PFN_vkQueueInsertDebugUtilsLabelEXT)load(context, "vkQueueInsertDebugUtilsLabelEXT"); + vkSetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT)load(context, "vkSetDebugUtilsObjectNameEXT"); + vkSetDebugUtilsObjectTagEXT = (PFN_vkSetDebugUtilsObjectTagEXT)load(context, "vkSetDebugUtilsObjectTagEXT"); + vkSubmitDebugUtilsMessageEXT = (PFN_vkSubmitDebugUtilsMessageEXT)load(context, "vkSubmitDebugUtilsMessageEXT"); +#endif /* defined(VK_EXT_debug_utils) */ +#if defined(VK_EXT_direct_mode_display) + vkReleaseDisplayEXT = (PFN_vkReleaseDisplayEXT)load(context, "vkReleaseDisplayEXT"); +#endif /* defined(VK_EXT_direct_mode_display) */ +#if defined(VK_EXT_directfb_surface) + vkCreateDirectFBSurfaceEXT = (PFN_vkCreateDirectFBSurfaceEXT)load(context, "vkCreateDirectFBSurfaceEXT"); + vkGetPhysicalDeviceDirectFBPresentationSupportEXT = (PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT)load(context, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT"); +#endif /* defined(VK_EXT_directfb_surface) */ +#if defined(VK_EXT_display_surface_counter) + vkGetPhysicalDeviceSurfaceCapabilities2EXT = (PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)load(context, "vkGetPhysicalDeviceSurfaceCapabilities2EXT"); +#endif /* defined(VK_EXT_display_surface_counter) */ +#if defined(VK_EXT_full_screen_exclusive) + vkGetPhysicalDeviceSurfacePresentModes2EXT = (PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT)load(context, "vkGetPhysicalDeviceSurfacePresentModes2EXT"); +#endif /* defined(VK_EXT_full_screen_exclusive) */ +#if defined(VK_EXT_headless_surface) + vkCreateHeadlessSurfaceEXT = (PFN_vkCreateHeadlessSurfaceEXT)load(context, "vkCreateHeadlessSurfaceEXT"); +#endif /* defined(VK_EXT_headless_surface) */ +#if defined(VK_EXT_metal_surface) + vkCreateMetalSurfaceEXT = (PFN_vkCreateMetalSurfaceEXT)load(context, "vkCreateMetalSurfaceEXT"); +#endif /* defined(VK_EXT_metal_surface) */ +#if defined(VK_EXT_sample_locations) + vkGetPhysicalDeviceMultisamplePropertiesEXT = (PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)load(context, "vkGetPhysicalDeviceMultisamplePropertiesEXT"); +#endif /* defined(VK_EXT_sample_locations) */ +#if defined(VK_EXT_tooling_info) + vkGetPhysicalDeviceToolPropertiesEXT = (PFN_vkGetPhysicalDeviceToolPropertiesEXT)load(context, "vkGetPhysicalDeviceToolPropertiesEXT"); +#endif /* defined(VK_EXT_tooling_info) */ +#if defined(VK_FUCHSIA_imagepipe_surface) + vkCreateImagePipeSurfaceFUCHSIA = (PFN_vkCreateImagePipeSurfaceFUCHSIA)load(context, "vkCreateImagePipeSurfaceFUCHSIA"); +#endif /* defined(VK_FUCHSIA_imagepipe_surface) */ +#if defined(VK_GGP_stream_descriptor_surface) + vkCreateStreamDescriptorSurfaceGGP = (PFN_vkCreateStreamDescriptorSurfaceGGP)load(context, "vkCreateStreamDescriptorSurfaceGGP"); +#endif /* defined(VK_GGP_stream_descriptor_surface) */ +#if defined(VK_KHR_android_surface) + vkCreateAndroidSurfaceKHR = (PFN_vkCreateAndroidSurfaceKHR)load(context, "vkCreateAndroidSurfaceKHR"); +#endif /* defined(VK_KHR_android_surface) */ +#if defined(VK_KHR_device_group_creation) + vkEnumeratePhysicalDeviceGroupsKHR = (PFN_vkEnumeratePhysicalDeviceGroupsKHR)load(context, "vkEnumeratePhysicalDeviceGroupsKHR"); +#endif /* defined(VK_KHR_device_group_creation) */ +#if defined(VK_KHR_display) + vkCreateDisplayModeKHR = (PFN_vkCreateDisplayModeKHR)load(context, "vkCreateDisplayModeKHR"); + vkCreateDisplayPlaneSurfaceKHR = (PFN_vkCreateDisplayPlaneSurfaceKHR)load(context, "vkCreateDisplayPlaneSurfaceKHR"); + vkGetDisplayModePropertiesKHR = (PFN_vkGetDisplayModePropertiesKHR)load(context, "vkGetDisplayModePropertiesKHR"); + vkGetDisplayPlaneCapabilitiesKHR = (PFN_vkGetDisplayPlaneCapabilitiesKHR)load(context, "vkGetDisplayPlaneCapabilitiesKHR"); + vkGetDisplayPlaneSupportedDisplaysKHR = (PFN_vkGetDisplayPlaneSupportedDisplaysKHR)load(context, "vkGetDisplayPlaneSupportedDisplaysKHR"); + vkGetPhysicalDeviceDisplayPlanePropertiesKHR = (PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)load(context, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"); + vkGetPhysicalDeviceDisplayPropertiesKHR = (PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)load(context, "vkGetPhysicalDeviceDisplayPropertiesKHR"); +#endif /* defined(VK_KHR_display) */ +#if defined(VK_KHR_external_fence_capabilities) + vkGetPhysicalDeviceExternalFencePropertiesKHR = (PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR)load(context, "vkGetPhysicalDeviceExternalFencePropertiesKHR"); +#endif /* defined(VK_KHR_external_fence_capabilities) */ +#if defined(VK_KHR_external_memory_capabilities) + vkGetPhysicalDeviceExternalBufferPropertiesKHR = (PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR)load(context, "vkGetPhysicalDeviceExternalBufferPropertiesKHR"); +#endif /* defined(VK_KHR_external_memory_capabilities) */ +#if defined(VK_KHR_external_semaphore_capabilities) + vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = (PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR)load(context, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR"); +#endif /* defined(VK_KHR_external_semaphore_capabilities) */ +#if defined(VK_KHR_get_display_properties2) + vkGetDisplayModeProperties2KHR = (PFN_vkGetDisplayModeProperties2KHR)load(context, "vkGetDisplayModeProperties2KHR"); + vkGetDisplayPlaneCapabilities2KHR = (PFN_vkGetDisplayPlaneCapabilities2KHR)load(context, "vkGetDisplayPlaneCapabilities2KHR"); + vkGetPhysicalDeviceDisplayPlaneProperties2KHR = (PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR)load(context, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR"); + vkGetPhysicalDeviceDisplayProperties2KHR = (PFN_vkGetPhysicalDeviceDisplayProperties2KHR)load(context, "vkGetPhysicalDeviceDisplayProperties2KHR"); +#endif /* defined(VK_KHR_get_display_properties2) */ +#if defined(VK_KHR_get_physical_device_properties2) + vkGetPhysicalDeviceFeatures2KHR = (PFN_vkGetPhysicalDeviceFeatures2KHR)load(context, "vkGetPhysicalDeviceFeatures2KHR"); + vkGetPhysicalDeviceFormatProperties2KHR = (PFN_vkGetPhysicalDeviceFormatProperties2KHR)load(context, "vkGetPhysicalDeviceFormatProperties2KHR"); + vkGetPhysicalDeviceImageFormatProperties2KHR = (PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)load(context, "vkGetPhysicalDeviceImageFormatProperties2KHR"); + vkGetPhysicalDeviceMemoryProperties2KHR = (PFN_vkGetPhysicalDeviceMemoryProperties2KHR)load(context, "vkGetPhysicalDeviceMemoryProperties2KHR"); + vkGetPhysicalDeviceProperties2KHR = (PFN_vkGetPhysicalDeviceProperties2KHR)load(context, "vkGetPhysicalDeviceProperties2KHR"); + vkGetPhysicalDeviceQueueFamilyProperties2KHR = (PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)load(context, "vkGetPhysicalDeviceQueueFamilyProperties2KHR"); + vkGetPhysicalDeviceSparseImageFormatProperties2KHR = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)load(context, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR"); +#endif /* defined(VK_KHR_get_physical_device_properties2) */ +#if defined(VK_KHR_get_surface_capabilities2) + vkGetPhysicalDeviceSurfaceCapabilities2KHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)load(context, "vkGetPhysicalDeviceSurfaceCapabilities2KHR"); + vkGetPhysicalDeviceSurfaceFormats2KHR = (PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)load(context, "vkGetPhysicalDeviceSurfaceFormats2KHR"); +#endif /* defined(VK_KHR_get_surface_capabilities2) */ +#if defined(VK_KHR_performance_query) + vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = (PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR)load(context, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR"); + vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = (PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR)load(context, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"); +#endif /* defined(VK_KHR_performance_query) */ +#if defined(VK_KHR_surface) + vkDestroySurfaceKHR = (PFN_vkDestroySurfaceKHR)load(context, "vkDestroySurfaceKHR"); + vkGetPhysicalDeviceSurfaceCapabilitiesKHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)load(context, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"); + vkGetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)load(context, "vkGetPhysicalDeviceSurfaceFormatsKHR"); + vkGetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)load(context, "vkGetPhysicalDeviceSurfacePresentModesKHR"); + vkGetPhysicalDeviceSurfaceSupportKHR = (PFN_vkGetPhysicalDeviceSurfaceSupportKHR)load(context, "vkGetPhysicalDeviceSurfaceSupportKHR"); +#endif /* defined(VK_KHR_surface) */ +#if defined(VK_KHR_wayland_surface) + vkCreateWaylandSurfaceKHR = (PFN_vkCreateWaylandSurfaceKHR)load(context, "vkCreateWaylandSurfaceKHR"); + vkGetPhysicalDeviceWaylandPresentationSupportKHR = (PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)load(context, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"); +#endif /* defined(VK_KHR_wayland_surface) */ +#if defined(VK_KHR_win32_surface) + vkCreateWin32SurfaceKHR = (PFN_vkCreateWin32SurfaceKHR)load(context, "vkCreateWin32SurfaceKHR"); + vkGetPhysicalDeviceWin32PresentationSupportKHR = (PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)load(context, "vkGetPhysicalDeviceWin32PresentationSupportKHR"); +#endif /* defined(VK_KHR_win32_surface) */ +#if defined(VK_KHR_xcb_surface) + vkCreateXcbSurfaceKHR = (PFN_vkCreateXcbSurfaceKHR)load(context, "vkCreateXcbSurfaceKHR"); + vkGetPhysicalDeviceXcbPresentationSupportKHR = (PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)load(context, "vkGetPhysicalDeviceXcbPresentationSupportKHR"); +#endif /* defined(VK_KHR_xcb_surface) */ +#if defined(VK_KHR_xlib_surface) + vkCreateXlibSurfaceKHR = (PFN_vkCreateXlibSurfaceKHR)load(context, "vkCreateXlibSurfaceKHR"); + vkGetPhysicalDeviceXlibPresentationSupportKHR = (PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)load(context, "vkGetPhysicalDeviceXlibPresentationSupportKHR"); +#endif /* defined(VK_KHR_xlib_surface) */ +#if defined(VK_MVK_ios_surface) + vkCreateIOSSurfaceMVK = (PFN_vkCreateIOSSurfaceMVK)load(context, "vkCreateIOSSurfaceMVK"); +#endif /* defined(VK_MVK_ios_surface) */ +#if defined(VK_MVK_macos_surface) + vkCreateMacOSSurfaceMVK = (PFN_vkCreateMacOSSurfaceMVK)load(context, "vkCreateMacOSSurfaceMVK"); +#endif /* defined(VK_MVK_macos_surface) */ +#if defined(VK_NN_vi_surface) + vkCreateViSurfaceNN = (PFN_vkCreateViSurfaceNN)load(context, "vkCreateViSurfaceNN"); +#endif /* defined(VK_NN_vi_surface) */ +#if defined(VK_NV_cooperative_matrix) + vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = (PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV)load(context, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV"); +#endif /* defined(VK_NV_cooperative_matrix) */ +#if defined(VK_NV_coverage_reduction_mode) + vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = (PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV)load(context, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"); +#endif /* defined(VK_NV_coverage_reduction_mode) */ +#if defined(VK_NV_external_memory_capabilities) + vkGetPhysicalDeviceExternalImageFormatPropertiesNV = (PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)load(context, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV"); +#endif /* defined(VK_NV_external_memory_capabilities) */ +#if (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) + vkGetPhysicalDevicePresentRectanglesKHR = (PFN_vkGetPhysicalDevicePresentRectanglesKHR)load(context, "vkGetPhysicalDevicePresentRectanglesKHR"); +#endif /* (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) */ + /* VOLK_GENERATE_LOAD_INSTANCE */ +} + +static void volkGenLoadDevice(void* context, PFN_vkVoidFunction (*load)(void*, const char*)) +{ + /* VOLK_GENERATE_LOAD_DEVICE */ +#if defined(VK_VERSION_1_0) + vkAllocateCommandBuffers = (PFN_vkAllocateCommandBuffers)load(context, "vkAllocateCommandBuffers"); + vkAllocateDescriptorSets = (PFN_vkAllocateDescriptorSets)load(context, "vkAllocateDescriptorSets"); + vkAllocateMemory = (PFN_vkAllocateMemory)load(context, "vkAllocateMemory"); + vkBeginCommandBuffer = (PFN_vkBeginCommandBuffer)load(context, "vkBeginCommandBuffer"); + vkBindBufferMemory = (PFN_vkBindBufferMemory)load(context, "vkBindBufferMemory"); + vkBindImageMemory = (PFN_vkBindImageMemory)load(context, "vkBindImageMemory"); + vkCmdBeginQuery = (PFN_vkCmdBeginQuery)load(context, "vkCmdBeginQuery"); + vkCmdBeginRenderPass = (PFN_vkCmdBeginRenderPass)load(context, "vkCmdBeginRenderPass"); + vkCmdBindDescriptorSets = (PFN_vkCmdBindDescriptorSets)load(context, "vkCmdBindDescriptorSets"); + vkCmdBindIndexBuffer = (PFN_vkCmdBindIndexBuffer)load(context, "vkCmdBindIndexBuffer"); + vkCmdBindPipeline = (PFN_vkCmdBindPipeline)load(context, "vkCmdBindPipeline"); + vkCmdBindVertexBuffers = (PFN_vkCmdBindVertexBuffers)load(context, "vkCmdBindVertexBuffers"); + vkCmdBlitImage = (PFN_vkCmdBlitImage)load(context, "vkCmdBlitImage"); + vkCmdClearAttachments = (PFN_vkCmdClearAttachments)load(context, "vkCmdClearAttachments"); + vkCmdClearColorImage = (PFN_vkCmdClearColorImage)load(context, "vkCmdClearColorImage"); + vkCmdClearDepthStencilImage = (PFN_vkCmdClearDepthStencilImage)load(context, "vkCmdClearDepthStencilImage"); + vkCmdCopyBuffer = (PFN_vkCmdCopyBuffer)load(context, "vkCmdCopyBuffer"); + vkCmdCopyBufferToImage = (PFN_vkCmdCopyBufferToImage)load(context, "vkCmdCopyBufferToImage"); + vkCmdCopyImage = (PFN_vkCmdCopyImage)load(context, "vkCmdCopyImage"); + vkCmdCopyImageToBuffer = (PFN_vkCmdCopyImageToBuffer)load(context, "vkCmdCopyImageToBuffer"); + vkCmdCopyQueryPoolResults = (PFN_vkCmdCopyQueryPoolResults)load(context, "vkCmdCopyQueryPoolResults"); + vkCmdDispatch = (PFN_vkCmdDispatch)load(context, "vkCmdDispatch"); + vkCmdDispatchIndirect = (PFN_vkCmdDispatchIndirect)load(context, "vkCmdDispatchIndirect"); + vkCmdDraw = (PFN_vkCmdDraw)load(context, "vkCmdDraw"); + vkCmdDrawIndexed = (PFN_vkCmdDrawIndexed)load(context, "vkCmdDrawIndexed"); + vkCmdDrawIndexedIndirect = (PFN_vkCmdDrawIndexedIndirect)load(context, "vkCmdDrawIndexedIndirect"); + vkCmdDrawIndirect = (PFN_vkCmdDrawIndirect)load(context, "vkCmdDrawIndirect"); + vkCmdEndQuery = (PFN_vkCmdEndQuery)load(context, "vkCmdEndQuery"); + vkCmdEndRenderPass = (PFN_vkCmdEndRenderPass)load(context, "vkCmdEndRenderPass"); + vkCmdExecuteCommands = (PFN_vkCmdExecuteCommands)load(context, "vkCmdExecuteCommands"); + vkCmdFillBuffer = (PFN_vkCmdFillBuffer)load(context, "vkCmdFillBuffer"); + vkCmdNextSubpass = (PFN_vkCmdNextSubpass)load(context, "vkCmdNextSubpass"); + vkCmdPipelineBarrier = (PFN_vkCmdPipelineBarrier)load(context, "vkCmdPipelineBarrier"); + vkCmdPushConstants = (PFN_vkCmdPushConstants)load(context, "vkCmdPushConstants"); + vkCmdResetEvent = (PFN_vkCmdResetEvent)load(context, "vkCmdResetEvent"); + vkCmdResetQueryPool = (PFN_vkCmdResetQueryPool)load(context, "vkCmdResetQueryPool"); + vkCmdResolveImage = (PFN_vkCmdResolveImage)load(context, "vkCmdResolveImage"); + vkCmdSetBlendConstants = (PFN_vkCmdSetBlendConstants)load(context, "vkCmdSetBlendConstants"); + vkCmdSetDepthBias = (PFN_vkCmdSetDepthBias)load(context, "vkCmdSetDepthBias"); + vkCmdSetDepthBounds = (PFN_vkCmdSetDepthBounds)load(context, "vkCmdSetDepthBounds"); + vkCmdSetEvent = (PFN_vkCmdSetEvent)load(context, "vkCmdSetEvent"); + vkCmdSetLineWidth = (PFN_vkCmdSetLineWidth)load(context, "vkCmdSetLineWidth"); + vkCmdSetScissor = (PFN_vkCmdSetScissor)load(context, "vkCmdSetScissor"); + vkCmdSetStencilCompareMask = (PFN_vkCmdSetStencilCompareMask)load(context, "vkCmdSetStencilCompareMask"); + vkCmdSetStencilReference = (PFN_vkCmdSetStencilReference)load(context, "vkCmdSetStencilReference"); + vkCmdSetStencilWriteMask = (PFN_vkCmdSetStencilWriteMask)load(context, "vkCmdSetStencilWriteMask"); + vkCmdSetViewport = (PFN_vkCmdSetViewport)load(context, "vkCmdSetViewport"); + vkCmdUpdateBuffer = (PFN_vkCmdUpdateBuffer)load(context, "vkCmdUpdateBuffer"); + vkCmdWaitEvents = (PFN_vkCmdWaitEvents)load(context, "vkCmdWaitEvents"); + vkCmdWriteTimestamp = (PFN_vkCmdWriteTimestamp)load(context, "vkCmdWriteTimestamp"); + vkCreateBuffer = (PFN_vkCreateBuffer)load(context, "vkCreateBuffer"); + vkCreateBufferView = (PFN_vkCreateBufferView)load(context, "vkCreateBufferView"); + vkCreateCommandPool = (PFN_vkCreateCommandPool)load(context, "vkCreateCommandPool"); + vkCreateComputePipelines = (PFN_vkCreateComputePipelines)load(context, "vkCreateComputePipelines"); + vkCreateDescriptorPool = (PFN_vkCreateDescriptorPool)load(context, "vkCreateDescriptorPool"); + vkCreateDescriptorSetLayout = (PFN_vkCreateDescriptorSetLayout)load(context, "vkCreateDescriptorSetLayout"); + vkCreateEvent = (PFN_vkCreateEvent)load(context, "vkCreateEvent"); + vkCreateFence = (PFN_vkCreateFence)load(context, "vkCreateFence"); + vkCreateFramebuffer = (PFN_vkCreateFramebuffer)load(context, "vkCreateFramebuffer"); + vkCreateGraphicsPipelines = (PFN_vkCreateGraphicsPipelines)load(context, "vkCreateGraphicsPipelines"); + vkCreateImage = (PFN_vkCreateImage)load(context, "vkCreateImage"); + vkCreateImageView = (PFN_vkCreateImageView)load(context, "vkCreateImageView"); + vkCreatePipelineCache = (PFN_vkCreatePipelineCache)load(context, "vkCreatePipelineCache"); + vkCreatePipelineLayout = (PFN_vkCreatePipelineLayout)load(context, "vkCreatePipelineLayout"); + vkCreateQueryPool = (PFN_vkCreateQueryPool)load(context, "vkCreateQueryPool"); + vkCreateRenderPass = (PFN_vkCreateRenderPass)load(context, "vkCreateRenderPass"); + vkCreateSampler = (PFN_vkCreateSampler)load(context, "vkCreateSampler"); + vkCreateSemaphore = (PFN_vkCreateSemaphore)load(context, "vkCreateSemaphore"); + vkCreateShaderModule = (PFN_vkCreateShaderModule)load(context, "vkCreateShaderModule"); + vkDestroyBuffer = (PFN_vkDestroyBuffer)load(context, "vkDestroyBuffer"); + vkDestroyBufferView = (PFN_vkDestroyBufferView)load(context, "vkDestroyBufferView"); + vkDestroyCommandPool = (PFN_vkDestroyCommandPool)load(context, "vkDestroyCommandPool"); + vkDestroyDescriptorPool = (PFN_vkDestroyDescriptorPool)load(context, "vkDestroyDescriptorPool"); + vkDestroyDescriptorSetLayout = (PFN_vkDestroyDescriptorSetLayout)load(context, "vkDestroyDescriptorSetLayout"); + vkDestroyDevice = (PFN_vkDestroyDevice)load(context, "vkDestroyDevice"); + vkDestroyEvent = (PFN_vkDestroyEvent)load(context, "vkDestroyEvent"); + vkDestroyFence = (PFN_vkDestroyFence)load(context, "vkDestroyFence"); + vkDestroyFramebuffer = (PFN_vkDestroyFramebuffer)load(context, "vkDestroyFramebuffer"); + vkDestroyImage = (PFN_vkDestroyImage)load(context, "vkDestroyImage"); + vkDestroyImageView = (PFN_vkDestroyImageView)load(context, "vkDestroyImageView"); + vkDestroyPipeline = (PFN_vkDestroyPipeline)load(context, "vkDestroyPipeline"); + vkDestroyPipelineCache = (PFN_vkDestroyPipelineCache)load(context, "vkDestroyPipelineCache"); + vkDestroyPipelineLayout = (PFN_vkDestroyPipelineLayout)load(context, "vkDestroyPipelineLayout"); + vkDestroyQueryPool = (PFN_vkDestroyQueryPool)load(context, "vkDestroyQueryPool"); + vkDestroyRenderPass = (PFN_vkDestroyRenderPass)load(context, "vkDestroyRenderPass"); + vkDestroySampler = (PFN_vkDestroySampler)load(context, "vkDestroySampler"); + vkDestroySemaphore = (PFN_vkDestroySemaphore)load(context, "vkDestroySemaphore"); + vkDestroyShaderModule = (PFN_vkDestroyShaderModule)load(context, "vkDestroyShaderModule"); + vkDeviceWaitIdle = (PFN_vkDeviceWaitIdle)load(context, "vkDeviceWaitIdle"); + vkEndCommandBuffer = (PFN_vkEndCommandBuffer)load(context, "vkEndCommandBuffer"); + vkFlushMappedMemoryRanges = (PFN_vkFlushMappedMemoryRanges)load(context, "vkFlushMappedMemoryRanges"); + vkFreeCommandBuffers = (PFN_vkFreeCommandBuffers)load(context, "vkFreeCommandBuffers"); + vkFreeDescriptorSets = (PFN_vkFreeDescriptorSets)load(context, "vkFreeDescriptorSets"); + vkFreeMemory = (PFN_vkFreeMemory)load(context, "vkFreeMemory"); + vkGetBufferMemoryRequirements = (PFN_vkGetBufferMemoryRequirements)load(context, "vkGetBufferMemoryRequirements"); + vkGetDeviceMemoryCommitment = (PFN_vkGetDeviceMemoryCommitment)load(context, "vkGetDeviceMemoryCommitment"); + vkGetDeviceQueue = (PFN_vkGetDeviceQueue)load(context, "vkGetDeviceQueue"); + vkGetEventStatus = (PFN_vkGetEventStatus)load(context, "vkGetEventStatus"); + vkGetFenceStatus = (PFN_vkGetFenceStatus)load(context, "vkGetFenceStatus"); + vkGetImageMemoryRequirements = (PFN_vkGetImageMemoryRequirements)load(context, "vkGetImageMemoryRequirements"); + vkGetImageSparseMemoryRequirements = (PFN_vkGetImageSparseMemoryRequirements)load(context, "vkGetImageSparseMemoryRequirements"); + vkGetImageSubresourceLayout = (PFN_vkGetImageSubresourceLayout)load(context, "vkGetImageSubresourceLayout"); + vkGetPipelineCacheData = (PFN_vkGetPipelineCacheData)load(context, "vkGetPipelineCacheData"); + vkGetQueryPoolResults = (PFN_vkGetQueryPoolResults)load(context, "vkGetQueryPoolResults"); + vkGetRenderAreaGranularity = (PFN_vkGetRenderAreaGranularity)load(context, "vkGetRenderAreaGranularity"); + vkInvalidateMappedMemoryRanges = (PFN_vkInvalidateMappedMemoryRanges)load(context, "vkInvalidateMappedMemoryRanges"); + vkMapMemory = (PFN_vkMapMemory)load(context, "vkMapMemory"); + vkMergePipelineCaches = (PFN_vkMergePipelineCaches)load(context, "vkMergePipelineCaches"); + vkQueueBindSparse = (PFN_vkQueueBindSparse)load(context, "vkQueueBindSparse"); + vkQueueSubmit = (PFN_vkQueueSubmit)load(context, "vkQueueSubmit"); + vkQueueWaitIdle = (PFN_vkQueueWaitIdle)load(context, "vkQueueWaitIdle"); + vkResetCommandBuffer = (PFN_vkResetCommandBuffer)load(context, "vkResetCommandBuffer"); + vkResetCommandPool = (PFN_vkResetCommandPool)load(context, "vkResetCommandPool"); + vkResetDescriptorPool = (PFN_vkResetDescriptorPool)load(context, "vkResetDescriptorPool"); + vkResetEvent = (PFN_vkResetEvent)load(context, "vkResetEvent"); + vkResetFences = (PFN_vkResetFences)load(context, "vkResetFences"); + vkSetEvent = (PFN_vkSetEvent)load(context, "vkSetEvent"); + vkUnmapMemory = (PFN_vkUnmapMemory)load(context, "vkUnmapMemory"); + vkUpdateDescriptorSets = (PFN_vkUpdateDescriptorSets)load(context, "vkUpdateDescriptorSets"); + vkWaitForFences = (PFN_vkWaitForFences)load(context, "vkWaitForFences"); +#endif /* defined(VK_VERSION_1_0) */ +#if defined(VK_VERSION_1_1) + vkBindBufferMemory2 = (PFN_vkBindBufferMemory2)load(context, "vkBindBufferMemory2"); + vkBindImageMemory2 = (PFN_vkBindImageMemory2)load(context, "vkBindImageMemory2"); + vkCmdDispatchBase = (PFN_vkCmdDispatchBase)load(context, "vkCmdDispatchBase"); + vkCmdSetDeviceMask = (PFN_vkCmdSetDeviceMask)load(context, "vkCmdSetDeviceMask"); + vkCreateDescriptorUpdateTemplate = (PFN_vkCreateDescriptorUpdateTemplate)load(context, "vkCreateDescriptorUpdateTemplate"); + vkCreateSamplerYcbcrConversion = (PFN_vkCreateSamplerYcbcrConversion)load(context, "vkCreateSamplerYcbcrConversion"); + vkDestroyDescriptorUpdateTemplate = (PFN_vkDestroyDescriptorUpdateTemplate)load(context, "vkDestroyDescriptorUpdateTemplate"); + vkDestroySamplerYcbcrConversion = (PFN_vkDestroySamplerYcbcrConversion)load(context, "vkDestroySamplerYcbcrConversion"); + vkGetBufferMemoryRequirements2 = (PFN_vkGetBufferMemoryRequirements2)load(context, "vkGetBufferMemoryRequirements2"); + vkGetDescriptorSetLayoutSupport = (PFN_vkGetDescriptorSetLayoutSupport)load(context, "vkGetDescriptorSetLayoutSupport"); + vkGetDeviceGroupPeerMemoryFeatures = (PFN_vkGetDeviceGroupPeerMemoryFeatures)load(context, "vkGetDeviceGroupPeerMemoryFeatures"); + vkGetDeviceQueue2 = (PFN_vkGetDeviceQueue2)load(context, "vkGetDeviceQueue2"); + vkGetImageMemoryRequirements2 = (PFN_vkGetImageMemoryRequirements2)load(context, "vkGetImageMemoryRequirements2"); + vkGetImageSparseMemoryRequirements2 = (PFN_vkGetImageSparseMemoryRequirements2)load(context, "vkGetImageSparseMemoryRequirements2"); + vkTrimCommandPool = (PFN_vkTrimCommandPool)load(context, "vkTrimCommandPool"); + vkUpdateDescriptorSetWithTemplate = (PFN_vkUpdateDescriptorSetWithTemplate)load(context, "vkUpdateDescriptorSetWithTemplate"); +#endif /* defined(VK_VERSION_1_1) */ +#if defined(VK_VERSION_1_2) + vkCmdBeginRenderPass2 = (PFN_vkCmdBeginRenderPass2)load(context, "vkCmdBeginRenderPass2"); + vkCmdDrawIndexedIndirectCount = (PFN_vkCmdDrawIndexedIndirectCount)load(context, "vkCmdDrawIndexedIndirectCount"); + vkCmdDrawIndirectCount = (PFN_vkCmdDrawIndirectCount)load(context, "vkCmdDrawIndirectCount"); + vkCmdEndRenderPass2 = (PFN_vkCmdEndRenderPass2)load(context, "vkCmdEndRenderPass2"); + vkCmdNextSubpass2 = (PFN_vkCmdNextSubpass2)load(context, "vkCmdNextSubpass2"); + vkCreateRenderPass2 = (PFN_vkCreateRenderPass2)load(context, "vkCreateRenderPass2"); + vkGetBufferDeviceAddress = (PFN_vkGetBufferDeviceAddress)load(context, "vkGetBufferDeviceAddress"); + vkGetBufferOpaqueCaptureAddress = (PFN_vkGetBufferOpaqueCaptureAddress)load(context, "vkGetBufferOpaqueCaptureAddress"); + vkGetDeviceMemoryOpaqueCaptureAddress = (PFN_vkGetDeviceMemoryOpaqueCaptureAddress)load(context, "vkGetDeviceMemoryOpaqueCaptureAddress"); + vkGetSemaphoreCounterValue = (PFN_vkGetSemaphoreCounterValue)load(context, "vkGetSemaphoreCounterValue"); + vkResetQueryPool = (PFN_vkResetQueryPool)load(context, "vkResetQueryPool"); + vkSignalSemaphore = (PFN_vkSignalSemaphore)load(context, "vkSignalSemaphore"); + vkWaitSemaphores = (PFN_vkWaitSemaphores)load(context, "vkWaitSemaphores"); +#endif /* defined(VK_VERSION_1_2) */ +#if defined(VK_AMD_buffer_marker) + vkCmdWriteBufferMarkerAMD = (PFN_vkCmdWriteBufferMarkerAMD)load(context, "vkCmdWriteBufferMarkerAMD"); +#endif /* defined(VK_AMD_buffer_marker) */ +#if defined(VK_AMD_display_native_hdr) + vkSetLocalDimmingAMD = (PFN_vkSetLocalDimmingAMD)load(context, "vkSetLocalDimmingAMD"); +#endif /* defined(VK_AMD_display_native_hdr) */ +#if defined(VK_AMD_draw_indirect_count) + vkCmdDrawIndexedIndirectCountAMD = (PFN_vkCmdDrawIndexedIndirectCountAMD)load(context, "vkCmdDrawIndexedIndirectCountAMD"); + vkCmdDrawIndirectCountAMD = (PFN_vkCmdDrawIndirectCountAMD)load(context, "vkCmdDrawIndirectCountAMD"); +#endif /* defined(VK_AMD_draw_indirect_count) */ +#if defined(VK_AMD_shader_info) + vkGetShaderInfoAMD = (PFN_vkGetShaderInfoAMD)load(context, "vkGetShaderInfoAMD"); +#endif /* defined(VK_AMD_shader_info) */ +#if defined(VK_ANDROID_external_memory_android_hardware_buffer) + vkGetAndroidHardwareBufferPropertiesANDROID = (PFN_vkGetAndroidHardwareBufferPropertiesANDROID)load(context, "vkGetAndroidHardwareBufferPropertiesANDROID"); + vkGetMemoryAndroidHardwareBufferANDROID = (PFN_vkGetMemoryAndroidHardwareBufferANDROID)load(context, "vkGetMemoryAndroidHardwareBufferANDROID"); +#endif /* defined(VK_ANDROID_external_memory_android_hardware_buffer) */ +#if defined(VK_EXT_buffer_device_address) + vkGetBufferDeviceAddressEXT = (PFN_vkGetBufferDeviceAddressEXT)load(context, "vkGetBufferDeviceAddressEXT"); +#endif /* defined(VK_EXT_buffer_device_address) */ +#if defined(VK_EXT_calibrated_timestamps) + vkGetCalibratedTimestampsEXT = (PFN_vkGetCalibratedTimestampsEXT)load(context, "vkGetCalibratedTimestampsEXT"); +#endif /* defined(VK_EXT_calibrated_timestamps) */ +#if defined(VK_EXT_conditional_rendering) + vkCmdBeginConditionalRenderingEXT = (PFN_vkCmdBeginConditionalRenderingEXT)load(context, "vkCmdBeginConditionalRenderingEXT"); + vkCmdEndConditionalRenderingEXT = (PFN_vkCmdEndConditionalRenderingEXT)load(context, "vkCmdEndConditionalRenderingEXT"); +#endif /* defined(VK_EXT_conditional_rendering) */ +#if defined(VK_EXT_debug_marker) + vkCmdDebugMarkerBeginEXT = (PFN_vkCmdDebugMarkerBeginEXT)load(context, "vkCmdDebugMarkerBeginEXT"); + vkCmdDebugMarkerEndEXT = (PFN_vkCmdDebugMarkerEndEXT)load(context, "vkCmdDebugMarkerEndEXT"); + vkCmdDebugMarkerInsertEXT = (PFN_vkCmdDebugMarkerInsertEXT)load(context, "vkCmdDebugMarkerInsertEXT"); + vkDebugMarkerSetObjectNameEXT = (PFN_vkDebugMarkerSetObjectNameEXT)load(context, "vkDebugMarkerSetObjectNameEXT"); + vkDebugMarkerSetObjectTagEXT = (PFN_vkDebugMarkerSetObjectTagEXT)load(context, "vkDebugMarkerSetObjectTagEXT"); +#endif /* defined(VK_EXT_debug_marker) */ +#if defined(VK_EXT_discard_rectangles) + vkCmdSetDiscardRectangleEXT = (PFN_vkCmdSetDiscardRectangleEXT)load(context, "vkCmdSetDiscardRectangleEXT"); +#endif /* defined(VK_EXT_discard_rectangles) */ +#if defined(VK_EXT_display_control) + vkDisplayPowerControlEXT = (PFN_vkDisplayPowerControlEXT)load(context, "vkDisplayPowerControlEXT"); + vkGetSwapchainCounterEXT = (PFN_vkGetSwapchainCounterEXT)load(context, "vkGetSwapchainCounterEXT"); + vkRegisterDeviceEventEXT = (PFN_vkRegisterDeviceEventEXT)load(context, "vkRegisterDeviceEventEXT"); + vkRegisterDisplayEventEXT = (PFN_vkRegisterDisplayEventEXT)load(context, "vkRegisterDisplayEventEXT"); +#endif /* defined(VK_EXT_display_control) */ +#if defined(VK_EXT_extended_dynamic_state) + vkCmdBindVertexBuffers2EXT = (PFN_vkCmdBindVertexBuffers2EXT)load(context, "vkCmdBindVertexBuffers2EXT"); + vkCmdSetCullModeEXT = (PFN_vkCmdSetCullModeEXT)load(context, "vkCmdSetCullModeEXT"); + vkCmdSetDepthBoundsTestEnableEXT = (PFN_vkCmdSetDepthBoundsTestEnableEXT)load(context, "vkCmdSetDepthBoundsTestEnableEXT"); + vkCmdSetDepthCompareOpEXT = (PFN_vkCmdSetDepthCompareOpEXT)load(context, "vkCmdSetDepthCompareOpEXT"); + vkCmdSetDepthTestEnableEXT = (PFN_vkCmdSetDepthTestEnableEXT)load(context, "vkCmdSetDepthTestEnableEXT"); + vkCmdSetDepthWriteEnableEXT = (PFN_vkCmdSetDepthWriteEnableEXT)load(context, "vkCmdSetDepthWriteEnableEXT"); + vkCmdSetFrontFaceEXT = (PFN_vkCmdSetFrontFaceEXT)load(context, "vkCmdSetFrontFaceEXT"); + vkCmdSetPrimitiveTopologyEXT = (PFN_vkCmdSetPrimitiveTopologyEXT)load(context, "vkCmdSetPrimitiveTopologyEXT"); + vkCmdSetScissorWithCountEXT = (PFN_vkCmdSetScissorWithCountEXT)load(context, "vkCmdSetScissorWithCountEXT"); + vkCmdSetStencilOpEXT = (PFN_vkCmdSetStencilOpEXT)load(context, "vkCmdSetStencilOpEXT"); + vkCmdSetStencilTestEnableEXT = (PFN_vkCmdSetStencilTestEnableEXT)load(context, "vkCmdSetStencilTestEnableEXT"); + vkCmdSetViewportWithCountEXT = (PFN_vkCmdSetViewportWithCountEXT)load(context, "vkCmdSetViewportWithCountEXT"); +#endif /* defined(VK_EXT_extended_dynamic_state) */ +#if defined(VK_EXT_external_memory_host) + vkGetMemoryHostPointerPropertiesEXT = (PFN_vkGetMemoryHostPointerPropertiesEXT)load(context, "vkGetMemoryHostPointerPropertiesEXT"); +#endif /* defined(VK_EXT_external_memory_host) */ +#if defined(VK_EXT_full_screen_exclusive) + vkAcquireFullScreenExclusiveModeEXT = (PFN_vkAcquireFullScreenExclusiveModeEXT)load(context, "vkAcquireFullScreenExclusiveModeEXT"); + vkReleaseFullScreenExclusiveModeEXT = (PFN_vkReleaseFullScreenExclusiveModeEXT)load(context, "vkReleaseFullScreenExclusiveModeEXT"); +#endif /* defined(VK_EXT_full_screen_exclusive) */ +#if defined(VK_EXT_hdr_metadata) + vkSetHdrMetadataEXT = (PFN_vkSetHdrMetadataEXT)load(context, "vkSetHdrMetadataEXT"); +#endif /* defined(VK_EXT_hdr_metadata) */ +#if defined(VK_EXT_host_query_reset) + vkResetQueryPoolEXT = (PFN_vkResetQueryPoolEXT)load(context, "vkResetQueryPoolEXT"); +#endif /* defined(VK_EXT_host_query_reset) */ +#if defined(VK_EXT_image_drm_format_modifier) + vkGetImageDrmFormatModifierPropertiesEXT = (PFN_vkGetImageDrmFormatModifierPropertiesEXT)load(context, "vkGetImageDrmFormatModifierPropertiesEXT"); +#endif /* defined(VK_EXT_image_drm_format_modifier) */ +#if defined(VK_EXT_line_rasterization) + vkCmdSetLineStippleEXT = (PFN_vkCmdSetLineStippleEXT)load(context, "vkCmdSetLineStippleEXT"); +#endif /* defined(VK_EXT_line_rasterization) */ +#if defined(VK_EXT_private_data) + vkCreatePrivateDataSlotEXT = (PFN_vkCreatePrivateDataSlotEXT)load(context, "vkCreatePrivateDataSlotEXT"); + vkDestroyPrivateDataSlotEXT = (PFN_vkDestroyPrivateDataSlotEXT)load(context, "vkDestroyPrivateDataSlotEXT"); + vkGetPrivateDataEXT = (PFN_vkGetPrivateDataEXT)load(context, "vkGetPrivateDataEXT"); + vkSetPrivateDataEXT = (PFN_vkSetPrivateDataEXT)load(context, "vkSetPrivateDataEXT"); +#endif /* defined(VK_EXT_private_data) */ +#if defined(VK_EXT_sample_locations) + vkCmdSetSampleLocationsEXT = (PFN_vkCmdSetSampleLocationsEXT)load(context, "vkCmdSetSampleLocationsEXT"); +#endif /* defined(VK_EXT_sample_locations) */ +#if defined(VK_EXT_transform_feedback) + vkCmdBeginQueryIndexedEXT = (PFN_vkCmdBeginQueryIndexedEXT)load(context, "vkCmdBeginQueryIndexedEXT"); + vkCmdBeginTransformFeedbackEXT = (PFN_vkCmdBeginTransformFeedbackEXT)load(context, "vkCmdBeginTransformFeedbackEXT"); + vkCmdBindTransformFeedbackBuffersEXT = (PFN_vkCmdBindTransformFeedbackBuffersEXT)load(context, "vkCmdBindTransformFeedbackBuffersEXT"); + vkCmdDrawIndirectByteCountEXT = (PFN_vkCmdDrawIndirectByteCountEXT)load(context, "vkCmdDrawIndirectByteCountEXT"); + vkCmdEndQueryIndexedEXT = (PFN_vkCmdEndQueryIndexedEXT)load(context, "vkCmdEndQueryIndexedEXT"); + vkCmdEndTransformFeedbackEXT = (PFN_vkCmdEndTransformFeedbackEXT)load(context, "vkCmdEndTransformFeedbackEXT"); +#endif /* defined(VK_EXT_transform_feedback) */ +#if defined(VK_EXT_validation_cache) + vkCreateValidationCacheEXT = (PFN_vkCreateValidationCacheEXT)load(context, "vkCreateValidationCacheEXT"); + vkDestroyValidationCacheEXT = (PFN_vkDestroyValidationCacheEXT)load(context, "vkDestroyValidationCacheEXT"); + vkGetValidationCacheDataEXT = (PFN_vkGetValidationCacheDataEXT)load(context, "vkGetValidationCacheDataEXT"); + vkMergeValidationCachesEXT = (PFN_vkMergeValidationCachesEXT)load(context, "vkMergeValidationCachesEXT"); +#endif /* defined(VK_EXT_validation_cache) */ +#if defined(VK_GOOGLE_display_timing) + vkGetPastPresentationTimingGOOGLE = (PFN_vkGetPastPresentationTimingGOOGLE)load(context, "vkGetPastPresentationTimingGOOGLE"); + vkGetRefreshCycleDurationGOOGLE = (PFN_vkGetRefreshCycleDurationGOOGLE)load(context, "vkGetRefreshCycleDurationGOOGLE"); +#endif /* defined(VK_GOOGLE_display_timing) */ +#if defined(VK_INTEL_performance_query) + vkAcquirePerformanceConfigurationINTEL = (PFN_vkAcquirePerformanceConfigurationINTEL)load(context, "vkAcquirePerformanceConfigurationINTEL"); + vkCmdSetPerformanceMarkerINTEL = (PFN_vkCmdSetPerformanceMarkerINTEL)load(context, "vkCmdSetPerformanceMarkerINTEL"); + vkCmdSetPerformanceOverrideINTEL = (PFN_vkCmdSetPerformanceOverrideINTEL)load(context, "vkCmdSetPerformanceOverrideINTEL"); + vkCmdSetPerformanceStreamMarkerINTEL = (PFN_vkCmdSetPerformanceStreamMarkerINTEL)load(context, "vkCmdSetPerformanceStreamMarkerINTEL"); + vkGetPerformanceParameterINTEL = (PFN_vkGetPerformanceParameterINTEL)load(context, "vkGetPerformanceParameterINTEL"); + vkInitializePerformanceApiINTEL = (PFN_vkInitializePerformanceApiINTEL)load(context, "vkInitializePerformanceApiINTEL"); + vkQueueSetPerformanceConfigurationINTEL = (PFN_vkQueueSetPerformanceConfigurationINTEL)load(context, "vkQueueSetPerformanceConfigurationINTEL"); + vkReleasePerformanceConfigurationINTEL = (PFN_vkReleasePerformanceConfigurationINTEL)load(context, "vkReleasePerformanceConfigurationINTEL"); + vkUninitializePerformanceApiINTEL = (PFN_vkUninitializePerformanceApiINTEL)load(context, "vkUninitializePerformanceApiINTEL"); +#endif /* defined(VK_INTEL_performance_query) */ +#if defined(VK_KHR_bind_memory2) + vkBindBufferMemory2KHR = (PFN_vkBindBufferMemory2KHR)load(context, "vkBindBufferMemory2KHR"); + vkBindImageMemory2KHR = (PFN_vkBindImageMemory2KHR)load(context, "vkBindImageMemory2KHR"); +#endif /* defined(VK_KHR_bind_memory2) */ +#if defined(VK_KHR_buffer_device_address) + vkGetBufferDeviceAddressKHR = (PFN_vkGetBufferDeviceAddressKHR)load(context, "vkGetBufferDeviceAddressKHR"); + vkGetBufferOpaqueCaptureAddressKHR = (PFN_vkGetBufferOpaqueCaptureAddressKHR)load(context, "vkGetBufferOpaqueCaptureAddressKHR"); + vkGetDeviceMemoryOpaqueCaptureAddressKHR = (PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)load(context, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"); +#endif /* defined(VK_KHR_buffer_device_address) */ +#if defined(VK_KHR_copy_commands2) + vkCmdBlitImage2KHR = (PFN_vkCmdBlitImage2KHR)load(context, "vkCmdBlitImage2KHR"); + vkCmdCopyBuffer2KHR = (PFN_vkCmdCopyBuffer2KHR)load(context, "vkCmdCopyBuffer2KHR"); + vkCmdCopyBufferToImage2KHR = (PFN_vkCmdCopyBufferToImage2KHR)load(context, "vkCmdCopyBufferToImage2KHR"); + vkCmdCopyImage2KHR = (PFN_vkCmdCopyImage2KHR)load(context, "vkCmdCopyImage2KHR"); + vkCmdCopyImageToBuffer2KHR = (PFN_vkCmdCopyImageToBuffer2KHR)load(context, "vkCmdCopyImageToBuffer2KHR"); + vkCmdResolveImage2KHR = (PFN_vkCmdResolveImage2KHR)load(context, "vkCmdResolveImage2KHR"); +#endif /* defined(VK_KHR_copy_commands2) */ +#if defined(VK_KHR_create_renderpass2) + vkCmdBeginRenderPass2KHR = (PFN_vkCmdBeginRenderPass2KHR)load(context, "vkCmdBeginRenderPass2KHR"); + vkCmdEndRenderPass2KHR = (PFN_vkCmdEndRenderPass2KHR)load(context, "vkCmdEndRenderPass2KHR"); + vkCmdNextSubpass2KHR = (PFN_vkCmdNextSubpass2KHR)load(context, "vkCmdNextSubpass2KHR"); + vkCreateRenderPass2KHR = (PFN_vkCreateRenderPass2KHR)load(context, "vkCreateRenderPass2KHR"); +#endif /* defined(VK_KHR_create_renderpass2) */ +#if defined(VK_KHR_deferred_host_operations) + vkCreateDeferredOperationKHR = (PFN_vkCreateDeferredOperationKHR)load(context, "vkCreateDeferredOperationKHR"); + vkDeferredOperationJoinKHR = (PFN_vkDeferredOperationJoinKHR)load(context, "vkDeferredOperationJoinKHR"); + vkDestroyDeferredOperationKHR = (PFN_vkDestroyDeferredOperationKHR)load(context, "vkDestroyDeferredOperationKHR"); + vkGetDeferredOperationMaxConcurrencyKHR = (PFN_vkGetDeferredOperationMaxConcurrencyKHR)load(context, "vkGetDeferredOperationMaxConcurrencyKHR"); + vkGetDeferredOperationResultKHR = (PFN_vkGetDeferredOperationResultKHR)load(context, "vkGetDeferredOperationResultKHR"); +#endif /* defined(VK_KHR_deferred_host_operations) */ +#if defined(VK_KHR_descriptor_update_template) + vkCreateDescriptorUpdateTemplateKHR = (PFN_vkCreateDescriptorUpdateTemplateKHR)load(context, "vkCreateDescriptorUpdateTemplateKHR"); + vkDestroyDescriptorUpdateTemplateKHR = (PFN_vkDestroyDescriptorUpdateTemplateKHR)load(context, "vkDestroyDescriptorUpdateTemplateKHR"); + vkUpdateDescriptorSetWithTemplateKHR = (PFN_vkUpdateDescriptorSetWithTemplateKHR)load(context, "vkUpdateDescriptorSetWithTemplateKHR"); +#endif /* defined(VK_KHR_descriptor_update_template) */ +#if defined(VK_KHR_device_group) + vkCmdDispatchBaseKHR = (PFN_vkCmdDispatchBaseKHR)load(context, "vkCmdDispatchBaseKHR"); + vkCmdSetDeviceMaskKHR = (PFN_vkCmdSetDeviceMaskKHR)load(context, "vkCmdSetDeviceMaskKHR"); + vkGetDeviceGroupPeerMemoryFeaturesKHR = (PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR)load(context, "vkGetDeviceGroupPeerMemoryFeaturesKHR"); +#endif /* defined(VK_KHR_device_group) */ +#if defined(VK_KHR_display_swapchain) + vkCreateSharedSwapchainsKHR = (PFN_vkCreateSharedSwapchainsKHR)load(context, "vkCreateSharedSwapchainsKHR"); +#endif /* defined(VK_KHR_display_swapchain) */ +#if defined(VK_KHR_draw_indirect_count) + vkCmdDrawIndexedIndirectCountKHR = (PFN_vkCmdDrawIndexedIndirectCountKHR)load(context, "vkCmdDrawIndexedIndirectCountKHR"); + vkCmdDrawIndirectCountKHR = (PFN_vkCmdDrawIndirectCountKHR)load(context, "vkCmdDrawIndirectCountKHR"); +#endif /* defined(VK_KHR_draw_indirect_count) */ +#if defined(VK_KHR_external_fence_fd) + vkGetFenceFdKHR = (PFN_vkGetFenceFdKHR)load(context, "vkGetFenceFdKHR"); + vkImportFenceFdKHR = (PFN_vkImportFenceFdKHR)load(context, "vkImportFenceFdKHR"); +#endif /* defined(VK_KHR_external_fence_fd) */ +#if defined(VK_KHR_external_fence_win32) + vkGetFenceWin32HandleKHR = (PFN_vkGetFenceWin32HandleKHR)load(context, "vkGetFenceWin32HandleKHR"); + vkImportFenceWin32HandleKHR = (PFN_vkImportFenceWin32HandleKHR)load(context, "vkImportFenceWin32HandleKHR"); +#endif /* defined(VK_KHR_external_fence_win32) */ +#if defined(VK_KHR_external_memory_fd) + vkGetMemoryFdKHR = (PFN_vkGetMemoryFdKHR)load(context, "vkGetMemoryFdKHR"); + vkGetMemoryFdPropertiesKHR = (PFN_vkGetMemoryFdPropertiesKHR)load(context, "vkGetMemoryFdPropertiesKHR"); +#endif /* defined(VK_KHR_external_memory_fd) */ +#if defined(VK_KHR_external_memory_win32) + vkGetMemoryWin32HandleKHR = (PFN_vkGetMemoryWin32HandleKHR)load(context, "vkGetMemoryWin32HandleKHR"); + vkGetMemoryWin32HandlePropertiesKHR = (PFN_vkGetMemoryWin32HandlePropertiesKHR)load(context, "vkGetMemoryWin32HandlePropertiesKHR"); +#endif /* defined(VK_KHR_external_memory_win32) */ +#if defined(VK_KHR_external_semaphore_fd) + vkGetSemaphoreFdKHR = (PFN_vkGetSemaphoreFdKHR)load(context, "vkGetSemaphoreFdKHR"); + vkImportSemaphoreFdKHR = (PFN_vkImportSemaphoreFdKHR)load(context, "vkImportSemaphoreFdKHR"); +#endif /* defined(VK_KHR_external_semaphore_fd) */ +#if defined(VK_KHR_external_semaphore_win32) + vkGetSemaphoreWin32HandleKHR = (PFN_vkGetSemaphoreWin32HandleKHR)load(context, "vkGetSemaphoreWin32HandleKHR"); + vkImportSemaphoreWin32HandleKHR = (PFN_vkImportSemaphoreWin32HandleKHR)load(context, "vkImportSemaphoreWin32HandleKHR"); +#endif /* defined(VK_KHR_external_semaphore_win32) */ +#if defined(VK_KHR_get_memory_requirements2) + vkGetBufferMemoryRequirements2KHR = (PFN_vkGetBufferMemoryRequirements2KHR)load(context, "vkGetBufferMemoryRequirements2KHR"); + vkGetImageMemoryRequirements2KHR = (PFN_vkGetImageMemoryRequirements2KHR)load(context, "vkGetImageMemoryRequirements2KHR"); + vkGetImageSparseMemoryRequirements2KHR = (PFN_vkGetImageSparseMemoryRequirements2KHR)load(context, "vkGetImageSparseMemoryRequirements2KHR"); +#endif /* defined(VK_KHR_get_memory_requirements2) */ +#if defined(VK_KHR_maintenance1) + vkTrimCommandPoolKHR = (PFN_vkTrimCommandPoolKHR)load(context, "vkTrimCommandPoolKHR"); +#endif /* defined(VK_KHR_maintenance1) */ +#if defined(VK_KHR_maintenance3) + vkGetDescriptorSetLayoutSupportKHR = (PFN_vkGetDescriptorSetLayoutSupportKHR)load(context, "vkGetDescriptorSetLayoutSupportKHR"); +#endif /* defined(VK_KHR_maintenance3) */ +#if defined(VK_KHR_performance_query) + vkAcquireProfilingLockKHR = (PFN_vkAcquireProfilingLockKHR)load(context, "vkAcquireProfilingLockKHR"); + vkReleaseProfilingLockKHR = (PFN_vkReleaseProfilingLockKHR)load(context, "vkReleaseProfilingLockKHR"); +#endif /* defined(VK_KHR_performance_query) */ +#if defined(VK_KHR_pipeline_executable_properties) + vkGetPipelineExecutableInternalRepresentationsKHR = (PFN_vkGetPipelineExecutableInternalRepresentationsKHR)load(context, "vkGetPipelineExecutableInternalRepresentationsKHR"); + vkGetPipelineExecutablePropertiesKHR = (PFN_vkGetPipelineExecutablePropertiesKHR)load(context, "vkGetPipelineExecutablePropertiesKHR"); + vkGetPipelineExecutableStatisticsKHR = (PFN_vkGetPipelineExecutableStatisticsKHR)load(context, "vkGetPipelineExecutableStatisticsKHR"); +#endif /* defined(VK_KHR_pipeline_executable_properties) */ +#if defined(VK_KHR_push_descriptor) + vkCmdPushDescriptorSetKHR = (PFN_vkCmdPushDescriptorSetKHR)load(context, "vkCmdPushDescriptorSetKHR"); +#endif /* defined(VK_KHR_push_descriptor) */ +#if defined(VK_KHR_ray_tracing) + vkBindAccelerationStructureMemoryKHR = (PFN_vkBindAccelerationStructureMemoryKHR)load(context, "vkBindAccelerationStructureMemoryKHR"); + vkBuildAccelerationStructureKHR = (PFN_vkBuildAccelerationStructureKHR)load(context, "vkBuildAccelerationStructureKHR"); + vkCmdBuildAccelerationStructureIndirectKHR = (PFN_vkCmdBuildAccelerationStructureIndirectKHR)load(context, "vkCmdBuildAccelerationStructureIndirectKHR"); + vkCmdBuildAccelerationStructureKHR = (PFN_vkCmdBuildAccelerationStructureKHR)load(context, "vkCmdBuildAccelerationStructureKHR"); + vkCmdCopyAccelerationStructureKHR = (PFN_vkCmdCopyAccelerationStructureKHR)load(context, "vkCmdCopyAccelerationStructureKHR"); + vkCmdCopyAccelerationStructureToMemoryKHR = (PFN_vkCmdCopyAccelerationStructureToMemoryKHR)load(context, "vkCmdCopyAccelerationStructureToMemoryKHR"); + vkCmdCopyMemoryToAccelerationStructureKHR = (PFN_vkCmdCopyMemoryToAccelerationStructureKHR)load(context, "vkCmdCopyMemoryToAccelerationStructureKHR"); + vkCmdTraceRaysIndirectKHR = (PFN_vkCmdTraceRaysIndirectKHR)load(context, "vkCmdTraceRaysIndirectKHR"); + vkCmdTraceRaysKHR = (PFN_vkCmdTraceRaysKHR)load(context, "vkCmdTraceRaysKHR"); + vkCmdWriteAccelerationStructuresPropertiesKHR = (PFN_vkCmdWriteAccelerationStructuresPropertiesKHR)load(context, "vkCmdWriteAccelerationStructuresPropertiesKHR"); + vkCopyAccelerationStructureKHR = (PFN_vkCopyAccelerationStructureKHR)load(context, "vkCopyAccelerationStructureKHR"); + vkCopyAccelerationStructureToMemoryKHR = (PFN_vkCopyAccelerationStructureToMemoryKHR)load(context, "vkCopyAccelerationStructureToMemoryKHR"); + vkCopyMemoryToAccelerationStructureKHR = (PFN_vkCopyMemoryToAccelerationStructureKHR)load(context, "vkCopyMemoryToAccelerationStructureKHR"); + vkCreateAccelerationStructureKHR = (PFN_vkCreateAccelerationStructureKHR)load(context, "vkCreateAccelerationStructureKHR"); + vkCreateRayTracingPipelinesKHR = (PFN_vkCreateRayTracingPipelinesKHR)load(context, "vkCreateRayTracingPipelinesKHR"); + vkDestroyAccelerationStructureKHR = (PFN_vkDestroyAccelerationStructureKHR)load(context, "vkDestroyAccelerationStructureKHR"); + vkGetAccelerationStructureDeviceAddressKHR = (PFN_vkGetAccelerationStructureDeviceAddressKHR)load(context, "vkGetAccelerationStructureDeviceAddressKHR"); + vkGetAccelerationStructureMemoryRequirementsKHR = (PFN_vkGetAccelerationStructureMemoryRequirementsKHR)load(context, "vkGetAccelerationStructureMemoryRequirementsKHR"); + vkGetDeviceAccelerationStructureCompatibilityKHR = (PFN_vkGetDeviceAccelerationStructureCompatibilityKHR)load(context, "vkGetDeviceAccelerationStructureCompatibilityKHR"); + vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = (PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)load(context, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"); + vkGetRayTracingShaderGroupHandlesKHR = (PFN_vkGetRayTracingShaderGroupHandlesKHR)load(context, "vkGetRayTracingShaderGroupHandlesKHR"); + vkWriteAccelerationStructuresPropertiesKHR = (PFN_vkWriteAccelerationStructuresPropertiesKHR)load(context, "vkWriteAccelerationStructuresPropertiesKHR"); +#endif /* defined(VK_KHR_ray_tracing) */ +#if defined(VK_KHR_sampler_ycbcr_conversion) + vkCreateSamplerYcbcrConversionKHR = (PFN_vkCreateSamplerYcbcrConversionKHR)load(context, "vkCreateSamplerYcbcrConversionKHR"); + vkDestroySamplerYcbcrConversionKHR = (PFN_vkDestroySamplerYcbcrConversionKHR)load(context, "vkDestroySamplerYcbcrConversionKHR"); +#endif /* defined(VK_KHR_sampler_ycbcr_conversion) */ +#if defined(VK_KHR_shared_presentable_image) + vkGetSwapchainStatusKHR = (PFN_vkGetSwapchainStatusKHR)load(context, "vkGetSwapchainStatusKHR"); +#endif /* defined(VK_KHR_shared_presentable_image) */ +#if defined(VK_KHR_swapchain) + vkAcquireNextImageKHR = (PFN_vkAcquireNextImageKHR)load(context, "vkAcquireNextImageKHR"); + vkCreateSwapchainKHR = (PFN_vkCreateSwapchainKHR)load(context, "vkCreateSwapchainKHR"); + vkDestroySwapchainKHR = (PFN_vkDestroySwapchainKHR)load(context, "vkDestroySwapchainKHR"); + vkGetSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR)load(context, "vkGetSwapchainImagesKHR"); + vkQueuePresentKHR = (PFN_vkQueuePresentKHR)load(context, "vkQueuePresentKHR"); +#endif /* defined(VK_KHR_swapchain) */ +#if defined(VK_KHR_timeline_semaphore) + vkGetSemaphoreCounterValueKHR = (PFN_vkGetSemaphoreCounterValueKHR)load(context, "vkGetSemaphoreCounterValueKHR"); + vkSignalSemaphoreKHR = (PFN_vkSignalSemaphoreKHR)load(context, "vkSignalSemaphoreKHR"); + vkWaitSemaphoresKHR = (PFN_vkWaitSemaphoresKHR)load(context, "vkWaitSemaphoresKHR"); +#endif /* defined(VK_KHR_timeline_semaphore) */ +#if defined(VK_NVX_image_view_handle) + vkGetImageViewAddressNVX = (PFN_vkGetImageViewAddressNVX)load(context, "vkGetImageViewAddressNVX"); + vkGetImageViewHandleNVX = (PFN_vkGetImageViewHandleNVX)load(context, "vkGetImageViewHandleNVX"); +#endif /* defined(VK_NVX_image_view_handle) */ +#if defined(VK_NV_clip_space_w_scaling) + vkCmdSetViewportWScalingNV = (PFN_vkCmdSetViewportWScalingNV)load(context, "vkCmdSetViewportWScalingNV"); +#endif /* defined(VK_NV_clip_space_w_scaling) */ +#if defined(VK_NV_device_diagnostic_checkpoints) + vkCmdSetCheckpointNV = (PFN_vkCmdSetCheckpointNV)load(context, "vkCmdSetCheckpointNV"); + vkGetQueueCheckpointDataNV = (PFN_vkGetQueueCheckpointDataNV)load(context, "vkGetQueueCheckpointDataNV"); +#endif /* defined(VK_NV_device_diagnostic_checkpoints) */ +#if defined(VK_NV_device_generated_commands) + vkCmdBindPipelineShaderGroupNV = (PFN_vkCmdBindPipelineShaderGroupNV)load(context, "vkCmdBindPipelineShaderGroupNV"); + vkCmdExecuteGeneratedCommandsNV = (PFN_vkCmdExecuteGeneratedCommandsNV)load(context, "vkCmdExecuteGeneratedCommandsNV"); + vkCmdPreprocessGeneratedCommandsNV = (PFN_vkCmdPreprocessGeneratedCommandsNV)load(context, "vkCmdPreprocessGeneratedCommandsNV"); + vkCreateIndirectCommandsLayoutNV = (PFN_vkCreateIndirectCommandsLayoutNV)load(context, "vkCreateIndirectCommandsLayoutNV"); + vkDestroyIndirectCommandsLayoutNV = (PFN_vkDestroyIndirectCommandsLayoutNV)load(context, "vkDestroyIndirectCommandsLayoutNV"); + vkGetGeneratedCommandsMemoryRequirementsNV = (PFN_vkGetGeneratedCommandsMemoryRequirementsNV)load(context, "vkGetGeneratedCommandsMemoryRequirementsNV"); +#endif /* defined(VK_NV_device_generated_commands) */ +#if defined(VK_NV_external_memory_win32) + vkGetMemoryWin32HandleNV = (PFN_vkGetMemoryWin32HandleNV)load(context, "vkGetMemoryWin32HandleNV"); +#endif /* defined(VK_NV_external_memory_win32) */ +#if defined(VK_NV_mesh_shader) + vkCmdDrawMeshTasksIndirectCountNV = (PFN_vkCmdDrawMeshTasksIndirectCountNV)load(context, "vkCmdDrawMeshTasksIndirectCountNV"); + vkCmdDrawMeshTasksIndirectNV = (PFN_vkCmdDrawMeshTasksIndirectNV)load(context, "vkCmdDrawMeshTasksIndirectNV"); + vkCmdDrawMeshTasksNV = (PFN_vkCmdDrawMeshTasksNV)load(context, "vkCmdDrawMeshTasksNV"); +#endif /* defined(VK_NV_mesh_shader) */ +#if defined(VK_NV_ray_tracing) + vkBindAccelerationStructureMemoryNV = (PFN_vkBindAccelerationStructureMemoryNV)load(context, "vkBindAccelerationStructureMemoryNV"); + vkCmdBuildAccelerationStructureNV = (PFN_vkCmdBuildAccelerationStructureNV)load(context, "vkCmdBuildAccelerationStructureNV"); + vkCmdCopyAccelerationStructureNV = (PFN_vkCmdCopyAccelerationStructureNV)load(context, "vkCmdCopyAccelerationStructureNV"); + vkCmdTraceRaysNV = (PFN_vkCmdTraceRaysNV)load(context, "vkCmdTraceRaysNV"); + vkCmdWriteAccelerationStructuresPropertiesNV = (PFN_vkCmdWriteAccelerationStructuresPropertiesNV)load(context, "vkCmdWriteAccelerationStructuresPropertiesNV"); + vkCompileDeferredNV = (PFN_vkCompileDeferredNV)load(context, "vkCompileDeferredNV"); + vkCreateAccelerationStructureNV = (PFN_vkCreateAccelerationStructureNV)load(context, "vkCreateAccelerationStructureNV"); + vkCreateRayTracingPipelinesNV = (PFN_vkCreateRayTracingPipelinesNV)load(context, "vkCreateRayTracingPipelinesNV"); + vkDestroyAccelerationStructureNV = (PFN_vkDestroyAccelerationStructureNV)load(context, "vkDestroyAccelerationStructureNV"); + vkGetAccelerationStructureHandleNV = (PFN_vkGetAccelerationStructureHandleNV)load(context, "vkGetAccelerationStructureHandleNV"); + vkGetAccelerationStructureMemoryRequirementsNV = (PFN_vkGetAccelerationStructureMemoryRequirementsNV)load(context, "vkGetAccelerationStructureMemoryRequirementsNV"); + vkGetRayTracingShaderGroupHandlesNV = (PFN_vkGetRayTracingShaderGroupHandlesNV)load(context, "vkGetRayTracingShaderGroupHandlesNV"); +#endif /* defined(VK_NV_ray_tracing) */ +#if defined(VK_NV_scissor_exclusive) + vkCmdSetExclusiveScissorNV = (PFN_vkCmdSetExclusiveScissorNV)load(context, "vkCmdSetExclusiveScissorNV"); +#endif /* defined(VK_NV_scissor_exclusive) */ +#if defined(VK_NV_shading_rate_image) + vkCmdBindShadingRateImageNV = (PFN_vkCmdBindShadingRateImageNV)load(context, "vkCmdBindShadingRateImageNV"); + vkCmdSetCoarseSampleOrderNV = (PFN_vkCmdSetCoarseSampleOrderNV)load(context, "vkCmdSetCoarseSampleOrderNV"); + vkCmdSetViewportShadingRatePaletteNV = (PFN_vkCmdSetViewportShadingRatePaletteNV)load(context, "vkCmdSetViewportShadingRatePaletteNV"); +#endif /* defined(VK_NV_shading_rate_image) */ +#if (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1)) + vkGetDeviceGroupSurfacePresentModes2EXT = (PFN_vkGetDeviceGroupSurfacePresentModes2EXT)load(context, "vkGetDeviceGroupSurfacePresentModes2EXT"); +#endif /* (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1)) */ +#if (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1)) || (defined(VK_KHR_push_descriptor) && defined(VK_KHR_descriptor_update_template)) + vkCmdPushDescriptorSetWithTemplateKHR = (PFN_vkCmdPushDescriptorSetWithTemplateKHR)load(context, "vkCmdPushDescriptorSetWithTemplateKHR"); +#endif /* (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1)) || (defined(VK_KHR_push_descriptor) && defined(VK_KHR_descriptor_update_template)) */ +#if (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) + vkGetDeviceGroupPresentCapabilitiesKHR = (PFN_vkGetDeviceGroupPresentCapabilitiesKHR)load(context, "vkGetDeviceGroupPresentCapabilitiesKHR"); + vkGetDeviceGroupSurfacePresentModesKHR = (PFN_vkGetDeviceGroupSurfacePresentModesKHR)load(context, "vkGetDeviceGroupSurfacePresentModesKHR"); +#endif /* (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) */ +#if (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) + vkAcquireNextImage2KHR = (PFN_vkAcquireNextImage2KHR)load(context, "vkAcquireNextImage2KHR"); +#endif /* (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) */ + /* VOLK_GENERATE_LOAD_DEVICE */ +} + +static void volkGenLoadDeviceTable(struct VolkDeviceTable* table, void* context, PFN_vkVoidFunction (*load)(void*, const char*)) +{ + /* VOLK_GENERATE_LOAD_DEVICE_TABLE */ +#if defined(VK_VERSION_1_0) + table->vkAllocateCommandBuffers = (PFN_vkAllocateCommandBuffers)load(context, "vkAllocateCommandBuffers"); + table->vkAllocateDescriptorSets = (PFN_vkAllocateDescriptorSets)load(context, "vkAllocateDescriptorSets"); + table->vkAllocateMemory = (PFN_vkAllocateMemory)load(context, "vkAllocateMemory"); + table->vkBeginCommandBuffer = (PFN_vkBeginCommandBuffer)load(context, "vkBeginCommandBuffer"); + table->vkBindBufferMemory = (PFN_vkBindBufferMemory)load(context, "vkBindBufferMemory"); + table->vkBindImageMemory = (PFN_vkBindImageMemory)load(context, "vkBindImageMemory"); + table->vkCmdBeginQuery = (PFN_vkCmdBeginQuery)load(context, "vkCmdBeginQuery"); + table->vkCmdBeginRenderPass = (PFN_vkCmdBeginRenderPass)load(context, "vkCmdBeginRenderPass"); + table->vkCmdBindDescriptorSets = (PFN_vkCmdBindDescriptorSets)load(context, "vkCmdBindDescriptorSets"); + table->vkCmdBindIndexBuffer = (PFN_vkCmdBindIndexBuffer)load(context, "vkCmdBindIndexBuffer"); + table->vkCmdBindPipeline = (PFN_vkCmdBindPipeline)load(context, "vkCmdBindPipeline"); + table->vkCmdBindVertexBuffers = (PFN_vkCmdBindVertexBuffers)load(context, "vkCmdBindVertexBuffers"); + table->vkCmdBlitImage = (PFN_vkCmdBlitImage)load(context, "vkCmdBlitImage"); + table->vkCmdClearAttachments = (PFN_vkCmdClearAttachments)load(context, "vkCmdClearAttachments"); + table->vkCmdClearColorImage = (PFN_vkCmdClearColorImage)load(context, "vkCmdClearColorImage"); + table->vkCmdClearDepthStencilImage = (PFN_vkCmdClearDepthStencilImage)load(context, "vkCmdClearDepthStencilImage"); + table->vkCmdCopyBuffer = (PFN_vkCmdCopyBuffer)load(context, "vkCmdCopyBuffer"); + table->vkCmdCopyBufferToImage = (PFN_vkCmdCopyBufferToImage)load(context, "vkCmdCopyBufferToImage"); + table->vkCmdCopyImage = (PFN_vkCmdCopyImage)load(context, "vkCmdCopyImage"); + table->vkCmdCopyImageToBuffer = (PFN_vkCmdCopyImageToBuffer)load(context, "vkCmdCopyImageToBuffer"); + table->vkCmdCopyQueryPoolResults = (PFN_vkCmdCopyQueryPoolResults)load(context, "vkCmdCopyQueryPoolResults"); + table->vkCmdDispatch = (PFN_vkCmdDispatch)load(context, "vkCmdDispatch"); + table->vkCmdDispatchIndirect = (PFN_vkCmdDispatchIndirect)load(context, "vkCmdDispatchIndirect"); + table->vkCmdDraw = (PFN_vkCmdDraw)load(context, "vkCmdDraw"); + table->vkCmdDrawIndexed = (PFN_vkCmdDrawIndexed)load(context, "vkCmdDrawIndexed"); + table->vkCmdDrawIndexedIndirect = (PFN_vkCmdDrawIndexedIndirect)load(context, "vkCmdDrawIndexedIndirect"); + table->vkCmdDrawIndirect = (PFN_vkCmdDrawIndirect)load(context, "vkCmdDrawIndirect"); + table->vkCmdEndQuery = (PFN_vkCmdEndQuery)load(context, "vkCmdEndQuery"); + table->vkCmdEndRenderPass = (PFN_vkCmdEndRenderPass)load(context, "vkCmdEndRenderPass"); + table->vkCmdExecuteCommands = (PFN_vkCmdExecuteCommands)load(context, "vkCmdExecuteCommands"); + table->vkCmdFillBuffer = (PFN_vkCmdFillBuffer)load(context, "vkCmdFillBuffer"); + table->vkCmdNextSubpass = (PFN_vkCmdNextSubpass)load(context, "vkCmdNextSubpass"); + table->vkCmdPipelineBarrier = (PFN_vkCmdPipelineBarrier)load(context, "vkCmdPipelineBarrier"); + table->vkCmdPushConstants = (PFN_vkCmdPushConstants)load(context, "vkCmdPushConstants"); + table->vkCmdResetEvent = (PFN_vkCmdResetEvent)load(context, "vkCmdResetEvent"); + table->vkCmdResetQueryPool = (PFN_vkCmdResetQueryPool)load(context, "vkCmdResetQueryPool"); + table->vkCmdResolveImage = (PFN_vkCmdResolveImage)load(context, "vkCmdResolveImage"); + table->vkCmdSetBlendConstants = (PFN_vkCmdSetBlendConstants)load(context, "vkCmdSetBlendConstants"); + table->vkCmdSetDepthBias = (PFN_vkCmdSetDepthBias)load(context, "vkCmdSetDepthBias"); + table->vkCmdSetDepthBounds = (PFN_vkCmdSetDepthBounds)load(context, "vkCmdSetDepthBounds"); + table->vkCmdSetEvent = (PFN_vkCmdSetEvent)load(context, "vkCmdSetEvent"); + table->vkCmdSetLineWidth = (PFN_vkCmdSetLineWidth)load(context, "vkCmdSetLineWidth"); + table->vkCmdSetScissor = (PFN_vkCmdSetScissor)load(context, "vkCmdSetScissor"); + table->vkCmdSetStencilCompareMask = (PFN_vkCmdSetStencilCompareMask)load(context, "vkCmdSetStencilCompareMask"); + table->vkCmdSetStencilReference = (PFN_vkCmdSetStencilReference)load(context, "vkCmdSetStencilReference"); + table->vkCmdSetStencilWriteMask = (PFN_vkCmdSetStencilWriteMask)load(context, "vkCmdSetStencilWriteMask"); + table->vkCmdSetViewport = (PFN_vkCmdSetViewport)load(context, "vkCmdSetViewport"); + table->vkCmdUpdateBuffer = (PFN_vkCmdUpdateBuffer)load(context, "vkCmdUpdateBuffer"); + table->vkCmdWaitEvents = (PFN_vkCmdWaitEvents)load(context, "vkCmdWaitEvents"); + table->vkCmdWriteTimestamp = (PFN_vkCmdWriteTimestamp)load(context, "vkCmdWriteTimestamp"); + table->vkCreateBuffer = (PFN_vkCreateBuffer)load(context, "vkCreateBuffer"); + table->vkCreateBufferView = (PFN_vkCreateBufferView)load(context, "vkCreateBufferView"); + table->vkCreateCommandPool = (PFN_vkCreateCommandPool)load(context, "vkCreateCommandPool"); + table->vkCreateComputePipelines = (PFN_vkCreateComputePipelines)load(context, "vkCreateComputePipelines"); + table->vkCreateDescriptorPool = (PFN_vkCreateDescriptorPool)load(context, "vkCreateDescriptorPool"); + table->vkCreateDescriptorSetLayout = (PFN_vkCreateDescriptorSetLayout)load(context, "vkCreateDescriptorSetLayout"); + table->vkCreateEvent = (PFN_vkCreateEvent)load(context, "vkCreateEvent"); + table->vkCreateFence = (PFN_vkCreateFence)load(context, "vkCreateFence"); + table->vkCreateFramebuffer = (PFN_vkCreateFramebuffer)load(context, "vkCreateFramebuffer"); + table->vkCreateGraphicsPipelines = (PFN_vkCreateGraphicsPipelines)load(context, "vkCreateGraphicsPipelines"); + table->vkCreateImage = (PFN_vkCreateImage)load(context, "vkCreateImage"); + table->vkCreateImageView = (PFN_vkCreateImageView)load(context, "vkCreateImageView"); + table->vkCreatePipelineCache = (PFN_vkCreatePipelineCache)load(context, "vkCreatePipelineCache"); + table->vkCreatePipelineLayout = (PFN_vkCreatePipelineLayout)load(context, "vkCreatePipelineLayout"); + table->vkCreateQueryPool = (PFN_vkCreateQueryPool)load(context, "vkCreateQueryPool"); + table->vkCreateRenderPass = (PFN_vkCreateRenderPass)load(context, "vkCreateRenderPass"); + table->vkCreateSampler = (PFN_vkCreateSampler)load(context, "vkCreateSampler"); + table->vkCreateSemaphore = (PFN_vkCreateSemaphore)load(context, "vkCreateSemaphore"); + table->vkCreateShaderModule = (PFN_vkCreateShaderModule)load(context, "vkCreateShaderModule"); + table->vkDestroyBuffer = (PFN_vkDestroyBuffer)load(context, "vkDestroyBuffer"); + table->vkDestroyBufferView = (PFN_vkDestroyBufferView)load(context, "vkDestroyBufferView"); + table->vkDestroyCommandPool = (PFN_vkDestroyCommandPool)load(context, "vkDestroyCommandPool"); + table->vkDestroyDescriptorPool = (PFN_vkDestroyDescriptorPool)load(context, "vkDestroyDescriptorPool"); + table->vkDestroyDescriptorSetLayout = (PFN_vkDestroyDescriptorSetLayout)load(context, "vkDestroyDescriptorSetLayout"); + table->vkDestroyDevice = (PFN_vkDestroyDevice)load(context, "vkDestroyDevice"); + table->vkDestroyEvent = (PFN_vkDestroyEvent)load(context, "vkDestroyEvent"); + table->vkDestroyFence = (PFN_vkDestroyFence)load(context, "vkDestroyFence"); + table->vkDestroyFramebuffer = (PFN_vkDestroyFramebuffer)load(context, "vkDestroyFramebuffer"); + table->vkDestroyImage = (PFN_vkDestroyImage)load(context, "vkDestroyImage"); + table->vkDestroyImageView = (PFN_vkDestroyImageView)load(context, "vkDestroyImageView"); + table->vkDestroyPipeline = (PFN_vkDestroyPipeline)load(context, "vkDestroyPipeline"); + table->vkDestroyPipelineCache = (PFN_vkDestroyPipelineCache)load(context, "vkDestroyPipelineCache"); + table->vkDestroyPipelineLayout = (PFN_vkDestroyPipelineLayout)load(context, "vkDestroyPipelineLayout"); + table->vkDestroyQueryPool = (PFN_vkDestroyQueryPool)load(context, "vkDestroyQueryPool"); + table->vkDestroyRenderPass = (PFN_vkDestroyRenderPass)load(context, "vkDestroyRenderPass"); + table->vkDestroySampler = (PFN_vkDestroySampler)load(context, "vkDestroySampler"); + table->vkDestroySemaphore = (PFN_vkDestroySemaphore)load(context, "vkDestroySemaphore"); + table->vkDestroyShaderModule = (PFN_vkDestroyShaderModule)load(context, "vkDestroyShaderModule"); + table->vkDeviceWaitIdle = (PFN_vkDeviceWaitIdle)load(context, "vkDeviceWaitIdle"); + table->vkEndCommandBuffer = (PFN_vkEndCommandBuffer)load(context, "vkEndCommandBuffer"); + table->vkFlushMappedMemoryRanges = (PFN_vkFlushMappedMemoryRanges)load(context, "vkFlushMappedMemoryRanges"); + table->vkFreeCommandBuffers = (PFN_vkFreeCommandBuffers)load(context, "vkFreeCommandBuffers"); + table->vkFreeDescriptorSets = (PFN_vkFreeDescriptorSets)load(context, "vkFreeDescriptorSets"); + table->vkFreeMemory = (PFN_vkFreeMemory)load(context, "vkFreeMemory"); + table->vkGetBufferMemoryRequirements = (PFN_vkGetBufferMemoryRequirements)load(context, "vkGetBufferMemoryRequirements"); + table->vkGetDeviceMemoryCommitment = (PFN_vkGetDeviceMemoryCommitment)load(context, "vkGetDeviceMemoryCommitment"); + table->vkGetDeviceQueue = (PFN_vkGetDeviceQueue)load(context, "vkGetDeviceQueue"); + table->vkGetEventStatus = (PFN_vkGetEventStatus)load(context, "vkGetEventStatus"); + table->vkGetFenceStatus = (PFN_vkGetFenceStatus)load(context, "vkGetFenceStatus"); + table->vkGetImageMemoryRequirements = (PFN_vkGetImageMemoryRequirements)load(context, "vkGetImageMemoryRequirements"); + table->vkGetImageSparseMemoryRequirements = (PFN_vkGetImageSparseMemoryRequirements)load(context, "vkGetImageSparseMemoryRequirements"); + table->vkGetImageSubresourceLayout = (PFN_vkGetImageSubresourceLayout)load(context, "vkGetImageSubresourceLayout"); + table->vkGetPipelineCacheData = (PFN_vkGetPipelineCacheData)load(context, "vkGetPipelineCacheData"); + table->vkGetQueryPoolResults = (PFN_vkGetQueryPoolResults)load(context, "vkGetQueryPoolResults"); + table->vkGetRenderAreaGranularity = (PFN_vkGetRenderAreaGranularity)load(context, "vkGetRenderAreaGranularity"); + table->vkInvalidateMappedMemoryRanges = (PFN_vkInvalidateMappedMemoryRanges)load(context, "vkInvalidateMappedMemoryRanges"); + table->vkMapMemory = (PFN_vkMapMemory)load(context, "vkMapMemory"); + table->vkMergePipelineCaches = (PFN_vkMergePipelineCaches)load(context, "vkMergePipelineCaches"); + table->vkQueueBindSparse = (PFN_vkQueueBindSparse)load(context, "vkQueueBindSparse"); + table->vkQueueSubmit = (PFN_vkQueueSubmit)load(context, "vkQueueSubmit"); + table->vkQueueWaitIdle = (PFN_vkQueueWaitIdle)load(context, "vkQueueWaitIdle"); + table->vkResetCommandBuffer = (PFN_vkResetCommandBuffer)load(context, "vkResetCommandBuffer"); + table->vkResetCommandPool = (PFN_vkResetCommandPool)load(context, "vkResetCommandPool"); + table->vkResetDescriptorPool = (PFN_vkResetDescriptorPool)load(context, "vkResetDescriptorPool"); + table->vkResetEvent = (PFN_vkResetEvent)load(context, "vkResetEvent"); + table->vkResetFences = (PFN_vkResetFences)load(context, "vkResetFences"); + table->vkSetEvent = (PFN_vkSetEvent)load(context, "vkSetEvent"); + table->vkUnmapMemory = (PFN_vkUnmapMemory)load(context, "vkUnmapMemory"); + table->vkUpdateDescriptorSets = (PFN_vkUpdateDescriptorSets)load(context, "vkUpdateDescriptorSets"); + table->vkWaitForFences = (PFN_vkWaitForFences)load(context, "vkWaitForFences"); +#endif /* defined(VK_VERSION_1_0) */ +#if defined(VK_VERSION_1_1) + table->vkBindBufferMemory2 = (PFN_vkBindBufferMemory2)load(context, "vkBindBufferMemory2"); + table->vkBindImageMemory2 = (PFN_vkBindImageMemory2)load(context, "vkBindImageMemory2"); + table->vkCmdDispatchBase = (PFN_vkCmdDispatchBase)load(context, "vkCmdDispatchBase"); + table->vkCmdSetDeviceMask = (PFN_vkCmdSetDeviceMask)load(context, "vkCmdSetDeviceMask"); + table->vkCreateDescriptorUpdateTemplate = (PFN_vkCreateDescriptorUpdateTemplate)load(context, "vkCreateDescriptorUpdateTemplate"); + table->vkCreateSamplerYcbcrConversion = (PFN_vkCreateSamplerYcbcrConversion)load(context, "vkCreateSamplerYcbcrConversion"); + table->vkDestroyDescriptorUpdateTemplate = (PFN_vkDestroyDescriptorUpdateTemplate)load(context, "vkDestroyDescriptorUpdateTemplate"); + table->vkDestroySamplerYcbcrConversion = (PFN_vkDestroySamplerYcbcrConversion)load(context, "vkDestroySamplerYcbcrConversion"); + table->vkGetBufferMemoryRequirements2 = (PFN_vkGetBufferMemoryRequirements2)load(context, "vkGetBufferMemoryRequirements2"); + table->vkGetDescriptorSetLayoutSupport = (PFN_vkGetDescriptorSetLayoutSupport)load(context, "vkGetDescriptorSetLayoutSupport"); + table->vkGetDeviceGroupPeerMemoryFeatures = (PFN_vkGetDeviceGroupPeerMemoryFeatures)load(context, "vkGetDeviceGroupPeerMemoryFeatures"); + table->vkGetDeviceQueue2 = (PFN_vkGetDeviceQueue2)load(context, "vkGetDeviceQueue2"); + table->vkGetImageMemoryRequirements2 = (PFN_vkGetImageMemoryRequirements2)load(context, "vkGetImageMemoryRequirements2"); + table->vkGetImageSparseMemoryRequirements2 = (PFN_vkGetImageSparseMemoryRequirements2)load(context, "vkGetImageSparseMemoryRequirements2"); + table->vkTrimCommandPool = (PFN_vkTrimCommandPool)load(context, "vkTrimCommandPool"); + table->vkUpdateDescriptorSetWithTemplate = (PFN_vkUpdateDescriptorSetWithTemplate)load(context, "vkUpdateDescriptorSetWithTemplate"); +#endif /* defined(VK_VERSION_1_1) */ +#if defined(VK_VERSION_1_2) + table->vkCmdBeginRenderPass2 = (PFN_vkCmdBeginRenderPass2)load(context, "vkCmdBeginRenderPass2"); + table->vkCmdDrawIndexedIndirectCount = (PFN_vkCmdDrawIndexedIndirectCount)load(context, "vkCmdDrawIndexedIndirectCount"); + table->vkCmdDrawIndirectCount = (PFN_vkCmdDrawIndirectCount)load(context, "vkCmdDrawIndirectCount"); + table->vkCmdEndRenderPass2 = (PFN_vkCmdEndRenderPass2)load(context, "vkCmdEndRenderPass2"); + table->vkCmdNextSubpass2 = (PFN_vkCmdNextSubpass2)load(context, "vkCmdNextSubpass2"); + table->vkCreateRenderPass2 = (PFN_vkCreateRenderPass2)load(context, "vkCreateRenderPass2"); + table->vkGetBufferDeviceAddress = (PFN_vkGetBufferDeviceAddress)load(context, "vkGetBufferDeviceAddress"); + table->vkGetBufferOpaqueCaptureAddress = (PFN_vkGetBufferOpaqueCaptureAddress)load(context, "vkGetBufferOpaqueCaptureAddress"); + table->vkGetDeviceMemoryOpaqueCaptureAddress = (PFN_vkGetDeviceMemoryOpaqueCaptureAddress)load(context, "vkGetDeviceMemoryOpaqueCaptureAddress"); + table->vkGetSemaphoreCounterValue = (PFN_vkGetSemaphoreCounterValue)load(context, "vkGetSemaphoreCounterValue"); + table->vkResetQueryPool = (PFN_vkResetQueryPool)load(context, "vkResetQueryPool"); + table->vkSignalSemaphore = (PFN_vkSignalSemaphore)load(context, "vkSignalSemaphore"); + table->vkWaitSemaphores = (PFN_vkWaitSemaphores)load(context, "vkWaitSemaphores"); +#endif /* defined(VK_VERSION_1_2) */ +#if defined(VK_AMD_buffer_marker) + table->vkCmdWriteBufferMarkerAMD = (PFN_vkCmdWriteBufferMarkerAMD)load(context, "vkCmdWriteBufferMarkerAMD"); +#endif /* defined(VK_AMD_buffer_marker) */ +#if defined(VK_AMD_display_native_hdr) + table->vkSetLocalDimmingAMD = (PFN_vkSetLocalDimmingAMD)load(context, "vkSetLocalDimmingAMD"); +#endif /* defined(VK_AMD_display_native_hdr) */ +#if defined(VK_AMD_draw_indirect_count) + table->vkCmdDrawIndexedIndirectCountAMD = (PFN_vkCmdDrawIndexedIndirectCountAMD)load(context, "vkCmdDrawIndexedIndirectCountAMD"); + table->vkCmdDrawIndirectCountAMD = (PFN_vkCmdDrawIndirectCountAMD)load(context, "vkCmdDrawIndirectCountAMD"); +#endif /* defined(VK_AMD_draw_indirect_count) */ +#if defined(VK_AMD_shader_info) + table->vkGetShaderInfoAMD = (PFN_vkGetShaderInfoAMD)load(context, "vkGetShaderInfoAMD"); +#endif /* defined(VK_AMD_shader_info) */ +#if defined(VK_ANDROID_external_memory_android_hardware_buffer) + table->vkGetAndroidHardwareBufferPropertiesANDROID = (PFN_vkGetAndroidHardwareBufferPropertiesANDROID)load(context, "vkGetAndroidHardwareBufferPropertiesANDROID"); + table->vkGetMemoryAndroidHardwareBufferANDROID = (PFN_vkGetMemoryAndroidHardwareBufferANDROID)load(context, "vkGetMemoryAndroidHardwareBufferANDROID"); +#endif /* defined(VK_ANDROID_external_memory_android_hardware_buffer) */ +#if defined(VK_EXT_buffer_device_address) + table->vkGetBufferDeviceAddressEXT = (PFN_vkGetBufferDeviceAddressEXT)load(context, "vkGetBufferDeviceAddressEXT"); +#endif /* defined(VK_EXT_buffer_device_address) */ +#if defined(VK_EXT_calibrated_timestamps) + table->vkGetCalibratedTimestampsEXT = (PFN_vkGetCalibratedTimestampsEXT)load(context, "vkGetCalibratedTimestampsEXT"); +#endif /* defined(VK_EXT_calibrated_timestamps) */ +#if defined(VK_EXT_conditional_rendering) + table->vkCmdBeginConditionalRenderingEXT = (PFN_vkCmdBeginConditionalRenderingEXT)load(context, "vkCmdBeginConditionalRenderingEXT"); + table->vkCmdEndConditionalRenderingEXT = (PFN_vkCmdEndConditionalRenderingEXT)load(context, "vkCmdEndConditionalRenderingEXT"); +#endif /* defined(VK_EXT_conditional_rendering) */ +#if defined(VK_EXT_debug_marker) + table->vkCmdDebugMarkerBeginEXT = (PFN_vkCmdDebugMarkerBeginEXT)load(context, "vkCmdDebugMarkerBeginEXT"); + table->vkCmdDebugMarkerEndEXT = (PFN_vkCmdDebugMarkerEndEXT)load(context, "vkCmdDebugMarkerEndEXT"); + table->vkCmdDebugMarkerInsertEXT = (PFN_vkCmdDebugMarkerInsertEXT)load(context, "vkCmdDebugMarkerInsertEXT"); + table->vkDebugMarkerSetObjectNameEXT = (PFN_vkDebugMarkerSetObjectNameEXT)load(context, "vkDebugMarkerSetObjectNameEXT"); + table->vkDebugMarkerSetObjectTagEXT = (PFN_vkDebugMarkerSetObjectTagEXT)load(context, "vkDebugMarkerSetObjectTagEXT"); +#endif /* defined(VK_EXT_debug_marker) */ +#if defined(VK_EXT_discard_rectangles) + table->vkCmdSetDiscardRectangleEXT = (PFN_vkCmdSetDiscardRectangleEXT)load(context, "vkCmdSetDiscardRectangleEXT"); +#endif /* defined(VK_EXT_discard_rectangles) */ +#if defined(VK_EXT_display_control) + table->vkDisplayPowerControlEXT = (PFN_vkDisplayPowerControlEXT)load(context, "vkDisplayPowerControlEXT"); + table->vkGetSwapchainCounterEXT = (PFN_vkGetSwapchainCounterEXT)load(context, "vkGetSwapchainCounterEXT"); + table->vkRegisterDeviceEventEXT = (PFN_vkRegisterDeviceEventEXT)load(context, "vkRegisterDeviceEventEXT"); + table->vkRegisterDisplayEventEXT = (PFN_vkRegisterDisplayEventEXT)load(context, "vkRegisterDisplayEventEXT"); +#endif /* defined(VK_EXT_display_control) */ +#if defined(VK_EXT_extended_dynamic_state) + table->vkCmdBindVertexBuffers2EXT = (PFN_vkCmdBindVertexBuffers2EXT)load(context, "vkCmdBindVertexBuffers2EXT"); + table->vkCmdSetCullModeEXT = (PFN_vkCmdSetCullModeEXT)load(context, "vkCmdSetCullModeEXT"); + table->vkCmdSetDepthBoundsTestEnableEXT = (PFN_vkCmdSetDepthBoundsTestEnableEXT)load(context, "vkCmdSetDepthBoundsTestEnableEXT"); + table->vkCmdSetDepthCompareOpEXT = (PFN_vkCmdSetDepthCompareOpEXT)load(context, "vkCmdSetDepthCompareOpEXT"); + table->vkCmdSetDepthTestEnableEXT = (PFN_vkCmdSetDepthTestEnableEXT)load(context, "vkCmdSetDepthTestEnableEXT"); + table->vkCmdSetDepthWriteEnableEXT = (PFN_vkCmdSetDepthWriteEnableEXT)load(context, "vkCmdSetDepthWriteEnableEXT"); + table->vkCmdSetFrontFaceEXT = (PFN_vkCmdSetFrontFaceEXT)load(context, "vkCmdSetFrontFaceEXT"); + table->vkCmdSetPrimitiveTopologyEXT = (PFN_vkCmdSetPrimitiveTopologyEXT)load(context, "vkCmdSetPrimitiveTopologyEXT"); + table->vkCmdSetScissorWithCountEXT = (PFN_vkCmdSetScissorWithCountEXT)load(context, "vkCmdSetScissorWithCountEXT"); + table->vkCmdSetStencilOpEXT = (PFN_vkCmdSetStencilOpEXT)load(context, "vkCmdSetStencilOpEXT"); + table->vkCmdSetStencilTestEnableEXT = (PFN_vkCmdSetStencilTestEnableEXT)load(context, "vkCmdSetStencilTestEnableEXT"); + table->vkCmdSetViewportWithCountEXT = (PFN_vkCmdSetViewportWithCountEXT)load(context, "vkCmdSetViewportWithCountEXT"); +#endif /* defined(VK_EXT_extended_dynamic_state) */ +#if defined(VK_EXT_external_memory_host) + table->vkGetMemoryHostPointerPropertiesEXT = (PFN_vkGetMemoryHostPointerPropertiesEXT)load(context, "vkGetMemoryHostPointerPropertiesEXT"); +#endif /* defined(VK_EXT_external_memory_host) */ +#if defined(VK_EXT_full_screen_exclusive) + table->vkAcquireFullScreenExclusiveModeEXT = (PFN_vkAcquireFullScreenExclusiveModeEXT)load(context, "vkAcquireFullScreenExclusiveModeEXT"); + table->vkReleaseFullScreenExclusiveModeEXT = (PFN_vkReleaseFullScreenExclusiveModeEXT)load(context, "vkReleaseFullScreenExclusiveModeEXT"); +#endif /* defined(VK_EXT_full_screen_exclusive) */ +#if defined(VK_EXT_hdr_metadata) + table->vkSetHdrMetadataEXT = (PFN_vkSetHdrMetadataEXT)load(context, "vkSetHdrMetadataEXT"); +#endif /* defined(VK_EXT_hdr_metadata) */ +#if defined(VK_EXT_host_query_reset) + table->vkResetQueryPoolEXT = (PFN_vkResetQueryPoolEXT)load(context, "vkResetQueryPoolEXT"); +#endif /* defined(VK_EXT_host_query_reset) */ +#if defined(VK_EXT_image_drm_format_modifier) + table->vkGetImageDrmFormatModifierPropertiesEXT = (PFN_vkGetImageDrmFormatModifierPropertiesEXT)load(context, "vkGetImageDrmFormatModifierPropertiesEXT"); +#endif /* defined(VK_EXT_image_drm_format_modifier) */ +#if defined(VK_EXT_line_rasterization) + table->vkCmdSetLineStippleEXT = (PFN_vkCmdSetLineStippleEXT)load(context, "vkCmdSetLineStippleEXT"); +#endif /* defined(VK_EXT_line_rasterization) */ +#if defined(VK_EXT_private_data) + table->vkCreatePrivateDataSlotEXT = (PFN_vkCreatePrivateDataSlotEXT)load(context, "vkCreatePrivateDataSlotEXT"); + table->vkDestroyPrivateDataSlotEXT = (PFN_vkDestroyPrivateDataSlotEXT)load(context, "vkDestroyPrivateDataSlotEXT"); + table->vkGetPrivateDataEXT = (PFN_vkGetPrivateDataEXT)load(context, "vkGetPrivateDataEXT"); + table->vkSetPrivateDataEXT = (PFN_vkSetPrivateDataEXT)load(context, "vkSetPrivateDataEXT"); +#endif /* defined(VK_EXT_private_data) */ +#if defined(VK_EXT_sample_locations) + table->vkCmdSetSampleLocationsEXT = (PFN_vkCmdSetSampleLocationsEXT)load(context, "vkCmdSetSampleLocationsEXT"); +#endif /* defined(VK_EXT_sample_locations) */ +#if defined(VK_EXT_transform_feedback) + table->vkCmdBeginQueryIndexedEXT = (PFN_vkCmdBeginQueryIndexedEXT)load(context, "vkCmdBeginQueryIndexedEXT"); + table->vkCmdBeginTransformFeedbackEXT = (PFN_vkCmdBeginTransformFeedbackEXT)load(context, "vkCmdBeginTransformFeedbackEXT"); + table->vkCmdBindTransformFeedbackBuffersEXT = (PFN_vkCmdBindTransformFeedbackBuffersEXT)load(context, "vkCmdBindTransformFeedbackBuffersEXT"); + table->vkCmdDrawIndirectByteCountEXT = (PFN_vkCmdDrawIndirectByteCountEXT)load(context, "vkCmdDrawIndirectByteCountEXT"); + table->vkCmdEndQueryIndexedEXT = (PFN_vkCmdEndQueryIndexedEXT)load(context, "vkCmdEndQueryIndexedEXT"); + table->vkCmdEndTransformFeedbackEXT = (PFN_vkCmdEndTransformFeedbackEXT)load(context, "vkCmdEndTransformFeedbackEXT"); +#endif /* defined(VK_EXT_transform_feedback) */ +#if defined(VK_EXT_validation_cache) + table->vkCreateValidationCacheEXT = (PFN_vkCreateValidationCacheEXT)load(context, "vkCreateValidationCacheEXT"); + table->vkDestroyValidationCacheEXT = (PFN_vkDestroyValidationCacheEXT)load(context, "vkDestroyValidationCacheEXT"); + table->vkGetValidationCacheDataEXT = (PFN_vkGetValidationCacheDataEXT)load(context, "vkGetValidationCacheDataEXT"); + table->vkMergeValidationCachesEXT = (PFN_vkMergeValidationCachesEXT)load(context, "vkMergeValidationCachesEXT"); +#endif /* defined(VK_EXT_validation_cache) */ +#if defined(VK_GOOGLE_display_timing) + table->vkGetPastPresentationTimingGOOGLE = (PFN_vkGetPastPresentationTimingGOOGLE)load(context, "vkGetPastPresentationTimingGOOGLE"); + table->vkGetRefreshCycleDurationGOOGLE = (PFN_vkGetRefreshCycleDurationGOOGLE)load(context, "vkGetRefreshCycleDurationGOOGLE"); +#endif /* defined(VK_GOOGLE_display_timing) */ +#if defined(VK_INTEL_performance_query) + table->vkAcquirePerformanceConfigurationINTEL = (PFN_vkAcquirePerformanceConfigurationINTEL)load(context, "vkAcquirePerformanceConfigurationINTEL"); + table->vkCmdSetPerformanceMarkerINTEL = (PFN_vkCmdSetPerformanceMarkerINTEL)load(context, "vkCmdSetPerformanceMarkerINTEL"); + table->vkCmdSetPerformanceOverrideINTEL = (PFN_vkCmdSetPerformanceOverrideINTEL)load(context, "vkCmdSetPerformanceOverrideINTEL"); + table->vkCmdSetPerformanceStreamMarkerINTEL = (PFN_vkCmdSetPerformanceStreamMarkerINTEL)load(context, "vkCmdSetPerformanceStreamMarkerINTEL"); + table->vkGetPerformanceParameterINTEL = (PFN_vkGetPerformanceParameterINTEL)load(context, "vkGetPerformanceParameterINTEL"); + table->vkInitializePerformanceApiINTEL = (PFN_vkInitializePerformanceApiINTEL)load(context, "vkInitializePerformanceApiINTEL"); + table->vkQueueSetPerformanceConfigurationINTEL = (PFN_vkQueueSetPerformanceConfigurationINTEL)load(context, "vkQueueSetPerformanceConfigurationINTEL"); + table->vkReleasePerformanceConfigurationINTEL = (PFN_vkReleasePerformanceConfigurationINTEL)load(context, "vkReleasePerformanceConfigurationINTEL"); + table->vkUninitializePerformanceApiINTEL = (PFN_vkUninitializePerformanceApiINTEL)load(context, "vkUninitializePerformanceApiINTEL"); +#endif /* defined(VK_INTEL_performance_query) */ +#if defined(VK_KHR_bind_memory2) + table->vkBindBufferMemory2KHR = (PFN_vkBindBufferMemory2KHR)load(context, "vkBindBufferMemory2KHR"); + table->vkBindImageMemory2KHR = (PFN_vkBindImageMemory2KHR)load(context, "vkBindImageMemory2KHR"); +#endif /* defined(VK_KHR_bind_memory2) */ +#if defined(VK_KHR_buffer_device_address) + table->vkGetBufferDeviceAddressKHR = (PFN_vkGetBufferDeviceAddressKHR)load(context, "vkGetBufferDeviceAddressKHR"); + table->vkGetBufferOpaqueCaptureAddressKHR = (PFN_vkGetBufferOpaqueCaptureAddressKHR)load(context, "vkGetBufferOpaqueCaptureAddressKHR"); + table->vkGetDeviceMemoryOpaqueCaptureAddressKHR = (PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)load(context, "vkGetDeviceMemoryOpaqueCaptureAddressKHR"); +#endif /* defined(VK_KHR_buffer_device_address) */ +#if defined(VK_KHR_copy_commands2) + table->vkCmdBlitImage2KHR = (PFN_vkCmdBlitImage2KHR)load(context, "vkCmdBlitImage2KHR"); + table->vkCmdCopyBuffer2KHR = (PFN_vkCmdCopyBuffer2KHR)load(context, "vkCmdCopyBuffer2KHR"); + table->vkCmdCopyBufferToImage2KHR = (PFN_vkCmdCopyBufferToImage2KHR)load(context, "vkCmdCopyBufferToImage2KHR"); + table->vkCmdCopyImage2KHR = (PFN_vkCmdCopyImage2KHR)load(context, "vkCmdCopyImage2KHR"); + table->vkCmdCopyImageToBuffer2KHR = (PFN_vkCmdCopyImageToBuffer2KHR)load(context, "vkCmdCopyImageToBuffer2KHR"); + table->vkCmdResolveImage2KHR = (PFN_vkCmdResolveImage2KHR)load(context, "vkCmdResolveImage2KHR"); +#endif /* defined(VK_KHR_copy_commands2) */ +#if defined(VK_KHR_create_renderpass2) + table->vkCmdBeginRenderPass2KHR = (PFN_vkCmdBeginRenderPass2KHR)load(context, "vkCmdBeginRenderPass2KHR"); + table->vkCmdEndRenderPass2KHR = (PFN_vkCmdEndRenderPass2KHR)load(context, "vkCmdEndRenderPass2KHR"); + table->vkCmdNextSubpass2KHR = (PFN_vkCmdNextSubpass2KHR)load(context, "vkCmdNextSubpass2KHR"); + table->vkCreateRenderPass2KHR = (PFN_vkCreateRenderPass2KHR)load(context, "vkCreateRenderPass2KHR"); +#endif /* defined(VK_KHR_create_renderpass2) */ +#if defined(VK_KHR_deferred_host_operations) + table->vkCreateDeferredOperationKHR = (PFN_vkCreateDeferredOperationKHR)load(context, "vkCreateDeferredOperationKHR"); + table->vkDeferredOperationJoinKHR = (PFN_vkDeferredOperationJoinKHR)load(context, "vkDeferredOperationJoinKHR"); + table->vkDestroyDeferredOperationKHR = (PFN_vkDestroyDeferredOperationKHR)load(context, "vkDestroyDeferredOperationKHR"); + table->vkGetDeferredOperationMaxConcurrencyKHR = (PFN_vkGetDeferredOperationMaxConcurrencyKHR)load(context, "vkGetDeferredOperationMaxConcurrencyKHR"); + table->vkGetDeferredOperationResultKHR = (PFN_vkGetDeferredOperationResultKHR)load(context, "vkGetDeferredOperationResultKHR"); +#endif /* defined(VK_KHR_deferred_host_operations) */ +#if defined(VK_KHR_descriptor_update_template) + table->vkCreateDescriptorUpdateTemplateKHR = (PFN_vkCreateDescriptorUpdateTemplateKHR)load(context, "vkCreateDescriptorUpdateTemplateKHR"); + table->vkDestroyDescriptorUpdateTemplateKHR = (PFN_vkDestroyDescriptorUpdateTemplateKHR)load(context, "vkDestroyDescriptorUpdateTemplateKHR"); + table->vkUpdateDescriptorSetWithTemplateKHR = (PFN_vkUpdateDescriptorSetWithTemplateKHR)load(context, "vkUpdateDescriptorSetWithTemplateKHR"); +#endif /* defined(VK_KHR_descriptor_update_template) */ +#if defined(VK_KHR_device_group) + table->vkCmdDispatchBaseKHR = (PFN_vkCmdDispatchBaseKHR)load(context, "vkCmdDispatchBaseKHR"); + table->vkCmdSetDeviceMaskKHR = (PFN_vkCmdSetDeviceMaskKHR)load(context, "vkCmdSetDeviceMaskKHR"); + table->vkGetDeviceGroupPeerMemoryFeaturesKHR = (PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR)load(context, "vkGetDeviceGroupPeerMemoryFeaturesKHR"); +#endif /* defined(VK_KHR_device_group) */ +#if defined(VK_KHR_display_swapchain) + table->vkCreateSharedSwapchainsKHR = (PFN_vkCreateSharedSwapchainsKHR)load(context, "vkCreateSharedSwapchainsKHR"); +#endif /* defined(VK_KHR_display_swapchain) */ +#if defined(VK_KHR_draw_indirect_count) + table->vkCmdDrawIndexedIndirectCountKHR = (PFN_vkCmdDrawIndexedIndirectCountKHR)load(context, "vkCmdDrawIndexedIndirectCountKHR"); + table->vkCmdDrawIndirectCountKHR = (PFN_vkCmdDrawIndirectCountKHR)load(context, "vkCmdDrawIndirectCountKHR"); +#endif /* defined(VK_KHR_draw_indirect_count) */ +#if defined(VK_KHR_external_fence_fd) + table->vkGetFenceFdKHR = (PFN_vkGetFenceFdKHR)load(context, "vkGetFenceFdKHR"); + table->vkImportFenceFdKHR = (PFN_vkImportFenceFdKHR)load(context, "vkImportFenceFdKHR"); +#endif /* defined(VK_KHR_external_fence_fd) */ +#if defined(VK_KHR_external_fence_win32) + table->vkGetFenceWin32HandleKHR = (PFN_vkGetFenceWin32HandleKHR)load(context, "vkGetFenceWin32HandleKHR"); + table->vkImportFenceWin32HandleKHR = (PFN_vkImportFenceWin32HandleKHR)load(context, "vkImportFenceWin32HandleKHR"); +#endif /* defined(VK_KHR_external_fence_win32) */ +#if defined(VK_KHR_external_memory_fd) + table->vkGetMemoryFdKHR = (PFN_vkGetMemoryFdKHR)load(context, "vkGetMemoryFdKHR"); + table->vkGetMemoryFdPropertiesKHR = (PFN_vkGetMemoryFdPropertiesKHR)load(context, "vkGetMemoryFdPropertiesKHR"); +#endif /* defined(VK_KHR_external_memory_fd) */ +#if defined(VK_KHR_external_memory_win32) + table->vkGetMemoryWin32HandleKHR = (PFN_vkGetMemoryWin32HandleKHR)load(context, "vkGetMemoryWin32HandleKHR"); + table->vkGetMemoryWin32HandlePropertiesKHR = (PFN_vkGetMemoryWin32HandlePropertiesKHR)load(context, "vkGetMemoryWin32HandlePropertiesKHR"); +#endif /* defined(VK_KHR_external_memory_win32) */ +#if defined(VK_KHR_external_semaphore_fd) + table->vkGetSemaphoreFdKHR = (PFN_vkGetSemaphoreFdKHR)load(context, "vkGetSemaphoreFdKHR"); + table->vkImportSemaphoreFdKHR = (PFN_vkImportSemaphoreFdKHR)load(context, "vkImportSemaphoreFdKHR"); +#endif /* defined(VK_KHR_external_semaphore_fd) */ +#if defined(VK_KHR_external_semaphore_win32) + table->vkGetSemaphoreWin32HandleKHR = (PFN_vkGetSemaphoreWin32HandleKHR)load(context, "vkGetSemaphoreWin32HandleKHR"); + table->vkImportSemaphoreWin32HandleKHR = (PFN_vkImportSemaphoreWin32HandleKHR)load(context, "vkImportSemaphoreWin32HandleKHR"); +#endif /* defined(VK_KHR_external_semaphore_win32) */ +#if defined(VK_KHR_get_memory_requirements2) + table->vkGetBufferMemoryRequirements2KHR = (PFN_vkGetBufferMemoryRequirements2KHR)load(context, "vkGetBufferMemoryRequirements2KHR"); + table->vkGetImageMemoryRequirements2KHR = (PFN_vkGetImageMemoryRequirements2KHR)load(context, "vkGetImageMemoryRequirements2KHR"); + table->vkGetImageSparseMemoryRequirements2KHR = (PFN_vkGetImageSparseMemoryRequirements2KHR)load(context, "vkGetImageSparseMemoryRequirements2KHR"); +#endif /* defined(VK_KHR_get_memory_requirements2) */ +#if defined(VK_KHR_maintenance1) + table->vkTrimCommandPoolKHR = (PFN_vkTrimCommandPoolKHR)load(context, "vkTrimCommandPoolKHR"); +#endif /* defined(VK_KHR_maintenance1) */ +#if defined(VK_KHR_maintenance3) + table->vkGetDescriptorSetLayoutSupportKHR = (PFN_vkGetDescriptorSetLayoutSupportKHR)load(context, "vkGetDescriptorSetLayoutSupportKHR"); +#endif /* defined(VK_KHR_maintenance3) */ +#if defined(VK_KHR_performance_query) + table->vkAcquireProfilingLockKHR = (PFN_vkAcquireProfilingLockKHR)load(context, "vkAcquireProfilingLockKHR"); + table->vkReleaseProfilingLockKHR = (PFN_vkReleaseProfilingLockKHR)load(context, "vkReleaseProfilingLockKHR"); +#endif /* defined(VK_KHR_performance_query) */ +#if defined(VK_KHR_pipeline_executable_properties) + table->vkGetPipelineExecutableInternalRepresentationsKHR = (PFN_vkGetPipelineExecutableInternalRepresentationsKHR)load(context, "vkGetPipelineExecutableInternalRepresentationsKHR"); + table->vkGetPipelineExecutablePropertiesKHR = (PFN_vkGetPipelineExecutablePropertiesKHR)load(context, "vkGetPipelineExecutablePropertiesKHR"); + table->vkGetPipelineExecutableStatisticsKHR = (PFN_vkGetPipelineExecutableStatisticsKHR)load(context, "vkGetPipelineExecutableStatisticsKHR"); +#endif /* defined(VK_KHR_pipeline_executable_properties) */ +#if defined(VK_KHR_push_descriptor) + table->vkCmdPushDescriptorSetKHR = (PFN_vkCmdPushDescriptorSetKHR)load(context, "vkCmdPushDescriptorSetKHR"); +#endif /* defined(VK_KHR_push_descriptor) */ +#if defined(VK_KHR_ray_tracing) + table->vkBindAccelerationStructureMemoryKHR = (PFN_vkBindAccelerationStructureMemoryKHR)load(context, "vkBindAccelerationStructureMemoryKHR"); + table->vkBuildAccelerationStructureKHR = (PFN_vkBuildAccelerationStructureKHR)load(context, "vkBuildAccelerationStructureKHR"); + table->vkCmdBuildAccelerationStructureIndirectKHR = (PFN_vkCmdBuildAccelerationStructureIndirectKHR)load(context, "vkCmdBuildAccelerationStructureIndirectKHR"); + table->vkCmdBuildAccelerationStructureKHR = (PFN_vkCmdBuildAccelerationStructureKHR)load(context, "vkCmdBuildAccelerationStructureKHR"); + table->vkCmdCopyAccelerationStructureKHR = (PFN_vkCmdCopyAccelerationStructureKHR)load(context, "vkCmdCopyAccelerationStructureKHR"); + table->vkCmdCopyAccelerationStructureToMemoryKHR = (PFN_vkCmdCopyAccelerationStructureToMemoryKHR)load(context, "vkCmdCopyAccelerationStructureToMemoryKHR"); + table->vkCmdCopyMemoryToAccelerationStructureKHR = (PFN_vkCmdCopyMemoryToAccelerationStructureKHR)load(context, "vkCmdCopyMemoryToAccelerationStructureKHR"); + table->vkCmdTraceRaysIndirectKHR = (PFN_vkCmdTraceRaysIndirectKHR)load(context, "vkCmdTraceRaysIndirectKHR"); + table->vkCmdTraceRaysKHR = (PFN_vkCmdTraceRaysKHR)load(context, "vkCmdTraceRaysKHR"); + table->vkCmdWriteAccelerationStructuresPropertiesKHR = (PFN_vkCmdWriteAccelerationStructuresPropertiesKHR)load(context, "vkCmdWriteAccelerationStructuresPropertiesKHR"); + table->vkCopyAccelerationStructureKHR = (PFN_vkCopyAccelerationStructureKHR)load(context, "vkCopyAccelerationStructureKHR"); + table->vkCopyAccelerationStructureToMemoryKHR = (PFN_vkCopyAccelerationStructureToMemoryKHR)load(context, "vkCopyAccelerationStructureToMemoryKHR"); + table->vkCopyMemoryToAccelerationStructureKHR = (PFN_vkCopyMemoryToAccelerationStructureKHR)load(context, "vkCopyMemoryToAccelerationStructureKHR"); + table->vkCreateAccelerationStructureKHR = (PFN_vkCreateAccelerationStructureKHR)load(context, "vkCreateAccelerationStructureKHR"); + table->vkCreateRayTracingPipelinesKHR = (PFN_vkCreateRayTracingPipelinesKHR)load(context, "vkCreateRayTracingPipelinesKHR"); + table->vkDestroyAccelerationStructureKHR = (PFN_vkDestroyAccelerationStructureKHR)load(context, "vkDestroyAccelerationStructureKHR"); + table->vkGetAccelerationStructureDeviceAddressKHR = (PFN_vkGetAccelerationStructureDeviceAddressKHR)load(context, "vkGetAccelerationStructureDeviceAddressKHR"); + table->vkGetAccelerationStructureMemoryRequirementsKHR = (PFN_vkGetAccelerationStructureMemoryRequirementsKHR)load(context, "vkGetAccelerationStructureMemoryRequirementsKHR"); + table->vkGetDeviceAccelerationStructureCompatibilityKHR = (PFN_vkGetDeviceAccelerationStructureCompatibilityKHR)load(context, "vkGetDeviceAccelerationStructureCompatibilityKHR"); + table->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = (PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)load(context, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR"); + table->vkGetRayTracingShaderGroupHandlesKHR = (PFN_vkGetRayTracingShaderGroupHandlesKHR)load(context, "vkGetRayTracingShaderGroupHandlesKHR"); + table->vkWriteAccelerationStructuresPropertiesKHR = (PFN_vkWriteAccelerationStructuresPropertiesKHR)load(context, "vkWriteAccelerationStructuresPropertiesKHR"); +#endif /* defined(VK_KHR_ray_tracing) */ +#if defined(VK_KHR_sampler_ycbcr_conversion) + table->vkCreateSamplerYcbcrConversionKHR = (PFN_vkCreateSamplerYcbcrConversionKHR)load(context, "vkCreateSamplerYcbcrConversionKHR"); + table->vkDestroySamplerYcbcrConversionKHR = (PFN_vkDestroySamplerYcbcrConversionKHR)load(context, "vkDestroySamplerYcbcrConversionKHR"); +#endif /* defined(VK_KHR_sampler_ycbcr_conversion) */ +#if defined(VK_KHR_shared_presentable_image) + table->vkGetSwapchainStatusKHR = (PFN_vkGetSwapchainStatusKHR)load(context, "vkGetSwapchainStatusKHR"); +#endif /* defined(VK_KHR_shared_presentable_image) */ +#if defined(VK_KHR_swapchain) + table->vkAcquireNextImageKHR = (PFN_vkAcquireNextImageKHR)load(context, "vkAcquireNextImageKHR"); + table->vkCreateSwapchainKHR = (PFN_vkCreateSwapchainKHR)load(context, "vkCreateSwapchainKHR"); + table->vkDestroySwapchainKHR = (PFN_vkDestroySwapchainKHR)load(context, "vkDestroySwapchainKHR"); + table->vkGetSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR)load(context, "vkGetSwapchainImagesKHR"); + table->vkQueuePresentKHR = (PFN_vkQueuePresentKHR)load(context, "vkQueuePresentKHR"); +#endif /* defined(VK_KHR_swapchain) */ +#if defined(VK_KHR_timeline_semaphore) + table->vkGetSemaphoreCounterValueKHR = (PFN_vkGetSemaphoreCounterValueKHR)load(context, "vkGetSemaphoreCounterValueKHR"); + table->vkSignalSemaphoreKHR = (PFN_vkSignalSemaphoreKHR)load(context, "vkSignalSemaphoreKHR"); + table->vkWaitSemaphoresKHR = (PFN_vkWaitSemaphoresKHR)load(context, "vkWaitSemaphoresKHR"); +#endif /* defined(VK_KHR_timeline_semaphore) */ +#if defined(VK_NVX_image_view_handle) + table->vkGetImageViewAddressNVX = (PFN_vkGetImageViewAddressNVX)load(context, "vkGetImageViewAddressNVX"); + table->vkGetImageViewHandleNVX = (PFN_vkGetImageViewHandleNVX)load(context, "vkGetImageViewHandleNVX"); +#endif /* defined(VK_NVX_image_view_handle) */ +#if defined(VK_NV_clip_space_w_scaling) + table->vkCmdSetViewportWScalingNV = (PFN_vkCmdSetViewportWScalingNV)load(context, "vkCmdSetViewportWScalingNV"); +#endif /* defined(VK_NV_clip_space_w_scaling) */ +#if defined(VK_NV_device_diagnostic_checkpoints) + table->vkCmdSetCheckpointNV = (PFN_vkCmdSetCheckpointNV)load(context, "vkCmdSetCheckpointNV"); + table->vkGetQueueCheckpointDataNV = (PFN_vkGetQueueCheckpointDataNV)load(context, "vkGetQueueCheckpointDataNV"); +#endif /* defined(VK_NV_device_diagnostic_checkpoints) */ +#if defined(VK_NV_device_generated_commands) + table->vkCmdBindPipelineShaderGroupNV = (PFN_vkCmdBindPipelineShaderGroupNV)load(context, "vkCmdBindPipelineShaderGroupNV"); + table->vkCmdExecuteGeneratedCommandsNV = (PFN_vkCmdExecuteGeneratedCommandsNV)load(context, "vkCmdExecuteGeneratedCommandsNV"); + table->vkCmdPreprocessGeneratedCommandsNV = (PFN_vkCmdPreprocessGeneratedCommandsNV)load(context, "vkCmdPreprocessGeneratedCommandsNV"); + table->vkCreateIndirectCommandsLayoutNV = (PFN_vkCreateIndirectCommandsLayoutNV)load(context, "vkCreateIndirectCommandsLayoutNV"); + table->vkDestroyIndirectCommandsLayoutNV = (PFN_vkDestroyIndirectCommandsLayoutNV)load(context, "vkDestroyIndirectCommandsLayoutNV"); + table->vkGetGeneratedCommandsMemoryRequirementsNV = (PFN_vkGetGeneratedCommandsMemoryRequirementsNV)load(context, "vkGetGeneratedCommandsMemoryRequirementsNV"); +#endif /* defined(VK_NV_device_generated_commands) */ +#if defined(VK_NV_external_memory_win32) + table->vkGetMemoryWin32HandleNV = (PFN_vkGetMemoryWin32HandleNV)load(context, "vkGetMemoryWin32HandleNV"); +#endif /* defined(VK_NV_external_memory_win32) */ +#if defined(VK_NV_mesh_shader) + table->vkCmdDrawMeshTasksIndirectCountNV = (PFN_vkCmdDrawMeshTasksIndirectCountNV)load(context, "vkCmdDrawMeshTasksIndirectCountNV"); + table->vkCmdDrawMeshTasksIndirectNV = (PFN_vkCmdDrawMeshTasksIndirectNV)load(context, "vkCmdDrawMeshTasksIndirectNV"); + table->vkCmdDrawMeshTasksNV = (PFN_vkCmdDrawMeshTasksNV)load(context, "vkCmdDrawMeshTasksNV"); +#endif /* defined(VK_NV_mesh_shader) */ +#if defined(VK_NV_ray_tracing) + table->vkBindAccelerationStructureMemoryNV = (PFN_vkBindAccelerationStructureMemoryNV)load(context, "vkBindAccelerationStructureMemoryNV"); + table->vkCmdBuildAccelerationStructureNV = (PFN_vkCmdBuildAccelerationStructureNV)load(context, "vkCmdBuildAccelerationStructureNV"); + table->vkCmdCopyAccelerationStructureNV = (PFN_vkCmdCopyAccelerationStructureNV)load(context, "vkCmdCopyAccelerationStructureNV"); + table->vkCmdTraceRaysNV = (PFN_vkCmdTraceRaysNV)load(context, "vkCmdTraceRaysNV"); + table->vkCmdWriteAccelerationStructuresPropertiesNV = (PFN_vkCmdWriteAccelerationStructuresPropertiesNV)load(context, "vkCmdWriteAccelerationStructuresPropertiesNV"); + table->vkCompileDeferredNV = (PFN_vkCompileDeferredNV)load(context, "vkCompileDeferredNV"); + table->vkCreateAccelerationStructureNV = (PFN_vkCreateAccelerationStructureNV)load(context, "vkCreateAccelerationStructureNV"); + table->vkCreateRayTracingPipelinesNV = (PFN_vkCreateRayTracingPipelinesNV)load(context, "vkCreateRayTracingPipelinesNV"); + table->vkDestroyAccelerationStructureNV = (PFN_vkDestroyAccelerationStructureNV)load(context, "vkDestroyAccelerationStructureNV"); + table->vkGetAccelerationStructureHandleNV = (PFN_vkGetAccelerationStructureHandleNV)load(context, "vkGetAccelerationStructureHandleNV"); + table->vkGetAccelerationStructureMemoryRequirementsNV = (PFN_vkGetAccelerationStructureMemoryRequirementsNV)load(context, "vkGetAccelerationStructureMemoryRequirementsNV"); + table->vkGetRayTracingShaderGroupHandlesNV = (PFN_vkGetRayTracingShaderGroupHandlesNV)load(context, "vkGetRayTracingShaderGroupHandlesNV"); +#endif /* defined(VK_NV_ray_tracing) */ +#if defined(VK_NV_scissor_exclusive) + table->vkCmdSetExclusiveScissorNV = (PFN_vkCmdSetExclusiveScissorNV)load(context, "vkCmdSetExclusiveScissorNV"); +#endif /* defined(VK_NV_scissor_exclusive) */ +#if defined(VK_NV_shading_rate_image) + table->vkCmdBindShadingRateImageNV = (PFN_vkCmdBindShadingRateImageNV)load(context, "vkCmdBindShadingRateImageNV"); + table->vkCmdSetCoarseSampleOrderNV = (PFN_vkCmdSetCoarseSampleOrderNV)load(context, "vkCmdSetCoarseSampleOrderNV"); + table->vkCmdSetViewportShadingRatePaletteNV = (PFN_vkCmdSetViewportShadingRatePaletteNV)load(context, "vkCmdSetViewportShadingRatePaletteNV"); +#endif /* defined(VK_NV_shading_rate_image) */ +#if (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1)) + table->vkGetDeviceGroupSurfacePresentModes2EXT = (PFN_vkGetDeviceGroupSurfacePresentModes2EXT)load(context, "vkGetDeviceGroupSurfacePresentModes2EXT"); +#endif /* (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1)) */ +#if (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1)) || (defined(VK_KHR_push_descriptor) && defined(VK_KHR_descriptor_update_template)) + table->vkCmdPushDescriptorSetWithTemplateKHR = (PFN_vkCmdPushDescriptorSetWithTemplateKHR)load(context, "vkCmdPushDescriptorSetWithTemplateKHR"); +#endif /* (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1)) || (defined(VK_KHR_push_descriptor) && defined(VK_KHR_descriptor_update_template)) */ +#if (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) + table->vkGetDeviceGroupPresentCapabilitiesKHR = (PFN_vkGetDeviceGroupPresentCapabilitiesKHR)load(context, "vkGetDeviceGroupPresentCapabilitiesKHR"); + table->vkGetDeviceGroupSurfacePresentModesKHR = (PFN_vkGetDeviceGroupSurfacePresentModesKHR)load(context, "vkGetDeviceGroupSurfacePresentModesKHR"); +#endif /* (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) */ +#if (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) + table->vkAcquireNextImage2KHR = (PFN_vkAcquireNextImage2KHR)load(context, "vkAcquireNextImage2KHR"); +#endif /* (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) */ + /* VOLK_GENERATE_LOAD_DEVICE_TABLE */ +} + +#ifdef __GNUC__ +#ifdef VOLK_DEFAULT_VISIBILITY +# pragma GCC visibility push(default) +#else +# pragma GCC visibility push(hidden) +#endif +#endif + +/* VOLK_GENERATE_PROTOTYPES_C */ +#if defined(VK_VERSION_1_0) +PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers; +PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets; +PFN_vkAllocateMemory vkAllocateMemory; +PFN_vkBeginCommandBuffer vkBeginCommandBuffer; +PFN_vkBindBufferMemory vkBindBufferMemory; +PFN_vkBindImageMemory vkBindImageMemory; +PFN_vkCmdBeginQuery vkCmdBeginQuery; +PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass; +PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets; +PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer; +PFN_vkCmdBindPipeline vkCmdBindPipeline; +PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers; +PFN_vkCmdBlitImage vkCmdBlitImage; +PFN_vkCmdClearAttachments vkCmdClearAttachments; +PFN_vkCmdClearColorImage vkCmdClearColorImage; +PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage; +PFN_vkCmdCopyBuffer vkCmdCopyBuffer; +PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage; +PFN_vkCmdCopyImage vkCmdCopyImage; +PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer; +PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults; +PFN_vkCmdDispatch vkCmdDispatch; +PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect; +PFN_vkCmdDraw vkCmdDraw; +PFN_vkCmdDrawIndexed vkCmdDrawIndexed; +PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect; +PFN_vkCmdDrawIndirect vkCmdDrawIndirect; +PFN_vkCmdEndQuery vkCmdEndQuery; +PFN_vkCmdEndRenderPass vkCmdEndRenderPass; +PFN_vkCmdExecuteCommands vkCmdExecuteCommands; +PFN_vkCmdFillBuffer vkCmdFillBuffer; +PFN_vkCmdNextSubpass vkCmdNextSubpass; +PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier; +PFN_vkCmdPushConstants vkCmdPushConstants; +PFN_vkCmdResetEvent vkCmdResetEvent; +PFN_vkCmdResetQueryPool vkCmdResetQueryPool; +PFN_vkCmdResolveImage vkCmdResolveImage; +PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants; +PFN_vkCmdSetDepthBias vkCmdSetDepthBias; +PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds; +PFN_vkCmdSetEvent vkCmdSetEvent; +PFN_vkCmdSetLineWidth vkCmdSetLineWidth; +PFN_vkCmdSetScissor vkCmdSetScissor; +PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask; +PFN_vkCmdSetStencilReference vkCmdSetStencilReference; +PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask; +PFN_vkCmdSetViewport vkCmdSetViewport; +PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer; +PFN_vkCmdWaitEvents vkCmdWaitEvents; +PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp; +PFN_vkCreateBuffer vkCreateBuffer; +PFN_vkCreateBufferView vkCreateBufferView; +PFN_vkCreateCommandPool vkCreateCommandPool; +PFN_vkCreateComputePipelines vkCreateComputePipelines; +PFN_vkCreateDescriptorPool vkCreateDescriptorPool; +PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout; +PFN_vkCreateDevice vkCreateDevice; +PFN_vkCreateEvent vkCreateEvent; +PFN_vkCreateFence vkCreateFence; +PFN_vkCreateFramebuffer vkCreateFramebuffer; +PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines; +PFN_vkCreateImage vkCreateImage; +PFN_vkCreateImageView vkCreateImageView; +PFN_vkCreateInstance vkCreateInstance; +PFN_vkCreatePipelineCache vkCreatePipelineCache; +PFN_vkCreatePipelineLayout vkCreatePipelineLayout; +PFN_vkCreateQueryPool vkCreateQueryPool; +PFN_vkCreateRenderPass vkCreateRenderPass; +PFN_vkCreateSampler vkCreateSampler; +PFN_vkCreateSemaphore vkCreateSemaphore; +PFN_vkCreateShaderModule vkCreateShaderModule; +PFN_vkDestroyBuffer vkDestroyBuffer; +PFN_vkDestroyBufferView vkDestroyBufferView; +PFN_vkDestroyCommandPool vkDestroyCommandPool; +PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool; +PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout; +PFN_vkDestroyDevice vkDestroyDevice; +PFN_vkDestroyEvent vkDestroyEvent; +PFN_vkDestroyFence vkDestroyFence; +PFN_vkDestroyFramebuffer vkDestroyFramebuffer; +PFN_vkDestroyImage vkDestroyImage; +PFN_vkDestroyImageView vkDestroyImageView; +PFN_vkDestroyInstance vkDestroyInstance; +PFN_vkDestroyPipeline vkDestroyPipeline; +PFN_vkDestroyPipelineCache vkDestroyPipelineCache; +PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout; +PFN_vkDestroyQueryPool vkDestroyQueryPool; +PFN_vkDestroyRenderPass vkDestroyRenderPass; +PFN_vkDestroySampler vkDestroySampler; +PFN_vkDestroySemaphore vkDestroySemaphore; +PFN_vkDestroyShaderModule vkDestroyShaderModule; +PFN_vkDeviceWaitIdle vkDeviceWaitIdle; +PFN_vkEndCommandBuffer vkEndCommandBuffer; +PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties; +PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties; +PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties; +PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties; +PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices; +PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges; +PFN_vkFreeCommandBuffers vkFreeCommandBuffers; +PFN_vkFreeDescriptorSets vkFreeDescriptorSets; +PFN_vkFreeMemory vkFreeMemory; +PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements; +PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment; +PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr; +PFN_vkGetDeviceQueue vkGetDeviceQueue; +PFN_vkGetEventStatus vkGetEventStatus; +PFN_vkGetFenceStatus vkGetFenceStatus; +PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements; +PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements; +PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout; +PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr; +PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures; +PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties; +PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties; +PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties; +PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties; +PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties; +PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties; +PFN_vkGetPipelineCacheData vkGetPipelineCacheData; +PFN_vkGetQueryPoolResults vkGetQueryPoolResults; +PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity; +PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges; +PFN_vkMapMemory vkMapMemory; +PFN_vkMergePipelineCaches vkMergePipelineCaches; +PFN_vkQueueBindSparse vkQueueBindSparse; +PFN_vkQueueSubmit vkQueueSubmit; +PFN_vkQueueWaitIdle vkQueueWaitIdle; +PFN_vkResetCommandBuffer vkResetCommandBuffer; +PFN_vkResetCommandPool vkResetCommandPool; +PFN_vkResetDescriptorPool vkResetDescriptorPool; +PFN_vkResetEvent vkResetEvent; +PFN_vkResetFences vkResetFences; +PFN_vkSetEvent vkSetEvent; +PFN_vkUnmapMemory vkUnmapMemory; +PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets; +PFN_vkWaitForFences vkWaitForFences; +#endif /* defined(VK_VERSION_1_0) */ +#if defined(VK_VERSION_1_1) +PFN_vkBindBufferMemory2 vkBindBufferMemory2; +PFN_vkBindImageMemory2 vkBindImageMemory2; +PFN_vkCmdDispatchBase vkCmdDispatchBase; +PFN_vkCmdSetDeviceMask vkCmdSetDeviceMask; +PFN_vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate; +PFN_vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion; +PFN_vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate; +PFN_vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion; +PFN_vkEnumerateInstanceVersion vkEnumerateInstanceVersion; +PFN_vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups; +PFN_vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2; +PFN_vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport; +PFN_vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures; +PFN_vkGetDeviceQueue2 vkGetDeviceQueue2; +PFN_vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2; +PFN_vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2; +PFN_vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties; +PFN_vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties; +PFN_vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties; +PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2; +PFN_vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2; +PFN_vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2; +PFN_vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2; +PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2; +PFN_vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2; +PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2; +PFN_vkTrimCommandPool vkTrimCommandPool; +PFN_vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate; +#endif /* defined(VK_VERSION_1_1) */ +#if defined(VK_VERSION_1_2) +PFN_vkCmdBeginRenderPass2 vkCmdBeginRenderPass2; +PFN_vkCmdDrawIndexedIndirectCount vkCmdDrawIndexedIndirectCount; +PFN_vkCmdDrawIndirectCount vkCmdDrawIndirectCount; +PFN_vkCmdEndRenderPass2 vkCmdEndRenderPass2; +PFN_vkCmdNextSubpass2 vkCmdNextSubpass2; +PFN_vkCreateRenderPass2 vkCreateRenderPass2; +PFN_vkGetBufferDeviceAddress vkGetBufferDeviceAddress; +PFN_vkGetBufferOpaqueCaptureAddress vkGetBufferOpaqueCaptureAddress; +PFN_vkGetDeviceMemoryOpaqueCaptureAddress vkGetDeviceMemoryOpaqueCaptureAddress; +PFN_vkGetSemaphoreCounterValue vkGetSemaphoreCounterValue; +PFN_vkResetQueryPool vkResetQueryPool; +PFN_vkSignalSemaphore vkSignalSemaphore; +PFN_vkWaitSemaphores vkWaitSemaphores; +#endif /* defined(VK_VERSION_1_2) */ +#if defined(VK_AMD_buffer_marker) +PFN_vkCmdWriteBufferMarkerAMD vkCmdWriteBufferMarkerAMD; +#endif /* defined(VK_AMD_buffer_marker) */ +#if defined(VK_AMD_display_native_hdr) +PFN_vkSetLocalDimmingAMD vkSetLocalDimmingAMD; +#endif /* defined(VK_AMD_display_native_hdr) */ +#if defined(VK_AMD_draw_indirect_count) +PFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD; +PFN_vkCmdDrawIndirectCountAMD vkCmdDrawIndirectCountAMD; +#endif /* defined(VK_AMD_draw_indirect_count) */ +#if defined(VK_AMD_shader_info) +PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD; +#endif /* defined(VK_AMD_shader_info) */ +#if defined(VK_ANDROID_external_memory_android_hardware_buffer) +PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID; +PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID; +#endif /* defined(VK_ANDROID_external_memory_android_hardware_buffer) */ +#if defined(VK_EXT_acquire_xlib_display) +PFN_vkAcquireXlibDisplayEXT vkAcquireXlibDisplayEXT; +PFN_vkGetRandROutputDisplayEXT vkGetRandROutputDisplayEXT; +#endif /* defined(VK_EXT_acquire_xlib_display) */ +#if defined(VK_EXT_buffer_device_address) +PFN_vkGetBufferDeviceAddressEXT vkGetBufferDeviceAddressEXT; +#endif /* defined(VK_EXT_buffer_device_address) */ +#if defined(VK_EXT_calibrated_timestamps) +PFN_vkGetCalibratedTimestampsEXT vkGetCalibratedTimestampsEXT; +PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT vkGetPhysicalDeviceCalibrateableTimeDomainsEXT; +#endif /* defined(VK_EXT_calibrated_timestamps) */ +#if defined(VK_EXT_conditional_rendering) +PFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT; +PFN_vkCmdEndConditionalRenderingEXT vkCmdEndConditionalRenderingEXT; +#endif /* defined(VK_EXT_conditional_rendering) */ +#if defined(VK_EXT_debug_marker) +PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT; +PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT; +PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT; +PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT; +PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT; +#endif /* defined(VK_EXT_debug_marker) */ +#if defined(VK_EXT_debug_report) +PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT; +PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT; +PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT; +#endif /* defined(VK_EXT_debug_report) */ +#if defined(VK_EXT_debug_utils) +PFN_vkCmdBeginDebugUtilsLabelEXT vkCmdBeginDebugUtilsLabelEXT; +PFN_vkCmdEndDebugUtilsLabelEXT vkCmdEndDebugUtilsLabelEXT; +PFN_vkCmdInsertDebugUtilsLabelEXT vkCmdInsertDebugUtilsLabelEXT; +PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT; +PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT; +PFN_vkQueueBeginDebugUtilsLabelEXT vkQueueBeginDebugUtilsLabelEXT; +PFN_vkQueueEndDebugUtilsLabelEXT vkQueueEndDebugUtilsLabelEXT; +PFN_vkQueueInsertDebugUtilsLabelEXT vkQueueInsertDebugUtilsLabelEXT; +PFN_vkSetDebugUtilsObjectNameEXT vkSetDebugUtilsObjectNameEXT; +PFN_vkSetDebugUtilsObjectTagEXT vkSetDebugUtilsObjectTagEXT; +PFN_vkSubmitDebugUtilsMessageEXT vkSubmitDebugUtilsMessageEXT; +#endif /* defined(VK_EXT_debug_utils) */ +#if defined(VK_EXT_direct_mode_display) +PFN_vkReleaseDisplayEXT vkReleaseDisplayEXT; +#endif /* defined(VK_EXT_direct_mode_display) */ +#if defined(VK_EXT_directfb_surface) +PFN_vkCreateDirectFBSurfaceEXT vkCreateDirectFBSurfaceEXT; +PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT vkGetPhysicalDeviceDirectFBPresentationSupportEXT; +#endif /* defined(VK_EXT_directfb_surface) */ +#if defined(VK_EXT_discard_rectangles) +PFN_vkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXT; +#endif /* defined(VK_EXT_discard_rectangles) */ +#if defined(VK_EXT_display_control) +PFN_vkDisplayPowerControlEXT vkDisplayPowerControlEXT; +PFN_vkGetSwapchainCounterEXT vkGetSwapchainCounterEXT; +PFN_vkRegisterDeviceEventEXT vkRegisterDeviceEventEXT; +PFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT; +#endif /* defined(VK_EXT_display_control) */ +#if defined(VK_EXT_display_surface_counter) +PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT vkGetPhysicalDeviceSurfaceCapabilities2EXT; +#endif /* defined(VK_EXT_display_surface_counter) */ +#if defined(VK_EXT_extended_dynamic_state) +PFN_vkCmdBindVertexBuffers2EXT vkCmdBindVertexBuffers2EXT; +PFN_vkCmdSetCullModeEXT vkCmdSetCullModeEXT; +PFN_vkCmdSetDepthBoundsTestEnableEXT vkCmdSetDepthBoundsTestEnableEXT; +PFN_vkCmdSetDepthCompareOpEXT vkCmdSetDepthCompareOpEXT; +PFN_vkCmdSetDepthTestEnableEXT vkCmdSetDepthTestEnableEXT; +PFN_vkCmdSetDepthWriteEnableEXT vkCmdSetDepthWriteEnableEXT; +PFN_vkCmdSetFrontFaceEXT vkCmdSetFrontFaceEXT; +PFN_vkCmdSetPrimitiveTopologyEXT vkCmdSetPrimitiveTopologyEXT; +PFN_vkCmdSetScissorWithCountEXT vkCmdSetScissorWithCountEXT; +PFN_vkCmdSetStencilOpEXT vkCmdSetStencilOpEXT; +PFN_vkCmdSetStencilTestEnableEXT vkCmdSetStencilTestEnableEXT; +PFN_vkCmdSetViewportWithCountEXT vkCmdSetViewportWithCountEXT; +#endif /* defined(VK_EXT_extended_dynamic_state) */ +#if defined(VK_EXT_external_memory_host) +PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT; +#endif /* defined(VK_EXT_external_memory_host) */ +#if defined(VK_EXT_full_screen_exclusive) +PFN_vkAcquireFullScreenExclusiveModeEXT vkAcquireFullScreenExclusiveModeEXT; +PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT vkGetPhysicalDeviceSurfacePresentModes2EXT; +PFN_vkReleaseFullScreenExclusiveModeEXT vkReleaseFullScreenExclusiveModeEXT; +#endif /* defined(VK_EXT_full_screen_exclusive) */ +#if defined(VK_EXT_hdr_metadata) +PFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT; +#endif /* defined(VK_EXT_hdr_metadata) */ +#if defined(VK_EXT_headless_surface) +PFN_vkCreateHeadlessSurfaceEXT vkCreateHeadlessSurfaceEXT; +#endif /* defined(VK_EXT_headless_surface) */ +#if defined(VK_EXT_host_query_reset) +PFN_vkResetQueryPoolEXT vkResetQueryPoolEXT; +#endif /* defined(VK_EXT_host_query_reset) */ +#if defined(VK_EXT_image_drm_format_modifier) +PFN_vkGetImageDrmFormatModifierPropertiesEXT vkGetImageDrmFormatModifierPropertiesEXT; +#endif /* defined(VK_EXT_image_drm_format_modifier) */ +#if defined(VK_EXT_line_rasterization) +PFN_vkCmdSetLineStippleEXT vkCmdSetLineStippleEXT; +#endif /* defined(VK_EXT_line_rasterization) */ +#if defined(VK_EXT_metal_surface) +PFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT; +#endif /* defined(VK_EXT_metal_surface) */ +#if defined(VK_EXT_private_data) +PFN_vkCreatePrivateDataSlotEXT vkCreatePrivateDataSlotEXT; +PFN_vkDestroyPrivateDataSlotEXT vkDestroyPrivateDataSlotEXT; +PFN_vkGetPrivateDataEXT vkGetPrivateDataEXT; +PFN_vkSetPrivateDataEXT vkSetPrivateDataEXT; +#endif /* defined(VK_EXT_private_data) */ +#if defined(VK_EXT_sample_locations) +PFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT; +PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT vkGetPhysicalDeviceMultisamplePropertiesEXT; +#endif /* defined(VK_EXT_sample_locations) */ +#if defined(VK_EXT_tooling_info) +PFN_vkGetPhysicalDeviceToolPropertiesEXT vkGetPhysicalDeviceToolPropertiesEXT; +#endif /* defined(VK_EXT_tooling_info) */ +#if defined(VK_EXT_transform_feedback) +PFN_vkCmdBeginQueryIndexedEXT vkCmdBeginQueryIndexedEXT; +PFN_vkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXT; +PFN_vkCmdBindTransformFeedbackBuffersEXT vkCmdBindTransformFeedbackBuffersEXT; +PFN_vkCmdDrawIndirectByteCountEXT vkCmdDrawIndirectByteCountEXT; +PFN_vkCmdEndQueryIndexedEXT vkCmdEndQueryIndexedEXT; +PFN_vkCmdEndTransformFeedbackEXT vkCmdEndTransformFeedbackEXT; +#endif /* defined(VK_EXT_transform_feedback) */ +#if defined(VK_EXT_validation_cache) +PFN_vkCreateValidationCacheEXT vkCreateValidationCacheEXT; +PFN_vkDestroyValidationCacheEXT vkDestroyValidationCacheEXT; +PFN_vkGetValidationCacheDataEXT vkGetValidationCacheDataEXT; +PFN_vkMergeValidationCachesEXT vkMergeValidationCachesEXT; +#endif /* defined(VK_EXT_validation_cache) */ +#if defined(VK_FUCHSIA_imagepipe_surface) +PFN_vkCreateImagePipeSurfaceFUCHSIA vkCreateImagePipeSurfaceFUCHSIA; +#endif /* defined(VK_FUCHSIA_imagepipe_surface) */ +#if defined(VK_GGP_stream_descriptor_surface) +PFN_vkCreateStreamDescriptorSurfaceGGP vkCreateStreamDescriptorSurfaceGGP; +#endif /* defined(VK_GGP_stream_descriptor_surface) */ +#if defined(VK_GOOGLE_display_timing) +PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE; +PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE; +#endif /* defined(VK_GOOGLE_display_timing) */ +#if defined(VK_INTEL_performance_query) +PFN_vkAcquirePerformanceConfigurationINTEL vkAcquirePerformanceConfigurationINTEL; +PFN_vkCmdSetPerformanceMarkerINTEL vkCmdSetPerformanceMarkerINTEL; +PFN_vkCmdSetPerformanceOverrideINTEL vkCmdSetPerformanceOverrideINTEL; +PFN_vkCmdSetPerformanceStreamMarkerINTEL vkCmdSetPerformanceStreamMarkerINTEL; +PFN_vkGetPerformanceParameterINTEL vkGetPerformanceParameterINTEL; +PFN_vkInitializePerformanceApiINTEL vkInitializePerformanceApiINTEL; +PFN_vkQueueSetPerformanceConfigurationINTEL vkQueueSetPerformanceConfigurationINTEL; +PFN_vkReleasePerformanceConfigurationINTEL vkReleasePerformanceConfigurationINTEL; +PFN_vkUninitializePerformanceApiINTEL vkUninitializePerformanceApiINTEL; +#endif /* defined(VK_INTEL_performance_query) */ +#if defined(VK_KHR_android_surface) +PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR; +#endif /* defined(VK_KHR_android_surface) */ +#if defined(VK_KHR_bind_memory2) +PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR; +PFN_vkBindImageMemory2KHR vkBindImageMemory2KHR; +#endif /* defined(VK_KHR_bind_memory2) */ +#if defined(VK_KHR_buffer_device_address) +PFN_vkGetBufferDeviceAddressKHR vkGetBufferDeviceAddressKHR; +PFN_vkGetBufferOpaqueCaptureAddressKHR vkGetBufferOpaqueCaptureAddressKHR; +PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR vkGetDeviceMemoryOpaqueCaptureAddressKHR; +#endif /* defined(VK_KHR_buffer_device_address) */ +#if defined(VK_KHR_copy_commands2) +PFN_vkCmdBlitImage2KHR vkCmdBlitImage2KHR; +PFN_vkCmdCopyBuffer2KHR vkCmdCopyBuffer2KHR; +PFN_vkCmdCopyBufferToImage2KHR vkCmdCopyBufferToImage2KHR; +PFN_vkCmdCopyImage2KHR vkCmdCopyImage2KHR; +PFN_vkCmdCopyImageToBuffer2KHR vkCmdCopyImageToBuffer2KHR; +PFN_vkCmdResolveImage2KHR vkCmdResolveImage2KHR; +#endif /* defined(VK_KHR_copy_commands2) */ +#if defined(VK_KHR_create_renderpass2) +PFN_vkCmdBeginRenderPass2KHR vkCmdBeginRenderPass2KHR; +PFN_vkCmdEndRenderPass2KHR vkCmdEndRenderPass2KHR; +PFN_vkCmdNextSubpass2KHR vkCmdNextSubpass2KHR; +PFN_vkCreateRenderPass2KHR vkCreateRenderPass2KHR; +#endif /* defined(VK_KHR_create_renderpass2) */ +#if defined(VK_KHR_deferred_host_operations) +PFN_vkCreateDeferredOperationKHR vkCreateDeferredOperationKHR; +PFN_vkDeferredOperationJoinKHR vkDeferredOperationJoinKHR; +PFN_vkDestroyDeferredOperationKHR vkDestroyDeferredOperationKHR; +PFN_vkGetDeferredOperationMaxConcurrencyKHR vkGetDeferredOperationMaxConcurrencyKHR; +PFN_vkGetDeferredOperationResultKHR vkGetDeferredOperationResultKHR; +#endif /* defined(VK_KHR_deferred_host_operations) */ +#if defined(VK_KHR_descriptor_update_template) +PFN_vkCreateDescriptorUpdateTemplateKHR vkCreateDescriptorUpdateTemplateKHR; +PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR; +PFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR; +#endif /* defined(VK_KHR_descriptor_update_template) */ +#if defined(VK_KHR_device_group) +PFN_vkCmdDispatchBaseKHR vkCmdDispatchBaseKHR; +PFN_vkCmdSetDeviceMaskKHR vkCmdSetDeviceMaskKHR; +PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR vkGetDeviceGroupPeerMemoryFeaturesKHR; +#endif /* defined(VK_KHR_device_group) */ +#if defined(VK_KHR_device_group_creation) +PFN_vkEnumeratePhysicalDeviceGroupsKHR vkEnumeratePhysicalDeviceGroupsKHR; +#endif /* defined(VK_KHR_device_group_creation) */ +#if defined(VK_KHR_display) +PFN_vkCreateDisplayModeKHR vkCreateDisplayModeKHR; +PFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR; +PFN_vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR; +PFN_vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR; +PFN_vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR; +PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR; +PFN_vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR; +#endif /* defined(VK_KHR_display) */ +#if defined(VK_KHR_display_swapchain) +PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR; +#endif /* defined(VK_KHR_display_swapchain) */ +#if defined(VK_KHR_draw_indirect_count) +PFN_vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR; +PFN_vkCmdDrawIndirectCountKHR vkCmdDrawIndirectCountKHR; +#endif /* defined(VK_KHR_draw_indirect_count) */ +#if defined(VK_KHR_external_fence_capabilities) +PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR vkGetPhysicalDeviceExternalFencePropertiesKHR; +#endif /* defined(VK_KHR_external_fence_capabilities) */ +#if defined(VK_KHR_external_fence_fd) +PFN_vkGetFenceFdKHR vkGetFenceFdKHR; +PFN_vkImportFenceFdKHR vkImportFenceFdKHR; +#endif /* defined(VK_KHR_external_fence_fd) */ +#if defined(VK_KHR_external_fence_win32) +PFN_vkGetFenceWin32HandleKHR vkGetFenceWin32HandleKHR; +PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR; +#endif /* defined(VK_KHR_external_fence_win32) */ +#if defined(VK_KHR_external_memory_capabilities) +PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR vkGetPhysicalDeviceExternalBufferPropertiesKHR; +#endif /* defined(VK_KHR_external_memory_capabilities) */ +#if defined(VK_KHR_external_memory_fd) +PFN_vkGetMemoryFdKHR vkGetMemoryFdKHR; +PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR; +#endif /* defined(VK_KHR_external_memory_fd) */ +#if defined(VK_KHR_external_memory_win32) +PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR; +PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR; +#endif /* defined(VK_KHR_external_memory_win32) */ +#if defined(VK_KHR_external_semaphore_capabilities) +PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR vkGetPhysicalDeviceExternalSemaphorePropertiesKHR; +#endif /* defined(VK_KHR_external_semaphore_capabilities) */ +#if defined(VK_KHR_external_semaphore_fd) +PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR; +PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR; +#endif /* defined(VK_KHR_external_semaphore_fd) */ +#if defined(VK_KHR_external_semaphore_win32) +PFN_vkGetSemaphoreWin32HandleKHR vkGetSemaphoreWin32HandleKHR; +PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR; +#endif /* defined(VK_KHR_external_semaphore_win32) */ +#if defined(VK_KHR_get_display_properties2) +PFN_vkGetDisplayModeProperties2KHR vkGetDisplayModeProperties2KHR; +PFN_vkGetDisplayPlaneCapabilities2KHR vkGetDisplayPlaneCapabilities2KHR; +PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR vkGetPhysicalDeviceDisplayPlaneProperties2KHR; +PFN_vkGetPhysicalDeviceDisplayProperties2KHR vkGetPhysicalDeviceDisplayProperties2KHR; +#endif /* defined(VK_KHR_get_display_properties2) */ +#if defined(VK_KHR_get_memory_requirements2) +PFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR; +PFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR; +PFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR; +#endif /* defined(VK_KHR_get_memory_requirements2) */ +#if defined(VK_KHR_get_physical_device_properties2) +PFN_vkGetPhysicalDeviceFeatures2KHR vkGetPhysicalDeviceFeatures2KHR; +PFN_vkGetPhysicalDeviceFormatProperties2KHR vkGetPhysicalDeviceFormatProperties2KHR; +PFN_vkGetPhysicalDeviceImageFormatProperties2KHR vkGetPhysicalDeviceImageFormatProperties2KHR; +PFN_vkGetPhysicalDeviceMemoryProperties2KHR vkGetPhysicalDeviceMemoryProperties2KHR; +PFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR; +PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR vkGetPhysicalDeviceQueueFamilyProperties2KHR; +PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR vkGetPhysicalDeviceSparseImageFormatProperties2KHR; +#endif /* defined(VK_KHR_get_physical_device_properties2) */ +#if defined(VK_KHR_get_surface_capabilities2) +PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR vkGetPhysicalDeviceSurfaceCapabilities2KHR; +PFN_vkGetPhysicalDeviceSurfaceFormats2KHR vkGetPhysicalDeviceSurfaceFormats2KHR; +#endif /* defined(VK_KHR_get_surface_capabilities2) */ +#if defined(VK_KHR_maintenance1) +PFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR; +#endif /* defined(VK_KHR_maintenance1) */ +#if defined(VK_KHR_maintenance3) +PFN_vkGetDescriptorSetLayoutSupportKHR vkGetDescriptorSetLayoutSupportKHR; +#endif /* defined(VK_KHR_maintenance3) */ +#if defined(VK_KHR_performance_query) +PFN_vkAcquireProfilingLockKHR vkAcquireProfilingLockKHR; +PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR; +PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR; +PFN_vkReleaseProfilingLockKHR vkReleaseProfilingLockKHR; +#endif /* defined(VK_KHR_performance_query) */ +#if defined(VK_KHR_pipeline_executable_properties) +PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInternalRepresentationsKHR; +PFN_vkGetPipelineExecutablePropertiesKHR vkGetPipelineExecutablePropertiesKHR; +PFN_vkGetPipelineExecutableStatisticsKHR vkGetPipelineExecutableStatisticsKHR; +#endif /* defined(VK_KHR_pipeline_executable_properties) */ +#if defined(VK_KHR_push_descriptor) +PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR; +#endif /* defined(VK_KHR_push_descriptor) */ +#if defined(VK_KHR_ray_tracing) +PFN_vkBindAccelerationStructureMemoryKHR vkBindAccelerationStructureMemoryKHR; +PFN_vkBuildAccelerationStructureKHR vkBuildAccelerationStructureKHR; +PFN_vkCmdBuildAccelerationStructureIndirectKHR vkCmdBuildAccelerationStructureIndirectKHR; +PFN_vkCmdBuildAccelerationStructureKHR vkCmdBuildAccelerationStructureKHR; +PFN_vkCmdCopyAccelerationStructureKHR vkCmdCopyAccelerationStructureKHR; +PFN_vkCmdCopyAccelerationStructureToMemoryKHR vkCmdCopyAccelerationStructureToMemoryKHR; +PFN_vkCmdCopyMemoryToAccelerationStructureKHR vkCmdCopyMemoryToAccelerationStructureKHR; +PFN_vkCmdTraceRaysIndirectKHR vkCmdTraceRaysIndirectKHR; +PFN_vkCmdTraceRaysKHR vkCmdTraceRaysKHR; +PFN_vkCmdWriteAccelerationStructuresPropertiesKHR vkCmdWriteAccelerationStructuresPropertiesKHR; +PFN_vkCopyAccelerationStructureKHR vkCopyAccelerationStructureKHR; +PFN_vkCopyAccelerationStructureToMemoryKHR vkCopyAccelerationStructureToMemoryKHR; +PFN_vkCopyMemoryToAccelerationStructureKHR vkCopyMemoryToAccelerationStructureKHR; +PFN_vkCreateAccelerationStructureKHR vkCreateAccelerationStructureKHR; +PFN_vkCreateRayTracingPipelinesKHR vkCreateRayTracingPipelinesKHR; +PFN_vkDestroyAccelerationStructureKHR vkDestroyAccelerationStructureKHR; +PFN_vkGetAccelerationStructureDeviceAddressKHR vkGetAccelerationStructureDeviceAddressKHR; +PFN_vkGetAccelerationStructureMemoryRequirementsKHR vkGetAccelerationStructureMemoryRequirementsKHR; +PFN_vkGetDeviceAccelerationStructureCompatibilityKHR vkGetDeviceAccelerationStructureCompatibilityKHR; +PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR vkGetRayTracingCaptureReplayShaderGroupHandlesKHR; +PFN_vkGetRayTracingShaderGroupHandlesKHR vkGetRayTracingShaderGroupHandlesKHR; +PFN_vkWriteAccelerationStructuresPropertiesKHR vkWriteAccelerationStructuresPropertiesKHR; +#endif /* defined(VK_KHR_ray_tracing) */ +#if defined(VK_KHR_sampler_ycbcr_conversion) +PFN_vkCreateSamplerYcbcrConversionKHR vkCreateSamplerYcbcrConversionKHR; +PFN_vkDestroySamplerYcbcrConversionKHR vkDestroySamplerYcbcrConversionKHR; +#endif /* defined(VK_KHR_sampler_ycbcr_conversion) */ +#if defined(VK_KHR_shared_presentable_image) +PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR; +#endif /* defined(VK_KHR_shared_presentable_image) */ +#if defined(VK_KHR_surface) +PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR; +PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR; +PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR; +PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR; +PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR; +#endif /* defined(VK_KHR_surface) */ +#if defined(VK_KHR_swapchain) +PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR; +PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR; +PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR; +PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR; +PFN_vkQueuePresentKHR vkQueuePresentKHR; +#endif /* defined(VK_KHR_swapchain) */ +#if defined(VK_KHR_timeline_semaphore) +PFN_vkGetSemaphoreCounterValueKHR vkGetSemaphoreCounterValueKHR; +PFN_vkSignalSemaphoreKHR vkSignalSemaphoreKHR; +PFN_vkWaitSemaphoresKHR vkWaitSemaphoresKHR; +#endif /* defined(VK_KHR_timeline_semaphore) */ +#if defined(VK_KHR_wayland_surface) +PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR; +PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR; +#endif /* defined(VK_KHR_wayland_surface) */ +#if defined(VK_KHR_win32_surface) +PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR; +PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR; +#endif /* defined(VK_KHR_win32_surface) */ +#if defined(VK_KHR_xcb_surface) +PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR; +PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR; +#endif /* defined(VK_KHR_xcb_surface) */ +#if defined(VK_KHR_xlib_surface) +PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR; +PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR; +#endif /* defined(VK_KHR_xlib_surface) */ +#if defined(VK_MVK_ios_surface) +PFN_vkCreateIOSSurfaceMVK vkCreateIOSSurfaceMVK; +#endif /* defined(VK_MVK_ios_surface) */ +#if defined(VK_MVK_macos_surface) +PFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK; +#endif /* defined(VK_MVK_macos_surface) */ +#if defined(VK_NN_vi_surface) +PFN_vkCreateViSurfaceNN vkCreateViSurfaceNN; +#endif /* defined(VK_NN_vi_surface) */ +#if defined(VK_NVX_image_view_handle) +PFN_vkGetImageViewAddressNVX vkGetImageViewAddressNVX; +PFN_vkGetImageViewHandleNVX vkGetImageViewHandleNVX; +#endif /* defined(VK_NVX_image_view_handle) */ +#if defined(VK_NV_clip_space_w_scaling) +PFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV; +#endif /* defined(VK_NV_clip_space_w_scaling) */ +#if defined(VK_NV_cooperative_matrix) +PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV vkGetPhysicalDeviceCooperativeMatrixPropertiesNV; +#endif /* defined(VK_NV_cooperative_matrix) */ +#if defined(VK_NV_coverage_reduction_mode) +PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV; +#endif /* defined(VK_NV_coverage_reduction_mode) */ +#if defined(VK_NV_device_diagnostic_checkpoints) +PFN_vkCmdSetCheckpointNV vkCmdSetCheckpointNV; +PFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV; +#endif /* defined(VK_NV_device_diagnostic_checkpoints) */ +#if defined(VK_NV_device_generated_commands) +PFN_vkCmdBindPipelineShaderGroupNV vkCmdBindPipelineShaderGroupNV; +PFN_vkCmdExecuteGeneratedCommandsNV vkCmdExecuteGeneratedCommandsNV; +PFN_vkCmdPreprocessGeneratedCommandsNV vkCmdPreprocessGeneratedCommandsNV; +PFN_vkCreateIndirectCommandsLayoutNV vkCreateIndirectCommandsLayoutNV; +PFN_vkDestroyIndirectCommandsLayoutNV vkDestroyIndirectCommandsLayoutNV; +PFN_vkGetGeneratedCommandsMemoryRequirementsNV vkGetGeneratedCommandsMemoryRequirementsNV; +#endif /* defined(VK_NV_device_generated_commands) */ +#if defined(VK_NV_external_memory_capabilities) +PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV; +#endif /* defined(VK_NV_external_memory_capabilities) */ +#if defined(VK_NV_external_memory_win32) +PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV; +#endif /* defined(VK_NV_external_memory_win32) */ +#if defined(VK_NV_mesh_shader) +PFN_vkCmdDrawMeshTasksIndirectCountNV vkCmdDrawMeshTasksIndirectCountNV; +PFN_vkCmdDrawMeshTasksIndirectNV vkCmdDrawMeshTasksIndirectNV; +PFN_vkCmdDrawMeshTasksNV vkCmdDrawMeshTasksNV; +#endif /* defined(VK_NV_mesh_shader) */ +#if defined(VK_NV_ray_tracing) +PFN_vkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNV; +PFN_vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV; +PFN_vkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNV; +PFN_vkCmdTraceRaysNV vkCmdTraceRaysNV; +PFN_vkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNV; +PFN_vkCompileDeferredNV vkCompileDeferredNV; +PFN_vkCreateAccelerationStructureNV vkCreateAccelerationStructureNV; +PFN_vkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNV; +PFN_vkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNV; +PFN_vkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNV; +PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV; +PFN_vkGetRayTracingShaderGroupHandlesNV vkGetRayTracingShaderGroupHandlesNV; +#endif /* defined(VK_NV_ray_tracing) */ +#if defined(VK_NV_scissor_exclusive) +PFN_vkCmdSetExclusiveScissorNV vkCmdSetExclusiveScissorNV; +#endif /* defined(VK_NV_scissor_exclusive) */ +#if defined(VK_NV_shading_rate_image) +PFN_vkCmdBindShadingRateImageNV vkCmdBindShadingRateImageNV; +PFN_vkCmdSetCoarseSampleOrderNV vkCmdSetCoarseSampleOrderNV; +PFN_vkCmdSetViewportShadingRatePaletteNV vkCmdSetViewportShadingRatePaletteNV; +#endif /* defined(VK_NV_shading_rate_image) */ +#if (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1)) +PFN_vkGetDeviceGroupSurfacePresentModes2EXT vkGetDeviceGroupSurfacePresentModes2EXT; +#endif /* (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1)) */ +#if (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1)) || (defined(VK_KHR_push_descriptor) && defined(VK_KHR_descriptor_update_template)) +PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR; +#endif /* (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1)) || (defined(VK_KHR_push_descriptor) && defined(VK_KHR_descriptor_update_template)) */ +#if (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) +PFN_vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR; +PFN_vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR; +PFN_vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR; +#endif /* (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) */ +#if (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) +PFN_vkAcquireNextImage2KHR vkAcquireNextImage2KHR; +#endif /* (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) */ +/* VOLK_GENERATE_PROTOTYPES_C */ + +#ifdef __GNUC__ +# pragma GCC visibility pop +#endif + +#ifdef __cplusplus +} +#endif +/* clang-format on */ diff --git a/libs/volk/volk.h b/libs/volk/volk.h new file mode 100644 index 0000000..adf2f0a --- /dev/null +++ b/libs/volk/volk.h @@ -0,0 +1,1273 @@ +/** + * volk + * + * Copyright (C) 2018-2019, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com) + * Report bugs and download new versions at https://github.com/zeux/volk + * + * This library is distributed under the MIT License. See notice at the end of this file. + */ +/* clang-format off */ +#ifndef VOLK_H_ +#define VOLK_H_ + +#if defined(VULKAN_H_) && !defined(VK_NO_PROTOTYPES) +# error To use volk, you need to define VK_NO_PROTOTYPES before including vulkan.h +#endif + +/* VOLK_GENERATE_VERSION_DEFINE */ +#define VOLK_HEADER_VERSION 155 +/* VOLK_GENERATE_VERSION_DEFINE */ + +#ifndef VK_NO_PROTOTYPES +# define VK_NO_PROTOTYPES +#endif + +#ifndef VULKAN_H_ +# ifdef VOLK_VULKAN_H_PATH +# include VOLK_VULKAN_H_PATH +# elif defined(VK_USE_PLATFORM_WIN32_KHR) +# include +# include + + /* When VK_USE_PLATFORM_WIN32_KHR is defined, instead of including vulkan.h directly, we include individual parts of the SDK + * This is necessary to avoid including which is very heavy - it takes 200ms to parse without WIN32_LEAN_AND_MEAN + * and 100ms to parse with it. vulkan_win32.h only needs a few symbols that are easy to redefine ourselves. + */ + typedef unsigned long DWORD; + typedef const wchar_t* LPCWSTR; + typedef void* HANDLE; + typedef struct HINSTANCE__* HINSTANCE; + typedef struct HWND__* HWND; + typedef struct HMONITOR__* HMONITOR; + typedef struct _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES; + +# include + +# ifdef VK_ENABLE_BETA_EXTENSIONS +# include +# endif +# else +# include +# endif +#endif + +/* Disable VK_NVX_image_view_handle because SDK 140 introduced a change that can't be used with prior versions */ +#if VK_HEADER_VERSION < 140 +# undef VK_NVX_image_view_handle +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +struct VolkDeviceTable; + +/** + * Initialize library by loading Vulkan loader; call this function before creating the Vulkan instance. + * + * Returns VK_SUCCESS on success and VK_ERROR_INITIALIZATION_FAILED otherwise. + */ +VkResult volkInitialize(void); + +/** + * Initialize library by providing a custom handler to load global symbols. + * + * This function can be used instead of volkInitialize. + * The handler function pointer will be asked to load global Vulkan symbols which require no instance + * (such as vkCreateInstance, vkEnumerateInstance* and vkEnumerateInstanceVersion if available). + */ +void volkInitializeCustom(PFN_vkGetInstanceProcAddr handler); + +/** + * Get Vulkan instance version supported by the Vulkan loader, or 0 if Vulkan isn't supported + * + * Returns 0 if volkInitialize wasn't called or failed. + */ +uint32_t volkGetInstanceVersion(void); + +/** + * Load global function pointers using application-created VkInstance; call this function after creating the Vulkan instance. + */ +void volkLoadInstance(VkInstance instance); + +/** + * Load global function pointers using application-created VkInstance; call this function after creating the Vulkan instance. + * Skips loading device-based function pointers, requires usage of volkLoadDevice afterwards. + */ +void volkLoadInstanceOnly(VkInstance instance); + +/** + * Load global function pointers using application-created VkDevice; call this function after creating the Vulkan device. + * + * Note: this is not suitable for applications that want to use multiple VkDevice objects concurrently. + */ +void volkLoadDevice(VkDevice device); + +/** + * Return last VkInstance for which global function pointers have been loaded via volkLoadInstance(), + * or VK_NULL_HANDLE if volkLoadInstance() has not been called. + */ +VkInstance volkGetLoadedInstance(void); + +/** + * Return last VkDevice for which global function pointers have been loaded via volkLoadDevice(), + * or VK_NULL_HANDLE if volkLoadDevice() has not been called. + */ +VkDevice volkGetLoadedDevice(void); + +/** + * Load function pointers using application-created VkDevice into a table. + * Application should use function pointers from that table instead of using global function pointers. + */ +void volkLoadDeviceTable(struct VolkDeviceTable* table, VkDevice device); + +/** + * Device-specific function pointer table + */ +struct VolkDeviceTable +{ + /* VOLK_GENERATE_DEVICE_TABLE */ +#if defined(VK_VERSION_1_0) + PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers; + PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets; + PFN_vkAllocateMemory vkAllocateMemory; + PFN_vkBeginCommandBuffer vkBeginCommandBuffer; + PFN_vkBindBufferMemory vkBindBufferMemory; + PFN_vkBindImageMemory vkBindImageMemory; + PFN_vkCmdBeginQuery vkCmdBeginQuery; + PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass; + PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets; + PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer; + PFN_vkCmdBindPipeline vkCmdBindPipeline; + PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers; + PFN_vkCmdBlitImage vkCmdBlitImage; + PFN_vkCmdClearAttachments vkCmdClearAttachments; + PFN_vkCmdClearColorImage vkCmdClearColorImage; + PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage; + PFN_vkCmdCopyBuffer vkCmdCopyBuffer; + PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage; + PFN_vkCmdCopyImage vkCmdCopyImage; + PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer; + PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults; + PFN_vkCmdDispatch vkCmdDispatch; + PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect; + PFN_vkCmdDraw vkCmdDraw; + PFN_vkCmdDrawIndexed vkCmdDrawIndexed; + PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect; + PFN_vkCmdDrawIndirect vkCmdDrawIndirect; + PFN_vkCmdEndQuery vkCmdEndQuery; + PFN_vkCmdEndRenderPass vkCmdEndRenderPass; + PFN_vkCmdExecuteCommands vkCmdExecuteCommands; + PFN_vkCmdFillBuffer vkCmdFillBuffer; + PFN_vkCmdNextSubpass vkCmdNextSubpass; + PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier; + PFN_vkCmdPushConstants vkCmdPushConstants; + PFN_vkCmdResetEvent vkCmdResetEvent; + PFN_vkCmdResetQueryPool vkCmdResetQueryPool; + PFN_vkCmdResolveImage vkCmdResolveImage; + PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants; + PFN_vkCmdSetDepthBias vkCmdSetDepthBias; + PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds; + PFN_vkCmdSetEvent vkCmdSetEvent; + PFN_vkCmdSetLineWidth vkCmdSetLineWidth; + PFN_vkCmdSetScissor vkCmdSetScissor; + PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask; + PFN_vkCmdSetStencilReference vkCmdSetStencilReference; + PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask; + PFN_vkCmdSetViewport vkCmdSetViewport; + PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer; + PFN_vkCmdWaitEvents vkCmdWaitEvents; + PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp; + PFN_vkCreateBuffer vkCreateBuffer; + PFN_vkCreateBufferView vkCreateBufferView; + PFN_vkCreateCommandPool vkCreateCommandPool; + PFN_vkCreateComputePipelines vkCreateComputePipelines; + PFN_vkCreateDescriptorPool vkCreateDescriptorPool; + PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout; + PFN_vkCreateEvent vkCreateEvent; + PFN_vkCreateFence vkCreateFence; + PFN_vkCreateFramebuffer vkCreateFramebuffer; + PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines; + PFN_vkCreateImage vkCreateImage; + PFN_vkCreateImageView vkCreateImageView; + PFN_vkCreatePipelineCache vkCreatePipelineCache; + PFN_vkCreatePipelineLayout vkCreatePipelineLayout; + PFN_vkCreateQueryPool vkCreateQueryPool; + PFN_vkCreateRenderPass vkCreateRenderPass; + PFN_vkCreateSampler vkCreateSampler; + PFN_vkCreateSemaphore vkCreateSemaphore; + PFN_vkCreateShaderModule vkCreateShaderModule; + PFN_vkDestroyBuffer vkDestroyBuffer; + PFN_vkDestroyBufferView vkDestroyBufferView; + PFN_vkDestroyCommandPool vkDestroyCommandPool; + PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool; + PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout; + PFN_vkDestroyDevice vkDestroyDevice; + PFN_vkDestroyEvent vkDestroyEvent; + PFN_vkDestroyFence vkDestroyFence; + PFN_vkDestroyFramebuffer vkDestroyFramebuffer; + PFN_vkDestroyImage vkDestroyImage; + PFN_vkDestroyImageView vkDestroyImageView; + PFN_vkDestroyPipeline vkDestroyPipeline; + PFN_vkDestroyPipelineCache vkDestroyPipelineCache; + PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout; + PFN_vkDestroyQueryPool vkDestroyQueryPool; + PFN_vkDestroyRenderPass vkDestroyRenderPass; + PFN_vkDestroySampler vkDestroySampler; + PFN_vkDestroySemaphore vkDestroySemaphore; + PFN_vkDestroyShaderModule vkDestroyShaderModule; + PFN_vkDeviceWaitIdle vkDeviceWaitIdle; + PFN_vkEndCommandBuffer vkEndCommandBuffer; + PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges; + PFN_vkFreeCommandBuffers vkFreeCommandBuffers; + PFN_vkFreeDescriptorSets vkFreeDescriptorSets; + PFN_vkFreeMemory vkFreeMemory; + PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements; + PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment; + PFN_vkGetDeviceQueue vkGetDeviceQueue; + PFN_vkGetEventStatus vkGetEventStatus; + PFN_vkGetFenceStatus vkGetFenceStatus; + PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements; + PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements; + PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout; + PFN_vkGetPipelineCacheData vkGetPipelineCacheData; + PFN_vkGetQueryPoolResults vkGetQueryPoolResults; + PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity; + PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges; + PFN_vkMapMemory vkMapMemory; + PFN_vkMergePipelineCaches vkMergePipelineCaches; + PFN_vkQueueBindSparse vkQueueBindSparse; + PFN_vkQueueSubmit vkQueueSubmit; + PFN_vkQueueWaitIdle vkQueueWaitIdle; + PFN_vkResetCommandBuffer vkResetCommandBuffer; + PFN_vkResetCommandPool vkResetCommandPool; + PFN_vkResetDescriptorPool vkResetDescriptorPool; + PFN_vkResetEvent vkResetEvent; + PFN_vkResetFences vkResetFences; + PFN_vkSetEvent vkSetEvent; + PFN_vkUnmapMemory vkUnmapMemory; + PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets; + PFN_vkWaitForFences vkWaitForFences; +#endif /* defined(VK_VERSION_1_0) */ +#if defined(VK_VERSION_1_1) + PFN_vkBindBufferMemory2 vkBindBufferMemory2; + PFN_vkBindImageMemory2 vkBindImageMemory2; + PFN_vkCmdDispatchBase vkCmdDispatchBase; + PFN_vkCmdSetDeviceMask vkCmdSetDeviceMask; + PFN_vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate; + PFN_vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion; + PFN_vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate; + PFN_vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion; + PFN_vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2; + PFN_vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport; + PFN_vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures; + PFN_vkGetDeviceQueue2 vkGetDeviceQueue2; + PFN_vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2; + PFN_vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2; + PFN_vkTrimCommandPool vkTrimCommandPool; + PFN_vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate; +#endif /* defined(VK_VERSION_1_1) */ +#if defined(VK_VERSION_1_2) + PFN_vkCmdBeginRenderPass2 vkCmdBeginRenderPass2; + PFN_vkCmdDrawIndexedIndirectCount vkCmdDrawIndexedIndirectCount; + PFN_vkCmdDrawIndirectCount vkCmdDrawIndirectCount; + PFN_vkCmdEndRenderPass2 vkCmdEndRenderPass2; + PFN_vkCmdNextSubpass2 vkCmdNextSubpass2; + PFN_vkCreateRenderPass2 vkCreateRenderPass2; + PFN_vkGetBufferDeviceAddress vkGetBufferDeviceAddress; + PFN_vkGetBufferOpaqueCaptureAddress vkGetBufferOpaqueCaptureAddress; + PFN_vkGetDeviceMemoryOpaqueCaptureAddress vkGetDeviceMemoryOpaqueCaptureAddress; + PFN_vkGetSemaphoreCounterValue vkGetSemaphoreCounterValue; + PFN_vkResetQueryPool vkResetQueryPool; + PFN_vkSignalSemaphore vkSignalSemaphore; + PFN_vkWaitSemaphores vkWaitSemaphores; +#endif /* defined(VK_VERSION_1_2) */ +#if defined(VK_AMD_buffer_marker) + PFN_vkCmdWriteBufferMarkerAMD vkCmdWriteBufferMarkerAMD; +#endif /* defined(VK_AMD_buffer_marker) */ +#if defined(VK_AMD_display_native_hdr) + PFN_vkSetLocalDimmingAMD vkSetLocalDimmingAMD; +#endif /* defined(VK_AMD_display_native_hdr) */ +#if defined(VK_AMD_draw_indirect_count) + PFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD; + PFN_vkCmdDrawIndirectCountAMD vkCmdDrawIndirectCountAMD; +#endif /* defined(VK_AMD_draw_indirect_count) */ +#if defined(VK_AMD_shader_info) + PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD; +#endif /* defined(VK_AMD_shader_info) */ +#if defined(VK_ANDROID_external_memory_android_hardware_buffer) + PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID; + PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID; +#endif /* defined(VK_ANDROID_external_memory_android_hardware_buffer) */ +#if defined(VK_EXT_buffer_device_address) + PFN_vkGetBufferDeviceAddressEXT vkGetBufferDeviceAddressEXT; +#endif /* defined(VK_EXT_buffer_device_address) */ +#if defined(VK_EXT_calibrated_timestamps) + PFN_vkGetCalibratedTimestampsEXT vkGetCalibratedTimestampsEXT; +#endif /* defined(VK_EXT_calibrated_timestamps) */ +#if defined(VK_EXT_conditional_rendering) + PFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT; + PFN_vkCmdEndConditionalRenderingEXT vkCmdEndConditionalRenderingEXT; +#endif /* defined(VK_EXT_conditional_rendering) */ +#if defined(VK_EXT_debug_marker) + PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT; + PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT; + PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT; + PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT; + PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT; +#endif /* defined(VK_EXT_debug_marker) */ +#if defined(VK_EXT_discard_rectangles) + PFN_vkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXT; +#endif /* defined(VK_EXT_discard_rectangles) */ +#if defined(VK_EXT_display_control) + PFN_vkDisplayPowerControlEXT vkDisplayPowerControlEXT; + PFN_vkGetSwapchainCounterEXT vkGetSwapchainCounterEXT; + PFN_vkRegisterDeviceEventEXT vkRegisterDeviceEventEXT; + PFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT; +#endif /* defined(VK_EXT_display_control) */ +#if defined(VK_EXT_extended_dynamic_state) + PFN_vkCmdBindVertexBuffers2EXT vkCmdBindVertexBuffers2EXT; + PFN_vkCmdSetCullModeEXT vkCmdSetCullModeEXT; + PFN_vkCmdSetDepthBoundsTestEnableEXT vkCmdSetDepthBoundsTestEnableEXT; + PFN_vkCmdSetDepthCompareOpEXT vkCmdSetDepthCompareOpEXT; + PFN_vkCmdSetDepthTestEnableEXT vkCmdSetDepthTestEnableEXT; + PFN_vkCmdSetDepthWriteEnableEXT vkCmdSetDepthWriteEnableEXT; + PFN_vkCmdSetFrontFaceEXT vkCmdSetFrontFaceEXT; + PFN_vkCmdSetPrimitiveTopologyEXT vkCmdSetPrimitiveTopologyEXT; + PFN_vkCmdSetScissorWithCountEXT vkCmdSetScissorWithCountEXT; + PFN_vkCmdSetStencilOpEXT vkCmdSetStencilOpEXT; + PFN_vkCmdSetStencilTestEnableEXT vkCmdSetStencilTestEnableEXT; + PFN_vkCmdSetViewportWithCountEXT vkCmdSetViewportWithCountEXT; +#endif /* defined(VK_EXT_extended_dynamic_state) */ +#if defined(VK_EXT_external_memory_host) + PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT; +#endif /* defined(VK_EXT_external_memory_host) */ +#if defined(VK_EXT_full_screen_exclusive) + PFN_vkAcquireFullScreenExclusiveModeEXT vkAcquireFullScreenExclusiveModeEXT; + PFN_vkReleaseFullScreenExclusiveModeEXT vkReleaseFullScreenExclusiveModeEXT; +#endif /* defined(VK_EXT_full_screen_exclusive) */ +#if defined(VK_EXT_hdr_metadata) + PFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT; +#endif /* defined(VK_EXT_hdr_metadata) */ +#if defined(VK_EXT_host_query_reset) + PFN_vkResetQueryPoolEXT vkResetQueryPoolEXT; +#endif /* defined(VK_EXT_host_query_reset) */ +#if defined(VK_EXT_image_drm_format_modifier) + PFN_vkGetImageDrmFormatModifierPropertiesEXT vkGetImageDrmFormatModifierPropertiesEXT; +#endif /* defined(VK_EXT_image_drm_format_modifier) */ +#if defined(VK_EXT_line_rasterization) + PFN_vkCmdSetLineStippleEXT vkCmdSetLineStippleEXT; +#endif /* defined(VK_EXT_line_rasterization) */ +#if defined(VK_EXT_private_data) + PFN_vkCreatePrivateDataSlotEXT vkCreatePrivateDataSlotEXT; + PFN_vkDestroyPrivateDataSlotEXT vkDestroyPrivateDataSlotEXT; + PFN_vkGetPrivateDataEXT vkGetPrivateDataEXT; + PFN_vkSetPrivateDataEXT vkSetPrivateDataEXT; +#endif /* defined(VK_EXT_private_data) */ +#if defined(VK_EXT_sample_locations) + PFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT; +#endif /* defined(VK_EXT_sample_locations) */ +#if defined(VK_EXT_transform_feedback) + PFN_vkCmdBeginQueryIndexedEXT vkCmdBeginQueryIndexedEXT; + PFN_vkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXT; + PFN_vkCmdBindTransformFeedbackBuffersEXT vkCmdBindTransformFeedbackBuffersEXT; + PFN_vkCmdDrawIndirectByteCountEXT vkCmdDrawIndirectByteCountEXT; + PFN_vkCmdEndQueryIndexedEXT vkCmdEndQueryIndexedEXT; + PFN_vkCmdEndTransformFeedbackEXT vkCmdEndTransformFeedbackEXT; +#endif /* defined(VK_EXT_transform_feedback) */ +#if defined(VK_EXT_validation_cache) + PFN_vkCreateValidationCacheEXT vkCreateValidationCacheEXT; + PFN_vkDestroyValidationCacheEXT vkDestroyValidationCacheEXT; + PFN_vkGetValidationCacheDataEXT vkGetValidationCacheDataEXT; + PFN_vkMergeValidationCachesEXT vkMergeValidationCachesEXT; +#endif /* defined(VK_EXT_validation_cache) */ +#if defined(VK_GOOGLE_display_timing) + PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE; + PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE; +#endif /* defined(VK_GOOGLE_display_timing) */ +#if defined(VK_INTEL_performance_query) + PFN_vkAcquirePerformanceConfigurationINTEL vkAcquirePerformanceConfigurationINTEL; + PFN_vkCmdSetPerformanceMarkerINTEL vkCmdSetPerformanceMarkerINTEL; + PFN_vkCmdSetPerformanceOverrideINTEL vkCmdSetPerformanceOverrideINTEL; + PFN_vkCmdSetPerformanceStreamMarkerINTEL vkCmdSetPerformanceStreamMarkerINTEL; + PFN_vkGetPerformanceParameterINTEL vkGetPerformanceParameterINTEL; + PFN_vkInitializePerformanceApiINTEL vkInitializePerformanceApiINTEL; + PFN_vkQueueSetPerformanceConfigurationINTEL vkQueueSetPerformanceConfigurationINTEL; + PFN_vkReleasePerformanceConfigurationINTEL vkReleasePerformanceConfigurationINTEL; + PFN_vkUninitializePerformanceApiINTEL vkUninitializePerformanceApiINTEL; +#endif /* defined(VK_INTEL_performance_query) */ +#if defined(VK_KHR_bind_memory2) + PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR; + PFN_vkBindImageMemory2KHR vkBindImageMemory2KHR; +#endif /* defined(VK_KHR_bind_memory2) */ +#if defined(VK_KHR_buffer_device_address) + PFN_vkGetBufferDeviceAddressKHR vkGetBufferDeviceAddressKHR; + PFN_vkGetBufferOpaqueCaptureAddressKHR vkGetBufferOpaqueCaptureAddressKHR; + PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR vkGetDeviceMemoryOpaqueCaptureAddressKHR; +#endif /* defined(VK_KHR_buffer_device_address) */ +#if defined(VK_KHR_copy_commands2) + PFN_vkCmdBlitImage2KHR vkCmdBlitImage2KHR; + PFN_vkCmdCopyBuffer2KHR vkCmdCopyBuffer2KHR; + PFN_vkCmdCopyBufferToImage2KHR vkCmdCopyBufferToImage2KHR; + PFN_vkCmdCopyImage2KHR vkCmdCopyImage2KHR; + PFN_vkCmdCopyImageToBuffer2KHR vkCmdCopyImageToBuffer2KHR; + PFN_vkCmdResolveImage2KHR vkCmdResolveImage2KHR; +#endif /* defined(VK_KHR_copy_commands2) */ +#if defined(VK_KHR_create_renderpass2) + PFN_vkCmdBeginRenderPass2KHR vkCmdBeginRenderPass2KHR; + PFN_vkCmdEndRenderPass2KHR vkCmdEndRenderPass2KHR; + PFN_vkCmdNextSubpass2KHR vkCmdNextSubpass2KHR; + PFN_vkCreateRenderPass2KHR vkCreateRenderPass2KHR; +#endif /* defined(VK_KHR_create_renderpass2) */ +#if defined(VK_KHR_deferred_host_operations) + PFN_vkCreateDeferredOperationKHR vkCreateDeferredOperationKHR; + PFN_vkDeferredOperationJoinKHR vkDeferredOperationJoinKHR; + PFN_vkDestroyDeferredOperationKHR vkDestroyDeferredOperationKHR; + PFN_vkGetDeferredOperationMaxConcurrencyKHR vkGetDeferredOperationMaxConcurrencyKHR; + PFN_vkGetDeferredOperationResultKHR vkGetDeferredOperationResultKHR; +#endif /* defined(VK_KHR_deferred_host_operations) */ +#if defined(VK_KHR_descriptor_update_template) + PFN_vkCreateDescriptorUpdateTemplateKHR vkCreateDescriptorUpdateTemplateKHR; + PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR; + PFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR; +#endif /* defined(VK_KHR_descriptor_update_template) */ +#if defined(VK_KHR_device_group) + PFN_vkCmdDispatchBaseKHR vkCmdDispatchBaseKHR; + PFN_vkCmdSetDeviceMaskKHR vkCmdSetDeviceMaskKHR; + PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR vkGetDeviceGroupPeerMemoryFeaturesKHR; +#endif /* defined(VK_KHR_device_group) */ +#if defined(VK_KHR_display_swapchain) + PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR; +#endif /* defined(VK_KHR_display_swapchain) */ +#if defined(VK_KHR_draw_indirect_count) + PFN_vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR; + PFN_vkCmdDrawIndirectCountKHR vkCmdDrawIndirectCountKHR; +#endif /* defined(VK_KHR_draw_indirect_count) */ +#if defined(VK_KHR_external_fence_fd) + PFN_vkGetFenceFdKHR vkGetFenceFdKHR; + PFN_vkImportFenceFdKHR vkImportFenceFdKHR; +#endif /* defined(VK_KHR_external_fence_fd) */ +#if defined(VK_KHR_external_fence_win32) + PFN_vkGetFenceWin32HandleKHR vkGetFenceWin32HandleKHR; + PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR; +#endif /* defined(VK_KHR_external_fence_win32) */ +#if defined(VK_KHR_external_memory_fd) + PFN_vkGetMemoryFdKHR vkGetMemoryFdKHR; + PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR; +#endif /* defined(VK_KHR_external_memory_fd) */ +#if defined(VK_KHR_external_memory_win32) + PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR; + PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR; +#endif /* defined(VK_KHR_external_memory_win32) */ +#if defined(VK_KHR_external_semaphore_fd) + PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR; + PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR; +#endif /* defined(VK_KHR_external_semaphore_fd) */ +#if defined(VK_KHR_external_semaphore_win32) + PFN_vkGetSemaphoreWin32HandleKHR vkGetSemaphoreWin32HandleKHR; + PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR; +#endif /* defined(VK_KHR_external_semaphore_win32) */ +#if defined(VK_KHR_get_memory_requirements2) + PFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR; + PFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR; + PFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR; +#endif /* defined(VK_KHR_get_memory_requirements2) */ +#if defined(VK_KHR_maintenance1) + PFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR; +#endif /* defined(VK_KHR_maintenance1) */ +#if defined(VK_KHR_maintenance3) + PFN_vkGetDescriptorSetLayoutSupportKHR vkGetDescriptorSetLayoutSupportKHR; +#endif /* defined(VK_KHR_maintenance3) */ +#if defined(VK_KHR_performance_query) + PFN_vkAcquireProfilingLockKHR vkAcquireProfilingLockKHR; + PFN_vkReleaseProfilingLockKHR vkReleaseProfilingLockKHR; +#endif /* defined(VK_KHR_performance_query) */ +#if defined(VK_KHR_pipeline_executable_properties) + PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInternalRepresentationsKHR; + PFN_vkGetPipelineExecutablePropertiesKHR vkGetPipelineExecutablePropertiesKHR; + PFN_vkGetPipelineExecutableStatisticsKHR vkGetPipelineExecutableStatisticsKHR; +#endif /* defined(VK_KHR_pipeline_executable_properties) */ +#if defined(VK_KHR_push_descriptor) + PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR; +#endif /* defined(VK_KHR_push_descriptor) */ +#if defined(VK_KHR_ray_tracing) + PFN_vkBindAccelerationStructureMemoryKHR vkBindAccelerationStructureMemoryKHR; + PFN_vkBuildAccelerationStructureKHR vkBuildAccelerationStructureKHR; + PFN_vkCmdBuildAccelerationStructureIndirectKHR vkCmdBuildAccelerationStructureIndirectKHR; + PFN_vkCmdBuildAccelerationStructureKHR vkCmdBuildAccelerationStructureKHR; + PFN_vkCmdCopyAccelerationStructureKHR vkCmdCopyAccelerationStructureKHR; + PFN_vkCmdCopyAccelerationStructureToMemoryKHR vkCmdCopyAccelerationStructureToMemoryKHR; + PFN_vkCmdCopyMemoryToAccelerationStructureKHR vkCmdCopyMemoryToAccelerationStructureKHR; + PFN_vkCmdTraceRaysIndirectKHR vkCmdTraceRaysIndirectKHR; + PFN_vkCmdTraceRaysKHR vkCmdTraceRaysKHR; + PFN_vkCmdWriteAccelerationStructuresPropertiesKHR vkCmdWriteAccelerationStructuresPropertiesKHR; + PFN_vkCopyAccelerationStructureKHR vkCopyAccelerationStructureKHR; + PFN_vkCopyAccelerationStructureToMemoryKHR vkCopyAccelerationStructureToMemoryKHR; + PFN_vkCopyMemoryToAccelerationStructureKHR vkCopyMemoryToAccelerationStructureKHR; + PFN_vkCreateAccelerationStructureKHR vkCreateAccelerationStructureKHR; + PFN_vkCreateRayTracingPipelinesKHR vkCreateRayTracingPipelinesKHR; + PFN_vkDestroyAccelerationStructureKHR vkDestroyAccelerationStructureKHR; + PFN_vkGetAccelerationStructureDeviceAddressKHR vkGetAccelerationStructureDeviceAddressKHR; + PFN_vkGetAccelerationStructureMemoryRequirementsKHR vkGetAccelerationStructureMemoryRequirementsKHR; + PFN_vkGetDeviceAccelerationStructureCompatibilityKHR vkGetDeviceAccelerationStructureCompatibilityKHR; + PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR vkGetRayTracingCaptureReplayShaderGroupHandlesKHR; + PFN_vkGetRayTracingShaderGroupHandlesKHR vkGetRayTracingShaderGroupHandlesKHR; + PFN_vkWriteAccelerationStructuresPropertiesKHR vkWriteAccelerationStructuresPropertiesKHR; +#endif /* defined(VK_KHR_ray_tracing) */ +#if defined(VK_KHR_sampler_ycbcr_conversion) + PFN_vkCreateSamplerYcbcrConversionKHR vkCreateSamplerYcbcrConversionKHR; + PFN_vkDestroySamplerYcbcrConversionKHR vkDestroySamplerYcbcrConversionKHR; +#endif /* defined(VK_KHR_sampler_ycbcr_conversion) */ +#if defined(VK_KHR_shared_presentable_image) + PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR; +#endif /* defined(VK_KHR_shared_presentable_image) */ +#if defined(VK_KHR_swapchain) + PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR; + PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR; + PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR; + PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR; + PFN_vkQueuePresentKHR vkQueuePresentKHR; +#endif /* defined(VK_KHR_swapchain) */ +#if defined(VK_KHR_timeline_semaphore) + PFN_vkGetSemaphoreCounterValueKHR vkGetSemaphoreCounterValueKHR; + PFN_vkSignalSemaphoreKHR vkSignalSemaphoreKHR; + PFN_vkWaitSemaphoresKHR vkWaitSemaphoresKHR; +#endif /* defined(VK_KHR_timeline_semaphore) */ +#if defined(VK_NVX_image_view_handle) + PFN_vkGetImageViewAddressNVX vkGetImageViewAddressNVX; + PFN_vkGetImageViewHandleNVX vkGetImageViewHandleNVX; +#endif /* defined(VK_NVX_image_view_handle) */ +#if defined(VK_NV_clip_space_w_scaling) + PFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV; +#endif /* defined(VK_NV_clip_space_w_scaling) */ +#if defined(VK_NV_device_diagnostic_checkpoints) + PFN_vkCmdSetCheckpointNV vkCmdSetCheckpointNV; + PFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV; +#endif /* defined(VK_NV_device_diagnostic_checkpoints) */ +#if defined(VK_NV_device_generated_commands) + PFN_vkCmdBindPipelineShaderGroupNV vkCmdBindPipelineShaderGroupNV; + PFN_vkCmdExecuteGeneratedCommandsNV vkCmdExecuteGeneratedCommandsNV; + PFN_vkCmdPreprocessGeneratedCommandsNV vkCmdPreprocessGeneratedCommandsNV; + PFN_vkCreateIndirectCommandsLayoutNV vkCreateIndirectCommandsLayoutNV; + PFN_vkDestroyIndirectCommandsLayoutNV vkDestroyIndirectCommandsLayoutNV; + PFN_vkGetGeneratedCommandsMemoryRequirementsNV vkGetGeneratedCommandsMemoryRequirementsNV; +#endif /* defined(VK_NV_device_generated_commands) */ +#if defined(VK_NV_external_memory_win32) + PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV; +#endif /* defined(VK_NV_external_memory_win32) */ +#if defined(VK_NV_mesh_shader) + PFN_vkCmdDrawMeshTasksIndirectCountNV vkCmdDrawMeshTasksIndirectCountNV; + PFN_vkCmdDrawMeshTasksIndirectNV vkCmdDrawMeshTasksIndirectNV; + PFN_vkCmdDrawMeshTasksNV vkCmdDrawMeshTasksNV; +#endif /* defined(VK_NV_mesh_shader) */ +#if defined(VK_NV_ray_tracing) + PFN_vkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNV; + PFN_vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV; + PFN_vkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNV; + PFN_vkCmdTraceRaysNV vkCmdTraceRaysNV; + PFN_vkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNV; + PFN_vkCompileDeferredNV vkCompileDeferredNV; + PFN_vkCreateAccelerationStructureNV vkCreateAccelerationStructureNV; + PFN_vkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNV; + PFN_vkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNV; + PFN_vkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNV; + PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV; + PFN_vkGetRayTracingShaderGroupHandlesNV vkGetRayTracingShaderGroupHandlesNV; +#endif /* defined(VK_NV_ray_tracing) */ +#if defined(VK_NV_scissor_exclusive) + PFN_vkCmdSetExclusiveScissorNV vkCmdSetExclusiveScissorNV; +#endif /* defined(VK_NV_scissor_exclusive) */ +#if defined(VK_NV_shading_rate_image) + PFN_vkCmdBindShadingRateImageNV vkCmdBindShadingRateImageNV; + PFN_vkCmdSetCoarseSampleOrderNV vkCmdSetCoarseSampleOrderNV; + PFN_vkCmdSetViewportShadingRatePaletteNV vkCmdSetViewportShadingRatePaletteNV; +#endif /* defined(VK_NV_shading_rate_image) */ +#if (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1)) + PFN_vkGetDeviceGroupSurfacePresentModes2EXT vkGetDeviceGroupSurfacePresentModes2EXT; +#endif /* (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1)) */ +#if (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1)) || (defined(VK_KHR_push_descriptor) && defined(VK_KHR_descriptor_update_template)) + PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR; +#endif /* (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1)) || (defined(VK_KHR_push_descriptor) && defined(VK_KHR_descriptor_update_template)) */ +#if (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) + PFN_vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR; + PFN_vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR; +#endif /* (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) */ +#if (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) + PFN_vkAcquireNextImage2KHR vkAcquireNextImage2KHR; +#endif /* (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) */ + /* VOLK_GENERATE_DEVICE_TABLE */ +}; + +/* VOLK_GENERATE_PROTOTYPES_H */ +#if defined(VK_VERSION_1_0) +extern PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers; +extern PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets; +extern PFN_vkAllocateMemory vkAllocateMemory; +extern PFN_vkBeginCommandBuffer vkBeginCommandBuffer; +extern PFN_vkBindBufferMemory vkBindBufferMemory; +extern PFN_vkBindImageMemory vkBindImageMemory; +extern PFN_vkCmdBeginQuery vkCmdBeginQuery; +extern PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass; +extern PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets; +extern PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer; +extern PFN_vkCmdBindPipeline vkCmdBindPipeline; +extern PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers; +extern PFN_vkCmdBlitImage vkCmdBlitImage; +extern PFN_vkCmdClearAttachments vkCmdClearAttachments; +extern PFN_vkCmdClearColorImage vkCmdClearColorImage; +extern PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage; +extern PFN_vkCmdCopyBuffer vkCmdCopyBuffer; +extern PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage; +extern PFN_vkCmdCopyImage vkCmdCopyImage; +extern PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer; +extern PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults; +extern PFN_vkCmdDispatch vkCmdDispatch; +extern PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect; +extern PFN_vkCmdDraw vkCmdDraw; +extern PFN_vkCmdDrawIndexed vkCmdDrawIndexed; +extern PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect; +extern PFN_vkCmdDrawIndirect vkCmdDrawIndirect; +extern PFN_vkCmdEndQuery vkCmdEndQuery; +extern PFN_vkCmdEndRenderPass vkCmdEndRenderPass; +extern PFN_vkCmdExecuteCommands vkCmdExecuteCommands; +extern PFN_vkCmdFillBuffer vkCmdFillBuffer; +extern PFN_vkCmdNextSubpass vkCmdNextSubpass; +extern PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier; +extern PFN_vkCmdPushConstants vkCmdPushConstants; +extern PFN_vkCmdResetEvent vkCmdResetEvent; +extern PFN_vkCmdResetQueryPool vkCmdResetQueryPool; +extern PFN_vkCmdResolveImage vkCmdResolveImage; +extern PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants; +extern PFN_vkCmdSetDepthBias vkCmdSetDepthBias; +extern PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds; +extern PFN_vkCmdSetEvent vkCmdSetEvent; +extern PFN_vkCmdSetLineWidth vkCmdSetLineWidth; +extern PFN_vkCmdSetScissor vkCmdSetScissor; +extern PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask; +extern PFN_vkCmdSetStencilReference vkCmdSetStencilReference; +extern PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask; +extern PFN_vkCmdSetViewport vkCmdSetViewport; +extern PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer; +extern PFN_vkCmdWaitEvents vkCmdWaitEvents; +extern PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp; +extern PFN_vkCreateBuffer vkCreateBuffer; +extern PFN_vkCreateBufferView vkCreateBufferView; +extern PFN_vkCreateCommandPool vkCreateCommandPool; +extern PFN_vkCreateComputePipelines vkCreateComputePipelines; +extern PFN_vkCreateDescriptorPool vkCreateDescriptorPool; +extern PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout; +extern PFN_vkCreateDevice vkCreateDevice; +extern PFN_vkCreateEvent vkCreateEvent; +extern PFN_vkCreateFence vkCreateFence; +extern PFN_vkCreateFramebuffer vkCreateFramebuffer; +extern PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines; +extern PFN_vkCreateImage vkCreateImage; +extern PFN_vkCreateImageView vkCreateImageView; +extern PFN_vkCreateInstance vkCreateInstance; +extern PFN_vkCreatePipelineCache vkCreatePipelineCache; +extern PFN_vkCreatePipelineLayout vkCreatePipelineLayout; +extern PFN_vkCreateQueryPool vkCreateQueryPool; +extern PFN_vkCreateRenderPass vkCreateRenderPass; +extern PFN_vkCreateSampler vkCreateSampler; +extern PFN_vkCreateSemaphore vkCreateSemaphore; +extern PFN_vkCreateShaderModule vkCreateShaderModule; +extern PFN_vkDestroyBuffer vkDestroyBuffer; +extern PFN_vkDestroyBufferView vkDestroyBufferView; +extern PFN_vkDestroyCommandPool vkDestroyCommandPool; +extern PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool; +extern PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout; +extern PFN_vkDestroyDevice vkDestroyDevice; +extern PFN_vkDestroyEvent vkDestroyEvent; +extern PFN_vkDestroyFence vkDestroyFence; +extern PFN_vkDestroyFramebuffer vkDestroyFramebuffer; +extern PFN_vkDestroyImage vkDestroyImage; +extern PFN_vkDestroyImageView vkDestroyImageView; +extern PFN_vkDestroyInstance vkDestroyInstance; +extern PFN_vkDestroyPipeline vkDestroyPipeline; +extern PFN_vkDestroyPipelineCache vkDestroyPipelineCache; +extern PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout; +extern PFN_vkDestroyQueryPool vkDestroyQueryPool; +extern PFN_vkDestroyRenderPass vkDestroyRenderPass; +extern PFN_vkDestroySampler vkDestroySampler; +extern PFN_vkDestroySemaphore vkDestroySemaphore; +extern PFN_vkDestroyShaderModule vkDestroyShaderModule; +extern PFN_vkDeviceWaitIdle vkDeviceWaitIdle; +extern PFN_vkEndCommandBuffer vkEndCommandBuffer; +extern PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties; +extern PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties; +extern PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties; +extern PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties; +extern PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices; +extern PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges; +extern PFN_vkFreeCommandBuffers vkFreeCommandBuffers; +extern PFN_vkFreeDescriptorSets vkFreeDescriptorSets; +extern PFN_vkFreeMemory vkFreeMemory; +extern PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements; +extern PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment; +extern PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr; +extern PFN_vkGetDeviceQueue vkGetDeviceQueue; +extern PFN_vkGetEventStatus vkGetEventStatus; +extern PFN_vkGetFenceStatus vkGetFenceStatus; +extern PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements; +extern PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements; +extern PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout; +extern PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr; +extern PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures; +extern PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties; +extern PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties; +extern PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties; +extern PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties; +extern PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties; +extern PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties; +extern PFN_vkGetPipelineCacheData vkGetPipelineCacheData; +extern PFN_vkGetQueryPoolResults vkGetQueryPoolResults; +extern PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity; +extern PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges; +extern PFN_vkMapMemory vkMapMemory; +extern PFN_vkMergePipelineCaches vkMergePipelineCaches; +extern PFN_vkQueueBindSparse vkQueueBindSparse; +extern PFN_vkQueueSubmit vkQueueSubmit; +extern PFN_vkQueueWaitIdle vkQueueWaitIdle; +extern PFN_vkResetCommandBuffer vkResetCommandBuffer; +extern PFN_vkResetCommandPool vkResetCommandPool; +extern PFN_vkResetDescriptorPool vkResetDescriptorPool; +extern PFN_vkResetEvent vkResetEvent; +extern PFN_vkResetFences vkResetFences; +extern PFN_vkSetEvent vkSetEvent; +extern PFN_vkUnmapMemory vkUnmapMemory; +extern PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets; +extern PFN_vkWaitForFences vkWaitForFences; +#endif /* defined(VK_VERSION_1_0) */ +#if defined(VK_VERSION_1_1) +extern PFN_vkBindBufferMemory2 vkBindBufferMemory2; +extern PFN_vkBindImageMemory2 vkBindImageMemory2; +extern PFN_vkCmdDispatchBase vkCmdDispatchBase; +extern PFN_vkCmdSetDeviceMask vkCmdSetDeviceMask; +extern PFN_vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate; +extern PFN_vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion; +extern PFN_vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate; +extern PFN_vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion; +extern PFN_vkEnumerateInstanceVersion vkEnumerateInstanceVersion; +extern PFN_vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups; +extern PFN_vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2; +extern PFN_vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport; +extern PFN_vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures; +extern PFN_vkGetDeviceQueue2 vkGetDeviceQueue2; +extern PFN_vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2; +extern PFN_vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2; +extern PFN_vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties; +extern PFN_vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties; +extern PFN_vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties; +extern PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2; +extern PFN_vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2; +extern PFN_vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2; +extern PFN_vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2; +extern PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2; +extern PFN_vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2; +extern PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2; +extern PFN_vkTrimCommandPool vkTrimCommandPool; +extern PFN_vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate; +#endif /* defined(VK_VERSION_1_1) */ +#if defined(VK_VERSION_1_2) +extern PFN_vkCmdBeginRenderPass2 vkCmdBeginRenderPass2; +extern PFN_vkCmdDrawIndexedIndirectCount vkCmdDrawIndexedIndirectCount; +extern PFN_vkCmdDrawIndirectCount vkCmdDrawIndirectCount; +extern PFN_vkCmdEndRenderPass2 vkCmdEndRenderPass2; +extern PFN_vkCmdNextSubpass2 vkCmdNextSubpass2; +extern PFN_vkCreateRenderPass2 vkCreateRenderPass2; +extern PFN_vkGetBufferDeviceAddress vkGetBufferDeviceAddress; +extern PFN_vkGetBufferOpaqueCaptureAddress vkGetBufferOpaqueCaptureAddress; +extern PFN_vkGetDeviceMemoryOpaqueCaptureAddress vkGetDeviceMemoryOpaqueCaptureAddress; +extern PFN_vkGetSemaphoreCounterValue vkGetSemaphoreCounterValue; +extern PFN_vkResetQueryPool vkResetQueryPool; +extern PFN_vkSignalSemaphore vkSignalSemaphore; +extern PFN_vkWaitSemaphores vkWaitSemaphores; +#endif /* defined(VK_VERSION_1_2) */ +#if defined(VK_AMD_buffer_marker) +extern PFN_vkCmdWriteBufferMarkerAMD vkCmdWriteBufferMarkerAMD; +#endif /* defined(VK_AMD_buffer_marker) */ +#if defined(VK_AMD_display_native_hdr) +extern PFN_vkSetLocalDimmingAMD vkSetLocalDimmingAMD; +#endif /* defined(VK_AMD_display_native_hdr) */ +#if defined(VK_AMD_draw_indirect_count) +extern PFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD; +extern PFN_vkCmdDrawIndirectCountAMD vkCmdDrawIndirectCountAMD; +#endif /* defined(VK_AMD_draw_indirect_count) */ +#if defined(VK_AMD_shader_info) +extern PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD; +#endif /* defined(VK_AMD_shader_info) */ +#if defined(VK_ANDROID_external_memory_android_hardware_buffer) +extern PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID; +extern PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID; +#endif /* defined(VK_ANDROID_external_memory_android_hardware_buffer) */ +#if defined(VK_EXT_acquire_xlib_display) +extern PFN_vkAcquireXlibDisplayEXT vkAcquireXlibDisplayEXT; +extern PFN_vkGetRandROutputDisplayEXT vkGetRandROutputDisplayEXT; +#endif /* defined(VK_EXT_acquire_xlib_display) */ +#if defined(VK_EXT_buffer_device_address) +extern PFN_vkGetBufferDeviceAddressEXT vkGetBufferDeviceAddressEXT; +#endif /* defined(VK_EXT_buffer_device_address) */ +#if defined(VK_EXT_calibrated_timestamps) +extern PFN_vkGetCalibratedTimestampsEXT vkGetCalibratedTimestampsEXT; +extern PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT vkGetPhysicalDeviceCalibrateableTimeDomainsEXT; +#endif /* defined(VK_EXT_calibrated_timestamps) */ +#if defined(VK_EXT_conditional_rendering) +extern PFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT; +extern PFN_vkCmdEndConditionalRenderingEXT vkCmdEndConditionalRenderingEXT; +#endif /* defined(VK_EXT_conditional_rendering) */ +#if defined(VK_EXT_debug_marker) +extern PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT; +extern PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT; +extern PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT; +extern PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT; +extern PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT; +#endif /* defined(VK_EXT_debug_marker) */ +#if defined(VK_EXT_debug_report) +extern PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT; +extern PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT; +extern PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT; +#endif /* defined(VK_EXT_debug_report) */ +#if defined(VK_EXT_debug_utils) +extern PFN_vkCmdBeginDebugUtilsLabelEXT vkCmdBeginDebugUtilsLabelEXT; +extern PFN_vkCmdEndDebugUtilsLabelEXT vkCmdEndDebugUtilsLabelEXT; +extern PFN_vkCmdInsertDebugUtilsLabelEXT vkCmdInsertDebugUtilsLabelEXT; +extern PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT; +extern PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT; +extern PFN_vkQueueBeginDebugUtilsLabelEXT vkQueueBeginDebugUtilsLabelEXT; +extern PFN_vkQueueEndDebugUtilsLabelEXT vkQueueEndDebugUtilsLabelEXT; +extern PFN_vkQueueInsertDebugUtilsLabelEXT vkQueueInsertDebugUtilsLabelEXT; +extern PFN_vkSetDebugUtilsObjectNameEXT vkSetDebugUtilsObjectNameEXT; +extern PFN_vkSetDebugUtilsObjectTagEXT vkSetDebugUtilsObjectTagEXT; +extern PFN_vkSubmitDebugUtilsMessageEXT vkSubmitDebugUtilsMessageEXT; +#endif /* defined(VK_EXT_debug_utils) */ +#if defined(VK_EXT_direct_mode_display) +extern PFN_vkReleaseDisplayEXT vkReleaseDisplayEXT; +#endif /* defined(VK_EXT_direct_mode_display) */ +#if defined(VK_EXT_directfb_surface) +extern PFN_vkCreateDirectFBSurfaceEXT vkCreateDirectFBSurfaceEXT; +extern PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT vkGetPhysicalDeviceDirectFBPresentationSupportEXT; +#endif /* defined(VK_EXT_directfb_surface) */ +#if defined(VK_EXT_discard_rectangles) +extern PFN_vkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXT; +#endif /* defined(VK_EXT_discard_rectangles) */ +#if defined(VK_EXT_display_control) +extern PFN_vkDisplayPowerControlEXT vkDisplayPowerControlEXT; +extern PFN_vkGetSwapchainCounterEXT vkGetSwapchainCounterEXT; +extern PFN_vkRegisterDeviceEventEXT vkRegisterDeviceEventEXT; +extern PFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT; +#endif /* defined(VK_EXT_display_control) */ +#if defined(VK_EXT_display_surface_counter) +extern PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT vkGetPhysicalDeviceSurfaceCapabilities2EXT; +#endif /* defined(VK_EXT_display_surface_counter) */ +#if defined(VK_EXT_extended_dynamic_state) +extern PFN_vkCmdBindVertexBuffers2EXT vkCmdBindVertexBuffers2EXT; +extern PFN_vkCmdSetCullModeEXT vkCmdSetCullModeEXT; +extern PFN_vkCmdSetDepthBoundsTestEnableEXT vkCmdSetDepthBoundsTestEnableEXT; +extern PFN_vkCmdSetDepthCompareOpEXT vkCmdSetDepthCompareOpEXT; +extern PFN_vkCmdSetDepthTestEnableEXT vkCmdSetDepthTestEnableEXT; +extern PFN_vkCmdSetDepthWriteEnableEXT vkCmdSetDepthWriteEnableEXT; +extern PFN_vkCmdSetFrontFaceEXT vkCmdSetFrontFaceEXT; +extern PFN_vkCmdSetPrimitiveTopologyEXT vkCmdSetPrimitiveTopologyEXT; +extern PFN_vkCmdSetScissorWithCountEXT vkCmdSetScissorWithCountEXT; +extern PFN_vkCmdSetStencilOpEXT vkCmdSetStencilOpEXT; +extern PFN_vkCmdSetStencilTestEnableEXT vkCmdSetStencilTestEnableEXT; +extern PFN_vkCmdSetViewportWithCountEXT vkCmdSetViewportWithCountEXT; +#endif /* defined(VK_EXT_extended_dynamic_state) */ +#if defined(VK_EXT_external_memory_host) +extern PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT; +#endif /* defined(VK_EXT_external_memory_host) */ +#if defined(VK_EXT_full_screen_exclusive) +extern PFN_vkAcquireFullScreenExclusiveModeEXT vkAcquireFullScreenExclusiveModeEXT; +extern PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT vkGetPhysicalDeviceSurfacePresentModes2EXT; +extern PFN_vkReleaseFullScreenExclusiveModeEXT vkReleaseFullScreenExclusiveModeEXT; +#endif /* defined(VK_EXT_full_screen_exclusive) */ +#if defined(VK_EXT_hdr_metadata) +extern PFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT; +#endif /* defined(VK_EXT_hdr_metadata) */ +#if defined(VK_EXT_headless_surface) +extern PFN_vkCreateHeadlessSurfaceEXT vkCreateHeadlessSurfaceEXT; +#endif /* defined(VK_EXT_headless_surface) */ +#if defined(VK_EXT_host_query_reset) +extern PFN_vkResetQueryPoolEXT vkResetQueryPoolEXT; +#endif /* defined(VK_EXT_host_query_reset) */ +#if defined(VK_EXT_image_drm_format_modifier) +extern PFN_vkGetImageDrmFormatModifierPropertiesEXT vkGetImageDrmFormatModifierPropertiesEXT; +#endif /* defined(VK_EXT_image_drm_format_modifier) */ +#if defined(VK_EXT_line_rasterization) +extern PFN_vkCmdSetLineStippleEXT vkCmdSetLineStippleEXT; +#endif /* defined(VK_EXT_line_rasterization) */ +#if defined(VK_EXT_metal_surface) +extern PFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT; +#endif /* defined(VK_EXT_metal_surface) */ +#if defined(VK_EXT_private_data) +extern PFN_vkCreatePrivateDataSlotEXT vkCreatePrivateDataSlotEXT; +extern PFN_vkDestroyPrivateDataSlotEXT vkDestroyPrivateDataSlotEXT; +extern PFN_vkGetPrivateDataEXT vkGetPrivateDataEXT; +extern PFN_vkSetPrivateDataEXT vkSetPrivateDataEXT; +#endif /* defined(VK_EXT_private_data) */ +#if defined(VK_EXT_sample_locations) +extern PFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT; +extern PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT vkGetPhysicalDeviceMultisamplePropertiesEXT; +#endif /* defined(VK_EXT_sample_locations) */ +#if defined(VK_EXT_tooling_info) +extern PFN_vkGetPhysicalDeviceToolPropertiesEXT vkGetPhysicalDeviceToolPropertiesEXT; +#endif /* defined(VK_EXT_tooling_info) */ +#if defined(VK_EXT_transform_feedback) +extern PFN_vkCmdBeginQueryIndexedEXT vkCmdBeginQueryIndexedEXT; +extern PFN_vkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXT; +extern PFN_vkCmdBindTransformFeedbackBuffersEXT vkCmdBindTransformFeedbackBuffersEXT; +extern PFN_vkCmdDrawIndirectByteCountEXT vkCmdDrawIndirectByteCountEXT; +extern PFN_vkCmdEndQueryIndexedEXT vkCmdEndQueryIndexedEXT; +extern PFN_vkCmdEndTransformFeedbackEXT vkCmdEndTransformFeedbackEXT; +#endif /* defined(VK_EXT_transform_feedback) */ +#if defined(VK_EXT_validation_cache) +extern PFN_vkCreateValidationCacheEXT vkCreateValidationCacheEXT; +extern PFN_vkDestroyValidationCacheEXT vkDestroyValidationCacheEXT; +extern PFN_vkGetValidationCacheDataEXT vkGetValidationCacheDataEXT; +extern PFN_vkMergeValidationCachesEXT vkMergeValidationCachesEXT; +#endif /* defined(VK_EXT_validation_cache) */ +#if defined(VK_FUCHSIA_imagepipe_surface) +extern PFN_vkCreateImagePipeSurfaceFUCHSIA vkCreateImagePipeSurfaceFUCHSIA; +#endif /* defined(VK_FUCHSIA_imagepipe_surface) */ +#if defined(VK_GGP_stream_descriptor_surface) +extern PFN_vkCreateStreamDescriptorSurfaceGGP vkCreateStreamDescriptorSurfaceGGP; +#endif /* defined(VK_GGP_stream_descriptor_surface) */ +#if defined(VK_GOOGLE_display_timing) +extern PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE; +extern PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE; +#endif /* defined(VK_GOOGLE_display_timing) */ +#if defined(VK_INTEL_performance_query) +extern PFN_vkAcquirePerformanceConfigurationINTEL vkAcquirePerformanceConfigurationINTEL; +extern PFN_vkCmdSetPerformanceMarkerINTEL vkCmdSetPerformanceMarkerINTEL; +extern PFN_vkCmdSetPerformanceOverrideINTEL vkCmdSetPerformanceOverrideINTEL; +extern PFN_vkCmdSetPerformanceStreamMarkerINTEL vkCmdSetPerformanceStreamMarkerINTEL; +extern PFN_vkGetPerformanceParameterINTEL vkGetPerformanceParameterINTEL; +extern PFN_vkInitializePerformanceApiINTEL vkInitializePerformanceApiINTEL; +extern PFN_vkQueueSetPerformanceConfigurationINTEL vkQueueSetPerformanceConfigurationINTEL; +extern PFN_vkReleasePerformanceConfigurationINTEL vkReleasePerformanceConfigurationINTEL; +extern PFN_vkUninitializePerformanceApiINTEL vkUninitializePerformanceApiINTEL; +#endif /* defined(VK_INTEL_performance_query) */ +#if defined(VK_KHR_android_surface) +extern PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR; +#endif /* defined(VK_KHR_android_surface) */ +#if defined(VK_KHR_bind_memory2) +extern PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR; +extern PFN_vkBindImageMemory2KHR vkBindImageMemory2KHR; +#endif /* defined(VK_KHR_bind_memory2) */ +#if defined(VK_KHR_buffer_device_address) +extern PFN_vkGetBufferDeviceAddressKHR vkGetBufferDeviceAddressKHR; +extern PFN_vkGetBufferOpaqueCaptureAddressKHR vkGetBufferOpaqueCaptureAddressKHR; +extern PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR vkGetDeviceMemoryOpaqueCaptureAddressKHR; +#endif /* defined(VK_KHR_buffer_device_address) */ +#if defined(VK_KHR_copy_commands2) +extern PFN_vkCmdBlitImage2KHR vkCmdBlitImage2KHR; +extern PFN_vkCmdCopyBuffer2KHR vkCmdCopyBuffer2KHR; +extern PFN_vkCmdCopyBufferToImage2KHR vkCmdCopyBufferToImage2KHR; +extern PFN_vkCmdCopyImage2KHR vkCmdCopyImage2KHR; +extern PFN_vkCmdCopyImageToBuffer2KHR vkCmdCopyImageToBuffer2KHR; +extern PFN_vkCmdResolveImage2KHR vkCmdResolveImage2KHR; +#endif /* defined(VK_KHR_copy_commands2) */ +#if defined(VK_KHR_create_renderpass2) +extern PFN_vkCmdBeginRenderPass2KHR vkCmdBeginRenderPass2KHR; +extern PFN_vkCmdEndRenderPass2KHR vkCmdEndRenderPass2KHR; +extern PFN_vkCmdNextSubpass2KHR vkCmdNextSubpass2KHR; +extern PFN_vkCreateRenderPass2KHR vkCreateRenderPass2KHR; +#endif /* defined(VK_KHR_create_renderpass2) */ +#if defined(VK_KHR_deferred_host_operations) +extern PFN_vkCreateDeferredOperationKHR vkCreateDeferredOperationKHR; +extern PFN_vkDeferredOperationJoinKHR vkDeferredOperationJoinKHR; +extern PFN_vkDestroyDeferredOperationKHR vkDestroyDeferredOperationKHR; +extern PFN_vkGetDeferredOperationMaxConcurrencyKHR vkGetDeferredOperationMaxConcurrencyKHR; +extern PFN_vkGetDeferredOperationResultKHR vkGetDeferredOperationResultKHR; +#endif /* defined(VK_KHR_deferred_host_operations) */ +#if defined(VK_KHR_descriptor_update_template) +extern PFN_vkCreateDescriptorUpdateTemplateKHR vkCreateDescriptorUpdateTemplateKHR; +extern PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR; +extern PFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR; +#endif /* defined(VK_KHR_descriptor_update_template) */ +#if defined(VK_KHR_device_group) +extern PFN_vkCmdDispatchBaseKHR vkCmdDispatchBaseKHR; +extern PFN_vkCmdSetDeviceMaskKHR vkCmdSetDeviceMaskKHR; +extern PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR vkGetDeviceGroupPeerMemoryFeaturesKHR; +#endif /* defined(VK_KHR_device_group) */ +#if defined(VK_KHR_device_group_creation) +extern PFN_vkEnumeratePhysicalDeviceGroupsKHR vkEnumeratePhysicalDeviceGroupsKHR; +#endif /* defined(VK_KHR_device_group_creation) */ +#if defined(VK_KHR_display) +extern PFN_vkCreateDisplayModeKHR vkCreateDisplayModeKHR; +extern PFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR; +extern PFN_vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR; +extern PFN_vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR; +extern PFN_vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR; +extern PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR; +extern PFN_vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR; +#endif /* defined(VK_KHR_display) */ +#if defined(VK_KHR_display_swapchain) +extern PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR; +#endif /* defined(VK_KHR_display_swapchain) */ +#if defined(VK_KHR_draw_indirect_count) +extern PFN_vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR; +extern PFN_vkCmdDrawIndirectCountKHR vkCmdDrawIndirectCountKHR; +#endif /* defined(VK_KHR_draw_indirect_count) */ +#if defined(VK_KHR_external_fence_capabilities) +extern PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR vkGetPhysicalDeviceExternalFencePropertiesKHR; +#endif /* defined(VK_KHR_external_fence_capabilities) */ +#if defined(VK_KHR_external_fence_fd) +extern PFN_vkGetFenceFdKHR vkGetFenceFdKHR; +extern PFN_vkImportFenceFdKHR vkImportFenceFdKHR; +#endif /* defined(VK_KHR_external_fence_fd) */ +#if defined(VK_KHR_external_fence_win32) +extern PFN_vkGetFenceWin32HandleKHR vkGetFenceWin32HandleKHR; +extern PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR; +#endif /* defined(VK_KHR_external_fence_win32) */ +#if defined(VK_KHR_external_memory_capabilities) +extern PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR vkGetPhysicalDeviceExternalBufferPropertiesKHR; +#endif /* defined(VK_KHR_external_memory_capabilities) */ +#if defined(VK_KHR_external_memory_fd) +extern PFN_vkGetMemoryFdKHR vkGetMemoryFdKHR; +extern PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR; +#endif /* defined(VK_KHR_external_memory_fd) */ +#if defined(VK_KHR_external_memory_win32) +extern PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR; +extern PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR; +#endif /* defined(VK_KHR_external_memory_win32) */ +#if defined(VK_KHR_external_semaphore_capabilities) +extern PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR vkGetPhysicalDeviceExternalSemaphorePropertiesKHR; +#endif /* defined(VK_KHR_external_semaphore_capabilities) */ +#if defined(VK_KHR_external_semaphore_fd) +extern PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR; +extern PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR; +#endif /* defined(VK_KHR_external_semaphore_fd) */ +#if defined(VK_KHR_external_semaphore_win32) +extern PFN_vkGetSemaphoreWin32HandleKHR vkGetSemaphoreWin32HandleKHR; +extern PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR; +#endif /* defined(VK_KHR_external_semaphore_win32) */ +#if defined(VK_KHR_get_display_properties2) +extern PFN_vkGetDisplayModeProperties2KHR vkGetDisplayModeProperties2KHR; +extern PFN_vkGetDisplayPlaneCapabilities2KHR vkGetDisplayPlaneCapabilities2KHR; +extern PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR vkGetPhysicalDeviceDisplayPlaneProperties2KHR; +extern PFN_vkGetPhysicalDeviceDisplayProperties2KHR vkGetPhysicalDeviceDisplayProperties2KHR; +#endif /* defined(VK_KHR_get_display_properties2) */ +#if defined(VK_KHR_get_memory_requirements2) +extern PFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR; +extern PFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR; +extern PFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR; +#endif /* defined(VK_KHR_get_memory_requirements2) */ +#if defined(VK_KHR_get_physical_device_properties2) +extern PFN_vkGetPhysicalDeviceFeatures2KHR vkGetPhysicalDeviceFeatures2KHR; +extern PFN_vkGetPhysicalDeviceFormatProperties2KHR vkGetPhysicalDeviceFormatProperties2KHR; +extern PFN_vkGetPhysicalDeviceImageFormatProperties2KHR vkGetPhysicalDeviceImageFormatProperties2KHR; +extern PFN_vkGetPhysicalDeviceMemoryProperties2KHR vkGetPhysicalDeviceMemoryProperties2KHR; +extern PFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR; +extern PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR vkGetPhysicalDeviceQueueFamilyProperties2KHR; +extern PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR vkGetPhysicalDeviceSparseImageFormatProperties2KHR; +#endif /* defined(VK_KHR_get_physical_device_properties2) */ +#if defined(VK_KHR_get_surface_capabilities2) +extern PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR vkGetPhysicalDeviceSurfaceCapabilities2KHR; +extern PFN_vkGetPhysicalDeviceSurfaceFormats2KHR vkGetPhysicalDeviceSurfaceFormats2KHR; +#endif /* defined(VK_KHR_get_surface_capabilities2) */ +#if defined(VK_KHR_maintenance1) +extern PFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR; +#endif /* defined(VK_KHR_maintenance1) */ +#if defined(VK_KHR_maintenance3) +extern PFN_vkGetDescriptorSetLayoutSupportKHR vkGetDescriptorSetLayoutSupportKHR; +#endif /* defined(VK_KHR_maintenance3) */ +#if defined(VK_KHR_performance_query) +extern PFN_vkAcquireProfilingLockKHR vkAcquireProfilingLockKHR; +extern PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR; +extern PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR; +extern PFN_vkReleaseProfilingLockKHR vkReleaseProfilingLockKHR; +#endif /* defined(VK_KHR_performance_query) */ +#if defined(VK_KHR_pipeline_executable_properties) +extern PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInternalRepresentationsKHR; +extern PFN_vkGetPipelineExecutablePropertiesKHR vkGetPipelineExecutablePropertiesKHR; +extern PFN_vkGetPipelineExecutableStatisticsKHR vkGetPipelineExecutableStatisticsKHR; +#endif /* defined(VK_KHR_pipeline_executable_properties) */ +#if defined(VK_KHR_push_descriptor) +extern PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR; +#endif /* defined(VK_KHR_push_descriptor) */ +#if defined(VK_KHR_ray_tracing) +extern PFN_vkBindAccelerationStructureMemoryKHR vkBindAccelerationStructureMemoryKHR; +extern PFN_vkBuildAccelerationStructureKHR vkBuildAccelerationStructureKHR; +extern PFN_vkCmdBuildAccelerationStructureIndirectKHR vkCmdBuildAccelerationStructureIndirectKHR; +extern PFN_vkCmdBuildAccelerationStructureKHR vkCmdBuildAccelerationStructureKHR; +extern PFN_vkCmdCopyAccelerationStructureKHR vkCmdCopyAccelerationStructureKHR; +extern PFN_vkCmdCopyAccelerationStructureToMemoryKHR vkCmdCopyAccelerationStructureToMemoryKHR; +extern PFN_vkCmdCopyMemoryToAccelerationStructureKHR vkCmdCopyMemoryToAccelerationStructureKHR; +extern PFN_vkCmdTraceRaysIndirectKHR vkCmdTraceRaysIndirectKHR; +extern PFN_vkCmdTraceRaysKHR vkCmdTraceRaysKHR; +extern PFN_vkCmdWriteAccelerationStructuresPropertiesKHR vkCmdWriteAccelerationStructuresPropertiesKHR; +extern PFN_vkCopyAccelerationStructureKHR vkCopyAccelerationStructureKHR; +extern PFN_vkCopyAccelerationStructureToMemoryKHR vkCopyAccelerationStructureToMemoryKHR; +extern PFN_vkCopyMemoryToAccelerationStructureKHR vkCopyMemoryToAccelerationStructureKHR; +extern PFN_vkCreateAccelerationStructureKHR vkCreateAccelerationStructureKHR; +extern PFN_vkCreateRayTracingPipelinesKHR vkCreateRayTracingPipelinesKHR; +extern PFN_vkDestroyAccelerationStructureKHR vkDestroyAccelerationStructureKHR; +extern PFN_vkGetAccelerationStructureDeviceAddressKHR vkGetAccelerationStructureDeviceAddressKHR; +extern PFN_vkGetAccelerationStructureMemoryRequirementsKHR vkGetAccelerationStructureMemoryRequirementsKHR; +extern PFN_vkGetDeviceAccelerationStructureCompatibilityKHR vkGetDeviceAccelerationStructureCompatibilityKHR; +extern PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR vkGetRayTracingCaptureReplayShaderGroupHandlesKHR; +extern PFN_vkGetRayTracingShaderGroupHandlesKHR vkGetRayTracingShaderGroupHandlesKHR; +extern PFN_vkWriteAccelerationStructuresPropertiesKHR vkWriteAccelerationStructuresPropertiesKHR; +#endif /* defined(VK_KHR_ray_tracing) */ +#if defined(VK_KHR_sampler_ycbcr_conversion) +extern PFN_vkCreateSamplerYcbcrConversionKHR vkCreateSamplerYcbcrConversionKHR; +extern PFN_vkDestroySamplerYcbcrConversionKHR vkDestroySamplerYcbcrConversionKHR; +#endif /* defined(VK_KHR_sampler_ycbcr_conversion) */ +#if defined(VK_KHR_shared_presentable_image) +extern PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR; +#endif /* defined(VK_KHR_shared_presentable_image) */ +#if defined(VK_KHR_surface) +extern PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR; +extern PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR; +extern PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR; +extern PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR; +extern PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR; +#endif /* defined(VK_KHR_surface) */ +#if defined(VK_KHR_swapchain) +extern PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR; +extern PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR; +extern PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR; +extern PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR; +extern PFN_vkQueuePresentKHR vkQueuePresentKHR; +#endif /* defined(VK_KHR_swapchain) */ +#if defined(VK_KHR_timeline_semaphore) +extern PFN_vkGetSemaphoreCounterValueKHR vkGetSemaphoreCounterValueKHR; +extern PFN_vkSignalSemaphoreKHR vkSignalSemaphoreKHR; +extern PFN_vkWaitSemaphoresKHR vkWaitSemaphoresKHR; +#endif /* defined(VK_KHR_timeline_semaphore) */ +#if defined(VK_KHR_wayland_surface) +extern PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR; +extern PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR; +#endif /* defined(VK_KHR_wayland_surface) */ +#if defined(VK_KHR_win32_surface) +extern PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR; +extern PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR; +#endif /* defined(VK_KHR_win32_surface) */ +#if defined(VK_KHR_xcb_surface) +extern PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR; +extern PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR; +#endif /* defined(VK_KHR_xcb_surface) */ +#if defined(VK_KHR_xlib_surface) +extern PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR; +extern PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR; +#endif /* defined(VK_KHR_xlib_surface) */ +#if defined(VK_MVK_ios_surface) +extern PFN_vkCreateIOSSurfaceMVK vkCreateIOSSurfaceMVK; +#endif /* defined(VK_MVK_ios_surface) */ +#if defined(VK_MVK_macos_surface) +extern PFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK; +#endif /* defined(VK_MVK_macos_surface) */ +#if defined(VK_NN_vi_surface) +extern PFN_vkCreateViSurfaceNN vkCreateViSurfaceNN; +#endif /* defined(VK_NN_vi_surface) */ +#if defined(VK_NVX_image_view_handle) +extern PFN_vkGetImageViewAddressNVX vkGetImageViewAddressNVX; +extern PFN_vkGetImageViewHandleNVX vkGetImageViewHandleNVX; +#endif /* defined(VK_NVX_image_view_handle) */ +#if defined(VK_NV_clip_space_w_scaling) +extern PFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV; +#endif /* defined(VK_NV_clip_space_w_scaling) */ +#if defined(VK_NV_cooperative_matrix) +extern PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV vkGetPhysicalDeviceCooperativeMatrixPropertiesNV; +#endif /* defined(VK_NV_cooperative_matrix) */ +#if defined(VK_NV_coverage_reduction_mode) +extern PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV; +#endif /* defined(VK_NV_coverage_reduction_mode) */ +#if defined(VK_NV_device_diagnostic_checkpoints) +extern PFN_vkCmdSetCheckpointNV vkCmdSetCheckpointNV; +extern PFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV; +#endif /* defined(VK_NV_device_diagnostic_checkpoints) */ +#if defined(VK_NV_device_generated_commands) +extern PFN_vkCmdBindPipelineShaderGroupNV vkCmdBindPipelineShaderGroupNV; +extern PFN_vkCmdExecuteGeneratedCommandsNV vkCmdExecuteGeneratedCommandsNV; +extern PFN_vkCmdPreprocessGeneratedCommandsNV vkCmdPreprocessGeneratedCommandsNV; +extern PFN_vkCreateIndirectCommandsLayoutNV vkCreateIndirectCommandsLayoutNV; +extern PFN_vkDestroyIndirectCommandsLayoutNV vkDestroyIndirectCommandsLayoutNV; +extern PFN_vkGetGeneratedCommandsMemoryRequirementsNV vkGetGeneratedCommandsMemoryRequirementsNV; +#endif /* defined(VK_NV_device_generated_commands) */ +#if defined(VK_NV_external_memory_capabilities) +extern PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV; +#endif /* defined(VK_NV_external_memory_capabilities) */ +#if defined(VK_NV_external_memory_win32) +extern PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV; +#endif /* defined(VK_NV_external_memory_win32) */ +#if defined(VK_NV_mesh_shader) +extern PFN_vkCmdDrawMeshTasksIndirectCountNV vkCmdDrawMeshTasksIndirectCountNV; +extern PFN_vkCmdDrawMeshTasksIndirectNV vkCmdDrawMeshTasksIndirectNV; +extern PFN_vkCmdDrawMeshTasksNV vkCmdDrawMeshTasksNV; +#endif /* defined(VK_NV_mesh_shader) */ +#if defined(VK_NV_ray_tracing) +extern PFN_vkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNV; +extern PFN_vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV; +extern PFN_vkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNV; +extern PFN_vkCmdTraceRaysNV vkCmdTraceRaysNV; +extern PFN_vkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNV; +extern PFN_vkCompileDeferredNV vkCompileDeferredNV; +extern PFN_vkCreateAccelerationStructureNV vkCreateAccelerationStructureNV; +extern PFN_vkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNV; +extern PFN_vkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNV; +extern PFN_vkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNV; +extern PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV; +extern PFN_vkGetRayTracingShaderGroupHandlesNV vkGetRayTracingShaderGroupHandlesNV; +#endif /* defined(VK_NV_ray_tracing) */ +#if defined(VK_NV_scissor_exclusive) +extern PFN_vkCmdSetExclusiveScissorNV vkCmdSetExclusiveScissorNV; +#endif /* defined(VK_NV_scissor_exclusive) */ +#if defined(VK_NV_shading_rate_image) +extern PFN_vkCmdBindShadingRateImageNV vkCmdBindShadingRateImageNV; +extern PFN_vkCmdSetCoarseSampleOrderNV vkCmdSetCoarseSampleOrderNV; +extern PFN_vkCmdSetViewportShadingRatePaletteNV vkCmdSetViewportShadingRatePaletteNV; +#endif /* defined(VK_NV_shading_rate_image) */ +#if (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1)) +extern PFN_vkGetDeviceGroupSurfacePresentModes2EXT vkGetDeviceGroupSurfacePresentModes2EXT; +#endif /* (defined(VK_EXT_full_screen_exclusive) && defined(VK_KHR_device_group)) || (defined(VK_EXT_full_screen_exclusive) && defined(VK_VERSION_1_1)) */ +#if (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1)) || (defined(VK_KHR_push_descriptor) && defined(VK_KHR_descriptor_update_template)) +extern PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR; +#endif /* (defined(VK_KHR_descriptor_update_template) && defined(VK_KHR_push_descriptor)) || (defined(VK_KHR_push_descriptor) && defined(VK_VERSION_1_1)) || (defined(VK_KHR_push_descriptor) && defined(VK_KHR_descriptor_update_template)) */ +#if (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) +extern PFN_vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR; +extern PFN_vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR; +extern PFN_vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR; +#endif /* (defined(VK_KHR_device_group) && defined(VK_KHR_surface)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) */ +#if (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) +extern PFN_vkAcquireNextImage2KHR vkAcquireNextImage2KHR; +#endif /* (defined(VK_KHR_device_group) && defined(VK_KHR_swapchain)) || (defined(VK_KHR_swapchain) && defined(VK_VERSION_1_1)) */ +/* VOLK_GENERATE_PROTOTYPES_H */ + +#ifdef __cplusplus +} +#endif + +#endif + +#ifdef VOLK_IMPLEMENTATION +#undef VOLK_IMPLEMENTATION +// Prevent tools like dependency checkers that don't evaluate +// macros from detecting a cyclic dependency. +#define VOLK_SOURCE "volk.c" +#include VOLK_SOURCE +#endif + +/** + * Copyright (c) 2018-2019 Arseny Kapoulkine + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. +*/ +/* clang-format on */ diff --git a/main.c b/main.c new file mode 100644 index 0000000..40eb71b --- /dev/null +++ b/main.c @@ -0,0 +1,166 @@ + +#include "0_Common.h" // <-- Includes required for everything +#include "1_Window.h" // <-- GLFW window, context, keyboard, mouse +#include "2_VulkanInstance.h" // <-- (Section 6.2) Initialize Vulkan +#include "3_PhysicalDevice.h" // <-- (Section 6.4) Find/Create Device and Set-up your selected device +#include "4_SwapChain.h" // <-- (Section 6.5) Initialize Swap-Chain +#include "5_RenderPass.h" // <-- (Section 6.6) Create Render Pass +#include "6_CommandBuffer.h" // <-- (Section 6.7) Create Command Pool/Buffer +#include "7_VertexBuffer.h" // <-- (Section 6.10) Vertex Data/Buffer +#include "8_ShaderandUniforms.h" // <-- (Section 6.11) Load/Setup Shaders +#include "9_Descriptors.h" // <-- (Section 6.13) Setup Descriptors/Sets +#include "10_Pipeline.h" // <-- (Section 6.14) Pipeline +#include "11_RenderLoop.h" // <-- (Section 6.16) Render Loop + +//# ----------------------------------------------------- +// Put together all pieces and start Vulkan +//# ----------------------------------------------------- +int main(int argc, char *argv[]) { + + // Step 1 - Initializing the window + int width = 800; + int height = 600; + GLFWwindow* windowHandle; + windowHandle = SetupWindow(width, height); + if( windowHandle == NULL ){ + printf( "Failed to open GLFW window.\n" ); + glfwTerminate(); + return EXIT_FAILURE; + } + + // Step 2 - Initialize Vulkan (Section 6.2) + VkInstance instance = NULL; + VkSurfaceKHR surface = NULL; + SetupVulkanInstance(windowHandle, + &instance, + &surface); + + // Step 3 - Find/Create Device and (Section 6.4) + // Set-up your selected device + VkPhysicalDevice physicalDevice = NULL; + VkDevice device = NULL; + SetupPhysicalDevice(instance, + &physicalDevice, + &device); + + // Step 4 - Initialize Swap-Chain (Section 6.5) + VkSwapchainKHR swapChain = NULL; + VkImage* presentImages = NULL; + VkImageView* presentImageViews = NULL; + SetupSwapChain(device, + physicalDevice, + surface, + &width, + &height, + &swapChain, + &presentImages, + &presentImageViews); + + // Step 5 - Create Render Pass (Section 6.6) + VkRenderPass renderPass = NULL; + VkFramebuffer* frameBuffers = NULL; + SetupRenderPass(device, + physicalDevice, + width, + height, + presentImageViews, + &renderPass, + &frameBuffers); + + // Step 6 - Create Command Pool/Buffer (Section 6.7) + VkCommandBuffer commandBuffer = NULL; + SetupCommandBuffer(device, + physicalDevice, + &commandBuffer); + + // Step 7 - Vertex Data/Buffer (Section 6.10) + VkBuffer vertexInputBuffer = NULL; + int vertexSize = 0; + int numberOfTriangles = 0; + SetupVertexBuffer(device, + physicalDevice, + &vertexSize, + &numberOfTriangles, + &vertexInputBuffer); + + // Step 8 - Load/Setup Shaders (Section 6.11) + VkShaderModule vertShaderModule = NULL; + VkShaderModule fragShaderModule = NULL; + VkBuffer buffer = NULL; + VkDeviceMemory memory = NULL; + SetupShaderandUniforms(device, + physicalDevice, + width, + height, + &vertShaderModule, + &fragShaderModule, + &buffer, + &memory); + + // Step 9 - Setup Descriptors/Sets (Section 6.13) + VkDescriptorSet descriptorSet = NULL; + VkDescriptorSetLayout descriptorSetLayout = NULL; + SetupDescriptors(device, + buffer, + &descriptorSet, + &descriptorSetLayout); + + // Step 10 - Pipeline (Section 6.14) + VkPipeline pipeline = NULL; + VkPipelineLayout pipelineLayout = NULL; + SetupPipeline(device, + width, + height, + vertexSize, + descriptorSetLayout, + vertShaderModule, + fragShaderModule, + renderPass, + &pipeline, + &pipelineLayout); + + +//////////////////// +//---------------------- + // Step 11 - Render Loop (Section 6.16) + while ( !glfwWindowShouldClose(windowHandle) ) + { + // Keep running + + //Calculate frames per second + showFPS(windowHandle); + + //Processing events, normally done each frame after buffer swapping. + //Will use event polling, which processes only those events that have already been received and then returns immediately. + //This is the best choice when rendering continually, like most games do. + glfwPollEvents(); + + //Render the screen + RenderLoop(device, + width, + height, + numberOfTriangles, + swapChain, + commandBuffer, + presentImages, + frameBuffers, + renderPass, + vertexInputBuffer, + descriptorSet, + pipelineLayout, + pipeline); + + }// End while(..) +//______________________ +//The Cleanup + //vkDestroyDebugUtilsMessengerEXT(instance, debugUtilsMessenger, NULL); + vkDestroyDebugReportCallbackEXT(instance, debugReportCallback_Warning, NULL); + vkDestroyDebugReportCallbackEXT(instance, debugReportCallback_Error, NULL); + vkDestroyInstance(instance, NULL); + glfwDestroyWindow(windowHandle); + glfwTerminate(); + + +// End + return EXIT_SUCCESS; +}//End WinMain(..) diff --git a/simple.frag b/simple.frag new file mode 100644 index 0000000..03936c1 --- /dev/null +++ b/simple.frag @@ -0,0 +1,16 @@ +// shader version +#version 420 + +// input from our vertex shader +layout( location = 0 ) in vec4 inColor; + +// final screen output color +layout( location = 0 ) out vec4 outFragColor; + +// shader entry point +void main() +{ + // pass input color along without any modifications + // e.g., Phong lighting calculations could be done here) + outFragColor = inColor; +} diff --git a/simple.vert b/simple.vert new file mode 100644 index 0000000..f394c91 --- /dev/null +++ b/simple.vert @@ -0,0 +1,32 @@ +// shader version +#version 420 + +// input matrix transforms (3D) passed in from our program +layout ( std140, set = 0, binding = 0 ) uniform buffer +{ + mat4 inProjectionMatrix; + mat4 inViewMatrix; + mat4 inModelMatrix; +}; + +// input from your program +layout( location = 0 ) in vec4 inPos; +layout( location = 1 ) in vec3 inColor; + +// output to next stage (fragment) +layout( location = 0 ) out vec4 outColor; + +// shader entry point +void main() +{ + // combine the matrices + mat4 mvp = inModelMatrix * inViewMatrix * inProjectionMatrix; + + // transform position by matrices + gl_Position = vec4(inPos.xyz, 1) * mvp; + + // pass input color to the next stage + outColor = vec4(inColor, 1.0); + // Or a fixed test color (RED) + // outColor = vec4( 1.0, 0.0, 0.0, 1.0 ); +} diff --git a/vert.spv b/vert.spv new file mode 100644 index 0000000000000000000000000000000000000000..5f834a1de273493b49a96a503973b5b94c173736 GIT binary patch literal 1728 zcmZ9M+fEZv6oxk~g$fEHa!?Vct!K2J08NaiU{Wq1){t;(Dhy_uIz!q)jaNK^@fmzb zZ%q8ZJ+olqCaZg`f31I=_JnGsHSXMqn{aja)a7T!RfIS<>Bhp{+1lA^53~LD>e@ph zrd%}y5;N`21btM$UwS^lh$KzP1IZ&vReu%TzeT9IQT?69*5sSO{(2aElhQvP9UR01 zr|Na}kRP9P2kGZ{FY{@#-OC34JO1(Drw^a(`uLl9PJPt%$#%LQ_fMSEJXhqcDa*3- zPyG+wc(5A}vRIkn=QujPbm%D^Y7$S)fcqrd@jqhX=m#G)<=g1{!?%8z^^(0D0vVAsN~(xYr6?WdYNk70K{$)QbgY!@}*o62H#3xZA=)1$ic0n2&xTjpWI zdo3{@*#A6cDf6)59ZQS{X1tE(q%W|JdS=f}3CHY4ZU#R4;@B+YwEcq7lVRipbI^N3_H>*CwoeFBw@yt!k(6nA3pDgPEPaBN-xJR$mWpmitY$Qhj{EI3Gqv^ zuj*zdFnVSmHYYx6UenD^@X<4NBmu+U&^;o7habCHVC=0Wof^c`1Nu#gbH}gX-wy^`N>0mY~BuRT|Ki8-hcz=j}X33VtEt(myr97Q1&+?Vdw1ig<{y{1qryt zT$D}>yS11(>EOSV2hO|%9=P!qrNiS5jCV;oxbZGahYS8v9n&8e@$`9J!v5Z=3Nzm* zFmMiYGxK}(!7gt}h~XG^TRIrAhTSPJxLsAE)?EpF;_>q?*7u5Zdi$w5#NLw-56-;2 zQ(F>An3q|wi6aNSKbG)T*29wm({+Na7FfC0wE`>mx-JYp@%ZVLntUtx{%YE1l7H;p BWWfLc literal 0 HcmV?d00001