blob: 36de475c90a45dbbc411caf3d7f2db2e368d18d7 [file] [log] [blame]
Dan Willemsenca0a7582018-10-24 14:06:47 -07001// Copyright 2015 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Minimal makefile capable of compiling futility to sign images
6
7cc_defaults {
8 name: "vboot_defaults",
9
10 cflags: [
11 "-Wall",
12 "-Werror",
13 "-Wno-address-of-packed-member",
14 "-Wno-ignored-qualifiers",
15 "-Wno-macro-redefined",
16 "-Wno-pointer-arith",
17 "-Wno-sign-compare",
18 "-Wno-typedef-redefinition",
19 "-Wno-unused-parameter",
20 ],
21}
22
23cc_library_host_static {
24 name: "libvboot_util",
25 defaults: ["vboot_defaults"],
26
27 cflags: [
28 // These are required to access large disks and files on 32-bit systems.
29 "-D_GNU_SOURCE",
30 "-D_FILE_OFFSET_BITS=64",
31 ],
32
33 export_include_dirs: [
34 "firmware/include",
35 "firmware/lib/include",
36 "firmware/lib/cgptlib/include",
37 "firmware/lib/cryptolib/include",
38 "firmware/lib/tpm_lite/include",
39 "firmware/2lib/include",
40 "host/include",
41 "host/lib/include",
42 ],
43
44 srcs: [
45 // Firmware library sources needed by VbInit() call
46 "firmware/lib/crc8.c",
47 "firmware/lib/utility.c",
48 "firmware/lib/vboot_api_init.c",
49 "firmware/lib/vboot_common_init.c",
50 "firmware/lib/vboot_nvstorage.c",
51 "firmware/lib/vboot_nvstorage_rollback.c",
52 "firmware/lib/region-init.c",
53
54 // Additional firmware library sources needed by VbSelectFirmware() call
55 "firmware/lib/cryptolib/padding.c",
56 "firmware/lib/cryptolib/rsa.c",
57 "firmware/lib/cryptolib/rsa_utility.c",
58 "firmware/lib/cryptolib/sha1.c",
59 "firmware/lib/cryptolib/sha256.c",
60 "firmware/lib/cryptolib/sha512.c",
61 "firmware/lib/cryptolib/sha_utility.c",
62 "firmware/lib/stateful_util.c",
63 "firmware/lib/vboot_api_firmware.c",
64 "firmware/lib/vboot_common.c",
65 "firmware/lib/vboot_firmware.c",
66 "firmware/lib/region-fw.c",
67
68 // Additional firmware library sources needed by VbSelectAndLoadKernel() call
69 "firmware/lib/cgptlib/cgptlib.c",
70 "firmware/lib/cgptlib/cgptlib_internal.c",
71 "firmware/lib/cgptlib/crc32.c",
72 "firmware/lib/gpt_misc.c",
73 "firmware/lib/utility_string.c",
74 "firmware/lib/vboot_api_kernel.c",
75 "firmware/lib/vboot_audio.c",
76 "firmware/lib/vboot_display.c",
77 "firmware/lib/vboot_kernel.c",
78 "firmware/lib/region-kernel.c",
79
80 "firmware/stub/tpm_lite_stub.c",
81 "firmware/stub/utility_stub.c",
82 "firmware/stub/vboot_api_stub_init.c",
83 "firmware/stub/vboot_api_stub_region.c",
84
85 "firmware/stub/vboot_api_stub_sf.c",
86
87 "firmware/stub/vboot_api_stub.c",
88 "firmware/stub/vboot_api_stub_disk.c",
89 "firmware/stub/vboot_api_stub_stream.c",
90
91 "cgpt/cgpt_create.c",
92 "cgpt/cgpt_add.c",
93 "cgpt/cgpt_boot.c",
94 "cgpt/cgpt_show.c",
95 "cgpt/cgpt_repair.c",
96 "cgpt/cgpt_prioritize.c",
97 "cgpt/cgpt_common.c",
98 "futility/dump_kernel_config_lib.c",
99 "host/lib/crossystem.c",
100 "host/lib/file_keys.c",
101 "host/lib/fmap.c",
102 "host/lib/host_common.c",
103 "host/lib/host_key.c",
104 "host/lib/host_keyblock.c",
105 "host/lib/host_misc.c",
106 "host/lib/util_misc.c",
107 "host/lib/host_signature.c",
108 "host/lib/signature_digest.c",
109
110 // host/arch/${HOST_ARCH}/lib/crossystem_arch.c
111 ],
112
113 static_libs: ["libcrypto"],
114
115 target: {
116 darwin: {
117 cflags: [
118 "-DHAVE_MACOS",
119 "-DO_LARGEFILE=0",
120 ],
121 },
122 },
123}
124
125filegroup {
126 name: "futility_srcs",
127 srcs: [
128 "futility/futility.c",
129 "futility/cmd_dump_fmap.c",
130 "futility/cmd_gbb_utility.c",
131 "futility/misc.c",
132
133 "futility/cmd_dump_kernel_config.c",
134 "futility/cmd_load_fmap.c",
135 "futility/cmd_pcr.c",
136 "futility/cmd_show.c",
137 "futility/cmd_sign.c",
138 "futility/cmd_vbutil_firmware.c",
139 "futility/cmd_vbutil_kernel.c",
140 "futility/cmd_vbutil_key.c",
141 "futility/cmd_vbutil_keyblock.c",
142 "futility/file_type.c",
143 "futility/traversal.c",
144 "futility/vb1_helper.c",
145 ],
146}
147
148genrule {
149 name: "futility_cmds",
150 cmd: "grep -hoRE '^DECLARE_FUTIL_COMMAND\\([^,]+' $(locations :futility_srcs) | sed 's/DECLARE_FUTIL_COMMAND(\\(.*\\)/_CMD(\\1)/' | sort >>$(genDir)/commands" +
151 " && $(location scripts/getversion.sh) >> $(out)" +
152 " && echo '#define _CMD(NAME) extern const struct futil_cmd_t __cmd_##NAME;' >> $(out)" +
153 " && cat $(genDir)/commands >> $(out)" +
154 " && echo '#undef _CMD' >> $(out)" +
155 " && echo '#define _CMD(NAME) &__cmd_##NAME,' >> $(out)" +
156 " && echo 'const struct futil_cmd_t *const futil_cmds[] = {' >> $(out)" +
157 " && cat $(genDir)/commands >> $(out)" +
158 " && echo '0}; /* null-terminated */' >> $(out)" +
159 " && echo '#undef _CMD' >> $(out)",
160 srcs: [
161 ":futility_srcs",
162 "scripts/getversion.sh",
163 ],
164 out: ["futility_cmds.c"],
165}
166
167cc_binary_host {
168 name: "futility-host",
169 defaults: ["vboot_defaults"],
170
171 srcs: [":futility_srcs"],
172 generated_sources: ["futility_cmds"],
173
174 cflags: [
175 // These are required to access large disks and files on 32-bit systems.
176 "-D_GNU_SOURCE",
177 "-D_FILE_OFFSET_BITS=64",
178 ],
179
180 static_libs: ["libvboot_util"],
181 shared_libs: ["libcrypto"],
182
183 target: {
184 darwin: {
185 cflags: ["-DHAVE_MACOS"],
186 },
187 },
188}