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
This commit is contained in:
patacongo 2011-05-10 15:50:23 +00:00
parent 398cadbb31
commit 1141cc4cc6
8 changed files with 153 additions and 24 deletions

View File

@ -32,3 +32,7 @@
verify NXFFS.
6.3 2011-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>
* apps/interpreter: Add a directory to hold interpreters. The Pascal add-
on module now installs and builds under this directory.

View File

@ -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

View File

@ -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
^^^^^^^^^^^^^

View File

@ -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

View File

@ -43,8 +43,8 @@
#include <stdlib.h>
#include <debug.h>
#include "pexec.h"
#include "pedefs.h"
#include "apps/pcode/insn/pexec.h"
#include "apps/pcode/pedefs.h"
#include "pashello.h"
/****************************************************************************

70
interpreters/Makefile Normal file
View File

@ -0,0 +1,70 @@
############################################################################
# apps/interpreters/Makefile
#
# Copyright (C) 2011 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <spudmonkey@racsa.co.cr>
#
# 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

59
interpreters/README.txt Normal file
View File

@ -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] <install-dir>
If you are using this standard NuttX apps/ package, the correct
location for the <install-dir> 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

View File

@ -62,6 +62,3 @@ distclean: clean
@for dir in $(SUBDIRS) ; do \
$(MAKE) -C $$dir distclean TOPDIR="$(TOPDIR)" APPDIR="$(APPDIR)"; \
done
-include Make.dep