# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

static_library("courgette_lib") {
  sources = [
    "adjustment_method.cc",
    "adjustment_method_2.cc",
    "adjustment_method.h",
    "assembly_program.cc",
    "assembly_program.h",
    "third_party/bsdiff.h",
    "third_party/bsdiff_apply.cc",
    "third_party/bsdiff_create.cc",
    "third_party/paged_array.h",
    "courgette.h",
    "crc.cc",
    "crc.h",
    "difference_estimator.cc",
    "difference_estimator.h",
    "disassembler.cc",
    "disassembler.h",
    "disassembler_elf_32.cc",
    "disassembler_elf_32.h",
    "disassembler_elf_32_arm.cc",
    "disassembler_elf_32_arm.h",
    "disassembler_elf_32_x86.cc",
    "disassembler_elf_32_x86.h",
    "disassembler_win32_x86.cc",
    "disassembler_win32_x86.h",
    "disassembler_win32_x64.cc",
    "disassembler_win32_x64.h",
    "encoded_program.cc",
    "encoded_program.h",
    "ensemble.cc",
    "ensemble.h",
    "ensemble_apply.cc",
    "ensemble_create.cc",
    "memory_allocator.cc",
    "memory_allocator.h",
    "region.h",
    "simple_delta.cc",
    "simple_delta.h",
    "streams.cc",
    "streams.h",
    "types_elf.h",
    "types_win_pe.h",
    "patch_generator_x86_32.h",
    "patcher_x86_32.h",
  ]

  deps = [
    "//base",
    "//third_party/lzma_sdk",
  ]
}

executable("courgette") {
  if (is_win && cpu_arch == "x64") {
    # The build infrastructure needs courgette to be named courgette64.
    output_name = "courgette64"
  }

  sources = [
    "courgette_tool.cc",
  ]

  if (is_win) {
    ldflags = [ "/LARGEADDRESSAWARE" ]
  }

  deps = [
    ":courgette_lib",
    "//base",
  ]
}

executable("courgette_minimal_tool") {
  sources = [
    "courgette_minimal_tool.cc",
  ]

  deps = [
    ":courgette_lib",
    "//base",
  ]
}

test("courgette_unittests") {
  sources = [
    "adjustment_method_unittest.cc",
    "bsdiff_memory_unittest.cc",
    "base_test_unittest.cc",
    "base_test_unittest.h",
    "difference_estimator_unittest.cc",
    "disassembler_elf_32_x86_unittest.cc",
    "disassembler_win32_x86_unittest.cc",
    "disassembler_win32_x64_unittest.cc",
    "encoded_program_unittest.cc",
    "encode_decode_unittest.cc",
    "ensemble_unittest.cc",
    "streams_unittest.cc",
    "typedrva_unittest.cc",
    "versioning_unittest.cc",
    "third_party/paged_array_unittest.cc"
  ]

  if (is_win) {
    # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
    cflags = [ "/wd4267" ]
  }

  deps = [
    ":courgette_lib",
    "//base",
    "//base:i18n",
    "//base/allocator",
    "//base/test:run_all_unittests",
    "//base/test:test_support",
    "//testing/gtest",
  ]
}

test("courgette_fuzz") {
  sources = [
    "base_test_unittest.cc",
    "base_test_unittest.h",
    "encoded_program_fuzz_unittest.cc",
  ]
  deps = [
    ":courgette_lib",
    "//base",
    "//base:i18n",
    "//base/test:test_support",
    "//testing/gtest",
  ]
}