1# SPDX-License-Identifier: GPL-2.0+
2#
3# (C) Copyright 2016 Alexander Graf
4#
5
6# This file only gets included with CONFIG_EFI_LOADER set, so all
7# object inclusion implicitly depends on it
8
9asflags-y += -I.
10
11CFLAGS_efi_boottime.o += \
12  -DFW_VERSION="0x$(VERSION)" \
13  -DFW_PATCHLEVEL="0x$(PATCHLEVEL)"
14
15# These are the apps that are built
16apps-$(CONFIG_RISCV) += boothart
17apps-$(CONFIG_BOOTEFI_HELLO_COMPILE) += helloworld
18apps-$(CONFIG_GENERATE_SMBIOS_TABLE) += smbiosdump
19apps-$(CONFIG_EFI_LOAD_FILE2_INITRD) += initrddump
20ifeq ($(CONFIG_GENERATE_ACPI_TABLE),)
21apps-y += dtbdump
22endif
23apps-$(CONFIG_BOOTEFI_TESTAPP_COMPILE) += testapp
24apps-y += dbginfodump
25
26obj-$(CONFIG_CMD_BOOTEFI_HELLO) += helloworld_efi.o
27obj-$(CONFIG_EFI_BOOTMGR) += efi_bootmgr.o
28obj-$(CONFIG_EFI_BINARY_EXEC) += efi_bootbin.o
29obj-y += efi_boottime.o
30obj-y += efi_helper.o
31obj-$(CONFIG_EFI_HAVE_CAPSULE_SUPPORT) += efi_capsule.o
32obj-$(CONFIG_EFI_CAPSULE_FIRMWARE) += efi_firmware.o
33obj-$(CONFIG_EFI_CAPSULE_AUTHENTICATE) += efi_capsule_key.o
34obj-y += efi_console.o
35obj-y += efi_device_path.o
36obj-$(CONFIG_EFI_DEVICE_PATH_TO_TEXT) += efi_device_path_to_text.o
37obj-$(CONFIG_EFI_DEVICE_PATH_UTIL) += efi_device_path_utilities.o
38obj-y += efi_dt_fixup.o
39obj-y += efi_fdt.o
40obj-y += efi_file.o
41obj-$(CONFIG_EFI_LOADER_HII) += efi_hii.o efi_hii_config.o
42obj-y += efi_image_loader.o
43obj-y += efi_load_options.o
44obj-y += efi_memory.o
45obj-y += efi_root_node.o
46obj-y += efi_runtime.o
47obj-y += efi_setup.o
48obj-y += efi_string.o
49obj-$(CONFIG_EFI_UNICODE_COLLATION_PROTOCOL2) += efi_unicode_collation.o
50obj-y += efi_var_common.o
51obj-y += efi_var_mem.o
52ifeq ($(CONFIG_EFI_MM_COMM_TEE),y)
53obj-y += efi_variable_tee.o
54else
55obj-y += efi_variable.o
56obj-y += efi_var_file.o
57obj-$(CONFIG_EFI_VARIABLES_PRESEED) += efi_var_seed.o
58endif
59obj-y += efi_watchdog.o
60obj-$(CONFIG_EFI_ESRT) += efi_esrt.o
61obj-$(CONFIG_VIDEO) += efi_gop.o
62obj-$(CONFIG_BLK) += efi_disk.o
63obj-$(CONFIG_NETDEVICES) += efi_net.o
64obj-$(CONFIG_EFI_IP4_CONFIG2_PROTOCOL) += efi_ipconfig.o
65obj-$(CONFIG_EFI_HTTP_PROTOCOL) += efi_http.o
66obj-$(CONFIG_ACPI) += efi_acpi.o
67obj-$(CONFIG_SMBIOS) += efi_smbios.o
68obj-$(CONFIG_EFI_RNG_PROTOCOL) += efi_rng.o
69obj-$(CONFIG_EFI_TCG2_PROTOCOL) += efi_tcg2.o
70obj-$(CONFIG_EFI_RISCV_BOOT_PROTOCOL) += efi_riscv.o
71obj-$(CONFIG_EFI_LOAD_FILE2_INITRD) += efi_load_initrd.o
72obj-$(CONFIG_EFI_SIGNATURE_SUPPORT) += efi_signature.o
73obj-$(CONFIG_EFI_ECPT) += efi_conformance.o
74obj-$(CONFIG_EFI_DEBUG_SUPPORT) += efi_debug_support.o
75
76EFI_VAR_SEED_FILE := $(subst $\",,$(CONFIG_EFI_VAR_SEED_FILE))
77$(obj)/efi_var_seed.o: $(srctree)/$(EFI_VAR_SEED_FILE)
78
79ifeq ($(CONFIG_EFI_CAPSULE_AUTHENTICATE),y)
80capsule_crt_path=($(subst $(quote),,$(CONFIG_EFI_CAPSULE_CRT_FILE)))
81capsule_crt_full=$(srctree)/$(subst $(quote),,$(CONFIG_EFI_CAPSULE_CRT_FILE))
82quiet_cmd_capsule_esl_gen = CAPSULE_ESL_GEN $@
83cmd_capsule_esl_gen = cert-to-efi-sig-list $(capsule_crt_full) $@
84$(objtree)/capsule_esl_file: FORCE
85	@if [ ! -e "$(capsule_crt_full)" ]; then \
86		echo "ERROR: path $(capsule_crt_full) is invalid." >&2; \
87		echo "EFI CONFIG_EFI_CAPSULE_CRT_FILE must be specified when CONFIG_EFI_CAPSULE_AUTHENTICATE is enabled." >&2; \
88		exit 1; \
89	fi
90	$(call cmd,capsule_esl_gen)
91
92$(obj)/efi_capsule.o: $(objtree)/capsule_esl_file FORCE
93asflags-y += -DCAPSULE_ESL_PATH=\"$(objtree)/capsule_esl_file\"
94endif
95
96# Set the C flags to add and remove for each app
97$(foreach f,$(apps-y),\
98	$(eval CFLAGS_$(f).o := $(CFLAGS_EFI) -Os -ffreestanding)\
99	$(eval CFLAGS_REMOVE_$(f).o := $(CFLAGS_NON_EFI)))
100
101always += $(foreach f,$(apps-y),$(f).efi)
102targets += $(foreach f,$(apps-y),$(f).o)
103