515
521
DEBUG_TARGETS += dbg%.o c s
523
# List of embedded images included in the last build of embedded.o.
524
# This is needed in order to correctly rebuild embedded.o whenever the
525
# list of objects changes.
527
EMBED := $(EMBEDDED_IMAGE) # Maintain backwards compatibility
528
EMBEDDED_LIST := $(BIN)/.embedded.list
529
ifeq ($(wildcard $(EMBEDDED_LIST)),)
530
EMBED_OLD := <invalid>
532
EMBED_OLD := $(shell cat $(EMBEDDED_LIST))
534
ifneq ($(EMBED_OLD),$(EMBED))
535
$(shell $(ECHO) "$(EMBED)" > $(EMBEDDED_LIST))
540
VERYCLEANUP += $(EMBEDDED_LIST)
542
EMBEDDED_FILES := $(subst $(COMMA), ,$(EMBED))
543
EMBED_ALL := $(foreach i,$(call seq,1,$(words $(EMBEDDED_FILES))),\
544
EMBED ( $(i), \"$(word $(i), $(EMBEDDED_FILES))\",\
545
\"$(notdir $(word $(i),$(EMBEDDED_FILES)))\" ))
547
embedded_DEPS += $(EMBEDDED_FILES) $(EMBEDDED_LIST)
549
CFLAGS_embedded = -DEMBED_ALL="$(EMBED_ALL)"
551
# List of trusted root certificates
553
TRUSTED_LIST := $(BIN)/.trusted.list
554
ifeq ($(wildcard $(TRUSTED_LIST)),)
555
TRUST_OLD := <invalid>
557
TRUST_OLD := $(shell cat $(TRUSTED_LIST))
559
ifneq ($(TRUST_OLD),$(TRUST))
560
$(shell $(ECHO) "$(TRUST)" > $(TRUSTED_LIST))
565
VERYCLEANUP += $(TRUSTED_LIST)
567
# Trusted root certificate fingerprints
569
TRUSTED_CERTS := $(subst $(COMMA), ,$(TRUST))
570
TRUSTED_FPS := $(foreach CERT,$(TRUSTED_CERTS),\
571
0x$(subst :,$(COMMA) 0x,$(lastword $(subst =, ,\
572
$(shell $(OPENSSL) x509 -in $(CERT) -noout -sha256 \
573
-fingerprint))))$(COMMA))
575
rootcert_DEPS += $(TRUSTED_FILES) $(TRUSTED_LIST)
577
CFLAGS_rootcert = $(if $(TRUSTED_FPS),-DTRUSTED="$(TRUSTED_FPS)")
579
# (Single-element) list of client certificates
581
CERT_LIST := $(BIN)/.certificate.list
582
ifeq ($(wildcard $(CERT_LIST)),)
583
CERT_OLD := <invalid>
585
CERT_OLD := $(shell cat $(CERT_LIST))
587
ifneq ($(CERT_OLD),$(CERT))
588
$(shell $(ECHO) "$(CERT)" > $(CERT_LIST))
593
VERYCLEANUP += $(CERT_LIST)
595
# Embedded client certificate
597
CERT_INC := $(BIN)/.certificate.der
600
$(CERT_INC) : $(CERT) $(CERT_LIST)
601
$(Q)$(OPENSSL) x509 -in $< -outform DER -out $@
603
clientcert_DEPS += $(CERT_INC)
606
CLEANUP += $(CERT_INC)
608
clientcert_DEPS += $(CERT_LIST)
610
CFLAGS_clientcert += $(if $(CERT),-DCERTIFICATE="\"$(CERT_INC)\"")
612
# (Single-element) list of client private keys
615
PRIVKEY := $(KEY) # Maintain backwards compatibility
617
PRIVKEY_LIST := $(BIN)/.private_key.list
618
ifeq ($(wildcard $(PRIVKEY_LIST)),)
619
PRIVKEY_OLD := <invalid>
621
PRIVKEY_OLD := $(shell cat $(PRIVKEY_LIST))
623
ifneq ($(PRIVKEY_OLD),$(PRIVKEY))
624
$(shell $(ECHO) "$(PRIVKEY)" > $(PRIVKEY_LIST))
629
VERYCLEANUP += $(PRIVKEY_LIST)
631
# Embedded client private key
633
PRIVKEY_INC := $(BIN)/.private_key.der
636
$(PRIVKEY_INC) : $(PRIVKEY) $(PRIVKEY_LIST)
637
$(Q)$(OPENSSL) rsa -in $< -outform DER -out $@
639
clientcert_DEPS += $(PRIVKEY_INC)
642
CLEANUP += $(PRIVKEY_INC)
644
clientcert_DEPS += $(PRIVKEY_LIST)
646
CFLAGS_clientcert += $(if $(PRIVKEY),-DPRIVATE_KEY="\"$(PRIVKEY_INC)\"")
648
# These files use .incbin inline assembly to include a binary file.
649
# Unfortunately ccache does not detect this dependency and caches
650
# builds even when the binary file has changed.
652
$(BIN)/embedded.o : override CC := env CCACHE_DISABLE=1 $(CC)
654
$(BIN)/clientcert.o : override CC := env CCACHE_DISABLE=1 $(CC)
658
CFLAGS_version += -DVERSION_MAJOR=$(VERSION_MAJOR) \
659
-DVERSION_MINOR=$(VERSION_MINOR) \
660
-DVERSION_PATCH=$(VERSION_PATCH) \
661
-DVERSION="\"$(VERSION)\""
662
# Make sure the version number gets updated on every git checkout
663
ifneq ($(GITVERSION),)
664
$(BIN)/version.o : ../.git/index
517
667
# We automatically generate rules for any file mentioned in AUTO_SRCS
518
668
# using the following set of templates. It would be cleaner to use
519
669
# $(eval ...), but this function exists only in GNU make >= 3.80.
606
# List of embedded images included in the last build of embedded.o.
607
# This is needed in order to correctly rebuild embedded.o whenever the
608
# list of objects changes.
610
EMBED := $(EMBEDDED_IMAGE) # Maintain backwards compatibility
611
EMBEDDED_LIST := $(BIN)/.embedded.list
612
ifeq ($(wildcard $(EMBEDDED_LIST)),)
613
EMBED_OLD := <invalid>
615
EMBED_OLD := $(shell cat $(EMBEDDED_LIST))
617
ifneq ($(EMBED_OLD),$(EMBED))
618
$(shell $(ECHO) "$(EMBED)" > $(EMBEDDED_LIST))
623
VERYCLEANUP += $(EMBEDDED_LIST)
625
EMBEDDED_FILES := $(subst $(COMMA), ,$(EMBED))
626
EMBED_ALL := $(foreach i,$(call seq,1,$(words $(EMBEDDED_FILES))),\
627
EMBED ( $(i), \"$(word $(i), $(EMBEDDED_FILES))\",\
628
\"$(notdir $(word $(i),$(EMBEDDED_FILES)))\" ))
630
$(BIN)/embedded.o : $(EMBEDDED_FILES) $(EMBEDDED_LIST)
632
# This file uses .incbin inline assembly to include a binary file.
633
# Unfortunately ccache does not detect this dependency and caches builds even
634
# when the binary file has changed.
636
$(BIN)/embedded.o : override CC := env CCACHE_DISABLE=1 $(CC)
638
CFLAGS_embedded = -DEMBED_ALL="$(EMBED_ALL)"
640
756
# Generate error usage information
642
758
$(BIN)/%.einfo : $(BIN)/%.o
981
1097
# The EFI image converter
983
1099
ELF2EFI_CFLAGS := -I$(BINUTILS_DIR)/include -I$(BFD_DIR)/include \
984
-I$(ZLIB_DIR)/include -idirafter include \
985
-L$(BINUTILS_DIR)/lib -L$(BFD_DIR)/lib -L$(ZLIB_DIR)/lib \
1100
-I$(ZLIB_DIR)/include -idirafter include
1101
ELF2EFI_LDFLAGS := -L$(BINUTILS_DIR)/lib -L$(BFD_DIR)/lib -L$(ZLIB_DIR)/lib \
986
1102
-lbfd -ldl -liberty -lz -Wl,--no-warn-search-mismatch
988
1104
$(ELF2EFI32) : util/elf2efi.c $(MAKEDEPS)
989
1105
$(QM)$(ECHO) " [HOSTCC] $@"
990
$(Q)$(HOST_CC) $< $(ELF2EFI_CFLAGS) -DEFI_TARGET_IA32 -O2 -o $@
1106
$(Q)$(HOST_CC) $(HOST_CFLAGS) $(ELF2EFI_CFLAGS) -DEFI_TARGET_IA32 $< \
1107
$(ELF2EFI_LDFLAGS) -o $@
991
1108
CLEANUP += $(ELF2EFI32)
993
1110
$(ELF2EFI64) : util/elf2efi.c $(MAKEDEPS)
994
1111
$(QM)$(ECHO) " [HOSTCC] $@"
995
$(Q)$(HOST_CC) $< $(ELF2EFI_CFLAGS) -DEFI_TARGET_X64 -O2 -o $@
1112
$(Q)$(HOST_CC) $(HOST_CFLAGS) $(ELF2EFI_CFLAGS) -DEFI_TARGET_X64 $< \
1113
$(ELF2EFI_LDFLAGS) -o $@
996
1114
CLEANUP += $(ELF2EFI64)
998
1116
$(EFIROM) : util/efirom.c $(MAKEDEPS)
999
1117
$(QM)$(ECHO) " [HOSTCC] $@"
1000
$(Q)$(HOST_CC) -idirafter include -O2 -o $@ $<
1118
$(Q)$(HOST_CC) $(HOST_CFLAGS) -idirafter include -o $@ $<
1001
1119
CLEANUP += $(EFIROM)
1003
1121
###############################################################################