From 5c3c054c1fe6c8dfa27adf2bdec3b7a9db3e53ea Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Wed, 5 Apr 2017 17:32:39 -0400 Subject: [PATCH] Group targets into folders This plays nicer with IDEs. --- CMakeLists.txt | 1 + examples/CMakeLists.txt | 20 ++++++++++++++++++++ examples/cpp-interface/CMakeLists.txt | 10 +++++----- external/CMakeLists.txt | 11 +++++++++++ source/CMakeLists.txt | 5 ++++- source/opt/CMakeLists.txt | 2 ++ test/CMakeLists.txt | 1 + tools/CMakeLists.txt | 3 ++- 8 files changed, 46 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0cb338a..b5250d4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,6 +19,7 @@ if (POLICY CMP0054) # https://cmake.org/cmake/help/v3.1/policy/CMP0054.html cmake_policy(SET CMP0054 NEW) endif() +set_property(GLOBAL PROPERTY USE_FOLDERS ON) project(spirv-tools) enable_testing() diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 1dfaf87..fd627cb 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -12,4 +12,24 @@ # See the License for the specific language governing permissions and # limitations under the License. +# Add a SPIR-V Tools example. Signature: +# add_spvtools_example( +# TARGET target_name +# SRCS src_file1.cpp src_file2.cpp +# LIBS lib_target1 lib_target2 +# ) +function(add_spvtools_example) + if (NOT ${SPIRV_SKIP_EXECUTABLES}) + set(one_value_args TARGET) + set(multi_value_args SRCS LIBS) + cmake_parse_arguments( + ARG "" "${one_value_args}" "${multi_value_args}" ${ARGN}) + + add_executable(${ARG_TARGET} ${ARG_SRCS}) + spvtools_default_compile_options(${ARG_TARGET}) + target_link_libraries(${ARG_TARGET} PRIVATE ${ARG_LIBS}) + set_property(TARGET ${ARG_TARGET} PROPERTY FOLDER "SPIRV-Tools examples") + endif() +endfunction() + add_subdirectory(cpp-interface) diff --git a/examples/cpp-interface/CMakeLists.txt b/examples/cpp-interface/CMakeLists.txt index 14f9937..d050b07 100644 --- a/examples/cpp-interface/CMakeLists.txt +++ b/examples/cpp-interface/CMakeLists.txt @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -if (NOT ${SPIRV_SKIP_EXECUTABLES}) - add_executable(spirv-tools-cpp-example main.cpp) - spvtools_default_compile_options(spirv-tools-cpp-example) - target_link_libraries(spirv-tools-cpp-example PRIVATE SPIRV-Tools-opt) -endif() +add_spvtools_example( + TARGET spirv-tools-cpp-example + SRCS main.cpp + LIBS SPIRV-Tools-opt +) \ No newline at end of file diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index 182724e..ba5207f 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -43,4 +43,15 @@ if (NOT ${SPIRV_SKIP_EXECUTABLES}) add_subdirectory(${GMOCK_DIR}) endif() endif() + if (TARGET gmock) + set(GTEST_TARGETS + gtest + gtest_main + gmock + gmock_main + ) + foreach(target ${GTEST_TARGETS}) + set_property(TARGET ${target} PROPERTY FOLDER GoogleTest) + endforeach() + endif() endif() diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 1709bbf..eaff213 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -106,6 +106,7 @@ macro(spvtools_vendor_tables VENDOR_TABLE) COMMENT "Generate extended instruction tables for ${VENDOR_TABLE}.") list(APPEND EXTINST_CPP_DEPENDS ${INSTS_FILE}) add_custom_target(spirv-tools-${VENDOR_TABLE} DEPENDS ${INSTS_FILE}) + set_property(TARGET spirv-tools-${VENDOR_TABLE} PROPERTY FOLDER "SPIRV-Tools build") endmacro(spvtools_vendor_tables) spvtools_core_tables("1.0") @@ -117,7 +118,7 @@ spvtools_vendor_tables("spv-amd-gcn-shader") spvtools_vimsyntax("1.1" "1.0") add_custom_target(spirv-tools-vimsyntax DEPENDS ${VIMSYNTAX_FILE}) - +set_property(TARGET spirv-tools-vimsyntax PROPERTY FOLDER "SPIRV-Tools utilities") # Extract the list of known generators from the SPIR-V XML registry file. set(GENERATOR_INC_FILE ${spirv-tools_BINARY_DIR}/generators.inc) @@ -181,6 +182,7 @@ add_custom_command(OUTPUT ${SPIRV_TOOLS_BUILD_VERSION_INC} # This is not required for any dependence chain. add_custom_target(spirv-tools-build-version DEPENDS ${SPIRV_TOOLS_BUILD_VERSION_INC}) +set_property(TARGET spirv-tools-build-version PROPERTY FOLDER "SPIRV-Tools build") add_subdirectory(opt) @@ -276,6 +278,7 @@ target_include_directories(${SPIRV_TOOLS} PRIVATE ${spirv-tools_BINARY_DIR} PRIVATE ${SPIRV_HEADER_INCLUDE_DIR} ) +set_property(TARGET ${SPIRV_TOOLS} PROPERTY FOLDER "SPIRV-Tools libraries") install(TARGETS ${SPIRV_TOOLS} RUNTIME DESTINATION bin diff --git a/source/opt/CMakeLists.txt b/source/opt/CMakeLists.txt index 55949c8..917086c 100644 --- a/source/opt/CMakeLists.txt +++ b/source/opt/CMakeLists.txt @@ -66,6 +66,8 @@ target_include_directories(SPIRV-Tools-opt target_link_libraries(SPIRV-Tools-opt PUBLIC ${SPIRV_TOOLS}) +set_property(TARGET SPIRV-Tools-opt PROPERTY FOLDER "SPIRV-Tools libraries") + install(TARGETS SPIRV-Tools-opt RUNTIME DESTINATION bin LIBRARY DESTINATION lib diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 79c2684..98cc771 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -59,6 +59,7 @@ function(add_spvtools_unittest) target_link_libraries(${target} PRIVATE ${ARG_LIBS}) target_link_libraries(${target} PRIVATE gmock_main) add_test(NAME spirv-tools-${target} COMMAND ${target}) + set_property(TARGET ${target} PROPERTY FOLDER "SPIRV-Tools tests") endif() endfunction() diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index ac680f8..535f4fe 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -33,7 +33,8 @@ function(add_spvtools_tool) target_include_directories(${ARG_TARGET} PRIVATE ${spirv-tools_SOURCE_DIR} ${spirv-tools_BINARY_DIR} -) + ) + set_property(TARGET ${ARG_TARGET} PROPERTY FOLDER "SPIRV-Tools executables") endfunction() if (NOT ${SPIRV_SKIP_EXECUTABLES}) -- 2.7.4