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