summaryrefslogtreecommitdiffstats
path: root/scripts/Makefile.lib
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2014-02-18 09:35:09 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2014-02-21 17:06:01 +0100
commit068f213bb3203e482334fa2130794c3ff25acb3b (patch)
tree9c149ef12a596aa90ca9070999155c00f993ad15 /scripts/Makefile.lib
parent5d22cb385695dc17cb226ba63db3c2a253a56bc6 (diff)
downloadbarebox-068f213bb3203e482334fa2130794c3ff25acb3b.tar.gz
barebox-068f213bb3203e482334fa2130794c3ff25acb3b.tar.xz
make: Add bbenv-y target to generate default environment files
This adds a target to generate environment files from directories. These are compiled into the barebox binary. use it as: bbenv-$(CONFIG_SOMETHING) += my-environment The directory containing the files to compile into the binary should be named my-environment. This can be accessed in C code later as: extern unsigned char __bbenv_my_environment_start[]; extern unsigned char __bbenv_my_environment_end[]; Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'scripts/Makefile.lib')
-rw-r--r--scripts/Makefile.lib29
1 files changed, 29 insertions, 0 deletions
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index e87e4016eb..f71c3b7c27 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -98,6 +98,7 @@ multi-objs-y := $(addprefix $(obj)/,$(multi-objs-y))
multi-objs-m := $(addprefix $(obj)/,$(multi-objs-m))
subdir-ym := $(addprefix $(obj)/,$(subdir-ym))
obj-dirs := $(addprefix $(obj)/,$(obj-dirs))
+bbenv-y := $(addprefix $(obj)/,$(bbenv-y))
# These flags are needed for modversions and compiling, so we define them here
# already
@@ -229,6 +230,34 @@ $(obj)/%.dtb: $(src)/%.dts FORCE
dtc-tmp = $(subst $(comma),_,$(dot-target).dts)
+obj-y += $(patsubst %,%.bbenv$(DEFAULT_COMPRESSION_SUFFIX).o,$(bbenv-y))
+extra-y += $(patsubst %,%.bbenv$(DEFAULT_COMPRESSION_SUFFIX),$(bbenv-y))
+extra-y += $(patsubst %,%.bbenv$(DEFAULT_COMPRESSION_SUFFIX).S,$(bbenv-y))
+extra-y += $(patsubst %,%.bbenv$(DEFAULT_COMPRESSION_SUFFIX).o,$(bbenv-y))
+
+quiet_cmd_env_S = ENV.S $@
+cmd_env_S = \
+( \
+ echo '\#include <asm-generic/barebox.lds.h>'; \
+ echo '.section .bbenv.rodata.$(subst -,_,$(*F)),"a"'; \
+ echo '.balign STRUCT_ALIGNMENT'; \
+ echo '.global __bbenv_$(subst -,_,$(*F))_start'; \
+ echo '__bbenv_$(subst -,_,$(*F))_start:'; \
+ echo '.incbin "$<" '; \
+ echo '__bbenv_$(subst -,_,$(*F))_end:'; \
+ echo '.global __bbenv_$(subst -,_,$(*F))_end'; \
+ echo '.balign STRUCT_ALIGNMENT'; \
+) > $@
+
+$(obj)/%.bbenv$(DEFAULT_COMPRESSION_SUFFIX).S: $(src)/%.bbenv$(DEFAULT_COMPRESSION_SUFFIX) FORCE
+ $(call if_changed,env_S)
+
+quiet_cmd_env = ENV $@
+cmd_env=$(srctree)/scripts/genenv $(srctree) $(objtree) $@ $<
+
+%.bbenv$(DEFAULT_COMPRESSION_SUFFIX): % FORCE
+ $(call cmd,env)
+
# Bzip2
# ---------------------------------------------------------------------------