Import("env")

env = env.Clone()

if env['TARGET_OS'] != 'linux':
    env.FatalError(f"Unsupported OS: `{env['TARGET_OS']}`")
if env['TARGET_ARCH'] not in ('x86_64', 'aarch64'):
    env.FatalError(f"Unsupported CPU architecture: `{env['TARGET_ARCH']}`")
env.Append(CPPPATH=["platform/build_linux_" + env['TARGET_ARCH']])

env.Append(CPPDEFINES=[
    "HAVE_CONFIG_H",
])

env.Library(
    target="libarchive",
    source=[
        "dist/libarchive/archive_acl.c",
        "dist/libarchive/archive_blake2sp_ref.c",
        "dist/libarchive/archive_blake2s_ref.c",
        "dist/libarchive/archive_check_magic.c",
        "dist/libarchive/archive_cmdline.c",
        "dist/libarchive/archive_cryptor.c",
        "dist/libarchive/archive_digest.c",
        "dist/libarchive/archive_disk_acl_darwin.c",
        "dist/libarchive/archive_disk_acl_freebsd.c",
        "dist/libarchive/archive_disk_acl_linux.c",
        "dist/libarchive/archive_disk_acl_sunos.c",
        "dist/libarchive/archive_entry.c",
        "dist/libarchive/archive_entry_copy_bhfi.c",
        "dist/libarchive/archive_entry_copy_stat.c",
        "dist/libarchive/archive_entry_link_resolver.c",
        "dist/libarchive/archive_entry_sparse.c",
        "dist/libarchive/archive_entry_stat.c",
        "dist/libarchive/archive_entry_strmode.c",
        "dist/libarchive/archive_entry_xattr.c",
        "dist/libarchive/archive_hmac.c",
        "dist/libarchive/archive_match.c",
        "dist/libarchive/archive_options.c",
        "dist/libarchive/archive_pack_dev.c",
        "dist/libarchive/archive_parse_date.c",
        "dist/libarchive/archive_pathmatch.c",
        "dist/libarchive/archive_ppmd7.c",
        "dist/libarchive/archive_ppmd8.c",
        "dist/libarchive/archive_random.c",
        "dist/libarchive/archive_rb.c",
        "dist/libarchive/archive_read_add_passphrase.c",
        "dist/libarchive/archive_read_append_filter.c",
        "dist/libarchive/archive_read.c",
        "dist/libarchive/archive_read_data_into_fd.c",
        "dist/libarchive/archive_read_disk_entry_from_file.c",
        "dist/libarchive/archive_read_disk_posix.c",
        "dist/libarchive/archive_read_disk_set_standard_lookup.c",
        "dist/libarchive/archive_read_disk_windows.c",
        "dist/libarchive/archive_read_extract2.c",
        "dist/libarchive/archive_read_extract.c",
        "dist/libarchive/archive_read_open_fd.c",
        "dist/libarchive/archive_read_open_file.c",
        "dist/libarchive/archive_read_open_filename.c",
        "dist/libarchive/archive_read_open_memory.c",
        "dist/libarchive/archive_read_set_format.c",
        "dist/libarchive/archive_read_set_options.c",
        "dist/libarchive/archive_read_support_filter_all.c",
        "dist/libarchive/archive_read_support_filter_by_code.c",
        "dist/libarchive/archive_read_support_filter_bzip2.c",
        "dist/libarchive/archive_read_support_filter_compress.c",
        "dist/libarchive/archive_read_support_filter_grzip.c",
        "dist/libarchive/archive_read_support_filter_gzip.c",
        "dist/libarchive/archive_read_support_filter_lrzip.c",
        "dist/libarchive/archive_read_support_filter_lz4.c",
        "dist/libarchive/archive_read_support_filter_lzop.c",
        "dist/libarchive/archive_read_support_filter_none.c",
        "dist/libarchive/archive_read_support_filter_program.c",
        "dist/libarchive/archive_read_support_filter_rpm.c",
        "dist/libarchive/archive_read_support_filter_uu.c",
        "dist/libarchive/archive_read_support_filter_xz.c",
        "dist/libarchive/archive_read_support_filter_zstd.c",
        "dist/libarchive/archive_read_support_format_7zip.c",
        "dist/libarchive/archive_read_support_format_all.c",
        "dist/libarchive/archive_read_support_format_ar.c",
        "dist/libarchive/archive_read_support_format_by_code.c",
        "dist/libarchive/archive_read_support_format_cab.c",
        "dist/libarchive/archive_read_support_format_cpio.c",
        "dist/libarchive/archive_read_support_format_empty.c",
        "dist/libarchive/archive_read_support_format_iso9660.c",
        "dist/libarchive/archive_read_support_format_lha.c",
        "dist/libarchive/archive_read_support_format_mtree.c",
        "dist/libarchive/archive_read_support_format_rar5.c",
        "dist/libarchive/archive_read_support_format_rar.c",
        "dist/libarchive/archive_read_support_format_raw.c",
        "dist/libarchive/archive_read_support_format_tar.c",
        "dist/libarchive/archive_read_support_format_warc.c",
        "dist/libarchive/archive_read_support_format_xar.c",
        "dist/libarchive/archive_read_support_format_zip.c",
        "dist/libarchive/archive_string.c",
        "dist/libarchive/archive_string_sprintf.c",
        "dist/libarchive/archive_time.c",
        "dist/libarchive/archive_util.c",
        "dist/libarchive/archive_version_details.c",
        "dist/libarchive/archive_virtual.c",
        "dist/libarchive/archive_windows.c",
        "dist/libarchive/archive_write_add_filter_b64encode.c",
        "dist/libarchive/archive_write_add_filter_by_name.c",
        "dist/libarchive/archive_write_add_filter_bzip2.c",
        "dist/libarchive/archive_write_add_filter.c",
        "dist/libarchive/archive_write_add_filter_compress.c",
        "dist/libarchive/archive_write_add_filter_grzip.c",
        "dist/libarchive/archive_write_add_filter_gzip.c",
        "dist/libarchive/archive_write_add_filter_lrzip.c",
        "dist/libarchive/archive_write_add_filter_lz4.c",
        "dist/libarchive/archive_write_add_filter_lzop.c",
        "dist/libarchive/archive_write_add_filter_none.c",
        "dist/libarchive/archive_write_add_filter_program.c",
        "dist/libarchive/archive_write_add_filter_uuencode.c",
        "dist/libarchive/archive_write_add_filter_xz.c",
        "dist/libarchive/archive_write_add_filter_zstd.c",
        "dist/libarchive/archive_write.c",
        "dist/libarchive/archive_write_disk_posix.c",
        "dist/libarchive/archive_write_disk_set_standard_lookup.c",
        "dist/libarchive/archive_write_disk_windows.c",
        "dist/libarchive/archive_write_open_fd.c",
        "dist/libarchive/archive_write_open_file.c",
        "dist/libarchive/archive_write_open_filename.c",
        "dist/libarchive/archive_write_open_memory.c",
        "dist/libarchive/archive_write_set_format_7zip.c",
        "dist/libarchive/archive_write_set_format_ar.c",
        "dist/libarchive/archive_write_set_format_by_name.c",
        "dist/libarchive/archive_write_set_format.c",
        "dist/libarchive/archive_write_set_format_cpio_binary.c",
        "dist/libarchive/archive_write_set_format_cpio.c",
        "dist/libarchive/archive_write_set_format_cpio_newc.c",
        "dist/libarchive/archive_write_set_format_cpio_odc.c",
        "dist/libarchive/archive_write_set_format_filter_by_ext.c",
        "dist/libarchive/archive_write_set_format_gnutar.c",
        "dist/libarchive/archive_write_set_format_iso9660.c",
        "dist/libarchive/archive_write_set_format_mtree.c",
        "dist/libarchive/archive_write_set_format_pax.c",
        "dist/libarchive/archive_write_set_format_raw.c",
        "dist/libarchive/archive_write_set_format_shar.c",
        "dist/libarchive/archive_write_set_format_ustar.c",
        "dist/libarchive/archive_write_set_format_v7tar.c",
        "dist/libarchive/archive_write_set_format_warc.c",
        "dist/libarchive/archive_write_set_format_xar.c",
        "dist/libarchive/archive_write_set_format_zip.c",
        "dist/libarchive/archive_write_set_options.c",
        "dist/libarchive/archive_write_set_passphrase.c",
        "dist/libarchive/filter_fork_posix.c",
        "dist/libarchive/filter_fork_windows.c",
        "dist/libarchive/xxhash.c",
    ],
    LIBDEPS_TAGS=[
        'init-no-global-side-effects',
    ],
)
