# 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("archive_private_config") {
  visibility = [ ":*" ]
  defines = [ "HAVE_CONFIG_H" ]
  include_dirs = [ target_gen_dir ]
}

config("archive_config") {
  include_dirs = [ "libarchive" ]
}

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

group("archive_settings") {
  visibility = [ ":*" ]
  public_configs = [ ":archive_private_config" ]
  deps = [
    ":copy_archive_config",
  ]
}

target(default_library_type, "archive") {
  public_configs = [ ":archive_config" ]
  public = [
    "libarchive/archive.h",
    "libarchive/archive_entry.h",
  ]
  sources = [
    "libarchive/archive_acl.c",
    "libarchive/archive_acl_private.h",
    "libarchive/archive_check_magic.c",
    "libarchive/archive_cmdline.c",
    "libarchive/archive_cmdline_private.h",
    "libarchive/archive_crc32.h",
    "libarchive/archive_cryptor.c",
    "libarchive/archive_cryptor_private.h",
    "libarchive/archive_digest.c",
    "libarchive/archive_digest_private.h",
    "libarchive/archive_endian.h",
    "libarchive/archive_entry.c",
    "libarchive/archive_entry.h",
    "libarchive/archive_entry_copy_stat.c",
    "libarchive/archive_entry_link_resolver.c",
    "libarchive/archive_entry_locale.h",
    "libarchive/archive_entry_private.h",
    "libarchive/archive_entry_sparse.c",
    "libarchive/archive_entry_stat.c",
    "libarchive/archive_entry_strmode.c",
    "libarchive/archive_entry_xattr.c",
    "libarchive/archive_getdate.c",
    "libarchive/archive_getdate.h",
    "libarchive/archive_hmac.c",
    "libarchive/archive_hmac_private.h",
    "libarchive/archive_match.c",
    "libarchive/archive_openssl_evp_private.h",
    "libarchive/archive_openssl_hmac_private.h",
    "libarchive/archive_options.c",
    "libarchive/archive_options_private.h",
    "libarchive/archive_pack_dev.c",
    "libarchive/archive_pack_dev.h",
    "libarchive/archive_pathmatch.c",
    "libarchive/archive_pathmatch.h",
    "libarchive/archive_platform.h",
    "libarchive/archive_platform_acl.h",
    "libarchive/archive_platform_xattr.h",
    "libarchive/archive_ppmd7.c",
    "libarchive/archive_ppmd7_private.h",
    "libarchive/archive_ppmd_private.h",
    "libarchive/archive_private.h",
    "libarchive/archive_random.c",
    "libarchive/archive_random_private.h",
    "libarchive/archive_rb.c",
    "libarchive/archive_rb.h",
    "libarchive/archive_read.c",
    "libarchive/archive_read_add_passphrase.c",
    "libarchive/archive_read_append_filter.c",
    "libarchive/archive_read_data_into_fd.c",
    "libarchive/archive_read_disk_entry_from_file.c",
    "libarchive/archive_read_disk_posix.c",
    "libarchive/archive_read_disk_private.h",
    "libarchive/archive_read_disk_set_standard_lookup.c",
    "libarchive/archive_read_extract.c",
    "libarchive/archive_read_extract2.c",
    "libarchive/archive_read_open_fd.c",
    "libarchive/archive_read_open_file.c",
    "libarchive/archive_read_open_filename.c",
    "libarchive/archive_read_open_memory.c",
    "libarchive/archive_read_private.h",
    "libarchive/archive_read_set_format.c",
    "libarchive/archive_read_set_options.c",
    "libarchive/archive_read_support_filter_all.c",
    "libarchive/archive_read_support_filter_bzip2.c",
    "libarchive/archive_read_support_filter_compress.c",
    "libarchive/archive_read_support_filter_grzip.c",
    "libarchive/archive_read_support_filter_gzip.c",
    "libarchive/archive_read_support_filter_lrzip.c",
    "libarchive/archive_read_support_filter_lz4.c",
    "libarchive/archive_read_support_filter_lzop.c",
    "libarchive/archive_read_support_filter_none.c",
    "libarchive/archive_read_support_filter_program.c",
    "libarchive/archive_read_support_filter_rpm.c",
    "libarchive/archive_read_support_filter_uu.c",
    "libarchive/archive_read_support_filter_xz.c",
    "libarchive/archive_read_support_format_7zip.c",
    "libarchive/archive_read_support_format_all.c",
    "libarchive/archive_read_support_format_ar.c",
    "libarchive/archive_read_support_format_by_code.c",
    "libarchive/archive_read_support_format_cab.c",
    "libarchive/archive_read_support_format_cpio.c",
    "libarchive/archive_read_support_format_empty.c",
    "libarchive/archive_read_support_format_iso9660.c",
    "libarchive/archive_read_support_format_lha.c",
    "libarchive/archive_read_support_format_mtree.c",
    "libarchive/archive_read_support_format_rar.c",
    "libarchive/archive_read_support_format_raw.c",
    "libarchive/archive_read_support_format_tar.c",
    "libarchive/archive_read_support_format_warc.c",
    "libarchive/archive_read_support_format_xar.c",
    "libarchive/archive_read_support_format_zip.c",
    "libarchive/archive_string.c",
    "libarchive/archive_string.h",
    "libarchive/archive_string_composition.h",
    "libarchive/archive_string_sprintf.c",
    "libarchive/archive_util.c",
    "libarchive/archive_version_details.c",
    "libarchive/archive_virtual.c",
    "libarchive/archive_write.c",
    "libarchive/archive_write_add_filter.c",
    "libarchive/archive_write_add_filter_b64encode.c",
    "libarchive/archive_write_add_filter_by_name.c",
    "libarchive/archive_write_add_filter_bzip2.c",
    "libarchive/archive_write_add_filter_compress.c",
    "libarchive/archive_write_add_filter_grzip.c",
    "libarchive/archive_write_add_filter_gzip.c",
    "libarchive/archive_write_add_filter_lrzip.c",
    "libarchive/archive_write_add_filter_lz4.c",
    "libarchive/archive_write_add_filter_lzop.c",
    "libarchive/archive_write_add_filter_none.c",
    "libarchive/archive_write_add_filter_program.c",
    "libarchive/archive_write_add_filter_uuencode.c",
    "libarchive/archive_write_add_filter_xz.c",
    "libarchive/archive_write_disk_posix.c",
    "libarchive/archive_write_disk_private.h",
    "libarchive/archive_write_disk_set_standard_lookup.c",
    "libarchive/archive_write_open_fd.c",
    "libarchive/archive_write_open_file.c",
    "libarchive/archive_write_open_filename.c",
    "libarchive/archive_write_open_memory.c",
    "libarchive/archive_write_private.h",
    "libarchive/archive_write_set_format.c",
    "libarchive/archive_write_set_format_7zip.c",
    "libarchive/archive_write_set_format_ar.c",
    "libarchive/archive_write_set_format_by_name.c",
    "libarchive/archive_write_set_format_cpio.c",
    "libarchive/archive_write_set_format_cpio_newc.c",
    "libarchive/archive_write_set_format_filter_by_ext.c",
    "libarchive/archive_write_set_format_gnutar.c",
    "libarchive/archive_write_set_format_iso9660.c",
    "libarchive/archive_write_set_format_mtree.c",
    "libarchive/archive_write_set_format_pax.c",
    "libarchive/archive_write_set_format_raw.c",
    "libarchive/archive_write_set_format_shar.c",
    "libarchive/archive_write_set_format_ustar.c",
    "libarchive/archive_write_set_format_v7tar.c",
    "libarchive/archive_write_set_format_warc.c",
    "libarchive/archive_write_set_format_xar.c",
    "libarchive/archive_write_set_format_zip.c",
    "libarchive/archive_write_set_options.c",
    "libarchive/archive_write_set_passphrase.c",
    "libarchive/archive_xxhash.h",
    "libarchive/filter_fork.h",
    "libarchive/filter_fork_posix.c",
    "libarchive/xxhash.c",
  ]
  if (is_win) {
    sources += [
      "archive/archive_entry_copy_bhfi.c",
      "archive/archive_read_disk_windows.c",
      "archive/archive_windows.c",
      "archive/archive_windows.h",
      "archive/archive_write_disk_windows.c",
      "archive/filter_fork_windows.c",
    ]
  }
  if (is_mac) {
    sources += [ "archive/archive_disk_acl_darwin.c" ]
  }
  configs -= [ "//build/config:symbol_visibility_hidden" ]
  deps = [
    ":archive_settings",
    "//third_party/boringssl:crypto",
    "//third_party/bzip2:bz2",
    "//third_party/libxml2",
    "//third_party/xz:lzma",
    "//third_party/zlib",
  ]
}

executable("tar") {
  include_dirs = [ "libarchive_fe" ]
  sources = [
    "libarchive_fe/err.c",
    "libarchive_fe/err.h",
    "libarchive_fe/lafe_platform.h",
    "libarchive_fe/line_reader.c",
    "libarchive_fe/line_reader.h",
    "libarchive_fe/passphrase.c",
    "libarchive_fe/passphrase.h",
    "tar/bsdtar.c",
    "tar/bsdtar.h",
    "tar/bsdtar_platform.h",
    "tar/cmdline.c",
    "tar/creation_set.c",
    "tar/read.c",
    "tar/subst.c",
    "tar/util.c",
    "tar/write.c",
  ]
  if (is_win) {
    sources += [
      "tar/bsdtar_windows.c",
      "tar/bsdtar_windows.h",
    ]
  }
  deps = [
    ":archive",
    ":archive_settings",
  ]
}

executable("cpio") {
  include_dirs = [ "libarchive_fe" ]
  sources = [
    "cpio/cmdline.c",
    "cpio/cpio.c",
    "cpio/cpio.h",
    "cpio/cpio_platform.h",
    "libarchive_fe/err.c",
    "libarchive_fe/err.h",
    "libarchive_fe/lafe_platform.h",
    "libarchive_fe/line_reader.c",
    "libarchive_fe/line_reader.h",
    "libarchive_fe/passphrase.c",
    "libarchive_fe/passphrase.h",
  ]
  if (is_win) {
    sources += [
      "cpio/cpio_windows.c",
      "cpio/cpio_windows.h",
    ]
  }
  deps = [
    ":archive",
    ":archive_settings",
  ]
}
