• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// 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}
189