• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#
2# Copyright (C) 2013 The Android Open Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#      http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
16
17LOCAL_PATH := $(call my-dir)
18
19# -----------------------------------------------------------------------------
20# Benchmarks library, usable by projects outside this directory.
21# -----------------------------------------------------------------------------
22
23benchmark_cflags := \
24    -O2 \
25    -fno-builtin \
26    -Wall \
27    -Wextra \
28    -Werror \
29    -Wunused \
30
31benchmark_cppflags := \
32    -std=gnu++11 \
33
34benchmarklib_src_files := \
35    Benchmark.cpp \
36    utils.cpp \
37    main.cpp \
38
39include $(CLEAR_VARS)
40LOCAL_MODULE := libbenchmark
41LOCAL_CFLAGS := $(benchmark_cflags)
42LOCAL_CPPFLAGS := $(benchmark_cppflags)
43LOCAL_SRC_FILES := $(benchmarklib_src_files)
44LOCAL_C_INCLUDES := $(benchmark_c_includes)
45LOCAL_STATIC_LIBRARIES := libbase
46include $(BUILD_STATIC_LIBRARY)
47
48# Only supported on linux systems.
49ifeq ($(HOST_OS),linux)
50
51include $(CLEAR_VARS)
52LOCAL_MODULE := libbenchmark
53LOCAL_CFLAGS := $(benchmark_cflags)
54LOCAL_CPPFLAGS := $(benchmark_cppflags)
55LOCAL_SRC_FILES := $(benchmarklib_src_files)
56LOCAL_C_INCLUDES := $(benchmark_c_includes)
57LOCAL_MULTILIB := both
58LOCAL_STATIC_LIBRARIES := libbase
59include $(BUILD_HOST_STATIC_LIBRARY)
60
61endif
62
63# -----------------------------------------------------------------------------
64# Benchmarks.
65# -----------------------------------------------------------------------------
66benchmark_src_files := \
67    math_benchmark.cpp \
68    property_benchmark.cpp \
69    pthread_benchmark.cpp \
70    semaphore_benchmark.cpp \
71    stdio_benchmark.cpp \
72    string_benchmark.cpp \
73    time_benchmark.cpp \
74    unistd_benchmark.cpp \
75
76# Build benchmarks for the device (with bionic's .so). Run with:
77#   adb shell bionic-benchmarks32
78#   adb shell bionic-benchmarks64
79include $(CLEAR_VARS)
80LOCAL_MODULE := bionic-benchmarks
81LOCAL_MODULE_STEM_32 := bionic-benchmarks32
82LOCAL_MODULE_STEM_64 := bionic-benchmarks64
83LOCAL_MULTILIB := both
84LOCAL_CFLAGS := $(benchmark_cflags)
85LOCAL_CPPFLAGS := $(benchmark_cppflags)
86LOCAL_SRC_FILES := $(benchmark_src_files)
87LOCAL_STATIC_LIBRARIES := libbenchmark libbase
88include $(BUILD_EXECUTABLE)
89
90# We don't build a static benchmark executable because it's not usually
91# useful. If you're trying to run the current benchmarks on an older
92# release, it's (so far at least) always because you want to measure the
93# performance of the old release's libc, and a static benchmark isn't
94# going to let you do that.
95
96# Only supported on linux systems.
97ifeq ($(HOST_OS),linux)
98
99# Build benchmarks for the host (against glibc!). Run with:
100include $(CLEAR_VARS)
101LOCAL_MODULE := bionic-benchmarks-glibc
102LOCAL_MODULE_STEM_32 := bionic-benchmarks-glibc32
103LOCAL_MODULE_STEM_64 := bionic-benchmarks-glibc64
104LOCAL_MULTILIB := both
105LOCAL_CFLAGS := $(benchmark_cflags)
106LOCAL_CPPFLAGS := $(benchmark_cppflags)
107LOCAL_LDFLAGS := -lrt
108LOCAL_SRC_FILES := $(benchmark_src_files)
109LOCAL_STATIC_LIBRARIES := libbenchmark libbase
110include $(BUILD_HOST_EXECUTABLE)
111
112endif
113
114ifeq ($(HOST_OS)-$(HOST_ARCH),$(filter $(HOST_OS)-$(HOST_ARCH),linux-x86 linux-x86_64))
115include $(LOCAL_PATH)/../build/run-on-host.mk
116
117ifeq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),x86 x86_64))
118bionic-benchmarks-run-on-host32: bionic-benchmarks bionic-prepare-run-on-host
119	ANDROID_DATA=$(TARGET_OUT_DATA) \
120	ANDROID_ROOT=$(TARGET_OUT) \
121		$(TARGET_OUT_EXECUTABLES)/bionic-benchmarks32 $(BIONIC_BENCHMARKS_FLAGS)
122endif
123
124ifeq ($(TARGET_IS_64_BIT),true)
125bionic-benchmarks-run-on-host64: bionic-benchmarks bionic-prepare-run-on-host
126	ANDROID_DATA=$(TARGET_OUT_DATA) \
127	ANDROID_ROOT=$(TARGET_OUT) \
128		$(TARGET_OUT_EXECUTABLES)/bionic-benchmarks64 $(BIONIC_BENCHMARKS_FLAGS)
129endif
130
131endif
132