From 1141cc4cc6e903963e50760299c708f8eb260135 Mon Sep 17 00:00:00 2001 From: patacongo Date: Tue, 10 May 2011 15:50:23 +0000 Subject: [PATCH] Pascal now installs in the apps/ directory git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3583 42af7a65-404d-4744-a932-0658087f49c3 --- ChangeLog.txt | 4 +++ Makefile | 22 ++++++------ examples/README.txt | 8 ++++- examples/pashello/Makefile | 7 ---- examples/pashello/pashello.c | 4 +-- interpreters/Makefile | 70 ++++++++++++++++++++++++++++++++++++ interpreters/README.txt | 59 ++++++++++++++++++++++++++++++ netutils/Makefile | 3 -- 8 files changed, 153 insertions(+), 24 deletions(-) create mode 100644 interpreters/Makefile create mode 100644 interpreters/README.txt diff --git a/ChangeLog.txt b/ChangeLog.txt index 3443a9fe8..f78ae146b 100755 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -32,3 +32,7 @@ verify NXFFS. 6.3 2011-xx-xx Gregory Nutt + + * apps/interpreter: Add a directory to hold interpreters. The Pascal add- + on module now installs and builds under this directory. + diff --git a/Makefile b/Makefile index c8c5bcd14..487fd94f5 100644 --- a/Makefile +++ b/Makefile @@ -48,20 +48,20 @@ APPDIR = ${shell pwd} # list can be extended by the .config file as well CONFIGURED_APPS = -SUBDIRS = namedapp nshlib netutils examples vsn +SUBDIRS = examples interpreters namedapp nshlib netutils vsn -include .config -# BUILTIN_APPS_DIR is the list of currently available application directories. It -# is the same as CONFIGURED_APPS, but filtered to exclude any non-existent apps +# INSTALLED_APPS is the list of currently available application directories. It +# is the same as CONFIGURED_APPS, but filtered to exclude any non-existent apps. # namedapp is always in the list of applications to be built -BUILTIN_APPS_DIR = namedapp +INSTALLED_APPS = namedapp -# Create the list of available applications (BUILTIN_APPS_DIR) +# Create the list of available applications (INSTALLED_APPS) define ADD_BUILTIN -BUILTIN_APPS_DIR += ${shell if [ -r $1/Makefile ]; then echo "$1"; fi} +INSTALLED_APPS += ${shell if [ -r $1/Makefile ]; then echo "$1"; fi} endef $(foreach BUILTIN, $(CONFIGURED_APPS), $(eval $(call ADD_BUILTIN,$(BUILTIN)))) @@ -73,18 +73,18 @@ BIN = libapps$(LIBEXT) # Build targets all: $(BIN) -.PHONY: $(BUILTIN_APPS_DIR) context depend clean distclean +.PHONY: $(INSTALLED_APPS) context depend clean distclean -$(BUILTIN_APPS_DIR): +$(INSTALLED_APPS): @$(MAKE) -C $@ TOPDIR="$(TOPDIR)" APPDIR="$(APPDIR)"; -$(BIN): $(BUILTIN_APPS_DIR) +$(BIN): $(INSTALLED_APPS) @( for obj in $(OBJS) ; do \ $(call ARCHIVE, $@, $${obj}); \ done ; ) .context: - @for dir in $(BUILTIN_APPS_DIR) ; do \ + @for dir in $(INSTALLED_APPS) ; do \ rm -f $$dir/.context ; \ $(MAKE) -C $$dir TOPDIR="$(TOPDIR)" APPDIR="$(APPDIR)" context ; \ done @@ -93,7 +93,7 @@ $(BIN): $(BUILTIN_APPS_DIR) context: .context .depend: context Makefile $(SRCS) - @for dir in $(BUILTIN_APPS_DIR) ; do \ + @for dir in $(INSTALLED_APPS) ; do \ rm -f $$dir/.depend ; \ $(MAKE) -C $$dir TOPDIR="$(TOPDIR)" APPDIR="$(APPDIR)" depend ; \ done diff --git a/examples/README.txt b/examples/README.txt index d342814c2..468d3d86b 100644 --- a/examples/README.txt +++ b/examples/README.txt @@ -274,7 +274,13 @@ examples/ostest examples/pashello ^^^^^^^^^^^^^^^^^ - This is "Hello, World" implemented via the Pascal P-Code interpreter + This is "Hello, World" implemented via the Pascal P-Code interpreter. In + order to use this example, you must first download and install the + NuttX pascal module. After unpacking the pascal module, you can find + installation instructions in pascal/nuttx/README.txt. + + The correct install location for the NuttX examples and build files is + apps/interpreters. examples/pipe ^^^^^^^^^^^^^ diff --git a/examples/pashello/Makefile b/examples/pashello/Makefile index f392e1b23..44830eee2 100644 --- a/examples/pashello/Makefile +++ b/examples/pashello/Makefile @@ -39,13 +39,6 @@ include $(APPDIR)/Make.defs # Pascal Add-On Example -ifeq ($(WINTOOL),y) -INCDIROPT = -w -endif - -CFLAGS += ${shell $(TOPDIR)/tools/incdir.sh $(INCDIROPT) "$(CC)" $(TOPDIR)/pcode/include } -CFLAGS += ${shell $(TOPDIR)/tools/incdir.sh $(INCDIROPT) "$(CC)" $(TOPDIR)/pcode/insn/include} - ASRCS = CSRCS = pashello.c device.c diff --git a/examples/pashello/pashello.c b/examples/pashello/pashello.c index 9ebe68a27..ae19c94f5 100644 --- a/examples/pashello/pashello.c +++ b/examples/pashello/pashello.c @@ -43,8 +43,8 @@ #include #include -#include "pexec.h" -#include "pedefs.h" +#include "apps/pcode/insn/pexec.h" +#include "apps/pcode/pedefs.h" #include "pashello.h" /**************************************************************************** diff --git a/interpreters/Makefile b/interpreters/Makefile new file mode 100644 index 000000000..bf27d79e8 --- /dev/null +++ b/interpreters/Makefile @@ -0,0 +1,70 @@ +############################################################################ +# apps/interpreters/Makefile +# +# Copyright (C) 2011 Gregory Nutt. All rights reserved. +# Author: Gregory Nutt +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name NuttX nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +-include $(TOPDIR)/.config # Current configuration + +# Sub-directories containing interpreter runtime + +SUBDIRS = pcode + +# Create the list of installed runtime modules (INSTALLED_DIRS) + +define ADD_DIRECTORY +INSTALLED_DIRS += ${shell if [ -r $1/Makefile ]; then echo "$1"; fi} +endef + +$(foreach DIR, $(SUBDIRS), $(eval $(call ADD_DIRECTORY,$(DIR)))) + +all: nothing +.PHONY: nothing context depend clean distclean + +nothing: + +context: + +depend: + @for dir in $(INSTALLED_DIRS) ; do \ + $(MAKE) -C $$dir depend TOPDIR="$(TOPDIR)" APPDIR="$(APPDIR)"; \ + done + +clean: + @for dir in $(INSTALLED_DIRS) ; do \ + $(MAKE) -C $$dir clean TOPDIR="$(TOPDIR)" APPDIR="$(APPDIR)"; \ + done + +distclean: clean + @for dir in $(INSTALLED_DIRS) ; do \ + $(MAKE) -C $$dir distclean TOPDIR="$(TOPDIR)" APPDIR="$(APPDIR)"; \ + done diff --git a/interpreters/README.txt b/interpreters/README.txt new file mode 100644 index 000000000..e1c58fef3 --- /dev/null +++ b/interpreters/README.txt @@ -0,0 +1,59 @@ +apps/interpreters README file +============================= + +This apps/ directory is set aside to hold interpreters that may be +incorporated into NuttX. + +pcode +----- + + At present, only the NuttX Pascal add-on is supported. This NuttX add-on + must be downloaded separately (or is available in an SVN snapshot in the + misc/pascal directory). + + This Pascal add-on must be installed into the NuttX apps/ directory. After + unpacking the Pascal add-on package, an installation script and README.txt + instructions can be found at pascal/nuttx. + + INSTALL.sh -- The script that performs the operation. Usage: + + ./INSTALL.sh [-16|-32] + + If you are using this standard NuttX apps/ package, the correct + location for the is apps/interpreters. That is + where the examples and build logic will expect to find the pcode + sub-directory. + + Example: + + ./INSTALL.sh -16 $PWD/../../../apps/interpreters + + After installation, the NuttX apps/interpresters directory will contain + the following files + + pcode + |-- Makefile + |-- include + | `-- Common header files + |-- libboff + | `-- Pascal object format (POFF) library + `--insn + |-- include + | `-- model-specific header files + `-- prun + `-- model-specific source files + + pashello + + There is a simple Pascal example at apps/examples/pashello. This is the + standard "Hello, World!" example written in Pascal and interpreted from + Pascal P-Code at runtime. To use this example, place the following in + your appconfig file" + + # Path to example in apps/examples containing the user_start entry point + + CONFIGURED_APPS += examples/pashello + + # Path to the Pascal p-code runtime interpreter module + + CONFIGURED_APPS += interpreters/pcode diff --git a/netutils/Makefile b/netutils/Makefile index 7401a8695..91363f156 100644 --- a/netutils/Makefile +++ b/netutils/Makefile @@ -62,6 +62,3 @@ distclean: clean @for dir in $(SUBDIRS) ; do \ $(MAKE) -C $$dir distclean TOPDIR="$(TOPDIR)" APPDIR="$(APPDIR)"; \ done - --include Make.dep -