aboutsummaryrefslogtreecommitdiffstats
path: root/shells
diff options
context:
space:
mode:
authormarino <marino@FreeBSD.org>2017-01-01 03:42:42 +0800
committermarino <marino@FreeBSD.org>2017-01-01 03:42:42 +0800
commit03efe7cecd7bcd359a627d96a51cd9f59adf0987 (patch)
tree4cdfb65e5f7117db6c0352edbc31ea2c9232aec8 /shells
parentcbb2575c86896d99b5d782aa094ad108331fd6b0 (diff)
downloadfreebsd-ports-gnome-03efe7cecd7bcd359a627d96a51cd9f59adf0987.tar.gz
freebsd-ports-gnome-03efe7cecd7bcd359a627d96a51cd9f59adf0987.tar.zst
freebsd-ports-gnome-03efe7cecd7bcd359a627d96a51cd9f59adf0987.zip
Add new port shells/sparforte
SPARforte is an open source programming language for high-integrity tasks, efficient development over the project lifecycle and assuming best practices. Language characteristics: * Paradigm: imperative/ procedural, scripting, shell, limited reflexive * Typing Disciplines: strong typing, type safety, nominative static with optional limited weak and duck typing * Appeared: 2001 (Ken O. Burtch) * Source Code: GCC Ada, GCC C, Bourne-Again Shell, GCC Make * Influenced by: Ada 95, Bourne Shell, SQL, and minorly BASIC, PHP, Python * Usual File Extensions: .sp, .bush
Diffstat (limited to 'shells')
-rw-r--r--shells/Makefile1
-rw-r--r--shells/sparforte/Makefile159
-rw-r--r--shells/sparforte/distinfo3
-rw-r--r--shells/sparforte/files/new_configure.in111
-rw-r--r--shells/sparforte/pkg-descr22
-rw-r--r--shells/sparforte/pkg-plist225
6 files changed, 521 insertions, 0 deletions
diff --git a/shells/Makefile b/shells/Makefile
index 5abb7c58081c..6a92bba190e4 100644
--- a/shells/Makefile
+++ b/shells/Makefile
@@ -38,6 +38,7 @@
SUBDIR += sash
SUBDIR += scponly
SUBDIR += shell-include
+ SUBDIR += sparforte
SUBDIR += tcsh_nls
SUBDIR += tcshrc
SUBDIR += v7sh
diff --git a/shells/sparforte/Makefile b/shells/sparforte/Makefile
new file mode 100644
index 000000000000..778a5ce89da4
--- /dev/null
+++ b/shells/sparforte/Makefile
@@ -0,0 +1,159 @@
+# Created by: John Marino <marino@FreeBSD.org>
+# $FreeBSD$
+
+PORTNAME= sparforte
+PORTVERSION= 2.0.1
+DISTVERSIONPREFIX= v
+CATEGORIES= shells lang
+
+MAINTAINER= marino@FreeBSD.org
+COMMENT= Shell and scripting language for mission-critical, scalable projects
+
+LICENSE= GPLv2 GMGPL
+LICENSE_COMB= multi
+LICENSE_FILE= ${WRKSRC}/COPYING
+
+USE_GITHUB= yes
+GH_ACCOUNT= kburtch
+GH_PROJECT= SparForte
+
+USES= ada bdb:48 gettext-runtime gmake pkgconfig readline:port
+USE_SDL= sdl image
+HAS_CONFIGURE= yes
+MAKE_ARGS+= RPM_BUILD_ROOT=1
+PORTDOCS= *
+
+# Repurpose CXXFLAGS for gnatprep options
+CXXFLAGS:= -DREADLINE=true \
+ -DBDB=true
+
+PREPFILES= world.ads \
+ user_io-getline.adb \
+ scanner_res.ads \
+ scanner_res.adb \
+ parser.adb \
+ builtins.adb \
+ parser_db.adb \
+ parser_dbm.adb \
+ parser_mysql.adb \
+ parser_mysqlm.adb \
+ parser_sound.adb \
+ parser_pen.adb \
+ parser_gnat_cgi.adb \
+ parser_bdb.adb \
+ parser_btree_io.adb \
+ parser_hash_io.adb
+
+CONFIGURE_SCRIPT= new_configure
+MAKE_JOBS_UNSAFE= yes # adacgi seems to be unsafe
+
+OPTIONS_DEFINE= CGI OPENGL SOUND DOCS EXAMPLES
+OPTIONS_GROUP= Database
+OPTIONS_GROUP_Database= MYSQL PGSQL
+OPTIONS_DEFAULT= MYSQL PGSQL OPENGL SOUND
+
+MYSQL_USES= mysql
+MYSQL_CXXFLAGS= -DMYSQL=true
+MYSQL_CXXFLAGS_OFF= -DMYSQL=false
+
+PGSQL_USES= pgsql ssl
+PGSQL_CXXFLAGS= -DPOSTGRES=true
+PGSQL_CXXFLAGS_OFF= -DPOSTGRES=false
+
+OPENGL_USE= GL=gl,glu
+OPENGL_CXXFLAGS= -DOPENGL=true
+OPENGL_CXXFLAGS_OFF= -DOPENGL=false
+
+SOUND_LIB_DEPENDS= libgstreamer-0.10.so:multimedia/gstreamer
+SOUND_USE= GNOME=glib20,libxml2
+SOUND_CXXFLAGS= -DSOUND=true
+SOUND_CXXFLAGS_OFF= -DSOUND=false
+
+CGI_DESC= Common Gateway Interface (breaks other features)
+CGI_CXXFLAGS= -DGCGI=true
+CGI_CXXFLAGS_OFF= -DGCGI=false
+
+# Currently Ada is only available for x86, so we can assume the following
+SF_ARCH= ${ARCH:S/amd64/athlon64/:S/x86_64/athlon64/}
+SF_CPU_FLAG= -march
+SF_CFLAGSTYPE= -DFREEBSD
+
+# shortcuts
+SF_SRC= ${WRKSRC}/src
+SCAL= scanner-calendar
+
+.include <bsd.port.options.mk>
+
+.if ${PORT_OPTIONS:MMYSQL} || ${PORT_OPTIONS:MPGSQL}
+CXXFLAGS+= -DAPQ=true
+SETAPQ= 1
+.else
+CXXFLAGS+= -DAPQ=false
+SETAPQ= 0
+.endif
+SETMYSQL= ${"${PORT_OPTIONS:MMYSQL}" != "":?1:0}
+SETPGSQL= ${"${PORT_OPTIONS:MPGSQL}" != "":?1:0}
+SETSOUND= ${"${PORT_OPTIONS:MSOUND}" != "":?1:0}
+SETGL= ${"${PORT_OPTIONS:MOPENGL}" != "":?1:0}
+
+post-extract:
+ ${CP} ${SF_SRC}/bush_freebsd.ads ${SF_SRC}/bush_os.ads
+ ${CP} ${SF_SRC}/${SCAL}-latest.ads ${SF_SRC}/${SCAL}.ads
+ ${CP} ${SF_SRC}/${SCAL}-latest.adb ${SF_SRC}/${SCAL}.adb
+.if ${SF_ARCH} == "athlon64"
+ ${CP} ${SF_SRC}/bush_os-sdl-64bit.ads ${SF_SRC}/bush_os-sdl.ads
+.else
+ ${CP} ${SF_SRC}/bush_os-sdl-32bit.ads ${SF_SRC}/bush_os-sdl.ads
+.endif
+ # Create a compact configure script for ports collection
+ ${SED} -e "s|@CPU_FLAG@|${SF_CPU_FLAG}|" \
+ -e "s|@ARCH@|${SF_ARCH}|" \
+ -e "s|@MAKECMD@|${MAKE_CMD}|" \
+ -e "s|@CFLAGSTYPE@|${SF_CFLAGSTYPE}|" \
+ -e "s|@PREFIX@|${PREFIX}|" \
+ -e "s|@SETAPQ@|${SETAPQ}|" \
+ -e "s|@SETMYSQL@|${SETMYSQL}|" \
+ -e "s|@SETPGSQL@|${SETPGSQL}|" \
+ -e "s|@SETSOUND@|${SETSOUND}|" \
+ -e "s|@SETGL@|${SETGL}|" \
+ -e "s|@SED@|${SED}|" \
+ ${FILESDIR}/new_configure.in > ${WRKSRC}/new_configure
+ ${CHMOD} 755 ${WRKSRC}/new_configure
+
+post-patch:
+ # Use the gcc compiler associated with the ada frontend.
+ # Without this substitution, the base compiler is used instead.
+ ${REINPLACE_CMD} -e "s|cc |gcc |" ${WRKSRC}/src/pegasock/Makefile
+ # Avoid use of malloc.h
+ ${REINPLACE_CMD} -e "s|<malloc.h>|<stdlib.h>|" \
+ ${WRKSRC}/src/bdb/c_bdb.c
+ # Use db.h from db48 and link to it
+ # Fix multi-job support
+ ${REINPLACE_CMD} -e "s|BDB4|BDB4 -I${PREFIX}/include/db48|" \
+ -e "s|-ldb|-L${PREFIX}/lib/db48 -ldb|" \
+ -e "s|db: db.adb|db: bdb_constants.ads db.adb|" \
+ ${WRKSRC}/src/bdb/GNUmakefile
+ # fix areadline linkage
+ ${REINPLACE_CMD} -e "s|gnatlink.*|gnatlink rl.ali -L${PREFIX}/lib -lreadline -lhistory|" \
+ ${WRKSRC}/src/areadline/Makefile
+
+post-configure:
+.for f in ${PREPFILES}
+ (cd ${WRKSRC}/src && ${SETENV} ${MAKE_ENV} \
+ gnatprep ${CXXFLAGS} ${f}.orig ${f})
+.endfor
+
+post-install:
+ ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/spar
+
+post-install-DOCS-on:
+ @${MKDIR} ${STAGEDIR}${DOCSDIR}
+ (cd ${WRKSRC}/doc && ${COPYTREE_SHARE} \* ${STAGEDIR}${DOCSDIR})
+
+post-install-EXAMPLES-on:
+ @${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
+ @${MV} ${WRKSRC}/examples/incomplete ${WRKDIR}/
+ (cd ${WRKSRC}/examples && \
+ ${COPYTREE_SHARE} \* ${STAGEDIR}${EXAMPLESDIR})
+
+.include <bsd.port.mk>
diff --git a/shells/sparforte/distinfo b/shells/sparforte/distinfo
new file mode 100644
index 000000000000..15579e394fa6
--- /dev/null
+++ b/shells/sparforte/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1482942904
+SHA256 (kburtch-SparForte-v2.0.1_GH0.tar.gz) = d8cab4bc90e2480bd3b8fe295e32a1f6d5584520b9126dde20acd73425367b31
+SIZE (kburtch-SparForte-v2.0.1_GH0.tar.gz) = 2761519
diff --git a/shells/sparforte/files/new_configure.in b/shells/sparforte/files/new_configure.in
new file mode 100644
index 000000000000..5dc56d8da5ff
--- /dev/null
+++ b/shells/sparforte/files/new_configure.in
@@ -0,0 +1,111 @@
+#!/bin/sh
+# Configure script tailored for FreeBSD ports collection
+
+SETAPQ=@SETAPQ@
+SETMYSQL=@SETMYSQL@
+SETPGSQL=@SETPGSQL@
+SETSOUND=@SETSOUND@
+SETGL=@SETGL@
+
+CCTYPE=ada
+CPUTYPE="@ARCH@"
+CPUFLAG="@CPU_FLAG@"
+GMAKETYPE="@MAKECMD@"
+PREFIXSUB="@PREFIX@"
+MANPREFIXSUB="@PREFIX@/man"
+CFLAGSTYPE="@CFLAGSTYPE@"
+BDBINCLSUB="-I@PREFIX@/include/db48 -I./bdb/"
+BDBSUB="-L@PREFIX@/lib/db48 -ldb bdb/c_bdb.o"
+RLINCLSUB="-I./areadline/"
+RLLIBSSUB="-L@PREFIX@/lib -lreadline -lhistory"
+FASTCGISUB=
+SDLINCLSSUB=
+SDLLIBSTYPE=$(@PREFIX@/bin/pkgconf --libs SDL_image)
+SDLINCLTYPE=$(@PREFIX@/bin/pkgconf --cflags SDL_image)
+
+# Blank defaults
+GSTREAMERLIBSSUB=
+GSTREAMERFLAGSUB=
+GSTREAMEROUTSUB=
+MESAINCLSUB=
+MESALIBSSUB=
+MYSQLLIBSSUB=
+PGLIBSSUB=
+
+if [ ${SETAPQ} -eq 1 ]; then
+ APQ="apq-2.1"
+ APQMAKESUB="\$(MAKE) -C ${APQ}"
+ APQLIBSSUB="-L./${APQ} "
+ APQINCLSSUB="-I./${APQ} "
+ if [ ${SETMYSQL} -eq 1 ]; then
+ MYSQLLIBSSUB="-L@PREFIX@/lib/mysql -lmysqlclient -pthread -lm"
+ APQLIBSSUB="${APQLIBSSUB} ./${APQ}/c_mysql.o"
+ if [ ${SETPGSQL} -eq 0 ]; then
+ echo "Executing APQ's configure (skipping PostgreSQL)"
+ (cd src/${APQ} && /usr/bin/env HAVE_PG=0 ./configure)
+ fi
+ fi
+ if [ ${SETPGSQL} -eq 1 ]; then
+ PGLIBSSUB="-L@PREFIX@/lib -lintl -lssl -lcrypto"
+ if [ ${SETMYSQL} -eq 1 ]; then
+ echo "Executing APQ's configure"
+ (cd src/${APQ} && ./configure)
+ else
+ echo "Executing APQ's configure (skipping MySQL)"
+ (cd src/${APQ} && /usr/bin/env HAVE_MY=0 ./configure)
+ fi
+ fi
+else
+ APQMAKESUB="@echo disabled"
+ APQLIBSSUB=
+ APQINCLSSUB=
+fi
+
+if [ ${SETSOUND} -eq 1 ]; then
+ GSTREAMERLIBSSUB=$(@PREFIX@/bin/pkgconf --cflags --libs gstreamer-0.10)
+ GSTREAMEROUTSUB="c_gstreamer.o"
+ GSTREAMERFLAGSUB="-DGSTREAMER"
+fi
+
+if [ ${SETGL} -eq 1 ]; then
+ MESAINCLSUB=$(@PREFIX@/bin/pkgconf --cflags gl glu)
+ MESALIBSSUB=$(@PREFIX@/bin/pkgconf --libs gl glu)
+fi
+
+echo "Creating GNUmakefile"
+@SED@ -e "s|CPUFLAG|${CPUFLAG}|g" \
+ -e "s|CCTYPE|${CCTYPE}|g" \
+ -e "s|CPUTYPE|${CPUTYPE}|g" \
+ -e "s|GMAKETYPE|${GMAKETYPE}|g" \
+ -e "s|CFLAGSTYPE|${CFLAGSTYPE}|g" \
+ -e "s|MANPREFIXSUB|${MANPREFIXSUB}|g" \
+ -e "s|PREFIXSUB|${PREFIXSUB}|g" \
+ GNUmakefile.orig > Makefile
+
+echo "Creating src/GNUmakefile"
+@SED@ -e "s|CPUFLAG|${CPUFLAG}|g" \
+ -e "s|CCTYPE|${CCTYPE}|g" \
+ -e "s|CPUTYPE|${CPUTYPE}|g" \
+ -e "s|GMAKETYPE|${GMAKETYPE}|g" \
+ -e "s|CFLAGSTYPE|${CFLAGSTYPE}|g" \
+ -e "s|MANPREFIXSUB|${MANPREFIXSUB}|g" \
+ -e "s|PREFIXSUB|${PREFIXSUB}|g" \
+ -e "s|SDLLIBSTYPE|${SDLLIBSTYPE}|g" \
+ -e "s|SDLINCLTYPE|${SDLINCLTYPE}|g" \
+ -e "s|PGLIBSSUB|${PGLIBSSUB}|g" \
+ -e "s|MYSQLLIBSSUB|${MYSQLLIBSSUB}|g" \
+ -e "s|APQLIBSSUB|${APQLIBSSUB}|g" \
+ -e "s|APQINCLSSUB|${APQINCLSSUB}|g" \
+ -e "s|SDLINCLSSUB|${SDLINCLSSUB}|g" \
+ -e "s|APQMAKESUB|${APQMAKESUB}|g" \
+ -e "s|FASTCGISUB|${FASTCGISUB}|g" \
+ -e "s|GSTREAMERLIBSSUB|${GSTREAMERLIBSSUB}|g" \
+ -e "s|GSTREAMERFLAGSUB|${GSTREAMERFLAGSUB}|g" \
+ -e "s|GSTREAMEROUTSUB|${GSTREAMEROUTSUB}|g" \
+ -e "s|MESAINCLSUB|${MESAINCLSUB}|g" \
+ -e "s|MESALIBSSUB|${MESALIBSSUB}|g" \
+ -e "s|BDBSUB|${BDBSUB}|g" \
+ -e "s|BDBINCLSUB|${BDBINCLSUB}|g" \
+ -e "s|RLINCLSUB|${RLINCLSUB}|g" \
+ -e "s|RLLIBSSUB|${RLLIBSSUB}|g" \
+ src/GNUmakefile.orig > src/GNUmakefile
diff --git a/shells/sparforte/pkg-descr b/shells/sparforte/pkg-descr
new file mode 100644
index 000000000000..38cb65acf332
--- /dev/null
+++ b/shells/sparforte/pkg-descr
@@ -0,0 +1,22 @@
+SPARforte is an open source programming language for high-integrity tasks,
+efficient development over the project lifecycle and assuming best practices.
+
+Language characteristics:
+* Paradigm: imperative/ procedural, scripting, shell, limited reflexive
+* Typing Disciplines: strong typing, type safety, nominative static with
+ optional limited weak and duck typing
+* Appeared: 2001 (Ken O. Burtch)
+* Source Code: GCC Ada, GCC C, Bourne-Again Shell, GCC Make
+* Influenced by: Ada 95, Bourne Shell, SQL, and minorly BASIC, PHP, Python
+* Usual File Extensions: .sp, .bush
+
+The computer language that the SparForte shell understands is called
+AdaScript. Unlike JavaScript, which has no relation to Java, AdaScript is a
+small subset of the Ada programming language, with additional features
+related to shell commands and databases.
+
+AdaScript is intended to be "upward compatible" with Ada. AdaScript scripts
+should run with little difficulty under Ada, but Ada programs may require
+large changes run under SparForte.
+
+WWW: http://www.sparforte.com
diff --git a/shells/sparforte/pkg-plist b/shells/sparforte/pkg-plist
new file mode 100644
index 000000000000..8875d88a0e99
--- /dev/null
+++ b/shells/sparforte/pkg-plist
@@ -0,0 +1,225 @@
+bin/spar
+man/man1/spar.1.gz
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/8ball.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/8ball.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/add_ramdisk.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/add_ramdisk.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/add_swap.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/add_swap.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/aligncols.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/aligncols.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/aplusb.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/aplusb.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/archive.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/archive.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/arraycat.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/arraycat.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/arrayloop.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/arrayloop.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/arraysum.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/arraysum.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/arrow.wav
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/attention.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/attention.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/audio.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/audio.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/bases.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/bases.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/bats.wav
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/best_shuffle.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/best_shuffle.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/bitarith.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/bitarith.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/bjack.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/bjack.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/bottles.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/bottles.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/calcrms.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/calcrms.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/camel.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/camel.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/cecho.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/cecho.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/charcode.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/charcode.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/chessboard.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/chessboard.png
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/chessboard.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/chomp.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/chomp.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/chomp2.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/chomp2.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/clap.wav
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/combinations.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/combinations.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/count_statements.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/count_statements.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/database.gif
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/database.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/database.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/dateformat.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/dateformat.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/de_RPM.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/de_RPM.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/dispatch.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/dispatch.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/distance.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/distance.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/doors.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/doors.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/dotproduct.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/dotproduct.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/draco_ii.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/draco_ii.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/draco_score.txt
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/drawline.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/drawline.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/dynamic_css.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/dynamic_css.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/dynamic_css2.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/dynamic_css2.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/eliza.data
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/eliza.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/eliza.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/env.cgi
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/env.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/env.tmpl
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/factorial.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/factorial.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/fibonacci.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/fibonacci.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/file_creation.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/file_creation.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/filecopy.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/filecopy.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/files.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/fizzbuzz.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/fizzbuzz.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/game.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/game.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/geometry.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/get_env_data.gif
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/get_env_data.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/get_env_data.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/gray.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/gray.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/gss.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/gss.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/hello.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/hello.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/incstr.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/incstr.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/index.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/int_sort.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/int_sort.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/introsp.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/introsp.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/isxwindows.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/isxwindows.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/json_health_check.cgi
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/json_health_check.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/linear_reg.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/linear_reg.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/loopsbreak.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/loopsbreak.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/main.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/mandel.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/mandel.png
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/mandel.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/mapping.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/mapping.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/menu.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/menu.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/menu2.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/menu2.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/minimal.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/minimal_cgi.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/minimal_cgi.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/minsort.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/minsort.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/moire.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/moire.png
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/moire.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/monte.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/monte.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/monty.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/monty.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/neartime.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/neartime.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/nonsquares.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/nonsquares.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/opengl_first.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/opengl_first.png
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/opengl_first.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/opengl_second.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/opengl_second.png
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/opengl_second.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/pack.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/pack.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/palindrome.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/palindrome.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/perfect.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/perfect.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/pit.wav
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/poetry.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/poetry.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/postgres_csv.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/postgres_csv.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/prime.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/prime.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/printargs.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/printargs.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/quest.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/quest.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/radices.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/radices.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/randdist.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/randdist.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/random.cgi
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/random.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/random.tmpl
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/rle.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/rle.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/rm_ramdisk.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/rm_ramdisk.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/rm_swap.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/rm_swap.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/roman_numerals.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/roman_numerals.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/rot13.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/rot13.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/run.wav
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/scream.wav
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/scripting.c
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/shuffle.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/shuffle.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/sieve.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/sieve.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/sleep.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/sleep.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/stringcase.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/stringcase.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/stripcomment.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/stripcomment.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/timestamp.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/timestamp.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/title.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/title.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/tmpfile.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/tmpfile.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/validate_name.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/validate_name.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/weave.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/weave.png
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/weave.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/web_summary.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/web_summary.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/whattime.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/whattime.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/wumpus.gif
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/wumpus.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/wumpus.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/yorn.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/yorn.sp
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/yuletide.html
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/yuletide.sp