| # Copyright 2016 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| ALL := |
| APPS := |
| DEPS := |
| |
| QUIET ?= @ |
| |
| EFI_SECTIONS := .text .sdata .data .dynamic .dynsym |
| EFI_SECTIONS += .rel .rela .reloc .eh_frame |
| EFI_SECTIONS := $(patsubst %,-j %,$(EFI_SECTIONS)) |
| |
| DBG_SECTIONS := .debug_info .debug_abbrev .debug_loc .debug_aranges |
| DBG_SECTIONS += .debug_line .debug_macinfo .debug_str |
| DBG_SECTIONS := $(EFI_SECTIONS) $(patsubst %,-j %,$(DBG_SECTIONS)) |
| |
| ifneq ($(VERBOSE),) |
| $(info CFLAGS := $(EFI_CFLAGS)) |
| $(info LDFLAGS := $(EFI_LDFLAGS)) |
| $(info SECTIONS := $(EFI_SECTIONS)) |
| endif |
| |
| out/%.o: %.c |
| @mkdir -p $(dir $@) |
| @echo compiling: $@ |
| $(QUIET)$(EFI_CC) -MMD -MP -o $@ -c $(EFI_CFLAGS) $< |
| |
| out/%.efi: out/%.so |
| @mkdir -p $(dir $@) |
| @echo building: $@ |
| $(QUIET)$(EFI_OBJCOPY) --target=efi-app-$(ARCH) $(EFI_SECTIONS) $< $@ |
| $(QUIET)if [ "`nm $< | grep ' U '`" != "" ]; then echo "error: $<: undefined symbols"; nm $< | grep ' U '; rm $<; exit 1; fi |
| |
| out/%.dbg: out/%.so |
| @mkdir -p $(dir $@) |
| @echo building: $@ |
| $(QUIET)$(EFI_OBJCOPY) --target=efi-app-$(ARCH) $(DBG_SECTIONS) $< $@ |
| |
| |
| # _efi_app <basename> <obj-files> <dep-files> |
| define _efi_app |
| ALL += out/$1.efi out/$1.dbg |
| APPS += out/$1.efi |
| DEPS += $3 |
| out/$1.so: $2 $(EFI_CRT0) out/libutils.a |
| @mkdir -p $$(dir $$@) |
| @echo linking: $$@ |
| $(QUIET)$(EFI_LD) -o $$@ $(EFI_LDFLAGS) $(EFI_CRT0) $2 $(EFI_LIBS) |
| endef |
| |
| efi_app = $(eval $(call _efi_app,$(strip $1),\ |
| $(patsubst %.c,out/%.o,$2),\ |
| $(patsubst %.c,out/%.d,$2))) |
| |
| |