load("@bazel_skylib//rules:common_settings.bzl", "bool_flag") load("@rules_cc//cc:defs.bzl", "cc_library", "cc_binary") load("@rules_license//rules:license.bzl", "license") package( default_applicable_licenses = [":license"], ) exports_files(["LICENSE"]) license( name = "license", package_name = "mp-units", license_kinds = ["@rules_license//licenses/spdx:MIT"], license_text = "LICENSE", package_url = "https://github.com/mpusz/mp-units", ) bool_flag( name = "mp_units_enable_contracts", build_setting_default = False, ) config_setting( name = "mp_units_enable_contracts_flag", flag_values = {":mp_units_enable_contracts": "True"}, ) cc_library( name = "core", hdrs = glob(["src/core/include/**/*.h"]), defines = [ "MP_UNITS_API_STD_FORMAT=1", "MP_UNITS_HOSTED=1", ] + select({ ":mp_units_enable_contracts_flag": ["MP_UNITS_API_CONTRACTS=3"], # MS-GSL "//conditions:default": ["MP_UNITS_API_CONTRACTS=0"], # none }), deps = select({ ":mp_units_enable_contracts_flag": ["@gsl//:gsl"], "//conditions:default": [], }), strip_include_prefix = "src/core/include", includes = ["src/core/include"], visibility = ["//visibility:public"], ) cc_library( name = "systems", hdrs = glob(["src/systems/include/**/*.h"]), deps = [":core"], strip_include_prefix = "src/systems/include", includes = ["src/systems/include"], visibility = ["//visibility:public"], ) cc_library( name = "mp-units", deps = [ ":core", ":systems", ], visibility = ["//visibility:public"], ) cc_binary( name = "hello_units", srcs = ["example/hello_units.cpp"], deps = [ ":mp-units", ], )