Home | History | Annotate | Download | only in opt
      1 # Copyright (c) 2016 Google 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 set(SPIRV_TOOLS_OPT_SOURCES
     15   aggressive_dead_code_elim_pass.h
     16   basic_block.h
     17   block_merge_pass.h
     18   build_module.h
     19   ccp_pass.h
     20   cfg_cleanup_pass.h
     21   cfg.h
     22   combine_access_chains.h
     23   common_uniform_elim_pass.h
     24   compact_ids_pass.h
     25   composite.h
     26   const_folding_rules.h
     27   constants.h
     28   copy_prop_arrays.h
     29   dead_branch_elim_pass.h
     30   dead_insert_elim_pass.h
     31   dead_variable_elimination.h
     32   decoration_manager.h
     33   def_use_manager.h
     34   dominator_analysis.h
     35   dominator_tree.h
     36   eliminate_dead_constant_pass.h
     37   eliminate_dead_functions_pass.h
     38   feature_manager.h
     39   flatten_decoration_pass.h
     40   fold.h
     41   folding_rules.h
     42   fold_spec_constant_op_and_composite_pass.h
     43   freeze_spec_constant_value_pass.h
     44   function.h
     45   if_conversion.h
     46   inline_exhaustive_pass.h
     47   inline_opaque_pass.h
     48   inline_pass.h
     49   inst_bindless_check_pass.h
     50   instruction.h
     51   instruction_list.h
     52   instrument_pass.h
     53   ir_builder.h
     54   ir_context.h
     55   ir_loader.h
     56   licm_pass.h
     57   local_access_chain_convert_pass.h
     58   local_redundancy_elimination.h
     59   local_single_block_elim_pass.h
     60   local_single_store_elim_pass.h
     61   local_ssa_elim_pass.h
     62   log.h
     63   loop_dependence.h
     64   loop_descriptor.h
     65   loop_fission.h
     66   loop_fusion.h
     67   loop_fusion_pass.h
     68   loop_peeling.h
     69   loop_unroller.h
     70   loop_utils.h
     71   loop_unswitch_pass.h
     72   mem_pass.h
     73   merge_return_pass.h
     74   module.h
     75   null_pass.h
     76   passes.h
     77   pass.h
     78   pass_manager.h
     79   private_to_local_pass.h
     80   process_lines_pass.h
     81   propagator.h
     82   reduce_load_size.h
     83   redundancy_elimination.h
     84   reflect.h
     85   register_pressure.h
     86   remove_duplicates_pass.h
     87   replace_invalid_opc.h
     88   scalar_analysis.h
     89   scalar_analysis_nodes.h
     90   scalar_replacement_pass.h
     91   set_spec_constant_default_value_pass.h
     92   simplification_pass.h
     93   ssa_rewrite_pass.h
     94   strength_reduction_pass.h
     95   strip_debug_info_pass.h
     96   strip_reflect_info_pass.h
     97   struct_cfg_analysis.h
     98   tree_iterator.h
     99   type_manager.h
    100   types.h
    101   unify_const_pass.h
    102   upgrade_memory_model.h
    103   value_number_table.h
    104   vector_dce.h
    105   workaround1209.h
    106 
    107   aggressive_dead_code_elim_pass.cpp
    108   basic_block.cpp
    109   block_merge_pass.cpp
    110   build_module.cpp
    111   ccp_pass.cpp
    112   cfg_cleanup_pass.cpp
    113   cfg.cpp
    114   combine_access_chains.cpp
    115   common_uniform_elim_pass.cpp
    116   compact_ids_pass.cpp
    117   composite.cpp
    118   const_folding_rules.cpp
    119   constants.cpp
    120   copy_prop_arrays.cpp
    121   dead_branch_elim_pass.cpp
    122   dead_insert_elim_pass.cpp
    123   dead_variable_elimination.cpp
    124   decoration_manager.cpp
    125   def_use_manager.cpp
    126   dominator_analysis.cpp
    127   dominator_tree.cpp
    128   eliminate_dead_constant_pass.cpp
    129   eliminate_dead_functions_pass.cpp
    130   feature_manager.cpp
    131   flatten_decoration_pass.cpp
    132   fold.cpp
    133   folding_rules.cpp
    134   fold_spec_constant_op_and_composite_pass.cpp
    135   freeze_spec_constant_value_pass.cpp
    136   function.cpp
    137   if_conversion.cpp
    138   inline_exhaustive_pass.cpp
    139   inline_opaque_pass.cpp
    140   inline_pass.cpp
    141   inst_bindless_check_pass.cpp
    142   instruction.cpp
    143   instruction_list.cpp
    144   instrument_pass.cpp
    145   ir_context.cpp
    146   ir_loader.cpp
    147   licm_pass.cpp
    148   local_access_chain_convert_pass.cpp
    149   local_redundancy_elimination.cpp
    150   local_single_block_elim_pass.cpp
    151   local_single_store_elim_pass.cpp
    152   local_ssa_elim_pass.cpp
    153   loop_dependence.cpp
    154   loop_dependence_helpers.cpp
    155   loop_descriptor.cpp
    156   loop_fission.cpp
    157   loop_fusion.cpp
    158   loop_fusion_pass.cpp
    159   loop_peeling.cpp
    160   loop_utils.cpp
    161   loop_unroller.cpp
    162   loop_unswitch_pass.cpp
    163   mem_pass.cpp
    164   merge_return_pass.cpp
    165   module.cpp
    166   optimizer.cpp
    167   pass.cpp
    168   pass_manager.cpp
    169   private_to_local_pass.cpp
    170   process_lines_pass.cpp
    171   propagator.cpp
    172   reduce_load_size.cpp
    173   redundancy_elimination.cpp
    174   register_pressure.cpp
    175   remove_duplicates_pass.cpp
    176   replace_invalid_opc.cpp
    177   scalar_analysis.cpp
    178   scalar_analysis_simplification.cpp
    179   scalar_replacement_pass.cpp
    180   set_spec_constant_default_value_pass.cpp
    181   simplification_pass.cpp
    182   ssa_rewrite_pass.cpp
    183   strength_reduction_pass.cpp
    184   strip_debug_info_pass.cpp
    185   strip_reflect_info_pass.cpp
    186   struct_cfg_analysis.cpp
    187   type_manager.cpp
    188   types.cpp
    189   unify_const_pass.cpp
    190   upgrade_memory_model.cpp
    191   value_number_table.cpp
    192   vector_dce.cpp
    193   workaround1209.cpp
    194 )
    195 
    196 if(MSVC)
    197   # Enable parallel builds across four cores for this lib
    198   add_definitions(/MP4)
    199 endif()
    200 
    201 spvtools_pch(SPIRV_TOOLS_OPT_SOURCES pch_source_opt)
    202 
    203 add_library(SPIRV-Tools-opt ${SPIRV_TOOLS_OPT_SOURCES})
    204 
    205 spvtools_default_compile_options(SPIRV-Tools-opt)
    206 target_include_directories(SPIRV-Tools-opt
    207   PUBLIC ${spirv-tools_SOURCE_DIR}/include
    208   PUBLIC ${SPIRV_HEADER_INCLUDE_DIR}
    209   PRIVATE ${spirv-tools_BINARY_DIR}
    210 )
    211 # We need the assembling and disassembling functionalities in the main library.
    212 target_link_libraries(SPIRV-Tools-opt
    213   PUBLIC ${SPIRV_TOOLS})
    214 
    215 set_property(TARGET SPIRV-Tools-opt PROPERTY FOLDER "SPIRV-Tools libraries")
    216 spvtools_check_symbol_exports(SPIRV-Tools-opt)
    217 
    218 if(ENABLE_SPIRV_TOOLS_INSTALL)
    219   install(TARGETS SPIRV-Tools-opt
    220     RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
    221     LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
    222     ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
    223 endif(ENABLE_SPIRV_TOOLS_INSTALL)
    224