# Copyright (c) 2019 Google LLC

# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

if(SPIRV_BUILD_FUZZER)

  file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/protobufs)

  set(PROTOBUF_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/protobufs/spvtoolsfuzz.proto)

  set(
        SPIRV_FUZZ_PROTOC_COMMAND
        "protobuf::protoc"
        CACHE
        STRING
        "The command to invoke the protobuf compiler (protoc). By default it is the protobufs::protoc CMake target. It should be overridden when cross-compiling, such as for Android.")

  add_custom_command(
        OUTPUT protobufs/spvtoolsfuzz.pb.cc protobufs/spvtoolsfuzz.pb.h
        COMMAND "${SPIRV_FUZZ_PROTOC_COMMAND}"
        -I=${CMAKE_CURRENT_SOURCE_DIR}/protobufs
        --cpp_out=protobufs
        ${PROTOBUF_SOURCE}
        DEPENDS ${PROTOBUF_SOURCE}
        COMMENT "Generate protobuf sources from proto definition file."
  )

  set(SPIRV_TOOLS_FUZZ_SOURCES
        added_function_reducer.h
        available_instructions.h
        call_graph.h
        comparator_deep_blocks_first.h
        counter_overflow_id_source.h
        data_descriptor.h
        equivalence_relation.h
        fact_manager/constant_uniform_facts.h
        fact_manager/data_synonym_and_id_equation_facts.h
        fact_manager/dead_block_facts.h
        fact_manager/fact_manager.h
        fact_manager/irrelevant_value_facts.h
        fact_manager/livesafe_function_facts.h
        force_render_red.h
        fuzzer.h
        fuzzer_context.h
        fuzzer_pass.h
        fuzzer_pass_add_access_chains.h
        fuzzer_pass_add_bit_instruction_synonyms.h
        fuzzer_pass_add_composite_extract.h
        fuzzer_pass_add_composite_inserts.h
        fuzzer_pass_add_composite_types.h
        fuzzer_pass_add_copy_memory.h
        fuzzer_pass_add_dead_blocks.h
        fuzzer_pass_add_dead_breaks.h
        fuzzer_pass_add_dead_continues.h
        fuzzer_pass_add_equation_instructions.h
        fuzzer_pass_add_function_calls.h
        fuzzer_pass_add_global_variables.h
        fuzzer_pass_add_image_sample_unused_components.h
        fuzzer_pass_add_loads.h
        fuzzer_pass_add_local_variables.h
        fuzzer_pass_add_loop_preheaders.h
        fuzzer_pass_add_loops_to_create_int_constant_synonyms.h
        fuzzer_pass_add_no_contraction_decorations.h
        fuzzer_pass_add_opphi_synonyms.h
        fuzzer_pass_add_parameters.h
        fuzzer_pass_add_relaxed_decorations.h
        fuzzer_pass_add_stores.h
        fuzzer_pass_add_synonyms.h
        fuzzer_pass_add_vector_shuffle_instructions.h
        fuzzer_pass_adjust_branch_weights.h
        fuzzer_pass_adjust_function_controls.h
        fuzzer_pass_adjust_loop_controls.h
        fuzzer_pass_adjust_memory_operands_masks.h
        fuzzer_pass_adjust_selection_controls.h
        fuzzer_pass_apply_id_synonyms.h
        fuzzer_pass_construct_composites.h
        fuzzer_pass_copy_objects.h
        fuzzer_pass_donate_modules.h
        fuzzer_pass_duplicate_regions_with_selections.h
        fuzzer_pass_expand_vector_reductions.h
        fuzzer_pass_flatten_conditional_branches.h
        fuzzer_pass_inline_functions.h
        fuzzer_pass_invert_comparison_operators.h
        fuzzer_pass_interchange_signedness_of_integer_operands.h
        fuzzer_pass_interchange_zero_like_constants.h
        fuzzer_pass_make_vector_operations_dynamic.h
        fuzzer_pass_merge_blocks.h
        fuzzer_pass_merge_function_returns.h
        fuzzer_pass_mutate_pointers.h
        fuzzer_pass_obfuscate_constants.h
        fuzzer_pass_outline_functions.h
        fuzzer_pass_permute_blocks.h
        fuzzer_pass_permute_function_parameters.h
        fuzzer_pass_permute_instructions.h
        fuzzer_pass_permute_phi_operands.h
        fuzzer_pass_propagate_instructions_down.h
        fuzzer_pass_propagate_instructions_up.h
        fuzzer_pass_push_ids_through_variables.h
        fuzzer_pass_replace_adds_subs_muls_with_carrying_extended.h
        fuzzer_pass_replace_branches_from_dead_blocks_with_exits.h
        fuzzer_pass_replace_copy_memories_with_loads_stores.h
        fuzzer_pass_replace_copy_objects_with_stores_loads.h
        fuzzer_pass_replace_irrelevant_ids.h
        fuzzer_pass_replace_linear_algebra_instructions.h
        fuzzer_pass_replace_loads_stores_with_copy_memories.h
        fuzzer_pass_replace_opphi_ids_from_dead_predecessors.h
        fuzzer_pass_replace_opselects_with_conditional_branches.h
        fuzzer_pass_replace_parameter_with_global.h
        fuzzer_pass_replace_params_with_struct.h
        fuzzer_pass_split_blocks.h
        fuzzer_pass_swap_commutable_operands.h
        fuzzer_pass_swap_conditional_branch_operands.h
        fuzzer_pass_toggle_access_chain_instruction.h
        fuzzer_pass_wrap_regions_in_selections.h
        fuzzer_util.h
        id_use_descriptor.h
        instruction_descriptor.h
        instruction_message.h
        overflow_id_source.h
        pass_management/repeated_pass_instances.h
        pass_management/repeated_pass_manager.h
        pass_management/repeated_pass_manager_looped_with_recommendations.h
        pass_management/repeated_pass_manager_random_with_recommendations.h
        pass_management/repeated_pass_manager_simple.h
        pass_management/repeated_pass_recommender.h
        pass_management/repeated_pass_recommender_standard.h
        protobufs/spirvfuzz_protobufs.h
        pseudo_random_generator.h
        random_generator.h
        replayer.h
        shrinker.h
        transformation.h
        transformation_access_chain.h
        transformation_add_bit_instruction_synonym.h
        transformation_add_constant_boolean.h
        transformation_add_constant_composite.h
        transformation_add_constant_null.h
        transformation_add_constant_scalar.h
        transformation_add_copy_memory.h
        transformation_add_dead_block.h
        transformation_add_dead_break.h
        transformation_add_dead_continue.h
        transformation_add_early_terminator_wrapper.h
        transformation_add_function.h
        transformation_add_global_undef.h
        transformation_add_global_variable.h
        transformation_add_image_sample_unused_components.h
        transformation_add_local_variable.h
        transformation_add_loop_preheader.h
        transformation_add_loop_to_create_int_constant_synonym.h
        transformation_add_no_contraction_decoration.h
        transformation_add_opphi_synonym.h
        transformation_add_parameter.h
        transformation_add_relaxed_decoration.h
        transformation_add_spec_constant_op.h
        transformation_add_synonym.h
        transformation_add_type_array.h
        transformation_add_type_boolean.h
        transformation_add_type_float.h
        transformation_add_type_function.h
        transformation_add_type_int.h
        transformation_add_type_matrix.h
        transformation_add_type_pointer.h
        transformation_add_type_struct.h
        transformation_add_type_vector.h
        transformation_adjust_branch_weights.h
        transformation_composite_construct.h
        transformation_composite_extract.h
        transformation_composite_insert.h
        transformation_compute_data_synonym_fact_closure.h
        transformation_context.h
        transformation_duplicate_region_with_selection.h
        transformation_equation_instruction.h
        transformation_expand_vector_reduction.h
        transformation_flatten_conditional_branch.h
        transformation_function_call.h
        transformation_inline_function.h
        transformation_invert_comparison_operator.h
        transformation_load.h
        transformation_make_vector_operation_dynamic.h
        transformation_merge_blocks.h
        transformation_merge_function_returns.h
        transformation_move_block_down.h
        transformation_move_instruction_down.h
        transformation_mutate_pointer.h
        transformation_outline_function.h
        transformation_permute_function_parameters.h
        transformation_permute_phi_operands.h
        transformation_propagate_instruction_down.h
        transformation_propagate_instruction_up.h
        transformation_push_id_through_variable.h
        transformation_record_synonymous_constants.h
        transformation_replace_add_sub_mul_with_carrying_extended.h
        transformation_replace_boolean_constant_with_constant_binary.h
        transformation_replace_branch_from_dead_block_with_exit.h
        transformation_replace_constant_with_uniform.h
        transformation_replace_copy_memory_with_load_store.h
        transformation_replace_copy_object_with_store_load.h
        transformation_replace_id_with_synonym.h
        transformation_replace_irrelevant_id.h
        transformation_replace_linear_algebra_instruction.h
        transformation_replace_load_store_with_copy_memory.h
        transformation_replace_opphi_id_from_dead_predecessor.h
        transformation_replace_opselect_with_conditional_branch.h
        transformation_replace_parameter_with_global.h
        transformation_replace_params_with_struct.h
        transformation_set_function_control.h
        transformation_set_loop_control.h
        transformation_set_memory_operands_mask.h
        transformation_set_selection_control.h
        transformation_split_block.h
        transformation_store.h
        transformation_swap_commutable_operands.h
        transformation_swap_conditional_branch_operands.h
        transformation_toggle_access_chain_instruction.h
        transformation_vector_shuffle.h
        transformation_wrap_early_terminator_in_function.h
        transformation_wrap_region_in_selection.h
        uniform_buffer_element_descriptor.h
        ${CMAKE_CURRENT_BINARY_DIR}/protobufs/spvtoolsfuzz.pb.h

        added_function_reducer.cpp
        available_instructions.cpp
        call_graph.cpp
        counter_overflow_id_source.cpp
        data_descriptor.cpp
        fact_manager/constant_uniform_facts.cpp
        fact_manager/data_synonym_and_id_equation_facts.cpp
        fact_manager/dead_block_facts.cpp
        fact_manager/fact_manager.cpp
        fact_manager/irrelevant_value_facts.cpp
        fact_manager/livesafe_function_facts.cpp
        force_render_red.cpp
        fuzzer.cpp
        fuzzer_context.cpp
        fuzzer_pass.cpp
        fuzzer_pass_add_access_chains.cpp
        fuzzer_pass_add_bit_instruction_synonyms.cpp
        fuzzer_pass_add_composite_extract.cpp
        fuzzer_pass_add_composite_inserts.cpp
        fuzzer_pass_add_composite_types.cpp
        fuzzer_pass_add_copy_memory.cpp
        fuzzer_pass_add_dead_blocks.cpp
        fuzzer_pass_add_dead_breaks.cpp
        fuzzer_pass_add_dead_continues.cpp
        fuzzer_pass_add_equation_instructions.cpp
        fuzzer_pass_add_function_calls.cpp
        fuzzer_pass_add_global_variables.cpp
        fuzzer_pass_add_image_sample_unused_components.cpp
        fuzzer_pass_add_loads.cpp
        fuzzer_pass_add_local_variables.cpp
        fuzzer_pass_add_loop_preheaders.cpp
        fuzzer_pass_add_loops_to_create_int_constant_synonyms.cpp
        fuzzer_pass_add_no_contraction_decorations.cpp
        fuzzer_pass_add_opphi_synonyms.cpp
        fuzzer_pass_add_parameters.cpp
        fuzzer_pass_add_relaxed_decorations.cpp
        fuzzer_pass_add_stores.cpp
        fuzzer_pass_add_synonyms.cpp
        fuzzer_pass_add_vector_shuffle_instructions.cpp
        fuzzer_pass_adjust_branch_weights.cpp
        fuzzer_pass_adjust_function_controls.cpp
        fuzzer_pass_adjust_loop_controls.cpp
        fuzzer_pass_adjust_memory_operands_masks.cpp
        fuzzer_pass_adjust_selection_controls.cpp
        fuzzer_pass_apply_id_synonyms.cpp
        fuzzer_pass_construct_composites.cpp
        fuzzer_pass_copy_objects.cpp
        fuzzer_pass_donate_modules.cpp
        fuzzer_pass_duplicate_regions_with_selections.cpp
        fuzzer_pass_expand_vector_reductions.cpp
        fuzzer_pass_flatten_conditional_branches.cpp
        fuzzer_pass_inline_functions.cpp
        fuzzer_pass_invert_comparison_operators.cpp
        fuzzer_pass_interchange_signedness_of_integer_operands.cpp
        fuzzer_pass_interchange_zero_like_constants.cpp
        fuzzer_pass_make_vector_operations_dynamic.cpp
        fuzzer_pass_merge_blocks.cpp
        fuzzer_pass_merge_function_returns.cpp
        fuzzer_pass_mutate_pointers.cpp
        fuzzer_pass_obfuscate_constants.cpp
        fuzzer_pass_outline_functions.cpp
        fuzzer_pass_permute_blocks.cpp
        fuzzer_pass_permute_function_parameters.cpp
        fuzzer_pass_permute_instructions.cpp
        fuzzer_pass_permute_phi_operands.cpp
        fuzzer_pass_propagate_instructions_down.cpp
        fuzzer_pass_propagate_instructions_up.cpp
        fuzzer_pass_push_ids_through_variables.cpp
        fuzzer_pass_replace_adds_subs_muls_with_carrying_extended.cpp
        fuzzer_pass_replace_branches_from_dead_blocks_with_exits.cpp
        fuzzer_pass_replace_copy_memories_with_loads_stores.cpp
        fuzzer_pass_replace_copy_objects_with_stores_loads.cpp
        fuzzer_pass_replace_irrelevant_ids.cpp
        fuzzer_pass_replace_linear_algebra_instructions.cpp
        fuzzer_pass_replace_loads_stores_with_copy_memories.cpp
        fuzzer_pass_replace_opphi_ids_from_dead_predecessors.cpp
        fuzzer_pass_replace_opselects_with_conditional_branches.cpp
        fuzzer_pass_replace_parameter_with_global.cpp
        fuzzer_pass_replace_params_with_struct.cpp
        fuzzer_pass_split_blocks.cpp
        fuzzer_pass_swap_commutable_operands.cpp
        fuzzer_pass_swap_conditional_branch_operands.cpp
        fuzzer_pass_toggle_access_chain_instruction.cpp
        fuzzer_pass_wrap_regions_in_selections.cpp
        fuzzer_util.cpp
        id_use_descriptor.cpp
        instruction_descriptor.cpp
        instruction_message.cpp
        overflow_id_source.cpp
        pass_management/repeated_pass_manager.cpp
        pass_management/repeated_pass_manager_looped_with_recommendations.cpp
        pass_management/repeated_pass_manager_random_with_recommendations.cpp
        pass_management/repeated_pass_manager_simple.cpp
        pass_management/repeated_pass_recommender.cpp
        pass_management/repeated_pass_recommender_standard.cpp
        pseudo_random_generator.cpp
        random_generator.cpp
        replayer.cpp
        shrinker.cpp
        transformation.cpp
        transformation_access_chain.cpp
        transformation_add_bit_instruction_synonym.cpp
        transformation_add_constant_boolean.cpp
        transformation_add_constant_composite.cpp
        transformation_add_constant_null.cpp
        transformation_add_constant_scalar.cpp
        transformation_add_copy_memory.cpp
        transformation_add_dead_block.cpp
        transformation_add_dead_break.cpp
        transformation_add_dead_continue.cpp
        transformation_add_early_terminator_wrapper.cpp
        transformation_add_function.cpp
        transformation_add_global_undef.cpp
        transformation_add_global_variable.cpp
        transformation_add_image_sample_unused_components.cpp
        transformation_add_local_variable.cpp
        transformation_add_loop_preheader.cpp
        transformation_add_loop_to_create_int_constant_synonym.cpp
        transformation_add_no_contraction_decoration.cpp
        transformation_add_opphi_synonym.cpp
        transformation_add_parameter.cpp
        transformation_add_relaxed_decoration.cpp
        transformation_add_spec_constant_op.cpp
        transformation_add_synonym.cpp
        transformation_add_type_array.cpp
        transformation_add_type_boolean.cpp
        transformation_add_type_float.cpp
        transformation_add_type_function.cpp
        transformation_add_type_int.cpp
        transformation_add_type_matrix.cpp
        transformation_add_type_pointer.cpp
        transformation_add_type_struct.cpp
        transformation_add_type_vector.cpp
        transformation_adjust_branch_weights.cpp
        transformation_composite_construct.cpp
        transformation_composite_extract.cpp
        transformation_composite_insert.cpp
        transformation_compute_data_synonym_fact_closure.cpp
        transformation_context.cpp
        transformation_duplicate_region_with_selection.cpp
        transformation_equation_instruction.cpp
        transformation_expand_vector_reduction.cpp
        transformation_flatten_conditional_branch.cpp
        transformation_function_call.cpp
        transformation_inline_function.cpp
        transformation_invert_comparison_operator.cpp
        transformation_load.cpp
        transformation_make_vector_operation_dynamic.cpp
        transformation_merge_blocks.cpp
        transformation_merge_function_returns.cpp
        transformation_move_block_down.cpp
        transformation_move_instruction_down.cpp
        transformation_mutate_pointer.cpp
        transformation_outline_function.cpp
        transformation_permute_function_parameters.cpp
        transformation_permute_phi_operands.cpp
        transformation_propagate_instruction_down.cpp
        transformation_propagate_instruction_up.cpp
        transformation_push_id_through_variable.cpp
        transformation_record_synonymous_constants.cpp
        transformation_replace_add_sub_mul_with_carrying_extended.cpp
        transformation_replace_boolean_constant_with_constant_binary.cpp
        transformation_replace_branch_from_dead_block_with_exit.cpp
        transformation_replace_constant_with_uniform.cpp
        transformation_replace_copy_memory_with_load_store.cpp
        transformation_replace_copy_object_with_store_load.cpp
        transformation_replace_id_with_synonym.cpp
        transformation_replace_irrelevant_id.cpp
        transformation_replace_linear_algebra_instruction.cpp
        transformation_replace_load_store_with_copy_memory.cpp
        transformation_replace_opphi_id_from_dead_predecessor.cpp
        transformation_replace_opselect_with_conditional_branch.cpp
        transformation_replace_parameter_with_global.cpp
        transformation_replace_params_with_struct.cpp
        transformation_set_function_control.cpp
        transformation_set_loop_control.cpp
        transformation_set_memory_operands_mask.cpp
        transformation_set_selection_control.cpp
        transformation_split_block.cpp
        transformation_store.cpp
        transformation_swap_commutable_operands.cpp
        transformation_swap_conditional_branch_operands.cpp
        transformation_toggle_access_chain_instruction.cpp
        transformation_vector_shuffle.cpp
        transformation_wrap_early_terminator_in_function.cpp
        transformation_wrap_region_in_selection.cpp
        uniform_buffer_element_descriptor.cpp
        ${CMAKE_CURRENT_BINARY_DIR}/protobufs/spvtoolsfuzz.pb.cc
        )

  if(MSVC AND (NOT ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")))
    # Enable parallel builds across four cores for this lib
    add_definitions(/MP4)
  endif()

  spvtools_pch(SPIRV_TOOLS_FUZZ_SOURCES pch_source_fuzz)

  add_library(SPIRV-Tools-fuzz ${SPIRV_TOOLS_FUZZ_SOURCES})

  spvtools_default_compile_options(SPIRV-Tools-fuzz)

  # Compilation of the auto-generated protobuf source file will yield warnings,
  # which we have no control over and thus wish to ignore.
  if(${COMPILER_IS_LIKE_GNU})
    set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/protobufs/spvtoolsfuzz.pb.cc PROPERTIES COMPILE_FLAGS -w)
  endif()
  if(MSVC)
    set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/protobufs/spvtoolsfuzz.pb.cc PROPERTIES COMPILE_FLAGS /w)
  endif()

  target_include_directories(SPIRV-Tools-fuzz
		PUBLIC
			$<BUILD_INTERFACE:${spirv-tools_SOURCE_DIR}/include>
			$<BUILD_INTERFACE:${SPIRV_HEADER_INCLUDE_DIR}>
			$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
        PRIVATE ${spirv-tools_BINARY_DIR}
        PRIVATE ${CMAKE_BINARY_DIR})

  # The fuzzer reuses a lot of functionality from the SPIRV-Tools library.
  target_link_libraries(SPIRV-Tools-fuzz
        PUBLIC ${SPIRV_TOOLS_FULL_VISIBILITY}
        PUBLIC SPIRV-Tools-opt
        PUBLIC SPIRV-Tools-reduce
        PUBLIC protobuf::libprotobuf)

  set_property(TARGET SPIRV-Tools-fuzz PROPERTY FOLDER "SPIRV-Tools libraries")
  spvtools_check_symbol_exports(SPIRV-Tools-fuzz)

  if(ENABLE_SPIRV_TOOLS_INSTALL)
      install(TARGETS SPIRV-Tools-fuzz EXPORT SPIRV-Tools-fuzzTargets
            RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
            ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
      export(EXPORT SPIRV-Tools-fuzzTargets FILE SPIRV-Tools-fuzzTarget.cmake)

      spvtools_config_package_dir(SPIRV-Tools-fuzz PACKAGE_DIR)
      install(EXPORT SPIRV-Tools-fuzzTargets FILE SPIRV-Tools-fuzzTarget.cmake
            DESTINATION ${PACKAGE_DIR})

      spvtools_generate_config_file(SPIRV-Tools-fuzz)
      install(FILES ${CMAKE_BINARY_DIR}/SPIRV-Tools-fuzzConfig.cmake DESTINATION ${PACKAGE_DIR})
  endif(ENABLE_SPIRV_TOOLS_INSTALL)

endif(SPIRV_BUILD_FUZZER)
