# 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("libxslt_config") {
  defines = [ "LIBXSLT_STATIC" ]
  include_dirs = [ "src" ]
}

config("libxslt_warnings") {
  if (is_clang) {
    cflags = [
      # libxslt stores a char[3] in a `const unsigned char*`.
      "-Wno-pointer-sign",

      # xsltDefaultRegion and xsltCalibrateTimestamps are only
      # used with certain preprocessor defines set.
      "-Wno-unused-function",
    ]
  }
}

static_library("libxslt") {
  sources = [
    "linux/config.h",
    "mac/config.h",
    "src/libxslt/attributes.c",
    "src/libxslt/attributes.h",
    "src/libxslt/attrvt.c",
    "src/libxslt/documents.c",
    "src/libxslt/documents.h",
    "src/libxslt/extensions.c",
    "src/libxslt/extensions.h",
    "src/libxslt/extra.c",
    "src/libxslt/extra.h",
    "src/libxslt/functions.c",
    "src/libxslt/functions.h",
    "src/libxslt/imports.c",
    "src/libxslt/imports.h",
    "src/libxslt/keys.c",
    "src/libxslt/keys.h",
    "src/libxslt/libxslt.h",
    "src/libxslt/namespaces.c",
    "src/libxslt/namespaces.h",
    "src/libxslt/numbers.c",
    "src/libxslt/numbersInternals.h",
    "src/libxslt/pattern.c",
    "src/libxslt/pattern.h",
    "src/libxslt/preproc.c",
    "src/libxslt/preproc.h",
    "src/libxslt/security.c",
    "src/libxslt/security.h",
    "src/libxslt/templates.c",
    "src/libxslt/templates.h",
    "src/libxslt/transform.c",
    "src/libxslt/transform.h",
    "src/libxslt/trio.h",
    "src/libxslt/triodef.h",
    "src/libxslt/variables.c",
    "src/libxslt/variables.h",
    "src/libxslt/win32config.h",
    "src/libxslt/xslt.c",
    "src/libxslt/xslt.h",
    "src/libxslt/xsltInternals.h",
    "src/libxslt/xsltconfig.h",
    "src/libxslt/xsltexports.h",
    "src/libxslt/xsltlocale.c",
    "src/libxslt/xsltlocale.h",
    "src/libxslt/xsltutils.c",
    "src/libxslt/xsltutils.h",
    "src/libxslt/xsltwin32config.h",
    "win32/config.h",
  ]

  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.
    ":libxslt_warnings",
  ]
  public_configs = [ ":libxslt_config" ]

  cflags = []
  if (is_linux || is_android || is_fuchsia) {
    include_dirs = [ "linux" ]
  } else if (is_win) {
    include_dirs = [ "win32" ]
    cflags += [
      "/wd4267",  # size_t to int.

      # TODO(brucedawson): http://crbug.com/554200 4311 is a VS
      # 2015 64-bit warning for pointer truncation
      "/wd4311",
    ]
  } else if (is_mac) {
    include_dirs = [ "mac" ]
  }

  deps = [
    "//third_party/libxml",
  ]
}
