build system: extend src-to-obj for non-.c/.S files
It also creates file names in the build directory and with the stage sliced in, but keeps the extension for anything not .c or .S. Also some handling for non-.c/.S files was adapted to match. This is inspired by the commit listed below, but rewritten to match upstream, and split in smaller pieces to keep intent clear. Change-Id: If8f89a7daffcf51f430b64c3293d2a817ae5120f Signed-off-by: Patrick Georgi <pgeorgi@chromium.org> Based-On-Change-Id: I50af7dacf616e0f8ff4c43f4acc679089ad7022b Based-On-Signed-off-by: Julius Werner <jwerner@chromium.org> Based-On-Reviewed-on: https://chromium-review.googlesource.com/219170 Reviewed-on: http://review.coreboot.org/9175 Reviewed-by: Aaron Durbin <adurbin@google.com> Tested-by: build bot (Jenkins)
This commit is contained in:
parent
5c9f534269
commit
db273065f6
9
Makefile
9
Makefile
|
@ -203,7 +203,12 @@ endif
|
||||||
# Eliminate duplicate mentions of source files in a class
|
# Eliminate duplicate mentions of source files in a class
|
||||||
$(foreach class,$(classes),$(eval $(class)-srcs:=$(sort $($(class)-srcs))))
|
$(foreach class,$(classes),$(eval $(class)-srcs:=$(sort $($(class)-srcs))))
|
||||||
|
|
||||||
src-to-obj=$(addsuffix .$(1).o, $(basename $(patsubst src/%, $(obj)/%, $(2))))
|
# Converts one or more source file paths to their corresponding build/ paths.
|
||||||
|
# Only .c and .S get converted to .o, other files (like .ld) keep their name.
|
||||||
|
# $1 stage name
|
||||||
|
# $2 file path (list)
|
||||||
|
src-to-obj=$(foreach file,$(2),$(basename $(patsubst src/%,$(obj)/%,$(file))).$(1)$(patsubst %.c,%.o,$(patsubst %.S,%.o,$(suffix $(file)))))
|
||||||
|
|
||||||
$(foreach class,$(classes),$(eval $(class)-objs:=$(call src-to-obj,$(class),$($(class)-srcs))))
|
$(foreach class,$(classes),$(eval $(class)-objs:=$(call src-to-obj,$(class),$($(class)-srcs))))
|
||||||
|
|
||||||
# Save all objs before processing them (for dependency inclusion)
|
# Save all objs before processing them (for dependency inclusion)
|
||||||
|
@ -241,7 +246,7 @@ $(foreach class,$(classes), \
|
||||||
foreach-src=$(foreach file,$($(1)-srcs),$(eval $(call $(1)-objs_$(subst .,,$(suffix $(file)))_template,$(subst src/,,$(basename $(file))))))
|
foreach-src=$(foreach file,$($(1)-srcs),$(eval $(call $(1)-objs_$(subst .,,$(suffix $(file)))_template,$(subst src/,,$(basename $(file))))))
|
||||||
$(eval $(foreach class,$(classes),$(call foreach-src,$(class))))
|
$(eval $(foreach class,$(classes),$(call foreach-src,$(class))))
|
||||||
|
|
||||||
DEPENDENCIES = $(originalobjs:.o=.d)
|
DEPENDENCIES = $(addsuffix .d,$(basename $(allobjs)))
|
||||||
-include $(DEPENDENCIES)
|
-include $(DEPENDENCIES)
|
||||||
|
|
||||||
printall:
|
printall:
|
||||||
|
|
|
@ -142,10 +142,10 @@ bootblock-c-deps:=$$(OPTION_TABLE_H)
|
||||||
#######################################################################
|
#######################################################################
|
||||||
# Add handler to compile ACPI's ASL
|
# Add handler to compile ACPI's ASL
|
||||||
define ramstage-objs_asl_template
|
define ramstage-objs_asl_template
|
||||||
$(obj)/$(1).ramstage.o: src/$(1).asl $(obj)/config.h
|
$(obj)/$(1).ramstage.asl: src/$(1).asl $(obj)/config.h
|
||||||
@printf " IASL $$(subst $(top)/,,$$(@))\n"
|
@printf " IASL $$(subst $(top)/,,$$(@))\n"
|
||||||
$(CC_ramstage) -x assembler-with-cpp -E -MMD -MT $$(@) -D__ACPI__ -P -include $(src)/include/kconfig.h -I$(obj) -I$(src) -I$(src)/include -I$(src)/arch/$(ARCHDIR-$(ARCH-ramstage-y))/include -I$(src)/mainboard/$(MAINBOARDDIR) $$< -o $$(basename $$@).asl
|
$(CC_ramstage) -x assembler-with-cpp -E -MMD -MT $$(@) -D__ACPI__ -P -include $(src)/include/kconfig.h -I$(obj) -I$(src) -I$(src)/include -I$(src)/arch/$(ARCHDIR-$(ARCH-ramstage-y))/include -I$(src)/mainboard/$(MAINBOARDDIR) $$< -o $$@
|
||||||
cd $$(dir $$@); $(IASL) -p $$(notdir $$@) -tc $$(notdir $$(basename $$@)).asl
|
cd $$(dir $$@); $(IASL) -p $$(notdir $$@) -tc $$(notdir $$@)
|
||||||
mv $$(basename $$@).hex $$(basename $$@).c
|
mv $$(basename $$@).hex $$(basename $$@).c
|
||||||
$(CC_ramstage) $$(CFLAGS_ramstage) $$(CPPFLAGS_ramstage) $$(if $$(subst dsdt,,$$(basename $$(notdir $(1)))), -DAmlCode=AmlCode_$$(basename $$(notdir $(1)))) -c -o $$@ $$(basename $$@).c
|
$(CC_ramstage) $$(CFLAGS_ramstage) $$(CPPFLAGS_ramstage) $$(if $$(subst dsdt,,$$(basename $$(notdir $(1)))), -DAmlCode=AmlCode_$$(basename $$(notdir $(1)))) -c -o $$@ $$(basename $$@).c
|
||||||
# keep %.o: %.c rule from catching the temporary .c file after a make clean
|
# keep %.o: %.c rule from catching the temporary .c file after a make clean
|
||||||
|
|
|
@ -38,7 +38,7 @@ secmon-y += ../exception.c
|
||||||
secmon-y += ../../cpu.c
|
secmon-y += ../../cpu.c
|
||||||
secmon-y += ../../transition_asm.S ../../transition.c
|
secmon-y += ../../transition_asm.S ../../transition.c
|
||||||
|
|
||||||
ramstage-srcs += $(SECMON_BIN)
|
ramstage-srcs += $(SECMON_BIN).o
|
||||||
|
|
||||||
$(SECMON_OBJ): $$(secmon-objs)
|
$(SECMON_OBJ): $$(secmon-objs)
|
||||||
$(CC_secmon) $(LDFLAGS) -nostdlib -r -o $@ $^
|
$(CC_secmon) $(LDFLAGS) -nostdlib -r -o $@ $^
|
||||||
|
|
|
@ -196,7 +196,7 @@ $(obj)/mainboard/$(MAINBOARDDIR)/romstage.inc: $(obj)/mainboard/$(MAINBOARDDIR)/
|
||||||
mv $@.tmp $@
|
mv $@.tmp $@
|
||||||
endif
|
endif
|
||||||
|
|
||||||
romstage-srcs += $(objgenerated)/crt0.s
|
romstage-srcs += $(objgenerated)/crt0.S
|
||||||
|
|
||||||
romstage-libs ?=
|
romstage-libs ?=
|
||||||
|
|
||||||
|
@ -237,11 +237,11 @@ $(objgenerated)/crt0.romstage.S: $$(crt0s)
|
||||||
@printf " GEN $(subst $(obj)/,,$(@))\n"
|
@printf " GEN $(subst $(obj)/,,$(@))\n"
|
||||||
printf '$(foreach crt0,$(crt0s),#include "$(crt0:$(obj)/%=%)"\n)' > $@
|
printf '$(foreach crt0,$(crt0s),#include "$(crt0:$(obj)/%=%)"\n)' > $@
|
||||||
|
|
||||||
$(objgenerated)/crt0.romstage.o: $(objgenerated)/crt0.s
|
$(objgenerated)/crt0.romstage.o: $(objgenerated)/crt0.S
|
||||||
@printf " CC $(subst $(obj)/,,$(@))\n"
|
@printf " CC $(subst $(obj)/,,$(@))\n"
|
||||||
$(CC_romstage) $(CFLAGS_x86_32) $(DISASSEMBLY) -c -o $@ $< > $(basename $@).disasm
|
$(CC_romstage) $(CFLAGS_x86_32) $(DISASSEMBLY) -c -o $@ $< > $(basename $@).disasm
|
||||||
|
|
||||||
$(objgenerated)/crt0.s: $(objgenerated)/crt0.romstage.S $(obj)/config.h $(obj)/build.h
|
$(objgenerated)/crt0.S: $(objgenerated)/crt0.romstage.S $(obj)/config.h $(obj)/build.h
|
||||||
@printf " CC $(subst $(obj)/,,$(@))\n"
|
@printf " CC $(subst $(obj)/,,$(@))\n"
|
||||||
$(CC_romstage) $(CPPFLAGS_romstage) -MMD -x assembler-with-cpp -E -I$(src)/include -I$(src)/arch/x86/include -I$(obj) -include $(obj)/config.h -include $(obj)/build.h -I. -I$(src) $< -o $@
|
$(CC_romstage) $(CPPFLAGS_romstage) -MMD -x assembler-with-cpp -E -I$(src)/include -I$(src)/arch/x86/include -I$(obj) -include $(obj)/config.h -include $(obj)/build.h -I. -I$(src) $< -o $@
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ SIPI_BIN=$(SIPI_ELF:.elf=)
|
||||||
SIPI_DOTO=$(SIPI_ELF:.elf=.o)
|
SIPI_DOTO=$(SIPI_ELF:.elf=.o)
|
||||||
|
|
||||||
ifeq ($(CONFIG_PARALLEL_MP),y)
|
ifeq ($(CONFIG_PARALLEL_MP),y)
|
||||||
ramstage-srcs += $(SIPI_BIN)
|
ramstage-srcs += $(SIPI_BIN).o
|
||||||
endif
|
endif
|
||||||
rmodules_$(ARCH-ramstage-y)-$(CONFIG_PARALLEL_MP) += sipi_vector.S
|
rmodules_$(ARCH-ramstage-y)-$(CONFIG_PARALLEL_MP) += sipi_vector.S
|
||||||
|
|
||||||
|
|
|
@ -58,8 +58,8 @@ smm-y += smm_module_handler.c
|
||||||
|
|
||||||
ramstage-y += smm_module_loader.c
|
ramstage-y += smm_module_loader.c
|
||||||
|
|
||||||
ramstage-srcs += $(obj)/cpu/x86/smm/smm
|
ramstage-srcs += $(obj)/cpu/x86/smm/smm.o
|
||||||
ramstage-srcs += $(obj)/cpu/x86/smm/smmstub
|
ramstage-srcs += $(obj)/cpu/x86/smm/smmstub.o
|
||||||
|
|
||||||
# SMM Stub Module. The stub is used as a trampoline for relocation and normal
|
# SMM Stub Module. The stub is used as a trampoline for relocation and normal
|
||||||
# SMM handling.
|
# SMM handling.
|
||||||
|
@ -99,7 +99,7 @@ else # CONFIG_SMM_MODULES
|
||||||
|
|
||||||
ramstage-$(CONFIG_HAVE_SMI_HANDLER) += smmrelocate.S
|
ramstage-$(CONFIG_HAVE_SMI_HANDLER) += smmrelocate.S
|
||||||
ifeq ($(CONFIG_HAVE_SMI_HANDLER),y)
|
ifeq ($(CONFIG_HAVE_SMI_HANDLER),y)
|
||||||
ramstage-srcs += $(obj)/cpu/x86/smm/smm_wrap
|
ramstage-srcs += $(obj)/cpu/x86/smm/smm_wrap.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Use TSEG specific entry point and linker script
|
# Use TSEG specific entry point and linker script
|
||||||
|
|
Loading…
Reference in New Issue