• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1package {
2    default_applicable_licenses: ["external_fmtlib_license"],
3}
4
5// Added automatically by a large-scale-change that took the approach of
6// 'apply every license found to every target'. While this makes sure we respect
7// every license restriction, it may not be entirely correct.
8//
9// e.g. GPL in an MIT project might only apply to the contrib/ directory.
10//
11// Please consider splitting the single license below into multiple licenses,
12// taking care not to lose any license_kind information, and overriding the
13// default license using the 'licenses: [...]' property on targets as needed.
14//
15// For unused files, consider creating a 'fileGroup' with "//visibility:private"
16// to attach the license to, and including a comment whether the files may be
17// used in the current project.
18//
19// large-scale-change included anything that looked like it might be a license
20// text as a license_text. e.g. LICENSE, NOTICE, COPYING etc.
21//
22// Please consider removing redundant or irrelevant files from 'license_text:'.
23// See: http://go/android-license-faq
24license {
25    name: "external_fmtlib_license",
26    visibility: [":__subpackages__"],
27    license_kinds: [
28        "SPDX-license-identifier-BSD",
29        "SPDX-license-identifier-CC0-1.0",
30        "SPDX-license-identifier-MIT",
31        "SPDX-license-identifier-PSF-2.0",
32        "legacy_unencumbered",
33    ],
34    license_text: [
35        "LICENSE.rst",
36        "NOTICE",
37    ],
38}
39
40cc_defaults {
41    name: "fmtlib-non-test-defaults",
42    cflags: [
43        "-fno-exceptions",
44        // If built without exceptions, libfmt uses assert.
45        // The tests *require* exceptions, so we can't win here.
46        // (This is also why we have two cc_defaults in this file.)
47        // Unless proven to be a bad idea, let's at least have some run-time
48        // checking.
49        "-UNDEBUG",
50    ],
51    srcs: ["src/format.cc"],
52    local_include_dirs: ["include"],
53    export_include_dirs: ["include"],
54    visibility: ["//system/libbase"],
55    min_sdk_version: "29",
56}
57
58cc_library_headers {
59    name: "fmtlib_headers",
60    export_include_dirs: ["include"],
61
62    vendor_available: true,
63    product_available: true,
64    ramdisk_available: true,
65    vendor_ramdisk_available: true,
66    recovery_available: true,
67    host_supported: true,
68    native_bridge_supported: true,
69    target: {
70        linux_bionic: {
71            enabled: true,
72        },
73        windows: {
74            enabled: true,
75        },
76    },
77    visibility: ["//system/libbase"],
78    min_sdk_version: "29",
79    apex_available: [
80        "//apex_available:anyapex",
81        "//apex_available:platform",
82    ],
83}
84
85// This is built into libbase.  If you want to use this library, link to libbase instead.
86cc_library_static {
87    name: "fmtlib",
88    defaults: ["fmtlib-non-test-defaults"],
89
90    vendor_available: true,
91    product_available: true,
92    ramdisk_available: true,
93    vendor_ramdisk_available: true,
94    recovery_available: true,
95    host_supported: true,
96    native_bridge_supported: true,
97    target: {
98        linux_bionic: {
99            enabled: true,
100        },
101        windows: {
102            enabled: true,
103        },
104    },
105    apex_available: [
106        "//apex_available:anyapex",
107        "//apex_available:platform",
108    ],
109    min_sdk_version: "29",
110}
111
112cc_library_static {
113    name: "fmtlib_ndk",
114    defaults: ["fmtlib-non-test-defaults"],
115    sdk_version: "current",
116    stl: "c++_static",
117}
118
119cc_defaults {
120    name: "fmtlib-test-defaults",
121    srcs: [
122        "src/format.cc",
123        "src/os.cc",
124        "test/gtest-extra.cc",
125        "test/util.cc",
126    ],
127    local_include_dirs: ["include"],
128    host_supported: true,
129    test_suites: ["general-tests"],
130    // The tests require exceptions and RTTI.
131    cflags: ["-fexceptions"],
132    rtti: true,
133    // The usual "gtest *and* gmock, please" dance...
134    gtest: false,
135    include_dirs: [
136        "external/googletest/googlemock/include/gmock",
137        "external/googletest/googletest/include/gtest",
138    ],
139    static_libs: [
140        "libgmock",
141        "libgtest",
142        "libgtest_main",
143    ],
144}
145
146// Most of the fmtlib tests.
147cc_test {
148    name: "fmtlib_test",
149    defaults: ["fmtlib-test-defaults"],
150    srcs: [
151        "test/chrono-test.cc",
152        "test/color-test.cc",
153        "test/core-test.cc",
154        "test/format-test.cc",
155        // Some of the os-test tests deliberately try to do bad things with
156        // file descriptors, but Android's fdsan won't let them.
157        // "test/os-test.cc",
158        "test/printf-test.cc",
159        "test/ranges-test.cc",
160        "test/scan-test.cc",
161    ],
162}
163
164// This one needs to be separate because some of the test names overlap with
165// other tests.
166cc_test {
167    name: "fmtlib_ostream_test",
168    defaults: ["fmtlib-test-defaults"],
169    srcs: ["test/ostream-test.cc"],
170}
171