blob: 9e64243d82d54fb9cf3970f60d80f30c095b2b5d [file] [log] [blame]
# Copyright 2020 The Monogon Project Authors.
#
# SPDX-License-Identifier: Apache-2.0
#
# 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
#
# 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.
load("@rules_cc//cc:defs.bzl", "cc_library")
load("@dev_source_monogon//build/utils:template_file.bzl", "template_file")
# These are only for the headers of libcommon, which is a private dependency of libblkid and
# libuuid. Bazel doesn't support private dependencies and we want to avoid propagating these up
# to all users of libblkid and libuuid, so manually inject them one level up.
libcommon_hdrs_defines = [
"_GNU_SOURCE",
"HAVE_BYTESWAP_H",
"HAVE_CLOSE_RANGE",
"HAVE_CPU_SET_T",
"HAVE_DECL_CPU_ALLOC",
"HAVE_DIRFD",
"HAVE_ENDIAN_H",
"HAVE_ERR_H",
"HAVE_ERR",
"HAVE_ERRX",
"HAVE_LOFF_T",
"HAVE_MEMPCPY",
"HAVE_NANOSLEEP",
"HAVE_SETNS",
"HAVE_SRANDOM",
"HAVE_STDIO_EXT_H",
"HAVE_STRNDUP",
"HAVE_STRNLEN",
"HAVE_SENDFILE",
"HAVE_PIDFD_SEND_SIGNAL",
"HAVE_PIDFD_OPEN",
"HAVE_PATHS_H",
"HAVE_LINUX_VERSION_H",
"HAVE_OPENAT",
"HAVE_SYS_IOCTL_H",
"HAVE_SYS_SENDFILE_H",
"HAVE_SYS_SYSMACROS_H",
"HAVE_SYS_TTYDEFAULTS_H",
"HAVE_TIMEGM",
"HAVE_TIMER_CREATE",
"HAVE_UNSHARE",
"HAVE_WARN",
"HAVE_WARNX",
"HAVE_WIDECHAR",
"HAVE_FSYNC",
"HAVE___FPENDING",
]
template_file(
name = "blkid.h",
src = "libblkid/src/blkid.h.in",
substitutions = {
"@LIBBLKID_VERSION@": "0.0.0",
"@LIBBLKID_DATE@": "01.01.1970",
},
)
cc_library(
name = "common",
srcs = glob(["lib/*.h"]) + [
"lib/blkdev.c",
"lib/canonicalize.c",
"lib/crc32.c",
"lib/crc32c.c",
"lib/env.c",
"lib/idcache.c",
"lib/encode.c",
"lib/fileutils.c",
"lib/color-names.c",
"lib/mangle.c",
"lib/match.c",
"lib/mbsalign.c",
"lib/mbsedit.c",
"lib/md5.c",
"lib/pager.c",
"lib/procutils.c",
"lib/pwdutils.c",
"lib/randutils.c",
"lib/setproctitle.c",
"lib/strutils.c",
"lib/sysfs.c",
"lib/timeutils.c",
"lib/ttyutils.c",
"lib/strv.c",
"lib/path.c",
"lib/cpuset.c",
"lib/sha1.c",
"lib/signames.c",
],
hdrs = glob(["include/*.h"]),
# Locale-related defines are intentionally missing as we don't want locale support
local_defines = libcommon_hdrs_defines + [
"HAVE_DECL_CPU_ALLOC",
"HAVE_ENVIRON_DECL",
"HAVE_ERRNO_H",
"HAVE_GETDTABLESIZE",
"HAVE_GETRANDOM",
"HAVE_GETRLIMIT",
"HAVE_LINUX_CDROM_H",
"HAVE_LINUX_FD_H",
"HAVE_JRAND48",
"HAVE_MKOSTEMP",
"HAVE_SYS_PRCTL_H",
"HAVE_MNTENT_H",
"HAVE_PRCTL",
"HAVE_SECURE_GETENV",
"HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC",
"HAVE_SYS_STAT_H",
"HAVE_SYS_TYPES_H",
"HAVE_EXPLICIT_BZERO",
"HAVE_UNISTD_H",
"HAVE_TLS",
],
visibility = ["//visibility:private"],
)
cc_library(
name = "uuid",
srcs = [
"libuuid/src/clear.c",
"libuuid/src/compare.c",
"libuuid/src/copy.c",
"libuuid/src/gen_uuid.c",
"libuuid/src/isnull.c",
"libuuid/src/pack.c",
"libuuid/src/parse.c",
"libuuid/src/predefined.c",
"libuuid/src/unpack.c",
"libuuid/src/unparse.c",
"libuuid/src/uuidP.h",
"libuuid/src/uuid_time.c",
],
hdrs = [
"libuuid/src/uuid.h",
"libuuid/src/uuidd.h",
],
local_defines = libcommon_hdrs_defines + [
"HAVE_NET_IF_H",
"HAVE_NETINET_IN_H",
"HAVE_STDLIB_H",
"HAVE_SYS_FILE_H",
"HAVE_SYS_SOCKET_H",
"HAVE_SYS_SYSCALL_H",
"HAVE_SYS_TIME_H",
"HAVE_SYS_UN_H",
"HAVE_TLS",
"HAVE_UNISTD_H",
],
visibility = ["//visibility:public"],
deps = [":common"],
)
cc_library(
name = "blkid",
srcs = glob([
"libblkid/src/**/*.c",
"libblkid/src/**/*.h",
]),
hdrs = [":blkid.h"],
local_defines = libcommon_hdrs_defines + [
"LIBBLKID_VERSION=\\\"0.0.0\\\"",
"LIBBLKID_DATE=\\\"01.01.1970\\\"",
"HAVE_SYS_STAT_H",
"HAVE_ERRNO_H",
"HAVE_LINUX_CDROM_H",
"HAVE_POSIX_FADVISE",
"HAVE_STDLIB_H",
"HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC",
"HAVE_SYS_STAT_H",
"HAVE_SYS_TYPES_H",
"HAVE_UNISTD_H",
],
visibility = ["//visibility:public"],
deps = ["//:common"],
)