blob: 4a51a9dce5f167343c872c08fd3e91ab885264a8 [file] [log] [blame]
# 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",
]
}