# 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.

config("lzma_sdk_config") {
  include_dirs = [ "." ]
}

# Must be in a config because of how GN orders flags (otherwise -Wall will
# appear after this, and turn it back on).
config("clang_warnings") {
  if (is_clang) {
    # Upstream uses self-assignment to avoid warnings.
    cflags = [ "-Wno-self-assign" ]
  }
}

static_library("lzma_sdk") {
  sources = [
    "7z.h",
    "7zAlloc.c",
    "7zAlloc.h",
    "7zBuf.c",
    "7zBuf.h",
    "7zCrc.c",
    "7zCrc.h",
    "7zCrcOpt.c",
    "7zDec.c",
    "7zFile.c",
    "7zFile.h",
    "7zIn.c",
    "7zStream.c",
    "Alloc.c",
    "Alloc.h",
    "Bcj2.c",
    "Bcj2.h",
    "Bra.c",
    "Bra.h",
    "Bra86.c",
    "CpuArch.c",
    "CpuArch.h",
    "LzFind.c",
    "LzFind.h",
    "LzHash.h",
    "Lzma2Dec.c",
    "Lzma2Dec.h",
    "LzmaDec.c",
    "LzmaDec.h",
    "LzmaEnc.c",
    "LzmaEnc.h",
    "LzmaLib.c",
    "LzmaLib.h",
    "Types.h",
  ]

  defines = [
    "_7ZIP_ST",
    "_LZMA_PROB32",
  ]

  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",

    # Must be after no_chromium_code for warning flags to be ordered correctly.
    ":clang_warnings",
  ]
  public_configs = [ ":lzma_sdk_config" ]
}
