# Copyright 2017 The Fuchsia Authors. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
#    * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#    * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
#    * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

config("lzma_private_config") {
  visibility = [ ":*" ]
  defines = [ "HAVE_CONFIG_H" ]
  include_dirs = [ target_gen_dir ]
}

config("lzma_config") {
  include_dirs = [ "src/liblzma/api" ]
}

config("lzma_warnings") {
  visibility = [ ":*" ]
  cflags = [ "-Wno-sign-compare" ]
}

copy("copy_lzma_config") {
  visibility = [ ":*" ]
  if (is_fuchsia) {
    sources = [
      "config.h.fuchsia",
    ]
  } else {
    sources = [
      "config.h",
    ]
  }
  outputs = [
    "$target_gen_dir/config.h",
  ]
}

group("lzma_settings") {
  visibility = [ ":*" ]
  public_configs = [ ":lzma_private_config" ]
  deps = [
    ":copy_lzma_config",
  ]
}

target(default_library_type, "lzma") {
  public_configs = [ ":lzma_config" ]
  include_dirs = [
    "src/common",
    "src/liblzma/check",
    "src/liblzma/common",
    "src/liblzma/delta",
    "src/liblzma/lz",
    "src/liblzma/lzma",
    "src/liblzma/rangecoder",
    "src/liblzma/simple",
  ]
  sources = [
    "src/common/tuklib_cpucores.c",
    "src/common/tuklib_cpucores.h",
    "src/common/tuklib_physmem.c",
    "src/common/tuklib_physmem.h",
    "src/liblzma/check/check.c",
    "src/liblzma/check/check.h",
    "src/liblzma/check/crc32_table.c",
    "src/liblzma/check/crc32_table_be.h",
    "src/liblzma/check/crc32_table_le.h",
    "src/liblzma/check/crc64_table.c",
    "src/liblzma/check/crc64_table_be.h",
    "src/liblzma/check/crc64_table_le.h",
    "src/liblzma/check/crc_macros.h",
    "src/liblzma/check/sha256.c",
    "src/liblzma/common/alone_decoder.c",
    "src/liblzma/common/alone_encoder.c",
    "src/liblzma/common/auto_decoder.c",
    "src/liblzma/common/block_buffer_decoder.c",
    "src/liblzma/common/block_buffer_encoder.c",
    "src/liblzma/common/block_decoder.c",
    "src/liblzma/common/block_encoder.c",
    "src/liblzma/common/block_header_decoder.c",
    "src/liblzma/common/block_header_encoder.c",
    "src/liblzma/common/block_util.c",
    "src/liblzma/common/common.c",
    "src/liblzma/common/common.h",
    "src/liblzma/common/easy_buffer_encoder.c",
    "src/liblzma/common/easy_decoder_memusage.c",
    "src/liblzma/common/easy_encoder.c",
    "src/liblzma/common/easy_encoder_memusage.c",
    "src/liblzma/common/easy_preset.c",
    "src/liblzma/common/filter_buffer_decoder.c",
    "src/liblzma/common/filter_buffer_encoder.c",
    "src/liblzma/common/filter_common.c",
    "src/liblzma/common/filter_decoder.c",
    "src/liblzma/common/filter_encoder.c",
    "src/liblzma/common/filter_flags_decoder.c",
    "src/liblzma/common/filter_flags_encoder.c",
    "src/liblzma/common/hardware_cputhreads.c",
    "src/liblzma/common/hardware_physmem.c",
    "src/liblzma/common/index.c",
    "src/liblzma/common/index_decoder.c",
    "src/liblzma/common/index_encoder.c",
    "src/liblzma/common/index_hash.c",
    "src/liblzma/common/outqueue.c",
    "src/liblzma/common/stream_buffer_decoder.c",
    "src/liblzma/common/stream_buffer_encoder.c",
    "src/liblzma/common/stream_decoder.c",
    "src/liblzma/common/stream_encoder.c",
    "src/liblzma/common/stream_encoder_mt.c",
    "src/liblzma/common/stream_flags_common.c",
    "src/liblzma/common/stream_flags_decoder.c",
    "src/liblzma/common/stream_flags_encoder.c",
    "src/liblzma/common/vli_decoder.c",
    "src/liblzma/common/vli_encoder.c",
    "src/liblzma/common/vli_size.c",
    "src/liblzma/delta/delta_common.c",
    "src/liblzma/delta/delta_common.h",
    "src/liblzma/delta/delta_decoder.c",
    "src/liblzma/delta/delta_decoder.h",
    "src/liblzma/delta/delta_encoder.c",
    "src/liblzma/delta/delta_encoder.h",
    "src/liblzma/delta/delta_private.h",
    "src/liblzma/lz/lz_decoder.c",
    "src/liblzma/lz/lz_decoder.h",
    "src/liblzma/lz/lz_encoder.c",
    "src/liblzma/lz/lz_encoder.h",
    "src/liblzma/lz/lz_encoder_hash.h",
    "src/liblzma/lz/lz_encoder_hash_table.h",
    "src/liblzma/lz/lz_encoder_mf.c",
    "src/liblzma/lzma/fastpos.h",
    "src/liblzma/lzma/fastpos_table.c",
    "src/liblzma/lzma/lzma2_decoder.c",
    "src/liblzma/lzma/lzma2_decoder.h",
    "src/liblzma/lzma/lzma2_encoder.c",
    "src/liblzma/lzma/lzma2_encoder.h",
    "src/liblzma/lzma/lzma_decoder.c",
    "src/liblzma/lzma/lzma_decoder.h",
    "src/liblzma/lzma/lzma_encoder.c",
    "src/liblzma/lzma/lzma_encoder.h",
    "src/liblzma/lzma/lzma_encoder_optimum_fast.c",
    "src/liblzma/lzma/lzma_encoder_optimum_normal.c",
    "src/liblzma/lzma/lzma_encoder_presets.c",
    "src/liblzma/lzma/lzma_encoder_private.h",
    "src/liblzma/rangecoder/price.h",
    "src/liblzma/rangecoder/price_common.h",
    "src/liblzma/rangecoder/price_decoder.h",
    "src/liblzma/rangecoder/price_encoder.h",
    "src/liblzma/rangecoder/price_table.c",
    "src/liblzma/simple/simple_coder.c",
    "src/liblzma/simple/simple_coder.h",
    "src/liblzma/simple/simple_decoder.c",
    "src/liblzma/simple/simple_decoder.h",
    "src/liblzma/simple/simple_encoder.c",
    "src/liblzma/simple/simple_encoder.h",
    "src/liblzma/simple/simple_private.h",
  ]
  if (current_cpu == "arm") {
    sources += [ "src/liblzma/simple/arm.c" ]
  } else if (current_cpu == "x86") {
    sources += [ "src/liblzma/simple/x86.c" ]
  }
  if (current_cpu == "x86") {
    sources += [
      "src/liblzma/check/crc32_x86.S",
      "src/liblzma/check/crc64_x86.S",
    ]
  } else {
    sources += [
      "src/liblzma/check/crc32_fast.c",
      "src/liblzma/check/crc64_fast.c",
    ]
  }
  configs += [ ":lzma_warnings" ]
  configs -= [ "//build/config:symbol_visibility_hidden" ]
  deps = [
    ":lzma_settings",
  ]
}

executable("lzmainfo") {
  include_dirs = [ "src/common" ]
  sources = [
    "src/common/tuklib_exit.c",
    "src/common/tuklib_progname.c",
    "src/lzmainfo/lzmainfo.c",
  ]
  if (is_win) {
    sources += [ "src/lzmainfo/lzmainfo_w32res.rc" ]
  }
  deps = [
    ":lzma",
  ]
}

executable("xz") {
  if (is_linux) {
    defines = [ "_GNU_SOURCE" ]
  }
  include_dirs = [ "src/common" ]
  sources = [
    "src/common/tuklib_exit.c",
    "src/common/tuklib_mbstr_fw.c",
    "src/common/tuklib_mbstr_width.c",
    "src/common/tuklib_open_stdxxx.c",
    "src/common/tuklib_progname.c",
    "src/xz/args.c",
    "src/xz/args.h",
    "src/xz/coder.c",
    "src/xz/coder.h",
    "src/xz/file_io.c",
    "src/xz/file_io.h",
    "src/xz/hardware.c",
    "src/xz/hardware.h",
    "src/xz/list.c",
    "src/xz/list.h",
    "src/xz/main.c",
    "src/xz/main.h",
    "src/xz/message.c",
    "src/xz/message.h",
    "src/xz/mytime.c",
    "src/xz/mytime.h",
    "src/xz/options.c",
    "src/xz/options.h",
    "src/xz/private.h",
    "src/xz/signals.c",
    "src/xz/signals.h",
    "src/xz/suffix.c",
    "src/xz/suffix.h",
    "src/xz/util.c",
    "src/xz/util.h",
  ]
  if (is_win) {
    sources += [ "src/xz/xz_w32res.rc" ]
  }
  deps = [
    ":lzma",
    ":lzma_settings",
  ]
}

executable("xzdec") {
  if (is_linux) {
    defines = [ "_GNU_SOURCE" ]
  }
  include_dirs = [ "src/common" ]
  sources = [
    "src/common/tuklib_exit.c",
    "src/common/tuklib_progname.c",
    "src/xzdec/xzdec.c",
  ]
  if (is_win) {
    sources += [ "src/xzdec/xzdec_w32res.rc" ]
  }
  deps = [
    ":lzma",
    ":lzma_settings",
  ]
}
