# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You 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
#
#    http://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.

package(default_visibility = ["//visibility:public"])


config_setting(
    name = "darwin",
    values = {"cpu": "darwin"},
    visibility = ["//visibility:public"],
)

SOURCES = ["db/builder.cc",
         "db/c.cc",
         "db/dbformat.cc",
         "db/db_impl.cc",
         "db/db_iter.cc",
         "db/dumpfile.cc",
         "db/filename.cc",
         "db/log_reader.cc",
         "db/log_writer.cc",
         "db/memtable.cc",
         "db/repair.cc",
         "db/table_cache.cc",
         "db/version_edit.cc",
         "db/version_set.cc",
         "db/write_batch.cc",
         "table/block_builder.cc",
         "table/block.cc",
         "table/filter_block.cc",
         "table/format.cc",
         "table/iterator.cc",
         "table/merger.cc",
         "table/table_builder.cc",
         "table/table.cc",
         "table/two_level_iterator.cc",
         "util/arena.cc",
         "util/bloom.cc",
         "util/cache.cc",
         "util/coding.cc",
         "util/comparator.cc",
         "util/crc32c.cc",
         "util/env.cc",
         "util/env_posix.cc",
         "util/filter_policy.cc",
         "util/hash.cc",
         "util/histogram.cc",
         "util/logging.cc",
         "util/options.cc",
         "util/status.cc",
         "port/port_posix.cc",
         "port/port_posix_sse.cc",
         "helpers/memenv/memenv.cc",
    ]

cc_library(
    name = "leveldb",
    srcs = SOURCES,
    hdrs = glob([ 
        "helpers/memenv/*.h",
        "util/*.h",
        "port/*.h",
        "port/win/*.h",
        "table/*.h",
        "db/*.h",
        "include/leveldb/*.h"
    ],
    exclude = [
            "**/*test.*",
    ]),
    includes = [
        "include/",
    ],
    copts = [
        "-fno-builtin-memcmp",
        "-DLEVELDB_PLATFORM_POSIX=1",
        "-DLEVELDB_ATOMIC_PRESENT",
    ],
    defines = [
        "LEVELDB_PLATFORM_POSIX",
    ] + select({
        ":darwin": ["OS_MACOSX"],
        "//conditions:default": [],
    }),
)
