162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ciobj-y += main.o 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci# Create $(fwdir) from $(CONFIG_EXTRA_FIRMWARE_DIR) -- if it doesn't have a 562306a36Sopenharmony_ci# leading /, it's relative to $(srctree). 662306a36Sopenharmony_cifwdir := $(CONFIG_EXTRA_FIRMWARE_DIR) 762306a36Sopenharmony_cifwdir := $(addprefix $(srctree)/,$(filter-out /%,$(fwdir)))$(filter /%,$(fwdir)) 862306a36Sopenharmony_ci 962306a36Sopenharmony_cifirmware := $(addsuffix .gen.o, $(CONFIG_EXTRA_FIRMWARE)) 1062306a36Sopenharmony_ciobj-y += $(firmware) 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ciFWNAME = $(patsubst $(obj)/%.gen.S,%,$@) 1362306a36Sopenharmony_ciFWSTR = $(subst $(comma),_,$(subst /,_,$(subst .,_,$(subst -,_,$(FWNAME))))) 1462306a36Sopenharmony_ciASM_WORD = $(if $(CONFIG_64BIT),.quad,.long) 1562306a36Sopenharmony_ciASM_ALIGN = $(if $(CONFIG_64BIT),3,2) 1662306a36Sopenharmony_ciPROGBITS = $(if $(CONFIG_ARM),%,@)progbits 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_cifilechk_fwbin = \ 1962306a36Sopenharmony_ci echo "/* Generated by $(src)/Makefile */" ;\ 2062306a36Sopenharmony_ci echo " .section .rodata" ;\ 2162306a36Sopenharmony_ci echo " .p2align 4" ;\ 2262306a36Sopenharmony_ci echo "_fw_$(FWSTR)_bin:" ;\ 2362306a36Sopenharmony_ci echo " .incbin \"$(fwdir)/$(FWNAME)\"" ;\ 2462306a36Sopenharmony_ci echo "_fw_end:" ;\ 2562306a36Sopenharmony_ci echo " .section .rodata.str,\"aMS\",$(PROGBITS),1" ;\ 2662306a36Sopenharmony_ci echo " .p2align $(ASM_ALIGN)" ;\ 2762306a36Sopenharmony_ci echo "_fw_$(FWSTR)_name:" ;\ 2862306a36Sopenharmony_ci echo " .string \"$(FWNAME)\"" ;\ 2962306a36Sopenharmony_ci echo " .section .builtin_fw,\"a\",$(PROGBITS)" ;\ 3062306a36Sopenharmony_ci echo " .p2align $(ASM_ALIGN)" ;\ 3162306a36Sopenharmony_ci echo " $(ASM_WORD) _fw_$(FWSTR)_name" ;\ 3262306a36Sopenharmony_ci echo " $(ASM_WORD) _fw_$(FWSTR)_bin" ;\ 3362306a36Sopenharmony_ci echo " $(ASM_WORD) _fw_end - _fw_$(FWSTR)_bin" 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci$(obj)/%.gen.S: FORCE 3662306a36Sopenharmony_ci $(call filechk,fwbin) 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci# The .o files depend on the binaries directly; the .S files don't. 3962306a36Sopenharmony_ci$(addprefix $(obj)/, $(firmware)): $(obj)/%.gen.o: $(fwdir)/% 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_citargets := $(patsubst $(obj)/%,%, \ 4262306a36Sopenharmony_ci $(shell find $(obj) -name \*.gen.S 2>/dev/null)) 43