constellation/nix/cc/nixpkgs_cc_libraries.bzl
Malte Poll e7d96f0337 bazel: import C libraries from nix as cc_libary
This also includes aliases to select the correct library based on the target platform.
2023-11-30 14:56:39 +01:00

110 lines
2.7 KiB
Python

""" Bazel cc_library definitions for Nixpkgs. """
load("@io_tweag_rules_nixpkgs//nixpkgs:nixpkgs.bzl", "nixpkgs_flake_package")
def nixpkgs_cc_library_deps():
""" Generate cc_library rules for Nixpkgs. """
return [
nixpkgs_flake_package(
name = "org_openssl_%s" % system,
nix_flake_file = "//:flake.nix",
nix_flake_lock_file = "//:flake.lock",
package = "packages.%s.openssl" % system,
build_file_content = OPENSSL_BUILD,
)
for system in openssl_systems
] + [
nixpkgs_flake_package(
name = "cryptsetup_%s" % system,
nix_flake_file = "//:flake.nix",
nix_flake_lock_file = "//:flake.lock",
package = "cryptsetup",
build_file_content = CRYPTSETUP_BUILD,
)
for system in cryptsetup_systems
] + [
nixpkgs_flake_package(
name = "libvirt_%s" % system,
nix_flake_file = "//:flake.nix",
nix_flake_lock_file = "//:flake.lock",
package = "libvirt",
build_file_content = LIBVIRT_BUILD,
)
for system in libvirt_systems
]
openssl_systems = [
"aarch64-linux",
"aarch64-darwin",
"x86_64-linux",
"x86_64-darwin",
]
cryptsetup_systems = [
"x86_64-linux",
]
libvirt_systems = [
"x86_64-linux",
]
OPENSSL_BUILD = """\
load("@rules_cc//cc:defs.bzl", "cc_library")
filegroup(
name = "include",
srcs = glob(["include/**/*.h"]),
visibility = ["//visibility:public"],
)
cc_library(
name = "org_openssl",
srcs = glob(["lib/**/*.a"]),
hdrs = [":include"],
strip_include_prefix = "include",
visibility = ["//visibility:public"],
)
"""
CRYPTSETUP_BUILD = """\
exports_files(["closure.tar", "rpath", "dynamic-linker"])
filegroup(
name = "include",
srcs = glob(["include/**/*.h"]),
visibility = ["//visibility:public"],
)
cc_library(
name = "cryptsetup",
srcs = glob(["lib/**/*.so*"]),
hdrs = [":include"],
strip_include_prefix = "include",
target_compatible_with = [
"@platforms//os:linux",
"@platforms//cpu:x86_64",
],
visibility = ["//visibility:public"],
)
"""
LIBVIRT_BUILD = """\
exports_files(["bin-linktree.tar", "closure.tar", "rpath", "dynamic-linker"])
load("@rules_cc//cc:defs.bzl", "cc_library")
filegroup(
name = "include",
srcs = glob(["include/**/*.h"]),
visibility = ["//visibility:public"],
)
cc_library(
name = "libvirt",
srcs = glob([
"lib/*.so",
"lib/*.so.*",
]),
hdrs = [":include"],
strip_include_prefix = "include",
target_compatible_with = [
"@platforms//os:linux",
"@platforms//cpu:x86_64",
],
visibility = ["//visibility:public"],
)
"""