group("third_party")
project("spirv-tools")
  uuid("621512da-bb50-40f2-85ba-ae615ff13e68")
  kind("StaticLib")
  language("C++")
  links({
  })
  defines({
    "_LIB",
  })
  includedirs({
    "spirv-headers/include",
    "spirv-tools/include",
    "spirv-tools/source",
  })
  files({
    "spirv-tools/include/spirv-tools/libspirv.h",
    "spirv-tools/source/val/basic_block.cpp",
    "spirv-tools/source/val/basic_block.h",
    "spirv-tools/source/val/construct.cpp",
    "spirv-tools/source/val/construct.h",
    "spirv-tools/source/val/function.cpp",
    "spirv-tools/source/val/function.h",
    "spirv-tools/source/val/validation_state.cpp",
    "spirv-tools/source/val/validation_state.h",
    "spirv-tools/source/util/*.cpp",
    "spirv-tools/source/util/*.h",
    "spirv-tools/source/val/*.cpp",
    "spirv-tools/source/val/*.h",
    "spirv-tools/source/*.inc",
    "spirv-tools/source/*.cpp",
    "spirv-tools/source/*.h",
    "spirv-tools/source/assembly_grammar.cpp",
    "spirv-tools/source/assembly_grammar.h",
    "spirv-tools/source/binary.cpp",
    "spirv-tools/source/binary.h",
    "spirv-tools/source/diagnostic.cpp",
    "spirv-tools/source/diagnostic.h",
    "spirv-tools/source/disassemble.cpp",
    "spirv-tools/source/ext_inst.cpp",
    "spirv-tools/source/ext_inst.h",
    "spirv-tools/source/instruction.h",
    "spirv-tools/source/macro.h",
    "spirv-tools/source/opcode.cpp",
    "spirv-tools/source/opcode.h",
    "spirv-tools/source/operand.cpp",
    "spirv-tools/source/operand.h",
    "spirv-tools/source/print.cpp",
    "spirv-tools/source/print.h",
    -- "spirv-tools/source/software_version.cpp",
    "spirv-tools/source/spirv_constant.h",
    "spirv-tools/source/spirv_definition.h",
    "spirv-tools/source/spirv_endian.cpp",
    "spirv-tools/source/spirv_endian.h",
    "spirv-tools/source/spirv_target_env.cpp",
    "spirv-tools/source/spirv_target_env.h",
    "spirv-tools/source/table.cpp",
    "spirv-tools/source/table.h",
    "spirv-tools/source/text.cpp",
    "spirv-tools/source/text.h",
    "spirv-tools/source/text_handler.cpp",
    "spirv-tools/source/text_handler.h",
    "spirv-tools/source/validate.cpp",
    "spirv-tools/source/validate.h",
    "spirv-tools/source/validate_cfg.cpp",
    "spirv-tools/source/validate_id.cpp",
    "spirv-tools/source/validate_instruction.cpp",
    "spirv-tools/source/validate_layout.cpp",
    "spirv-tools/source/util/bitutils.h",
    "spirv-tools/source/util/hex_float.h",
  })
  filter("platforms:Windows")
    buildoptions({
      "/wd4800",  -- Forcing value to bool 'true' or 'false'
      "/wd4996",  -- Call to 'std::equal' with parameters that may be unsafe
    })