# 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
        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_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_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_up.h
        fuzzer_pass_push_ids_through_variables.h
        fuzzer_pass_replace_adds_subs_muls_with_carrying_extended.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_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_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_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_region_in_selection.h
        uniform_buffer_element_descriptor.h
        ${CMAKE_CURRENT_BINARY_DIR}/protobufs/spvtoolsfuzz.pb.h

        added_function_reducer.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_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_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_up.cpp
        fuzzer_pass_push_ids_through_variables.cpp
        fuzzer_pass_replace_adds_subs_muls_with_carrying_extended.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_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_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_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_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}-static
        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)
