xref: /aosp_15_r20/external/jemalloc_new/Android.bp (revision 1208bc7e437ced7eb82efac44ba17e3beba411da)
1*1208bc7eSAndroid Build Coastguard Worker//
2*1208bc7eSAndroid Build Coastguard Worker// Copyright (C) 2018 The Android Open Source Project
3*1208bc7eSAndroid Build Coastguard Worker//
4*1208bc7eSAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
5*1208bc7eSAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
6*1208bc7eSAndroid Build Coastguard Worker// You may obtain a copy of the License at
7*1208bc7eSAndroid Build Coastguard Worker//
8*1208bc7eSAndroid Build Coastguard Worker//      http://www.apache.org/licenses/LICENSE-2.0
9*1208bc7eSAndroid Build Coastguard Worker//
10*1208bc7eSAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
11*1208bc7eSAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
12*1208bc7eSAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*1208bc7eSAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
14*1208bc7eSAndroid Build Coastguard Worker// limitations under the License.
15*1208bc7eSAndroid Build Coastguard Worker//
16*1208bc7eSAndroid Build Coastguard Worker
17*1208bc7eSAndroid Build Coastguard Workerpackage {
18*1208bc7eSAndroid Build Coastguard Worker    default_applicable_licenses: ["external_jemalloc_new_license"],
19*1208bc7eSAndroid Build Coastguard Worker}
20*1208bc7eSAndroid Build Coastguard Worker
21*1208bc7eSAndroid Build Coastguard Worker// Added automatically by a large-scale-change that took the approach of
22*1208bc7eSAndroid Build Coastguard Worker// 'apply every license found to every target'. While this makes sure we respect
23*1208bc7eSAndroid Build Coastguard Worker// every license restriction, it may not be entirely correct.
24*1208bc7eSAndroid Build Coastguard Worker//
25*1208bc7eSAndroid Build Coastguard Worker// e.g. GPL in an MIT project might only apply to the contrib/ directory.
26*1208bc7eSAndroid Build Coastguard Worker//
27*1208bc7eSAndroid Build Coastguard Worker// Please consider splitting the single license below into multiple licenses,
28*1208bc7eSAndroid Build Coastguard Worker// taking care not to lose any license_kind information, and overriding the
29*1208bc7eSAndroid Build Coastguard Worker// default license using the 'licenses: [...]' property on targets as needed.
30*1208bc7eSAndroid Build Coastguard Worker//
31*1208bc7eSAndroid Build Coastguard Worker// For unused files, consider creating a 'fileGroup' with "//visibility:private"
32*1208bc7eSAndroid Build Coastguard Worker// to attach the license to, and including a comment whether the files may be
33*1208bc7eSAndroid Build Coastguard Worker// used in the current project.
34*1208bc7eSAndroid Build Coastguard Worker// See: http://go/android-license-faq
35*1208bc7eSAndroid Build Coastguard Workerlicense {
36*1208bc7eSAndroid Build Coastguard Worker    name: "external_jemalloc_new_license",
37*1208bc7eSAndroid Build Coastguard Worker    visibility: [":__subpackages__"],
38*1208bc7eSAndroid Build Coastguard Worker    license_kinds: [
39*1208bc7eSAndroid Build Coastguard Worker        "SPDX-license-identifier-Apache-2.0",
40*1208bc7eSAndroid Build Coastguard Worker        "SPDX-license-identifier-BSD",
41*1208bc7eSAndroid Build Coastguard Worker        "SPDX-license-identifier-ISC",
42*1208bc7eSAndroid Build Coastguard Worker        "SPDX-license-identifier-MIT",
43*1208bc7eSAndroid Build Coastguard Worker        "legacy_unencumbered",
44*1208bc7eSAndroid Build Coastguard Worker    ],
45*1208bc7eSAndroid Build Coastguard Worker    license_text: [
46*1208bc7eSAndroid Build Coastguard Worker        "COPYING",
47*1208bc7eSAndroid Build Coastguard Worker    ],
48*1208bc7eSAndroid Build Coastguard Worker}
49*1208bc7eSAndroid Build Coastguard Worker
50*1208bc7eSAndroid Build Coastguard Workercommon_cflags = [
51*1208bc7eSAndroid Build Coastguard Worker    "-D_GNU_SOURCE",
52*1208bc7eSAndroid Build Coastguard Worker    "-D_REENTRANT",
53*1208bc7eSAndroid Build Coastguard Worker    "-Wall",
54*1208bc7eSAndroid Build Coastguard Worker    "-Wshorten-64-to-32",
55*1208bc7eSAndroid Build Coastguard Worker    "-Wsign-compare",
56*1208bc7eSAndroid Build Coastguard Worker    "-Wundef",
57*1208bc7eSAndroid Build Coastguard Worker    "-Wno-format-zero-length",
58*1208bc7eSAndroid Build Coastguard Worker    "-pipe",
59*1208bc7eSAndroid Build Coastguard Worker    "-g3",
60*1208bc7eSAndroid Build Coastguard Worker    "-fvisibility=hidden",
61*1208bc7eSAndroid Build Coastguard Worker    "-O3",
62*1208bc7eSAndroid Build Coastguard Worker    "-funroll-loops",
63*1208bc7eSAndroid Build Coastguard Worker
64*1208bc7eSAndroid Build Coastguard Worker    // The following flags are for avoiding errors when compiling.
65*1208bc7eSAndroid Build Coastguard Worker    "-Wno-unused-parameter",
66*1208bc7eSAndroid Build Coastguard Worker    "-Wno-unused-function",
67*1208bc7eSAndroid Build Coastguard Worker    "-Wno-missing-field-initializers",
68*1208bc7eSAndroid Build Coastguard Worker
69*1208bc7eSAndroid Build Coastguard Worker    "-U_FORTIFY_SOURCE",
70*1208bc7eSAndroid Build Coastguard Worker
71*1208bc7eSAndroid Build Coastguard Worker    // Default enable the tcache.
72*1208bc7eSAndroid Build Coastguard Worker    "-DANDROID_ENABLE_TCACHE",
73*1208bc7eSAndroid Build Coastguard Worker]
74*1208bc7eSAndroid Build Coastguard Worker
75*1208bc7eSAndroid Build Coastguard Workercommon_c_local_includes = [
76*1208bc7eSAndroid Build Coastguard Worker    "src",
77*1208bc7eSAndroid Build Coastguard Worker    "include",
78*1208bc7eSAndroid Build Coastguard Worker]
79*1208bc7eSAndroid Build Coastguard Worker
80*1208bc7eSAndroid Build Coastguard Worker// These parameters change the way jemalloc works.
81*1208bc7eSAndroid Build Coastguard Worker//   ANDROID_NUM_ARENAS=XX
82*1208bc7eSAndroid Build Coastguard Worker//     The total number of arenas to create.
83*1208bc7eSAndroid Build Coastguard Worker//   ANDROID_TCACHE_NSLOTS_SMALL_MIN=XX
84*1208bc7eSAndroid Build Coastguard Worker//     The minimum number of small slots held in the tcache. This must be
85*1208bc7eSAndroid Build Coastguard Worker//     at least 1.
86*1208bc7eSAndroid Build Coastguard Worker//   ANDROID_TCACHE_NSLOTS_SMALL_MAX=XX
87*1208bc7eSAndroid Build Coastguard Worker//     The number of small slots held in the tcache. The higher this number
88*1208bc7eSAndroid Build Coastguard Worker//     is, the higher amount of PSS consumed. If this number is set too low
89*1208bc7eSAndroid Build Coastguard Worker//     then small allocations will take longer to complete.
90*1208bc7eSAndroid Build Coastguard Worker//   ANDROID_TCACHE_NSLOTS_LARGE=XX
91*1208bc7eSAndroid Build Coastguard Worker//     The number of large slots held in the tcache. The higher this number
92*1208bc7eSAndroid Build Coastguard Worker//     is, the higher amount of PSS consumed. If this number is set too low
93*1208bc7eSAndroid Build Coastguard Worker//     then large allocations will take longer to complete.
94*1208bc7eSAndroid Build Coastguard Worker//   ANDROID_LG_TCACHE_MAXCLASS_DEFAULT=XX
95*1208bc7eSAndroid Build Coastguard Worker//     1 << XX is the maximum sized allocation that will be in the tcache.
96*1208bc7eSAndroid Build Coastguard Worker
97*1208bc7eSAndroid Build Coastguard Workerandroid_common_cflags = [
98*1208bc7eSAndroid Build Coastguard Worker    // Default parameters for jemalloc config.
99*1208bc7eSAndroid Build Coastguard Worker    "-DANDROID_LG_TCACHE_MAXCLASS_DEFAULT=16",
100*1208bc7eSAndroid Build Coastguard Worker    "-DANDROID_NUM_ARENAS=2",
101*1208bc7eSAndroid Build Coastguard Worker    "-DANDROID_TCACHE_NSLOTS_SMALL_MAX=8",
102*1208bc7eSAndroid Build Coastguard Worker    "-DANDROID_TCACHE_NSLOTS_LARGE=16",
103*1208bc7eSAndroid Build Coastguard Worker]
104*1208bc7eSAndroid Build Coastguard Worker
105*1208bc7eSAndroid Build Coastguard Workerandroid_product_variables = {
106*1208bc7eSAndroid Build Coastguard Worker    malloc_low_memory: {
107*1208bc7eSAndroid Build Coastguard Worker        // Parameters to minimize RSS.
108*1208bc7eSAndroid Build Coastguard Worker        cflags: [
109*1208bc7eSAndroid Build Coastguard Worker            // Disable the tcache on non-svelte configurations, to save PSS.
110*1208bc7eSAndroid Build Coastguard Worker            "-UANDROID_ENABLE_TCACHE",
111*1208bc7eSAndroid Build Coastguard Worker
112*1208bc7eSAndroid Build Coastguard Worker            "-UANDROID_NUM_ARENAS",
113*1208bc7eSAndroid Build Coastguard Worker            "-DANDROID_NUM_ARENAS=1",
114*1208bc7eSAndroid Build Coastguard Worker
115*1208bc7eSAndroid Build Coastguard Worker            // This value cannot go below 2.
116*1208bc7eSAndroid Build Coastguard Worker            "-UANDROID_TCACHE_NSLOTS_SMALL_MAX",
117*1208bc7eSAndroid Build Coastguard Worker            "-DANDROID_TCACHE_NSLOTS_SMALL_MAX=2",
118*1208bc7eSAndroid Build Coastguard Worker
119*1208bc7eSAndroid Build Coastguard Worker            "-UANDROID_TCACHE_NSLOTS_LARGE",
120*1208bc7eSAndroid Build Coastguard Worker            "-DANDROID_TCACHE_NSLOTS_LARGE=1",
121*1208bc7eSAndroid Build Coastguard Worker
122*1208bc7eSAndroid Build Coastguard Worker            // Minimize the size of the internal data structures by removing
123*1208bc7eSAndroid Build Coastguard Worker            // unused stats and other data not used on Android.
124*1208bc7eSAndroid Build Coastguard Worker            "-DANDROID_MINIMIZE_STRUCTS",
125*1208bc7eSAndroid Build Coastguard Worker        ],
126*1208bc7eSAndroid Build Coastguard Worker    },
127*1208bc7eSAndroid Build Coastguard Worker}
128*1208bc7eSAndroid Build Coastguard Worker
129*1208bc7eSAndroid Build Coastguard Workercc_defaults {
130*1208bc7eSAndroid Build Coastguard Worker    name: "jemalloc5_defaults",
131*1208bc7eSAndroid Build Coastguard Worker    host_supported: true,
132*1208bc7eSAndroid Build Coastguard Worker    native_bridge_supported: true,
133*1208bc7eSAndroid Build Coastguard Worker    cflags: common_cflags,
134*1208bc7eSAndroid Build Coastguard Worker
135*1208bc7eSAndroid Build Coastguard Worker    target: {
136*1208bc7eSAndroid Build Coastguard Worker        android: {
137*1208bc7eSAndroid Build Coastguard Worker            cflags: android_common_cflags,
138*1208bc7eSAndroid Build Coastguard Worker            product_variables: android_product_variables,
139*1208bc7eSAndroid Build Coastguard Worker        },
140*1208bc7eSAndroid Build Coastguard Worker        linux_bionic: {
141*1208bc7eSAndroid Build Coastguard Worker            enabled: true,
142*1208bc7eSAndroid Build Coastguard Worker        },
143*1208bc7eSAndroid Build Coastguard Worker    },
144*1208bc7eSAndroid Build Coastguard Worker
145*1208bc7eSAndroid Build Coastguard Worker    local_include_dirs: common_c_local_includes,
146*1208bc7eSAndroid Build Coastguard Worker    stl: "none",
147*1208bc7eSAndroid Build Coastguard Worker}
148*1208bc7eSAndroid Build Coastguard Worker
149*1208bc7eSAndroid Build Coastguard Workerlib_src_files = [
150*1208bc7eSAndroid Build Coastguard Worker    "src/jemalloc.c",
151*1208bc7eSAndroid Build Coastguard Worker    "src/arena.c",
152*1208bc7eSAndroid Build Coastguard Worker    "src/background_thread.c",
153*1208bc7eSAndroid Build Coastguard Worker    "src/base.c",
154*1208bc7eSAndroid Build Coastguard Worker    "src/bin.c",
155*1208bc7eSAndroid Build Coastguard Worker    "src/bitmap.c",
156*1208bc7eSAndroid Build Coastguard Worker    "src/ckh.c",
157*1208bc7eSAndroid Build Coastguard Worker    "src/ctl.c",
158*1208bc7eSAndroid Build Coastguard Worker    "src/div.c",
159*1208bc7eSAndroid Build Coastguard Worker    "src/extent.c",
160*1208bc7eSAndroid Build Coastguard Worker    "src/extent_dss.c",
161*1208bc7eSAndroid Build Coastguard Worker    "src/extent_mmap.c",
162*1208bc7eSAndroid Build Coastguard Worker    "src/hash.c",
163*1208bc7eSAndroid Build Coastguard Worker    "src/hooks.c",
164*1208bc7eSAndroid Build Coastguard Worker    "src/large.c",
165*1208bc7eSAndroid Build Coastguard Worker    "src/log.c",
166*1208bc7eSAndroid Build Coastguard Worker    "src/malloc_io.c",
167*1208bc7eSAndroid Build Coastguard Worker    "src/mutex.c",
168*1208bc7eSAndroid Build Coastguard Worker    "src/mutex_pool.c",
169*1208bc7eSAndroid Build Coastguard Worker    "src/nstime.c",
170*1208bc7eSAndroid Build Coastguard Worker    "src/pages.c",
171*1208bc7eSAndroid Build Coastguard Worker    "src/prng.c",
172*1208bc7eSAndroid Build Coastguard Worker    "src/prof.c",
173*1208bc7eSAndroid Build Coastguard Worker    "src/rtree.c",
174*1208bc7eSAndroid Build Coastguard Worker    "src/stats.c",
175*1208bc7eSAndroid Build Coastguard Worker    "src/sz.c",
176*1208bc7eSAndroid Build Coastguard Worker    "src/tcache.c",
177*1208bc7eSAndroid Build Coastguard Worker    "src/ticker.c",
178*1208bc7eSAndroid Build Coastguard Worker    "src/tsd.c",
179*1208bc7eSAndroid Build Coastguard Worker    "src/witness.c",
180*1208bc7eSAndroid Build Coastguard Worker]
181*1208bc7eSAndroid Build Coastguard Worker
182*1208bc7eSAndroid Build Coastguard Worker//-----------------------------------------------------------------------
183*1208bc7eSAndroid Build Coastguard Worker// jemalloc static library
184*1208bc7eSAndroid Build Coastguard Worker//-----------------------------------------------------------------------
185*1208bc7eSAndroid Build Coastguard Workercc_library {
186*1208bc7eSAndroid Build Coastguard Worker    name: "libjemalloc5",
187*1208bc7eSAndroid Build Coastguard Worker    ramdisk_available: true,
188*1208bc7eSAndroid Build Coastguard Worker    vendor_ramdisk_available: true,
189*1208bc7eSAndroid Build Coastguard Worker    recovery_available: true,
190*1208bc7eSAndroid Build Coastguard Worker
191*1208bc7eSAndroid Build Coastguard Worker    defaults: ["jemalloc5_defaults"],
192*1208bc7eSAndroid Build Coastguard Worker
193*1208bc7eSAndroid Build Coastguard Worker    srcs: lib_src_files,
194*1208bc7eSAndroid Build Coastguard Worker
195*1208bc7eSAndroid Build Coastguard Worker    export_include_dirs: ["include"],
196*1208bc7eSAndroid Build Coastguard Worker
197*1208bc7eSAndroid Build Coastguard Worker    target: {
198*1208bc7eSAndroid Build Coastguard Worker        android: {
199*1208bc7eSAndroid Build Coastguard Worker            shared: {
200*1208bc7eSAndroid Build Coastguard Worker                enabled: false,
201*1208bc7eSAndroid Build Coastguard Worker            },
202*1208bc7eSAndroid Build Coastguard Worker            system_shared_libs: [],
203*1208bc7eSAndroid Build Coastguard Worker            header_libs: ["libc_headers"],
204*1208bc7eSAndroid Build Coastguard Worker        },
205*1208bc7eSAndroid Build Coastguard Worker        linux_bionic: {
206*1208bc7eSAndroid Build Coastguard Worker            system_shared_libs: [],
207*1208bc7eSAndroid Build Coastguard Worker            header_libs: ["libc_headers"],
208*1208bc7eSAndroid Build Coastguard Worker        },
209*1208bc7eSAndroid Build Coastguard Worker        musl: {
210*1208bc7eSAndroid Build Coastguard Worker            // Linking against musl uses libjemalloc5 by default, list only
211*1208bc7eSAndroid Build Coastguard Worker            // libc_musl here to avoid a circular dependency.
212*1208bc7eSAndroid Build Coastguard Worker            system_shared_libs: ["libc_musl"],
213*1208bc7eSAndroid Build Coastguard Worker        },
214*1208bc7eSAndroid Build Coastguard Worker    },
215*1208bc7eSAndroid Build Coastguard Worker    apex_available: [
216*1208bc7eSAndroid Build Coastguard Worker        "com.android.runtime",
217*1208bc7eSAndroid Build Coastguard Worker    ],
218*1208bc7eSAndroid Build Coastguard Worker}
219*1208bc7eSAndroid Build Coastguard Worker
220*1208bc7eSAndroid Build Coastguard Worker//-----------------------------------------------------------------------
221*1208bc7eSAndroid Build Coastguard Worker// jemalloc "je"-prefixed static library
222*1208bc7eSAndroid Build Coastguard Worker//
223*1208bc7eSAndroid Build Coastguard Worker// This is the same as "libjemalloc5", except:
224*1208bc7eSAndroid Build Coastguard Worker//  - It only supports host (just because we don't need it for device)
225*1208bc7eSAndroid Build Coastguard Worker//  - all the functions (malloc, calloc, free, etc.) have a "je_" prefix.
226*1208bc7eSAndroid Build Coastguard Worker//    The -DJEMALLOC_NO_RENAME flag causes the prefix to be added.
227*1208bc7eSAndroid Build Coastguard Worker//
228*1208bc7eSAndroid Build Coastguard Worker// We need this because when building rust binaries with jemalloc and
229*1208bc7eSAndroid Build Coastguard Worker// the tikv-jemallocator wrappers, code in libc gets a segfault before
230*1208bc7eSAndroid Build Coastguard Worker// reaching main(). I'm not sure why that is, but if we prefix the jemalloc
231*1208bc7eSAndroid Build Coastguard Worker// methods and have the tikv-jemallocator crate use the prefixed ones,
232*1208bc7eSAndroid Build Coastguard Worker// all rust code will use jemalloc successfully while libc will continue
233*1208bc7eSAndroid Build Coastguard Worker// using the system allocator.
234*1208bc7eSAndroid Build Coastguard Worker//-----------------------------------------------------------------------
235*1208bc7eSAndroid Build Coastguard Workercc_library_host_static {
236*1208bc7eSAndroid Build Coastguard Worker    name: "libjemalloc5_je_prefixed",
237*1208bc7eSAndroid Build Coastguard Worker
238*1208bc7eSAndroid Build Coastguard Worker    defaults: ["jemalloc5_defaults"],
239*1208bc7eSAndroid Build Coastguard Worker
240*1208bc7eSAndroid Build Coastguard Worker    cflags: ["-DJEMALLOC_NO_RENAME"],
241*1208bc7eSAndroid Build Coastguard Worker
242*1208bc7eSAndroid Build Coastguard Worker    srcs: lib_src_files,
243*1208bc7eSAndroid Build Coastguard Worker
244*1208bc7eSAndroid Build Coastguard Worker    export_include_dirs: ["include"],
245*1208bc7eSAndroid Build Coastguard Worker
246*1208bc7eSAndroid Build Coastguard Worker    target: {
247*1208bc7eSAndroid Build Coastguard Worker        linux_bionic: {
248*1208bc7eSAndroid Build Coastguard Worker            system_shared_libs: [],
249*1208bc7eSAndroid Build Coastguard Worker            header_libs: ["libc_headers"],
250*1208bc7eSAndroid Build Coastguard Worker        },
251*1208bc7eSAndroid Build Coastguard Worker        musl: {
252*1208bc7eSAndroid Build Coastguard Worker            // Linking against musl uses libjemalloc5 by default, list only
253*1208bc7eSAndroid Build Coastguard Worker            // libc_musl here to avoid a circular dependency.
254*1208bc7eSAndroid Build Coastguard Worker            system_shared_libs: ["libc_musl"],
255*1208bc7eSAndroid Build Coastguard Worker        },
256*1208bc7eSAndroid Build Coastguard Worker    },
257*1208bc7eSAndroid Build Coastguard Worker
258*1208bc7eSAndroid Build Coastguard Worker    visibility: [
259*1208bc7eSAndroid Build Coastguard Worker        "//external/rust/android-crates-io/crates/tikv-jemalloc-sys:__subpackages__",
260*1208bc7eSAndroid Build Coastguard Worker    ],
261*1208bc7eSAndroid Build Coastguard Worker}
262*1208bc7eSAndroid Build Coastguard Worker
263*1208bc7eSAndroid Build Coastguard Worker//-----------------------------------------------------------------------
264*1208bc7eSAndroid Build Coastguard Worker// jemalloc static jet library
265*1208bc7eSAndroid Build Coastguard Worker//-----------------------------------------------------------------------
266*1208bc7eSAndroid Build Coastguard Workercc_library_static {
267*1208bc7eSAndroid Build Coastguard Worker    name: "libjemalloc5_jet",
268*1208bc7eSAndroid Build Coastguard Worker
269*1208bc7eSAndroid Build Coastguard Worker    defaults: ["jemalloc5_defaults"],
270*1208bc7eSAndroid Build Coastguard Worker
271*1208bc7eSAndroid Build Coastguard Worker    cflags: [
272*1208bc7eSAndroid Build Coastguard Worker        "-DJEMALLOC_JET",
273*1208bc7eSAndroid Build Coastguard Worker    ],
274*1208bc7eSAndroid Build Coastguard Worker
275*1208bc7eSAndroid Build Coastguard Worker    srcs: lib_src_files,
276*1208bc7eSAndroid Build Coastguard Worker}
277*1208bc7eSAndroid Build Coastguard Worker
278*1208bc7eSAndroid Build Coastguard Workerjemalloc5_testlib_srcs = [
279*1208bc7eSAndroid Build Coastguard Worker    "test/src/btalloc.c",
280*1208bc7eSAndroid Build Coastguard Worker    "test/src/btalloc_0.c",
281*1208bc7eSAndroid Build Coastguard Worker    "test/src/btalloc_1.c",
282*1208bc7eSAndroid Build Coastguard Worker    "test/src/math.c",
283*1208bc7eSAndroid Build Coastguard Worker    "test/src/mtx.c",
284*1208bc7eSAndroid Build Coastguard Worker    "test/src/mq.c",
285*1208bc7eSAndroid Build Coastguard Worker    "test/src/SFMT.c",
286*1208bc7eSAndroid Build Coastguard Worker    "test/src/test.c",
287*1208bc7eSAndroid Build Coastguard Worker    "test/src/thd.c",
288*1208bc7eSAndroid Build Coastguard Worker    "test/src/timer.c",
289*1208bc7eSAndroid Build Coastguard Worker]
290*1208bc7eSAndroid Build Coastguard Worker
291*1208bc7eSAndroid Build Coastguard Worker//-----------------------------------------------------------------------
292*1208bc7eSAndroid Build Coastguard Worker// jemalloc unit test library
293*1208bc7eSAndroid Build Coastguard Worker//-----------------------------------------------------------------------
294*1208bc7eSAndroid Build Coastguard Workercc_library_static {
295*1208bc7eSAndroid Build Coastguard Worker    name: "libjemalloc5_unittest",
296*1208bc7eSAndroid Build Coastguard Worker
297*1208bc7eSAndroid Build Coastguard Worker    defaults: ["jemalloc5_defaults"],
298*1208bc7eSAndroid Build Coastguard Worker
299*1208bc7eSAndroid Build Coastguard Worker    cflags: [
300*1208bc7eSAndroid Build Coastguard Worker        "-DJEMALLOC_UNIT_TEST",
301*1208bc7eSAndroid Build Coastguard Worker    ],
302*1208bc7eSAndroid Build Coastguard Worker
303*1208bc7eSAndroid Build Coastguard Worker    local_include_dirs: [
304*1208bc7eSAndroid Build Coastguard Worker        "test/include",
305*1208bc7eSAndroid Build Coastguard Worker    ],
306*1208bc7eSAndroid Build Coastguard Worker
307*1208bc7eSAndroid Build Coastguard Worker    srcs: jemalloc5_testlib_srcs,
308*1208bc7eSAndroid Build Coastguard Worker
309*1208bc7eSAndroid Build Coastguard Worker    whole_static_libs: ["libjemalloc5_jet"],
310*1208bc7eSAndroid Build Coastguard Worker}
311*1208bc7eSAndroid Build Coastguard Worker
312*1208bc7eSAndroid Build Coastguard Worker//-----------------------------------------------------------------------
313*1208bc7eSAndroid Build Coastguard Worker// jemalloc unit tests
314*1208bc7eSAndroid Build Coastguard Worker//-----------------------------------------------------------------------
315*1208bc7eSAndroid Build Coastguard Workerunit_tests = [
316*1208bc7eSAndroid Build Coastguard Worker    "test/unit/a0.c",
317*1208bc7eSAndroid Build Coastguard Worker    "test/unit/arena_reset.c",
318*1208bc7eSAndroid Build Coastguard Worker    "test/unit/atomic.c",
319*1208bc7eSAndroid Build Coastguard Worker    "test/unit/background_thread.c",
320*1208bc7eSAndroid Build Coastguard Worker    "test/unit/background_thread_enable.c",
321*1208bc7eSAndroid Build Coastguard Worker    "test/unit/base.c",
322*1208bc7eSAndroid Build Coastguard Worker    "test/unit/bitmap.c",
323*1208bc7eSAndroid Build Coastguard Worker    "test/unit/ckh.c",
324*1208bc7eSAndroid Build Coastguard Worker    "test/unit/decay.c",
325*1208bc7eSAndroid Build Coastguard Worker    "test/unit/div.c",
326*1208bc7eSAndroid Build Coastguard Worker    "test/unit/emitter.c",
327*1208bc7eSAndroid Build Coastguard Worker    "test/unit/extent_quantize.c",
328*1208bc7eSAndroid Build Coastguard Worker    "test/unit/fork.c",
329*1208bc7eSAndroid Build Coastguard Worker    "test/unit/hash.c",
330*1208bc7eSAndroid Build Coastguard Worker    "test/unit/hooks.c",
331*1208bc7eSAndroid Build Coastguard Worker    "test/unit/junk.c",
332*1208bc7eSAndroid Build Coastguard Worker    "test/unit/junk_alloc.c",
333*1208bc7eSAndroid Build Coastguard Worker    "test/unit/junk_free.c",
334*1208bc7eSAndroid Build Coastguard Worker    "test/unit/log.c",
335*1208bc7eSAndroid Build Coastguard Worker    "test/unit/mallctl.c",
336*1208bc7eSAndroid Build Coastguard Worker    "test/unit/malloc_io.c",
337*1208bc7eSAndroid Build Coastguard Worker    "test/unit/math.c",
338*1208bc7eSAndroid Build Coastguard Worker    "test/unit/mq.c",
339*1208bc7eSAndroid Build Coastguard Worker    "test/unit/mtx.c",
340*1208bc7eSAndroid Build Coastguard Worker    "test/unit/pack.c",
341*1208bc7eSAndroid Build Coastguard Worker    "test/unit/pages.c",
342*1208bc7eSAndroid Build Coastguard Worker    "test/unit/ph.c",
343*1208bc7eSAndroid Build Coastguard Worker    "test/unit/prng.c",
344*1208bc7eSAndroid Build Coastguard Worker    "test/unit/prof_accum.c",
345*1208bc7eSAndroid Build Coastguard Worker    "test/unit/prof_active.c",
346*1208bc7eSAndroid Build Coastguard Worker    "test/unit/prof_gdump.c",
347*1208bc7eSAndroid Build Coastguard Worker    "test/unit/prof_idump.c",
348*1208bc7eSAndroid Build Coastguard Worker    "test/unit/prof_reset.c",
349*1208bc7eSAndroid Build Coastguard Worker    "test/unit/prof_tctx.c",
350*1208bc7eSAndroid Build Coastguard Worker    "test/unit/prof_thread_name.c",
351*1208bc7eSAndroid Build Coastguard Worker    "test/unit/ql.c",
352*1208bc7eSAndroid Build Coastguard Worker    "test/unit/qr.c",
353*1208bc7eSAndroid Build Coastguard Worker    "test/unit/rb.c",
354*1208bc7eSAndroid Build Coastguard Worker    "test/unit/retained.c",
355*1208bc7eSAndroid Build Coastguard Worker    "test/unit/rtree.c",
356*1208bc7eSAndroid Build Coastguard Worker    "test/unit/SFMT.c",
357*1208bc7eSAndroid Build Coastguard Worker    "test/unit/size_classes.c",
358*1208bc7eSAndroid Build Coastguard Worker    "test/unit/slab.c",
359*1208bc7eSAndroid Build Coastguard Worker    "test/unit/smoothstep.c",
360*1208bc7eSAndroid Build Coastguard Worker    "test/unit/spin.c",
361*1208bc7eSAndroid Build Coastguard Worker    "test/unit/stats.c",
362*1208bc7eSAndroid Build Coastguard Worker    "test/unit/stats_print.c",
363*1208bc7eSAndroid Build Coastguard Worker    "test/unit/ticker.c",
364*1208bc7eSAndroid Build Coastguard Worker    "test/unit/nstime.c",
365*1208bc7eSAndroid Build Coastguard Worker    "test/unit/tsd.c",
366*1208bc7eSAndroid Build Coastguard Worker    "test/unit/witness.c",
367*1208bc7eSAndroid Build Coastguard Worker    "test/unit/zero.c",
368*1208bc7eSAndroid Build Coastguard Worker]
369*1208bc7eSAndroid Build Coastguard Worker
370*1208bc7eSAndroid Build Coastguard Workergenrule_defaults {
371*1208bc7eSAndroid Build Coastguard Worker    name: "jemalloc5_gtestifier_defaults",
372*1208bc7eSAndroid Build Coastguard Worker    tools: ["gtestifier"],
373*1208bc7eSAndroid Build Coastguard Worker    cmd: "$(location gtestifier)" +
374*1208bc7eSAndroid Build Coastguard Worker        " --in $(in)" +
375*1208bc7eSAndroid Build Coastguard Worker        " --out $(out)" +
376*1208bc7eSAndroid Build Coastguard Worker        " --suite jemalloc5" +
377*1208bc7eSAndroid Build Coastguard Worker        " --test_name_prefix test_ " +
378*1208bc7eSAndroid Build Coastguard Worker        " --main_no_arguments " +
379*1208bc7eSAndroid Build Coastguard Worker        " --predicate testResultPredicate",
380*1208bc7eSAndroid Build Coastguard Worker}
381*1208bc7eSAndroid Build Coastguard Worker
382*1208bc7eSAndroid Build Coastguard Workergensrcs {
383*1208bc7eSAndroid Build Coastguard Worker    name: "jemalloc5_unittests_gtestified_srcs",
384*1208bc7eSAndroid Build Coastguard Worker    defaults: ["jemalloc5_gtestifier_defaults"],
385*1208bc7eSAndroid Build Coastguard Worker    srcs: unit_tests,
386*1208bc7eSAndroid Build Coastguard Worker    output_extension: "c",
387*1208bc7eSAndroid Build Coastguard Worker}
388*1208bc7eSAndroid Build Coastguard Worker
389*1208bc7eSAndroid Build Coastguard Workercc_test {
390*1208bc7eSAndroid Build Coastguard Worker    name: "jemalloc5_unittests",
391*1208bc7eSAndroid Build Coastguard Worker
392*1208bc7eSAndroid Build Coastguard Worker    defaults: ["jemalloc5_defaults"],
393*1208bc7eSAndroid Build Coastguard Worker
394*1208bc7eSAndroid Build Coastguard Worker    cflags: common_cflags + [
395*1208bc7eSAndroid Build Coastguard Worker        "-DJEMALLOC_UNIT_TEST",
396*1208bc7eSAndroid Build Coastguard Worker        "-include jemalloc_gtest.h",
397*1208bc7eSAndroid Build Coastguard Worker    ],
398*1208bc7eSAndroid Build Coastguard Worker
399*1208bc7eSAndroid Build Coastguard Worker    stl: "libc++",
400*1208bc7eSAndroid Build Coastguard Worker
401*1208bc7eSAndroid Build Coastguard Worker    local_include_dirs: common_c_local_includes + [
402*1208bc7eSAndroid Build Coastguard Worker        "test/include",
403*1208bc7eSAndroid Build Coastguard Worker        "android/test",
404*1208bc7eSAndroid Build Coastguard Worker    ],
405*1208bc7eSAndroid Build Coastguard Worker
406*1208bc7eSAndroid Build Coastguard Worker    srcs: [":jemalloc5_unittests_gtestified_srcs"],
407*1208bc7eSAndroid Build Coastguard Worker
408*1208bc7eSAndroid Build Coastguard Worker    static_libs: [
409*1208bc7eSAndroid Build Coastguard Worker        "libjemalloc5_unittest",
410*1208bc7eSAndroid Build Coastguard Worker        "libgtestifier",
411*1208bc7eSAndroid Build Coastguard Worker    ],
412*1208bc7eSAndroid Build Coastguard Worker
413*1208bc7eSAndroid Build Coastguard Worker    isolated: true,
414*1208bc7eSAndroid Build Coastguard Worker
415*1208bc7eSAndroid Build Coastguard Worker    target: {
416*1208bc7eSAndroid Build Coastguard Worker        linux_bionic: {
417*1208bc7eSAndroid Build Coastguard Worker            enabled: true,
418*1208bc7eSAndroid Build Coastguard Worker        },
419*1208bc7eSAndroid Build Coastguard Worker        linux_glibc: {
420*1208bc7eSAndroid Build Coastguard Worker            // The sanitizer does not work for these tests on the host.
421*1208bc7eSAndroid Build Coastguard Worker            sanitize: {
422*1208bc7eSAndroid Build Coastguard Worker                never: true,
423*1208bc7eSAndroid Build Coastguard Worker            },
424*1208bc7eSAndroid Build Coastguard Worker        },
425*1208bc7eSAndroid Build Coastguard Worker    },
426*1208bc7eSAndroid Build Coastguard Worker}
427*1208bc7eSAndroid Build Coastguard Worker
428*1208bc7eSAndroid Build Coastguard Worker//-----------------------------------------------------------------------
429*1208bc7eSAndroid Build Coastguard Worker// jemalloc integration test library
430*1208bc7eSAndroid Build Coastguard Worker//-----------------------------------------------------------------------
431*1208bc7eSAndroid Build Coastguard Workercc_library_static {
432*1208bc7eSAndroid Build Coastguard Worker    name: "libjemalloc5_integrationtest",
433*1208bc7eSAndroid Build Coastguard Worker
434*1208bc7eSAndroid Build Coastguard Worker    defaults: ["jemalloc5_defaults"],
435*1208bc7eSAndroid Build Coastguard Worker
436*1208bc7eSAndroid Build Coastguard Worker    cflags: [
437*1208bc7eSAndroid Build Coastguard Worker        "-U_FORTIFY_SOURCE",
438*1208bc7eSAndroid Build Coastguard Worker        "-DJEMALLOC_INTEGRATION_TEST",
439*1208bc7eSAndroid Build Coastguard Worker        "-DJEMALLOC_NO_RENAME",
440*1208bc7eSAndroid Build Coastguard Worker    ],
441*1208bc7eSAndroid Build Coastguard Worker
442*1208bc7eSAndroid Build Coastguard Worker    local_include_dirs: [
443*1208bc7eSAndroid Build Coastguard Worker        "test/include",
444*1208bc7eSAndroid Build Coastguard Worker    ],
445*1208bc7eSAndroid Build Coastguard Worker
446*1208bc7eSAndroid Build Coastguard Worker    srcs: jemalloc5_testlib_srcs + lib_src_files,
447*1208bc7eSAndroid Build Coastguard Worker}
448*1208bc7eSAndroid Build Coastguard Worker
449*1208bc7eSAndroid Build Coastguard Worker//-----------------------------------------------------------------------
450*1208bc7eSAndroid Build Coastguard Worker// jemalloc integration tests
451*1208bc7eSAndroid Build Coastguard Worker//-----------------------------------------------------------------------
452*1208bc7eSAndroid Build Coastguard Workerintegration_tests = [
453*1208bc7eSAndroid Build Coastguard Worker    "test/integration/aligned_alloc.c",
454*1208bc7eSAndroid Build Coastguard Worker    "test/integration/allocated.c",
455*1208bc7eSAndroid Build Coastguard Worker    "test/integration/extent.c",
456*1208bc7eSAndroid Build Coastguard Worker    "test/integration/mallocx.c",
457*1208bc7eSAndroid Build Coastguard Worker    "test/integration/MALLOCX_ARENA.c",
458*1208bc7eSAndroid Build Coastguard Worker    "test/integration/overflow.c",
459*1208bc7eSAndroid Build Coastguard Worker    "test/integration/posix_memalign.c",
460*1208bc7eSAndroid Build Coastguard Worker    "test/integration/rallocx.c",
461*1208bc7eSAndroid Build Coastguard Worker    "test/integration/sdallocx.c",
462*1208bc7eSAndroid Build Coastguard Worker    "test/integration/thread_arena.c",
463*1208bc7eSAndroid Build Coastguard Worker    "test/integration/xallocx.c",
464*1208bc7eSAndroid Build Coastguard Worker]
465*1208bc7eSAndroid Build Coastguard Worker
466*1208bc7eSAndroid Build Coastguard Workerintegration_cpp_tests = [
467*1208bc7eSAndroid Build Coastguard Worker    "test/integration/cpp/basic.cpp",
468*1208bc7eSAndroid Build Coastguard Worker]
469*1208bc7eSAndroid Build Coastguard Worker
470*1208bc7eSAndroid Build Coastguard Workergensrcs {
471*1208bc7eSAndroid Build Coastguard Worker    name: "jemalloc5_integrationtests_gtestified_srcs",
472*1208bc7eSAndroid Build Coastguard Worker    defaults: ["jemalloc5_gtestifier_defaults"],
473*1208bc7eSAndroid Build Coastguard Worker    srcs: integration_tests,
474*1208bc7eSAndroid Build Coastguard Worker    output_extension: "c",
475*1208bc7eSAndroid Build Coastguard Worker}
476*1208bc7eSAndroid Build Coastguard Worker
477*1208bc7eSAndroid Build Coastguard Workergensrcs {
478*1208bc7eSAndroid Build Coastguard Worker    name: "jemalloc5_cpp_integrationtests_gtestified_srcs",
479*1208bc7eSAndroid Build Coastguard Worker    defaults: ["jemalloc5_gtestifier_defaults"],
480*1208bc7eSAndroid Build Coastguard Worker    srcs: integration_cpp_tests,
481*1208bc7eSAndroid Build Coastguard Worker    output_extension: "cpp",
482*1208bc7eSAndroid Build Coastguard Worker}
483*1208bc7eSAndroid Build Coastguard Worker
484*1208bc7eSAndroid Build Coastguard Workercc_test {
485*1208bc7eSAndroid Build Coastguard Worker    name: "jemalloc5_integrationtests",
486*1208bc7eSAndroid Build Coastguard Worker
487*1208bc7eSAndroid Build Coastguard Worker    defaults: ["jemalloc5_defaults"],
488*1208bc7eSAndroid Build Coastguard Worker
489*1208bc7eSAndroid Build Coastguard Worker    cflags: common_cflags + [
490*1208bc7eSAndroid Build Coastguard Worker        "-DJEMALLOC_INTEGRATION_TEST",
491*1208bc7eSAndroid Build Coastguard Worker        "-DJEMALLOC_NO_RENAME",
492*1208bc7eSAndroid Build Coastguard Worker        "-include jemalloc_gtest.h",
493*1208bc7eSAndroid Build Coastguard Worker    ],
494*1208bc7eSAndroid Build Coastguard Worker
495*1208bc7eSAndroid Build Coastguard Worker    local_include_dirs: common_c_local_includes + [
496*1208bc7eSAndroid Build Coastguard Worker        "test/include",
497*1208bc7eSAndroid Build Coastguard Worker        "android/test",
498*1208bc7eSAndroid Build Coastguard Worker    ],
499*1208bc7eSAndroid Build Coastguard Worker
500*1208bc7eSAndroid Build Coastguard Worker    srcs: [
501*1208bc7eSAndroid Build Coastguard Worker        ":jemalloc5_integrationtests_gtestified_srcs",
502*1208bc7eSAndroid Build Coastguard Worker        ":jemalloc5_cpp_integrationtests_gtestified_srcs",
503*1208bc7eSAndroid Build Coastguard Worker    ],
504*1208bc7eSAndroid Build Coastguard Worker
505*1208bc7eSAndroid Build Coastguard Worker    static_libs: [
506*1208bc7eSAndroid Build Coastguard Worker        "libjemalloc5_integrationtest",
507*1208bc7eSAndroid Build Coastguard Worker        "libgtestifier",
508*1208bc7eSAndroid Build Coastguard Worker    ],
509*1208bc7eSAndroid Build Coastguard Worker
510*1208bc7eSAndroid Build Coastguard Worker    target: {
511*1208bc7eSAndroid Build Coastguard Worker        linux_glibc: {
512*1208bc7eSAndroid Build Coastguard Worker            // The sanitizer does not work for these tests on the host.
513*1208bc7eSAndroid Build Coastguard Worker            sanitize: {
514*1208bc7eSAndroid Build Coastguard Worker                never: true,
515*1208bc7eSAndroid Build Coastguard Worker            },
516*1208bc7eSAndroid Build Coastguard Worker        },
517*1208bc7eSAndroid Build Coastguard Worker    },
518*1208bc7eSAndroid Build Coastguard Worker
519*1208bc7eSAndroid Build Coastguard Worker    // Needed for basic.cpp test.
520*1208bc7eSAndroid Build Coastguard Worker    stl: "libc++_static",
521*1208bc7eSAndroid Build Coastguard Worker}
522*1208bc7eSAndroid Build Coastguard Worker
523*1208bc7eSAndroid Build Coastguard Worker//-----------------------------------------------------------------------
524*1208bc7eSAndroid Build Coastguard Worker// jemalloc stress test library
525*1208bc7eSAndroid Build Coastguard Worker//-----------------------------------------------------------------------
526*1208bc7eSAndroid Build Coastguard Workercc_library_static {
527*1208bc7eSAndroid Build Coastguard Worker    name: "libjemalloc5_stresstestlib",
528*1208bc7eSAndroid Build Coastguard Worker
529*1208bc7eSAndroid Build Coastguard Worker    defaults: ["jemalloc5_defaults"],
530*1208bc7eSAndroid Build Coastguard Worker
531*1208bc7eSAndroid Build Coastguard Worker    cflags: [
532*1208bc7eSAndroid Build Coastguard Worker        "-DJEMALLOC_STRESS_TEST",
533*1208bc7eSAndroid Build Coastguard Worker        "-DJEMALLOC_STRESS_TESTLIB",
534*1208bc7eSAndroid Build Coastguard Worker    ],
535*1208bc7eSAndroid Build Coastguard Worker
536*1208bc7eSAndroid Build Coastguard Worker    local_include_dirs: [
537*1208bc7eSAndroid Build Coastguard Worker        "test/include",
538*1208bc7eSAndroid Build Coastguard Worker    ],
539*1208bc7eSAndroid Build Coastguard Worker
540*1208bc7eSAndroid Build Coastguard Worker    srcs: jemalloc5_testlib_srcs,
541*1208bc7eSAndroid Build Coastguard Worker}
542*1208bc7eSAndroid Build Coastguard Worker
543*1208bc7eSAndroid Build Coastguard Worker//-----------------------------------------------------------------------
544*1208bc7eSAndroid Build Coastguard Worker// jemalloc stress tests
545*1208bc7eSAndroid Build Coastguard Worker//-----------------------------------------------------------------------
546*1208bc7eSAndroid Build Coastguard Worker// All tests are in the same order as in the original jemalloc Makefile
547*1208bc7eSAndroid Build Coastguard Worker// to make it easier to track changes.
548*1208bc7eSAndroid Build Coastguard Workerstress_tests = [
549*1208bc7eSAndroid Build Coastguard Worker    "test/stress/microbench.c",
550*1208bc7eSAndroid Build Coastguard Worker]
551*1208bc7eSAndroid Build Coastguard Worker
552*1208bc7eSAndroid Build Coastguard Workergensrcs {
553*1208bc7eSAndroid Build Coastguard Worker    name: "jemalloc5_stresstests_gtestified_srcs",
554*1208bc7eSAndroid Build Coastguard Worker    defaults: ["jemalloc5_gtestifier_defaults"],
555*1208bc7eSAndroid Build Coastguard Worker    srcs: stress_tests,
556*1208bc7eSAndroid Build Coastguard Worker    output_extension: "c",
557*1208bc7eSAndroid Build Coastguard Worker}
558*1208bc7eSAndroid Build Coastguard Worker
559*1208bc7eSAndroid Build Coastguard Workercc_test {
560*1208bc7eSAndroid Build Coastguard Worker    name: "jemalloc5_stresstests",
561*1208bc7eSAndroid Build Coastguard Worker
562*1208bc7eSAndroid Build Coastguard Worker    defaults: ["jemalloc5_defaults"],
563*1208bc7eSAndroid Build Coastguard Worker
564*1208bc7eSAndroid Build Coastguard Worker    cflags: common_cflags + [
565*1208bc7eSAndroid Build Coastguard Worker        "-DJEMALLOC_STRESS_TEST",
566*1208bc7eSAndroid Build Coastguard Worker        "-include jemalloc_gtest.h",
567*1208bc7eSAndroid Build Coastguard Worker    ],
568*1208bc7eSAndroid Build Coastguard Worker
569*1208bc7eSAndroid Build Coastguard Worker    local_include_dirs: common_c_local_includes + [
570*1208bc7eSAndroid Build Coastguard Worker        "test/include",
571*1208bc7eSAndroid Build Coastguard Worker        "android/test",
572*1208bc7eSAndroid Build Coastguard Worker    ],
573*1208bc7eSAndroid Build Coastguard Worker
574*1208bc7eSAndroid Build Coastguard Worker    srcs: [":jemalloc5_stresstests_gtestified_srcs"],
575*1208bc7eSAndroid Build Coastguard Worker
576*1208bc7eSAndroid Build Coastguard Worker    static_libs: [
577*1208bc7eSAndroid Build Coastguard Worker        "libjemalloc5",
578*1208bc7eSAndroid Build Coastguard Worker        "libjemalloc5_stresstestlib",
579*1208bc7eSAndroid Build Coastguard Worker        "libjemalloc5_jet",
580*1208bc7eSAndroid Build Coastguard Worker        "libgtestifier",
581*1208bc7eSAndroid Build Coastguard Worker    ],
582*1208bc7eSAndroid Build Coastguard Worker
583*1208bc7eSAndroid Build Coastguard Worker    target: {
584*1208bc7eSAndroid Build Coastguard Worker        linux_glibc: {
585*1208bc7eSAndroid Build Coastguard Worker            // The sanitizer does not work for these tests on the host.
586*1208bc7eSAndroid Build Coastguard Worker            sanitize: {
587*1208bc7eSAndroid Build Coastguard Worker                never: true,
588*1208bc7eSAndroid Build Coastguard Worker            },
589*1208bc7eSAndroid Build Coastguard Worker        },
590*1208bc7eSAndroid Build Coastguard Worker    },
591*1208bc7eSAndroid Build Coastguard Worker
592*1208bc7eSAndroid Build Coastguard Worker    stl: "libc++",
593*1208bc7eSAndroid Build Coastguard Worker}
594