1 # Copyright (c) 2015-2016 The Khronos Group Inc. 2 # 3 # Licensed under the Apache License, Version 2.0 (the "License"); 4 # you may not use this file except in compliance with the License. 5 # You may obtain a copy of the License at 6 # 7 # http://www.apache.org/licenses/LICENSE-2.0 8 # 9 # Unless required by applicable law or agreed to in writing, software 10 # distributed under the License is distributed on an "AS IS" BASIS, 11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 # See the License for the specific language governing permissions and 13 # limitations under the License. 14 15 add_subdirectory(lesspipe) 16 add_subdirectory(emacs) 17 18 # Add a SPIR-V Tools command line tool. Signature: 19 # add_spvtools_tool( 20 # TARGET target_name 21 # SRCS src_file1.cpp src_file2.cpp 22 # LIBS lib_target1 lib_target2 23 # ) 24 function(add_spvtools_tool) 25 set(one_value_args TARGET) 26 set(multi_value_args SRCS LIBS) 27 cmake_parse_arguments( 28 ARG "" "${one_value_args}" "${multi_value_args}" ${ARGN}) 29 30 add_executable(${ARG_TARGET} ${ARG_SRCS}) 31 spvtools_default_compile_options(${ARG_TARGET}) 32 target_link_libraries(${ARG_TARGET} PRIVATE ${ARG_LIBS}) 33 target_include_directories(${ARG_TARGET} PRIVATE 34 ${spirv-tools_SOURCE_DIR} 35 ${spirv-tools_BINARY_DIR} 36 ) 37 set_property(TARGET ${ARG_TARGET} PROPERTY FOLDER "SPIRV-Tools executables") 38 endfunction() 39 40 if (NOT ${SPIRV_SKIP_EXECUTABLES}) 41 add_spvtools_tool(TARGET spirv-as SRCS as/as.cpp LIBS ${SPIRV_TOOLS}) 42 add_spvtools_tool(TARGET spirv-dis SRCS dis/dis.cpp LIBS ${SPIRV_TOOLS}) 43 add_spvtools_tool(TARGET spirv-val SRCS val/val.cpp util/cli_consumer.cpp LIBS ${SPIRV_TOOLS}) 44 add_spvtools_tool(TARGET spirv-opt SRCS opt/opt.cpp util/cli_consumer.cpp LIBS SPIRV-Tools-opt ${SPIRV_TOOLS}) 45 add_spvtools_tool(TARGET spirv-reduce SRCS reduce/reduce.cpp util/cli_consumer.cpp LIBS SPIRV-Tools-reduce ${SPIRV_TOOLS}) 46 add_spvtools_tool(TARGET spirv-link SRCS link/linker.cpp LIBS SPIRV-Tools-link ${SPIRV_TOOLS}) 47 add_spvtools_tool(TARGET spirv-stats 48 SRCS stats/stats.cpp 49 stats/stats_analyzer.cpp 50 stats/stats_analyzer.h 51 stats/spirv_stats.cpp 52 stats/spirv_stats.h 53 LIBS ${SPIRV_TOOLS}) 54 add_spvtools_tool(TARGET spirv-cfg 55 SRCS cfg/cfg.cpp 56 cfg/bin_to_dot.h 57 cfg/bin_to_dot.cpp 58 LIBS ${SPIRV_TOOLS}) 59 target_include_directories(spirv-cfg PRIVATE ${spirv-tools_SOURCE_DIR} 60 ${SPIRV_HEADER_INCLUDE_DIR}) 61 target_include_directories(spirv-stats PRIVATE ${spirv-tools_SOURCE_DIR} 62 ${SPIRV_HEADER_INCLUDE_DIR}) 63 64 set(SPIRV_INSTALL_TARGETS spirv-as spirv-dis spirv-val spirv-opt spirv-stats 65 spirv-cfg spirv-link spirv-reduce) 66 67 if(SPIRV_BUILD_COMPRESSION) 68 add_spvtools_tool(TARGET spirv-markv 69 SRCS comp/markv.cpp 70 comp/markv_model_factory.cpp 71 comp/markv_model_shader.cpp 72 LIBS SPIRV-Tools-comp SPIRV-Tools-opt ${SPIRV_TOOLS}) 73 target_include_directories(spirv-markv PRIVATE ${spirv-tools_SOURCE_DIR} 74 ${SPIRV_HEADER_INCLUDE_DIR}) 75 set(SPIRV_INSTALL_TARGETS ${SPIRV_INSTALL_TARGETS} spirv-markv) 76 endif(SPIRV_BUILD_COMPRESSION) 77 78 if(ENABLE_SPIRV_TOOLS_INSTALL) 79 install(TARGETS ${SPIRV_INSTALL_TARGETS} 80 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} 81 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 82 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) 83 endif(ENABLE_SPIRV_TOOLS_INSTALL) 84 endif() 85