blob: e053be69b2501c7277c9d46f08c9fae853e99322 [file] [log] [blame]
David Zeuthen21e95262016-07-27 17:58:40 -04001#
David Zeuthenc612e2e2016-09-16 16:44:08 -04002# Copyright 2016, The Android Open Source Project
David Zeuthen21e95262016-07-27 17:58:40 -04003#
David Zeuthenc612e2e2016-09-16 16:44:08 -04004# Permission is hereby granted, free of charge, to any person
5# obtaining a copy of this software and associated documentation
6# files (the "Software"), to deal in the Software without
7# restriction, including without limitation the rights to use, copy,
8# modify, merge, publish, distribute, sublicense, and/or sell copies
9# of the Software, and to permit persons to whom the Software is
10# furnished to do so, subject to the following conditions:
David Zeuthen21e95262016-07-27 17:58:40 -040011#
David Zeuthenc612e2e2016-09-16 16:44:08 -040012# The above copyright notice and this permission notice shall be
13# included in all copies or substantial portions of the Software.
David Zeuthen21e95262016-07-27 17:58:40 -040014#
David Zeuthenc612e2e2016-09-16 16:44:08 -040015# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
19# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
21# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22# SOFTWARE.
David Zeuthen21e95262016-07-27 17:58:40 -040023#
24
25LOCAL_PATH := $(my-dir)
26
27avb_common_cflags := \
28 -D_FILE_OFFSET_BITS=64 \
29 -D_POSIX_C_SOURCE=199309L \
30 -Wa,--noexecstack \
31 -Werror \
32 -Wall \
33 -Wextra \
34 -Wformat=2 \
35 -Wno-psabi \
36 -Wno-unused-parameter \
37 -ffunction-sections \
David Zeuthen0f7de942017-03-08 13:23:55 -050038 -fstack-protector-strong \
39 -g
David Zeuthen21e95262016-07-27 17:58:40 -040040avb_common_cppflags := \
41 -Wnon-virtual-dtor \
42 -fno-strict-aliasing
43avb_common_ldflags := \
David Zeuthen0f7de942017-03-08 13:23:55 -050044 -Wl,--gc-sections \
45 -rdynamic
David Zeuthen21e95262016-07-27 17:58:40 -040046
David Zeuthen3a580152017-04-12 15:50:47 -040047# The sources that make up libavb (excluding sysdeps).
48libavb_sources := \
David Zeuthen21e95262016-07-27 17:58:40 -040049 libavb/avb_chain_partition_descriptor.c \
David Zeuthen8b6973b2016-09-20 12:39:49 -040050 libavb/avb_crc32.c \
David Zeuthen21e95262016-07-27 17:58:40 -040051 libavb/avb_crypto.c \
52 libavb/avb_descriptor.c \
53 libavb/avb_footer.c \
54 libavb/avb_hash_descriptor.c \
55 libavb/avb_hashtree_descriptor.c \
56 libavb/avb_kernel_cmdline_descriptor.c \
57 libavb/avb_property_descriptor.c \
58 libavb/avb_rsa.c \
59 libavb/avb_sha256.c \
60 libavb/avb_sha512.c \
61 libavb/avb_slot_verify.c \
David Zeuthen21e95262016-07-27 17:58:40 -040062 libavb/avb_util.c \
David Zeuthene3cadca2017-02-22 21:25:46 -050063 libavb/avb_vbmeta_image.c \
64 libavb/avb_version.c
David Zeuthen3a580152017-04-12 15:50:47 -040065
66include $(CLEAR_VARS)
67LOCAL_SRC_FILES := avbtool
68LOCAL_MODULE_CLASS := EXECUTABLES
69LOCAL_REQUIRED_MODULES := fec
70LOCAL_IS_HOST_MODULE := true
71LOCAL_MODULE := avbtool
72include $(BUILD_PREBUILT)
73
74# Build libavb for the target - this is a static library that depends
75# on only libc and doesn't drag in any other dependencies.
76include $(CLEAR_VARS)
77LOCAL_MODULE := libavb
78LOCAL_MODULE_HOST_OS := linux
79LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
80LOCAL_CLANG := true
81LOCAL_CFLAGS := $(avb_common_cflags) -DAVB_ENABLE_DEBUG -DAVB_COMPILATION
82LOCAL_LDFLAGS := $(avb_common_ldflags)
83LOCAL_SRC_FILES := \
84 $(libavb_sources) \
85 libavb/avb_sysdeps_posix.c
86include $(BUILD_STATIC_LIBRARY)
87
88# Build libavb_user for the target - in addition to libavb, it
89# includes libavb_ab, libavb_user and also depends on libbase and
90# libfs_mgr.
91include $(CLEAR_VARS)
92LOCAL_MODULE := libavb_user
93LOCAL_MODULE_HOST_OS := linux
94LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
95LOCAL_CLANG := true
96LOCAL_CFLAGS := $(avb_common_cflags) -DAVB_ENABLE_DEBUG -DAVB_COMPILATION
97LOCAL_LDFLAGS := $(avb_common_ldflags)
98LOCAL_SHARED_LIBRARIES := \
99 libbase
100LOCAL_STATIC_LIBRARIES := \
101 libfs_mgr
102LOCAL_SRC_FILES := \
103 $(libavb_sources) \
104 libavb/avb_sysdeps_posix.c \
105 libavb_ab/avb_ab_flow.c \
106 libavb_user/avb_ops_user.c \
107 libavb_user/avb_user_verity.c
bowgotsaiaf004a82016-10-24 17:10:45 +0800108include $(BUILD_STATIC_LIBRARY)
David Zeuthen21e95262016-07-27 17:58:40 -0400109
David Zeuthen86fd1782017-03-28 15:37:55 -0400110# Build avbctl for the target.
111include $(CLEAR_VARS)
112LOCAL_MODULE := avbctl
113LOCAL_MODULE_CLASS := EXECUTABLES
114LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
115LOCAL_CPP_EXTENSION := .cc
116LOCAL_CLANG := true
117LOCAL_CFLAGS := $(avb_common_cflags) -DAVB_COMPILATION -DAVB_ENABLE_DEBUG
118LOCAL_CPPFLAGS := $(avb_common_cppflags)
119LOCAL_LDFLAGS := $(avb_common_ldflags)
120LOCAL_STATIC_LIBRARIES := \
David Zeuthen3a580152017-04-12 15:50:47 -0400121 libavb_user \
David Zeuthen86fd1782017-03-28 15:37:55 -0400122 libfs_mgr
123LOCAL_SHARED_LIBRARIES := \
David Zeuthen3a580152017-04-12 15:50:47 -0400124 libbase
David Zeuthen86fd1782017-03-28 15:37:55 -0400125LOCAL_SRC_FILES := \
David Zeuthen86fd1782017-03-28 15:37:55 -0400126 tools/avbctl/avbctl.cc
127include $(BUILD_EXECUTABLE)
128
David Zeuthenbaf59e22016-11-14 15:39:43 -0500129# Build libavb for the host (for unit tests).
David Zeuthen21e95262016-07-27 17:58:40 -0400130include $(CLEAR_VARS)
131LOCAL_MODULE := libavb_host
132LOCAL_MODULE_HOST_OS := linux
David Zeuthenbaf59e22016-11-14 15:39:43 -0500133LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
David Zeuthen21e95262016-07-27 17:58:40 -0400134LOCAL_MODULE_CLASS := STATIC_LIBRARIES
135LOCAL_CLANG := true
136LOCAL_CFLAGS := $(avb_common_cflags) -fno-stack-protector -DAVB_ENABLE_DEBUG -DAVB_COMPILATION
137LOCAL_LDFLAGS := $(avb_common_ldflags)
David Zeuthen21e95262016-07-27 17:58:40 -0400138LOCAL_SRC_FILES := \
David Zeuthen3a580152017-04-12 15:50:47 -0400139 $(libavb_sources) \
David Zeuthene3cadca2017-02-22 21:25:46 -0500140 libavb/avb_version.c
David Zeuthen21e95262016-07-27 17:58:40 -0400141include $(BUILD_HOST_STATIC_LIBRARY)
142
David Zeuthenbaf59e22016-11-14 15:39:43 -0500143# Build libavb_ab for the host (for unit tests).
144include $(CLEAR_VARS)
145LOCAL_MODULE := libavb_ab_host
146LOCAL_REQUIRED_MODULES := libavb_host
147LOCAL_MODULE_HOST_OS := linux
148LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
149LOCAL_MODULE_CLASS := STATIC_LIBRARIES
150LOCAL_CLANG := true
151LOCAL_CFLAGS := $(avb_common_cflags) -fno-stack-protector -DAVB_ENABLE_DEBUG -DAVB_COMPILATION
152LOCAL_LDFLAGS := $(avb_common_ldflags)
153LOCAL_SRC_FILES := \
154 libavb_ab/avb_ab_flow.c
155include $(BUILD_HOST_STATIC_LIBRARY)
156
Darren Krahn147b08d2016-12-20 16:38:29 -0800157# Build libavb_atx for the host (for unit tests).
158include $(CLEAR_VARS)
159LOCAL_MODULE := libavb_atx_host
160LOCAL_REQUIRED_MODULES := libavb_host
161LOCAL_MODULE_HOST_OS := linux
162LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
163LOCAL_MODULE_CLASS := STATIC_LIBRARIES
164LOCAL_CLANG := true
165LOCAL_CFLAGS := $(avb_common_cflags) -fno-stack-protector -DAVB_ENABLE_DEBUG -DAVB_COMPILATION
166LOCAL_LDFLAGS := $(avb_common_ldflags)
167LOCAL_SRC_FILES := \
168 libavb_atx/avb_atx_validate.c
169include $(BUILD_HOST_STATIC_LIBRARY)
170
David Zeuthen21e95262016-07-27 17:58:40 -0400171include $(CLEAR_VARS)
172LOCAL_MODULE := libavb_host_sysdeps
David Zeuthenbaf59e22016-11-14 15:39:43 -0500173LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
David Zeuthen21e95262016-07-27 17:58:40 -0400174LOCAL_MODULE_HOST_OS := linux
175LOCAL_MODULE_CLASS := STATIC_LIBRARIES
176LOCAL_CLANG := true
177LOCAL_CFLAGS := $(avb_common_cflags) -DAVB_ENABLE_DEBUG -DAVB_COMPILATION
178LOCAL_LDFLAGS := $(avb_common_ldflags)
David Zeuthen21e95262016-07-27 17:58:40 -0400179LOCAL_SRC_FILES := \
180 libavb/avb_sysdeps_posix.c
181include $(BUILD_HOST_STATIC_LIBRARY)
182
183include $(CLEAR_VARS)
184LOCAL_MODULE := libavb_host_unittest
Darren Krahn147b08d2016-12-20 16:38:29 -0800185LOCAL_REQUIRED_MODULES := simg2img img2simg avbtool
David Zeuthen21e95262016-07-27 17:58:40 -0400186LOCAL_MODULE_HOST_OS := linux
187LOCAL_CPP_EXTENSION := .cc
188LOCAL_CLANG := true
189LOCAL_CFLAGS := $(avb_common_cflags) -DAVB_ENABLE_DEBUG -DAVB_COMPILATION
190LOCAL_CPPFLAGS := $(avb_common_cppflags)
191LOCAL_LDFLAGS := $(avb_common_ldflags)
David Zeuthen21e95262016-07-27 17:58:40 -0400192LOCAL_STATIC_LIBRARIES := \
193 libavb_host \
David Zeuthenbaf59e22016-11-14 15:39:43 -0500194 libavb_ab_host \
Darren Krahn147b08d2016-12-20 16:38:29 -0800195 libavb_atx_host \
David Zeuthen21e95262016-07-27 17:58:40 -0400196 libgmock_host \
197 libgtest_host
198LOCAL_SHARED_LIBRARIES := \
Darren Krahn147b08d2016-12-20 16:38:29 -0800199 libchrome \
Jocelyn Bohr1bb0e3b2017-01-20 13:55:51 -0800200 libcrypto
David Zeuthen21e95262016-07-27 17:58:40 -0400201LOCAL_SRC_FILES := \
David Zeuthen8b6973b2016-09-20 12:39:49 -0400202 test/avb_ab_flow_unittest.cc \
Darren Krahn147b08d2016-12-20 16:38:29 -0800203 test/avb_atx_validate_unittest.cc \
David Zeuthen21e95262016-07-27 17:58:40 -0400204 test/avb_slot_verify_unittest.cc \
David Zeuthen8681a332016-11-23 13:44:06 -0500205 test/avb_unittest_util.cc \
David Zeuthen21e95262016-07-27 17:58:40 -0400206 test/avb_util_unittest.cc \
207 test/avb_vbmeta_image_unittest.cc \
David Zeuthen8b6973b2016-09-20 12:39:49 -0400208 test/avbtool_unittest.cc \
David Zeuthen0f7de942017-03-08 13:23:55 -0500209 test/fake_avb_ops.cc \
210 test/avb_sysdeps_posix_testing.cc
David Zeuthen21e95262016-07-27 17:58:40 -0400211LOCAL_LDLIBS_linux := -lrt
212include $(BUILD_HOST_NATIVE_TEST)
213
214include $(CLEAR_VARS)
Darren Krahn147b08d2016-12-20 16:38:29 -0800215LOCAL_MODULE := libavb_host_user_code_test
216LOCAL_MODULE_HOST_OS := linux
217LOCAL_MODULE_CLASS := STATIC_LIBRARIES
218LOCAL_CPP_EXTENSION := .cc
219LOCAL_CLANG := true
220LOCAL_CFLAGS := $(avb_common_cflags)
221LOCAL_CPPFLAGS := $(avb_common_cppflags)
222LOCAL_LDFLAGS := $(avb_common_ldflags)
223LOCAL_SRC_FILES := test/user_code_test.cc
224include $(BUILD_HOST_STATIC_LIBRARY)
225
226include $(CLEAR_VARS)
David Zeuthen8b6973b2016-09-20 12:39:49 -0400227LOCAL_MODULE := bootctrl.avb
228LOCAL_MODULE_RELATIVE_PATH := hw
David Zeuthen8b6973b2016-09-20 12:39:49 -0400229LOCAL_SRC_FILES := \
David Zeuthen86fd1782017-03-28 15:37:55 -0400230 boot_control/boot_control_avb.c
David Zeuthen8b6973b2016-09-20 12:39:49 -0400231LOCAL_CLANG := true
232LOCAL_CFLAGS := $(avb_common_cflags) -DAVB_COMPILATION
233LOCAL_LDFLAGS := $(avb_common_ldflags)
David Zeuthen3a580152017-04-12 15:50:47 -0400234LOCAL_SHARED_LIBRARIES := \
235 libbase \
236 libcutils
237LOCAL_STATIC_LIBRARIES := \
238 libavb_user \
239 libfs_mgr
David Zeuthenb0013ae2016-10-20 17:00:49 -0400240LOCAL_POST_INSTALL_CMD := \
241 $(hide) mkdir -p $(TARGET_OUT_SHARED_LIBRARIES)/hw && \
242 ln -sf bootctrl.avb.so $(TARGET_OUT_SHARED_LIBRARIES)/hw/bootctrl.default.so
David Zeuthen8b6973b2016-09-20 12:39:49 -0400243include $(BUILD_SHARED_LIBRARY)
244
245include $(CLEAR_VARS)
David Zeuthen21e95262016-07-27 17:58:40 -0400246LOCAL_SRC_FILES := libavb_host_symbols_test
247LOCAL_MODULE_TAGS := debug
David Zeuthenbaf59e22016-11-14 15:39:43 -0500248LOCAL_ADDITIONAL_DEPENDENCIES := libavb_ab_host
David Zeuthen21e95262016-07-27 17:58:40 -0400249include $(BUILD_HOST_PREBUILT)