summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2009-06-21 15:13:55 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2009-06-21 15:13:55 +0000
commit77c1a6ae19c1cbe5e2b7f1de0d73809885f11ed7 (patch)
treed9e4e912086a539de011ea5b45ced10fe62572da
parent5b829db93423d071a658fa0fca1eeffa21f96bb3 (diff)
downloadnuttx-77c1a6ae19c1cbe5e2b7f1de0d73809885f11ed7.tar.gz
nuttx-77c1a6ae19c1cbe5e2b7f1de0d73809885f11ed7.tar.bz2
nuttx-77c1a6ae19c1cbe5e2b7f1de0d73809885f11ed7.zip
Add logic to make ROMFS image
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@1920 42af7a65-404d-4744-a932-0658087f49c3
-rw-r--r--nuttx/examples/README.txt8
-rw-r--r--nuttx/examples/nxflat/tests/Makefile60
2 files changed, 63 insertions, 5 deletions
diff --git a/nuttx/examples/README.txt b/nuttx/examples/README.txt
index 81b4f2d73..08c425b14 100644
--- a/nuttx/examples/README.txt
+++ b/nuttx/examples/README.txt
@@ -137,6 +137,14 @@ examples/nx
CONFIG_DISABLE_PTHREAD=n
CONFIG_NX_BLOCKING=y
+examples/nxflat
+^^^^^^^^^^^^^^^
+
+ This example builds a small NXFLAT test case. This includes several
+ test programs under examples/nxflat tests. These tests are build using
+ the NXFLAT format and installed in a ROMFS file system. At run time,
+ each program int eh ROMFS file system is executed.
+
examples/null
^^^^^^^^^^^^^
diff --git a/nuttx/examples/nxflat/tests/Makefile b/nuttx/examples/nxflat/tests/Makefile
index 979bbc92b..6420e4773 100644
--- a/nuttx/examples/nxflat/tests/Makefile
+++ b/nuttx/examples/nxflat/tests/Makefile
@@ -35,23 +35,73 @@
# Most of these do no build yet
#SUBDIRS = errno hello hello++ longjmp mutex pthread signal task
-SUBDIRS = errno hello mutex pthread task
+SUBDIRS = errno hello mutex pthread task
+
+NXFLAT_DIR = $(TOPDIR)/examples/nxflat
+TESTS_DIR = $(NXFLAT_DIR)/tests
+ROMFS_DIR = $(TESTS_DIR)/romfs
+ROMFS_IMG = $(TESTS_DIR)/romfs.img
+ROMFS_HDR = $(TESTS_DIR)/romfs.h
+ROMFS_DIRLIST = $(TESTS_DIR)/dirlist.h
define DIR_template
$(1)_$(2):
- $(MAKE) -C $(1) $(3)
+ @$(MAKE) -C $(1) $(3) TOPDIR=$(TOPDIR) ROMFS_DIR=$(ROMFS_DIR) CROSSDEV=$(CROSSDEV)
endef
-all: build
-.PHONY: all build clean install
+all: $(ROMFS_HDR) $(ROMFS_DIRLIST)
+.PHONY: all build clean install populate
$(foreach DIR, $(SUBDIRS), $(eval $(call DIR_template,$(DIR),build, all)))
$(foreach DIR, $(SUBDIRS), $(eval $(call DIR_template,$(DIR),clean,clean)))
$(foreach DIR, $(SUBDIRS), $(eval $(call DIR_template,$(DIR),install,install)))
+# Build program(s) in each sud-directory
+
build: $(foreach DIR, $(SUBDIRS), $(DIR)_build)
-clean: $(foreach DIR, $(SUBDIRS), $(DIR)_clean)
+# Install each program in the romfs directory
install: $(foreach DIR, $(SUBDIRS), $(DIR)_install)
+# Create the romfs directory
+
+$(ROMFS_DIR):
+ @mkdir $(ROMFS_DIR)
+
+# Populate the romfs directory
+
+populate: $(ROMFS_DIR) build install
+
+# Create the romfs.img file from the populated romfs directory
+
+$(ROMFS_IMG): populate
+ @genromfs -f $@ -d $(ROMFS_DIR) -V "NXFLATTEST"
+
+# Create the romfs.h header file from the romfs.img file
+
+$(ROMFS_HDR) : $(ROMFS_IMG)
+ @xxd -i $^ >$@
+
+$(ROMFS_DIRLIST) : populate
+ @echo "#ifndef __EXAMPLES_NXFLAT_TESTS_DIRLIST_H" >$(ROMFS_DIRLIST)
+ @echo "#define __EXAMPLES_NXFLAT_TESTS_DIRLIST_H" >>$(ROMFS_DIRLIST)
+ @echo "" >>$(ROMFS_DIRLIST)
+ @echo "static const char *dirlist[] =" >>$(ROMFS_DIRLIST)
+ @echo "{" >>$(ROMFS_DIRLIST)
+ @(\
+ for file in `ls $(ROMFS_DIR)`; do \
+ echo " \"$$file\"," >>$(ROMFS_DIRLIST); \
+ done; \
+ )
+ @echo "};" >>$(ROMFS_DIRLIST)
+ @echo "" >>$(ROMFS_DIRLIST)
+ @echo "#endif /* __EXAMPLES_NXFLAT_TESTS_DIRLIST_H */" >>$(ROMFS_DIRLIST)
+
+# Clean each subdirectory
+
+clean: $(foreach DIR, $(SUBDIRS), $(DIR)_clean)
+ @rm -f $(ROMFS_HDR) $(ROMFS_IMG)
+ @rm -rf $(ROMFS_DIR)
+
+