# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# The Oniguruma library.
cc_library(
    name = "oniguruma",
    hdrs = [
        "src/oniguruma.h",
    ],
    visibility = ["//visibility:public"],
    deps = [
        ":ascii",
        ":big5",
        ":cp1251",
        ":euc_jp",
        ":euc_kr",
        ":euc_tw",
        ":gb18030",
        ":iso8859",
        ":koi8",
        ":onig_init",
        ":regcomp",
        ":regenc",
        ":regerror",
        ":regexec",
        ":regext",
        ":reggnu",
        ":regparse",
        ":regposix",
        ":regsyntax",
        ":regtrav",
        ":regversion",
        ":sjis",
        ":st",
        ":unicode",
        ":utf16",
        ":utf32",
        ":utf8",
    ],
)

# The mktable binary.
cc_binary(
    name = "mktable",
    srcs = [
        "src/mktable.c",
    ],
    deps = [
        ":oniguruma",
    ],
)

# Other libraries linked in with :oniguruma.
cc_library(
    name = "ascii",
    srcs = [
        "src/ascii.c",
    ],
    deps = [
        ":regenc",
    ],
    alwayslink = 1,
)

cc_library(
    name = "big5",
    srcs = [
        "src/big5.c",
    ],
    deps = [
        ":regenc",
    ],
    alwayslink = 1,
)

cc_library(
    name = "cp1251",
    srcs = [
        "src/cp1251.c",
    ],
    deps = [
        ":regenc",
    ],
    alwayslink = 1,
)

cc_library(
    name = "euc_jp",
    srcs = [
        "src/euc_jp.c",
        "src/euc_jp_prop.c",
    ],
    deps = [
        ":regenc",
    ],
    alwayslink = 1,
)

cc_library(
    name = "euc_kr",
    srcs = [
        "src/euc_kr.c",
    ],
    deps = [
        ":regenc",
    ],
    alwayslink = 1,
)

cc_library(
    name = "euc_tw",
    srcs = [
        "src/euc_tw.c",
    ],
    deps = [
        ":regenc",
    ],
    alwayslink = 1,
)

cc_library(
    name = "gb18030",
    srcs = [
        "src/gb18030.c",
    ],
    deps = [
        ":regenc",
    ],
    alwayslink = 1,
)

cc_library(
    name = "iso8859",
    srcs = [
        "src/iso8859_1.c",
        "src/iso8859_10.c",
        "src/iso8859_11.c",
        "src/iso8859_13.c",
        "src/iso8859_14.c",
        "src/iso8859_15.c",
        "src/iso8859_16.c",
        "src/iso8859_2.c",
        "src/iso8859_3.c",
        "src/iso8859_4.c",
        "src/iso8859_5.c",
        "src/iso8859_6.c",
        "src/iso8859_7.c",
        "src/iso8859_8.c",
        "src/iso8859_9.c",
    ],
    deps = [
        ":regenc",
    ],
    alwayslink = 1,
)

cc_library(
    name = "koi8",
    srcs = [
        "src/koi8.c",
        "src/koi8_r.c",
    ],
    deps = [
        ":regenc",
    ],
    alwayslink = 1,
)

cc_library(
    name = "onig_init",
    srcs = [
        "src/onig_init.c",
    ],
    deps = [
        ":regenc",
    ],
    alwayslink = 1,
)

cc_library(
    name = "regcomp",
    srcs = [
        "src/regcomp.c",
    ],
    deps = [
        ":regparse",
    ],
    alwayslink = 1,
    copts = [
        "-Wno-maybe-uninitialized",
    ],
)

cc_library(
    name = "regenc",
    srcs = [
        "src/regenc.c",
    ],
    hdrs = [
        "src/oniguruma.h",
        "src/regenc.h",
        "src/regint.h",
    ],
    deps = [
        ":config",
    ],
    alwayslink = 1,
)

cc_library(
    name = "regerror",
    srcs = [
        "src/regerror.c",
    ],
    deps = [
        ":regenc",
    ],
    alwayslink = 1,
)

cc_library(
    name = "regexec",
    srcs = [
        "src/regexec.c",
    ],
    deps = [
        ":regenc",
    ],
    alwayslink = 1,
)

cc_library(
    name = "regext",
    srcs = [
        "src/regext.c",
    ],
    deps = [
        ":regenc",
    ],
    alwayslink = 1,
)

cc_library(
    name = "reggnu",
    srcs = [
        "src/reggnu.c",
    ],
    hdrs = [
        "src/oniggnu.h",
    ],
    deps = [
        ":regenc",
    ],
    alwayslink = 1,
)

cc_library(
    name = "regparse",
    srcs = [
        "src/regparse.c",
    ],
    hdrs = [
        "src/regparse.h",
    ],
    deps = [
        ":st",
    ],
    alwayslink = 1,
)

cc_library(
    name = "regposix",
    srcs = [
        "src/regposerr.c",
        "src/regposix.c",
    ],
    hdrs = [
        "src/onigposix.h",
    ],
    deps = [
        ":config",
        ":regenc",
    ],
    alwayslink = 1,
)

cc_library(
    name = "regsyntax",
    srcs = [
        "src/regsyntax.c",
    ],
    deps = [
        ":regenc",
    ],
    alwayslink = 1,
)

cc_library(
    name = "regtrav",
    srcs = [
        "src/regtrav.c",
    ],
    deps = [
        ":regenc",
    ],
    alwayslink = 1,
)

cc_library(
    name = "regversion",
    srcs = [
        "src/regversion.c",
    ],
    deps = [
        ":regenc",
    ],
    alwayslink = 1,
)

cc_library(
    name = "sjis",
    srcs = [
        "src/sjis.c",
        "src/sjis_prop.c",
    ],
    deps = [
        ":regenc",
    ],
    alwayslink = 1,
)

cc_library(
    name = "st",
    srcs = [
        "src/st.c",
    ],
    hdrs = [
        "src/st.h",
    ],
    deps = [
        ":regenc",
    ],
    alwayslink = 1,
)

cc_library(
    name = "unicode",
    srcs = [
        "src/unicode.c",
        "src/unicode_fold1_key.c",
        "src/unicode_fold2_key.c",
        "src/unicode_fold3_key.c",
        "src/unicode_unfold_key.c",
    ],
    deps = [
        ":config",
        ":data",
        ":regenc",
        ":st",
    ],
    alwayslink = 1,
)

cc_library(
    name = "utf8",
    srcs = [
        "src/utf8.c",
    ],
    deps = [
        ":regenc",
    ],
    alwayslink = 1,
)

cc_library(
    name = "utf16",
    srcs = [
        "src/utf16_be.c",
        "src/utf16_le.c",
    ],
    deps = [
        ":regenc",
    ],
    alwayslink = 1,
)

cc_library(
    name = "utf32",
    srcs = [
        "src/utf32_be.c",
        "src/utf32_le.c",
    ],
    deps = [
        ":regenc",
    ],
    alwayslink = 1,
)

# Generated data files.
cc_library(
    name = "data",
    hdrs = [
        "src/unicode_egcb_data.c",
        "src/unicode_fold_data.c",
        "src/unicode_property_data.c",
        "src/unicode_property_data_posix.c",
        "src/unicode_wb_data.c",
    ],
)

# CC library containing config.h.
cc_library(
    name = "config",
    hdrs = [
        ":config_h",
    ],
)

genrule(
    name = "config_h",
    srcs = glob(["**"]),
    outs = ["config.h"],
    cmd =
        "( " +
        "  cd external/com_github_kkos_oniguruma; " +
        "  ./configure > /dev/null; " +
        "); " +
        "cp external/com_github_kkos_oniguruma/src/config.h \"$@\"; ",
)

