1# Copyright (C) 2016 The Android Open Source Project
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#      http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15LOCAL_PATH:= $(call my-dir)
16
17# proto files used in incidentd to generate cppstream proto headers.
18PROTO_FILES:= \
19        frameworks/base/core/proto/android/os/backtrace.proto \
20        frameworks/base/core/proto/android/os/data.proto \
21        frameworks/base/core/proto/android/util/log.proto
22
23# ========= #
24# incidentd #
25# ========= #
26
27include $(CLEAR_VARS)
28
29LOCAL_MODULE := incidentd
30
31LOCAL_SRC_FILES := $(call all-cpp-files-under, src) \
32
33LOCAL_CFLAGS += \
34        -Wall -Werror -Wno-missing-field-initializers -Wno-unused-variable -Wunused-parameter
35
36ifeq (debug,)
37    LOCAL_CFLAGS += \
38            -g -O0
39else
40    # optimize for size (protobuf glop can get big)
41    LOCAL_CFLAGS += \
42            -Os
43endif
44LOCAL_C_INCLUDES += $(LOCAL_PATH)/src
45
46LOCAL_SHARED_LIBRARIES := \
47        libbase \
48        libbinder \
49        libdebuggerd_client \
50        libdumputils \
51        libincident \
52        liblog \
53        libprotoutil \
54        libservices \
55        libutils
56
57LOCAL_MODULE_CLASS := EXECUTABLES
58
59gen_src_dir := $(local-generated-sources-dir)
60
61# generate section_list.cpp
62GEN_LIST := $(gen_src_dir)/src/section_list.cpp
63$(GEN_LIST): $(HOST_OUT_EXECUTABLES)/incident-section-gen
64$(GEN_LIST): PRIVATE_CUSTOM_TOOL = \
65    $(HOST_OUT_EXECUTABLES)/incident-section-gen incidentd > $@
66$(GEN_LIST): $(HOST_OUT_EXECUTABLES)/incident-section-gen
67	$(transform-generated-source)
68LOCAL_GENERATED_SOURCES += $(GEN_LIST)
69GEN_LIST:=
70
71# generate cppstream proto, add proto files to PROTO_FILES
72GEN_PROTO := $(gen_src_dir)/proto.timestamp
73$(GEN_PROTO): $(HOST_OUT_EXECUTABLES)/aprotoc $(HOST_OUT_EXECUTABLES)/protoc-gen-cppstream $(PROTO_FILES)
74$(GEN_PROTO): PRIVATE_GEN_SRC_DIR := $(gen_src_dir)
75$(GEN_PROTO): PRIVATE_CUSTOM_TOOL = \
76    $(HOST_OUT_EXECUTABLES)/aprotoc --plugin=protoc-gen-cppstream=$(HOST_OUT_EXECUTABLES)/protoc-gen-cppstream \
77        --cppstream_out=$(PRIVATE_GEN_SRC_DIR) -Iexternal/protobuf/src -I . \
78        $(PROTO_FILES) \
79    && touch $@
80$(GEN_PROTO): $(HOST_OUT_EXECUTABLES)/aprotoc
81	$(transform-generated-source)
82LOCAL_GENERATED_SOURCES += $(GEN_PROTO)
83GEN_PROTO:=
84
85gen_src_dir:=
86
87LOCAL_INIT_RC := incidentd.rc
88
89include $(BUILD_EXECUTABLE)
90
91# ============== #
92# incidentd_test #
93# ============== #
94
95include $(CLEAR_VARS)
96
97LOCAL_MODULE := incidentd_test
98LOCAL_COMPATIBILITY_SUITE := device-tests
99LOCAL_MODULE_TAGS := tests
100
101LOCAL_CFLAGS := -Werror -Wall -Wno-unused-variable -Wunused-parameter
102
103LOCAL_C_INCLUDES += $(LOCAL_PATH)/src
104
105LOCAL_SRC_FILES := $(call all-cpp-files-under, tests) \
106    src/PrivacyBuffer.cpp \
107    src/FdBuffer.cpp \
108    src/Privacy.cpp \
109    src/Reporter.cpp \
110    src/Section.cpp \
111    src/Throttler.cpp \
112    src/incidentd_util.cpp \
113    src/report_directory.cpp \
114
115LOCAL_STATIC_LIBRARIES := \
116    libgmock \
117
118LOCAL_SHARED_LIBRARIES := \
119    libbase \
120    libbinder \
121    libdebuggerd_client \
122    libdumputils \
123    libincident \
124    liblog \
125    libprotobuf-cpp-lite \
126    libprotoutil \
127    libservices \
128    libutils \
129
130LOCAL_TEST_DATA := $(call find-test-data-in-subdirs, $(LOCAL_PATH), *, testdata)
131
132LOCAL_MODULE_CLASS := NATIVE_TESTS
133gen_src_dir := $(local-generated-sources-dir)
134# generate cppstream proto for testing
135GEN_PROTO := $(gen_src_dir)/test.proto.timestamp
136$(GEN_PROTO): $(HOST_OUT_EXECUTABLES)/aprotoc $(HOST_OUT_EXECUTABLES)/protoc-gen-cppstream $(PROTO_FILES)
137$(GEN_PROTO): PRIVATE_GEN_SRC_DIR := $(gen_src_dir)
138$(GEN_PROTO): PRIVATE_CUSTOM_TOOL = \
139    $(HOST_OUT_EXECUTABLES)/aprotoc --plugin=protoc-gen-cppstream=$(HOST_OUT_EXECUTABLES)/protoc-gen-cppstream \
140        --cppstream_out=$(PRIVATE_GEN_SRC_DIR) -Iexternal/protobuf/src -I . \
141        $(PROTO_FILES) \
142    && touch $@
143$(GEN_PROTO): $(HOST_OUT_EXECUTABLES)/aprotoc
144	$(transform-generated-source)
145LOCAL_GENERATED_SOURCES += $(GEN_PROTO)
146GEN_PROTO:=
147
148gen_src_dir:=
149
150include $(BUILD_NATIVE_TEST)
151