123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 |
- from devtools.yamaker.modules import Library, Linkable, Switch, Words
- from devtools.yamaker.project import CMakeNinjaNixProject
- # These libraries are used to
- # * Fix building with ya make --checkout (see DTCC-615 for details)
- # * Implement unbunding of
- HEADER_ONLY_LIBS = {
- "absl/algorithm",
- "absl/functional",
- "absl/memory",
- "absl/meta",
- "absl/utility",
- }
- def post_install(self):
- for lib in HEADER_ONLY_LIBS:
- assert lib not in self.yamakes
- self.yamakes[lib] = self.module(
- Library,
- NO_RUNTIME=True,
- )
- with self.yamakes["absl/time"] as m:
- m.after(
- "ADDINCL",
- Switch(
- {
- "OS_DARWIN OR OS_IOS": Linkable(EXTRALIBS=[Words("-framework CoreFoundation")]),
- }
- ),
- )
- with self.yamakes["absl/log"] as log:
- log.after(
- "ADDINCL",
- Switch(
- OS_ANDROID=Linkable(LDFLAGS=["-llog"]),
- ),
- )
- # fix (not yet automatically discoverable) dependencies on header-only parts of abseil
- self.yamakes["absl/container"].PEERDIR |= {
- f"{self.arcdir}/absl/types",
- f"{self.arcdir}/absl/hash",
- f"{self.arcdir}/absl/memory",
- }
- self.yamakes["absl/meta"].PEERDIR |= {
- f"{self.arcdir}/absl/base",
- }
- self.yamakes["absl/memory"].PEERDIR |= {
- f"{self.arcdir}/absl/meta",
- }
- self.yamakes["absl/debugging"].PEERDIR -= {
- f"{self.arcdir}/absl/strings",
- f"{self.arcdir}/absl/numeric",
- f"{self.arcdir}/absl/demangle",
- }
- self.yamakes["absl/strings"].PEERDIR -= {
- f"{self.arcdir}/absl/debugging",
- f"{self.arcdir}/absl/demangle",
- f"{self.arcdir}/absl/profiling",
- f"{self.arcdir}/absl/status",
- f"{self.arcdir}/absl/synchronization",
- f"{self.arcdir}/absl/time",
- f"{self.arcdir}/absl/types",
- }
- self.yamakes["absl/hash"].PEERDIR |= {
- f"{self.arcdir}/absl/types",
- }
- self.yamakes["absl/flags"].PEERDIR |= {
- f"{self.arcdir}/absl/memory",
- }
- self.yamakes["absl/types"].PEERDIR |= {
- f"{self.arcdir}/absl/memory",
- }
- self.yamakes["absl/base"].PEERDIR.add("library/cpp/sanitizer/include")
- self.yamakes["absl/debugging"].PEERDIR.add("library/cpp/sanitizer/include")
- self.yamakes["absl/container"].PEERDIR.add("library/cpp/sanitizer/include")
- with self.yamakes["."] as m:
- lib = self.module(
- Library,
- PEERDIR={f"{self.arcdir}/{inc}" for inc in m.RECURSE},
- RECURSE=m.RECURSE,
- NO_RUNTIME=True,
- )
- for extra_lib in HEADER_ONLY_LIBS:
- lib.PEERDIR.add(f"{self.arcdir}/{extra_lib}")
- lib.RECURSE.add(extra_lib)
- self.yamakes["."] = lib
- abseil_cpp = CMakeNinjaNixProject(
- owners=["g:cpp-contrib"],
- arcdir="contrib/restricted/abseil-cpp",
- nixattr="abseil-cpp",
- disable_includes=[
- # if defined(__myriad2__)
- "rtems.h",
- # if defined(__Fuchsia__)
- "fuchsia/intl/cpp/fidl.h",
- "lib/async-loop/cpp/loop.h",
- "lib/fdio/directory.h",
- "lib/sys/cpp/component_context.h",
- "zircon/types.h",
- ],
- copy_sources=[
- "absl/base/internal/*.inc",
- "absl/flags/internal/*.inc",
- "absl/synchronization/internal/*.inc",
- "absl/numeric/int128_no_intrinsic.inc",
- "absl/debugging/internal/*.inc",
- "absl/debugging/*.inc",
- "absl/strings/internal/stl_type_traits.h",
- "absl/time/internal/*.inc",
- "absl/**/*.h",
- ],
- ignore_targets=[
- # these depend on gtest, ignore it.
- "absl_scoped_mock_log",
- "absl_status_matchers",
- ],
- copy_sources_except=[
- "absl/status/status_matchers.h",
- ],
- put={
- "absl_bad_any_cast_impl": "absl/types",
- "absl_base": "absl/base",
- "absl_debugging_internal": "absl/debugging",
- "absl_flags_internal": "absl/flags",
- "absl_hash": "absl/hash",
- "absl_int128": "absl/numeric",
- "absl_log_entry": "absl/log",
- "absl_periodic_sampler": "absl/profiling",
- "absl_random_distributions": "absl/random",
- "absl_raw_hash_set": "absl/container",
- "absl_status": "absl/status",
- "absl_strings": "absl/strings",
- "absl_synchronization": "absl/synchronization",
- "absl_time": "absl/time",
- },
- put_with={
- "absl_bad_any_cast_impl": [
- "absl_bad_optional_access",
- "absl_bad_variant_access",
- ],
- "absl_base": [
- "absl_log_severity",
- "absl_malloc_internal",
- "absl_poison",
- "absl_raw_logging_internal",
- "absl_scoped_set_env",
- "absl_spinlock_wait",
- "absl_strerror",
- "absl_throw_delegate",
- ],
- "absl_debugging_internal": [
- "absl_decode_rust_punycode",
- "absl_demangle_internal",
- "absl_demangle_rust",
- "absl_examine_stack",
- "absl_failure_signal_handler",
- "absl_leak_check",
- "absl_stacktrace",
- "absl_symbolize",
- "absl_utf8_for_code_point",
- ],
- "absl_flags_internal": [
- "absl_flags_commandlineflag",
- "absl_flags_commandlineflag_internal",
- "absl_flags_config",
- "absl_flags_marshalling",
- "absl_flags_parse",
- "absl_flags_private_handle_accessor",
- "absl_flags_program_name",
- "absl_flags_reflection",
- "absl_flags_usage",
- "absl_flags_usage_internal",
- ],
- "absl_hash": [
- "absl_low_level_hash",
- "absl_city",
- ],
- "absl_log_entry": [
- "absl_die_if_null",
- "absl_log_flags",
- "absl_log_globals",
- "absl_log_initialize",
- "absl_log_internal_check_op",
- "absl_log_internal_conditions",
- "absl_log_internal_fnmatch",
- "absl_log_internal_format",
- "absl_log_internal_globals",
- "absl_log_internal_log_sink_set",
- "absl_log_internal_message",
- "absl_log_internal_nullguard",
- "absl_log_internal_proto",
- "absl_log_sink",
- "absl_vlog_config_internal",
- ],
- "absl_periodic_sampler": [
- "absl_exponential_biased",
- ],
- "absl_random_distributions": [
- "absl_random_internal_distribution_test_util",
- "absl_random_internal_platform",
- "absl_random_internal_pool_urbg",
- "absl_random_internal_randen",
- "absl_random_internal_randen_hwaes",
- "absl_random_internal_randen_hwaes_impl",
- "absl_random_internal_randen_slow",
- "absl_random_internal_seed_material",
- "absl_random_seed_gen_exception",
- "absl_random_seed_sequences",
- ],
- "absl_raw_hash_set": [
- "absl_hashtablez_sampler",
- ],
- "absl_strings": [
- # FIXME thegeorg@:
- # put crc libraries together with strings libraries
- # to resolve dependency loop around absl_crc_cor
- "absl_crc32c",
- "absl_crc_cpu_detect",
- "absl_crc_internal",
- "absl_crc_cord_state",
- "absl_cord",
- "absl_cord_internal",
- "absl_cordz_functions",
- "absl_cordz_handle",
- "absl_cordz_info",
- "absl_cordz_sample_token",
- "absl_statusor",
- "absl_string_view",
- "absl_strings_internal",
- "absl_str_format_internal",
- ],
- "absl_synchronization": [
- "absl_graphcycles_internal",
- "absl_kernel_timeout_internal",
- ],
- "absl_time": [
- "absl_civil_time",
- "absl_time_zone",
- ],
- },
- post_install=post_install,
- )
|