From 3fb5671296be5c874d973aaa22f96061690fc504 Mon Sep 17 00:00:00 2001 From: Ralf Habacker Date: Mon, 14 Nov 2022 14:16:09 +0100 Subject: [PATCH 01/12] In cmake macro vsg_add_target_clobber() add special handling for in source builds --- cmake/vsgMacros.cmake | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/cmake/vsgMacros.cmake b/cmake/vsgMacros.cmake index 7c76560d83..d0552a4d0c 100644 --- a/cmake/vsgMacros.cmake +++ b/cmake/vsgMacros.cmake @@ -251,14 +251,22 @@ endmacro() # add 'clobber' build target to clear all the non git registered files/directories # macro(vsg_add_target_clobber) - if (NOT TARGET clobber) - add_custom_target(clobber) + # in source builds does not support dependencies here + # see https://github.com/vsg-dev/VulkanSceneGraph/pull/566#issuecomment-1312496507 + if (PROJECT_BINARY_DIR STREQUAL PROJECT_SOURCE_DIR) + add_custom_target(clobber + COMMAND git -C ${PROJECT_SOURCE_DIR} clean -d -f -x + ) + else() + if (NOT TARGET clobber) + add_custom_target(clobber) + endif() + add_custom_target(clobber-${PROJECT_NAME} + COMMAND git -C ${PROJECT_SOURCE_DIR} clean -d -f -x + ) + set_target_properties(clobber-${PROJECT_NAME} PROPERTIES FOLDER ${PROJECT_NAME}) + add_dependencies(clobber clobber-${PROJECT_NAME}) endif() - add_custom_target(clobber-${PROJECT_NAME} - COMMAND git -C ${PROJECT_SOURCE_DIR} clean -d -f -x - ) - set_target_properties(clobber-${PROJECT_NAME} PROPERTIES FOLDER ${PROJECT_NAME}) - add_dependencies(clobber clobber-${PROJECT_NAME}) endmacro() # From 48ad3454f56caa8e2faba3cda231b6f39a178295 Mon Sep 17 00:00:00 2001 From: Ralf Habacker Date: Tue, 15 Nov 2022 11:05:00 +0100 Subject: [PATCH 02/12] Extend documentation for vsg_xxx cmake macros --- cmake/vsgMacros.cmake | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/cmake/vsgMacros.cmake b/cmake/vsgMacros.cmake index d0552a4d0c..fc5d0c0a87 100644 --- a/cmake/vsgMacros.cmake +++ b/cmake/vsgMacros.cmake @@ -220,6 +220,13 @@ endmacro() # EXCLUDES list with file names to exclude from the list # given by the FILES argument # +# To support cmake projects with submodules, it is necessary to use +# PROJECT_SOURCE_DIR as prefix for file names. +# +# If vsg is used in a cmake project with submodules, additional targets +# named 'clang-format-${PROJECT}' are created for the corresponding +# project and added as a dependency to the parent target 'clang-format'. +# macro(vsg_add_target_clang_format) set(options) set(oneValueArgs ) @@ -250,6 +257,10 @@ endmacro() # # add 'clobber' build target to clear all the non git registered files/directories # +# If vsg is used in a cmake project with submodules and out-of-source builds, additional +# targets named 'clobber-${PROJECT}' are created for the corresponding +# project and added as a dependency to the parent target 'clobber' +# macro(vsg_add_target_clobber) # in source builds does not support dependencies here # see https://github.com/vsg-dev/VulkanSceneGraph/pull/566#issuecomment-1312496507 @@ -281,6 +292,13 @@ endmacro() # # CPPCHECK_EXTRA_OPTIONS - add extra options to cppcheck command line # +# To support cmake projects with submodules, it is necessary to use +# PROJECT_SOURCE_DIR as prefix for file names. + +# If vsg is used in a cmake project with submodules, additional targets +# named 'cppcheck-${PROJECT}' are created for the corresponding +# project and added as a dependency to the parent target 'cppcheck'. +# macro(vsg_add_target_cppcheck) set(options) set(oneValueArgs SUPPRESSIONS_LIST) @@ -318,12 +336,19 @@ macro(vsg_add_target_cppcheck) endmacro() # -# add 'docs' build target +# add 'docs' build target to provide API documentation generated by doxygen # # available arguments: # # FILES list with file or directory names # +# To support cmake projects with submodules, it is necessary to use +# PROJECT_SOURCE_DIR as prefix for file names. +# +# If vsg is used in a cmake project with submodules, additional targets +# named 'docs-${PROJECT}' are created for the corresponding +# project and added as a dependency to the parent target 'docs'. +# macro(vsg_add_target_docs) set(options) set(oneValueArgs ) @@ -351,6 +376,10 @@ endmacro() # # add 'uninstall' build target # +# If vsg is used in a cmake project with submodules, additional targets +# named 'uninstall-${PROJECT}' are created for the corresponding +# project and added as a dependency to the parent target 'uninstall'. +# macro(vsg_add_target_uninstall) # we are running inside VulkanSceneGraph if (PROJECT_NAME STREQUAL "vsg") From aef597c09640628e52a32201ae4a5353bfb7b645 Mon Sep 17 00:00:00 2001 From: Ralf Habacker Date: Tue, 15 Nov 2022 11:04:42 +0100 Subject: [PATCH 03/12] Add topic how to use vsg_xxx cmake macros --- INSTALL.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/INSTALL.md b/INSTALL.md index f024615c6b..793e79da6c 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -171,6 +171,39 @@ For example, a bare minimum CMakeLists.txt file to compile a single file applica set_property(TARGET myapp PROPERTY CXX_STANDARD 17) target_link_libraries(myapp vsg::vsg) +### Using VSG provided cmake macros within your own projects + +The build system provides macros that create specific cmake targets to use in their project. Examples include: Setup of common cmake variables, Formatting source code, performing static code analysis, creating API documentation, cleaning up source directories, and removing installed files. Documentation of the available macros (the public ones starting with ```vsg_```) are at https://github.com/vsg-dev/VulkanSceneGraph/blob/master/cmake/vsgMacros.cmake. + +For example, a bare minimum CMakeLists.txt file adding the mentioned cmake target would be: + + cmake_minimum_required(VERSION 3.7) + find_package(vsg REQUIRED) + + vsg_setup_dir_vars() + vsg_setup_build_vars() + + vsg_add_target_clang_format( + FILES + ${PROJECT_SOURCE_DIR}/include/*/*.h + ${PROJECT_SOURCE_DIR}/src/*/*.cpp + ) + vsg_add_target_cppcheck( + FILES + ${PROJECT_SOURCE_DIR}/include/*/*.h + ${PROJECT_SOURCE_DIR}/src/*/*.cpp + ) + vsg_add_target_clobber() + vsg_add_target_docs( + FILES + ${PROJECT_SOURCE_DIR}/include/*/*.h + ) + vsg_add_target_uninstall() + + add_executable(myapp "myapp.cpp") + set_property(TARGET myapp PROPERTY CXX_STANDARD 17) + target_link_libraries(myapp vsg::vsg) + --- ## Detailed instructions for setting up your environment and building for Microsoft Windows From 25ec7bedc1bb4b863f841bac0523c0f91983cd93 Mon Sep 17 00:00:00 2001 From: Ralf Habacker Date: Tue, 15 Nov 2022 13:15:57 +0100 Subject: [PATCH 04/12] Add topic how to use cmake macro 'vsg_add_cmake_support_files' --- INSTALL.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/INSTALL.md b/INSTALL.md index 793e79da6c..4e92fab4a7 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -204,6 +204,24 @@ For example, a bare minimum CMakeLists.txt file adding the mentioned cmake targe set_property(TARGET myapp PROPERTY CXX_STANDARD 17) target_link_libraries(myapp vsg::vsg) +### Using VSG provided cmake macro to generate cmake support files + +Projects that install a library must generate some cmake-related files so that the library can be found by ```find_package()```. To simplify the generation of these files, the cmake macro ```vsg_add_cmake_support_files()``` has been added. + +In addition to calling the macro, it requires a template for creating the xxxConfig.cmake file, as given in the following example: + + src/xxx/ + CMakeLists.txt + xxxConfig.cmake.in + +In the file ``CMakeLists.txt`` the call then looks like this: + + vsg_add_cmake_support_files( + CONFIG_TEMPLATE xxxConfig.cmake.in + ) + +Hints for the structure of the template file can be found at https://cmake.org/cmake/help/latest/manual/cmake-packages.7.html#creating-a-package-configuration-file. + --- ## Detailed instructions for setting up your environment and building for Microsoft Windows From 17fc3ef09e430b0243da31bcc6c32b94c5c1b81d Mon Sep 17 00:00:00 2001 From: Sam Brkopac Date: Tue, 15 Nov 2022 11:32:47 -0700 Subject: [PATCH 05/12] workaround for broken github action --- .github/workflows/win-cygwin-mingw.yml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/workflows/win-cygwin-mingw.yml b/.github/workflows/win-cygwin-mingw.yml index 8238bc605d..4cf0b3bda0 100644 --- a/.github/workflows/win-cygwin-mingw.yml +++ b/.github/workflows/win-cygwin-mingw.yml @@ -35,8 +35,19 @@ jobs: - uses: actions/checkout@v2 - name: Setup Cygwin uses: egor-tensin/setup-cygwin@v3 - with: - packages: cmake gcc-g++ ninja pkg-config libxcb-devel + #with: + #packages: cmake gcc-g++ ninja pkg-config libxcb-devel + + - name: Package installation workaround + run: C:\tools\cygwin\cygwinsetup.exe \ + --quiet-mode \ + --no-desktop \ + --no-startmenu \ + --root C:\tools\cygwin\ \ + --local-package-dir C:\tools\cygwin\packages \ + --site "http://mirrors.kernel.org/sourceware/cygwin/" \ + --packages cmake gcc-g++ ninja pkg-config libxcb-devel + - name: Build in Cygwin env: VSG_BUILD_PATH: ${{ github.workspace }} From d12ee0ff7b6c53d438df70ce5f62a0833adad9e3 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Wed, 16 Nov 2022 13:17:36 +0000 Subject: [PATCH 06/12] Added support for vsg::VertexDraw to vsg::CollectResourceResuirements. --- include/vsg/vk/ResourceRequirements.h | 1 + src/vsg/vk/ResourceRequirements.cpp | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/include/vsg/vk/ResourceRequirements.h b/include/vsg/vk/ResourceRequirements.h index f779124cb1..959549e112 100644 --- a/include/vsg/vk/ResourceRequirements.h +++ b/include/vsg/vk/ResourceRequirements.h @@ -106,6 +106,7 @@ namespace vsg void apply(const DepthSorted& depthSorted) override; void apply(const Bin& bin) override; void apply(const Geometry& geometry) override; + void apply(const VertexDraw& vid) override; void apply(const VertexIndexDraw& vid) override; void apply(const BindVertexBuffers& bvb) override; void apply(const BindIndexBuffer& bib) override; diff --git a/src/vsg/vk/ResourceRequirements.cpp b/src/vsg/vk/ResourceRequirements.cpp index 36e02628c5..c5ccb68f14 100644 --- a/src/vsg/vk/ResourceRequirements.cpp +++ b/src/vsg/vk/ResourceRequirements.cpp @@ -19,6 +19,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI #include #include #include +#include #include #include #include @@ -256,6 +257,11 @@ void CollectResourceRequirements::apply(const Geometry& geometry) apply(geometry.indices); } +void CollectResourceRequirements::apply(const VertexDraw& vd) +{ + for (auto& bufferInfo : vd.arrays) apply(bufferInfo); +} + void CollectResourceRequirements::apply(const VertexIndexDraw& vid) { for (auto& bufferInfo : vid.arrays) apply(bufferInfo); From 213bcfc4da65075984f1023260459b1a874219c3 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Thu, 17 Nov 2022 17:40:52 +0000 Subject: [PATCH 07/12] Standardized the var usage --- cmake/build_all_h.cmake | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/cmake/build_all_h.cmake b/cmake/build_all_h.cmake index 6d686f8961..4dcc12efb0 100644 --- a/cmake/build_all_h.cmake +++ b/cmake/build_all_h.cmake @@ -12,19 +12,19 @@ macro(BUILD_ALL_H) set(INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include) file(GLOB CORE_HEADERS RELATIVE ${INCLUDE_DIR} ${INCLUDE_DIR}/vsg/core/*.h ) - file(GLOB MATHS_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/include include/vsg/maths/*.h ) - file(GLOB NODES_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/include include/vsg/nodes/*.h ) - file(GLOB THREADING_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/include include/vsg/threading/*.h ) - file(GLOB UI_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/include include/vsg/ui/*.h ) - file(GLOB UTILS_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/include include/vsg/utils/*.h ) - file(GLOB APP_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/include include/vsg/app/*.h ) - file(GLOB IO_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/include include/vsg/io/*.h ) - file(GLOB VK_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/include include/vsg/vk/*.h ) - file(GLOB COMMANDS_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/include include/vsg/commands/*.h ) - file(GLOB STATE_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/include include/vsg/state/*.h ) - file(GLOB TEXT_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/include include/vsg/text/*.h ) - file(GLOB RAYTRACING_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/include include/vsg/raytracing/*.h ) - file(GLOB RTX_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/include include/vsg/rtx/*.h ) + file(GLOB MATHS_HEADERS RELATIVE ${INCLUDE_DIR} ${INCLUDE_DIR}/vsg/maths/*.h ) + file(GLOB NODES_HEADERS RELATIVE ${INCLUDE_DIR} ${INCLUDE_DIR}/vsg/nodes/*.h ) + file(GLOB THREADING_HEADERS RELATIVE ${INCLUDE_DIR} ${INCLUDE_DIR}/vsg/threading/*.h ) + file(GLOB UI_HEADERS RELATIVE ${INCLUDE_DIR} ${INCLUDE_DIR}/vsg/ui/*.h ) + file(GLOB UTILS_HEADERS RELATIVE ${INCLUDE_DIR} ${INCLUDE_DIR}/vsg/utils/*.h ) + file(GLOB APP_HEADERS RELATIVE ${INCLUDE_DIR} ${INCLUDE_DIR}/vsg/app/*.h ) + file(GLOB IO_HEADERS RELATIVE ${INCLUDE_DIR} ${INCLUDE_DIR}/vsg/io/*.h ) + file(GLOB VK_HEADERS RELATIVE ${INCLUDE_DIR} ${INCLUDE_DIR}/vsg/vk/*.h ) + file(GLOB COMMANDS_HEADERS RELATIVE ${INCLUDE_DIR} ${INCLUDE_DIR}/vsg/commands/*.h ) + file(GLOB STATE_HEADERS RELATIVE ${INCLUDE_DIR} ${INCLUDE_DIR}/vsg/state/*.h ) + file(GLOB TEXT_HEADERS RELATIVE ${INCLUDE_DIR} ${INCLUDE_DIR}/vsg/text/*.h ) + file(GLOB RAYTRACING_HEADERS RELATIVE ${INCLUDE_DIR} ${INCLUDE_DIR}/vsg/raytracing/*.h ) + file(GLOB RTX_HEADERS RELATIVE ${INCLUDE_DIR} ${INCLUDE_DIR}/vsg/rtx/*.h ) file(READ ${CMAKE_CURRENT_SOURCE_DIR}/cmake/header_license_preamble.txt ALL_H_CONTENTS) APPEND_INCLUDES(ALL_H_CONTENTS CORE_HEADERS "// Core header files\n") From cad045c80abc3bdf93bd8d383a71e1bde412a9a1 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Thu, 17 Nov 2022 18:49:51 +0000 Subject: [PATCH 08/12] Fixed ability to be run when using an out of source build --- cmake/build_all_h.cmake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cmake/build_all_h.cmake b/cmake/build_all_h.cmake index 4dcc12efb0..959b5de2a5 100644 --- a/cmake/build_all_h.cmake +++ b/cmake/build_all_h.cmake @@ -9,9 +9,9 @@ endmacro() macro(BUILD_ALL_H) - set(INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include) + set(INCLUDE_DIR ${VSG_SOURCE_DIR}/include) - file(GLOB CORE_HEADERS RELATIVE ${INCLUDE_DIR} ${INCLUDE_DIR}/vsg/core/*.h ) + file(GLOB CORE_HEADERS RELATIVE ${INCLUDE_DIR} ${INCLUDE_DIR}/vsg/core/*.h RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/include/vsg/core/*.h ) file(GLOB MATHS_HEADERS RELATIVE ${INCLUDE_DIR} ${INCLUDE_DIR}/vsg/maths/*.h ) file(GLOB NODES_HEADERS RELATIVE ${INCLUDE_DIR} ${INCLUDE_DIR}/vsg/nodes/*.h ) file(GLOB THREADING_HEADERS RELATIVE ${INCLUDE_DIR} ${INCLUDE_DIR}/vsg/threading/*.h ) @@ -26,7 +26,7 @@ macro(BUILD_ALL_H) file(GLOB RAYTRACING_HEADERS RELATIVE ${INCLUDE_DIR} ${INCLUDE_DIR}/vsg/raytracing/*.h ) file(GLOB RTX_HEADERS RELATIVE ${INCLUDE_DIR} ${INCLUDE_DIR}/vsg/rtx/*.h ) - file(READ ${CMAKE_CURRENT_SOURCE_DIR}/cmake/header_license_preamble.txt ALL_H_CONTENTS) + file(READ ${VSG_SOURCE_DIR}/cmake/header_license_preamble.txt ALL_H_CONTENTS) APPEND_INCLUDES(ALL_H_CONTENTS CORE_HEADERS "// Core header files\n") APPEND_INCLUDES(ALL_H_CONTENTS MATHS_HEADERS "// Maths header files\n") APPEND_INCLUDES(ALL_H_CONTENTS NODES_HEADERS "// Node header files\n") @@ -42,7 +42,7 @@ macro(BUILD_ALL_H) APPEND_INCLUDES(ALL_H_CONTENTS RAYTRACING_HEADERS "// Ray tracing header files\n") APPEND_INCLUDES(ALL_H_CONTENTS RTX_HEADERS "// RTX mesh header files\n") - file(WRITE include/vsg/all.h ${ALL_H_CONTENTS}) + file(WRITE ${INCLUDE_DIR}/vsg/all.h ${ALL_H_CONTENTS}) endmacro() From 07d712f461b22d5b21019ab506f4606e4732e82e Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Fri, 18 Nov 2022 10:39:24 +0000 Subject: [PATCH 09/12] Enabled make build_all_h and make tag_test/tag_run for out of source builds --- CMakeLists.txt | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 16af0b52d0..e37a749597 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -87,21 +87,16 @@ vsg_add_target_docs( ${VSG_SOURCE_DIR}/include/vsg ) -# only provide custom targets if not building as a submodule/FetchContent -if (${CMAKE_CURRENT_BINARY_DIR} STREQUAL ${CMAKE_SOURCE_DIR}) - - # automatically buil_all_h build target to generate the include/vsg/all.h from the headers in the include/vsg/* directories - add_custom_target(build_all_h - COMMAND ${CMAKE_COMMAND} -P ${VSG_SOURCE_DIR}/cmake/build_all_h.cmake - ) - set_target_properties(build_all_h PROPERTIES FOLDER "VulkanSceneGraph") - - vsg_add_option_maintainer( - PREFIX VulkanSceneGraph - RCLEVEL ${VSG_RELEASE_CANDIDATE} - ) +# automatically buil_all_h build target to generate the include/vsg/all.h from the headers in the include/vsg/* directories +add_custom_target(build_all_h + COMMAND ${CMAKE_COMMAND} -DVSG_SOURCE_DIR=${VSG_SOURCE_DIR} -P ${VSG_SOURCE_DIR}/cmake/build_all_h.cmake +) +set_target_properties(build_all_h PROPERTIES FOLDER "VulkanSceneGraph") -endif() +vsg_add_option_maintainer( + PREFIX VulkanSceneGraph + RCLEVEL ${VSG_RELEASE_CANDIDATE} +) # # src directory contains all the source of the vsg library From a025a305f0c6b2f7dec27fd6a084c865ed9cc6e7 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Fri, 18 Nov 2022 10:58:43 +0000 Subject: [PATCH 10/12] Added FindGit and use of it to protect make clobber and make tag-test/tag-run. --- cmake/vsgMacros.cmake | 107 ++++++++++++++++++++++-------------------- 1 file changed, 57 insertions(+), 50 deletions(-) diff --git a/cmake/vsgMacros.cmake b/cmake/vsgMacros.cmake index fc5d0c0a87..1d8b29f81f 100644 --- a/cmake/vsgMacros.cmake +++ b/cmake/vsgMacros.cmake @@ -2,6 +2,8 @@ # macros provided by the vsg library # +find_package(Git QUIET) + # give hint for cmake developers if(NOT _vsg_macros_included) message(STATUS "Reading 'vsg_...' macros from ${CMAKE_CURRENT_LIST_DIR}/vsgMacros.cmake - look there for documentation") @@ -162,52 +164,55 @@ endmacro() # branch-test show the command to create a branch in the git repository # macro(vsg_add_option_maintainer) - set(options) - set(oneValueArgs PREFIX RCLEVEL) - set(multiValueArgs) - cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - option(MAINTAINER "Enable maintainer build methods, such as making git branches and tags." OFF) - if(MAINTAINER) + if(Git_FOUND) + set(options) + set(oneValueArgs PREFIX RCLEVEL) + set(multiValueArgs) + cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - # - # Provide target for tagging a release - # - set(VSG_BRANCH ${ARGS_PREFIX}-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}) + option(MAINTAINER "Enable maintainer build methods, such as making git branches and tags." OFF) + if(MAINTAINER) - set(GITCOMMAND git -C ${CMAKE_CURRENT_SOURCE_DIR}) - set(ECHO ${CMAKE_COMMAND} -E echo) - set(REMOTE origin) + # + # Provide target for tagging a release + # + set(VSG_BRANCH ${ARGS_PREFIX}-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}) - if(ARGS_RCLEVEL EQUAL 0) - set(RELEASE_NAME ${ARGS_PREFIX}-${PROJECT_VERSION}) - else() - set(RELEASE_NAME ${ARGS_PREFIX}-${PROJECT_VERSION}-rc${ARGS_RCLEVEL}) - endif() + set(GITCOMMAND ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR}) + set(ECHO ${CMAKE_COMMAND} -E echo) + set(REMOTE origin) - set(RELEASE_MESSAGE "Release ${RELEASE_NAME}") - set(BRANCH_MESSAGE "Branch ${VSG_BRANCH}") + if(ARGS_RCLEVEL EQUAL 0) + set(RELEASE_NAME ${ARGS_PREFIX}-${PROJECT_VERSION}) + else() + set(RELEASE_NAME ${ARGS_PREFIX}-${PROJECT_VERSION}-rc${ARGS_RCLEVEL}) + endif() - add_custom_target(tag-test - COMMAND ${ECHO} ${GITCOMMAND} tag -a ${RELEASE_NAME} -m \"${RELEASE_MESSAGE}\" - COMMAND ${ECHO} ${GITCOMMAND} push ${REMOTE} ${RELEASE_NAME} - ) + set(RELEASE_MESSAGE "Release ${RELEASE_NAME}") + set(BRANCH_MESSAGE "Branch ${VSG_BRANCH}") - add_custom_target(tag-run - COMMAND ${GITCOMMAND} tag -a ${RELEASE_NAME} -m "${RELEASE_MESSAGE}" - COMMAND ${GITCOMMAND} push ${REMOTE} ${RELEASE_NAME} - ) + add_custom_target(tag-test + COMMAND ${ECHO} ${GITCOMMAND} tag -a ${RELEASE_NAME} -m \"${RELEASE_MESSAGE}\" + COMMAND ${ECHO} ${GITCOMMAND} push ${REMOTE} ${RELEASE_NAME} + ) - add_custom_target(branch-test - COMMAND ${ECHO} ${GITCOMMAND} branch ${VSG_BRANCH} - COMMAND ${ECHO} ${GITCOMMAND} push ${REMOTE} ${VSG_BRANCH} - ) + add_custom_target(tag-run + COMMAND ${GITCOMMAND} tag -a ${RELEASE_NAME} -m "${RELEASE_MESSAGE}" + COMMAND ${GITCOMMAND} push ${REMOTE} ${RELEASE_NAME} + ) - add_custom_target(branch-run - COMMAND ${GITCOMMAND} branch ${VSG_BRANCH} - COMMAND ${GITCOMMAND} push ${REMOTE} ${VSG_BRANCH} - ) + add_custom_target(branch-test + COMMAND ${ECHO} ${GITCOMMAND} branch ${VSG_BRANCH} + COMMAND ${ECHO} ${GITCOMMAND} push ${REMOTE} ${VSG_BRANCH} + ) + + add_custom_target(branch-run + COMMAND ${GITCOMMAND} branch ${VSG_BRANCH} + COMMAND ${GITCOMMAND} push ${REMOTE} ${VSG_BRANCH} + ) + endif() endif() endmacro() @@ -262,21 +267,23 @@ endmacro() # project and added as a dependency to the parent target 'clobber' # macro(vsg_add_target_clobber) - # in source builds does not support dependencies here - # see https://github.com/vsg-dev/VulkanSceneGraph/pull/566#issuecomment-1312496507 - if (PROJECT_BINARY_DIR STREQUAL PROJECT_SOURCE_DIR) - add_custom_target(clobber - COMMAND git -C ${PROJECT_SOURCE_DIR} clean -d -f -x - ) - else() - if (NOT TARGET clobber) - add_custom_target(clobber) + if(Git_FOUND) + # in source builds does not support dependencies here + # see https://github.com/vsg-dev/VulkanSceneGraph/pull/566#issuecomment-1312496507 + if (PROJECT_BINARY_DIR STREQUAL PROJECT_SOURCE_DIR) + add_custom_target(clobber + COMMAND ${GIT_EXECUTABLE} -C ${PROJECT_SOURCE_DIR} clean -d -f -x + ) + else() + if (NOT TARGET clobber) + add_custom_target(clobber) + endif() + add_custom_target(clobber-${PROJECT_NAME} + COMMAND ${GIT_EXECUTABLE} -C ${PROJECT_SOURCE_DIR} clean -d -f -x + ) + set_target_properties(clobber-${PROJECT_NAME} PROPERTIES FOLDER ${PROJECT_NAME}) + add_dependencies(clobber clobber-${PROJECT_NAME}) endif() - add_custom_target(clobber-${PROJECT_NAME} - COMMAND git -C ${PROJECT_SOURCE_DIR} clean -d -f -x - ) - set_target_properties(clobber-${PROJECT_NAME} PROPERTIES FOLDER ${PROJECT_NAME}) - add_dependencies(clobber clobber-${PROJECT_NAME}) endif() endmacro() From 98c9d6ee0a5121987b952da20bdc7e409f6fe7fc Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Fri, 18 Nov 2022 11:52:40 +0000 Subject: [PATCH 11/12] Added VSG_ profix to INSTALL_TARGETS_DEFAULT_FLAGS --- cmake/vsgMacros.cmake | 4 ++-- src/vsg/CMakeLists.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/vsgMacros.cmake b/cmake/vsgMacros.cmake index 1d8b29f81f..70a31534b4 100644 --- a/cmake/vsgMacros.cmake +++ b/cmake/vsgMacros.cmake @@ -60,7 +60,7 @@ macro(vsg_setup_dir_vars) # set up local bin directory to place all binaries make_directory(${OUTPUT_BINDIR}) make_directory(${OUTPUT_LIBDIR}) - set(INSTALL_TARGETS_DEFAULT_FLAGS + set(VSG_INSTALL_TARGETS_DEFAULT_FLAGS EXPORT ${PROJECT_NAME}Targets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_BINDIR} @@ -71,7 +71,7 @@ macro(vsg_setup_dir_vars) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_LIBDIR}) # set up local bin directory to place all binaries make_directory(${OUTPUT_LIBDIR}) - set(INSTALL_TARGETS_DEFAULT_FLAGS + set(VSG_INSTALL_TARGETS_DEFAULT_FLAGS EXPORT ${PROJECT_NAME}Targets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} diff --git a/src/vsg/CMakeLists.txt b/src/vsg/CMakeLists.txt index 75d5beeb07..0c0d699dd1 100644 --- a/src/vsg/CMakeLists.txt +++ b/src/vsg/CMakeLists.txt @@ -450,7 +450,7 @@ if (NOT(${VSG_BINARY_DIR} STREQUAL ${VSG_SOURCE_DIR})) endif() # install lib -install(TARGETS vsg ${INSTALL_TARGETS_DEFAULT_FLAGS}) +install(TARGETS vsg ${VSG_INSTALL_TARGETS_DEFAULT_FLAGS}) # instal cmake config files. install( From cb2c3cbf146d8a97f08d617ba7d627a5902a2f31 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Fri, 18 Nov 2022 12:12:12 +0000 Subject: [PATCH 12/12] Added INSTALL_TARGETS_DEFAULT_FLAGS for backwards compatibility. --- cmake/vsgMacros.cmake | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cmake/vsgMacros.cmake b/cmake/vsgMacros.cmake index 70a31534b4..cb3ba25b02 100644 --- a/cmake/vsgMacros.cmake +++ b/cmake/vsgMacros.cmake @@ -77,8 +77,11 @@ macro(vsg_setup_dir_vars) LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - ) + ) endif() + + # provide backwards compatibility to VulkanSceneGraph-1.0.0 + set(INSTALL_TARGETS_DEFAULT_FLAGS ${VSG_INSTALL_TARGETS_DEFAULT_FLAGS}) endmacro() #