diff options
| -rw-r--r-- | Kbuild | 87 | ||||
| -rw-r--r-- | Makefile | 36 | ||||
| -rwxr-xr-x | tools/scripts/make-asm-offsets | 27 | 
3 files changed, 89 insertions, 61 deletions
| @@ -0,0 +1,87 @@ +# +# Kbuild for top-level directory of U-Boot +# This file takes care of the following: +# 1) Generate generic-asm-offsets.h +# 2) Generate asm-offsets.h + +##### +# 1) Generate generic-asm-offsets.h + +generic-offsets-file := include/generated/generic-asm-offsets.h + +always  := $(generic-offsets-file) +targets := $(generic-offsets-file) lib/asm-offsets.s + +quiet_cmd_generic-offsets = GEN     $@ +define cmd_generic-offsets +	(set -e; \ +	 echo "#ifndef __GENERIC_ASM_OFFSETS_H__"; \ +	 echo "#define __GENERIC_ASM_OFFSETS_H__"; \ +	 echo "/*"; \ +	 echo " * DO NOT MODIFY."; \ +	 echo " *"; \ +	 echo " * This file was generated by Kbuild"; \ +	 echo " *"; \ +	 echo " */"; \ +	 echo ""; \ +	 sed -ne $(sed-y) $<; \ +	 echo ""; \ +	 echo "#endif" ) > $@ +endef + +# We use internal kbuild rules to avoid the "is up to date" message from make +lib/asm-offsets.s: lib/asm-offsets.c FORCE +	$(Q)mkdir -p $(dir $@) +	$(call if_changed_dep,cc_s_c) + +$(obj)/$(generic-offsets-file): lib/asm-offsets.s Kbuild +	$(Q)mkdir -p $(dir $@) +	$(call cmd,generic-offsets) + +##### +# 2) Generate asm-offsets.h +# + +ifneq ($(wildcard $(srctree)/$(CPUDIR)/$(SOC)/asm-offsets.c),) +offsets-file := include/generated/asm-offsets.h +endif + +always  += $(offsets-file) +targets += $(offsets-file) +targets += $(CPUDIR)/$(SOC)/asm-offsets.s + + +# Default sed regexp - multiline due to syntax constraints +define sed-y +	"/^->/{s:->#\(.*\):/* \1 */:; \ +	s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \ +	s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \ +	s:->::; p;}" +endef + +CFLAGS_asm-offsets.o := -DDO_DEPS_ONLY + +quiet_cmd_offsets = GEN     $@ +define cmd_offsets +	(set -e; \ +	 echo "#ifndef __ASM_OFFSETS_H__"; \ +	 echo "#define __ASM_OFFSETS_H__"; \ +	 echo "/*"; \ +	 echo " * DO NOT MODIFY."; \ +	 echo " *"; \ +	 echo " * This file was generated by Kbuild"; \ +	 echo " *"; \ +	 echo " */"; \ +	 echo ""; \ +	 sed -ne $(sed-y) $<; \ +	 echo ""; \ +	 echo "#endif" ) > $@ +endef + +# We use internal kbuild rules to avoid the "is up to date" message from make +$(CPUDIR)/$(SOC)/asm-offsets.s: $(CPUDIR)/$(SOC)/asm-offsets.c FORCE +	$(Q)mkdir -p $(dir $@) +	$(call if_changed_dep,cc_s_c) + +$(obj)/$(offsets-file): $(CPUDIR)/$(SOC)/asm-offsets.s +	$(call cmd,offsets) @@ -988,9 +988,8 @@ prepare1: prepare2 $(version_h) $(timestamp_h)  archprepare: prepare1 scripts_basic -prepare0: archprepare FORCE include/generated/generic-asm-offsets.h \ -	include/generated/asm-offsets.h -	@: +prepare0: archprepare FORCE +	$(Q)$(MAKE) $(build)=.  # All the preparing..  prepare: prepare0 @@ -1115,37 +1114,6 @@ checkdtc:  		false; \  	fi -quiet_cmd_offsets = GEN     $@ -      cmd_offsets = $(srctree)/tools/scripts/make-asm-offsets $< $@ - -include/generated/generic-asm-offsets.h: lib/asm-offsets.s -	$(call cmd,offsets) - -quiet_cmd_asm-offsets.s = CC      $@ -      cmd_asm-offsets.s = mkdir -p lib; \ -		$(CC) -DDO_DEPS_ONLY \ -		$(c_flags) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) \ -		-o $@ $< -c -S - -lib/asm-offsets.s: $(srctree)/lib/asm-offsets.c include/config.h -	$(call cmd,asm-offsets.s) - -include/generated/asm-offsets.h: $(CPUDIR)/$(SOC)/asm-offsets.s -	$(call cmd,offsets) - -quiet_cmd_soc_asm-offsets.s = CC      $@ -      cmd_soc_asm-offsets.s = mkdir -p $(CPUDIR)/$(SOC); \ -	if [ -f $(srctree)/$(CPUDIR)/$(SOC)/asm-offsets.c ];then \ -		$(CC) -DDO_DEPS_ONLY \ -		$(c_flags) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) \ -			-o $@ $(srctree)/$(CPUDIR)/$(SOC)/asm-offsets.c -c -S; \ -	else \ -		touch $@; \ -	fi - -$(CPUDIR)/$(SOC)/asm-offsets.s:	include/config.h -	$(call cmd,soc_asm-offsets.s) -  #########################################################################  # ARM relocations should all be R_ARM_RELATIVE (32-bit) or diff --git a/tools/scripts/make-asm-offsets b/tools/scripts/make-asm-offsets deleted file mode 100755 index 4c33756d6..000000000 --- a/tools/scripts/make-asm-offsets +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh - -# Adapted from Linux kernel's "Kbuild": -# commit 1cdf25d704f7951d02a04064c97db547d6021872 -# Author: Christoph Lameter <clameter@sgi.com> - -mkdir -p $(dirname $2) - -# Default sed regexp - multiline due to syntax constraints -SED_CMD="/^->/{s:->#\(.*\):/* \1 */:; \ -	s:^->\([^ ]*\) [\$#]*\([-0-9]*\) \(.*\):#define \1 (\2) /* \3 */:; \ -	s:^->\([^ ]*\) [\$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \ -	s:->::; p;}" - -(set -e - echo "#ifndef __ASM_OFFSETS_H__" - echo "#define __ASM_OFFSETS_H__" - echo "/*" - echo " * DO NOT MODIFY." - echo " *" - echo " * This file was generated by $(basename $0)" - echo " *" - echo " */" - echo "" - sed -ne "${SED_CMD}" $1  - echo "" - echo "#endif" ) > $2 |