Home | History | Annotate | Download | only in tools
      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