summaryrefslogtreecommitdiffstats
path: root/source/d
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2009-08-26 10:00:38 -0500
committer Eric Hameleers <alien@slackware.com>2018-05-31 22:41:17 +0200
commit5a12e7c134274dba706667107d10d231517d3e05 (patch)
tree55718d5acb710fde798d9f38d0bbaf594ed4b296 /source/d
downloadcurrent-5a12e7c134274dba706667107d10d231517d3e05.tar.gz
current-5a12e7c134274dba706667107d10d231517d3e05.tar.xz
Slackware 13.0slackware-13.0
Wed Aug 26 10:00:38 CDT 2009 Slackware 13.0 x86_64 is released as stable! Thanks to everyone who helped make this release possible -- see the RELEASE_NOTES for the credits. The ISOs are off to the replicator. This time it will be a 6 CD-ROM 32-bit set and a dual-sided 32-bit/64-bit x86/x86_64 DVD. We're taking pre-orders now at store.slackware.com. Please consider picking up a copy to help support the project. Once again, thanks to the entire Slackware community for all the help testing and fixing things and offering suggestions during this development cycle. As always, have fun and enjoy! -P.
Diffstat (limited to 'source/d')
-rwxr-xr-xsource/d/autoconf/autoconf.SlackBuild70
-rw-r--r--source/d/autoconf/doinst.sh13
-rw-r--r--source/d/autoconf/slack-desc19
-rwxr-xr-xsource/d/automake/automake.SlackBuild85
-rw-r--r--source/d/automake/doinst.sh14
-rw-r--r--source/d/automake/slack-desc19
-rwxr-xr-xsource/d/binutils/binutils.SlackBuild129
-rw-r--r--source/d/binutils/release.binutils-2.18.50.0.91028
-rw-r--r--source/d/binutils/slack-desc19
-rwxr-xr-xsource/d/bison/bison.SlackBuild85
-rw-r--r--source/d/bison/slack-desc19
-rwxr-xr-xsource/d/ccache/ccache.SlackBuild68
-rw-r--r--source/d/ccache/slack-desc19
-rwxr-xr-xsource/d/clisp/clisp.SlackBuild192
-rw-r--r--source/d/clisp/slack-desc19
-rwxr-xr-xsource/d/clisp/source.download3
-rwxr-xr-xsource/d/cmake/cmake.SlackBuild96
-rw-r--r--source/d/cmake/slack-desc19
-rwxr-xr-xsource/d/cscope/cscope.SlackBuild71
-rw-r--r--source/d/cscope/slack-desc19
-rwxr-xr-xsource/d/cvs/cvs.SlackBuild89
-rw-r--r--source/d/cvs/slack-desc19
-rw-r--r--source/d/dev86/README8
-rw-r--r--source/d/dev86/dev86-x86_64.noelks.patch19
-rw-r--r--source/d/dev86/dev86-x86_64.patch20
-rwxr-xr-xsource/d/dev86/dev86.SlackBuild98
-rw-r--r--source/d/dev86/dev86.info8
-rw-r--r--source/d/dev86/slack-desc12
-rwxr-xr-xsource/d/distcc/distcc.SlackBuild86
-rw-r--r--source/d/distcc/slack-desc19
-rwxr-xr-xsource/d/doxygen/doxygen.SlackBuild94
-rw-r--r--source/d/doxygen/doxygen.qt4.diff12
-rw-r--r--source/d/doxygen/slack-desc19
-rwxr-xr-xsource/d/flex/flex.SlackBuild115
-rw-r--r--source/d/flex/slack-desc19
-rw-r--r--source/d/gcc/ecj-4.3.jarbin0 -> 1377431 bytes
-rw-r--r--source/d/gcc/gcc-no_fixincludes.diff27
-rwxr-xr-xsource/d/gcc/gcc.SlackBuild546
-rw-r--r--source/d/gcc/slack-desc.gcc19
-rw-r--r--source/d/gcc/slack-desc.gcc-g++19
-rw-r--r--source/d/gcc/slack-desc.gcc-gfortran19
-rw-r--r--source/d/gcc/slack-desc.gcc-gnat19
-rw-r--r--source/d/gcc/slack-desc.gcc-java19
-rw-r--r--source/d/gcc/slack-desc.gcc-objc19
-rwxr-xr-xsource/d/gdb/gdb.SlackBuild115
-rw-r--r--source/d/gdb/slack-desc19
-rw-r--r--source/d/git/git-1.6.4.tar.sign8
-rwxr-xr-xsource/d/git/git.SlackBuild150
-rw-r--r--source/d/git/slack-desc19
-rwxr-xr-xsource/d/gperf/gperf.SlackBuild108
-rw-r--r--source/d/gperf/slack-desc19
-rwxr-xr-xsource/d/guile/guile.SlackBuild107
-rw-r--r--source/d/guile/slack-desc19
-rwxr-xr-xsource/d/indent/indent.SlackBuild110
-rw-r--r--source/d/indent/slack-desc19
-rwxr-xr-xsource/d/intltool/intltool.SlackBuild107
-rw-r--r--source/d/intltool/slack-desc19
-rw-r--r--source/d/kernel-headers/slack-desc19
-rw-r--r--source/d/libtool/doinst.sh18
-rwxr-xr-xsource/d/libtool/libtool.SlackBuild92
-rw-r--r--source/d/libtool/libtool.no.moved.warning.diff32
-rw-r--r--source/d/libtool/slack-desc19
-rwxr-xr-xsource/d/m4/m4.SlackBuild120
-rw-r--r--source/d/m4/slack-desc19
-rwxr-xr-xsource/d/make/make.SlackBuild84
-rw-r--r--source/d/make/slack-desc19
-rwxr-xr-xsource/d/mercurial/mercurial.SlackBuild69
-rw-r--r--source/d/mercurial/slack-desc22
-rwxr-xr-xsource/d/nasm/nasm.SlackBuild83
-rw-r--r--source/d/nasm/slack-desc19
-rwxr-xr-xsource/d/oprofile/oprofile.SlackBuild96
-rw-r--r--source/d/oprofile/slack-desc19
-rwxr-xr-xsource/d/p2c/p2c.SlackBuild122
-rw-r--r--source/d/p2c/p2c.examples.diff15
-rw-r--r--source/d/p2c/p2c_1.21alpha2-2.1.diff320
-rw-r--r--source/d/p2c/p2c_time.diff10
-rw-r--r--source/d/p2c/slack-desc19
-rw-r--r--source/d/perl/doinst.sh13
-rwxr-xr-xsource/d/perl/perl.SlackBuild267
-rw-r--r--source/d/perl/perl.configure.multilib.patch35
-rw-r--r--source/d/perl/slack-desc19
-rw-r--r--source/d/pkg-config/doinst.sh6
-rwxr-xr-xsource/d/pkg-config/pkg-config.SlackBuild98
-rwxr-xr-xsource/d/pkg-config/scripts/pkgconfig.csh6
-rwxr-xr-xsource/d/pkg-config/scripts/pkgconfig.sh7
-rw-r--r--source/d/pkg-config/slack-desc19
-rwxr-xr-xsource/d/pmake/pmake.SlackBuild103
-rw-r--r--source/d/pmake/pmake.strerror.strdup.diff20
-rw-r--r--source/d/pmake/pmake.txt1255
-rw-r--r--source/d/pmake/pmake_1.111-1.diff3501
-rw-r--r--source/d/pmake/slack-desc19
-rwxr-xr-xsource/d/python/python.SlackBuild142
-rw-r--r--source/d/python/python.pure64.diff32
-rw-r--r--source/d/python/python.readline.set_pre_input_hook.diff12
-rw-r--r--source/d/python/python.x86_64.diff173
-rw-r--r--source/d/python/slack-desc19
-rw-r--r--source/d/rcs/rcs-5.7.diff17
-rwxr-xr-xsource/d/rcs/rcs.SlackBuild92
-rw-r--r--source/d/rcs/slack-desc19
-rwxr-xr-xsource/d/ruby/ruby.SlackBuild108
-rw-r--r--source/d/ruby/ruby.x86_64.diff11
-rw-r--r--source/d/ruby/slack-desc19
-rw-r--r--source/d/strace/slack-desc19
-rwxr-xr-xsource/d/strace/strace.SlackBuild80
-rwxr-xr-xsource/d/subversion/get-svn-book.sh9
-rw-r--r--source/d/subversion/slack-desc19
-rwxr-xr-xsource/d/subversion/subversion.SlackBuild161
-rw-r--r--source/d/swig/slack-desc19
-rwxr-xr-xsource/d/swig/swig.SlackBuild103
-rw-r--r--source/d/swig/swig.url1
110 files changed, 11788 insertions, 0 deletions
diff --git a/source/d/autoconf/autoconf.SlackBuild b/source/d/autoconf/autoconf.SlackBuild
new file mode 100755
index 000000000..41dbfe9ea
--- /dev/null
+++ b/source/d/autoconf/autoconf.SlackBuild
@@ -0,0 +1,70 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+
+VERSION=2.63
+ARCH=noarch
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-autoconf
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf autoconf-$VERSION
+tar xvf $CWD/autoconf-$VERSION.tar.?z* || exit 1
+cd autoconf-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+./configure \
+ --prefix=/usr \
+ --infodir=/usr/info \
+ --mandir=/usr/man
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+rm -f $PKG/usr/info/dir
+gzip -9 $PKG/usr/info/*
+gzip -9 $PKG/usr/man/man1/*.?
+
+mkdir -p $PKG/usr/doc/autoconf-$VERSION
+cp -a \
+ AUTHORS BUGS COPYING* NEWS README THANKS TODO \
+ $PKG/usr/doc/autoconf-$VERSION
+
+mkdir -p $PKG/install
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/autoconf-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/autoconf/doinst.sh b/source/d/autoconf/doinst.sh
new file mode 100644
index 000000000..4877094ed
--- /dev/null
+++ b/source/d/autoconf/doinst.sh
@@ -0,0 +1,13 @@
+# Update the /usr/info/dir info-database, so that we will see the new
+# "autoconf" item in info root structure, if we type "info".
+if [ -x /usr/bin/install-info ] ; then
+ install-info --info-dir=/usr/info /usr/info/autoconf.info.gz 2>/dev/null
+elif fgrep "Autoconf" usr/info/dir 1> /dev/null 2> /dev/null ; then
+ GOOD=yes # It seems to be entered in the /usr/info/dir already
+else # add the info to the dir file directly:
+cat << EOF >> usr/info/dir
+
+Miscellaneous
+* Autoconf: (autoconf). Create source code configuration scripts.
+EOF
+fi
diff --git a/source/d/autoconf/slack-desc b/source/d/autoconf/slack-desc
new file mode 100644
index 000000000..4a3b9a9f4
--- /dev/null
+++ b/source/d/autoconf/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+autoconf: autoconf (generate configuration scripts)
+autoconf:
+autoconf: GNU autoconf is an extensible package of m4 macros that produce shell
+autoconf: scripts to automatically configure software source code packages.
+autoconf: These scripts can adapt the packages to many kinds of UNIX-like
+autoconf: systems without manual user intervention. Autoconf creates a
+autoconf: configuration script for a package from a template file that lists the
+autoconf: operating system features that the package can use, in the form of m4
+autoconf: macro calls. You must install the "m4" package to be able to use
+autoconf: autoconf.
+autoconf:
diff --git a/source/d/automake/automake.SlackBuild b/source/d/automake/automake.SlackBuild
new file mode 100755
index 000000000..c105dfeba
--- /dev/null
+++ b/source/d/automake/automake.SlackBuild
@@ -0,0 +1,85 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+
+VERSION=1.10.1
+ARCH=${ARCH:-x86_64} # note: the package is _built_ as 'noarch'
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-automake
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf automake-$VERSION
+tar xvf $CWD/automake-$VERSION.tar.?z* || exit 1
+cd automake-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+./configure \
+ --prefix=/usr \
+ --infodir=/usr/info \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+rm -f $PKG/usr/info/dir
+gzip -9 $PKG/usr/info/*
+
+# Change hard links to symlinks:
+SHORTNAME=$(echo $VERSION | cut -f1,2 -d .)
+( cd $PKG/usr/bin
+ rm -f aclocal
+ ln -sf aclocal-$SHORTNAME aclocal
+ rm -rf automake
+ ln -sf automake-$SHORTNAME automake
+)
+#linkup;
+
+# Create local aclocal dir:
+mkdir -p $PKG/usr/share/aclocal
+touch $PKG/usr/share/aclocal
+
+mkdir -p $PKG/usr/doc/automake-$VERSION
+mv $PKG/usr/share/doc/automake/* $PKG/usr/doc/automake-$VERSION
+cp -a \
+ AUTHORS COPYING* NEWS README* THANKS TODO \
+ $PKG/usr/doc/automake-$VERSION
+rm -rf $PKG/usr/share/doc
+
+mkdir -p $PKG/install
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/automake-$VERSION-noarch-$BUILD.txz
+
diff --git a/source/d/automake/doinst.sh b/source/d/automake/doinst.sh
new file mode 100644
index 000000000..e50590c1c
--- /dev/null
+++ b/source/d/automake/doinst.sh
@@ -0,0 +1,14 @@
+# Update the /usr/info/dir info-database, so that we will see the new
+# "automake" item in info root structure, if we type "info".
+if [ -x /usr/bin/install-info ] ; then
+ install-info --info-dir=/usr/info /usr/info/automake.info.gz 2>/dev/null
+elif fgrep "automake" usr/info/dir 1> /dev/null 2> /dev/null ; then
+ GOOD=yes # It seems to be entered in the /usr/info/dir already
+else # add the info to the dir file directly:
+cat << EOF >> usr/info/dir
+
+GNU admin
+* aclocal: (automake)Invoking aclocal. Generating aclocal.m4
+* automake: (automake). Making Makefile.in's
+EOF
+fi
diff --git a/source/d/automake/slack-desc b/source/d/automake/slack-desc
new file mode 100644
index 000000000..0c6cff62a
--- /dev/null
+++ b/source/d/automake/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+automake: automake (a Makefile generator)
+automake:
+automake: This is Automake, a Makefile generator. It was inspired by the 4.4BSD
+automake: make and include files, but aims to be portable and to conform to the
+automake: GNU standards for Makefile variables and targets. Automake is a Perl
+automake: script. The input files are called Makefile.am. The output files are
+automake: called Makefile.in; they are intended for use with Autoconf. Automake
+automake: requires certain things to be done in your configure.in. You must
+automake: install the "m4" and "perl" packages to be able to use automake.
+automake:
+automake:
diff --git a/source/d/binutils/binutils.SlackBuild b/source/d/binutils/binutils.SlackBuild
new file mode 100755
index 000000000..c83c29215
--- /dev/null
+++ b/source/d/binutils/binutils.SlackBuild
@@ -0,0 +1,129 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+
+VERSION=2.18.50.0.9
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-2}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-binutils
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf binutils-$VERSION
+tar xvf $CWD/binutils-$VERSION.tar.bz2 || exit 1
+cd binutils-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Build for an x86 glibc2-based Linux system:
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --with-docdir=/usr/doc/binutils-$VERSION \
+ --enable-shared \
+ --enable-multilib \
+ --enable-64-bit-bfd \
+ --enable-targets=$ARCH-slackware-linux \
+ --build=$ARCH-slackware-linux \
+ || exit 1
+
+make clean || exit 1
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# "make install" skips this, but binutils.spec doesn't. Sneaky, huh?
+cp -a include/libiberty.h $PKG/usr/include/libiberty.h
+
+# Differentiate between BSD strings and GNU strings
+( cd $PKG/usr/bin ; mv strings strings-GNU )
+( cd $PKG/usr/man/man1 ; mv strings.1 strings-GNU.1 )
+
+# Move ldscripts to /usr/lib${LIBDIRSUFFIX}, and then put symlinks in place
+mv $PKG/usr/${ARCH}-slackware-linux/lib/ldscripts $PKG/usr/lib${LIBDIRSUFFIX}
+( cd $PKG/usr/${ARCH}-slackware-linux
+ ln -s /usr/lib${LIBDIRSUFFIX}/ldscripts lib/ldscripts
+ for FILE in ar as ld nm objcopy objdump ranlib strip ; do
+ if [ -r "/usr/bin/$FILE" ]; then
+ rm -f bin/$FILE
+ ln -s /usr/bin/$FILE bin/$FILE
+ fi
+ done
+)
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Remove some unneeded man pages, and then compress the rest
+rm -f $PKG/usr/man/man1/{dlltool,windres}.1
+( cd $PKG/usr/man
+ find . -type f -exec gzip -9 {} \;
+ for i in $(find . -type l) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+)
+
+# Compress info pages
+rm -f $PKG/usr/info/dir
+gzip -9 $PKG/usr/info/*
+
+mkdir -p $PKG/usr/doc/binutils-$VERSION
+cp \
+ $CWD/release.binutils-* \
+ COPYING* ChangeLog.linux MAI* README* \
+ $PKG/usr/doc/binutils-$VERSION
+chown -R root:root $PKG/usr/doc/binutils-$VERSION
+
+# Add slack-desc:
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/binutils-$VERSION-$ARCH-$BUILD.txz
+
+cat << EOF
+
+#############################
+oprofile links to libbfd so
+be sure to recompile that
+#############################
+
+EOF
diff --git a/source/d/binutils/release.binutils-2.18.50.0.9 b/source/d/binutils/release.binutils-2.18.50.0.9
new file mode 100644
index 000000000..ecae5c083
--- /dev/null
+++ b/source/d/binutils/release.binutils-2.18.50.0.9
@@ -0,0 +1,1028 @@
+This is the beta release of binutils 2.18.50.0.9 for Linux, which is
+based on binutils 2008 0822 in CVS on sourceware.org plus various
+changes. It is purely for Linux.
+
+All relevant patches in patches have been applied to the source tree.
+You can take a look at patches/README to see what have been applied and
+in what order they have been applied.
+
+Starting from the 2.18.50.0.4 release, the x86 assembler no longer
+accepts
+
+ fnstsw %eax
+
+fnstsw stores 16bit into %ax and the upper 16bit of %eax is unchanged.
+Please use
+
+ fnstsw %ax
+
+Starting from the 2.17.50.0.4 release, the default output section LMA
+(load memory address) has changed for allocatable sections from being
+equal to VMA (virtual memory address), to keeping the difference between
+LMA and VMA the same as the previous output section in the same region.
+
+For
+
+.data.init_task : { *(.data.init_task) }
+
+LMA of .data.init_task section is equal to its VMA with the old linker.
+With the new linker, it depends on the previous output section. You
+can use
+
+.data.init_task : AT (ADDR(.data.init_task)) { *(.data.init_task) }
+
+to ensure that LMA of .data.init_task section is always equal to its
+VMA. The linker script in the older 2.6 x86-64 kernel depends on the
+old behavior. You can add AT (ADDR(section)) to force LMA of
+.data.init_task section equal to its VMA. It will work with both old
+and new linkers. The x86-64 kernel linker script in kernel 2.6.13 and
+above is OK.
+
+The new x86_64 assembler no longer accepts
+
+ monitor %eax,%ecx,%edx
+
+You should use
+
+ monitor %rax,%ecx,%edx
+
+or
+ monitor
+
+which works with both old and new x86_64 assemblers. They should
+generate the same opcode.
+
+The new i386/x86_64 assemblers no longer accept instructions for moving
+between a segment register and a 32bit memory location, i.e.,
+
+ movl (%eax),%ds
+ movl %ds,(%eax)
+
+To generate instructions for moving between a segment register and a
+16bit memory location without the 16bit operand size prefix, 0x66,
+
+ mov (%eax),%ds
+ mov %ds,(%eax)
+
+should be used. It will work with both new and old assemblers. The
+assembler starting from 2.16.90.0.1 will also support
+
+ movw (%eax),%ds
+ movw %ds,(%eax)
+
+without the 0x66 prefix. Patches for 2.4 and 2.6 Linux kernels are
+available at
+
+http://www.kernel.org/pub/linux/devel/binutils/linux-2.4-seg-4.patch
+http://www.kernel.org/pub/linux/devel/binutils/linux-2.6-seg-5.patch
+
+The ia64 assembler is now defaulted to tune for Itanium 2 processors.
+To build a kernel for Itanium 1 processors, you will need to add
+
+ifeq ($(CONFIG_ITANIUM),y)
+ CFLAGS += -Wa,-mtune=itanium1
+ AFLAGS += -Wa,-mtune=itanium1
+endif
+
+to arch/ia64/Makefile in your kernel source tree.
+
+Please report any bugs related to binutils 2.18.50.0.9 to
+hjl.tools@gmail.com
+
+and
+
+http://www.sourceware.org/bugzilla/
+
+Changes from binutils 2.18.50.0.8:
+
+1. Update from binutils 2008 0822.
+2. Add Intel AES+AVX support.
+3. Add syscall and sysret for Cpu64 in x86 assembler.
+4. Fix i386/x86-64 TLS 2 support.
+5. Disable gas generated debug info when compiler generates it. PR
+gas/6656.
+6. Fix an assembler .set bug. PR 6848.
+7. Remove 2MB section gap from linker output. PR ld/6833.
+8. Fix stab warnings caused linker errors. PR 6478.
+9. Remove AVX registers from DWARF register map.
+10. Fix linking Linux .o against FreeBSD .so. PR 4424.
+11. Fix objcopy --extract-symbol. PR 6774.
+12. Improve gold.
+13. Improve mips GOT and non-PIC support.
+14. Fix various arms bugs.
+15. Fix various bfin bugs.
+16. Fix various frv bugs.
+17. Fix various h8300 bugs.
+18. Fix various ppc bugs.
+19. Fix various spu bugs.
+20. Fix various xtensa bugs.
+
+Changes from binutils 2.18.50.0.7:
+
+1. Update from binutils 2008 0709.
+2. Allow vmovd with 64bit operand in x86 assembler.
+3. Improve -msse-check in x86 assembler.
+4. Fix an AVX assembler bug in Intel syntax. PR 6517.
+5. Improve error message in Intel syntax for x86 assembler. PR 6518.
+6. Add the ".sse_check" directive to x86 assembler.
+7. Improve gold.
+8. Improve objcopy/strip. PR 2995/6473.
+9. Improve objdump -g. PR 6483.
+10. Improve ld --sort-common. PR 6430.
+11. Add multi-GOT support for m68k.
+12. Fix various arm bugs.
+13. Fix various avr bugs.
+14. Fix various hppa bugs.
+15. Fix various m68k bugs.
+16. Fix various mips bugs.
+17. Fix various mmix bugs.
+18. Fix various ppc bugs.
+19. Fix various spu bugs.
+20. Fix various xtensa bugs.
+
+Changes from binutils 2.18.50.0.6:
+
+1. Update from binutils 2008 0502.
+2. Add Intel EPT and MOVBE support.
+3. Correct Intel FMA operand order.
+4. Change Intel CLMUL to Intel PCLMUL.
+5. Add -msse-check to x86 assembler to warn SSE instruction where
+there is AVX equivalent.
+6. Provide backward compatibility for ELF object files with more
+than 64K sections generated by the older binutils. PR 6412.
+7. Improve FDPIC support.
+8. Add -wL switch to readelf to dump decoded contents of .debug_line.
+9. Add -ag switch to assembler show general information in listings.
+10. Improve objcopy symbol filtering performance. PR 6034.
+12. Correct think archive support.
+13. Improve ELF/Sparc support.
+14. Fix various mips bugs.
+15. Fix various sh bugs.
+16. Fix various spu bugs.
+
+Changes from binutils 2.18.50.0.5:
+
+1. Update from binutils 2008 0403.
+2. Add Intel AES, CLMUL, AVX/FMA support.
+3. Improve error handling in x86 linker for undefined hidden/internal
+symbols when building a shared object. PR ld/5789/5943.
+4. Add a new ELF linker, gold.
+5. Add think archive support.
+6. Fix various arm bugs.
+7. Fix various avr bugs.
+8. Fix various bfin bugs.
+9. Fix various hppa bugs.
+10. Fix various m68k bugs.
+11. Fix various mips bugs.
+12. Fix various s390 bugs.
+13. Fix various spu bugs.
+
+Changes from binutils 2.18.50.0.4:
+
+1. Update from binutils 2008 0314.
+2. Add Intel XSAVE new instruction support.
+3. Fix an ia64 linker crash on unsupported TLS relocations. PR 5913.
+4. Fix x86 assembler for gcc 4.3.
+5. Fix a linker memory corruption. PR 5788.
+6. Correct linker 64k section support. PR 5900.
+7. Correct hidden, weak and undefined symbol handling. PR 5789.
+8. Fix linker for 64bit targets on 32bit hosts. PR 5303/5755.
+9. Fix assembler crash with .set on register. PR 5543.
+10. Fix a typo in linker. PR 5765.
+11. Fix "string -O" infinite loop. PR 5713.
+12. Fix .exitm in assembler. PR 5895.
+13. Fix a linker crash. PR 5761.
+14. Fix various arm bugs.
+15. Fix various bfin bugs.
+16. Fix various h8 bugs.
+17. Fix various ppc bugs.
+18. Fix various spu bugs.
+19. Fix various xtensa bugs.
+
+Changes from binutils 2.18.50.0.3:
+
+1. Update from binutils 2008 0208.
+2. Update readelf/objdump to dump DWARF frame info with machine
+register names on x86.
+3. Optimize x86-64 assembler to omit REX.W prefix when it is ignored.
+4. Add operand size check to x86 assembler. PR 5534.
+5. Add -march=CPU[,+EXTENSION...], -mmnemonic, -msyntax, -mindex-reg,
+-mnaked-reg and -mold-gcc options to x86 assembler.
+6. Add -Mintel-mnemonic/-Mintel-mnemonic options to x86 disassembler.
+7. Update x86 disassembler to handle r12 like rsp in memory operand.
+8. Update x86 disassembler to properly support movntq, movntsd,
+movntss, movntps, movntpd, movntdq and movntdqa.
+9. Update x86 disassembler to support AMD nops.
+10. Update x86 disassembler for cvtsi2ss/cvtsi2sd.
+11. Fix x86 assembler to support new instructions on 2 different archs.
+12. Update linker not to generate incorrect debug info for 64bit target
+on 32bit host. PR 5303.
+13. Update ia64 assembler to support new registers in Itanium 9100
+series.
+14. Fix strip on PT_NOTE segment. PR 5488.
+15. Fix strip/objcopy on HPUX/ia64. PR 5449.
+16. Fix strip/objcopy for EFI. PR 5307.
+17. Remove duplicated sections from objdump for COFF/PE. PR 5299.
+18. Fix a linker corruption. PR 5522.
+19. Fix mingw for 64bit targets.
+20. Fix various arm bugs.
+21. Fix various fr30 bugs.
+22. Fix various frv bugs.
+23. Fix various hppa bugs.
+24. Fix various m10300 bugs.
+25. Fix various m32r bugs.
+26. Fix various m68k bugs.
+27. Fix various mips bugs.
+28. Fix various ppc bugs.
+29. Fix various spu bugs.
+30. Fix various xtensa bugs.
+
+Changes from binutils 2.18.50.0.2:
+
+1. Update from binutils 2007 1102.
+2. Support link in Linux object files on FreeBSD. PR 4424.
+3. Add Intel SMX instruction support to x86 assembler/diasassembler.
+4. Fix an objcopy regression where we failed to adjust section
+flags. PR 5233.
+5. Improve irregular instruction support in x86 assembler.
+6. Improve support for instructions with restricted operands in x86
+diasassembler.
+7. Fix an x86-64 assembler bug where extra REX byte generated in Intel
+mode. PR 5109.
+8. Update .pushsection directive support in assembler. PRs 5221.
+9. Improve linker -z relro support.
+10. Add support for generating wide character strings in assembler.
+11. Improve relocation process for DWARF debug info in readelf.
+12. Add a linker warning for invalid merge section with unterminated
+strings.
+13. Improve linker support of DWARF debug info for discarded sections
+during linker-relaxation.
+14. Improve fabs detection. PR 5147.
+15. Improve non-bash support. PR 5215.
+16. Improve support for non-gcc compiler. PRs 5146/5160.
+17. Improve error messages. PRs 5172/5173/5161/5158/5155/
+5121-5126/5129/5131-5137/5143/5142/5078/5089/5090.
+18. Fix various cr16 bugs.
+19. Fix various m10300 bugs.
+20. Fix various mips bugs.
+21. Fix various ppc bugs.
+22. Fix various xtensa bugs.
+
+Changes from binutils 2.18.50.0.1:
+
+1. Update from binutils 2007 1001.
+2. Speed up hash table lookup in linker.
+3. Add -c/--archive-index option to readelf.
+4. Fix an readelf crash. PR 5011.
+5. Fix an x86 assembler Intel mode bug. PR 5080.
+6. Add EIP support in x86 assembler.
+7. Add fake index registers, EIZ/RIZ, to x86 assembler/disassembler.
+8. Improve x86 assembler error message for truncated values. PR 5026.
+9. Remove a COFF assertion in COFF assembler. PR 5035.
+10. Add AMD SSE5 support to x86 assembler/disassembler.
+11. Fix x86 assembler for extrq/insertq in Intel mode.
+12. Fix x86 disassembler for invalid opcodes in 64bit. PR 5072.
+13. Fix auto-import in PE-COFF linker. PR 4844.
+14. Correct -z now in ELF linker.
+15. Fix a --build-id linker crash. PR 5025.
+16. Improved x86 assembler/disassembler infrastructure for new
+instruction support.
+17. Fix various m68k bugs.
+18. Fix various ppc bugs.
+19. Fix various spu bugs.
+
+Changes from binutils 2.17.50.0.18:
+
+1. Update from binutils 2007 0908.
+2. Fix an ELF linker for SHT_NOBITS sections. PR 2864/5006.
+3. Improve TLS transition check in i386 and x86-64 linkers.
+4. Fix a GD->LE/LD->LE TLS transition bug in i386 and x86-64 linkers.
+PR 4918.
+5. Update ELF linker to dump segment map when a section can't be allocated
+in segment. PR 4909.
+6. Clean up x86 disassembler to remove fixups and make it more
+table driven.
+7. Fix x86 disassember for SSE instructions in Intel mode. PR 4834.
+8. Properly handle bss segments in ELF linker.
+9. Add --string-dump to readelf.
+10. Fix objcopy -R .debug_* --only-keep-debug regression. PR 4888.
+11. Change x86 assembler to follow SVME specification.
+12. Fix x86 assembler for cmpxchg8b, pextrb and pinsrb in Intel mode.
+13. Update x86 assembler to better handle expressions with @GOT suffix.
+PR 4079.
+14. Properly handle section alignment >= 128 byte for PECOFF.
+15. Fix an ELF linker --build-id option crash. PR 4923.
+16. Fix binutils build on HP-UX. PR 4875.
+17. Fix a regression of the a.out linker -N option. PR 4515.
+18. Update x86 disassembler for invlpg, fxsave, fxrstor, ldmxcsr and
+stmxcsr in Intel mode.
+19. Fix x86 assembler for SSE4 instructions in Intel mode.
+20. Fix various arm bugs.
+21. Fix various mips bugs.
+22. Fix various ppc bugs.
+23. Fix various spu bugs.
+24. Fix various xtensa bugs.
+
+Changes from binutils 2.17.50.0.17:
+
+1. Update from binutils 2007 0731.
+2. Switching from GPLv2 to GPLv3.
+3. Add a new ELF linker option, --build-id, to generate a unique
+per-binary identifier embedded in a note section.
+4. Remove COFF/x86-64 from PE-COFF/x86-64.
+5. Fix a "nm -l" crash on DWARF info. PR 4797.
+6. Match symbol type when creating symbol aliase in ELF shared library.
+7. Fix addr2line on relocatable linux kernel. PR 4756.
+8. Change disassembler to print addend as signed.
+9. Support section alignment from 128 to 8192 bytes for PE-COFF.
+10. Add attribute section to ELF linker.
+11. Fix ELF linker to meet gABI alignment requirement. PR 4701.
+12. Add support for reading in debug information via a .gnu_debuglink
+section.
+13. Fix string merge for ia64 linker. PR 4590.
+14. Add --common to size to display total size for *COM* syms.
+15. Fix "strip --strip-unneeded" on relocatable files. PR 4716.
+16. Fix "objcopy/strip --only-keep-debug" for SHT_NOTE sections.
+17. Fix objdump -S with unit-at-a-time.
+18. Properly handle "-shared -pie" in linker. PR 4409.
+19. Fix x86 disassembler in Intel mode for various SIMD instruction.
+PRs 4667/4834.
+20. Update x86-64 assembler to long nop sequence by default.
+21. Fix --32 for x86-64 mingw assembler.
+22. Fix a memory corruption in assembler. PR 4722.
+22. Properly support 64bit PE-COFF on hosts where long isn't 64bit.
+23. Add #line in generated linker source files.
+24. Fix linker crash on SIZEOF. PR 4782.
+27. Add CR16 support.
+28. Add windmc tool for Windows.
+29. Generate x86 instruction/register definitions from ascii tables.
+30. Fix strip for Solaris. PR 4712.
+31. Fix various mips bugs.
+32. Fix various ppc bugs.
+33. Fix various spu bugs.
+34. Fix various xtensa bugs.
+
+Changes from binutils 2.17.50.0.16:
+
+1. Update from binutils 2007 0615.
+2. Preserve section alignment for copy relocation. PR 4504.
+3. Properly fix regression with objcopy --only-keep-debug. PR 4479.
+4. Fix ELF eh frame handling. PR 4497.
+5. Fix ia64 string merge. PR 4590.
+5. Don't use PE target on EFI files nor EFI target on PE files.
+6. Speed up linker with many input files.
+7. Support cross compiling windres. PR 2737.
+8. Fix various windres bugs.
+9. Fix various arms bugs.
+10. Fix various m68k bugs.
+11. Fix various mips bugs.
+12. Fix various ppc bugs.
+13. Fix various sparc bugs.
+14. Fix various spu bugs.
+15. Fix various xtensa bugs.
+
+Changes from binutils 2.17.50.0.15:
+
+1. Update from binutils 2007 0511.
+2. Fix objcopy --only-keep-debug and linker multiple BSS sections handling.
+PR 4479.
+3. Fix "readelf -s -D" for gnu hash. PR 4476.
+4. Fix ia64 linker crash with --unresolved-symbols=ignore-all. PR 4409.
+5. Improve crc32 support in x86 assembler/dissassembler.
+6. Improve displacement handling in x86 dissassembler. PR 4430.
+7. Correct PC relative displacement handling in x86-64 dissassembler for
+Intel mode. PR 4429.
+8. Fix various PPC bugs.
+9. Fix various SPU bugs.
+10. Fix various ARM bugs.
+11. Fix various m68k bugs.
+12. Fix various xtensa bugs.
+
+Changes from binutils 2.17.50.0.14:
+
+1. Update from binutils 2007 0418.
+2. Support Intel SSE4 instructions.
+3. Fix linker --fatal-warnings for --warn-shared-textrel. PR 4304.
+4. Improve linker error message to identify linker script error
+location. PR 4090.
+5. Fix objcopy to allow removing all sections. PR 4348.
+6. Don't print addresses of 32-bit targets as 64-bit values on 64bit
+host. PR 4292.
+7. Improve checking for corrupted input files. PR 4110.
+8. Improve alpha linker performance.
+9. Add a new linker option, -l:foo.
+10. Fix a PPC linker bug. PR 4267.
+11. Misc vxworks bug fixes.
+12. Misc SH bug fixes.
+13. Misc SPU bug fixes.
+14. Misc ARM bug fixes.
+15. Misc MIPS bug fixes.
+16. Misc xtensa bug fixes.
+
+Changes from binutils 2.17.50.0.13:
+
+1. Update from binutils 2007 0322.
+2. Fix >16byte nop padding regression in x86 assembler.
+3. Fix x86-64 disassembler for xchg. PR 4218.
+4. Optimize opcode for x86-64 xchg.
+5. Allow register operand with x86 nop.
+6. Properly handle holes between sections for PE-COFF. PR 4210.
+7. Print more PE-COFF info for objdump -p.
+8. Report missing matching LO16 relocation for HI16 relocation in mips
+linker.
+9. Use PC-relative relocation for Win64.
+10. Fix strip for Solaris. PR 3535.
+11. Fix a C++ demangler crash.
+12. Some m32c update.
+13. Fix misc ARM bugs.
+
+Changes from binutils 2.17.50.0.12:
+
+1. Update from binutils 2007 0315.
+2. Add EFI/x86-64 support.
+3. Fix ELF linker for relocation against STN_UNDEF. PR 3958.
+4. Fix ELF linker for SHT_NOBITS section whose VMA > page size. PR 4144.
+5. Make assembler and disassembler consistent for "test %eax,%ebx". PR
+4027.
+6. Fix i386 32bit address wraparound. PR 3966.
+7. Allow Linux/i386 linker to read FreeBSD/i386 object files.
+8. Fix ELF linker crash upon use of .gnu.warning.<symbol> sections. PR
+3953.
+9. Fix ELF linker to issue an error on bad section in segment. PR 4007.
+10. Support enabling both x86_64-mingw32 and i386-mingw32. PR 3945.
+11. Fix assembler to stabilize .gcc_except_table relaxation. PR 4029.
+12. Fix a MIPS linker crash. PR 3852.
+13. Fix readelf for h8300-elf. PR 3800.
+14. Fix strip for Solaris. PR 3535.
+15. Misc xtensa bug fixes.
+16. Misc PPC bug fixes.
+17. Misc SPU bug fixes.
+18. Add support for Toshiba MeP.
+
+Changes from binutils 2.17.50.0.11:
+
+1. Update from binutils 2007 0128.
+2. Remove duplicate code in x86 assembler.
+3. Fix 32bit and 64bit HPPA/ELF.
+
+Changes from binutils 2.17.50.0.10:
+
+1. Update from binutils 2007 0125.
+2. Support environment variables, LD_SYMBOLIC for -Bsymbolic and
+LD_SYMBOLIC_FUNCTIONS for -Bsymbolic-functions.
+3. Build binutils rpm with LD_SYMBOLIC_FUNCTIONS=1 and reduce PLT
+relocations in libfd.so by 84%.
+4. Enable sharable sections only for ia32, x86-64 and ia64.
+5. Properly handle PT_GNU_RELRO segment for objcopy.
+
+Changes from binutils 2.17.50.0.9:
+
+1. Update from binutils 2007 0122.
+2. Implement sharable section proposal for ia32, x86-64 and ia64:
+
+http://groups-beta.google.com/group/generic-abi
+
+3. Implement linker enhancement, -Bsymbolic-functions,
+--dynamic-list-cpp-new and --dynamic-list-data. PR 3831.
+4. Implement new linker switch, --default-script=FILE/-dT FILE.
+5. Check EI_OSABI when reading ELF files. PR 3826.
+6. Fix x86 assembler error message. PR 3830.
+7. Fix a bug in ld testsuite. PR 1283.
+8. Don't include archive64.o for 32bit target. PR 3631.
+9. Support -z max-page-size and -z common-page-size in user provided
+linker script.
+10. Fix 32bit library support for GNU/kFreeBSD/x86-64. PR 3843.
+11. Fix some bugs in Score assembler. PR 3871.
+12. Fix various bugs in ARM assembler. PR 3707 and more.
+13. Add Fido support.
+
+Changes from binutils 2.17.50.0.8:
+
+1. Update from binutils 2007 0103.
+2. Fix --wrap linker bug.
+3. Improve handling ELF binaries generated by foreign ELF linkers.
+4. Various ELF M68K bug fixes.
+5. Score bug fixes.
+6. Don't read past end of archive elements. PR 3704.
+7. Improve .eh_frame_hdr section handling.
+8. Fix symbol visibility with comdat/linkonce sections in ELF linker.
+PR 3666.
+9. Fix 4 operand instruction handling in x86 assembler.
+10. Properly check the 4th operand in x86 assembler. PR 3712.
+11. Fix .cfi_endproc handling in assembler. PR 3607.
+12. Various ARM bug fixes.
+13. Various PE linker fixes.
+14. Improve x86 dissassembler for cmpxchg16b.
+
+Changes from binutils 2.17.50.0.7:
+
+1. Update from binutils 2006 1201.
+2. Fix "objcopy --only-keep-debug" crash. PR 3609.
+3. Fix various ARM ELF bugs.
+4. Fix various xtensa bugs.
+5. Update x86 disassembler.
+
+Changes from binutils 2.17.50.0.6:
+
+1. Update from binutils 2006 1127.
+2. Properly set ELF output segment address when the first section in
+input segment is removed.
+3. Better merging of CIEs in linker .eh_frame optimizations.
+4. Support .cfi_personality and .cfi_lsda assembler directives.
+5. Fix an ARM linker crash. PR 3532.
+6. Fix various PPC64 ELF bugs.
+7. Mark discarded debug info more thoroughly in linker output.
+8. Fix various MIPS ELF bugs.
+9. Fix readelf to display program interpreter path > 64 chars. PR 3384.
+10. Add support for PowerPC SPU.
+11. Properly handle cloned symbols used in relocations in assembler. PR
+3469.
+12. Update opcode for POPCNT in amdfam10 architecture.
+
+Changes from binutils 2.17.50.0.5:
+
+1. Update from binutils 2006 1020.
+2. Don't make debug symbol dynamic. PR 3290.
+3. Don't page align empty SHF_ALLOC sections, which leads to very large
+executables. PR 3314.
+4. Use a different section index for section relative symbols against
+removed empty sections.
+5. Fix a few ELF EH frame handling bugs.
+6. Don't ignore relocation overflow on branches to undefweaks for
+x86-64. PR 3283.
+7. Rename MNI to SSSE3.
+8. Properly append symbol list for --dynamic-list.
+lists.
+9. Various ARM ELF fixes.
+10. Correct 64bit library search path for Linux/x86 linker with 64bit
+support.
+11. Fix ELF linker to copy OS/PROC specific flags from input section to
+output section.
+12. Fix DW_FORM_ref_addr handling in linker dwarf reader. PR 3191.
+13. Fix ELF indirect symbol handling. PR 3351.
+14. Fix PT_GNU_RELRO segment handling for SHF_TLS sections. Don't add
+PT_GNU_RELRO segment when there are no relro sections. PR 3281.
+15. Various MIPS ELF fixes.
+16. Various Sparc ELF fixes.
+17. Various Xtensa ELF fixes.
+
+Changes from binutils 2.17.50.0.4:
+
+1. Update from binutils 2006 0927.
+2. Fix linker regressions of section address and section relative symbol
+with empty output section. PR 3223/3267.
+3. Fix "strings -T". PR 3257.
+4. Fix "objcopy --only-keep-debug". PR 3262.
+5. Add Intell iwmmxt2 support.
+6. Fix an x86 disassembler bug. PR 3100.
+
+Changes from binutils 2.17.50.0.3:
+
+1. Update from binutils 2006 0924.
+2. Speed up linker on .o files with debug info on linkonce sections.
+PR 3111.
+3. Added x86-64 PE support.
+4. Fix objcopy/strip on .o files with section groups. PR 3181.
+5. Fix "ld --hash-style=gnu" crash with gcc 3.4.6. PR 3197.
+6. Fix "strip --strip-debug" on .o files generated with
+"gcc -feliminate-dwarf2-dups". PR 3186.
+7. Fix "ld -r" on .o files generated with "gcc -feliminate-dwarf2-dups".
+PR 3249.
+8. Add --dynamic-list to linker to make global symbols dynamic.
+9. Fix magic number for EFI ia64. PR 3171.
+10. Remove PT_NULL segment for "ld -z relro". PR 3015.
+11. Make objcopy to perserve the file formats in archive elements.
+PR 3110.
+12. Optimize x86-64 assembler and fix disassembler for
+"add32 mov xx,$eax". PR 3235.
+13. Improve linker diagnostics. PR 3107.
+14. Fix "ld --sort-section name". PR 3009.
+15. Updated an x86 disassembler bug. PR 3000.
+16. Various updates for PPC, ARM, MIPS, SH, Xtensa.
+17. Added Score support.
+
+Changes from binutils 2.17.50.0.2:
+
+1. Update from binutils 2006 0715.
+2. Add --hash-style to ELF linker with DT_GNU_HASH and SHT_GNU_HASH.
+3. Fix a visibility bug in ELF linker (PR 2884).
+4. Properly fix the i386 TLS linker bug (PR 2513).
+5. Add assembler and dissassembler support for Pentium Pro nops.
+6. Optimize x86 nops for Pentium Pro and above.
+7. Add -march=/-mtune= to x86 assembler.
+8. Fix an ELF linker with TLS common symbols.
+9. Improve program header allocation in ELF linker.
+10. Improve MIPS, M68K and ARM support.
+11. Fix an ELF linker crash when reporting alignment change (PR 2735).
+12. Remove unused ELF section symbols (PR 2723).
+13. Add --localize-hidden to objcopy.
+14. Add AMD SSE4a and ABM new instruction support.
+15. Properly handle illegal x86 instructions in group 11 (PR 2829).
+16. Add "-z max-page-size=" and "-z common-page-size=" to ELF linker.
+17. Fix objcopy for .tbss sections.
+
+Changes from binutils 2.17.50.0.1:
+
+1. Update from binutils 2006 0526.
+2. Change the x86-64 maximum page size to 2MB.
+3. Support --enable-targets=all for 64bit target and host (PR 1485).
+4. Properly update CIE/FDE length and align section for .eh_frame
+section (PR 2655/2657).
+5. Properly handle removed ELF section symbols.
+6. Fix an ELF linker regression introduced on 2006-04-21.
+7. Fix an segfault in PPC ELF linker (PR 2658).
+8. Speed up the ELF linker by caching the result of kept section check.
+9. Properly create stabs section for ELF.
+10. Preserve ELF program header when copying ELF files.
+11. Properly handle ELF SHN_LOPROC/SHN_HIOS when checking section
+index (PR 2607).
+12. Misc mips updates.
+13. Misc arm updates.
+14. Misc xtensa updates.
+15. Fix an alpha assembler warning (PR 2598).
+16. Fix assembler buffer overflow.
+17. Properly disassemble sgdt/sidt for x86-64.
+
+Changes from binutils 2.16.91.0.7:
+
+1. Update from binutils 2006 0427.
+2. Fix an objcopy regression (PR 2593).
+3. Reduce ar memory usage (PR 2467).
+4. Allow application specific ELF sections (PR 2537).
+5. Fix an i386 TLS linker bug (PR 2513).
+6. Speed up ia64 linker by 1300X in some cases (PR 2442).
+7. Check illegal immediate register operand in i386 assembler (PR
+2533).
+8. Fix a strings bug (PR 2584).
+9. Better handle corrupted ELF files (PR 2257).
+10. Fix a MIPS linker bug (PR 2267).
+
+Changes from binutils 2.16.91.0.6:
+
+1. Update from binutils 2006 0317.
+2. Support Intel Merom New Instructions in assembler/disassembler.
+3. Support Intel new instructions in Montecito.
+4. Fix linker "--as-needed" (PR 2434).
+5. Fix linker "-s" regression (PR 2462).
+6. Fix REP prefix for string instructions in x86 disassembler
+(PR 2428).
+7. Fix the weak undefined symbols in PIE (PR 2218).
+8. Fix 2 DWARF reader bugs (PRs 2443, 2338).
+9. Improve ELF linker error message (PR 2322).
+10. Avoid abort with dynamic symbols in >64K sections (PR 2411).
+11. Handle mismatched symbol types for executables (PR 2404).
+12. Avoid a linker linkonce regression (PR 2342).
+
+Changes from binutils 2.16.91.0.5:
+
+1. Update from binutils 2006 0212.
+2. Correct Linux linker search order for DT_NEEDED entries (PR 2290).
+3. Fix the x86-64 disassembler for control/debug register moves.
+4. Properly handle ELF strip/objcopy with unmodified program header
+(PR 2258).
+5. Improve ELF linker error handling when there are not enough room for
+program headers (PR 2322).
+6. Properly handle weak undefined symbols in PIE (PR 2218).
+7. Support new i386/x86-64 TLS relocations.
+8. Fix addr2line for linux kernel (PR 2096).
+9. Fix an assembler memory leak with --statistics.
+10. Avoid an ia64 assembler regression (PR 2117).
+
+Changes from binutils 2.16.91.0.4:
+
+1. Update from binutils 2005 1219.
+2. Fix a MIPS linker regression (PR 1932).
+3. Fix an objcopy bug for ia64 (PR 1991).
+4. Fix a linker crash on bad input (PR 2008).
+5. Fix 64bit monitor and mwait (PR 1874).
+
+Changes from binutils 2.16.91.0.3:
+
+1. Update from binutils 2005 1111.
+2. Fix ELF orphan section handling (PR 1467)
+3. Fix ELF section attribute handleing (PR 1487).
+4. Fix IA64 unwind info dump for relocatable files. (PR 1436).
+5. Add DWARF info dump to objdump.
+6. Fix SHF_LINK_ORDER handling (PR 1321).
+7. Don't allow "ld --just-symbols" on DSO (PR 1263).
+8. Fix a "ld -u" crash on TLS symbol (PR 1301).
+9. Fix an IA64 linker crash (PR 1247).
+10. Fix a MIPS linker bug (PR 1150).
+11. Fix a M68K linker bug (PR 1775).
+12. Fix an ELF symbol versioning linker bug (PR 1540).
+13. Improve linker error handling (PR 1208).
+14. Add new SPARC processors to SunOS for objcopy (PR 1472).
+15. Add "@file" to read options from a file.
+16. Add assembler weakref support.
+
+Changes from binutils 2.16.91.0.2:
+
+1. Update from binutils 2005 0821.
+2. Support x86-64 medium model.
+3. Fix "objdump -S --adjust-vma=xxx" (PR 1179).
+4. Reduce R_IA64_NONE relocations from R_IA64_LDXMOV relaxation.
+5. Fix x86 linker regression for dosemu.
+6. Add "readelf -t/--section-details" to display section details.
+7. Fix "as -al=file" regression (PR 1118).
+
+Changes from binutils 2.16.91.0.1:
+
+1. Update from binutils 2005 0720.
+2. Add Intel VMX support.
+3. Add AMD SVME support.
+4. Add x86-64 new relocations for medium model.
+5. Fix a PIE regression (PR 975).
+6. Fix an x86_64 signed 32bit displacement regression.
+7. Fix PPC PLT (PR 1004).
+8. Improve empty section removal.
+
+Changes from binutils 2.16.90.0.3:
+
+1. Update from binutils 2005 0622.
+2. Fix a linker versioning bug exposed by gcc 4 (PR 1022/1023/1025).
+3. Optimize ia64 br->brl relaxation (PR 834).
+4. Improve linker empty section removal.
+5. Fix DWARF 2 line number reporting (PR 990).
+6. Fix DWARF 2 line number reporting regression on assembly file (PR
+1000).
+
+Changes from binutils 2.16.90.0.2:
+
+1. Update from binutils 2005 0510.
+2. Update ia64 assembler to support comdat group section generated by
+gcc 4 (PR 940).
+3. Fix a linker crash on bad input (PR 939).
+4. Fix a sh64 assembler regression (PR 936).
+5. Support linker script on executable (PR 882).
+6. Fix the linker -pie regression (PR 878).
+7. Fix an x86_64 disassembler bug (PR 843).
+8. Fix a PPC linker regression.
+9. Misc speed up.
+
+Changes from binutils 2.16.90.0.1:
+
+1. Update from binutils 2005 0429.
+2. Fix an ELF linker regression (PR 815).
+3. Fix an empty section removal related bug.
+4. Fix an ia64 linker regression (PR 855).
+5. Don't allow local symbol to be equated common/undefined symbols (PR
+857).
+6. Fix the ia64 linker to handle local dynamic symbol error reporting.
+7. Make non-debugging reference to discarded section an error (PR 858).
+8. Support Sparc/TLS.
+9. Support rpm build with newer rpm.
+10. Fix an alpha linker regression.
+11. Fix the non-gcc build regression.
+
+Changes from binutils 2.15.94.0.2.2:
+
+1. Update from binutils 2005 0408.
+2. The i386/x86_64 assemblers no longer accept instructions for moving
+between a segment register and a 32bit memory location.
+3. The x86_64 assembler now allows movq between a segment register and
+a 64bit general purpose register.
+4. 20x Speed up linker for input files with >64K sections.
+5. Properly report ia64 linker relaxation failures.
+6. Support tuning ia64 assembler for Itanium 2 processors.
+7. Linker will remove empty unused output sections.
+8. Add -N to readelf to display full section names.
+9. Fix the ia64 linker to support linkonce text sections without unwind
+sections.
+10. More unwind directive checkings in the ia64 assembler.
+11. Speed up linker with wildcard handling.
+12. Fix readelf to properly dump .debug_ranges and .debug_loc sections.
+
+Changes from binutils 2.15.94.0.2:
+
+1. Fix greater than 64K section support in linker.
+2. Properly handle i386 and x86_64 protected symbols in linker.
+3. Fix readelf for LEB128 on 64bit hosts.
+4. Speed up readelf for section group process.
+5. Include ia64 texinfo pages.
+6. Change ia64 assembler to check hint.b for Montecito.
+7. Improve relaxation failure report in ia64 linker.
+8. Fix ia64 linker to allow relax backward branch in the same section.
+
+Changes from binutils 2.15.94.0.1:
+
+1. Update from binutils 2004 1220.
+2. Fix strip for TLS symbol references.
+
+Changes from binutils 2.15.92.0.2:
+
+1. Update from binutils 2004 1121.
+2. Put ia64 .ctors/.dtors sections next to small data section for
+Intel ia64 compiler.
+3. Fix -Bdynamic/-Bstatic handling for linker script.
+4. Provide more information on relocation overflow.
+5. Add --sort-section to linker.
+6. Support icc 8.1 unwind info in readelf.
+7. Fix the infinite loop bug on bad input in the ia64 assembler.
+8. Fix ia64 SECREL relocation in linker.
+9. Fix a section group memory leak in readelf.
+
+Changes from binutils 2.15.91.0.2:
+
+1. Update from binutils 2004 0927.
+2. Work around a section header bug in Intel ia64 compiler.
+3. Fix an unwind directive bug in the ia64 assembler.
+4. Fix various PPC bugs.
+5. Update ARM support.
+6. Fix an x86-64 linker warning while building Linux kernel.
+
+Changes from binutils 2.15.91.0.1:
+
+1. Update from binutils 2004 0727.
+2. Fix the x86_64 linker to prevent non-PIC code in shared library.
+3. Fix the ia64 linker to warn the relotable files which can't be
+relaxed.
+4. Fix the comdat group support. Allow mix single-member comdat group
+with linkonce section.
+5. Added --add-needed/--no-add-needed options to linker.
+6. Fix the SHF_LINK_ORDER support.
+7. Fix the ia64 assembler for multiple sections with the same name and
+SHT_IA_64_UNWIND sections.
+8. Fix the ia64 assembler for merge section and relaxation.
+
+Changes from binutils 2.15.90.0.3:
+
+1. Update from binutils 2004 0527.
+2. Fix -x auto option in the ia64 assembler.
+3. Add the AR check in the ia64 assembler.
+4. Fix the section group support.
+5. Add a new -z relro linker option.
+6. Fix an exception section placement bug in linker.
+7. Add .serialize.data and .serialize.instruction to the ia64
+assembler.
+
+Changes from binutils 2.15.90.0.2:
+
+1. Update from binutils 2004 0415.
+2. Fix the linker for weak undefined symbol handling.
+3. Fix the ELF/Sparc and ELF/Sparc64 linker for statically linking PIC
+code.
+
+Changes from binutils 2.15.90.0.1.1:
+
+1. Update from binutils 2004 0412.
+2. Add --as-needed/--no-as-needed to linker.
+3. Fix -z defs in linker.
+4. Always reserve the memory for ia64 dynamic linker.
+5. Fix a race condition in ia64 lazy binding.
+
+Changes from binutils 2.15.90.0.1:
+
+1. Fixed an ia64 assembler bug.
+2. Install the assembler man page.
+
+Changes from binutils 2.14.90.0.8:
+
+1. Update from binutils 2004 0303.
+2. Fixed linker for undefined symbols with non-default visibility.
+3. Sped up linker weakdef symbol handling.
+4. Fixed mixing ELF32 and ELF64 object files in archive.
+5. Added ia64 linker brl optimization.
+6. Fixed ia64 linker to disallow invalid dynamic relocations.
+7. Fixed DT_TEXTREL handling in ia64 linker.
+8. Fixed alignment handling in ia64 assembler.
+9. Improved ia64 assembler unwind table handling.
+
+Changes from binutils 2.14.90.0.7:
+
+1. Update from binutils 2004 0114.
+2. Fixed an ia64 assembler unwind table bug.
+3. Better handle IPF linker relaxation overflow.
+4. Fixed misc PPC bugs.
+
+Changes from binutils 2.14.90.0.6:
+
+1. Update from binutils 2003 1029.
+2. Allow type changes for undefined symbols.
+3. Fix EH frame optimization.
+4. Fix the check for undefined versioned symbol with wildcard.
+5. Support generating code for Itanium.
+6. Detect and warn bad symbol index.
+7. Update IPF assemebler DV check.
+
+Changes from binutils 2.14.90.0.5:
+
+1. Update from binutils 2003 0820.
+2. No longer use section names for ELF section types nor flags.
+3. Fix some ELF/IA64 linker bugs.
+4. Fix some ELF/ppc bugs.
+5. Add archive support to readelf.
+
+Changes from binutils 2.14.90.0.4.1:
+
+1. Update from binutils 2003 0722.
+2. Fix an ELF/mips linker bug.
+3. Fix an ELF/hpppa linker bug.
+4. Fix an ELF/ia64 assembler bug.
+5. Fix a linkonce support with C++ debug.
+6. A new working C++ demangler.
+7. Various alpha, mips, ia64, ... bug fixes.
+8. Support for the current gcc and glibc.
+
+Changes from binutils 2.14.90.0.4:
+
+1. Fix an ia64 assembler hint@pause bug.
+2. Support Intel Prescott New Instructions.
+
+Changes from binutils 2.14.90.0.3:
+
+1. Work around the brain dead libtool.
+
+Changes from binutils 2.14.90.0.2:
+
+1. Update from binutils 2003 0523.
+2. Fix 2 ELF visibility bugs.
+3. Fix ELF/ppc linker bugs.
+
+Changes from binutils 2.14.90.0.1:
+
+1. Update from binutils 2003 0515.
+2. Fix various ELF visibility bugs.
+3. Fix some ia64 linker bugs.
+4. Add more IAS compatibilities to ia64 assembler.
+
+Changes from binutils 2.13.90.0.20:
+
+1. Update from binutils 2003 0505.
+2. Fix various ELF visibility bugs.
+3. Fix some ia64 linker bugs.
+4. Fix some ia64 assembler bugs.
+5. Add some IAS compatibilities to ia64 assembler.
+6. Fix ELF common symbol alignment.
+7. Fix ELF weak symbol handling.
+
+Changes from binutils 2.13.90.0.18:
+
+1. Update from binutils 2003 0319.
+2. Fix an ia64 linker brl relaxation bug.
+3. Fix some ELF/ppc linker bugs.
+
+Changes from binutils 2.13.90.0.16:
+
+1. Update from binutils 2003 0121.
+2. Fix an ia64 gas bug.
+3. Fix some TLS bugs.
+4. Fix some ELF/ppc bugs.
+5. Fix an ELF/m68k bug.
+
+2. Include /usr/bin/c++filt.
+Changes from binutils 2.13.90.0.14:
+
+1. Update from binutils 2002 1126.
+2. Include /usr/bin/c++filt.
+3. Fix "ld -r" with execption handling.
+
+Changes from binutils 2.13.90.0.10:
+
+1. Update from binutils 2002 1114.
+2. Fix ELF/alpha bugs.
+3. Fix an ELF/i386 assembler bug.
+
+Changes from binutils 2.13.90.0.4:
+
+1. Update from binutils 2002 1010.
+2. More ELF/PPC linker bug fixes.
+3. Fix an ELF/alpha linker bug.
+4. Fix an ELF/sparc linker bug to support Solaris.
+5. More TLS updates.
+
+Changes from binutils 2.13.90.0.3:
+
+1. Update from binutils 2002 0814.
+2. Fix symbol versioning bugs for gcc 3.2.
+3. Fix mips gas.
+
+Changes from binutils 2.13.90.0.2:
+
+1. Update from binutils 2002 0809.
+2. Fix a mips gas compatibility bug.
+3. Fix an x86 TLS bfd bug.
+4. Fix an x86 PIC gas bug.
+5. Improve symbol versioning support.
+
+The file list:
+
+1. binutils-2.18.50.0.9.tar.bz2. Source code.
+2. binutils-2.18.50.0.8-2.18.50.0.9.diff.bz2. Patch against the
+ previous beta source code.
+3. binutils-2.18.50.0.9.i686.tar.bz2. IA-32 binary tar ball for RedHat
+ EL 4.
+4. binutils-2.18.50.0.9.ia64.tar.bz2. IA-64 binary tar ball for RedHat
+ EL 4.
+5. binutils-2.18.50.0.9.x86_64.tar.bz2. X64_64 binary tar ball for RedHat
+ EL 4.
+
+The primary sites for the beta Linux binutils are:
+
+1. http://www.kernel.org/pub/linux/devel/binutils/
+
+Thanks.
+
+
+H.J. Lu
+hjl.tools@gmail.com
+08/23/2008
diff --git a/source/d/binutils/slack-desc b/source/d/binutils/slack-desc
new file mode 100644
index 000000000..417dc3332
--- /dev/null
+++ b/source/d/binutils/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+binutils: binutils (GNU binary development tools)
+binutils:
+binutils: Binutils is a collection of binary utilities. It includes "as" (the
+binutils: portable GNU assembler), "ld" (the GNU linker), and other utilities
+binutils: for creating and working with binary programs.
+binutils:
+binutils: These utilities are REQUIRED to compile C, C++, Objective-C, Fortran,
+binutils: and most other programming languages.
+binutils:
+binutils:
+binutils:
diff --git a/source/d/bison/bison.SlackBuild b/source/d/bison/bison.SlackBuild
new file mode 100755
index 000000000..f99d23302
--- /dev/null
+++ b/source/d/bison/bison.SlackBuild
@@ -0,0 +1,85 @@
+#!/bin/sh
+
+# Copyright 2005-2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+
+VERSION=2.4.1
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-bison
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf bison-$VERSION
+tar xvf $CWD/bison-$VERSION.tar.bz2 || exit 1
+cd bison-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --infodir=/usr/info
+
+make -j3 || exit 1
+make install DESTDIR=$PKG
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+rm -f $PKG/usr/info/dir
+gzip -9 $PKG/usr/info/*
+gzip -9 $PKG/usr/man/man1/bison.1
+
+mkdir -p $PKG/usr/doc/bison-$VERSION
+cp -a \
+ ABOUT-NLS AUTHORS COPYING* INSTALL NEWS README REFERENCES THANKS doc/FAQ \
+ $PKG/usr/doc/bison-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/bison-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/bison/slack-desc b/source/d/bison/slack-desc
new file mode 100644
index 000000000..9b4292530
--- /dev/null
+++ b/source/d/bison/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+bison: bison (parser generator similar to yacc)
+bison:
+bison: GNU "Bison" is a general-purpose parser generator that converts a
+bison: grammar description for an LALR(1) context-free grammar into a C
+bison: program to parse that grammar.
+bison:
+bison: Bison is upward compatible with Yacc: all properly-written Yacc
+bison: grammars ought to work with Bison with no change. Anyone familiar
+bison: with Yacc should be able to use Bison with little trouble.
+bison:
+bison:
diff --git a/source/d/ccache/ccache.SlackBuild b/source/d/ccache/ccache.SlackBuild
new file mode 100755
index 000000000..c7898ee85
--- /dev/null
+++ b/source/d/ccache/ccache.SlackBuild
@@ -0,0 +1,68 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+VERSION=2.4
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-ccache
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf ccache-$VERSION
+tar xvf $CWD/ccache-$VERSION.tar.gz || exit 1
+cd ccache-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+./configure --prefix=/usr
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+gzip -9 $PKG/usr/man/man1/*.1
+
+mkdir -p $PKG/usr/doc/ccache-$VERSION
+cp -a \
+ web/index.html README \
+ $PKG/usr/doc/ccache-$VERSION
+
+# Strip binaries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/ccache-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/ccache/slack-desc b/source/d/ccache/slack-desc
new file mode 100644
index 000000000..ebb56d940
--- /dev/null
+++ b/source/d/ccache/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+ccache: ccache (a fast compiler cache)
+ccache:
+ccache: ccache is a compiler cache. It speeds up re-compilation of C/C++ code
+ccache: by caching previous compiles and detecting when the same compile is
+ccache: being done again.
+ccache:
+ccache: ccache was written by Andrew Tridgell.
+ccache:
+ccache:
+ccache:
+ccache:
diff --git a/source/d/clisp/clisp.SlackBuild b/source/d/clisp/clisp.SlackBuild
new file mode 100755
index 000000000..49e4f768d
--- /dev/null
+++ b/source/d/clisp/clisp.SlackBuild
@@ -0,0 +1,192 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+
+VERSION=2.47
+DIRNAME=2.47
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-2}
+
+# Bundled libraries:
+FFCALLVER=20080704cvs
+LIBSIGSEVVER=2.6
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-clisp
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+#=================================================================
+# First we need this. It used to ship with CLISP, but no longer does.
+cd $TMP
+rm -rf libsigsegv-$LIBSIGSEVVER
+tar xvf $CWD/libsigsegv-$LIBSIGSEVVER.tar.bz2 || exit 1
+cd libsigsegv-$LIBSIGSEVVER || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Nah.
+# --enable-shared=yes
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --enable-static=yes
+make $NUMJOBS || make || exit 1
+
+# Now I must install this. Sorry, it's gotta happen.
+make install
+# Now add to the package:
+mkdir -p $PKG/usr
+make install prefix=$PKG/usr
+strip --strip-unneeded $PKG/usr/lib${LIBDIRSUFFIX}/*.so
+strip -g $PKG/usr/lib${LIBDIRSUFFIX}/*.a
+mkdir -p $PKG/usr/doc/clisp-$VERSION/libsigsegv-$LIBSIGSEVVER
+cp -a \
+ AUTHORS COPYING ChangeLog NEWS PORTING README \
+ $PKG/usr/doc/clisp-$VERSION/libsigsegv-$LIBSIGSEVVER
+
+#=================================================================
+# Build ffcall - needed for --dynamic-ffi with clisp.
+cd $TMP
+rm -rf ffcall*
+tar xvf $CWD/ffcall-$FFCALLVER.tar.* || exit 1
+cd ffcall* || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --build=$ARCH-slackware-linux || exit 1
+
+make $NUMJOBS || make || exit 1
+
+make install DESTDIR=$PKG || exit 1
+# We need ffcall installed in order to build clisp:
+make install
+
+# Don't need this:
+rm -f $PKG/usr/lib${LIBDIRSUFFIX}/*.la
+
+# Move docs around:
+mkdir -pm755 $PKG/usr/doc/clisp-$VERSION/ffcall-$FFCALLVER
+install -vpm644 README NEWS COPYING \
+ $PKG/usr/doc/clisp-$VERSION/ffcall-$FFCALLVER
+mv -f $PKG/usr/share/html/* $PKG/usr/doc/clisp-$VERSION/ffcall-$FFCALLVER
+rmdir $PKG/usr/share/html/
+rmdir $PKG/usr/share/
+
+#=================================================================
+
+# OK, now we compile CLISP:
+cd $TMP
+rm -rf clisp-$VERSION
+tar xvf $CWD/clisp-$VERSION.tar.bz2 || exit 1
+cd clisp-$DIRNAME || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/clisp-$VERSION \
+ --with-module=clx/new-clx \
+ --with-module=pcre \
+ --with-module=rawsock \
+ --with-module=wildcard \
+ --with-module=zlib \
+ --cbc with-gcc-wall \
+ --with-dynamic-ffi || exit 1
+
+cd with-gcc-wall
+./makemake \
+ --with-dynamic-ffi \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --with-module=clx/new-clx \
+ --with-module=pcre \
+ --with-module=rawsock \
+ --with-module=wildcard \
+ --with-module=zlib \
+ --srcdir=../src \
+ > Makefile
+make config.lisp
+make init
+make allc
+make $NUMJOBS lisp.run
+make interpreted.mem
+make halfcompiled.mem
+make lispinit.mem
+make manual
+make modular
+
+make install DESTDIR=$PKG || exit 1
+
+# Strip stuff:
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+#mv $PKG/usr/share/doc/clisp/* $PKG/usr/doc/clisp-$VERSION
+rm -r $PKG/usr/share/doc
+
+mv $PKG/usr/share/man $PKG/usr/man
+gzip -9 $PKG/usr/man/man?/*.?
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/clisp-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/clisp/slack-desc b/source/d/clisp/slack-desc
new file mode 100644
index 000000000..5fb2f1954
--- /dev/null
+++ b/source/d/clisp/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+clisp: clisp (a Common Lisp implementation)
+clisp:
+clisp: Common Lisp is a high-level, general-purpose programming language.
+clisp: GNU CLISP is a Common Lisp implementation by Bruno Haible of Karlsruhe
+clisp: University and Michael Stoll of Munich University, both in Germany.
+clisp: It mostly supports the Lisp described in the ANSI Common Lisp standard.
+clisp: The user interface comes in German, English, French, Spanish, Dutch
+clisp: and Russian. GNU CLISP includes an interpreter, a compiler, a
+clisp: debugger, a large subset of CLOS, a foreign language interface and a
+clisp: socket interface. An X11 interface is available through CLX and
+clisp: Garnet.
diff --git a/source/d/clisp/source.download b/source/d/clisp/source.download
new file mode 100755
index 000000000..4de176999
--- /dev/null
+++ b/source/d/clisp/source.download
@@ -0,0 +1,3 @@
+# http://www.haible.de/bruno/packages-ffcall-README.html
+# wget -c http://www.haible.de/bruno/gnu/ffcall-1.10.tar.gz
+# wget -c ftp://download.fedora.redhat.com/pub/fedora/linux/development/source/SRPMS/ffcall-1.10-2.20080704cvs.fc10.src.rpm
diff --git a/source/d/cmake/cmake.SlackBuild b/source/d/cmake/cmake.SlackBuild
new file mode 100755
index 000000000..4a05c76e9
--- /dev/null
+++ b/source/d/cmake/cmake.SlackBuild
@@ -0,0 +1,96 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+NAME=cmake
+
+VERSION=${VERSION:-2.6.2}
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-2}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -m32 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$NAME
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf $NAME-$VERSION
+tar xvf $CWD/$NAME-$VERSION.tar.bz2 || exit 1
+cd $NAME-$VERSION
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+mkdir cmake-build
+cd cmake-build
+../bootstrap
+
+# Build
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+ ../configure \
+ --prefix=/usr \
+ --docdir=/doc/$NAME-$VERSION \
+ $SLKCONFIGFLAGS \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$NAME-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/cmake/slack-desc b/source/d/cmake/slack-desc
new file mode 100644
index 000000000..481fdd519
--- /dev/null
+++ b/source/d/cmake/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+cmake: CMake (cross-platform, open-source make system)
+cmake:
+cmake: CMake is used to control the software process using simple platform
+cmake: and compiler independed configuration files. CMake generates
+cmake: native makefiles and workspaces that can be used in the
+cmake: compiler environment of your choice.
+cmake:
+cmake: CMake's home on the web is: http://www.cmake.org
+cmake:
+cmake:
+cmake:
diff --git a/source/d/cscope/cscope.SlackBuild b/source/d/cscope/cscope.SlackBuild
new file mode 100755
index 000000000..76994691f
--- /dev/null
+++ b/source/d/cscope/cscope.SlackBuild
@@ -0,0 +1,71 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+
+PKGNAM=cscope
+VERSION=${VERSION:-$(echo $(basename $(echo $PRGNAM-*.tar.bz2 | cut -f 2 -d -) .tar.bz2) | cut -f 2 -d -)}
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-2}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-cscope
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf ${PKGNAM}-$VERSION
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+cd ${PKGNAM}-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+./configure \
+ --prefix=/usr \
+ --build=${ARCH}-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+gzip -9 $PKG/usr/man/man1/${PKGNAM}.1
+
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+cp -a \
+ AUTHORS COPYING* INSTALL NEWS README TODO \
+ $PKG/usr/doc/${PKGNAM}-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/cscope/slack-desc b/source/d/cscope/slack-desc
new file mode 100644
index 000000000..b2126b523
--- /dev/null
+++ b/source/d/cscope/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+cscope: cscope (source code browsing tool)
+cscope:
+cscope: Cscope is a text screen based source browsing tool. Although it is
+cscope: primarily designed to search C code (including lex and yacc files),
+cscope: it can also be used for C++ code.
+cscope:
+cscope: For more information, see http://cscope.sourceforge.net.
+cscope:
+cscope:
+cscope:
+cscope:
diff --git a/source/d/cvs/cvs.SlackBuild b/source/d/cvs/cvs.SlackBuild
new file mode 100755
index 000000000..f7cec7ace
--- /dev/null
+++ b/source/d/cvs/cvs.SlackBuild
@@ -0,0 +1,89 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+
+VERSION=1.11.23
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-cvs
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf cvs-$VERSION
+tar xvf $CWD/cvs-$VERSION.tar.bz2 || exit 1
+cd cvs-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --mandir=/usr/man \
+ --infodir=/usr/info
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+rm $PKG/usr/info/dir
+gzip -9 $PKG/usr/info/*
+
+gzip -9 $PKG/usr/man/man?/*.?
+
+( cd doc ; make txt )
+mkdir -p $PKG/usr/doc/cvs-$VERSION
+cp -a \
+ BUGS COPYING* DEVEL-CVS FAQ HACKING INSTALL MINOR-BUGS NEWS PROJECTS \
+ README TESTS TODO \
+ $PKG/usr/doc/cvs-$VERSION
+cat doc/cvs.txt | gzip -9c > $PKG/usr/doc/cvs-$VERSION/cvs.txt.gz
+cat doc/cvsclient.txt | gzip -9c > $PKG/usr/doc/cvs-$VERSION/cvsclient.txt.gz
+chmod 644 $PKG/usr/doc/cvs-$VERSION/*
+gzip -9 $PKG/usr/doc/cvs-$VERSION/FAQ
+( cd $PKG/usr/doc/cvs-$VERSION ; rm -rf contrib )
+( cd $PKG/usr/doc/cvs-$VERSION ; ln -sf ../../share/cvs/contrib contrib )
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/cvs-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/cvs/slack-desc b/source/d/cvs/slack-desc
new file mode 100644
index 000000000..9581cb88c
--- /dev/null
+++ b/source/d/cvs/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+cvs: cvs (Concurrent Versions System)
+cvs:
+cvs: CVS is a version control system, which allows you to keep old versions
+cvs: of files (usually source code), keep a log of who, when, and why
+cvs: changes occurred, etc., like RCS or SCCS. It handles multiple
+cvs: developers, multiple directories, triggers to enable/log/control
+cvs: various operations, and can work over a wide area network.
+cvs:
+cvs: Some of the people who have worked on CVS include: Dick Grune,
+cvs: Brian Berliner, Jeff Polk, and others too numerous to mention.
+cvs:
diff --git a/source/d/dev86/README b/source/d/dev86/README
new file mode 100644
index 000000000..407e6d07b
--- /dev/null
+++ b/source/d/dev86/README
@@ -0,0 +1,8 @@
+This is a complete 8086 assembler and loader which can make 32-bit
+code for the 386+ processors. In the past it was used to compile the
+16-bit bootsector and setup binaries for the kernel, but modern
+(2.4.x or newer) kernels use GNU ld instead.
+
+There's a package bin86 already included in Slackware, which is a
+subset of the programs of dev86. Therefore the bin86 programs are
+not included in this package. \ No newline at end of file
diff --git a/source/d/dev86/dev86-x86_64.noelks.patch b/source/d/dev86/dev86-x86_64.noelks.patch
new file mode 100644
index 000000000..f30ae35a1
--- /dev/null
+++ b/source/d/dev86/dev86-x86_64.noelks.patch
@@ -0,0 +1,19 @@
+* Wed Jan 25 2006 Jeremy Katz <katzj@redhat.com> - 0.16.17-2
+- build on x86_64
+- don't build elks (it's not happy on x86_64)
+
+--- dev86-0.16.17/makefile.in.noelks 2006-01-25 17:03:02.000000000 -0500
++++ dev86-0.16.17/makefile.in 2006-01-25 17:03:19.000000000 -0500
+@@ -89,10 +89,10 @@
+
+ #ifdef GNUMAKE
+ all: check_config bcc86 cpp unproto copt as86 ar86 ld86 objdump86 \
+- library lib-bsd alt-libs elksemu
++ library lib-bsd alt-libs
+
+ install: check_config install-bcc install-man \
+- install-lib install-emu
++ install-lib
+
+ install-all: install install-other
+
diff --git a/source/d/dev86/dev86-x86_64.patch b/source/d/dev86/dev86-x86_64.patch
new file mode 100644
index 000000000..01fa549b9
--- /dev/null
+++ b/source/d/dev86/dev86-x86_64.patch
@@ -0,0 +1,20 @@
+--- dev86-0.16.17/bcc/bcc.c.fix 2005-01-03 23:41:55.000000000 +0100
++++ dev86-0.16.17/bcc/bcc.c 2006-12-27 16:32:57.000000000 +0100
+@@ -226,12 +226,12 @@
+
+ } else {
+ /* Relative paths to normal PREFIX directory */
+- default_include = build_libpath("-I", "/lib/bcc/include", "");
+- default_libdir = build_libpath("-L", "/lib/bcc", libdir_suffix);
+- optim_rules = build_libpath("-d", "/lib/bcc", libdir_suffix);
++ default_include = build_libpath("-I", "/lib64/bcc/include", "");
++ default_libdir = build_libpath("-L", "/lib64/bcc", libdir_suffix);
++ optim_rules = build_libpath("-d", "/lib64/bcc", libdir_suffix);
+
+- build_prefix("/lib/bcc", libdir_suffix, "");
+- build_prefix("/lib/bcc", "", "");
++ build_prefix("/lib64/bcc", libdir_suffix, "");
++ build_prefix("/lib64/bcc", "", "");
+ }
+
+ build_prefix("/bin", "", "");
diff --git a/source/d/dev86/dev86.SlackBuild b/source/d/dev86/dev86.SlackBuild
new file mode 100755
index 000000000..e4c06882c
--- /dev/null
+++ b/source/d/dev86/dev86.SlackBuild
@@ -0,0 +1,98 @@
+#!/bin/sh
+
+# Copyright 2007-2008 Heinz Wiesinger <hmwiesinger@gmx.at>
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''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 AUTHOR 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.
+
+PRGNAM=dev86
+SRCNAM=Dev86src
+VERSION=0.16.17
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvzf $CWD/$SRCNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+if [ "$ARCH" = "x86_64" ]; then
+ zcat $CWD/dev86-x86_64.patch.gz \
+ | patch -p1 --verbose --backup --suffix=.orig -E
+ # On x86_64 elks will not build:
+ zcat $CWD/dev86-x86_64.noelks.patch.gz \
+ | patch -p1 --verbose --backup --suffix=.orig -E
+fi
+chown -R root:root .
+chmod -R u+w,go+r-w,a-s .
+
+#Does not compile with changed CFLAGS
+#CC="gcc" make CFLAGS="-Wall -Wstrict-prototypes $SLKCFLAGS -g" DIST=$PKG
+CC="gcc" \
+make DIST=$PKG MANDIR=/usr/man LIBDIR=/usr/lib${LIBDIRSUFFIX}/bcc \
+ INCLDIR=/usr/lib${LIBDIRSUFFIX}/bcc LOCALPREFIX=/usr \
+ install install-man
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+( cd $PKG/usr/man
+ find . -type f -exec gzip -9 {} \;
+ for i in $( find . -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+)
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a Changes Contributors COPYING README $PKG/usr/doc/$PRGNAM-$VERSION
+for i in bootblocks copt dis88 elksemu unproto ; do
+ cp -a $i/README $PKG/usr/doc/$PRGNAM-$VERSION/README.$i ;
+done
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+find $PKG/usr/doc -type f -exec chmod 0644 {} \;
+
+if [ "$ARCH" = "x86_64" ]; then # Remove traces of elks
+ rm -f $PKG/usr/doc/$PRGNAM-$VERSION/README.elksemu
+ find $PKG/usr/man -name "elks*.*" -exec rm -f {} \;
+fi
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/d/dev86/dev86.info b/source/d/dev86/dev86.info
new file mode 100644
index 000000000..ef223b1de
--- /dev/null
+++ b/source/d/dev86/dev86.info
@@ -0,0 +1,8 @@
+PRGNAM="dev86"
+VERSION="0.16.15"
+HOMEPAGE="http://homepage.ntlworld.com/robert.debath/"
+DOWNLOAD="http://distrib-coffee.ipsl.jussieu.fr/pub/linux/momonga/1/PKGS/SOURCES/Dev86src-0.16.15.tar.gz"
+MD5SUM="c3266fa6530b472e1d3e98d826db6409"
+MAINTAINER="Heinz Wiesinger"
+EMAIL="HMWiesinger@gmx.at"
+APPROVED="rworkman"
diff --git a/source/d/dev86/slack-desc b/source/d/dev86/slack-desc
new file mode 100644
index 000000000..557638a6b
--- /dev/null
+++ b/source/d/dev86/slack-desc
@@ -0,0 +1,12 @@
+ |-----handy-ruler------------------------------------------------------|
+dev86: dev86 (8086 development utilities)
+dev86:
+dev86: This is a complete 8086 assembler and loader which can make 32-bit
+dev86: code for the 386+ processors. In the past it was used to compile the
+dev86: 16-bit bootsector and setup binaries for the kernel, but modern
+dev86: (2.4.x or newer) kernels use GNU ld instead.
+dev86:
+dev86: Homepage: http://homepage.ntlworld.com/robert.debath/
+dev86:
+dev86:
+dev86:
diff --git a/source/d/distcc/distcc.SlackBuild b/source/d/distcc/distcc.SlackBuild
new file mode 100755
index 000000000..e65233859
--- /dev/null
+++ b/source/d/distcc/distcc.SlackBuild
@@ -0,0 +1,86 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+
+VERSION=2.18.3
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-2}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-distcc
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf distcc-$VERSION
+tar xvf $CWD/distcc-$VERSION.tar.bz2 || exit 1
+cd distcc-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+./configure \
+ --prefix=/usr \
+ --datadir=/usr/share \
+ --sysconfdir=/etc \
+ --with-gtk \
+ --without-gnome \
+ $ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG docdir=/usr/doc/distcc-$VERSION || exit 1
+
+# pkgdocdir=/usr/doc/distcc-$VERSION
+mkdir -p $PKG/usr/share/applications
+( cd $PKG/usr/share/applications
+ ln -sf /usr/share/distcc/distccmon-gnome.desktop .
+)
+
+gzip -9 $PKG/usr/man/man?/*
+
+# Restore original timestamps on the doc files:
+for file in * ; do
+ if [ -f $file ]; then
+ if [ -r $PKG/usr/doc/distcc-$VERSION/$file ]; then
+ cp -a $file $PKG/usr/doc/distcc-$VERSION/$file
+ chmod 644 $PKG/usr/doc/distcc-$VERSION/$file
+ fi
+ fi
+done
+
+# Strip binaries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/distcc-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/distcc/slack-desc b/source/d/distcc/slack-desc
new file mode 100644
index 000000000..121e97226
--- /dev/null
+++ b/source/d/distcc/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+distcc: distcc (distributed C/C++ compiler/daemon)
+distcc:
+distcc: distcc allows compilation of C code to be distributed across several
+distcc: machines on a network. distcc should always generate the same results
+distcc: as a local compile, is simple to install and use, and is often
+distcc: significantly faster than a local compile.
+distcc:
+distcc: IMPORTANT SECURITY NOTE: distccd should only run on trusted networks.
+distcc:
+distcc: distcc was written by Martin Pool.
+distcc:
diff --git a/source/d/doxygen/doxygen.SlackBuild b/source/d/doxygen/doxygen.SlackBuild
new file mode 100755
index 000000000..ec827f7cd
--- /dev/null
+++ b/source/d/doxygen/doxygen.SlackBuild
@@ -0,0 +1,94 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+
+VERSION=1.5.8
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-doxygen
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf doxygen-$VERSION
+tar xvf $CWD/doxygen-${VERSION}.src.tar.?z* || exit 1
+cd doxygen-$VERSION
+zcat $CWD/doxygen.qt4.diff.gz | patch -p1 --verbose || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# We want qt4 to be found, not qt3 if that is available as well:
+unset QTDIR
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --shared \
+ --release \
+ --prefix /usr \
+ --docdir /usr/doc/doxygen-$VERSION \
+ --with-doxywizard
+
+make $NUMJOBS || make || exit 1
+make install INSTALL=$PKG/usr DOCDIR=$PKG/usr/doc/doxygen-$VERSION
+make install_docs INSTALL=$PKG/usr DOCDIR=$PKG/usr/doc/doxygen-$VERSION
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# If there are misplaced man pages, fix that:
+mv $PKG/usr/*.1 $PKG/usr/man/man1
+
+# Compress man pages
+( cd $PKG/usr/man
+ find . -type f -exec gzip -9 {} \;
+ for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
+)
+
+mkdir -p $PKG/usr/doc/doxygen-$VERSION
+cp -a \
+ INSTALL LANGUAGE.HOWTO LICENSE PLATFORMS README* VERSION \
+ $PKG/usr/doc/doxygen-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/doxygen-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/doxygen/doxygen.qt4.diff b/source/d/doxygen/doxygen.qt4.diff
new file mode 100644
index 000000000..d55dced8f
--- /dev/null
+++ b/source/d/doxygen/doxygen.qt4.diff
@@ -0,0 +1,12 @@
+diff -up doxygen-1.5.8/configure.qt4 doxygen-1.5.8/configure
+--- doxygen-1.5.8/configure.qt4 2008-12-26 20:22:39.000000000 +0100
++++ doxygen-1.5.8/configure 2009-02-06 11:00:44.000000000 +0100
+@@ -268,7 +268,7 @@ if test "$f_wizard" = YES; then
+ if test -z "$QTDIR"; then
+ echo " QTDIR environment variable not set!"
+ echo -n " Checking for Qt..."
+- for d in /usr/{lib,share,qt}/{qt-4,qt4,qt,qt*,4}; do
++ for d in /usr/{lib64,lib,share,qt}/{qt-4,qt4,qt,qt*,4}; do
+ if test -x "$d/bin/qmake"; then
+ QTDIR=$d
+ fi
diff --git a/source/d/doxygen/slack-desc b/source/d/doxygen/slack-desc
new file mode 100644
index 000000000..df95eb7b4
--- /dev/null
+++ b/source/d/doxygen/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+doxygen: doxygen (documentation generator)
+doxygen:
+doxygen: Doxygen is a documentation system for C++, C, Java, IDL, and to some
+doxygen: extent PHP and C#. Doxygen generates project documentation using
+doxygen: special documentation blocks in the source code, easing the process of
+doxygen: keeping docs and code in sync. Doxygen produces documentation in
+doxygen: several output formats, including HTML, LaTeX, man pages, RTF, XML,
+doxygen: compressed HTML, PostScript, and PDF.
+doxygen:
+doxygen:
+doxygen:
diff --git a/source/d/flex/flex.SlackBuild b/source/d/flex/flex.SlackBuild
new file mode 100755
index 000000000..8c1d1ec94
--- /dev/null
+++ b/source/d/flex/flex.SlackBuild
@@ -0,0 +1,115 @@
+#!/bin/sh
+
+# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+
+PKGNAM=flex
+VERSION=${VERSION:-2.5.35}
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+cd $TMP
+rm -rf ${PKGNAM}-${VERSION}
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+cd ${PKGNAM}-$VERSION
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Configure:
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ $ARCH-slackware-linux
+
+# Build and install:
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# A symlink to harken back to the Goodle days:
+( cd $PKG/usr/bin ; ln -sf flex lex )
+
+# Strip binaries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+# Compress info files, if any:
+if [ -d $PKG/usr/info ]; then
+ ( cd $PKG/usr/info
+ rm -f dir
+ gzip -9 *
+ )
+fi
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+cp -a \
+ ABOUT-NLS AUTHORS COPYING* INSTALL NEWS README* THANKS TODO \
+ $PKG/usr/doc/${PKGNAM}-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $TMP/package-${PKGNAM}
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/flex/slack-desc b/source/d/flex/slack-desc
new file mode 100644
index 000000000..0fe0399df
--- /dev/null
+++ b/source/d/flex/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+flex: flex (fast lexical analyzer generator)
+flex:
+flex: flex is a tool for generating programs that perform pattern matching
+flex: on text. flex is a rewrite of the AT&T Unix lex tool (the two
+flex: implementations do not share any code, though), with some extensions
+flex: (and incompatibilities).
+flex:
+flex:
+flex:
+flex:
+flex:
diff --git a/source/d/gcc/ecj-4.3.jar b/source/d/gcc/ecj-4.3.jar
new file mode 100644
index 000000000..db02a5e24
--- /dev/null
+++ b/source/d/gcc/ecj-4.3.jar
Binary files differ
diff --git a/source/d/gcc/gcc-no_fixincludes.diff b/source/d/gcc/gcc-no_fixincludes.diff
new file mode 100644
index 000000000..917b14f0a
--- /dev/null
+++ b/source/d/gcc/gcc-no_fixincludes.diff
@@ -0,0 +1,27 @@
+--- ./gcc/Makefile.in.orig 2008-12-04 17:00:19.000000000 -0600
++++ ./gcc/Makefile.in 2009-01-29 01:17:33.000000000 -0600
+@@ -3441,9 +3441,9 @@
+ chmod a+r $${fix_dir}/limits.h; \
+ done
+ # Install the README
+- rm -f include-fixed/README
+- cp $(srcdir)/../fixincludes/README-fixinc include-fixed/README
+- chmod a+r include-fixed/README
++# rm -f include-fixed/README
++# cp $(srcdir)/../fixincludes/README-fixinc include-fixed/README
++# chmod a+r include-fixed/README
+ $(STAMP) $@
+
+ .PHONY: install-gcc-tooldir
+@@ -3523,10 +3523,7 @@
+ chmod a+rx $${fix_dir} || true; \
+ (TARGET_MACHINE='$(target)'; srcdir=`cd $(srcdir); ${PWD_COMMAND}`; \
+ SHELL='$(SHELL)'; MACRO_LIST=`${PWD_COMMAND}`/macro_list ; \
+- export TARGET_MACHINE srcdir SHELL MACRO_LIST && \
+- cd $(build_objdir)/fixincludes && \
+- $(SHELL) ./fixinc.sh ../../gcc/$${fix_dir} \
+- $(SYSTEM_HEADER_DIR) $(OTHER_FIXINCLUDES_DIRS) ); \
++ export TARGET_MACHINE srcdir SHELL MACRO_LIST ); \
+ rm -f $${fix_dir}/syslimits.h; \
+ if [ -f $${fix_dir}/limits.h ]; then \
+ mv $${fix_dir}/limits.h $${fix_dir}/syslimits.h; \
diff --git a/source/d/gcc/gcc.SlackBuild b/source/d/gcc/gcc.SlackBuild
new file mode 100755
index 000000000..cc1745aca
--- /dev/null
+++ b/source/d/gcc/gcc.SlackBuild
@@ -0,0 +1,546 @@
+#!/bin/sh
+# GCC package build script (written by volkerdi@slackware.com)
+#
+# Copyright 2003, 2004 Slackware Linux, Inc., Concord, California, USA
+# Copyright 2005, 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+#
+
+# Some notes, Fri May 16 12:31:32 PDT 2003:
+#
+# Why i486 and not i386? Because the shared C++ libraries in gcc-3.2.x will
+# require 486 opcodes even when a 386 target is used (so we already weren't
+# compatible with the i386 for Slackware 9.0, didn't notice, and nobody
+# complained :-). gcc-3.3 fixes this issue and allows you to build a 386
+# compiler, but the fix is done in a way that produces binaries that are not
+# compatible with gcc-3.2.x compiled binaries. To retain compatibility with
+# Slackware 9.0, we'll have to use i486 (or better) as the compiler target
+# for gcc-3.3.
+#
+# It's time to say goodbye to i386 support in Slackware. I've surveyed 386
+# usage online, and the most common thing I see people say when someone asks
+# about running Linux on a 386 is to "run Slackware", but then they also
+# usually go on to say "be sure to get an OLD version, like 4.0, before glibc,
+# because it'll be more efficient." Now, if that's the general advice, then
+# I see no reason to continue 386 support in the latest Slackware (and indeed
+# it's no longer easily possible).
+
+VERSION=4.3.3
+ARCH=${ARCH:-x86_64}
+TARGET=$ARCH-slackware-linux
+BUILD=${BUILD:-4}
+
+# How many jobs to run in parallel:
+NUMJOB=" -j 4 "
+
+if [ "$ARCH" = "i386" ]; then
+ SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+CWD=$(pwd)
+# Temporary build location. This should *NOT* be a directory
+# path a non-root user could create later...
+TMP=/gcc-$(mcookie)
+
+# This is the main DESTDIR target:
+PKG1=$TMP/package-gcc
+# These are the directories to build other packages in:
+PKG2=$TMP/package-gcc-g++
+PKG3=$TMP/package-gcc-gfortran
+PKG4=$TMP/package-gcc-gnat
+PKG5=$TMP/package-gcc-java
+PKG6=$TMP/package-gcc-objc
+PKG7=$TMP/package-gcc-g++-gch
+
+# Clear the build locations:
+if [ -d $TMP ]; then
+ rm -rf $TMP
+fi
+mkdir -p $PKG{1,2,3,4,5,6,7}/usr/doc/gcc-$VERSION
+
+# Insert package descriptions:
+mkdir -p $PKG{1,2,3,4,5,6,7}/install
+cat $CWD/slack-desc.gcc > $PKG1/install/slack-desc
+cat $CWD/slack-desc.gcc-g++ > $PKG2/install/slack-desc
+cat $CWD/slack-desc.gcc-gfortran > $PKG3/install/slack-desc
+cat $CWD/slack-desc.gcc-gnat > $PKG4/install/slack-desc
+cat $CWD/slack-desc.gcc-java > $PKG5/install/slack-desc
+cat $CWD/slack-desc.gcc-objc > $PKG6/install/slack-desc
+# cat $CWD/slack-desc.gcc-g++-gch > $PKG7/install/slack-desc
+
+cd $TMP
+tar xvf $CWD/gcc-$VERSION.tar.?z*
+
+# Copy ecj.jar into the TLD of the source. Needed for java compiler.
+# This can be retrieved from ftp://sourceware.org/pub/java
+cp $CWD/ecj-4.3.jar gcc-$VERSION/ecj.jar
+
+# install docs
+( cd gcc-$VERSION
+ # Smite the fixincludes:
+ zcat $CWD/gcc-no_fixincludes.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
+ # Fix perms/owners
+ chown -R root:root .
+ find . -perm 777 -exec chmod 755 {} \;
+ find . -perm 775 -exec chmod 755 {} \;
+ find . -perm 754 -exec chmod 755 {} \;
+ find . -perm 664 -exec chmod 644 {} \;
+ mkdir -p $PKG1/usr/doc/gcc-$VERSION
+ # Only the most recent ChangeLog... shouldn't be too big. :)
+ cp -a \
+ BUGS COPYING* ChangeLog \
+ ChangeLog.tree-ssa FAQ INSTALL \
+ LAST_UPDATED MAINTAINERS NEWS \
+ README* *.html \
+ $PKG1/usr/doc/gcc-$VERSION
+
+ mkdir -p $PKG1/usr/doc/gcc-${VERSION}/gcc
+ ( cd gcc
+ cp -a \
+ ABOUT* COPYING* LANG* ONEWS README* SERVICE \
+ $PKG1/usr/doc/gcc-$VERSION/gcc
+
+ mkdir -p $PKG3/usr/doc/gcc-${VERSION}/gcc/fortran
+ ( cd fortran
+ cp -a \
+ ChangeLog \
+ $PKG3/usr/doc/gcc-$VERSION/gcc/fortran/ChangeLog
+ )
+
+ mkdir -p $PKG4/usr/doc/gcc-${VERSION}/gcc/ada
+ ( cd ada
+ cp -a \
+ ChangeLog ChangeLog.tree-ssa \
+ $PKG4/usr/doc/gcc-$VERSION/gcc/ada
+ )
+
+ mkdir -p $PKG5/usr/doc/gcc-${VERSION}/gcc/java
+ ( cd java
+ cp -a \
+ ChangeLog ChangeLog.tree-ssa \
+ $PKG5/usr/doc/gcc-${VERSION}/gcc/java
+ )
+
+ mkdir -p $PKG6/usr/doc/gcc-${VERSION}/gcc/objc
+ ( cd objc
+ cp -a \
+ ChangeLog README \
+ $PKG6/usr/doc/gcc-${VERSION}/gcc/objc
+ )
+ ) || exit 1
+
+ mkdir -p $PKG3/usr/doc/gcc-${VERSION}/libgfortran
+ ( cd libgfortran
+ cp -a \
+ ChangeLog \
+ $PKG3/usr/doc/gcc-${VERSION}/libgfortran/ChangeLog
+ )
+
+ mkdir -p $PKG3/usr/doc/gcc-${VERSION}/libada
+ ( cd libada
+ cp -a \
+ ChangeLog \
+ $PKG3/usr/doc/gcc-${VERSION}/libada
+ )
+
+ mkdir -p $PKG5/usr/doc/gcc-${VERSION}/libffi
+ ( cd libffi
+ cp -a \
+ ChangeLog ChangeLog.libgcj ChangeLog.v1 \
+ LICENSE README \
+ $PKG5/usr/doc/gcc-${VERSION}/libffi
+ )
+
+ mkdir -p $PKG5/usr/doc/gcc-${VERSION}/libjava
+ ( cd libjava
+ cp -a \
+ COPYING* ChangeLog HACKING LIBGCJ_LICENSE \
+ NEWS README THANKS \
+ $PKG5/usr/doc/gcc-${VERSION}/libjava
+ )
+
+ mkdir -p $PKG1/usr/doc/gcc-${VERSION}/libmudflap
+ ( cd libmudflap
+ cp -a \
+ ChangeLog \
+ $PKG1/usr/doc/gcc-${VERSION}/libmudflap
+ )
+
+ mkdir -p $PKG1/usr/doc/gcc-${VERSION}/libgomp
+ ( cd libgomp
+ cp -a \
+ ChangeLog \
+ $PKG1/usr/doc/gcc-${VERSION}/libgomp
+ )
+
+ mkdir -p $PKG6/usr/doc/gcc-${VERSION}/libobjc
+ ( cd libobjc
+ cp -a \
+ ChangeLog README README.threads THREADS THREADS.MACH \
+ $PKG6/usr/doc/gcc-${VERSION}/libobjc
+ )
+
+ mkdir -p $PKG2/usr/doc/gcc-${VERSION}/libstdc++-v3
+ ( cd libstdc++-v3
+ cp -a \
+ ChangeLog README \
+ $PKG2/usr/doc/gcc-${VERSION}/libstdc++-v3
+
+ cp -a \
+ docs/html/faq \
+ $PKG2/usr/doc/gcc-${VERSION}/libstdc++-v3
+ )
+)
+# build gcc
+( mkdir gcc.build.lnx;
+ cd gcc.build.lnx;
+
+ # If enough people need "treelang" support for it may be considered.
+ # --enable-languages=ada,c,c++,fortran,java,objc,treelang
+ # I think it's incorrect to include this option (as it'll end up set
+ # to i486 on x86 platforms), and we want to tune the binary structure
+ # for i686, as that's where almost all of the optimization speedups
+ # are to be found.
+ # Correct me if my take on this is wrong.
+ # --with-cpu=$ARCH
+
+ if [ "$ARCH" != "x86_64" ]; then
+ GCC_ARCHOPTS="--with-arch=$ARCH"
+ else
+ GCC_ARCHOPTS="--disable-multilib"
+ fi
+
+ CFLAGS="$SLKCFLAGS" \
+ CXXFLAGS="$SLKCFLAGS" \
+ ../gcc-$VERSION/configure --prefix=/usr \
+ --libdir=/usr/lib$LIBDIRSUFFIX \
+ --enable-shared \
+ --enable-bootstrap \
+ --enable-languages=ada,c,c++,fortran,java,objc \
+ --enable-threads=posix \
+ --enable-checking=release \
+ --with-system-zlib \
+ --disable-libunwind-exceptions \
+ --enable-__cxa_atexit \
+ --enable-libssp \
+ --with-gnu-ld \
+ --verbose \
+ $GCC_ARCHOPTS \
+ --target=${TARGET} \
+ --build=${TARGET} \
+ --host=${TARGET} || exit 1
+
+ # Start the build:
+
+ # Include all debugging info (for now):
+ make $NUMJOB bootstrap;
+
+ ( cd gcc
+ make $NUMJOB gnatlib GNATLIBCFLAGS="$SLKCFLAGS"
+ # This wants a shared -ladd2line?
+ #make gnatlib-shared
+
+ CFLAGS="$SLKCFLAGS" \
+ CXXFLAGS="$SLKCFLAGS" \
+ make $NUMJOB gnattools
+ )
+ make info
+
+ # Set GCCCHECK=something to run the tests
+ if [ ! -z $GCCCHECK ]; then
+ make $NUMJOB check
+ fi
+
+ make install DESTDIR=$PKG1
+
+# Be sure the "specs" file is installed.
+if [ ! -r $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${ARCH}-slackware-linux/${VERSION}/specs ]; then
+ cat stage1-gcc/specs > $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${ARCH}-slackware-linux/${VERSION}/specs
+fi
+
+# Make our 64bit gcc look for 32bit gcc binaries in ./32 subdirectory:
+if [ "$ARCH" = "x86_64" ]; then
+ sed -i 's#;.\(:../lib !m64 m32;\)$#;32\1#' \
+ $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/${ARCH}-slackware-linux/${VERSION}/specs
+fi
+
+# make ada.install-common DESTDIR=$PKG1
+# make install-gnatlib DESTDIR=$PKG1
+ make -i install-info DESTDIR=$PKG1
+
+ chmod 755 $PKG1/usr/lib${LIBDIRSUFFIX}/libgcc_s.so.1
+
+ # This is provided by binutils, so delete it here:
+ rm -f $PKG1/usr/lib${LIBDIRSUFFIX}/libiberty.a
+ rm -f $PKG1/usr/lib/libiberty.a # catch-all
+
+ # Fix stuff up:
+ ( cd $PKG1/usr/info ; rm dir ; gzip -9 * )
+ ( cd $PKG1
+ # *not* ${LIBDIRSUFFIX}
+ mkdir -p lib
+ cd lib
+ ln -sf /usr/bin/cpp .
+ )
+ ( cd $PKG1/usr/bin
+ mv g++ g++-gcc-$VERSION
+ mv gcc gcc-$VERSION
+ mv ${TARGET}-gfortran gfortran-gcc-$VERSION
+ ln -sf g++-gcc-$VERSION g++
+ ln -sf gcc-$VERSION gcc
+ ln -sf g++ c++
+ ln -sf gcc cc
+ ln -sf gcc-$VERSION ${TARGET}-gcc
+ ln -sf gcc-$VERSION ${TARGET}-gcc-$VERSION
+ ln -sf gcj ${TARGET}-gcj
+ ln -sf gcjh ${TARGET}-gcjh
+ ln -sf g++-gcc-$VERSION ${TARGET}-c++
+ ln -sf g++-gcc-$VERSION ${TARGET}-g++
+ ln -sf gfortran-gcc-$VERSION gfortran
+ ln -sf gfortran-gcc-$VERSION ${TARGET}-gfortran
+ ln -sf gfortran-gcc-$VERSION ${TARGET}-gfortran-$VERSION
+ ln -sf gfortran-gcc-$VERSION ${TARGET}-g95
+ ln -sf gfortran g95
+ ln -sf gfortran f95
+ ln -sf gfortran-gcc-$VERSION ${TARGET}-g77
+ ln -sf gfortran g77
+ ln -sf gfortran f77
+ )
+ ( cd $PKG1/usr/man
+ gzip -9 */*
+ cd man1
+ ln -sf g++.1.gz c++.1.gz
+ ln -sf gcc.1.gz cc.1.gz
+ )
+
+ ## build the txz package
+ #(
+ # cd $PKG1;
+ # makepkg -l y -c n $TMP/gcc-$VERSION-$ARCH-$BUILD.txz
+ #)
+# keep a log
+) 2>&1 | tee $TMP/gcc.build.log
+
+# OK, time to split the big package where needed:
+
+# gcc-g++:
+( cd $PKG2
+ mkdir -p usr/bin
+ mv $PKG1/usr/bin/*++* usr/bin
+ mkdir -p usr/include
+ mv $PKG1/usr/include/c++ usr/include
+ mkdir -p usr/lib${LIBDIRSUFFIX}
+ mv $PKG1/usr/lib${LIBDIRSUFFIX}/*++* usr/lib${LIBDIRSUFFIX}
+ mkdir -p usr/libexec/gcc/$TARGET/$VERSION
+ mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/cc1plus usr/libexec/gcc/$TARGET/$VERSION/cc1plus
+ mkdir -p usr/man/man1
+ mv $PKG1/usr/man/man1/*++* usr/man/man1
+)
+
+# gcc-gfortran:
+( cd $PKG3
+ mkdir -p usr/bin
+ mv $PKG1/usr/bin/*gfortran* usr/bin
+ mv $PKG1/usr/bin/*95* usr/bin
+ mv $PKG1/usr/bin/*77* usr/bin
+ # Doesn't this seem like a logical idea?
+ ( cd usr/bin ; ln -sf gfortran-gcc-${VERSION} fortran )
+ mkdir -p usr/info
+ mv $PKG1/usr/info/gfortran* usr/info
+ mkdir -p usr/lib${LIBDIRSUFFIX}
+ mv $PKG1/usr/lib${LIBDIRSUFFIX}/libgfortran* usr/lib${LIBDIRSUFFIX}
+ mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION
+ mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/finclude usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION
+ mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/libgfortran* usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION
+ mkdir -p usr/libexec/gcc/$TARGET/$VERSION
+ mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/f951 usr/libexec/gcc/$TARGET/$VERSION/f951
+ mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/libgfortran* usr/libexec/gcc/$TARGET/$VERSION
+ mkdir -p usr/man/man1
+ mv $PKG1/usr/man/man1/gfortran* usr/man/man1
+)
+
+# gcc-gnat:
+( cd $PKG4
+ mkdir -p usr/bin
+ mv $PKG1/usr/bin/gnat* usr/bin
+ mv $PKG1/usr/bin/gpr* usr/bin
+ mkdir -p usr/info
+ mv $PKG1/usr/info/gnat* usr/info
+ mkdir -p usr/libexec/gcc/$TARGET/$VERSION
+ mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/gnat1 usr/libexec/gcc/$TARGET/$VERSION
+ mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION
+ mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/adainclude usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION
+ mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/adalib usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION
+)
+
+# gcc-java:
+( cd $PKG5
+ mkdir -p usr/bin
+ mv $PKG1/usr/bin/addr2name.awk usr/bin
+ # mv $PKG1/usr/bin/fastjar usr/bin
+ mv $PKG1/usr/bin/gappletviewer usr/bin
+ mv $PKG1/usr/bin/gc-analyze usr/bin
+ mv $PKG1/usr/bin/*gcj* usr/bin
+ mv $PKG1/usr/bin/gij usr/bin
+ mv $PKG1/usr/bin/gjar usr/bin
+ mv $PKG1/usr/bin/gjarsigner usr/bin
+ mv $PKG1/usr/bin/gkeytool usr/bin
+ mv $PKG1/usr/bin/grepjar usr/bin
+ mv $PKG1/usr/bin/grmid usr/bin
+ mv $PKG1/usr/bin/grmic usr/bin
+ mv $PKG1/usr/bin/grmiregistry usr/bin
+ mv $PKG1/usr/bin/gserialver usr/bin
+ mv $PKG1/usr/bin/gtnameserv usr/bin
+ mv $PKG1/usr/bin/gjavah usr/bin
+ mv $PKG1/usr/bin/gorbd usr/bin
+ mv $PKG1/usr/bin/jar usr/bin
+ mv $PKG1/usr/bin/jcf-dump usr/bin
+ mv $PKG1/usr/bin/jv-* usr/bin
+ mv $PKG1/usr/bin/rmi* usr/bin
+ mkdir -p usr/include
+ mv $PKG1/usr/include/ffi.h usr/include
+ mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
+ mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jawt.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
+ mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/ffi.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
+ mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/ffitarget.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
+ mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jawt_md.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
+ mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jni.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
+ mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jni_md.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
+ mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/jvmpi.h usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
+ mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/libffi usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
+ mkdir -p usr/info
+ mv $PKG1/usr/info/gcj.* usr/info
+ # mv $PKG1/usr/info/fastjar.* usr/info
+ mkdir -p usr/lib${LIBDIRSUFFIX}
+ mv $PKG1/usr/lib${LIBDIRSUFFIX}/libffi* usr/lib${LIBDIRSUFFIX}
+ mv $PKG1/usr/lib${LIBDIRSUFFIX}/logging.properties usr/lib${LIBDIRSUFFIX}
+ mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcj* usr/lib${LIBDIRSUFFIX}
+ mv $PKG1/usr/lib${LIBDIRSUFFIX}/libgcj* usr/lib${LIBDIRSUFFIX}
+ mv $PKG1/usr/lib${LIBDIRSUFFIX}/libgij* usr/lib${LIBDIRSUFFIX}
+ mv $PKG1/usr/lib${LIBDIRSUFFIX}/lib-org* usr/lib${LIBDIRSUFFIX}
+ mv $PKG1/usr/lib${LIBDIRSUFFIX}/security usr/lib${LIBDIRSUFFIX}
+ mkdir -p usr/lib${LIBDIRSUFFIX}/pkgconfig
+ mv $PKG1/usr/lib${LIBDIRSUFFIX}/pkgconfig/libgcj*.pc usr/lib${LIBDIRSUFFIX}/pkgconfig
+ rmdir $PKG1/usr/lib${LIBDIRSUFFIX}/pkgconfig 2> /dev/null
+ mkdir -p usr/libexec/gcc/$TARGET/$VERSION
+ mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/jc1 usr/libexec/gcc/$TARGET/$VERSION
+ mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/ecj1 usr/libexec/gcc/$TARGET/$VERSION
+ mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/jvgenmain usr/libexec/gcc/$TARGET/$VERSION
+ mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
+ mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/gcj usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
+ mkdir -p usr/man/man1
+ mv $PKG1/usr/man/man1/gappletviewer.1.gz usr/man/man1
+ mv $PKG1/usr/man/man1/gc-analyze.1.gz usr/man/man1
+ mv $PKG1/usr/man/man1/gcj.1.gz usr/man/man1
+ mv $PKG1/usr/man/man1/gcjh.1.gz usr/man/man1
+ mv $PKG1/usr/man/man1/gcj-dbtool.1.gz usr/man/man1
+ mv $PKG1/usr/man/man1/gij.1.gz usr/man/man1
+ mv $PKG1/usr/man/man1/gjar.1.gz usr/man/man1
+ mv $PKG1/usr/man/man1/gjarsigner.1.gz usr/man/man1
+ mv $PKG1/usr/man/man1/gjavah.1.gz usr/man/man1
+ mv $PKG1/usr/man/man1/gjnih.1.gz usr/man/man1
+ mv $PKG1/usr/man/man1/gkeytool.1.gz usr/man/man1
+ mv $PKG1/usr/man/man1/gnative2ascii.1.gz usr/man/man1
+ mv $PKG1/usr/man/man1/gorbd.1.gz usr/man/man1
+ mv $PKG1/usr/man/man1/grmic.1.gz usr/man/man1
+ mv $PKG1/usr/man/man1/grmid.1.gz usr/man/man1
+ mv $PKG1/usr/man/man1/grmiregistry.1.gz usr/man/man1
+ mv $PKG1/usr/man/man1/gserialver.1.gz usr/man/man1
+ mv $PKG1/usr/man/man1/gtnameserv.1.gz usr/man/man1
+ mv $PKG1/usr/man/man1/jcf-dump.1.gz usr/man/man1
+ mv $PKG1/usr/man/man1/jv-convert.1.gz usr/man/man1
+ mv $PKG1/usr/man/man1/jv-scan.1.gz usr/man/man1
+ mkdir -p usr/share
+ mv $PKG1/usr/share/java usr/share
+)
+
+# gcc-objc:
+( cd $PKG6
+ mkdir -p usr/lib${LIBDIRSUFFIX}
+ mv $PKG1/usr/lib${LIBDIRSUFFIX}/libobjc* usr/lib${LIBDIRSUFFIX}
+ mkdir -p usr/libexec/gcc/$TARGET/$VERSION
+ mv $PKG1/usr/libexec/gcc/$TARGET/$VERSION/cc1obj usr/libexec/gcc/$TARGET/$VERSION
+ mkdir -p usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
+ mv $PKG1/usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include/objc usr/lib${LIBDIRSUFFIX}/gcc/$TARGET/$VERSION/include
+)
+
+## NOTE: Thought about this, because the precompiled headers are so large.
+## Probably easier to keep everything together, though.
+## gcc-g++-gch (precompiled c++ headers)
+#( cd $PKG7
+# mkdir -p usr/include/c++/$VERSION/$TARGET/bits
+# mv $PKG2/usr/include/c++/$VERSION/$TARGET/bits/stdc++.h.gch usr/include/c++/$VERSION/$TARGET/bits
+#)
+
+# Filter all .la files (thanks much to Mark Post for the sed script):
+( cd $TMP
+ for file in $(find . -type f -name "*.la") ; do
+ cat $file | sed -e 's%-L/gcc-[[:graph:]]* % %g' > $TMP/tmp-la-file
+ cat $TMP/tmp-la-file > $file
+ done
+ rm $TMP/tmp-la-file
+)
+
+## Strip bloated binaries and libraries:
+for dir in $PKG{1,2,3,4,5,6}; do
+ ( cd $dir
+ find . -name "lib*so*" -exec strip --strip-unneeded "{}" \;
+ find . -name "lib*a" -exec strip -g "{}" \;
+ strip --strip-unneeded usr/bin/* 2> /dev/null
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ )
+done
+
+( cd $PKG1
+ makepkg -l y -c n $TMP/gcc-$VERSION-$ARCH-$BUILD.txz )
+( cd $PKG2
+ makepkg -l y -c n $TMP/gcc-g++-$VERSION-$ARCH-$BUILD.txz )
+( cd $PKG3
+ makepkg -l y -c n $TMP/gcc-gfortran-$VERSION-$ARCH-$BUILD.txz )
+( cd $PKG4
+ makepkg -l y -c n $TMP/gcc-gnat-$VERSION-$ARCH-$BUILD.txz )
+( cd $PKG5
+ makepkg -l y -c n $TMP/gcc-java-$VERSION-$ARCH-$BUILD.txz )
+( cd $PKG6
+ makepkg -l y -c n $TMP/gcc-objc-$VERSION-$ARCH-$BUILD.txz )
+#( cd $PKG7
+# makepkg -l y -c n $TMP/gcc-g++-gch-$VERSION-$ARCH-$BUILD.txz )
+
+echo
+echo "Slackware GCC package build complete!"
+echo
+
diff --git a/source/d/gcc/slack-desc.gcc b/source/d/gcc/slack-desc.gcc
new file mode 100644
index 000000000..04fccd4d9
--- /dev/null
+++ b/source/d/gcc/slack-desc.gcc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+gcc: gcc (Base GCC package with C support)
+gcc:
+gcc: GCC is the GNU Compiler Collection.
+gcc:
+gcc: This package contains those parts of the compiler collection needed to
+gcc: compile C code. Other packages add C++, Fortran, Objective-C, and
+gcc: Java support to the compiler core.
+gcc:
+gcc:
+gcc:
+gcc:
diff --git a/source/d/gcc/slack-desc.gcc-g++ b/source/d/gcc/slack-desc.gcc-g++
new file mode 100644
index 000000000..3cbabac16
--- /dev/null
+++ b/source/d/gcc/slack-desc.gcc-g++
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+gcc-g++: gcc-g++ (C++ for GCC)
+gcc-g++:
+gcc-g++: C++ support for the GNU Compiler Collection.
+gcc-g++:
+gcc-g++: This package contains those parts of the compiler collection needed to
+gcc-g++: compile C++ code. The base gcc package is also required.
+gcc-g++:
+gcc-g++:
+gcc-g++:
+gcc-g++:
+gcc-g++:
diff --git a/source/d/gcc/slack-desc.gcc-gfortran b/source/d/gcc/slack-desc.gcc-gfortran
new file mode 100644
index 000000000..ac844f0f1
--- /dev/null
+++ b/source/d/gcc/slack-desc.gcc-gfortran
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+gcc-gfortran: gcc-gfortran (Fortran support for GCC)
+gcc-gfortran:
+gcc-gfortran: This package contains those parts of the compiler collection
+gcc-gfortran: needed to compile Fortran code. The base gcc package is also
+gcc-gfortran: required. The GNU Fortran compiler is able to compile nearly all
+gcc-gfortran: standard-compliant Fortran 95, Fortran 90, and Fortran 77 programs,
+gcc-gfortran: including a number of standard and non-standard extensions, and can
+gcc-gfortran: be used on real-world programs. In particular, the supported
+gcc-gfortran: extensions include OpenMP, Cray-style pointers, and several Fortran
+gcc-gfortran: 2003 features such as enumeration, stream I/O, and some of the
+gcc-gfortran: enhancements to allocatable array support from TR 15581.
diff --git a/source/d/gcc/slack-desc.gcc-gnat b/source/d/gcc/slack-desc.gcc-gnat
new file mode 100644
index 000000000..ca2da5717
--- /dev/null
+++ b/source/d/gcc/slack-desc.gcc-gnat
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+gcc-gnat: gcc-gnat (Ada support for GCC)
+gcc-gnat:
+gcc-gnat: Ada 95 support for the GNU Compiler Collection.
+gcc-gnat:
+gcc-gnat: This package contains those parts of the compiler collection needed to
+gcc-gnat: compile Ada 95 code. Ada95 is the object oriented successor to the
+gcc-gnat: Ada83 language. The base gcc package is also required.
+gcc-gnat:
+gcc-gnat:
+gcc-gnat:
+gcc-gnat:
diff --git a/source/d/gcc/slack-desc.gcc-java b/source/d/gcc/slack-desc.gcc-java
new file mode 100644
index 000000000..b65ca5554
--- /dev/null
+++ b/source/d/gcc/slack-desc.gcc-java
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+gcc-java: gcc-java (Java support for GCC)
+gcc-java:
+gcc-java: Java support for the GNU Compiler Collection.
+gcc-java:
+gcc-java: This package contains those parts of the compiler collection needed to
+gcc-java: compile programs written in the Java programming language. The base
+gcc-java: gcc package is also required.
+gcc-java:
+gcc-java:
+gcc-java:
+gcc-java:
diff --git a/source/d/gcc/slack-desc.gcc-objc b/source/d/gcc/slack-desc.gcc-objc
new file mode 100644
index 000000000..c01b79e37
--- /dev/null
+++ b/source/d/gcc/slack-desc.gcc-objc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+gcc-objc: gcc-objc (Objective-C support for GCC)
+gcc-objc:
+gcc-objc: Objective-C support for the GNU Compiler Collection.
+gcc-objc:
+gcc-objc: This package contains those parts of the compiler collection needed to
+gcc-objc: compile code written in Objective-C. Objective-C was originally
+gcc-objc: developed to add object-oriented extensions to the C language, and is
+gcc-objc: best known as the native language of the NeXT computer.
+gcc-objc:
+gcc-objc: The base gcc package is also required.
+gcc-objc:
diff --git a/source/d/gdb/gdb.SlackBuild b/source/d/gdb/gdb.SlackBuild
new file mode 100755
index 000000000..ea55ec9dd
--- /dev/null
+++ b/source/d/gdb/gdb.SlackBuild
@@ -0,0 +1,115 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+
+VERSION=${VERSION:-6.8}
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-2}
+
+if [ "$ARCH" = "x86_64" ]; then
+ LIBDIRSUFFIX="64"
+else
+ LIBDIRSUFFIX=""
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-gdb
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf gdb-$VERSION
+tar xvf $CWD/gdb-$VERSION.tar.bz2 || exit 1
+cd gdb-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --build=$ARCH-slackware-linux
+
+( cd readline ; make )
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# None of this stuff has ever been included in this package:
+rm -f $PKG/usr/lib${LIBDIRSUFFIX}/{libbfd*,libiberty*,libopcodes*}
+rmdir $PKG/usr/lib${LIBDIRSUFFIX} 2> /dev/null
+rm -f $PKG/usr/info/{annotate*,bfd*,configure*,standards*}
+rm -rf $PKG/usr/include
+
+# Use the -tui option if you want this.
+# Including a whole extra copy of the gdb binary is obnoxious:
+rm -f $PKG/usr/bin/gdbtui $PKG/usr/man/man1/gdbtui.1*
+
+mkdir -p $PKG/usr/doc/gdb-$VERSION/gdb
+cp -a COPYING* README $PKG/usr/doc/gdb-$VERSION
+cd gdb
+cp -a NEWS README TODO $PKG/usr/doc/gdb-$VERSION/gdb
+cp -a gdbserver/README $PKG/usr/doc/gdb-$VERSION/README.gdbserver
+find $PKG/usr/doc/gdb-$VERSION -type f -exec chmod 644 {} \;
+
+# Strip binaries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+# Compress info files, if any:
+if [ -d $PKG/usr/info ]; then
+ ( cd $PKG/usr/info
+ rm -f dir
+ gzip -9 *
+ )
+fi
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/gdb-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/gdb/slack-desc b/source/d/gdb/slack-desc
new file mode 100644
index 000000000..bd6b78a64
--- /dev/null
+++ b/source/d/gdb/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+gdb: gdb (the GNU symbolic debugger)
+gdb: GDB, the GNU Project debugger, allows you to see what is going on
+gdb: inside another program while it executes -- or what another program
+gdb: was doing at the moment it crashed. GDB can do four main kinds of
+gdb: things to help you catch bugs in the act: 1) Start your program,
+gdb: specifying anything that might affect its behavior. 2) Make your
+gdb: program stop on specified conditions. 3) Examine what has happened,
+gdb: when your program has stopped. 4) Change things in your program, so
+gdb: you can experiment with correcting the effects of one bug and go on
+gdb: to learn about another. The program being debugged can be written in
+gdb: Ada, C, C++, Objective-C, Pascal and many other languages.
diff --git a/source/d/git/git-1.6.4.tar.sign b/source/d/git/git-1.6.4.tar.sign
new file mode 100644
index 000000000..2230cf7d7
--- /dev/null
+++ b/source/d/git/git-1.6.4.tar.sign
@@ -0,0 +1,8 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+Comment: See http://www.kernel.org/signature.html for info
+
+iD8DBQBKcAouyGugalF9Dw4RAqFKAJ9oLB8/l1VkfFlEjcAFo4Y5SUcq8gCeIbNI
+tWNG/MK+CTVBaz3cdiWCeJ8=
+=E/iU
+-----END PGP SIGNATURE-----
diff --git a/source/d/git/git.SlackBuild b/source/d/git/git.SlackBuild
new file mode 100755
index 000000000..bf00fcaed
--- /dev/null
+++ b/source/d/git/git.SlackBuild
@@ -0,0 +1,150 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+VERSION=1.6.4
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+eval $(perl '-V:installvendorlib')
+PERLDIR=$installvendorlib/$ARCH-linux-thread-multi/auto
+
+if ls /var/log/packages/git-* 1> /dev/null 2> /dev/null ; then
+ echo "Git is installed. The package should be removed before"
+ echo "building, or the new package might be missing some"
+ echo "perl modules."
+ echo
+ echo "You'll be given a short time to consider this."
+ sleep 3600
+fi
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-git
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf git-$VERSION
+tar xvf $CWD/git-$VERSION.tar.?z* || exit 1
+cd git-$VERSION
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+mkdir -p $PKG/usr/doc/git-$VERSION
+cp -a \
+ COPYING* INSTALL README \
+ Documentation \
+ contrib \
+ $PKG/usr/doc/git-$VERSION
+( cd $PKG/usr/doc/git-$VERSION/Documentation ; rm *.1 *.3 *.7 )
+
+make $NUMJOBS \
+ prefix=/usr \
+ mandir=/usr/man \
+ CFLAGS="$SLKCFLAGS" \
+ INSTALLDIRS=vendor \
+ all doc || exit 1
+
+make \
+ prefix=/usr \
+ mandir=/usr/man \
+ "CFLAGS=$SLKCFLAGS" \
+ INSTALLDIRS=vendor \
+ install \
+ install-doc \
+ DESTDIR=$PKG || exit 1
+
+mv $PKG/usr/share/man/man3 $PKG/usr/man
+rmdir $PKG/usr/share/man
+
+# Compress and if needed symlink the man pages:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Since Stuart Winter hates hard links. ;-)
+#
+# Switch a hard link with a soft link:
+( cd $PKG/usr/bin
+ find . -links +1 -not -name git | while read gitfile ; do
+ if [ git -ef $gitfile ]; then
+ rm -vf $gitfile
+ ln -vfs git $gitfile
+ fi
+ done
+)
+
+# This removes our DESTDIR from the packlist filenames, to keep perl's
+# internal inventories consistent and correct.
+find $PKG -name .packlist | while read plist ; do
+ sed -e "s%/share/man%/man%g" \
+ -e "s%$PKG%%g" \
+ -e "s%\.1$%\.1\.gz%g" \
+ -e "s%\.2$%\.2\.gz%g" \
+ -e "s%\.3$%\.3\.gz%g" \
+ -e "s%\.3pm$%\.3pm\.gz%g" \
+ -e "s%\.4$%\.4\.gz%g" \
+ -e "s%\.5$%\.5\.gz%g" \
+ -e "s%\.6$%\.6\.gz%g" \
+ -e "s%\.7$%\.7\.gz%g" \
+ -e "s%\.8$%\.8\.gz%g" \
+ ${plist} > ${plist}.new
+ mv -f ${plist}.new ${plist}
+done
+
+# This is junk:
+eval $(perl '-V:privlib')
+( cd $PKG$(dirname $privlib) && rm -rf 5.* )
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/git-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/git/slack-desc b/source/d/git/slack-desc
new file mode 100644
index 000000000..271b863a2
--- /dev/null
+++ b/source/d/git/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+git: git (the stupid content tracker)
+git:
+git: Git is a fast, scalable, distributed revision control system with an
+git: unusually rich command set that provides both high-level operations
+git: and full access to internals.
+git:
+git: "git" can mean anything, depending on your mood.
+git:
+git: Git was originally written by Linus Torvalds and is currently
+git: maintained by Junio C. Hamano.
+git:
diff --git a/source/d/gperf/gperf.SlackBuild b/source/d/gperf/gperf.SlackBuild
new file mode 100755
index 000000000..f17843174
--- /dev/null
+++ b/source/d/gperf/gperf.SlackBuild
@@ -0,0 +1,108 @@
+#!/bin/sh
+
+# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+
+PKGNAM=gperf
+VERSION=${VERSION:-3.0.3}
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+cd $TMP
+rm -rf ${PKGNAM}-${VERSION}
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+cd ${PKGNAM}-$VERSION
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Configure:
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --docdir=/usr/doc/gperf-$VERSION \
+ $ARCH-slackware-linux
+
+# Build and install:
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+cp -a \
+ AUTHORS COPYING INSTALL NEWS README* \
+ $PKG/usr/doc/gperf-$VERSION || exit 1
+
+# Strip binaries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.*
+ )
+ done
+ )
+fi
+
+# Compress info files, if any:
+if [ -d $PKG/usr/info ]; then
+ ( cd $PKG/usr/info
+ rm -f dir
+ gzip -9 *
+ )
+fi
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/gperf/slack-desc b/source/d/gperf/slack-desc
new file mode 100644
index 000000000..9451a6f87
--- /dev/null
+++ b/source/d/gperf/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+gperf: gperf (a perfect hash function generator)
+gperf:
+gperf: gperf is a perfect hash function generator written in C++.
+gperf: It transforms an n element user-specified keyword set W into a
+gperf: perfect hash function F. gperf currently generates the reserved
+gperf: keyword recognizer for lexical analyzers in several production and
+gperf: research compilers and language processing tools, including GNU C,
+gperf: GNU C++, GNU Java, GNU Pascal, GNU Modula 3, and GNU indent.
+gperf:
+gperf: gperf was written by by Douglas C. Schmidt and Bruno Haible.
+gperf:
diff --git a/source/d/guile/guile.SlackBuild b/source/d/guile/guile.SlackBuild
new file mode 100755
index 000000000..79ad575d2
--- /dev/null
+++ b/source/d/guile/guile.SlackBuild
@@ -0,0 +1,107 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+
+VERSION=1.8.7
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-guile
+rm -rf $PKG
+mkdir -p $TMP $PKG/usr
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+cd $TMP
+tar xvf $CWD/guile-$VERSION.tar.?z* || exit 1
+cd guile-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --infodir=/usr/info \
+ --mandir=/usr/man \
+ --with-threads \
+ $ARCH-slackware-linux
+
+# Does not like parallel make...
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+# Compress info files, if any:
+if [ -d $PKG/usr/info ]; then
+ ( cd $PKG/usr/info
+ rm -f dir
+ gzip -9 *
+ )
+fi
+
+mkdir -p $PKG/usr/doc/guile-$VERSION
+cp -a \
+ AUTHORS COPYING* FAQ GUILE-VERSION \
+ HACKING INSTALL LICENSE NEWS README THANKS \
+ $PKG/usr/doc/guile-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/guile-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/guile/slack-desc b/source/d/guile/slack-desc
new file mode 100644
index 000000000..9b3252807
--- /dev/null
+++ b/source/d/guile/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+guile: guile (GNU's extension language library)
+guile:
+guile: This is Guile, Project GNU's extension language library. Guile is an
+guile: interpreter for Scheme, packaged as a library that you can link into
+guile: your applications to give them their own scripting language. Guile
+guile: will eventually support other languages as well, giving users of
+guile: Guile-based applications a choice of languages.
+guile:
+guile:
+guile:
+guile:
diff --git a/source/d/indent/indent.SlackBuild b/source/d/indent/indent.SlackBuild
new file mode 100755
index 000000000..6223b3eb4
--- /dev/null
+++ b/source/d/indent/indent.SlackBuild
@@ -0,0 +1,110 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+
+VERSION=${VERSION:-2.2.10}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-indent
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf indent-$VERSION
+tar xvf $CWD/indent-$VERSION.tar.bz2 || exit 1
+cd indent-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# GCC4 fix
+#sed -i -e 's#extern FILE \*output#static FILE *output#' src/indent.h || exit 1
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG
+
+# I'm not sure why this man page fails, but...
+if find $PKG -type f -size 0c -name indent.1 ; then
+ ( cd man
+ ./texinfo2man ./indent.1.in ./../doc/indent.texinfo > indent.1
+ cat indent.1 > $PKG/usr/man/man1/indent.1
+ )
+fi
+
+# Strip binaries and libraries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress man pages:
+( cd $PKG/usr/man
+ find . -type f -exec gzip -9 {} \;
+ for i in $( find . -type l ) ; do
+ ln -s $( readlink $i ).gz $i.gz ; rm $i
+ done
+)
+
+# Compress info pages and remove the package's dir file:
+rm -f $PKG/usr/info/dir
+gzip -9 $PKG/usr/info/*.info*
+
+# Copy program documentation into the package:
+mkdir -p $PKG/usr/doc/indent-$VERSION
+cp -a \
+ AUTHORS COPYING* NEWS README \
+ $PKG/usr/doc/indent-$VERSION
+chmod 644 $PKG/usr/doc/indent-$VERSION/*
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/indent-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/indent/slack-desc b/source/d/indent/slack-desc
new file mode 100644
index 000000000..fd1d0712b
--- /dev/null
+++ b/source/d/indent/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+indent: indent (changes the appearance of a C program)
+indent:
+indent: GNU indent changes the appearance of a C program by inserting or
+indent: deleting whitespace according to a plethora of options. Some canned
+indent: styles of formatting (like the GNU style, Kernighan & Ritchie style,
+indent: and original Berkeley style) are supported as well.
+indent:
+indent: GNU indent is a descendant of BSD indent.
+indent:
+indent:
+indent:
diff --git a/source/d/intltool/intltool.SlackBuild b/source/d/intltool/intltool.SlackBuild
new file mode 100755
index 000000000..5afd3e154
--- /dev/null
+++ b/source/d/intltool/intltool.SlackBuild
@@ -0,0 +1,107 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+
+PKGNAM=intltool
+VERSION=0.40.5
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+cd $TMP
+rm -rf ${PKGNAM}-${VERSION}
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+cd ${PKGNAM}-$VERSION
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Configure:
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --docdir=/usr/doc/${PKGNAM}-$VERSION \
+ --disable-static \
+ --build=$ARCH-slackware-linux
+
+# Build and install:
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# Strip binaries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+# Compress info files, if any:
+if [ -d $PKG/usr/info ]; then
+ rm -f $PKG/usr/info/dir
+ gzip -9 $PKG/usr/info/*
+fi
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+cp -a \
+ AUTHORS COPYING* INSTALL NEWS README* TODO \
+ $PKG/usr/doc/${PKGNAM}-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/intltool/slack-desc b/source/d/intltool/slack-desc
new file mode 100644
index 000000000..6741f290e
--- /dev/null
+++ b/source/d/intltool/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+intltool: intltool (Utilities for translation support)
+intltool:
+intltool: This package contains scripts and autoconf files for
+intltool: internationalizing data.
+intltool:
+intltool:
+intltool:
+intltool:
+intltool:
+intltool:
+intltool:
diff --git a/source/d/kernel-headers/slack-desc b/source/d/kernel-headers/slack-desc
new file mode 100644
index 000000000..1593f4df2
--- /dev/null
+++ b/source/d/kernel-headers/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+kernel-headers: kernel-headers (Linux kernel include files)
+kernel-headers:
+kernel-headers: These are the include files from the Linux kernel.
+kernel-headers:
+kernel-headers: You'll need these to compile most system software for Linux.
+kernel-headers:
+kernel-headers:
+kernel-headers:
+kernel-headers:
+kernel-headers:
+kernel-headers:
diff --git a/source/d/libtool/doinst.sh b/source/d/libtool/doinst.sh
new file mode 100644
index 000000000..38b074dd6
--- /dev/null
+++ b/source/d/libtool/doinst.sh
@@ -0,0 +1,18 @@
+# Update the /usr/info/dir info-database, so that we will see the new
+# "libtool" item in info root structure, if we type "info".
+if [ -x /usr/bin/install-info ] ; then
+ install-info --info-dir=/usr/info /usr/info/libtool.info.gz 2>/dev/null
+elif fgrep "libtoolize" usr/info/dir 1> /dev/null 2> /dev/null ; then
+ GOOD=yes # It seems to be entered in the /usr/info/dir already
+else # add the info to the dir file directly:
+cat << EOF >> usr/info/dir
+
+GNU programming tools
+* libtoolize: (libtool)Invoking libtoolize. Adding libtool support.
+* Libtool: (libtool). Generic shared library support script.
+
+Individual utilities
+* libtoolize: (libtool)Invoking libtoolize. Adding libtool support.
+* Libtool: (libtool). Generic shared library support script.
+EOF
+fi
diff --git a/source/d/libtool/libtool.SlackBuild b/source/d/libtool/libtool.SlackBuild
new file mode 100755
index 000000000..fb833a720
--- /dev/null
+++ b/source/d/libtool/libtool.SlackBuild
@@ -0,0 +1,92 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+
+VERSION=1.5.26
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-libtool
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf libtool-$VERSION
+tar xvf $CWD/libtool-$VERSION.tar.?z* || exit 1
+cd libtool-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+zcat $CWD/libtool.no.moved.warning.diff.gz | patch -p1 --verbose || exit 1
+
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --infodir=/usr/info \
+ --docdir=/usr/doc/libtool-$VERSION \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+rm -f $PKG/usr/info/dir
+gzip -9 $PKG/usr/info/*
+
+mkdir -p $PKG/usr/doc/libtool-$VERSION
+cp -a \
+ AUTHORS COPYING NEWS README THANKS TODO \
+ $PKG/usr/doc/libtool-$VERSION
+
+mkdir $PKG/install
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/libtool-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/libtool/libtool.no.moved.warning.diff b/source/d/libtool/libtool.no.moved.warning.diff
new file mode 100644
index 000000000..e5197b5c6
--- /dev/null
+++ b/source/d/libtool/libtool.no.moved.warning.diff
@@ -0,0 +1,32 @@
+diff -Nur libtool-1.5.26.orig/libltdl/ltmain.sh libtool-1.5.26/libltdl/ltmain.sh
+--- libtool-1.5.26.orig/libltdl/ltmain.sh 2008-02-01 10:39:51.000000000 -0600
++++ libtool-1.5.26/libltdl/ltmain.sh 2008-10-01 13:59:24.654020673 -0500
+@@ -2952,9 +2952,9 @@
+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+- if test "$absdir" != "$libdir"; then
+- $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+- fi
++ #if test "$absdir" != "$libdir"; then
++ # $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
++ #fi
+ path="$absdir"
+ fi
+ depdepl=
+diff -Nur libtool-1.5.26.orig/ltmain.sh libtool-1.5.26/ltmain.sh
+--- libtool-1.5.26.orig/ltmain.sh 2008-02-01 10:39:51.000000000 -0600
++++ libtool-1.5.26/ltmain.sh 2008-10-01 13:59:24.690024584 -0500
+@@ -2952,9 +2952,9 @@
+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+- if test "$absdir" != "$libdir"; then
+- $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+- fi
++ #if test "$absdir" != "$libdir"; then
++ # $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
++ #fi
+ path="$absdir"
+ fi
+ depdepl=
diff --git a/source/d/libtool/slack-desc b/source/d/libtool/slack-desc
new file mode 100644
index 000000000..7bf0e8d32
--- /dev/null
+++ b/source/d/libtool/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+libtool: libtool (a generic library support script)
+libtool:
+libtool: This is GNU Libtool, a generic library support script. Libtool hides
+libtool: the complexity of using shared libraries behind a consistent, portable
+libtool: interface. To use libtool, add the new generic library building
+libtool: commands to your Makefile, Makefile.in, or Makefile.am. See the
+libtool: documentation for details.
+libtool:
+libtool: You must install the "m4" package to be able to use libtool.
+libtool:
+libtool:
diff --git a/source/d/m4/m4.SlackBuild b/source/d/m4/m4.SlackBuild
new file mode 100755
index 000000000..06c73757e
--- /dev/null
+++ b/source/d/m4/m4.SlackBuild
@@ -0,0 +1,120 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+VERSION=1.4.13
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-m4
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf m4-$VERSION
+tar xvf $CWD/m4-$VERSION.tar.?z* || exit 1
+cd m4-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --docdir=/usr/doc/m4-$VERSION \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# Compress and if needed symlink the man pages:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+# Compress info pages and purge "dir" file from the package:
+if [ -d $PKG/usr/info ]; then
+ rm -f $PKG/usr/info/dir
+ gzip -9 $PKG/usr/info/*
+fi
+
+# ye olde cruft
+#
+# ansi2knr is no longer part of the m4 sources.
+# Geez, I'm gonna have to learn ANSI C now...
+#
+#( cd src ; make ansi2knr )
+#gzip -9 $PKG/usr/info/m4.info.gz
+#cat src/m4 > $PKG/usr/bin/m4
+#chmod 755 $PKG/usr/bin/*
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null || true
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
+)
+
+mkdir -p $PKG/usr/doc/m4-$VERSION
+cp -a \
+ BACKLOG COPYING* NEWS README THANKS TODO examples \
+ $PKG/usr/doc/m4-$VERSION
+head -n 357 ChangeLog > $PKG/usr/doc/m4-$VERSION/ChangeLog
+touch -r ChangeLog $PKG/usr/doc/m4-$VERSION/ChangeLog
+chmod 644 $PKG/usr/doc/m4-$VERSION/COPYING*
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/m4-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/m4/slack-desc b/source/d/m4/slack-desc
new file mode 100644
index 000000000..7951b9bd8
--- /dev/null
+++ b/source/d/m4/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+m4: m4 (an implementation of the UNIX macro processor)
+m4:
+m4: This is GNU m4, a program which copies its input to the output,
+m4: expanding macros as it goes. m4 has built-in functions for including
+m4: named files, running commands, doing integer arithmetic, manipulating
+m4: text in various ways, recursion, etc... Macros can also be user-
+m4: defined, and can take any number of arguments.
+m4:
+m4: GNU 'm4' was originally written by Rene Seindal, from Denmark.
+m4:
+m4:
diff --git a/source/d/make/make.SlackBuild b/source/d/make/make.SlackBuild
new file mode 100755
index 000000000..15f4b6102
--- /dev/null
+++ b/source/d/make/make.SlackBuild
@@ -0,0 +1,84 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+
+VERSION=3.81
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-make
+
+if [ "$ARCH" = "i386" ]; then
+ SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
+elif [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf make-$VERSION
+tar xjvf $CWD/make-$VERSION.tar.bz2
+cd make-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ $ARCH-slackware-linux
+make
+make install DESTDIR=$PKG
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+gzip -9 $PKG/usr/man/man1/*
+rm $PKG/usr/info/dir
+gzip -9 $PKG/usr/info/*
+# This has been here so long that it should probably stay.
+# Trying to get rid of ginstall didn't go well, so... :-)
+( cd $PKG/usr/bin
+ rm -f gmake
+ ln -sf make gmake )
+mkdir -p $PKG/usr/doc/make-$VERSION
+cp -a \
+ ABOUT-NLS AUTHORS COPYING NEWS README* \
+ $PKG/usr/doc/make-$VERSION/
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/make-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/make/slack-desc b/source/d/make/slack-desc
new file mode 100644
index 000000000..ef19ca33a
--- /dev/null
+++ b/source/d/make/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+make: make (GNU make utility to maintain groups of programs)
+make:
+make: This is the GNU implementation of make, which was written by Richard
+make: Stallman and Roland McGrath. The purpose of the make utility is to
+make: determine automatically which pieces of a large program need to be
+make: recompiled, and issue the commands to recompile them.
+make:
+make: This is needed to compile just about any major C program, including
+make: the Linux kernel.
+make:
+make:
diff --git a/source/d/mercurial/mercurial.SlackBuild b/source/d/mercurial/mercurial.SlackBuild
new file mode 100755
index 000000000..88ccc969f
--- /dev/null
+++ b/source/d/mercurial/mercurial.SlackBuild
@@ -0,0 +1,69 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+VERSION=1.2.1
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-mercurial
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf mercurial-$VERSION
+tar xvf $CWD/mercurial-$VERSION.tar.bz2 || exit 1
+cd mercurial-$VERSION
+chown -R root.root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+python setup.py build install --root=$PKG || exit 1
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+( cd doc
+ for dir in 1 5 ; do
+ mkdir -p $PKG/usr/man/man${dir}
+ for file in *.${dir} ; do
+ cat $file | gzip -9c > $PKG/usr/man/man${dir}/${file}.gz
+ done
+ done
+)
+
+mkdir -p $PKG/usr/doc/mercurial-$VERSION
+cp -a \
+ CONTRIBUTORS COPYING* PKG-INFO README* \
+ $PKG/usr/doc/mercurial-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/mercurial-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/mercurial/slack-desc b/source/d/mercurial/slack-desc
new file mode 100644
index 000000000..e770f6c31
--- /dev/null
+++ b/source/d/mercurial/slack-desc
@@ -0,0 +1,22 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+# This article is licensed under the GNU Free Documentation License.
+# It uses material from the Wikipedia article "Mercurial".
+
+ |-----handy-ruler------------------------------------------------------|
+mercurial: mercurial (a distributed source management system)
+mercurial:
+mercurial: Mercurial is a cross-platform, distributed source management tool for
+mercurial: software developers. It is written in Python, with a binary diff
+mercurial: implementation written in C. Its major features include high-
+mercurial: performance; serverless, fully distributed collaborative development;
+mercurial: robust handling of both plain text and binary files; advanced
+mercurial: branching and merging capabilities; and full source code available
+mercurial: under the terms of the LGPL.
+mercurial:
+mercurial: Mercurial was written by Matt Mackall and other contributors.
diff --git a/source/d/nasm/nasm.SlackBuild b/source/d/nasm/nasm.SlackBuild
new file mode 100755
index 000000000..27cbc57cd
--- /dev/null
+++ b/source/d/nasm/nasm.SlackBuild
@@ -0,0 +1,83 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+
+VERSION=2.05.01
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+if [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-nasm
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf nasm-$VERSION
+tar xvf $CWD/nasm-$VERSION.tar.bz2 || exit 1
+cd nasm-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --mandir=/usr/man \
+ --build=${ARCH}-slackware-linux || exit 1
+make || exit 1
+mkdir -p $PKG/usr/bin $PKG/usr/man/man1
+make install INSTALLROOT=$PKG || exit 1
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+mkdir -p $PKG/usr/doc/nasm-$VERSION
+cp -a \
+ AUTHORS CHANGES COPYING INSTALL LICENSE README TODO \
+ $PKG/usr/doc/nasm-$VERSION
+
+( cd doc
+ make
+ cd info
+ mkdir -p $PKG/usr/info
+ cp -a * $PKG/usr/info
+ gzip -9 $PKG/usr/info/*
+)
+
+gzip -9 $PKG/usr/man/man?/*
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/nasm-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/nasm/slack-desc b/source/d/nasm/slack-desc
new file mode 100644
index 000000000..6fd4778f2
--- /dev/null
+++ b/source/d/nasm/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+nasm: nasm (NASM assembler)
+nasm:
+nasm: NASM is the Netwide Assembler, a free portable assembler for the Intel
+nasm: 80x86 microprocessor series, using primarily the traditional Intel
+nasm: instruction mnemonics and syntax.
+nasm:
+nasm: NASM was written by Simon Tatham and Julian Hall.
+nasm:
+nasm:
+nasm:
+nasm:
diff --git a/source/d/oprofile/oprofile.SlackBuild b/source/d/oprofile/oprofile.SlackBuild
new file mode 100755
index 000000000..28feae4ab
--- /dev/null
+++ b/source/d/oprofile/oprofile.SlackBuild
@@ -0,0 +1,96 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+
+VERSION=0.9.4
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-oprofile
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP || exit 1
+rm -rf oprofile-$VERSION
+tar xvf $CWD/oprofile-$VERSION.tar.bz2 || exit 1
+cd oprofile-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --with-kernel-support
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG
+
+# This seems misplaced, and isn't referenced by any binaries or other files.
+# I'm tempted to think it shouldn't have been installed, but will just move it:
+if [ -r $PKG/usr/share/mangled-name ]; then
+ mv $PKG/usr/share/mangled-name $PKG/usr/share/oprofile/mangled-name
+fi
+( cd $PKG/usr/bin
+ strip --strip-unneeded *
+)
+mv $PKG/usr/share/doc $PKG/usr
+mv $PKG/usr/doc/oprofile $PKG/usr/doc/oprofile-$VERSION
+cp -a \
+ COPYING README TODO \
+ $PKG/usr/doc/oprofile-$VERSION
+
+gzip -9 $PKG/usr/man/man?/*
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/oprofile-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/oprofile/slack-desc b/source/d/oprofile/slack-desc
new file mode 100644
index 000000000..9988ec5db
--- /dev/null
+++ b/source/d/oprofile/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+oprofile: oprofile (system profiling tool)
+oprofile:
+oprofile: OProfile is a profiling system for Linux. Profiling runs
+oprofile: transparently in the background and profile data can be collected
+oprofile: at any time. OProfile makes use of the hardware performance
+oprofile: counters provided on Intel, AMD, and other processors, and uses a
+oprofile: timer-interrupt based mechanism on CPUs without counters.
+oprofile: OProfile can profile the whole system in high detail.
+oprofile:
+oprofile:
+oprofile:
diff --git a/source/d/p2c/p2c.SlackBuild b/source/d/p2c/p2c.SlackBuild
new file mode 100755
index 000000000..11bdee850
--- /dev/null
+++ b/source/d/p2c/p2c.SlackBuild
@@ -0,0 +1,122 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+
+# Sources:
+# ftp://ftp.pal.xgw.fi/pub/gnu/alpha/gnu/p2c-1.21alpha2.tar.gz
+# ftp://ftp.clara.net/pub/mirrors/gnu/hurd/p2c-1.21alpha2.tar.gz
+# ftp://ftp.obspm.fr/pub1/computing/gnu/hurd/p2c-1.21alpha2.tar.gz
+
+VERSION=${VERSION:-1.21alpha2}
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-3}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-p2c
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+# Explode the package framework:
+cd $PKG
+explodepkg $CWD/_p2c.tar.gz
+
+cd $TMP
+rm -rf p2c-1.21alpha-07.Dec.93
+tar xvf $CWD/p2c-1.21alpha2.tar.gz || exit 1
+cd p2c-1.21alpha-07.Dec.93 || exit 1
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+zcat $CWD/p2c_1.21alpha2-2.1.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
+zcat $CWD/p2c_time.diff.gz | patch -p0 --verbose --backup --suffix=.orig || exit 1
+find . -name "*.orig" | xargs rm --verbose
+# Fix library paths:
+sed -i -e "s#/lib #/lib${LIBDIRSUFFIX} #g" \
+ -e "s#/lib\$#/lib${LIBDIRSUFFIX}#g" \
+ -e "s#/lib/#/lib${LIBDIRSUFFIX}/#g" \
+ $( grep -lr '/lib' * )
+
+cd src
+make OPT="$SLKCFLAGS" || exit 1
+make p2cc
+
+mv $PKG/usr/lib $PKG/usr/lib${LIBDIRSUFFIX} 2>/dev/null
+cat p2c > $PKG/usr/bin/p2c
+cat p2cc > $PKG/usr/bin/p2cc
+cat libp2c.a > $PKG/usr/lib${LIBDIRSUFFIX}/libp2c.a
+cat p2c.man | gzip -9c > $PKG/usr/man/man1/p2c.1.gz
+cat p2cc.man | gzip -9c > $PKG/usr/man/man1/p2cc.1.gz
+cat sys.p2crc > $PKG/usr/lib${LIBDIRSUFFIX}/p2c/p2crc
+cat loc.p2crc > $PKG/usr/lib${LIBDIRSUFFIX}/p2c/loc.p2crc
+cat system.imp > $PKG/usr/lib${LIBDIRSUFFIX}/p2c/system.imp
+cat system.m2 > $PKG/usr/lib${LIBDIRSUFFIX}/p2c/system.m2
+cat turbo.imp > $PKG/usr/lib${LIBDIRSUFFIX}/p2c/turbo.imp
+cat string.pas > $PKG/usr/lib${LIBDIRSUFFIX}/p2c/string.pas
+cat p2c.h > $PKG/usr/include/p2c/p2c.h
+cd ..
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+mkdir -p $PKG/usr/doc/p2c-1.21alpha2
+cp -a \
+ README ftp.README \
+ $PKG/usr/doc/p2c-1.21alpha2
+( cd src
+ for file in HISTORY NOTES COPYING INSTALL ; do
+ cp -a $file $PKG/usr/doc/p2c-1.21alpha2
+ done
+)
+cp -a src/README $PKG/usr/doc/p2c-1.21alpha2/README.src
+cp -a examples $PKG/usr/doc/p2c-1.21alpha2
+( cd $PKG/usr/doc/p2c-1.21alpha2
+ zcat $CWD/p2c.examples.diff.gz | patch -p1 --verbose || exit 1
+) || exit 1
+rm -f $PKG/usr/doc/p2c-1.21alpha2/examples/Makefile~
+rm -rf $PKG/usr/doc/p2c-1.21alpha2/examples/c
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/p2c-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/p2c/p2c.examples.diff b/source/d/p2c/p2c.examples.diff
new file mode 100644
index 000000000..2a66af55b
--- /dev/null
+++ b/source/d/p2c/p2c.examples.diff
@@ -0,0 +1,15 @@
+--- ./examples/Makefile.orig 1993-12-07 23:36:58.000000000 -0600
++++ ./examples/Makefile 2007-06-02 12:53:13.000000000 -0500
+@@ -4,9 +4,9 @@
+
+ # The following definitions assume p2c has been compiled into the "home"
+ # directory as shown in src/Makefile.
+-P2C = ../p2c
+-INC = ../home
+-LIB = ../home/libp2c.a
++P2C = p2c
++INC = /usr/include/p2c
++LIB = /usr/lib/libp2c.a
+
+
+ default: comp
diff --git a/source/d/p2c/p2c_1.21alpha2-2.1.diff b/source/d/p2c/p2c_1.21alpha2-2.1.diff
new file mode 100644
index 000000000..b7fbaf007
--- /dev/null
+++ b/source/d/p2c/p2c_1.21alpha2-2.1.diff
@@ -0,0 +1,320 @@
+--- p2c-1.21alpha2.orig/debian/README.Debian
++++ p2c-1.21alpha2/debian/README.Debian
+@@ -0,0 +1,54 @@
++p2c for Debian
++--------------
++
++You should be aware that p2c is not perfect in converting Pascal sources
++to C, and it won't make the best C code.
++
++Also if you notice that your translated C program won't compile because
++of an undefined reference to PASCAL_MAIN function, just comment that line
++from the C file and it should work.
++
++Here are some words from src/INSTALL file that could be of some use:
++
+++++
++
++ Incomplete interface texts for standard Turbo units are included in
++ turbo.imp. Turbo users will have to flesh these out and write emulations
++ for whatever parts of the Turbo runtime library they need.
++
++ If you wish to edit various system-wide configuration parameters, it is
++ better to put them in loc.p2crc than in sys.p2crc. As an example, on a
++ Turbo-oriented environment you may wish to add
++
++ Language Turbo
++
++ to the loc.p2crc file to replace the normal default (HP Pascal).
++
++ PORTABILITY
++
++ P2c was originally developed on a homebrew C compiler on the HP Pascal
++ Workstation operating system. Current development takes place on HP-UX,
++ which is System V based. The translator has also been compiled and used
++ on Sun-3's, so presumably it is fairly portable among 32-bit Unix machines.
++
++ Many parts of the code will have to be adjusted in order for p2c to work
++ on a machine with 16-bit ints. I have never had reason or opportunity to
++ track these down since I don't have access to such a machine. Please note
++ that code _generated_ by p2c works with either size of int even though p2c
++ itself does not.
++
++ If your compiler supports ANSI prototypes, most of the 16-bit portability
++ problems will go away except for possible %d/%ld sloppiness in sprintf control
++ strings. There may be places where p2c tries to cast a pointer into an
++ int, but I believe all such cases use longs consistently. You will have
++ a problem if your long type is not large enough to store a pointer.
++
++ Because p2c was developed to run under Unix, it is sloppy about memory
++ allocation. Some data structures are allocated but never freed. Profiles
++ show that the waste is not too great in most cases, but if it is a problem
++ you may have to write a garbage collector (this shouldn't be too hard if you
++ only run the collector after translating each procedure).
++
+++++
++
++ -- Josip Rodin <joy-packages@debian.org>, Mon, 28 Dec 1998 18:14:23 +0100
+--- p2c-1.21alpha2.orig/debian/rules
++++ p2c-1.21alpha2/debian/rules
+@@ -0,0 +1,46 @@
++#!/usr/bin/make -f
++# Derived from a dh_make example and Andrew Howell's rules file.
++
++#export DH_VERBOSE=1
++export DH_COMPAT=4
++
++CFLAGS := -g -Wall
++ifneq "$(findstring noopt,$(DEB_BUILD_OPTIONS))" ""
++CFLAGS += -O0
++else
++CFLAGS += -O2
++endif
++
++build: src/p2c
++src/p2c: src/p2c.h
++ $(MAKE) -C src OPT="$(CFLAGS)" LFLAGS="-s"
++
++clean:
++ dh_testdir
++ dh_testroot
++ $(MAKE) -C src clean
++ dh_clean
++
++binary-indep:
++# No architecture independant packages here.
++
++binary-arch: build
++ dh_testdir
++ dh_testroot
++ dh_clean -k
++ $(MAKE) -C src install PREFIX="$(CURDIR)/debian/p2c/usr"
++ dh_installdocs src/README src/NOTES
++ dh_installexamples examples/*
++ dh_installchangelogs src/HISTORY
++ dh_link usr/share/man/man1/p2c.1.gz usr/share/man/man1/p2cc.1.gz
++ dh_strip
++ dh_compress
++ dh_fixperms
++ dh_installdeb
++ dh_shlibdeps
++ dh_gencontrol
++ dh_md5sums
++ dh_builddeb
++
++binary: binary-indep binary-arch
++.PHONY: build clean binary-indep binary-arch binary
+--- p2c-1.21alpha2.orig/debian/control
++++ p2c-1.21alpha2/debian/control
+@@ -0,0 +1,26 @@
++Source: p2c
++Section: devel
++Priority: optional
++Maintainer: Josip Rodin <joy-packages@debian.org>
++Build-Depends: debhelper (>= 4)
++Standards-Version: 3.6.0
++
++Package: p2c
++Architecture: any
++Depends: ${shlibs:Depends}
++Suggests: gcc, gpc
++Description: Pascal to C translator
++ P2c is a tool for translating Pascal programs into C. The input
++ consists of a set of source files in any of the following Pascal
++ dialects: HP Pascal, Turbo/UCSD Pascal, DEC VAX Pascal, Oregon Software
++ Pascal/2, Macintosh Programmer's Workshop Pascal, Sun/Berkeley Pascal,
++ Texas Instruments Pascal, Apollo Domain Pascal. Modula-2 syntax is also
++ supported.
++ .
++ Output is a set of .c and .h files that comprise an equivalent program
++ in any of several dialects of C. Output code may be kept machine and
++ dialect-independent, or it may be targeted to a specific machine and
++ compiler. Most reasonable Pascal programs are converted into fully
++ functional C which will compile and run with no further modifications,
++ although p2c sometimes chooses to generate readable code at the expense
++ of absolute generality.
+--- p2c-1.21alpha2.orig/debian/copyright
++++ p2c-1.21alpha2/debian/copyright
+@@ -0,0 +1,25 @@
++This package was put together by Andrew Howell.
++The current maintainer is Josip Rodin <joy-packages@debian.org>.
++
++The original source can be found at:
++ http://www.synaptics.com/people/daveg/
++
++p2c's author is Dave Gillespie <daveg@synaptics.com>.
++
++Copyright 1989-1993 Free Software Foundation, Inc.
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; version 2 dated June, 1991.
++
++ This program is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU General Public License for more details.
++
++ You should have received a copy of the GNU General Public License
++ along with this program; if not, write to the Free Software Foundation,
++ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++
++On Debian systems, the complete text of the GNU General Public License
++can be found in the file /usr/share/common-licenses/GPL.
+--- p2c-1.21alpha2.orig/debian/changelog
++++ p2c-1.21alpha2/debian/changelog
+@@ -0,0 +1,52 @@
++p2c (1.21alpha2-2.1) unstable; urgency=low
++
++ * Non-maintainer upload (0-day)
++ * Applied patch by Peter De Wachter that fixes double memory free()'s
++ (Closes: #305412, #307706)
++
++ -- Roland Stigge <stigge@antcom.de> Thu, 5 May 2005 16:04:37 +0200
++
++p2c (1.21alpha2-2) unstable; urgency=low
++
++ * Added debhelper to build-depends, closes: #190499.
++ * Updated package standards.
++
++ -- Josip Rodin <joy-packages@debian.org> Sat, 16 Aug 2003 13:02:10 +0200
++
++p2c (1.21alpha2-1) unstable; urgency=low
++
++ * New upstream version. Although it is marked as "alpha", it has been
++ made in 1993, so... :) (closes: #39400)
++ * Updated for Policy 3.x, rewrote most of debian/* and made a better
++ src/Makefile patch.
++
++ -- Josip Rodin <jrodin@jagor.srce.hr> Sat, 11 Sep 1999 23:34:19 +0200
++
++p2c (1.20-3) unstable; urgency=low
++
++ * Removed `-m486 -fomit-frame-pointer' from the gcc flags, since ix86
++ doesn't need it and it bugs m68k (and other ports).
++
++ -- Josip Rodin <jrodin@jagor.srce.hr> Thu, 7 Jan 1999 19:01:32 +0100
++
++p2c (1.20-2) unstable; urgency=low
++
++ * Fixed the FSF address in copyright file
++
++ -- Josip Rodin <jrodin@jagor.srce.hr> Tue, 29 Dec 1998 21:13:52 +0100
++
++p2c (1.20-1) unstable; urgency=low
++
++ * Initial Release for potato (2.2)
++ * Converted to new packaging format/standards
++
++ -- Josip Rodin <jrodin@jagor.srce.hr> Mon, 28 Dec 1998 18:14:23 +0100
++
++Changes by Andrew Howell <andrew@it.com.au>:
++
++1.20-2:
++ 951123
++ * Converted to ELF.
++
++1.20-1:
++ * added Debian GNU/Linux package maintenance system files
+--- p2c-1.21alpha2.orig/src/Makefile
++++ p2c-1.21alpha2/src/Makefile
+@@ -19,22 +19,23 @@
+ SHELL = /bin/sh
+
+ # Directories (private version)
+-HOMEDIR = ../home
+-INCDIR = ../home/p2c
+-BINDIR = ..
+-LIBDIR = ../home
+-MANDIR = ../home
+-MANFILE = p2c.cat # human-readable manual (for cat.1)
++#HOMEDIR = ../home
++#INCDIR = ../home/p2c
++#BINDIR = ..
++#LIBDIR = ../home
++#MANDIR = ../home
++#MANFILE = p2c.cat # human-readable manual (for cat.1)
+ #MANFILE = p2c.man.inst # uncompressed nroff source (for man.1)
+ #MANFILE = p2c.man.Z # compressed nroff source (for man.1.Z)
+
+ # Directories (public version)
+-#HOMEDIR = /usr/lib/p2c
+-#INCDIR = /usr/include/p2c
+-#BINDIR = /usr/bin
+-#LIBDIR = /usr/lib
+-#MANDIR = /usr/man/man1
+-#MANFILE = p2c.man.inst
++PREFIX = /usr
++HOMEDIR = $(PREFIX)/lib/p2c
++INCDIR = $(PREFIX)/include/p2c
++BINDIR = $(PREFIX)/bin
++LIBDIR = $(PREFIX)/lib
++MANDIR = $(PREFIX)/share/man/man1
++MANFILE = p2c.man.inst
+
+ # Compiler options
+ CC = cc # you may wish to use gcc here instead
+@@ -64,9 +65,9 @@
+ LIBOBJS = p2clib.o loc.p2clib.o
+ OTHERLIBOBJS =
+
+-ABSHOMEDIR = `cd $(HOMEDIR); pwd`
+-ABSINCDIR = `cd $(INCDIR); pwd`
+-ABSLIBDIR = `cd $(LIBDIR); pwd`
++ABSHOMEDIR = /usr/lib/p2c
++ABSINCDIR = /usr/include/p2c
++ABSLIBDIR = /usr/lib
+
+ MISCSRCS = makeproto.c
+ PROTOS = p2c.proto p2c.hdrs
+@@ -161,11 +162,11 @@
+
+ SHELL=/bin/sh
+ makedirs:
+- if [ ! -d $(HOMEDIR) ]; then mkdir $(HOMEDIR); else true; fi
+- if [ ! -d $(BINDIR) ]; then mkdir $(BINDIR); else true; fi
+- if [ ! -d $(LIBDIR) ]; then mkdir $(LIBDIR); else true; fi
+- if [ ! -d $(MANDIR) ]; then mkdir $(MANDIR); else true; fi
+- if [ ! -d $(INCDIR) ]; then mkdir $(INCDIR); else true; fi
++ if [ ! -d $(HOMEDIR) ]; then mkdir -p $(HOMEDIR); else true; fi
++ if [ ! -d $(BINDIR) ]; then mkdir -p $(BINDIR); else true; fi
++ if [ ! -d $(LIBDIR) ]; then mkdir -p $(LIBDIR); else true; fi
++ if [ ! -d $(MANDIR) ]; then mkdir -p $(MANDIR); else true; fi
++ if [ ! -d $(INCDIR) ]; then mkdir -p $(INCDIR); else true; fi
+
+ $(BINDIR)/p2c: p2c
+ $(COPY) p2c $(BINDIR)/p2c
+@@ -212,6 +213,7 @@
+
+ clean:
+ rm -f $(OBJS) $(LIBOBJS) $(PROTOS) p2c libp2c.a
++ rm -f makeproto p2cc p2c.man.inst p2c.cat
+
+ wc:
+ wc $(SRCS) $(LIBSRCS) trans.h
+--- p2c-1.21alpha2.orig/src/decl.c
++++ p2c-1.21alpha2/src/decl.c
+@@ -789,8 +789,10 @@
+ mpp2 = &mp2->snext;
+ if (mp2)
+ *mpp2 = mp2->snext;
++#if 0
+ if (mp->kind == MK_CONST)
+ free_value(&mp->val);
++#endif
+ freeexpr(mp->constdefn);
+ if (mp->cbase)
+ forget_ctx(mp, 1);
+--- p2c-1.21alpha2.orig/src/parse.c
++++ p2c-1.21alpha2/src/parse.c
+@@ -4642,8 +4642,10 @@
+ }
+ }
+ if (conserve_mem) {
++#if 0
+ free_stmt((Stmt *)func->val.i); /* is this safe? */
+ func->val.i = 0;
++#endif
+ forget_ctx(func, 0);
+ }
+ outsection(spacing);
diff --git a/source/d/p2c/p2c_time.diff b/source/d/p2c/p2c_time.diff
new file mode 100644
index 000000000..fcd0875de
--- /dev/null
+++ b/source/d/p2c/p2c_time.diff
@@ -0,0 +1,10 @@
+--- ./src/out.c.orig Fri Feb 22 18:39:33 2002
++++ ./src/out.c Fri Feb 22 18:41:13 2002
+@@ -41,6 +41,7 @@
+
+ #if USETIME
+ # include <sys/time.h>
++# include <time.h>
+ #else
+ # include <time.h>
+ #endif
diff --git a/source/d/p2c/slack-desc b/source/d/p2c/slack-desc
new file mode 100644
index 000000000..058ac2040
--- /dev/null
+++ b/source/d/p2c/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+p2c: p2c (Pascal to C translator)
+p2c:
+p2c: P2c is a tool for translating Pascal programs into C. The input
+p2c: consists of a set of source files in any of the following Pascal
+p2c: dialects: HP Pascal, Turbo/UCSD Pascal, DEC VAX Pascal, Oregon
+p2c: Software Pascal/2, Macintosh Programmer's Workshop Pascal,
+p2c: Sun/Berkeley Pascal, Texas Instruments Pascal, Apollo Domain Pascal.
+p2c: Modula-2 syntax is also supported. Output is a set of .c and .h
+p2c: files that comprise an equivalent program in any of several dialects
+p2c: of C.
+p2c:
diff --git a/source/d/perl/doinst.sh b/source/d/perl/doinst.sh
new file mode 100644
index 000000000..8d2debb06
--- /dev/null
+++ b/source/d/perl/doinst.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+config() {
+ NEW="$1"
+ OLD="`dirname $NEW`/`basename $NEW .new`"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+config usr/lib/perl5/5.10.0/i486-linux-thread-multi/perllocal.pod.new
diff --git a/source/d/perl/perl.SlackBuild b/source/d/perl/perl.SlackBuild
new file mode 100755
index 000000000..9aa963d6a
--- /dev/null
+++ b/source/d/perl/perl.SlackBuild
@@ -0,0 +1,267 @@
+#!/bin/sh
+
+# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+
+# originally by: David Cantrell <david@slackware.com>
+# maintained by: <volkerdi@slackware.com>
+
+VERSION=5.10.0
+# IMPORTANT: also update -Dinc_version_list in ./configure below!
+
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-perl
+
+# Additional required modules:
+DBI=1.607
+DBDMYSQL=4.008
+XMLPARSER=2.36
+XMLSIMPLE=2.18
+URI=1.37
+
+if [ "$ARCH" = "i386" ]; then
+ SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+if [ -x /usr/bin/perl ]; then
+ echo "Perl detected."
+ echo
+ echo "It's a good idea to remove your existing perl first."
+ echo
+ sleep 15
+fi
+
+# Clear build location:
+rm -rf $PKG
+mkdir -p $PKG
+
+# Extract the source code:
+cd $TMP
+rm -rf perl-$VERSION
+tar xvf $CWD/perl-$VERSION.tar.bz2
+
+# Change into the source directory:
+cd perl-$VERSION
+
+# Adjust owner/perms to standard values:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# If after all this time you still don't trust threads, comment
+# out the variable below:
+#
+USE_THREADS="-Dusethreads -Duseithreads"
+
+if [ "$ARCH" = "x86_64" ]; then # adopted from "Cross Linux From Scratch"
+ # Configure must be told to also use lib64:
+ zcat $CWD/perl.configure.multilib.patch.gz | patch -p1 --verbose || exit 1
+ # "perl -V" should report that libc is in /lib64
+ sed -i -e '/libc/s#/lib/#/lib64/#' hints/linux.sh
+ # make perl use lib64:
+ echo 'installstyle="lib64/perl5"' >>hints/linux.sh
+fi
+
+# We no longer include suidperl. To quote the INSTALL file:
+#
+# Because of the buggy history of suidperl, and the difficulty
+# of properly security auditing as large and complex piece of
+# software as Perl, we cannot recommend using suidperl and the feature
+# should be considered deprecated.
+# Instead use for example 'sudo': http://www.courtesan.com/sudo/
+
+# Configure perl:
+./Configure -de \
+ -Dprefix=/usr \
+ -Dvendorprefix=/usr \
+ -Dcccdlflags='-fPIC' \
+ -Dinstallprefix=/usr \
+ -Dlibpth="/usr/local/lib${LIBDIRSUFFIX} /usr/lib${LIBDIRSUFFIX} /lib${LIBDIRSUFFIX}" \
+ -Doptimize="$SLKCFLAGS" \
+ $USE_THREADS \
+ -Dpager='/usr/bin/less -isr' \
+ -Dinc_version_list='5.8.8 5.8.7 5.8.6 5.8.5 5.8.4 5.8.3 5.8.2 5.8.1 5.8.0' \
+ -Darchname=$ARCH-linux
+
+# Kludge for gcc-4.2.4's needlessly changed output:
+cat makefile | grep -v '\<command-line\>' > foo
+mv foo makefile
+cat x2p/makefile | grep -v '\<command-line\>' > foo
+mv foo x2p/makefile
+
+# Build perl
+make -j6 || exit 1
+make test
+
+# Install perl (needed to build modules):
+make install
+( cd /usr/bin
+ ln -sf perl$VERSION perl
+ ln -sf c2ph pstruct
+ ln -sf s2p psed
+)
+mkdir -p /usr/lib${LIBDIRSUFFIX}/perl5/vendor_perl/${VERSION}/${ARCH}-linux-thread-multi
+
+# Install perl package:
+make install DESTDIR=$PKG
+mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/perl5/vendor_perl/${VERSION}/${ARCH}-linux-thread-multi
+
+# Add additional modules:
+( cd ext
+ ( tar xzvf $CWD/DBI-${DBI}.tar.gz
+ cd DBI-${DBI}
+ chown -R root:root .
+ perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make test
+ make install
+ make install DESTDIR=$PKG
+ mkdir -p $PKG/usr/doc/perl-$VERSION/DBI-${DBI}
+ cp -a README $PKG/usr/doc/perl-$VERSION/DBI-${DBI}
+ chmod 644 $PKG/usr/doc/perl-$VERSION/DBI-${DBI}/README
+ )
+ ( tar xzvf $CWD/DBD-mysql-${DBDMYSQL}.tar.gz
+ cd DBD-mysql-${DBDMYSQL}
+ chown -R root:root .
+ perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make test
+ make install
+ make install DESTDIR=$PKG
+ mkdir -p $PKG/usr/doc/perl-$VERSION/DBD-mysql-${DBDMYSQL}
+ cp -a INSTALL.html README TODO $PKG/usr/doc/perl-$VERSION/DBD-mysql-${DBDMYSQL}
+ chmod 644 $PKG/usr/doc/perl-$VERSION/DBD-mysql-${DBDMYSQL}/*
+ )
+ ( tar xzvf $CWD/XML-Parser-${XMLPARSER}.tar.gz
+ cd XML-Parser-${XMLPARSER}
+ chown -R root:root .
+ perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make test
+ make install
+ make install DESTDIR=$PKG
+ mkdir -p $PKG/usr/doc/perl-$VERSION/XML-Parser-${XMLPARSER}
+ cp -a README $PKG/usr/doc/perl-$VERSION/XML-Parser-${XMLPARSER}
+ chmod 644 $PKG/usr/doc/perl-$VERSION/XML-Parser-${XMLPARSER}/*
+ )
+ ( tar xzvf $CWD/XML-Simple-${XMLSIMPLE}.tar.gz
+ cd XML-Simple-${XMLSIMPLE}
+ chown -R root:root .
+ perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make test
+ make install
+ make install DESTDIR=$PKG
+ mkdir -p $PKG/usr/doc/perl-$VERSION/XML-Simple${XMLSIMPLE}
+ cp -a README $PKG/usr/doc/perl-$VERSION/XML-Simple${XMLSIMPLE}
+ chmod 644 $PKG/usr/doc/perl-$VERSION/XML-Simple${XMLSIMPLE}/*
+ )
+ ( tar xzvf $CWD/URI-${URI}.tar.gz
+ cd URI-${URI}
+ chown -R root:root .
+ perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make test
+ make install
+ make install DESTDIR=$PKG
+ mkdir -p $PKG/usr/doc/perl-$VERSION/URI-${URI}
+ cp -a README $PKG/usr/doc/perl-$VERSION/URI-${URI}
+ chmod 644 $PKG/usr/doc/perl-$VERSION/URI-${URI}/*
+ )
+)
+
+# Strip everything:
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+# There are also miniperl and microperl.
+# I haven't had any requests for them, but would be willing
+# to consider adding one or both to the package if anyone
+# actually needs them for some reason.
+#make microperl
+
+# Symlinks that replace hard links
+( cd $PKG/usr/bin
+ ln -sf perl$VERSION perl
+ ln -sf c2ph pstruct
+ ln -sf s2p psed )
+
+# Install documentation
+mkdir -p $PKG/usr/doc/perl-$VERSION
+cp -a \
+ AUTHORS Artistic Copying INSTALL MANIFEST README README.Y2K README.cn \
+ README.jp README.ko README.micro README.tw Todo.micro \
+ $PKG/usr/doc/perl-$VERSION
+
+# We follow LSB with symlinks in /usr/share:
+( cd $PKG/usr/share
+ mv man .. )
+( cd $PKG/usr/man/man1
+ mkdir foo
+ cp *.1 foo
+ rm *.1
+ mv foo/* .
+ rmdir foo
+ gzip -9 *
+ ln -sf c2ph.1.gz pstruct.1.gz
+ ln -sf s2p.1.gz psed.1.gz )
+( cd $PKG/usr/man/man3
+ gzip -9 * )
+
+chmod 755 $PKG/usr/bin/*
+chmod 644 $PKG/usr/man/man?/*
+rmdir $PKG/usr/share
+
+# This file shouldn't get clobbered:
+if [ -r $PKG/usr/lib${LIBDIRSUFFIX}/perl5/${VERSION}/${ARCH}-linux-thread-multi/perllocal.pod ]; then
+ mv $PKG/usr/lib${LIBDIRSUFFIX}/perl5/${VERSION}/${ARCH}-linux-thread-multi/perllocal.pod $PKG/usr/lib${LIBDIRSUFFIX}/perl5/${VERSION}/${ARCH}-linux-thread-multi/perllocal.pod.new
+fi
+
+# Insert the slack-desc:
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz | \
+ sed -e "s#/lib/#/lib${LIBDIRSUFFIX}/#" | sed -e "s#i486#$ARCH#" \
+ > $PKG/install/doinst.sh
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/perl-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/perl/perl.configure.multilib.patch b/source/d/perl/perl.configure.multilib.patch
new file mode 100644
index 000000000..c86ce65f7
--- /dev/null
+++ b/source/d/perl/perl.configure.multilib.patch
@@ -0,0 +1,35 @@
+Submitted By: Ryan Oliver <ryan(dot)oliver(at)pha(dot)com(dot)au>
+Date: 2005-10-20
+Initial Package Version: 5.8.7
+Origin: Ryan Oliver
+Description: this patch allows perl to be installed in /usr/lib32 or /usr/lib64 instead of /usr/lib.
+
+--- perl-5.8.7/Configure-ORIG 2005-10-20 11:49:47.571389008 +1000
++++ perl-5.8.7/Configure 2005-10-20 12:30:35.571236464 +1000
+@@ -5930,6 +5930,8 @@
+ : The default "style" setting is made in installstyle.U
+ case "$installstyle" in
+ *lib/perl5*) set dflt privlib lib/$package/$version ;;
++*lib32/perl5*) set dflt privlib lib32/$package/$version ;;
++*lib64/perl5*) set dflt privlib lib64/$package/$version ;;
+ *) set dflt privlib lib/$version ;;
+ esac
+ eval $prefixit
+@@ -6433,6 +6435,8 @@
+ case "$sitelib" in
+ '') case "$installstyle" in
+ *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
++ *lib32/perl5*) dflt=$siteprefix/lib32/$package/site_$prog/$version ;;
++ *lib64/perl5*) dflt=$siteprefix/lib64/$package/site_$prog/$version ;;
+ *) dflt=$siteprefix/lib/site_$prog/$version ;;
+ esac
+ ;;
+@@ -6560,6 +6564,8 @@
+ prog=`echo $package | $sed 's/-*[0-9.]*$//'`
+ case "$installstyle" in
+ *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
++ *lib32/perl5*) dflt=$vendorprefix/lib32/$package/vendor_$prog/$version ;;
++ *lib64/perl5*) dflt=$vendorprefix/lib64/$package/vendor_$prog/$version ;;
+ *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
+ esac
+ ;;
diff --git a/source/d/perl/slack-desc b/source/d/perl/slack-desc
new file mode 100644
index 000000000..e28cf9416
--- /dev/null
+++ b/source/d/perl/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+perl: perl (Practical Extraction and Report Language)
+perl:
+perl: Larry Wall's "Practical Extraction and Report Language". Perl is a
+perl: language optimized for scanning arbitrary text files, extracting
+perl: information from those text files, and printing reports based on that
+perl: information. It's also a good language for many system management
+perl: tasks. The language is intended to be practical (easy to use,
+perl: efficient, complete) rather than beautiful (tiny, elegant, minimal).
+perl:
+perl:
+perl:
diff --git a/source/d/pkg-config/doinst.sh b/source/d/pkg-config/doinst.sh
new file mode 100644
index 000000000..c8adcd317
--- /dev/null
+++ b/source/d/pkg-config/doinst.sh
@@ -0,0 +1,6 @@
+if [ ! -L usr/share/pkgconfig ]; then
+ mkdir -p usr/lib/pkgconfig 2> /dev/null
+ mv usr/share/pkgconfig/* usr/lib/pkgconfig 2> /dev/null
+ rmdir usr/share/pkgconfig 2> /dev/null
+ ( cd usr/share ; ln -sf ../lib/pkgconfig . 2> /dev/null )
+fi
diff --git a/source/d/pkg-config/pkg-config.SlackBuild b/source/d/pkg-config/pkg-config.SlackBuild
new file mode 100755
index 000000000..0a86febc8
--- /dev/null
+++ b/source/d/pkg-config/pkg-config.SlackBuild
@@ -0,0 +1,98 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+VERSION=${VERSION:-0.23}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-3}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-pkg-config
+rm -rf $PKG
+mkdir -p $TMP $PKG/usr
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+elif [ "$ARCH" = "arm" ]; then
+ SLKCFLAGS="-O2 -march=armv4 -mtune=xscale"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "armel" ]; then
+ SLKCFLAGS="-O2 -march=armv4t"
+ LIBDIRSUFFIX=""
+fi
+
+cd $TMP
+rm -rf pkg-config-$VERSION
+tar xvf $CWD/pkg-config-$VERSION.tar.bz2 || exit 1
+cd pkg-config-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --build=${ARCH}-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+mkdir -p $PKG/etc/profile.d/
+for script in $(ls $CWD/scripts/*) ; do
+ cat ${script} | sed -e "s#/lib/#/lib${LIBDIRSUFFIX}/#g" \
+ > $PKG/etc/profile.d/$(basename ${script})
+done
+chown root:root $PKG/etc/profile.d/*
+chmod 755 $PKG/etc/profile.d/*
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+gzip -9 $PKG/usr/man/man?/*.?
+
+mkdir -p $PKG/usr/doc/pkg-config-$VERSION
+cp -a \
+ AUTHORS COPYING NEWS README \
+ $PKG/usr/doc/pkg-config-$VERSION
+
+mkdir -p $PKG/install
+zcat $CWD/doinst.sh.gz | sed -e "s#/lib/#/lib${LIBDIRSUFFIX}/#g" \
+ > $PKG/install/doinst.sh
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $TMP/package-pkg-config
+/sbin/makepkg -l y -c n $TMP/pkg-config-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/pkg-config/scripts/pkgconfig.csh b/source/d/pkg-config/scripts/pkgconfig.csh
new file mode 100755
index 000000000..477a93a76
--- /dev/null
+++ b/source/d/pkg-config/scripts/pkgconfig.csh
@@ -0,0 +1,6 @@
+#!/bin/csh
+if ( $?PKG_CONFIG_PATH ) then
+ setenv PKG_CONFIG_PATH ${PKG_CONFIG_PATH}:/usr/local/lib/pkgconfig
+else
+ setenv PKG_CONFIG_PATH /usr/local/lib/pkgconfig:/usr/lib/pkgconfig
+endif
diff --git a/source/d/pkg-config/scripts/pkgconfig.sh b/source/d/pkg-config/scripts/pkgconfig.sh
new file mode 100755
index 000000000..c3f350313
--- /dev/null
+++ b/source/d/pkg-config/scripts/pkgconfig.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+if [ ! "$PKG_CONFIG_PATH" = "" ]; then
+ PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/usr/local/lib/pkgconfig
+else
+ PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig
+fi
+export PKG_CONFIG_PATH
diff --git a/source/d/pkg-config/slack-desc b/source/d/pkg-config/slack-desc
new file mode 100644
index 000000000..52f57e1b9
--- /dev/null
+++ b/source/d/pkg-config/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+pkg-config: pkg-config (system for managing library compile/link flags)
+pkg-config:
+pkg-config: pkg-config is a system for managing library compile/link flags
+pkg-config: that works with automake and autoconf. It replaces the ubiquitous
+pkg-config: *-config scripts you may have seen with a single tool. See the man
+pkg-config: page that comes with pkg-config for full documentation.
+pkg-config:
+pkg-config:
+pkg-config:
+pkg-config:
+pkg-config:
diff --git a/source/d/pmake/pmake.SlackBuild b/source/d/pmake/pmake.SlackBuild
new file mode 100755
index 000000000..a5d1e27e4
--- /dev/null
+++ b/source/d/pmake/pmake.SlackBuild
@@ -0,0 +1,103 @@
+#!/bin/sh
+
+# Copyright 2006-2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+
+PKGNAM=pmake
+VERSION=${VERSION:-1.111}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-3}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+if [ "$ARCH" = "i386" ]; then
+ SLKCFLAGS="-O2 -Wall -DMACHINE_ARCH=\\\"${ARCH}\\\" -DHAVE_SETENV -DHAVE_STRERROR -DHAVE_STRDUP -DHAVE_STRFTIME -DHAVE_VSNPRINTF -D_GNU_SOURCE"
+elif [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -Wall -DMACHINE_ARCH=\\\"${ARCH}\\\" -DHAVE_SETENV -DHAVE_STRERROR -DHAVE_STRDUP -DHAVE_STRFTIME -DHAVE_VSNPRINTF -D_GNU_SOURCE"
+ SLKCFLAGS="-O2 -Wall -DMACHINE_ARCH=\\\"${ARCH}\\\" -DHAVE_SETENV -DHAVE_STRERROR -DHAVE_STRDUP -DHAVE_STRFTIME -DHAVE_VSNPRINTF -D_GNU_SOURCE"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2 -Wall -DMACHINE_ARCH=\\\"${ARCH}\\\" -DHAVE_SETENV -DHAVE_STRERROR -DHAVE_STRDUP -DHAVE_STRFTIME -DHAVE_VSNPRINTF -D_GNU_SOURCE"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC -Wall -DMACHINE_ARCH=\\\"${ARCH}\\\" -DHAVE_SETENV -DHAVE_STRERROR -DHAVE_STRDUP -DHAVE_STRFTIME -DHAVE_VSNPRINTF -D_GNU_SOURCE"
+fi
+
+cd $TMP
+rm -rf ${PKGNAM}-${VERSION}
+tar xzvf $CWD/${PKGNAM}-$VERSION.tar.gz
+cd ${PKGNAM}
+zcat $CWD/pmake_1.111-1.diff.gz | patch -p1 || exit 1
+
+# Not sure why the defines in the cflags didn't work here, but
+# we'll just hit it with a big hammer:
+zcat $CWD/pmake.strerror.strdup.diff.gz | patch -p1 || exit 1
+
+if [ "$ARCH" != "i[3456]86" ]; then
+ sed -i -e "s/i386/$ARCH/" Makefile.boot
+fi
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" make -f Makefile.boot
+
+mkdir -p $PKG/usr/bin
+cp bmake $PKG/usr/bin/pmake
+chown root:root $PKG/usr/bin/pmake
+chmod 755 $PKG/usr/bin/pmake
+
+mkdir -p $PKG/usr/share/mk
+cp -a mk/*.mk $PKG/usr/share/mk
+chmod 644 $PKG/usr/share/mk/*
+chown -R root:root $PKG/usr/share/mk
+
+mkdir -p $PKG/usr/man/man1
+gzip -9c make.1 > $PKG/usr/man/man1/pmake.1.gz
+
+# Strip binaries:
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+( cd PSD.doc
+ # This is too ugly to watch...
+ ../bmake -m ../mk 2> /dev/null
+ ps2ascii paper.ps > $PKG/usr/doc/${PKGNAM}-$VERSION/pmake.txt
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/pmake/pmake.strerror.strdup.diff b/source/d/pmake/pmake.strerror.strdup.diff
new file mode 100644
index 000000000..2c4b83793
--- /dev/null
+++ b/source/d/pmake/pmake.strerror.strdup.diff
@@ -0,0 +1,20 @@
+--- ./util.c.orig 2005-07-07 03:16:23.000000000 -0500
++++ ./util.c 2007-03-24 18:38:03.000000000 -0500
+@@ -21,6 +21,8 @@
+
+ #include "make.h"
+
++#define HAVE_STRERROR 1
++
+ #if !defined(MAKE_NATIVE) && !defined(HAVE_STRERROR)
+ extern int errno, sys_nerr;
+ extern char *sys_errlist[];
+@@ -38,6 +40,8 @@
+ }
+ #endif
+
++#define HAVE_STRDUP 1
++
+ #if !defined(MAKE_NATIVE) && !defined(HAVE_STRDUP)
+ #include <string.h>
+
diff --git a/source/d/pmake/pmake.txt b/source/d/pmake/pmake.txt
new file mode 100644
index 000000000..278545c56
--- /dev/null
+++ b/source/d/pmake/pmake.txt
@@ -0,0 +1,1255 @@
+
+
+PMake -- A Tutorial
+
+Adam de Boor Berkeley Softworks2150 Shattuck Ave, Penthouse
+
+Berkeley, CA 94704adam@bsw.uu.net
+
+...!uunet!bsw!adam
+
+1. Introduction PMake is a program for creating other programs, or anything else you can think of for it to do. The basicidea behind PMake is that, for any giv en system, be it a program or a document or whatever, there will be
+
+some files that depend on the state of other files (on when they were last modified). PMake takes thesedependencies, which you must specify, and uses them to build whatever it is you want it to build.
+
+PMake is almost fully-compatible with Make, with which you may already be familiar. PMake's mostimportant feature is its ability to run several different jobs at once, making the creation of systems considerably faster. It also has a great deal more functionality than Make. Throughout the text, whenever somethingis mentioned that is an important difference between PMake and Make (i.e. something that will cause a makefile to fail if you don't do something about it), or is simply important, it will be flagged with a littlesign in the left margin, like this: NOTE
+
+This tutorial is divided into three main sections corresponding to basic, intermediate and advanced PMakeusage. If you already know Make well, you will only need to skim chapter 2 (there are some aspects of
+
+PMake that I consider basic to its use that didn't exist in Make). Things in chapter 3 make life much easier,while those in chapter 4 are strictly for those who know what they are doing. Chapter 5 has definitions for the jargon I use and chapter 6 contains possible solutions to the problems presented throughout the tutorial. 2. The Basics of PMake PMake takes as input a file that tells a) which files depend on which other files to be complete and b) whatto do about files that are ``out-of-date.'' This file is known as a ``makefile'' and is usually kept in the topmost directory of the system to be built. While you can call the makefile anything you want, PMake willlook for
+
+Makefile and makefile (in that order) in the current directory if you don't tell it otherwise.To specify a different makefile, use the -f flag (e.g. ``
+
+pmake -f program.mk'').
+
+A makefile has four different types of lines in it:
+
+* File dependency specifications
+
+* Creation commands
+
+* Variable assignments
+
+* Comments, include statements and conditional directives Any line may be continued over multiple lines by ending it with a backslash. The backslash, followingnewline and any initial whitespace on the following line are compressed into a single space before the input
+
+line is examined by PMake.
+
+Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appears in all copies. The University of California, Berkeley Softworks, and Adam de Boor make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.
+
+PSD:12-2 PMake -- A Tutorial 2.1. Dependency Lines As mentioned in the introduction, in any system, there are dependencies between the files that make up thesystem. For instance, in a program made up of several C source files and one header file, the C files will
+
+need to be re-compiled should the header file be changed. For a document of several chapters and onemacro file, the chapters will need to be reprocessed if any of the macros changes. These are dependencies and are specified by means of dependency lines in the makefile. On a dependency line, there are targets and sources, separated by a one- or two-character operator. The tar-gets ``depend'' on the sources and are usually created from them. Any number of targets and sources may
+
+be specified on a dependency line. All the targets in the line are made to depend on all the sources. Targetsand sources need not be actual files, but every source must be either an actual file or another target in the makefile. If you run out of room, use a backslash at the end of the line to continue onto the next one. Any file may be a target and any file may be a source, but the relationship between the two (or howevermany) is determined by the ``operator'' that separates them. Three types of operators exist: one specifies
+
+that the datedness of a target is determined by the state of its sources, while another specifies other files (thesources) that need to be dealt with before the target can be re-created. The third operator is very similar to the first, with the additional condition that the target is out-of-date if it has no sources. These operations arerepresented by the colon, the exclamation point and the double-colon, respectively, and are mutually exclusive. Their exact semantics are as follows: : If a colon is used, a target on the line is considered to be ``out-of-date'' (and in need of creation) if
+
+* any of the sources has been modified more recently than the target, or
+
+* the target doesn't exist. Under this operation, steps will be taken to re-create the target only if it is found to be out-of-date byusing these two rules.
+
+! If an exclamation point is used, the target will always be re-created, but this will not happen until allof its sources have been examined and re-created, if necessary. :: If a double-colon is used, a target is out-of-date if:
+
+* any of the sources has been modified more recently than the target, or
+
+* the target doesn't exist, or
+
+* the target has no sources. If the target is out-of-date according to these rules, it will be re-created. This operator also doessomething else to the targets, but I'll go into that in the next section (``Shell Commands'').
+
+Enough words, now for an example. Take that C program I mentioned earlier. Say there are three C files(
+
+a.c, b.c and c.c) each of which includes the file defs.h. The dependencies between the files couldthen be expressed as follows:
+
+program : a.o b.o c.o a.o b.o c.o : defs.h a.o : a.c b.o : b.c c.o : c.c
+
+You may be wondering at this point, where a.o, b.o and c.o came in and why they depend on defs.hand the C files don't. The reason is quite simple:
+
+program cannot be made by linking together .c files -- itmust be made from .o files. Likewise, if you change
+
+defs.h, it isn't the .c files that need to be re-created,it's the .o files. If you think of dependencies in these terms -- which files (targets) need to be created from
+
+which files (sources) -- you should have no problems. An important thing to notice about the above example, is that all the .o files appear as targets on more thanone line. This is perfectly all right: the target is made to depend on all the sources mentioned on all the
+
+dependency lines. E.g. a.o depends on both defs.h and a.c.
+
+PMake -- A Tutorial PSD:12-3 NOTE The order of the dependency lines in the makefile is important: the first target on the first dependency line
+
+in the makefile will be the one that gets made if you don't say otherwise. That's why program comes firstin the example makefile, above.
+
+Both targets and sources may contain the standard C-Shell wildcard characters ({, }, *, ?, [, and ]), butthe non-curly-brace ones may only appear in the final component (the file portion) of the target or source. The characters mean the following things: {} These enclose a comma-separated list of options and cause the pattern to be expanded once for eachelement of the list. Each expansion contains a different element. For example,
+
+src/{whiffle,beep,fish}.c expands to the three words src/whiffle.c, src/beep.c, and src/fish.c. These braces may be nested and, unlike the other wildcard characters, the resultingwords need not be actual files. All other wildcard characters are expanded using the files that exist
+
+when PMake is started. * This matches zero or more characters of any sort. src/*.c will expand to the same three words asabove as long as
+
+src contains those three files (and no other files that end in .c).
+
+? Matches any single character. [] This is known as a character class and contains either a list of single characters, or a series of charac-ter ranges (
+
+a-z, for example means all characters between a and z), or both. It matches any singlecharacter contained in the list. E.g.
+
+[A-Za-z] will match all letters, while [0123456789] willmatch all numbers.
+
+2.2. Shell Commands ``Isn't that nice,'' you say to yourself, ``but how are files actually `re-created,' as he likes to spell it?'' There-creation is accomplished by commands you place in the makefile. These commands are passed to the
+
+Bourne shell (better known as ``/bin/sh'') to be executed and are expected to do what's necessary to updatethe target file (PMake doesn't actually check to see if the target was created. It just assumes it's there).
+
+Shell commands in a makefile look a lot like shell commands you would type at a terminal, with one impor-tant exception: each command in a makefile
+
+must be preceded by at least one tab.
+
+Each target has associated with it a shell script made up of one or more of these shell commands. The cre-ation script for a target should immediately follow the dependency line for that target. While any giv en target may appear on more than one dependency line, only one of these dependency lines may be followed bya creation script, unless the `::' operator was used on the dependency line. NOTE
+
+If the double-colon was used, each dependency line for the target may be followed by a shell script. Thatscript will only be executed if the target on the associated dependency line is out-of-date with respect to the
+
+sources on that line, according to the rules I gav e earlier. I'll giv e you a good example of this later on. To expand on the earlier makefile, you might add commands as follows:
+
+program : a.o b.o c.o
+
+cc a.o b.o c.o -o program a.o b.o c.o : defs.h a.o : a.c
+
+cc -c a.c b.o : b.c
+
+cc -c b.c c.o : c.c
+
+cc -c c.c
+
+Something you should remember when writing a makefile is, the commands will be executed if the targeton the dependency line is out-of-date, not the sources. In this example, the command ``
+
+cc -c a.c'' willbe executed if a.o is out-of-date. Because of the `:' operator, this means that should a.c or defs.h havebeen modified more recently than
+
+a.o, the command will be executed (a.o will be considered out-of-date).
+
+PSD:12-4 PMake -- A Tutorial Remember how I said the only difference between a makefile shell command and a regular shell commandwas the leading tab? I lied. There is another way in which makefile commands differ from regular ones. The first two characters after the initial whitespace are treated specially. If they are any combination of `@'and `-', they cause PMake to do different things.
+
+In most cases, shell commands are printed before they're actually executed. This is to keep you informed ofwhat's going on. If an `@' appears, however, this echoing is suppressed. In the case of an
+
+echo command,say `` echo Linking index,'' it would be rather silly to see
+
+echo Linking index Linking index
+
+so PMake allows you to place an `@' before the command (``@echo Linking index'') to prevent thecommand from being printed.
+
+The other special character is the `-'. In case you didn't know, shell commands finish with a certain ``exitstatus.'' This status is made available by the operating system to whatever program invoked the command. Normally this status will be 0 if everything went ok and non-zero if something went wrong. For this reason,PMake will consider an error to have occurred if one of the shells it invokes returns a non-zero status. When it detects an error, PMake's usual action is to abort whatever it's doing and exit with a non-zero sta-tus itself (any other targets that were being created will continue being made, but nothing new will be started. PMake will exit after the last job finishes). This behavior can be altered, however, by placing a `-'at the front of a command (``
+
+-mv index index.old''), certain command-line arguments, or doingother things, to be detailed later. In such a case, the non-zero status is simply ignored and PMake keeps
+
+chugging along.NOTE Because all the commands are given to a single shell to execute, such things as setting shell variables,changing directories, etc., last beyond the command in which they are found. This also allows shell compound commands (like for loops) to be entered in a natural manner. Since this could cause problems forsome makefiles that depend on each command being executed by a single shell, PMake has a -B flag (it stands for backwards-compatible) that forces each command to be given to a separate shell. It also doesseveral other things, all of which I discourage since they are now old-fashioned. . . . NOTE
+
+A target's shell script is fed to the shell on its (the shell's) input stream. This means that any commands,such as
+
+ci that need to get input from the terminal won't work right -- they'll get the shell's input, some-thing they probably won't find to their liking. A simple way around this is to give a command like this:
+
+ci $(SRCS) < /dev/tty This would force the program's input to come from the terminal. If you can't do this for some reason, youronly other alternative is to use PMake in its fullest compatibility mode. See Compatibility in chapter 4.
+
+2.3. Variables PMake, like Make before it, has the ability to save text in variables to be recalled later at your convenience.Variables in PMake are used much like variables in the shell and, by tradition, consist of all upper-case letters (you don't have to use all upper-case letters. In fact there's nothing to stop you from calling a variable @^&$%$. Just tradition). Variables are assigned-to using lines of the form
+
+VARIABLE = value appended-to by
+
+VARIABLE += value conditionally assigned-to (if the variable isn't already defined) by
+
+VARIABLE ?= value and assigned-to with expansion (i.e. the value is expanded (see below) before being assigned to the vari-able--useful for placing a value at the beginning of a variable, or other things) by
+
+PMake -- A Tutorial PSD:12-5
+
+VARIABLE := value Any whitespace before value is stripped off. When appending, a space is placed between the old value andthe stuff being appended.
+
+The final way a variable may be assigned to is using
+
+VARIABLE != shell-command In this case, shell-command has all its variables expanded (see below) and is passed off to a shell toexecute. The output of the shell is then placed in the variable. Any newlines (other than the final one) are
+
+replaced by spaces before the assignment is made. This is typically used to find the current directory via aline like:
+
+CWD != pwd Note: this is intended to be used to execute commands that produce small amounts of output (e.g. ``pwd'').The implementation is less than intelligent and will likely freeze if you execute something that produces
+
+thousands of bytes of output (8 Kb is the limit on many UNIX systems). The value of a variable may be retrieved by enclosing the variable name in parentheses or curly braces andpreceding the whole thing with a dollar sign.
+
+For example, to set the variable CFLAGS to the string ``-I/sprite/src/lib/libc -O,'' you wouldplace a line
+
+CFLAGS = -I/sprite/src/lib/libc -O in the makefile and use the word $(CFLAGS) wherever you would like the string -I/sprite/src/lib/libc -O to appear. This is called variable expansion.NOTE
+
+Unlike Make, PMake will not expand a variable unless it knows the variable exists. E.g. if you have a ${i}in a shell command and you have not assigned a value to the variable
+
+i (the empty string is considered avalue, by the way), where Make would have substituted the empty string, PMake will leave the
+
+${i}alone. To keep PMake from substituting for a variable it knows, precede the dollar sign with another dollar
+
+sign. (e.g. to pass ${HOME} to the shell, use $${HOME}). This causes PMake, in effect, to expand the $macro, which expands to a single
+
+$. For compatibility, Make's style of variable expansion will be used ifyou invoke PMake with any of the compatibility flags (-V, -B or -M. The -V flag alters just the variable
+
+expansion). There are two different times at which variable expansion occurs: When parsing a dependency line, theexpansion occurs immediately upon reading the line. If any variable used on a dependency line is undefined, PMake will print a message and exit. Variables in shell commands are expanded when the commandis executed. Variables used inside another variable are expanded whenever the outer variable is expanded (the expansion of an inner variable has no effect on the outer variable. I.e. if the outer variable is used on adependency line and in a shell command, and the inner variable changes value between when the dependency line is read and the shell command is executed, two different values will be substituted for the outervariable).
+
+Variables come in four flavors, though they are all expanded the same and all look about the same. They are(in order of expanding scope):
+
+* Local variables.
+
+* Command-line variables.
+
+* Global variables.
+
+* Environment variables. The classification of variables doesn't matter much, except that the classes are searched from the top (local)to the bottom (environment) when looking up a variable. The first one found wins.
+
+PSD:12-6 PMake -- A Tutorial 2.3.1. Local Variables Each target can have as many as sev en local variables. These are variables that are only ``visible'' withinthat target's shell script and contain such things as the target's name, all of its sources (from all its dependency lines), those sources that were out-of-date, etc. Four local variables are defined for all targets. Theyare:
+
+.TARGETThe name of the target. .OODATEThe list of the sources for the target that were considered out-of-date. The order in the list is
+
+not guaranteed to be the same as the order in which the dependencies were given. .ALLSRCThe list of all sources for this target in the order in which they were given.
+
+.PREFIXThe target without its suffix and without any leading path. E.g. for the target
+
+../../lib/compat/fsRead.c, this variable would contain fsRead. Three other local variables are set only for certain targets under special circumstances. These are the``.IMPSRC,'' ``.ARCHIVE,'' and ``.MEMBER'' variables. When they are set and how they are used is
+
+described later. Four of these variables may be used in sources as well as in shell scripts. These are ``.TARGET'', ``.PRE-FIX'', ``.ARCHIVE'' and ``.MEMBER''. The variables in the sources are expanded once for each target on
+
+the dependency line, providing what is known as a ``dynamic source,'' allowing you to specify severaldependency lines at once. For example,
+
+$(OBJS) : $(.PREFIX).c will create a dependency between each object file and its corresponding C source file.
+
+2.3.2. Command-line Variables Command-line variables are set when PMake is first invoked by giving a variable assignment as one of thearguments. For example,
+
+pmake "CFLAGS = -I/sprite/src/lib/libc -O" would make CFLAGS be a command-line variable with the given value. Any assignments to CFLAGS in themakefile will have no effect, because once it is set, there is (almost) nothing you can do to change a command-line variable (the search order, you see). Command-line variables may be set using any of the fourassignment operators, though only
+
+= and ?= behave as you would expect them to, mostly because assign-ments to command-line variables are performed before the makefile is read, thus the values set in the makefile are unavailable at the time. += is the same as =, because the old value of the variable is sought only inthe scope in which the assignment is taking place (for reasons of efficiency that I won't get into here).
+
+:=and ?= will work if the only variables used are in the environment. != is sort of pointless to use from thecommand line, since the same effect can no doubt be accomplished using the shell's own command substitution mechanisms (backquotes and all that). 2.3.3. Global Variables Global variables are those set or appended-to in the makefile. There are two classes of global variables:those you set and those PMake sets. As I said before, the ones you set can have any name you want them to
+
+have, except they may not contain a colon or an exclamation point. The variables PMake sets (almost)always begin with a period and always contain upper-case letters, only. The variables are as follows:
+
+.PMAKEThe name by which PMake was invoked is stored in this variable. For compatibility, the name
+
+is also stored in the MAKE variable.
+
+PMake -- A Tutorial PSD:12-7
+
+.MAKEFLAGSAll the relevant flags with which PMake was invoked. This does not include such things as -f
+
+or variable assignments. Again for compatibility, this value is stored in the MFLAGS variableas well.
+
+Tw o other variables, ``.INCLUDES'' and ``.LIBS,'' are covered in the section on special targets in chapter3. Global variables may be deleted using lines of the form:
+
+#undef variable The `#' must be the first character on the line. Note that this may only be done on global variables.
+
+2.3.4. Environment Variables Environment variables are passed by the shell that invoked PMake and are given by PMake to each shell itinvokes. They are expanded like any other variable, but they cannot be altered in any way.
+
+One special environment variable, PMAKE, is examined by PMake for command-line flags, variable assign-ments, etc., it should always use. This variable is examined before the actual arguments to PMake are. In addition, all flags given to PMake, either through the PMAKE variable or on the command line, are placed inthis environment variable and exported to each shell PMake executes. Thus recursive inv ocations of PMake automatically receive the same flags as the top-most one. Using all these variables, you can compress the sample makefile even more:
+
+OBJS = a.o b.o c.o program : $(OBJS)
+
+cc $(.ALLSRC) -o $(.TARGET) $(OBJS) : defs.h a.o : a.c
+
+cc -c a.c b.o : b.c
+
+cc -c b.c c.o : c.c
+
+cc -c c.c
+
+2.4. Comments Comments in a makefile start with a `#' character and extend to the end of the line. They may appear any-where you want them, except in a shell command (though the shell will treat it as a comment, too). If, for
+
+some reason, you need to use the `#' in a variable or on a dependency line, put a backslash in front of it.PMake will compress the two into a single `#' (Note: this isn't true if PMake is operating in full-compatibility mode). 2.5. ParallelismNOTE PMake was specifically designed to re-create several targets at once, when possible. You do not have to doanything special to cause this to happen (unless PMake was configured to not act in parallel, in which case
+
+you will have to make use of the -L and -J flags (see below)), but you do have to be careful at times. There are several problems you are likely to encounter. One is that some makefiles (and programs) are writ-ten in such a way that it is impossible for two targets to be made at once. The program
+
+xstr, for example,always modifies the files strings and x.c. There is no way to change it. Thus you cannot run two ofthem at once without something being trashed. Similarly, if you have commands in the makefile that always
+
+send output to the same file, you will not be able to make more than one target at once unless you changethe file you use. You can, for instance, add a
+
+$$$$ to the end of the file name to tack on the process ID ofthe shell executing the command (each $$ expands to a single $, thus giving you the shell variable $$).Since only one shell is used for all the commands, you'll get the same file name for each command in the
+
+script.
+
+PSD:12-8 PMake -- A Tutorial The other problem comes from improperly-specified dependencies that worked in Make because of itssequential, depth-first way of examining them. While I don't want to go into depth on how PMake works (look in chapter 4 if you're interested), I will warn you that files in two different ``levels'' of the depen-dency tree may be examined in a different order in PMake than they were in Make. For example, given the makefile
+
+a : b c b : d
+
+PMake will examine the targets in the order c, d, b, a. If the makefile's author expected PMake to abortbefore making
+
+c if an error occurred while making b, or if b needed to exist before c was made, s/he willbe sorely disappointed. The dependencies are incomplete, since in both these cases,
+
+c would depend on b.So watch out.
+
+Another problem you may face is that, while PMake is set up to handle the output from multiple jobs in agraceful fashion, the same is not so for input. It has no way to regulate input to different jobs, so if you use the redirection from /dev/tty I mentioned earlier, you must be careful not to run two of the jobs at once. 2.6. Writing and Debugging a Makefile Now you know most of what's in a makefile, what do you do next? There are two choices: (1) use one ofthe uncommonly-available makefile generators or (2) write your own makefile (I leave out the third choice
+
+of ignoring PMake and doing everything by hand as being beyond the bounds of common sense). When faced with the writing of a makefile, it is usually best to start from first principles: just what are youtrying to do? What do you want the makefile finally to produce?
+
+To begin with a somewhat traditional example, let's say you need to write a makefile to create a program, expr, that takes standard infix expressions and converts them to prefix form (for no readily apparent rea-son). You've got three source files, in C, that make up the program:
+
+main.c, parse.c, and output.c.Harking back to my pithy advice about dependency lines, you write the first line of the file:
+
+expr : main.o parse.o output.o because you remember expr is made from .o files, not .c files. Similarly for the .o files you produce thelines:
+
+main.o : main.c parse.o : parse.c output.o : output.c main.o parse.o output.o : defs.h
+
+Great. You've now got the dependencies specified. What you need now is commands. These commands,remember, must produce the target on the dependency line, usually by using the sources you've listed. You
+
+remember about local variables? Good, so it should come to you as no surprise when you write
+
+expr : main.o parse.o output.o
+
+cc -o $(.TARGET) $(.ALLSRC)
+
+Why use the variables? If your program grows to produce postfix expressions too (which, of course,requires a name change or two), it is one fewer place you have to change the file. You cannot do this for the
+
+object files, however, because they depend on their corresponding source files and defs.h, thus if yousaid
+
+cc -c $(.ALLSRC) you'd get (for main.o):
+
+cc -c main.c defs.h which is wrong. So you round out the makefile with these lines:
+
+PMake -- A Tutorial PSD:12-9
+
+main.o : main.c
+
+cc -c main.c parse.o : parse.c
+
+cc -c parse.c output.o : output.c
+
+cc -c output.c
+
+The makefile is now complete and will, in fact, create the program you want it to without unnecessary com-pilations or excessive typing on your part. There are two things wrong with it, however (aside from it being
+
+altogether too long, something I'll address in chapter 3): 1) The string ``main.o parse.o output.o'' is repeated twice, necessitating two changes whenyou add postfix (you were planning on that, weren't you?). This is in direct violation of de Boor's
+
+First Rule of writing makefiles: Anything that needs to be written more than once should be placed in a variable. I cannot emphasize this enough as being very important to the maintenance of a makefile and its pro-gram.
+
+2) There is no way to alter the way compilations are performed short of editing the makefile and makingthe change in all places. This is evil and violates de Boor's Second Rule, which follows directly from
+
+the first: Any flags or programs used inside a makefile should be placed in a variable so they may be changed, temporarily or permanently, with the greatest ease.
+
+The makefile should more properly read:
+
+OBJS = main.o parse.o output.o expr : $(OBJS)
+
+$(CC) $(CFLAGS) -o $(.TARGET) $(.ALLSRC) main.o : main.c
+
+$(CC) $(CFLAGS) -c main.c parse.o : parse.c
+
+$(CC) $(CFLAGS) -c parse.c output.o : output.c
+
+$(CC) $(CFLAGS) -c output.c $(OBJS) : defs.h
+
+Alternatively, if you like the idea of dynamic sources mentioned in section 2.3.1, you could write it likethis:
+
+OBJS = main.o parse.o output.o expr : $(OBJS)
+
+$(CC) $(CFLAGS) -o $(.TARGET) $(.ALLSRC) $(OBJS) : $(.PREFIX).c defs.h
+
+$(CC) $(CFLAGS) -c $(.PREFIX).c
+
+These two rules and examples lead to de Boor's First Corollary:
+
+Variables are your friends. Once you've written the makefile comes the sometimes-difficult task of making sure the darn thing works.Your most helpful tool to make sure the makefile is at least syntactically correct is the -n flag, which allows
+
+you to see if PMake will choke on the makefile. The second thing the -n flag lets you do is see what PMakewould do without it actually doing it, thus you can make sure the right commands would be executed were you to give PMake its head. When you find your makefile isn't behaving as you hoped, the first question that comes to mind (after``What time is it, anyway?'') is ``Why not?'' In answering this, two flags will serve you well: ``
+
+-d m'' and`` -p 2.'' The first causes PMake to tell you as it examines each target in the makefile and indicate why itis deciding whatever it is deciding. You can then use the information printed for other targets to see where
+
+PSD:12-10 PMake -- A Tutorial you went wrong. The ``-p 2'' flag makes PMake print out its internal state when it is done, allowing youto see that you forgot to make that one chapter depend on that file of macros you just got a new version of. The output from ``-p 2'' is intended to resemble closely a real makefile, but with additional informationprovided and with variables expanded in those commands PMake actually printed or executed.
+
+Something to be especially careful about is circular dependencies. E.g.
+
+a : b b : c d d : a
+
+In this case, because of how PMake works, c is the only thing PMake will examine, because d and a willeffectively fall off the edge of the universe, making it impossible to examine
+
+b (or them, for that matter).PMake will tell you (if run in its normal mode) all the targets involved in any cycle it looked at (i.e. if you
+
+have two cycles in the graph (naughty, naughty), but only try to make a target in one of them, PMake willonly tell you about that one. You'll have to try to make the other to find the second cycle). When run as Make, it will only print the first target in the cycle. 2.7. Invoking PMake PMake comes with a wide variety of flags to choose from. They may appear in any order, interspersed withcommand-line variable assignments and targets to create. The flags are as follows:
+
+-d whatThis causes PMake to spew out debugging information that may prove useful to you. If you can't figure out why PMake is doing what it's doing, you might try using this flag. The what parameter is astring of single characters that tell PMake what aspects you are interested in. Most of what I describe will make little sense to you, unless you've dealt with Make before. Just remember where this table isand come back to it as you read on. The characters and the information they produce are as follows:
+
+a Archive searching and caching. c Conditional evaluation. d The searching and caching of directories. j Various snippets of information related to the running of the multiple shells. Not particularlyinteresting.
+
+m The making of each target: what target is being examined; when it was last modified; whetherit is out-of-date; etc. p Makefile parsing. r Remote execution. s The application of suffix-transformation rules. (See chapter 3) t The maintenance of the list of targets. v Variable assignment. Of these all, the m and s letters will be most useful to you. If the -d is the final argument or the argu-ment from which it would get these key letters (see below for a note about which argument would be
+
+used) begins with a -, all of these debugging flags will be set, resulting in massive amounts of output. -f makefileSpecify a makefile to read different from the standard makefiles (
+
+Makefile or makefile). If makefile is ``-'', PMake uses the standard input. This is useful for making quick and dirty make-files. . .
+
+-h Prints out a summary of the various flags PMake accepts. It can also be used to find out what level ofconcurrency was compiled into the version of PMake you are using (look at -J and -L) and various
+
+other information on how PMake was configured. -i If you give this flag, PMake will ignore non-zero status returned by any of its shells. It's like placinga `-' before all the commands in the makefile.
+
+PMake -- A Tutorial PSD:12-11 -k This is similar to -i in that it allows PMake to continue when it sees an error, but unlike -i, wherePMake continues blithely as if nothing went wrong, -k causes it to recognize the error and only continue work on those things that don't depend on the target, either directly or indirectly (throughdepending on something that depends on it), whose creation returned the error. The `k' is for ``keep going''. . . -l PMake has the ability to lock a directory against other people executing it in the same directory (bymeans of a file called ``LOCK.make'' that it creates and checks for in the directory). This is a Good
+
+Thing because two people doing the same thing in the same place can be disastrous for the final prod-uct (too many cooks and all that). Whether this locking is the default is up to your system administrator. If locking is on, -l will turn it off, and vice versa. Note that this locking will not prevent youfrom invoking PMake twice in the same place -- if you own the lock file, PMake will warn you about it but continue to execute. -m directoryTells PMake another place to search for included makefiles via the <...> style. Several -m options
+
+can be given to form a search path. If this construct is used the default system makefile search path iscompletely overridden. To be explained in chapter 3, section 3.2.
+
+-n This flag tells PMake not to execute the commands needed to update the out-of-date targets in themakefile. Rather, PMake will simply print the commands it would have executed and exit. This is
+
+particularly useful for checking the correctness of a makefile. If PMake doesn't do what you expect itto, it's a good chance the makefile is wrong.
+
+-p numberThis causes PMake to print its input in a reasonable form, though not necessarily one that would
+
+make immediate sense to anyone but me. The number is a bitwise-or of 1 and 2 where 1 means itshould print the input before doing any processing and 2 says it should print it after everything has been re-created. Thus -p 3 would print it twice--once before processing and once after (you mightfind the difference between the two interesting). This is mostly useful to me, but you may find it informative in some bizarre circumstances. -q If you give PMake this flag, it will not try to re-create anything. It will just see if anything is out-of-date and exit non-zero if so.
+
+-r When PMake starts up, it reads a default makefile that tells it what sort of system it's on and gives itsome idea of what to do if you don't tell it anything. I'll tell you about it in chapter 3. If you give this
+
+flag, PMake won't read the default makefile. -s This causes PMake to not print commands before they're executed. It is the equivalent of putting an`@' before every command in the makefile.
+
+-t Rather than try to re-create a target, PMake will simply ``touch'' it so as to make it appear up-to-date.If the target didn't exist before, it will when PMake finishes, but if the target did exist, it will appear
+
+to have been updated. -v This is a mixed-compatibility flag intended to mimic the System V version of Make. It is the same asgiving -B, and -V as well as turning off directory locking. Targets can still be created in parallel,
+
+however. This is the mode PMake will enter if it is invoked either as ``smake'' or ``vmake''. -x This tells PMake it's ok to export jobs to other machines, if they're available. It is used when runningin Make mode, as exporting in this mode tends to make things run slower than if the commands were
+
+just executed locally. -B Forces PMake to be as backwards-compatible with Make as possible while still being itself. Thisincludes:
+
+* Executing one shell per shell command
+
+* Expanding anything that looks even vaguely like a variable, with the empty string replacing anyvariable PMake doesn't know.
+
+* Refusing to allow you to escape a `#' with a backslash.
+
+PSD:12-12 PMake -- A Tutorial
+
+* Permitting undefined variables on dependency lines and conditionals (see below). Normally thiscauses PMake to abort. -C This nullifies any and all compatibility mode flags you may have giv en or implied up to the time the-C is encountered. It is useful mostly in a makefile that you wrote for PMake to avoid bad things
+
+happening when someone runs PMake as ``make'' or has things set in the environment that tell it tobe compatible. -C is
+
+not placed in the PMAKE environment variable or the .MAKEFLAGS or MFLAGS global variables.
+
+-D variableAllows you to define a variable to have ``
+
+1'' as its value. The variable is a global variable, not a com-mand-line variable. This is useful mostly for people who are used to the C compiler arguments and
+
+those using conditionals, which I'll get into in section 4.3 -I directoryTells PMake another place to search for included makefiles. Yet another thing to be explained in
+
+chapter 3 (section 3.2, to be precise). -J numberGives the absolute maximum number of targets to create at once on both local and remote machines.
+
+-L numberThis specifies the maximum number of targets to create on the local machine at once. This may be 0,
+
+though you should be wary of doing this, as PMake may hang until a remote machine becomes avail-able, if one is not available when it is started.
+
+-M This is the flag that provides absolute, complete, full compatibility with Make. It still allows you touse all but a few of the features of PMake, but it is non-parallel. This is the mode PMake enters if you
+
+call it ``make.'' -P When creating targets in parallel, several shells are executing at once, each wanting to write its owntwo cent's-worth to the screen. This output must be captured by PMake in some way in order to prevent the screen from being filled with garbage even more indecipherable than you usually see. PMakehas two ways of doing this, one of which provides for much cleaner output and a clear separation between the output of different jobs, the other of which provides a more immediate response so onecan tell what is really happening. The former is done by notifying you when the creation of a target starts, capturing the output and transferring it to the screen all at once when the job finishes. The lat-ter is done by catching the output of the shell (and its children) and buffering it until an entire line is received, then printing that line preceded by an indication of which job produced the output. Since Iprefer this second method, it is the one used by default. The first method will be used if you give the -P flag to PMake. -V As mentioned before, the -V flag tells PMake to use Make's style of expanding variables, substitut-ing the empty string for any variable it doesn't know.
+
+-W There are several times when PMake will print a message at you that is only a warning, i.e. it cancontinue to work in spite of your having done something silly (such as forgotten a leading tab for a
+
+shell command). Sometimes you are well aware of silly things you have done and would like PMaketo stop bothering you. This flag tells it to shut up about anything non-fatal.
+
+-X This flag causes PMake to not attempt to export any jobs to another machine. Several flags may follow a single `-'. Those flags that require arguments take them from successive param-eters. E.g.
+
+pmake -fDnI server.mk DEBUG /chip2/X/server/include will cause PMake to read server.mk as the input makefile, define the variable DEBUG as a global vari-able and look for included makefiles in the directory
+
+/chip2/X/server/include.
+
+2.8. Summary A makefile is made of four types of lines:
+
+PMake -- A Tutorial PSD:12-13
+
+* Dependency lines
+
+* Creation commands
+
+* Variable assignments
+
+* Comments, include statements and conditional directives A dependency line is a list of one or more targets, an operator (`:', `::', or `!'), and a list of zero or moresources. Sources may contain wildcards and certain local variables.
+
+A creation command is a regular shell command preceded by a tab. In addition, if the first two charactersafter the tab (and other whitespace) are a combination of `
+
+@' or `-', PMake will cause the command to notbe printed (if the character is ` @') or errors from it to be ignored (if `-'). A blank line, dependency line orvariable assignment terminates a creation script. There may be only one creation script for each target with
+
+a `:' or `!' operator. Variables are places to store text. They may be unconditionally assigned-to using the `=' operator,appended-to using the `
+
++=' operator, conditionally (if the variable is undefined) assigned-to with the `?='operator, and assigned-to with variable expansion with the `
+
+:=' operator. The output of a shell commandmay be assigned to a variable using the ` !=' operator. Variables may be expanded (their value inserted) byenclosing their name in parentheses or curly braces, preceded by a dollar sign. A dollar sign may be
+
+escaped with another dollar sign. Variables are not expanded if PMake doesn't know about them. There areseven local variables:
+
+.TARGET, .ALLSRC, .OODATE, .PREFIX, .IMPSRC, .ARCHIVE, and .MEMBER. Four of them (.TARGET, .PREFIX, .ARCHIVE, and .MEMBER) may be used to specify ``dynamicsources.'' Variables are good. Know them. Love them. Live them.
+
+Debugging of makefiles is best accomplished using the -n, -d m, and -p 2 flags. 2.9. Exercises TBA
+
+3. Short-cuts and Other Nice Things Based on what I've told you so far, you may have gotten the impression that PMake is just a way of storingaw ay commands and making sure you don't forget to compile something. Good. That's just what it is.
+
+However, the ways I've described have been inelegant, at best, and painful, at worst. This chapter containsthings that make the writing of makefiles easier and the makefiles themselves shorter and easier to modify (and, occasionally, simpler). In this chapter, I assume you are somewhat more familiar with Sprite (orUNIX, if that's what you're using) than I did in chapter 2, just so you're on your toes. So without further ado... 3.1. Transformation Rules As you know, a file's name consists of two parts: a base name, which gives some hint as to the contents ofthe file, and a suffix, which usually indicates the format of the file. Over the years, as
+
+UNIX(R) has devel-oped, naming conventions, with regard to suffixes, have also developed that have become almost as incontrovertible as Law. E.g. a file ending in .c is assumed to contain C source code; one with a .o suffix isassumed to be a compiled, relocatable object file that may be linked into any program; a file with a
+
+.mssuffix is usually a text file to be processed by Troff with the -ms macro package, and so on. One of the best
+
+aspects of both Make and PMake comes from their understanding of how the suffix of a file pertains to itscontents and their ability to do things with a file based solely on its suffix. This ability comes from something known as a transformation rule. A transformation rule specifies how to change a file with one suffixinto a file with another suffix.
+
+A transformation rule looks much like a dependency line, except the target is made of two known suffixesstuck together. Suffixes are made known to PMake by placing them as sources on a dependency line whose target is the special target .SUFFIXES. E.g.
+
+PSD:12-14 PMake -- A Tutorial
+
+.SUFFIXES : .o .c .c.o :
+
+$(CC) $(CFLAGS) -c $(.IMPSRC)
+
+The creation script attached to the target is used to transform a file with the first suffix (in this case, .c) intoa file with the second suffix (here,
+
+.o). In addition, the target inherits whatever attributes have been appliedto the transformation rule. The simple rule given above says that to transform a C source file into an object
+
+file, you compile it using cc with the -c flag. This rule is taken straight from the system makefile. Manytransformation rules (and suffixes) are defined there, and I refer you to it for more examples (type ``
+
+pmake -h'' to find out where it is).
+
+There are several things to note about the transformation rule given above:
+
+1) The .IMPSRC variable. This variable is set to the ``implied source'' (the file from which thetarget is being created; the one with the first suffix), which, in this case, is the .c file.
+
+2) The CFLAGS variable. Almost all of the transformation rules in the system makefile are set upusing variables that you can alter in your makefile to tailor the rule to your needs. In this case,
+
+if you want all your C files to be compiled with the -g flag, to provide information for dbx,you would set the
+
+CFLAGS variable to contain -g (``CFLAGS = -g'') and PMake would takecare of the rest.
+
+To giv e you a quick example, the makefile in 2.3.4 could be changed to this:
+
+OBJS = a.o b.o c.o program : $(OBJS)
+
+$(CC) -o $(.TARGET) $(.ALLSRC) $(OBJS) : defs.h
+
+The transformation rule I gav e above takes the place of the 6 lines1
+
+a.o : a.c
+
+cc -c a.c b.o : b.c
+
+cc -c b.c c.o : c.c
+
+cc -c c.c
+
+Now you may be wondering about the dependency between the .o and .c files -- it's not mentioned any-where in the new makefile. This is because it isn't needed: one of the effects of applying a transformation
+
+rule is the target comes to depend on the implied source. That's why it's called the implied source. For a more detailed example. Say you have a makefile like this:
+
+a.out : a.o b.o
+
+$(CC) $(.ALLSRC)
+
+and a directory set up like this:
+
+total 4 -rw-rw-r-- 1 deboor 34 Sep 7 00:43 Makefile -rw-rw-r-- 1 deboor 119 Oct 3 19:39 a.c -rw-rw-r-- 1 deboor 201 Sep 7 00:43 a.o -rw-rw-r-- 1 deboor 69 Sep 7 00:43 b.c
+
+While just typing ``pmake'' will do the right thing, it's much more informative to type ``pmake -d s''.This will show you what PMake is up to as it processes the files. In this case, PMake prints the following:
+
+1 This is also somewhat cleaner, I think, than the dynamic source solution presented in 2.6
+
+PMake -- A Tutorial PSD:12-15
+
+Suff_FindDeps (a.out)
+
+using existing source a.o applying .o -> .out to "a.o" Suff_FindDeps (a.o)
+
+trying a.c...got it applying .c -> .o to "a.c" Suff_FindDeps (b.o)
+
+trying b.c...got it applying .c -> .o to "b.c" Suff_FindDeps (a.c)
+
+trying a.y...not there trying a.l...not there trying a.c,v...not there trying a.y,v...not there trying a.l,v...not there Suff_FindDeps (b.c)
+
+trying b.y...not there trying b.l...not there trying b.c,v...not there trying b.y,v...not there trying b.l,v...not there --- a.o --- cc -c a.c --- b.o --- cc -c b.c --- a.out --- cc a.o b.o
+
+Suff_FindDeps is the name of a function in PMake that is called to check for implied sources for a tar-get using transformation rules. The transformations it tries are, naturally enough, limited to the ones that
+
+have been defined (a transformation may be defined multiple times, by the way, but only the most recentone will be used). You will notice, however, that there is a definite order to the suffixes that are tried. This order is set by the relative positions of the suffixes on the .SUFFIXES line -- the earlier a suffix appears,the earlier it is checked as the source of a transformation. Once a suffix has been defined, the only way to change its position in the pecking order is to remove all the suffixes (by having a .SUFFIXES dependencyline with no sources) and redefine them in the order you want. (Previously-defined transformation rules will be automatically redefined as the suffixes they inv olve are re-entered.) Another way to affect the search order is to make the dependency explicit. In the above example, a.outdepends on
+
+a.o and b.o. Since a transformation exists from .o to .out, PMake uses that, as indicatedby the `` using existing source a.o'' message.
+
+The search for a transformation starts from the suffix of the target and continues through all the definedtransformations, in the order dictated by the suffix ranking, until an existing file with the same base (the target name minus the suffix and any leading directories) is found. At that point, one or more transformationrules will have been found to change the one existing file into the target.
+
+For example, ignoring what's in the system makefile for now, say you have a makefile like this:
+
+PSD:12-16 PMake -- A Tutorial
+
+.SUFFIXES : .out .o .c .y .l .l.c :
+
+lex $(.IMPSRC) mv lex.yy.c $(.TARGET) .y.c :
+
+yacc $(.IMPSRC) mv y.tab.c $(.TARGET) .c.o :
+
+cc -c $(.IMPSRC) .o.out :
+
+cc -o $(.TARGET) $(.IMPSRC)
+
+and the single file jive.l. If you were to type ``pmake -rd ms jive.out,'' you would get the fol-lowing output for
+
+jive.out:
+
+Suff_FindDeps (jive.out)
+
+trying jive.o...not there trying jive.c...not there trying jive.y...not there trying jive.l...got it applying .l -> .c to "jive.l" applying .c -> .o to "jive.c" applying .o -> .out to "jive.o"
+
+and this is why: PMake starts with the target jive.out, figures out its suffix (.out) and looks for thingsit can transform to a
+
+.out file. In this case, it only finds .o, so it looks for the file jive.o. It fails to findit, so it looks for transformations into a
+
+.o file. Again it has only one choice: .c. So it looks for jive.cand, as you know, fails to find it. At this point it has two choices: it can create the
+
+.c file from either a .yfile or a .l file. Since .y came first on the .SUFFIXES line, it checks for jive.y first, but can't find it,so it looks for
+
+jive.l and, lo and behold, there it is. At this point, it has defined a transformation path asfollows: .l o"" .c o"" .o o"" .out and applies the transformation rules accordingly. For completeness, andto give you a better idea of what PMake actually did with this three-step transformation, this is what PMake
+
+printed for the rest of the process:
+
+Suff_FindDeps (jive.o)
+
+using existing source jive.c applying .c -> .o to "jive.c" Suff_FindDeps (jive.c)
+
+using existing source jive.l applying .l -> .c to "jive.l" Suff_FindDeps (jive.l) Examining jive.l...modified 17:16:01 Oct 4, 1987...up-to-date Examining jive.c...non-existent...out-of-date --- jive.c --- lex jive.l . . . meaningless lex output deleted . . . mv lex.yy.c jive.c Examining jive.o...non-existent...out-of-date --- jive.o --- cc -c jive.c Examining jive.out...non-existent...out-of-date --- jive.out --- cc -o jive.out jive.o
+
+One final question remains: what does PMake do with targets that have no known suffix? PMake simplypretends it actually has a known suffix and searches for transformations accordingly. The suffix it chooses
+
+is the source for the .NULL target mentioned later. In the system makefile, .out is chosen as the ``null
+
+PMake -- A Tutorial PSD:12-17 suffix'' because most people use PMake to create programs. You are, however, free and welcome to changeit to a suffix of your own choosing. The null suffix is ignored, however, when PMake is in compatibility mode (see chapter 4). 3.2. Including Other Makefiles Just as for programs, it is often useful to extract certain parts of a makefile into another file and just includeit in other makefiles somehow. Many compilers allow you say something like
+
+#include "defs.h" to include the contents of defs.h in the source file. PMake allows you to do the same thing for makefiles,with the added ability to use variables in the filenames. An include directive in a makefile looks either like
+
+this:
+
+#include <file> or this
+
+#include "file" The difference between the two is where PMake searches for the file: the first way, PMake will look for thefile only in the system makefile directory (or directories) (to find out what that directory is, give PMake the
+
+-h flag). The system makefile directory search path can be overridden via the -m option. For files in dou-ble-quotes, the search is more complex:
+
+1) The directory of the makefile that's including the file. 2) The current directory (the one in which you invoked PMake). 3) The directories given by you using -I flags, in the order in which you gav e them. 4) Directories given by .PATH dependency lines (see chapter 4). 5) The system makefile directory. in that order. You are free to use PMake variables in the filename--PMake will expand them before searching for the file.You must specify the searching method with either angle brackets or double-quotes
+
+outside of a variableexpansion. I.e. the following
+
+SYSTEM = <command.mk> #include $(SYSTEM) won't work.
+
+3.3. Saving Commands There may come a time when you will want to save certain commands to be executed when everything elseis done. For instance: you're making several different libraries at one time and you want to create the members in parallel. Problem is, ranlib is another one of those programs that can't be run more than once inthe same directory at the same time (each one creates a file called
+
+__.SYMDEF into which it stuffs infor-mation for the linker to use. Two of them running at once will overwrite each other's file and the result will
+
+be garbage for both parties). You might want a way to save the ranlib commands til the end so they can berun one after the other, thus keeping them from trashing each other's file. PMake allows you to do this by inserting an ellipsis (``. . .'') as a command between commands to be run at once and those to be run later. So for the ranlib case above, you might do this:
+
+PSD:12-18 PMake -- A Tutorial
+
+lib1.a : $(LIB1OBJS)
+
+rm -f $(.TARGET) ar cr $(.TARGET) $(.ALLSRC) ... ranlib $(.TARGET)
+
+lib2.a : $(LIB2OBJS)
+
+rm -f $(.TARGET) ar cr $(.TARGET) $(.ALLSRC) ... ranlib $(.TARGET)
+
+This would save both
+
+ranlib $(.TARGET) commands until the end, when they would run one after the other (using the correct value for the .TARGETvariable, of course).
+
+Commands saved in this manner are only executed if PMake manages to re-create everything without anerror.
+
+3.4. Target Attributes PMake allows you to give attributes to targets by means of special sources. Like everything else PMakeuses, these sources begin with a period and are made up of all upper-case letters. There are various reasons
+
+for using them, and I will try to give examples for most of them. Others you'll have to find uses for your-self. Think of it as ``an exercise for the reader.'' By placing one (or more) of these as a source on a dependency line, you are ``marking the target(s) with that attribute.'' That's just the way I phrase it, so you know. Any attributes given as sources for a transformation rule are applied to the target of the transformation rulewhen the rule is applied.
+
+.DONTCARE If a target is marked with this attribute and PMake can't figure out how to create it, it will
+
+ignore this fact and assume the file isn't really needed or actually exists and PMake justcan't find it. This may prove wrong, but the error will be noted later on, not when PMake tries to create the target so marked. This attribute also prevents PMake from attempting totouch the target if it is given the -t flag.
+
+.EXEC This attribute causes its shell script to be executed while having no effect on targets thatdepend on it. This makes the target into a sort of subroutine. An example. Say you have
+
+some LISP files that need to be compiled and loaded into a LISP process. To do this, youecho LISP commands into a file and execute a LISP with this file as its input when everything's done. Say also that you have to load other files from another system before you cancompile your files and further, that you don't want to go through the loading and dumping unless one of your files has changed. Your makefile might look a little bit like this (remem-ber, this is an educational example, and don't worry about the
+
+COMPILE rule, all will soonbecome clear, grasshopper):
+
+PMake -- A Tutorial PSD:12-19
+
+system : init a.fasl b.fasl c.fasl
+
+for i in $(.ALLSRC); do
+
+echo -n '(load "' >> input echo -n ${i} >> input echo '")' >> input done echo '(dump "$(.TARGET)")' >> input lisp < input
+
+a.fasl : a.l init COMPILE b.fasl : b.l init COMPILE c.fasl : c.l init COMPILE COMPILE : .USE
+
+echo '(compile "$(.ALLSRC)")' >> input init : .EXEC
+
+echo '(load-system)' > input
+
+.EXEC sources, don't appear in the local variables of targets that depend on them (nor arethey touched if PMake is giv en the -t flag). Note that all the rules, not just that for
+
+system, include init as a source. This is because none of the other targets can be made until init has been made, thus they depend on it.
+
+.EXPORT This is used to mark those targets whose creation should be sent to another machine if at allpossible. This may be used by some exportation schemes if the exportation is expensive. You
+
+should ask your system administrator if it is necessary. .EXPORTSAMETells the export system that the job should be exported to a machine of the same architecture
+
+as the current one. Certain operations (e.g. running text through nroff) can be performedthe same on any architecture (CPU and operating system type), while others (e.g. compiling a program with cc) must be performed on a machine with the same architecture. Not allexport systems will support this attribute.
+
+.IGNORE Giving a target the .IGNORE attribute causes PMake to ignore errors from any of the tar-get's commands, as if they all had `-' before them. .INVISIBLE This allows you to specify one target as a source for another without the one affecting theother's local variables. Useful if, say, you have a makefile that creates two programs, one of
+
+which is used to create the other, so it must exist before the other is created. You could say
+
+prog1 : $(PROG1OBJS) prog2 MAKEINSTALL prog2 : $(PROG2OBJS) .INVISIBLE MAKEINSTALL
+
+where MAKEINSTALL is some complex .USE rule (see below) that depends on the .ALLSRC variable containing the right things. Without the .INVISIBLE attribute for prog2,the
+
+MAKEINSTALL rule couldn't be applied. This is not as useful as it should be, and thesemantics may change (or the whole thing go away) in the not-too-distant future.
+
+.JOIN This is another way to avoid performing some operations in parallel while permitting every-thing else to be done so. Specifically it forces the target's shell script to be executed only if
+
+one or more of the sources was out-of-date. In addition, the target's name, in both its .TARGET variable and all the local variables of any target that depends on it, is replaced by thevalue of its
+
+.ALLSRC variable. As an example, suppose you have a program that has fourlibraries that compile in the same directory along with, and at the same time as, the program.
+
+You again have the problem with ranlib that I mentioned earlier, only this time it's moresevere: you can't just put the ranlib off to the end since the program will need those libraries before it can be re-created. You can do something like this:
+
+PSD:12-20 PMake -- A Tutorial
+
+program : $(OBJS) libraries
+
+cc -o $(.TARGET) $(.ALLSRC)
+
+libraries : lib1.a lib2.a lib3.a lib4.a .JOIN
+
+ranlib $(.OODATE)
+
+In this case, PMake will re-create the $(OBJS) as necessary, along with lib1.a, lib2.a, lib3.a and lib4.a. It will then execute ranlib on any library that waschanged and set
+
+program's .ALLSRC variable to contain what's in $(OBJS) followed by`` lib1.a lib2.a lib3.a lib4.a.'' In case you're wondering, it's called .JOINbecause it joins together different threads of the ``input graph'' at the target marked with the
+
+attribute. Another aspect of the .JOIN attribute is it keeps the target from being created ifthe -t flag was given.
+
+.MAKE The .MAKE attribute marks its target as being a recursive inv ocation of PMake. This forcesPMake to execute the script associated with the target (if it's out-of-date) even if you gav e
+
+the -n or -t flag. By doing this, you can start at the top of a system and type
+
+pmake -n and have it descend the directory tree (if your makefiles are set up correctly), printing what itwould have executed if you hadn't included the -n flag.
+
+.NOEXPORT If possible, PMake will attempt to export the creation of all targets to another machine (this
+
+depends on how PMake was configured). Sometimes, the creation is so simple, it is pointlessto send it to another machine. If you give the target the
+
+.NOEXPORT attribute, it will be runlocally, even if you've giv en PMake the -L 0 flag.
+
+.NOTMAIN Normally, if you do not specify a target to make in any other way, PMake will take the firsttarget on the first dependency line of a makefile as the target to create. That target is known
+
+as the ``Main Target'' and is labeled as such if you print the dependencies out using the -pflag. Giving a target this attribute tells PMake that the target is definitely
+
+not the Main Tar-get. This allows you to place targets in an included makefile and have PMake create something else by default. .PRECIOUS When PMake is interrupted (you type control-C at the keyboard), it will attempt to clean upafter itself by removing any half-made targets. If a target has the
+
+.PRECIOUS attribute,however, PMake will leave it alone. An additional side effect of the `::' operator is to mark
+
+the targets as .PRECIOUS. .SILENT Marking a target with this attribute keeps its commands from being printed when they'reexecuted, just as if they had an `@' in front of them.
+
+.USE By giving a target this attribute, you turn it into PMake's equivalent of a macro. When thetarget is used as a source for another target, the other target acquires the commands, sources
+
+and attributes (except .USE) of the source. If the target already has commands, the .USEtarget's commands are added to the end. If more than one .USE-marked source is given to a target, the rules are applied sequentially. The typical .USE rule (as I call them) will use the sources of the target to which it is applied(as stored in the
+
+.ALLSRC variable for the target) as its ``arguments,'' if you will. Forexample, you probably noticed that the commands for creating
+
+lib1.a and lib2.a in theexample in section 3.3 were exactly the same. You can use the
+
+.USE attribute to eliminatethe repetition, like so:
+
+PMake -- A Tutorial PSD:12-21
+
+lib1.a : $(LIB1OBJS) MAKELIB lib2.a : $(LIB2OBJS) MAKELIB
+
+MAKELIB : .USE
+
+rm -f $(.TARGET) ar cr $(.TARGET) $(.ALLSRC) ... ranlib $(.TARGET)
+
+Several system makefiles (not to be confused with The System Makefile) make use of these.USE rules to make your life easier (they're in the default, system makefile directory...take a
+
+look). Note that the .USE rule source itself (MAKELIB) does not appear in any of the tar-gets's local variables. There is no limit to the number of times I could use the
+
+MAKELIBrule. If there were more libraries, I could continue with `` lib3.a : $(LIB3OBJS) MAKELIB'' and so on and so forth.
+
+3.5. Special Targets As there were in Make, so there are certain targets that have special meaning to PMake. When you use oneon a dependency line, it is the only target that may appear on the left-hand-side of the operator. As for the
+
+attributes and variables, all the special targets begin with a period and consist of upper-case letters only. Iwon't describe them all in detail because some of them are rather complex and I'll describe them in more detail than you'll want in chapter 4. The targets are as follows: .BEGIN Any commands attached to this target are executed before anything else is done. You can use itfor any initialization that needs doing.
+
+.DEFAULT This is sort of a .USE rule for any target (that was used only as a source) that PMake can't figure out any other way to create. It's only ``sort of'' a .USE rule because only the shell scriptattached to the
+
+.DEFAULT target is used. The .IMPSRC variable of a target that inherits .DEFAULT's commands is set to the target's own name.
+
+.END This serves a function similar to .BEGIN, in that commands attached to it are executed onceev erything has been re-created (so long as no errors occurred). It also serves the extra function
+
+of being a place on which PMake can hang commands you put off to the end. Thus the scriptfor this target will be executed before any of the commands you save with the ``. . .''.
+
+.EXPORT The sources for this target are passed to the exportation system compiled into PMake. Somesystems will use these sources to configure themselves. You should ask your system administrator about this. .IGNORE This target marks each of its sources with the .IGNORE attribute. If you don't giv e it anysources, then it is like giving the -i flag when you invoke PMake -- errors are ignored for all
+
+commands. .INCLUDESThe sources for this target are taken to be suffixes that indicate a file that can be included in a
+
+program source file. The suffix must have already been declared with .SUFFIXES (seebelow). Any suffix so marked will have the directories on its search path (see
+
+.PATH, below)placed in the .INCLUDES variable, each preceded by a -I flag. This variable can then be usedas an argument for the compiler in the normal fashion. The
+
+.h suffix is already marked in thisway in the system makefile. E.g. if you have
+
+.SUFFIXES : .bitmap .PATH.bitmap : /usr/local/X/lib/bitmaps .INCLUDES : .bitmap
+
+PMake will place ``-I/usr/local/X/lib/bitmaps'' in the .INCLUDES variable andyou can then say
+
+PSD:12-22 PMake -- A Tutorial
+
+cc $(.INCLUDES) -c xprogram.c (Note: the .INCLUDES variable is not actually filled in until the entire makefile has beenread.)
+
+.INTERRUPTWhen PMake is interrupted, it will execute the commands in the script for this target, if it
+
+exists. .LIBS This does for libraries what .INCLUDES does for include files, except the flag used is -L, asrequired by those linkers that allow you to tell them where to find libraries. The variable used
+
+is .LIBS. Be forewarned that PMake may not have been compiled to do this if the linker onyour system doesn't accept the -L flag, though the
+
+.LIBS variable will always be definedonce the makefile has been read.
+
+.MAIN If you didn't giv e a target (or targets) to create when you invoked PMake, it will take thesources of this target as the targets to create. .MAKEFLAGSThis target provides a way for you to always specify flags for PMake when the makefile is
+
+used. The flags are just as they would be typed to the shell (except you can't use shell variablesunless they're in the environment), though the -f and -r flags have no effect.
+
+.NULL This allows you to specify what suffix PMake should pretend a file has if, in fact, it has noknown suffix. Only one suffix may be so designated. The last source on the dependency line is
+
+the suffix that is used (you should, however, only give one suffix. . .). .PATH If you give sources for this target, PMake will take them as directories in which to search forfiles it cannot find in the current directory. If you give no sources, it will clear out any directories added to the search path before. Since the effects of this all get very complex, I'll leave ittil chapter four to give you a complete explanation.
+
+.PATHsuffix This does a similar thing to
+
+.PATH, but it does it only for files with the given suffix. The suffixmust have been defined already. Look at Search Paths (section 4.1) for more information.
+
+.PRECIOUSSimilar to
+
+.IGNORE, this gives the .PRECIOUS attribute to each source on the dependencyline, unless there are no sources, in which case the
+
+.PRECIOUS attribute is given to every tar-get in the file.
+
+.RECURSIVEThis target applies the
+
+.MAKE attribute to all its sources. It does nothing if you don't giv e itany sources.
+
+.SHELL PMake is not constrained to only using the Bourne shell to execute the commands you put inthe makefile. You can tell it some other shell to use with this target. Check out A Shell is a
+
+Shell is a Shell (section 4.4) for more information. .SILENT When you use .SILENT as a target, it applies the .SILENT attribute to each of its sources. Ifthere are no sources on the dependency line, then it is as if you gav e PMake the -s flag and no
+
+commands will be echoed. .SUFFIXES This is used to give new file suffixes for PMake to handle. Each source is a suffix PMake
+
+should recognize. If you give a .SUFFIXES dependency line with no sources, PMake will for-get about all the suffixes it knew (this also nukes the null suffix). For those targets that need to have suffixes defined, this is how you do it. In addition to these targets, a line of the form
+
+attribute : sources applies the attribute to all the targets listed as sources.
+
+PMake -- A Tutorial PSD:12-23 3.6. Modifying Variable Expansion Variables need not always be expanded verbatim. PMake defines several modifiers that may be applied to avariable's value before it is expanded. You apply a modifier by placing it after the variable name with a
+
+colon between the two, like so:
+
+${VARIABLE:modifier} Each modifier is a single character followed by something specific to the modifier itself. You may apply asmany modifiers as you want -- each one is applied to the result of the previous and is separated from the
+
+previous by another colon. There are seven ways to modify a variable's expansion, most of which come from the C shell variable mod-ification characters:
+
+MpatternThis is used to select only those words (a word is a series of characters that are neither spaces
+
+nor tabs) that match the given pattern. The pattern is a wildcard pattern like that used by theshell, where
+
+* means 0 or more characters of any sort; ? is any single character; [abcd]matches any single character that is either `a', `b', `c' or `d' (there may be any number of characters between the brackets); [0-9] matches any single character that is between `0' and `9'(i.e. any digit. This form may be freely mixed with the other bracket form), and `\' is used to escape any of the characters `*', `?', `[' or `:', leaving them as regular characters to matchthemselves in a word. For example, the system makefile
+
+<makedepend.mk> uses`` $(CFLAGS:M-[ID]*)'' to extract all the -I and -D flags that would be passed to the Ccompiler. This allows it to properly locate include files and generate the correct dependencies.
+
+NpatternThis is identical to
+
+:M except it substitutes all words that don't match the given pattern.
+
+S/search-string/replacement-string/[g]Causes the first occurrence of
+
+search-string in the variable to be replaced by replacementstring, unless the g flag is given at the end, in which case all occurrences of the string arereplaced. The substitution is performed on each word in the variable in turn. If
+
+search-stringbegins with a ^, the string must match starting at the beginning of the word. If search-stringends with a $, the string must match to the end of the word (these two may be combined toforce an exact match). If a backslash precedes these two characters, however, they lose their
+
+special meaning. Variable expansion also occurs in the normal fashion inside both the searchstring and the replacement-string, except that a backslash is used to prevent the expansion of a $, not another dollar sign, as is usual. Note that search-string is just a string, not a pattern, sonone of the usual regular-expression/wildcard characters have any special meaning save
+
+^ and $. In the replacement string, the & character is replaced by the search-string unless it is pre-ceded by a backslash. You are allowed to use any character except colon or exclamation point
+
+to separate the two strings. This so-called delimiter character may be placed in either string bypreceding it with a backslash.
+
+T Replaces each word in the variable expansion by its last component (its ``tail''). For example,given
+
+OBJS = ../lib/a.o b /usr/lib/libm.a TAILS = $(OBJS:T)
+
+the variable TAILS would expand to ``a.o b libm.a.'' H This is similar to :T, except that every word is replaced by everything but the tail (the``head''). Using the same definition of
+
+OBJS, the string ``$(OBJS:H)'' would expand to`` ../lib /usr/lib.'' Note that the final slash on the heads is removed and anything with-out a head is replaced by the empty string.
+
+E :E replaces each word by its suffix (``extension''). So ``$(OBJS:E)'' would give you ``.o
+
+.a.''
+
+PSD:12-24 PMake -- A Tutorial
+
+R This replaces each word by everything but the suffix (the ``root'' of the word).``
+
+$(OBJS:R)'' expands to `` ../lib/a b /usr/lib/libm.''
+
+In addition, the System V style of substitution is also supported. This looks like:
+
+$(VARIABLE:search-string=replacement) It must be the last modifier in the chain. The search is anchored at the end of each word, so only suffixes orwhole words may be replaced.
+
+3.7. More on Debugging 3.8. More Exercises (3.1) You've got a set programs, each of which is created from its own assembly-language source file (suf-fix
+
+.asm). Each program can be assembled into two versions, one with error-checking code assem-bled in and one without. You could assemble them into files with different suffixes (
+
+.eobj and .obj, for instance), but your linker only understands files that end in .obj. To top it all off, thefinal executables
+
+must have the suffix .exe. How can you still use transformation rules to makeyour life easier (Hint: assume the error-checking versions have
+
+ec tacked onto their prefix)?
+
+(3.2) Assume, for a moment or two, you want to perform a sort of ``indirection'' by placing the name of avariable into another one, then you want to get the value of the first by expanding the second somehow. Unfortunately, PMake doesn't allow constructs like
+
+$($(FOO)) What do you do? Hint: no further variable expansion is performed after modifiers are applied, thus ifyou cause a $ to occur in the expansion, that's what will be in the result.
+
+4. PMake for Gods This chapter is devoted to those facilities in PMake that allow you to do a great deal in a makefile with verylittle work, as well as do some things you couldn't do in Make without a great deal of work (and perhaps
+
+the use of other programs). The problem with these features, is they must be handled with care, or you willend up with a mess.
+
+Once more, I assume a greater familiarity with UNIX or Sprite than I did in the previous two chapters. 4.1. Search Paths PMake supports the dispersal of files into multiple directories by allowing you to specify places to look forsources with
+
+.PATH targets in the makefile. The directories you give as sources for these targets make up a``search path.'' Only those files used exclusively as sources are actually sought on a search path, the
+
+assumption being that anything listed as a target in the makefile can be created by the makefile and thusshould be in the current directory.
+
+There are two types of search paths in PMake: one is used for all types of files (including included make-files) and is specified with a plain
+
+.PATH target (e.g. ``.PATH : RCS''), while the other is specific to acertain type of file, as indicated by the file's suffix. A specific search path is indicated by immediately following the .PATH with the suffix of the file. For instance
+
+.PATH.h : /sprite/lib/include /sprite/att/lib/include would tell PMake to look in the directories /sprite/lib/include and /sprite/att/lib/include for any files whose suffix is .h.
+
+The current directory is always consulted first to see if a file exists. Only if it cannot be found there are thedirectories in the specific search path, followed by those in the general search path, consulted.
+
+A search path is also used when expanding wildcard characters. If the pattern has a recognizable suffix onit, the path for that suffix will be used for the expansion. Otherwise the default search path is employed.
+
+PMake -- A Tutorial PSD:12-25 When a file is found in some directory other than the current one, all local variables that would have con-tained the target's name (
+
+.ALLSRC, and .IMPSRC) will instead contain the path to the file, as found byPMake. Thus if you have a file
+
+../lib/mumble.c and a makefile
+
+.PATH.c : ../lib mumble : mumble.c
+
+$(CC) -o $(.TARGET) $(.ALLSRC)
+
+the command executed to create mumble would be ``cc -o mumble ../lib/mumble.c.'' (As anaside, the command in this case isn't strictly necessary, since it will be found using transformation rules if it
+
+isn't giv en. This is because .out is the null suffix by default and a transformation exists from .c to .out.Just thought I'd throw that in.)
+
+If a file exists in two directories on the same search path, the file in the first directory on the path will be theone PMake uses. So if you have a large system spread over many directories, it would behoove you to follow a naming convention that avoids such conflicts. Something you should know about the way search paths are implemented is that each directory is read, andits contents cached, exactly once -- when it is first encountered -- so any changes to the directories while
+
+PMake is running will not be noted when searching for implicit sources, nor will they be found whenPMake attempts to discover when the file was last modified, unless the file was created in the current directory. While people have suggested that PMake should read the directories each time, my experience sug-gests that the caching seldom causes problems. In addition, not caching the directories slows things down enormously because of PMake's attempts to apply transformation rules through non-existent files -- thenumber of extra file-system searches is truly staggering, especially if many files without suffixes are used and the null suffix isn't changed from .out. 4.2. Archives and Libraries UNIX and Sprite allow you to merge files into an archive using the ar command. Further, if the files arerelocatable object files, you can run
+
+ranlib on the archive and get yourself a library that you can link intoany program you want. The main problem with archives is they double the space you need to store the
+
+archived files, since there's one copy in the archive and one copy out by itself. The problem with libraries isyou usually think of them as
+
+-lm rather than /usr/lib/libm.a and the linker thinks they're out-of-date if you so much as look at them.
+
+PMake solves the problem with archives by allowing you to tell it to examine the files in the archives (soyou can remove the individual files without having to regenerate them later). To handle the problem with libraries, PMake adds an additional way of deciding if a library is out-of-date:
+
+* If the table of contents is older than the library, or is missing, the library is out-of-date. A library is any target that looks like ``-lname'' or that ends in a suffix that was marked as a library usingthe
+
+.LIBS target. .a is so marked in the system makefile.
+
+Members of an archive are specified as ``archive(member[ member...])''. Thus ``'libdix.a(window.o)'' specifies the file window.o in the archive libdix.a. You may also use wildcards to specifythe members of the archive. Just remember that most the wildcard characters will only find
+
+existing files.
+
+A file that is a member of an archive is treated specially. If the file doesn't exist, but it is in the archive, themodification time recorded in the archive is used for the file when determining if the file is out-of-date.
+
+When figuring out how to make an archived member target (not the file itself, but the file in the archive --the
+
+archive(member) target), special care is taken with the transformation rules, as follows:
+
+* archive(member) is made to depend on member.
+
+* The transformation from the member's suffix to the archive's suffix is applied to the archive(member) tar-get.
+
+* The archive(member)'s .TARGET variable is set to the name of the member if member is actually a tar-get, or the path to the member file if
+
+member is only a source.
+
+* The .ARCHIVE variable for the archive(member) target is set to the name of the archive.
+
+PSD:12-26 PMake -- A Tutorial
+
+* The .MEMBER variable is set to the actual string inside the parentheses. In most cases, this will be thesame as the
+
+.TARGET variable.
+
+* The archive(member)'s place in the local variables of the targets that depend on it is taken by the value ofits
+
+.TARGET variable.
+
+Thus, a program library could be created with the following makefile:
+
+.o.a :
+
+... rm -f $(.TARGET:T) OBJS = obj1.o obj2.o obj3.o libprog.a : libprog.a($(OBJS))
+
+ar cru $(.TARGET) $(.OODATE) ranlib $(.TARGET)
+
+This will cause the three object files to be compiled (if the corresponding source files were modified afterthe object file or, if that doesn't exist, the archived object file), the out-of-date ones archived in
+
+libprog.a, a table of contents placed in the archive and the newly-archived object files to be removed. All this is used in the makelib.mk system makefile to create a single library with ease. This makefilelooks like this:
+
+PMake -- A Tutorial PSD:12-27
+
+# # Rules for making libraries. The object files that make up the library # are removed once they are archived. # # To make several libraries in parallel, you should define the variable # "many_libraries". This will serialize the invocations of ranlib. # # To use, do something like this: # # OBJECTS = <files in the library> # # fish.a: fish.a($(OBJECTS)) MAKELIB # #
+
+#ifndef _MAKELIB_MK _MAKELIB_MK =
+
+#include <po.mk> .po.a .o.a :
+
+... rm -f $(.MEMBER)
+
+ARFLAGS ?= crl # # Re-archive the out-of-date members and recreate the library's table of # contents using ranlib. If many_libraries is defined, put the ranlib # off til the end so many libraries can be made at once. # MAKELIB : .USE .PRECIOUS
+
+ar $(ARFLAGS) $(.TARGET) $(.OODATE) #ifndef no_ranlib # ifdef many_libraries
+
+... # endif /* many_libraries */
+
+ranlib $(.TARGET) #endif /* no_ranlib */
+
+#endif /* _MAKELIB_MK */
+
+4.3. On the Condition... Like the C compiler before it, PMake allows you to configure the makefile, based on the current environ-ment, using conditional statements. A conditional looks like this:
+
+#if boolean expression lines #elif another boolean expression more lines #else still more lines #endif
+
+They may be nested to a maximum depth of 30 and may occur anywhere (except in a comment, of course).
+
+PSD:12-28 PMake -- A Tutorial The ``#'' must the very first character on the line. Each boolean expression is made up of terms that look like function calls, the standard C boolean operators &&, ||, and !, and the standard relational operators ==, !=, >, >=, <, and <=, with == and != being over-loaded to allow string comparisons as well.
+
+&& represents logical AND; || is logical OR and ! is logicalNOT. The arithmetic and string operators take precedence over all three of these operators, while NOT
+
+takes precedence over AND, which takes precedence over OR. This precedence may be overridden withparentheses, and an expression may be parenthesized to your heart's content. Each term looks like a call on one of four functions: make The syntax is make(target) where target is a target in the makefile. This is true if the given tar-get was specified on the command line, or as the source for a
+
+.MAIN target (note that thesources for .MAIN are only used if no targets were given on the command line).
+
+defined The syntax is defined(variable) and is true if variable is defined. Certain variables aredefined in the system makefile that identify the system on which PMake is being run.
+
+exists The syntax is exists(file) and is true if the file can be found on the global search path (i.e.that defined by
+
+.PATH targets, not by .PATHsuffix targets).
+
+empty This syntax is much like the others, except the string inside the parentheses is of the same formas you would put between parentheses when expanding a variable, complete with modifiers and
+
+ev erything. The function returns true if the resulting string is empty (NOTE: an undefined vari-able in this context will cause at the very least a warning message about a malformed conditional, and at the worst will cause the process to stop once it has read the makefile. If you wantto check for a variable being defined or empty, use the expression ``
+
+!defined(var) || empty(var)'' as the definition of || will prevent the empty() from being evaluated andcausing an error, if the variable is undefined). This can be used to see if a variable contains a
+
+given word, for example:
+
+#if !empty(var:Mword)
+
+The arithmetic and string operators may only be used to test the value of a variable. The lefthand side mustcontain the variable expansion, while the righthand side contains either a string, enclosed in double-quotes,
+
+or a number. The standard C numeric conventions (except for specifying an octal number) apply to bothsides. E.g.
+
+#if $(OS) == 4.3 #if $(MACHINE) == "sun3" #if $(LOAD_ADDR) < 0xc000 are all valid conditionals. In addition, the numeric value of a variable can be tested as a boolean as follows:
+
+#if $(LOAD) would see if LOAD contains a non-zero value and
+
+#if !$(LOAD) would test if LOAD contains a zero value. In addition to the bare ``#if,'' there are other forms that apply one of the first two functions to each term.They are as follows:
+
+ifdef defined ifndef !defined ifmake make ifnmake !make
+
+There are also the ``else if'' forms: elif, elifdef, elifndef, elifmake, and elifnmake.
+
+PMake -- A Tutorial PSD:12-29 For instance, if you wish to create two versions of a program, one of which is optimized (the productionversion) and the other of which is for debugging (has symbols for dbx), you have two choices: you can create two makefiles, one of which uses the -g flag for the compilation, while the other uses the -O flag, oryou can use another target (call it
+
+debug) to create the debug version. The construct below will take careof this for you. I have also made it so defining the variable
+
+DEBUG (say with pmake -D DEBUG) will alsocause the debug version to be made.
+
+#if defined(DEBUG) || make(debug) CFLAGS += -g #else CFLAGS += -O #endif
+
+There are, of course, problems with this approach. The most glaring annoyance is that if you want to gofrom making a debug version to making a production version, you have to remove all the object files, or
+
+you will get some optimized and some debug versions in the same program. Another annoyance is you haveto be careful not to make two targets that ``conflict'' because of some conditionals in the makefile. For instance
+
+#if make(print) FORMATTER = ditroff -Plaser_printer #endif #if make(draft) FORMATTER = nroff -Pdot_matrix_printer #endif
+
+would wreak havoc if you tried ``pmake draft print'' since you would use the same formatter foreach target. As I said, this all gets somewhat complicated.
+
+4.4. A Shell is a Shell is a Shell In normal operation, the Bourne Shell (better known as ``sh'') is used to execute the commands to re-createtargets. PMake also allows you to specify a different shell for it to use when executing these commands.
+
+There are several things PMake must know about the shell you wish to use. These things are specified asthe sources for the
+
+.SHELL target by keyword, as follows:
+
+path=pathPMake needs to know where the shell actually resides, so it can execute it. If you specify this and
+
+nothing else, PMake will use the last component of the path and look in its table of the shells itknows and use the specification it finds, if any. Use this if you just want to use a different version of the Bourne or C Shell (yes, PMake knows how to use the C Shell too). name=nameThis is the name by which the shell is to be known. It is a single word and, if no other keywords are
+
+specified (other than path), it is the name by which PMake attempts to find a specification for it (asmentioned above). You can use this if you would just rather use the C Shell than the Bourne Shell (``.SHELL: name=csh'' will do it). quiet=echo-off commandAs mentioned before, PMake actually controls whether commands are printed by introducing commands into the shell's input stream. This keyword, and the next two, control what those commandsare. The quiet keyword is the command used to turn echoing off. Once it is turned off, echoing is expected to remain off until the echo-on command is given. echo=echo-on commandThe command PMake should give to turn echoing back on again.
+
+filter=printed echo-off commandMany shells will echo the echo-off command when it is given. This keyword tells PMake in what format the shell actually prints the echo-off command. Wherever PMake sees this string in the shell'soutput, it will delete it and any following whitespace, up to and including the next newline. See the
+
+PSD:12-30 PMake -- A Tutorial
+
+example at the end of this section for more details. echoFlag=flag to turn echoing onUnless a target has been marked
+
+.SILENT, PMake wants to start the shell running with echoing on.To do this, it passes this flag to the shell as one of its arguments. If either this or the next flag begins
+
+with a `-', the flags will be passed to the shell as separate arguments. Otherwise, the two will be con-catenated (if they are used at the same time, of course).
+
+errFlag=flag to turn error checking onLikewise, unless a target is marked
+
+.IGNORE, PMake wishes error-checking to be on from the verystart. To this end, it will pass this flag to the shell as an argument. The same rules for an initial `-'
+
+apply as for the echoFlag. check=command to turn error checking onJust as for echo-control, error-control is achieved by inserting commands into the shell's input
+
+stream. This is the command to make the shell check for errors. It also serves another purpose if theshell doesn't hav e error-control as commands, but I'll get into that in a minute. Again, once error checking has been turned on, it is expected to remain on until it is turned off again. ignore=command to turn error checking offThis is the command PMake uses to turn error checking off. It has another use if the shell doesn't do
+
+error-control, but I'll tell you about that. . . now. hasErrCtl=yes or noThis takes a value that is either yes or no. Now you might think that the existence of the check and
+
+ignore keywords would be enough to tell PMake if the shell can do error-control, but you'd bewrong. If hasErrCtl is yes, PMake uses the check and ignore commands in a straight-forward manner. If this is no, howev er, their use is rather different. In this case, the check command is used as atemplate, in which the string %s is replaced by the command that's about to be executed, to produce a command for the shell that will echo the command to be executed. The ignore command is alsoused as a template, again with %s replaced by the command to be executed, to produce a command that will execute the command to be executed and ignore any error it returns. When these strings areused as templates, you must provide newline(s) (``
+
+\n'') in the appropriate place(s).
+
+The strings that follow these keywords may be enclosed in single or double quotes (the quotes will bestripped off) and may contain the usual C backslash-characters (\n is newline, \r is return, \b is backspace, \'
+
+escapes a single-quote inside single-quotes, \" escapes a double-quote inside double-quotes). Now for anexample.
+
+This is actually the contents of the <shx.mk> system makefile, and causes PMake to use the Bourne Shellin such a way that each command is printed as it is executed. That is, if more than one command is given on a line, each will be printed separately. Similarly, each time the body of a loop is executed, the commandswithin that loop will be printed, etc. The specification runs like this:
+
+# # This is a shell specification to have the Bourne shell echo # the commands just before executing them, rather than when it reads # them. Useful if you want to see how variables are being expanded, etc. # .SHELL : path=/bin/sh \
+
+quiet="set -" \ echo="set -x" \ filter="+ set - " \ echoFlag=x \ errFlag=e \ hasErrCtl=yes \ check="set -e" \ ignore="set +e"
+
+PMake -- A Tutorial PSD:12-31 It tells PMake the following:
+
+* The shell is located in the file /bin/sh. It need not tell PMake that the name of the shell is sh asPMake can figure that out for itself (it's the last component of the path).
+
+* The command to stop echoing is set -.
+
+* The command to start echoing is set -x.
+
+* When the echo off command is executed, the shell will print + set - (The `+' comes from using the
+
+-x flag (rather than the -v flag PMake usually uses)). PMake will remove all occurrences of this stringfrom the output, so you don't notice extra commands you didn't put there.
+
+* The flag the Bourne Shell will take to start echoing in this way is the -x flag. The Bourne Shell will onlytake its flag arguments concatenated as its first argument, so neither this nor the errFlag specification
+
+begins with a -.
+
+* The flag to use to turn error-checking on from the start is -e.
+
+* The shell can turn error-checking on and off, and the commands to do so are set +e and set -e,respectively.
+
+I should note that this specification is for Bourne Shells that are not part of Berkeley UNIX, as shells fromBerkeley don't do error control. You can get a similar effect, however, by changing the last three lines to be:
+
+hasErrCtl=no \ check="echo \"+ %s\"\n" \ ignore="sh -c '%s || exit 0\n"
+
+This will cause PMake to execute the two commands
+
+echo "+ cmd" sh -c 'cmd || true'
+
+for each command for which errors are to be ignored. (In case you are wondering, the thing for ignoretells the shell to execute another shell without error checking on and always exit 0, since the || causes the
+
+exit 0 to be executed only if the first command exited non-zero, and if the first command exited zero, theshell will also exit zero, since that's the last command it executed).
+
+4.5. Compatibility There are three (well, 3 1/2) levels of backwards-compatibility built into PMake. Most makefiles will neednone at all. Some may need a little bit of work to operate correctly when run in parallel. Each level encompasses the previous levels (e.g. -B (one shell per command) implies -V) The three levels are described inthe following three sections.
+
+4.5.1. DEFCON 3 -- Variable Expansion As noted before, PMake will not expand a variable unless it knows of a value for it. This can cause prob-lems for makefiles that expect to leave variables undefined except in special circumstances (e.g. if more
+
+flags need to be passed to the C compiler or the output from a text processor should be sent to a differentprinter). If the variables are enclosed in curly braces (``
+
+${PRINTER}''), the shell will let them pass. If theyare enclosed in parentheses, however, the shell will declare a syntax error and the make will come to a
+
+grinding halt. You hav e two choices: change the makefile to define the variables (their values can be overridden on thecommand line, since that's where they would have been set if you used Make, anyway) or always give the
+
+-V flag (this can be done with the .MAKEFLAGS target, if you want). 4.5.2. DEFCON 2 -- The Number of the Beast Then there are the makefiles that expect certain commands, such as changing to a different directory, to notaffect other commands in a target's creation script. You can solve this is either by going back to executing
+
+one shell per command (which is what the -B flag forces PMake to do), which slows the process down agood bit and requires you to use semicolons and escaped newlines for shell constructs, or by changing the
+
+PSD:12-32 PMake -- A Tutorial makefile to execute the offending command(s) in a subshell (by placing the line inside parentheses), like so:
+
+install :: .MAKE
+
+(cd src; $(.PMAKE) install) (cd lib; $(.PMAKE) install) (cd man; $(.PMAKE) install)
+
+This will always execute the three makes (even if the -n flag was given) because of the combination of the``::'' operator and the
+
+.MAKE attribute. Each command will change to the proper directory to perform theinstall, leaving the main shell in the directory in which it started.
+
+4.5.3. DEFCON 1 -- Imitation is the Not the Highest Form of Flattery The final category of makefile is the one where every command requires input, the dependencies are incom-pletely specified, or you simply cannot create more than one target at a time, as mentioned earlier. In addition, you may not have the time or desire to upgrade the makefile to run smoothly with PMake. If you arethe conservative sort, this is the compatibility mode for you. It is entered either by giving PMake the -M flag (for Make), or by executing PMake as ``make.'' In either case, PMake performs things exactly likeMake (while still supporting most of the nice new features PMake provides). This includes:
+
+* No parallel execution.
+
+* Targets are made in the exact order specified by the makefile. The sources for each target are made instrict left-to-right order, etc.
+
+* A single Bourne shell is used to execute each command, thus the shell's $$ variable is useless, changingdirectories doesn't work across command lines, etc.
+
+* If no special characters exist in a command line, PMake will break the command into words itself andexecute the command directly, without executing a shell first. The characters that cause PMake to execute
+
+a shell are: #, =, |, ^, (, ), {, }, ;, &, <, >, *, ?, [, ], :, $, `, and \. You should notice that these areall the characters that are given special meaning by the shell (except
+
+' and , which PMake deals withall by its lonesome).
+
+* The use of the null suffix is turned off. 4.6. The Way Things Work When PMake reads the makefile, it parses sources and targets into nodes in a graph. The graph is directedonly in the sense that PMake knows which way is up. Each node contains not only links to all its parents
+
+and children (the nodes that depend on it and those on which it depends, respectively), but also a count ofthe number of its children that have already been processed.
+
+The most important thing to know about how PMake uses this graph is that the traversal is breadth-first andoccurs in two passes. After PMake has parsed the makefile, it begins with the nodes the user has told it to make (either on thecommand line, or via a
+
+.MAIN target, or by the target being the first in the file not labeled with the .NOTMAIN attribute) placed in a queue. It continues to take the node off the front of the queue, mark it as some-thing that needs to be made, pass the node to
+
+Suff_FindDeps (mentioned earlier) to find any implicitsources for the node, and place all the node's children that have yet to be marked at the end of the queue. If
+
+any of the children is a .USE rule, its attributes are applied to the parent, then its commands are appendedto the parent's list of commands and its children are linked to its parent. The parent's unmade children counter is then decremented (since the .USE node has been processed). You will note that this allows a .USE node to have children that are .USE nodes and the rules will be applied in sequence. If the node hasno children, it is placed at the end of another queue to be examined in the second pass. This process continues until the first queue is empty. At this point, all the leaves of the graph are in the examination queue. PMake removes the node at the headof the queue and sees if it is out-of-date. If it is, it is passed to a function that will execute the commands
+
+for the node asynchronously. When the commands have completed, all the node's parents have theirunmade children counter decremented and, if the counter is then 0, they are placed on the examination
+
+PMake -- A Tutorial PSD:12-33 queue. Likewise, if the node is up-to-date. Only those parents that were marked on the downward pass areprocessed in this way. Thus PMake traverses the graph back up to the nodes the user instructed it to create. When the examination queue is empty and no shells are running to create a target, PMake is finished. Once all targets have been processed, PMake executes the commands attached to the .END target, eitherexplicitly or through the use of an ellipsis in a shell script. If there were no errors during the entire process
+
+but there are still some targets unmade (PMake keeps a running count of how many targets are left to bemade), there is a cycle in the graph. PMake does a depth-first traversal of the graph to find all the targets that weren't made and prints them out one by one. 5. Answers to Exercises (3.1) This is something of a trick question, for which I apologize. The trick comes from the UNIX defini-tion of a suffix, which PMake doesn't necessarily share. You will have noticed that all the suffixes
+
+used in this tutorial (and in UNIX in general) begin with a period (.ms, .c, etc.). Now, PMake's ideaof a suffix is more like English's: it's the characters at the end of a word. With this in mind, one possible solution to this problem goes as follows:
+
+.SUFFIXES : ec.exe .exe ec.obj .obj .asm ec.objec.exe .obj.exe :
+
+link -o $(.TARGET) $(.IMPSRC) .asmec.obj :
+
+asm -o $(.TARGET) -DDO_ERROR_CHECKING $(.IMPSRC) .asm.obj :
+
+asm -o $(.TARGET) $(.IMPSRC)
+
+(3.2) The trick to this one lies in the ``:='' variable-assignment operator and the ``:S'' variable-expansionmodifier. Basically what you want is to take the pointer variable, so to speak, and transform it into an
+
+invocation of the variable at which it points. You might try something like
+
+$(PTR:S/^/\$(/:S/$/)) which places ``$('' at the front of the variable name and ``)'' at the end, thus transforming ``VAR,''for example, into ``
+
+$(VAR),'' which is just what we want. Unfortunately (as you know if you'vetried it), since, as it says in the hint, PMake does no further substitution on the result of a modified
+
+expansion, that's all you get. The solution is to make use of ``:='' to place that string into yet anothervariable, then invoke the other variable directly:
+
+*PTR := $(PTR:S/^/\$(/:S/$/)/) You can then use ``$(*PTR)'' to your heart's content.
+
+6. Glossary of Jargon attribute: A property given to a target that causes PMake to treat it differently. command script: The lines immediately following a dependency line that specify commands to execute tocreate each of the targets on the dependency line. Each line in the command script must begin with a
+
+tab. command-line variable: A variable defined in an argument when PMake is first executed. Overrides allassignments to the same variable name in the makefile.
+
+conditional: A construct much like that used in C that allows a makefile to be configured on the fly basedon the local environment, or on what is being made by that invocation of PMake. creation script: Commands used to create a target. See ``command script.'' dependency: The relationship between a source and a target. This comes in three flavors, as indicated bythe operator between the target and the source. `:' gives a straight time-wise dependency (if the target
+
+is older than the source, the target is out-of-date), while `!' provides simply an ordering and alwaysconsiders the target out-of-date. `::' is much like `:', save it creates multiple instances of a target each of which depends on its own list of sources.
+
+PSD:12-34 PMake -- A Tutorial dynamic source: This refers to a source that has a local variable invocation in it. It allows a single depen-dency line to specify a different source for each target on the line. global variable: Any variable defined in a makefile. Takes precedence over variables defined in the envi-ronment, but not over command-line or local variables. input graph: What PMake constructs from a makefile. Consists of nodes made of the targets in the make-file, and the links between them (the dependencies). The links are directed (from source to target) and
+
+there may not be any cycles (loops) in the graph. local variable: A variable defined by PMake visible only in a target's shell script. There are seven localvariables, not all of which are defined for every target:
+
+.TARGET, .ALLSRC, .OODATE, .PREFIX, .IMPSRC, .ARCHIVE, and .MEMBER. .TARGET, .PREFIX, .ARCHIVE, and .MEMBER may beused on dependency lines to create ``dynamic sources.''
+
+makefile: A file that describes how a system is built. If you don't know what it is after reading this tuto-rial. . . . modifier: A letter, following a colon, used to alter how a variable is expanded. It has no effect on the vari-able itself. operator: What separates a source from a target (on a dependency line) and specifies the relationshipbetween the two. There are three: `
+
+:', `::', and `!'.
+
+search path: A list of directories in which a file should be sought. PMake's view of the contents of directo-ries in a search path does not change once the makefile has been read. A file is sought on a search
+
+path only if it is exclusively a source. shell: A program to which commands are passed in order to create targets. source: Anything to the right of an operator on a dependency line. Targets on the dependency line are usu-ally created from the sources.
+
+special target: A target that causes PMake to do special things when it's encountered. suffix: The tail end of a file name. Usually begins with a period, .c or .ms, e.g. target: A word to the left of the operator on a dependency line. More generally, any file that PMake mightcreate. A file may be (and often is) both a target and a source (what it is depends on how PMake is
+
+looking at it at the time -- sort of like the wav e/particle duality of light, you know). transformation rule: A special construct in a makefile that specifies how to create a file of one type from afile of another, as indicated by their suffixes.
+
+variable expansion: The process of substituting the value of a variable for a reference to it. Expansion maybe altered by means of modifiers. variable: A place in which to store text that may be retrieved later. Also used to define the local environ-ment. Conditionals exist that test whether a variable is defined or not.
+
+PMake -- A Tutorial PSD:12-35
+
+Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . 12. The Basics of PMake . . . . . . . . . . . . . . . . . . . . 1 2.1. Dependency Lines . . . . . . . . . . . . . . . . . . . . . 22.2. Shell Commands . . . . . . . . . . . . . . . . . . . . . . 3 2.3. Variables . . . . . . . . . . . . . . . . . . . . . . . . 42.3.1. Local Variables . . . . . . . . . . . . . . . . . . . . . . 6 2.3.2. Command-line Variables . . . . . . . . . . . . . . . . . . . 62.3.3. Global Variables . . . . . . . . . . . . . . . . . . . . . . 6 2.3.4. Environment Variables . . . . . . . . . . . . . . . . . . . . 72.4. Comments . . . . . . . . . . . . . . . . . . . . . . . . 7 2.5. Parallelism . . . . . . . . . . . . . . . . . . . . . . . . 72.6. Writing and Debugging a Makefile . . . . . . . . . . . . . . . . 8 2.7. Invoking PMake . . . . . . . . . . . . . . . . . . . . . . 102.8. Summary . . . . . . . . . . . . . . . . . . . . . . . . 12 2.9. Exercises . . . . . . . . . . . . . . . . . . . . . . . . 133. Short-cuts and Other Nice Things . . . . . . . . . . . . . . . . 13 3.1. Transformation Rules . . . . . . . . . . . . . . . . . . . . 133.2. Including Other Makefiles . . . . . . . . . . . . . . . . . . . 17 3.3. Saving Commands . . . . . . . . . . . . . . . . . . . . . 173.4. Target Attributes . . . . . . . . . . . . . . . . . . . . . . 18 3.5. Special Targets . . . . . . . . . . . . . . . . . . . . . . 213.6. Modifying Variable Expansion . . . . . . . . . . . . . . . . . 23 3.7. More on Debugging . . . . . . . . . . . . . . . . . . . . . 243.8. More Exercises . . . . . . . . . . . . . . . . . . . . . . 24 4. PMake for Gods . . . . . . . . . . . . . . . . . . . . . . 244.1. Search Paths . . . . . . . . . . . . . . . . . . . . . . . 24 4.2. Archives and Libraries . . . . . . . . . . . . . . . . . . . . 254.3. On the Condition... . . . . . . . . . . . . . . . . . . . . . 27 4.4. A Shell is a Shell is a Shell . . . . . . . . . . . . . . . . . . . 294.5. Compatibility . . . . . . . . . . . . . . . . . . . . . . . 31 4.5.1. DEFCON 3 -- Variable Expansion . . . . . . . . . . . . . . . . 314.5.2. DEFCON 2 -- The Number of the Beast . . . . . . . . . . . . . . 31 4.5.3. DEFCON 1 -- Imitation is the Not the Highest Form of Flattery . . . . . . . 324.6. The Way Things Work . . . . . . . . . . . . . . . . . . . . 32 5. Answers to Exercises . . . . . . . . . . . . . . . . . . . . 336. Glossary of Jargon . . . . . . . . . . . . . . . . . . . . . 33 \ No newline at end of file
diff --git a/source/d/pmake/pmake_1.111-1.diff b/source/d/pmake/pmake_1.111-1.diff
new file mode 100644
index 000000000..3e74712c0
--- /dev/null
+++ b/source/d/pmake/pmake_1.111-1.diff
@@ -0,0 +1,3501 @@
+--- pmake-1.111.orig/mk/Makefile
++++ pmake-1.111/mk/Makefile
+@@ -0,0 +1,16 @@
++# $NetBSD: Makefile,v 1.24 1999/02/13 02:54:36 lukem Exp $
++# @(#)Makefile 8.1 (Berkeley) 6/8/93
++
++.include <bsd.own.mk>
++
++.if ${MKSHARE} != "no"
++FILES= bsd.README bsd.doc.mk bsd.dep.mk bsd.files.mk bsd.inc.mk bsd.info.mk \
++ bsd.kinc.mk bsd.kmod.mk bsd.lib.mk bsd.links.mk bsd.man.mk bsd.nls.mk \
++ bsd.obj.mk bsd.own.mk bsd.prog.mk bsd.subdir.mk bsd.sys.mk sys.mk
++FILESDIR=/usr/share/mk
++.endif
++MKOBJ= no
++
++FILESMODE=444
++
++.include <bsd.prog.mk>
+--- pmake-1.111.orig/mk/bsd.README
++++ pmake-1.111/mk/bsd.README
+@@ -0,0 +1,537 @@
++# $NetBSD: bsd.README,v 1.48 1999/02/13 03:04:09 lukem Exp $
++# @(#)bsd.README 8.2 (Berkeley) 4/2/94
++
++This is the README file for the new make "include" files for the BSD
++source tree. The files are installed in /usr/share/mk, and are, by
++convention, named with the suffix ".mk".
++
++Note, this file is not intended to replace reading through the .mk
++files for anything tricky.
++
++=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
++
++RANDOM THINGS WORTH KNOWING:
++
++The files are simply C-style #include files, and pretty much behave like
++you'd expect. The syntax is slightly different in that a single '.' is
++used instead of the hash mark, i.e. ".include <bsd.prog.mk>".
++
++One difference that will save you lots of debugging time is that inclusion
++of the file is normally done at the *end* of the Makefile. The reason for
++this is because .mk files often modify variables and behavior based on the
++values of variables set in the Makefile. To make this work, remember that
++the FIRST target found is the target that is used, i.e. if the Makefile has:
++
++ a:
++ echo a
++ a:
++ echo a number two
++
++the command "make a" will echo "a". To make things confusing, the SECOND
++variable assignment is the overriding one, i.e. if the Makefile has:
++
++ a= foo
++ a= bar
++
++ b:
++ echo ${a}
++
++the command "make b" will echo "bar". This is for compatibility with the
++way the V7 make behaved.
++
++It's fairly difficult to make the BSD .mk files work when you're building
++multiple programs in a single directory. It's a lot easier split up the
++programs than to deal with the problem. Most of the agony comes from making
++the "obj" directory stuff work right, not because we switched to a new version
++of make. So, don't get mad at us, figure out a better way to handle multiple
++architectures so we can quit using the symbolic link stuff. (Imake doesn't
++count.)
++
++The file .depend in the source directory is expected to contain dependencies
++for the source files. This file is read automatically by make after reading
++the Makefile.
++
++The variable DESTDIR works as before. It's not set anywhere but will change
++the tree where the file gets installed.
++
++The profiled libraries are no longer built in a different directory than
++the regular libraries. A new suffix, ".po", is used to denote a profiled
++object, and ".so" denotes a shared (position-independent) object.
++
++The following variables that control how things are made/installed that
++are not set by default. These should not be set by Makefiles; they're for
++the user to define in MAKECONF (see bsd.own.mk, below) or on the make(1)
++command line:
++
++BUILD If defined, 'make install' checks that the targets in the
++ source directories are up-to-date and remakes them if they
++ are out of date, instead of blindly trying to install
++ out of date or non-existant targets.
++
++UPDATE If defined, 'make install' only installs targets that are
++ more recently modified in the source directories that their
++ installed counterparts.
++
++MKCATPAGES If "no", don't build or install the catman pages.
++
++MKDOC If "no", don't build or install the documentation.
++
++MKINFO If "no", don't build or install Info documentation from
++ Texinfo source files.
++
++MKLINT If "no", don't build or install the lint libraries.
++
++MKMAN If "no", don't build or install the man or catman pages.
++ Also acts as "MKCATPAGES=no"
++
++MKNLS If "no", don't build or install the NLS files.
++
++MKOBJ If "no", don't create objdirs.
++
++MKPIC If "no", don't build or install shared libraries.
++
++MKPICINSTALL If "no", don't install the *_pic.a libraries.
++
++MKPROFILE If "no", don't build or install the profiling libraries.
++
++MKSHARE If "no", act as "MKCATPAGES=no MKDOC=no MKINFO=no MKMAN=no
++ MKNLS=no". I.e, don't build catman pages, documentation,
++ Info documentation, man pages, NLS files, ...
++
++=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
++
++The include file <sys.mk> has the default rules for all makes, in the BSD
++environment or otherwise. You probably don't want to touch this file.
++
++=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
++
++The include file <bsd.man.mk> handles installing manual pages and their
++links.
++
++It has a two targets:
++
++ maninstall:
++ Install the manual page sources and their links.
++ catinstall:
++ Install the preformatted manual pages and their links.
++
++It sets/uses the following variables:
++
++MANDIR Base path for manual installation.
++
++MANGRP Manual group.
++
++MANOWN Manual owner.
++
++MANMODE Manual mode.
++
++MANSUBDIR Subdirectory under the manual page section, i.e. "/vax"
++ or "/tahoe" for machine specific manual pages.
++
++MAN The manual pages to be installed (use a .1 - .9 suffix).
++
++MLINKS List of manual page links (using a .1 - .9 suffix). The
++ linked-to file must come first, the linked file second,
++ and there may be multiple pairs. The files are soft-linked.
++
++The include file <bsd.man.mk> includes a file named "../Makefile.inc" if
++it exists.
++
++=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
++
++The include file <bsd.own.mk> contains source tree configuration parameters,
++such as the owners, groups, etc. for both manual pages and binaries, and
++a few global "feature configuration" parameters.
++
++It has no targets.
++
++To get system-specific configuration parameters, bsd.own.mk will try to
++include the file specified by the "MAKECONF" variable. If MAKECONF is not
++set, or no such file exists, the system make configuration file, /etc/mk.conf
++is included. These files may define any of the variables described below.
++
++bsd.own.mk sets the following variables, if they are not already defined
++(defaults are in brackets):
++
++BSDSRCDIR The real path to the system sources, so that 'make obj'
++ will work correctly. [/usr/src]
++
++BSDOBJDIR The real path to the system 'obj' tree, so that 'make obj'
++ will work correctly. [/usr/obj]
++
++BINGRP Binary group. [wheel]
++
++BINOWN Binary owner. [root]
++
++BINMODE Binary mode. [555]
++
++NONBINMODE Mode for non-executable files. [444]
++
++MANDIR Base path for manual installation. [/usr/share/man/cat]
++
++MANGRP Manual group. [wheel]
++
++MANOWN Manual owner. [root]
++
++MANMODE Manual mode. [${NONBINMODE}]
++
++MANINSTALL Manual installation type: maninstall, catinstall, or both
++
++LIBDIR Base path for library installation. [/usr/lib]
++
++LINTLIBDIR Base path for lint(1) library installation. [/usr/libdata/lint]
++
++LIBGRP Library group. [${BINGRP}]
++
++LIBOWN Library owner. [${BINOWN}]
++
++LIBMODE Library mode. [${NONBINMODE}]
++
++DOCDIR Base path for system documentation (e.g. PSD, USD, etc.)
++ installation. [/usr/share/doc]
++
++DOCGRP Documentation group. [wheel]
++
++DOCOWN Documentation owner. [root]
++
++DOCMODE Documentation mode. [${NONBINMODE}]
++
++NLSDIR Base path for National Language Support files installation.
++ [/usr/share/nls]
++
++NLSGRP National Language Support files group. [wheel]
++
++NLSOWN National Language Support files owner. [root]
++
++NLSMODE National Language Support files mode. [${NONBINMODE}]
++
++STRIPFLAG The flag passed to the install program to cause the binary
++ to be stripped. This is to be used when building your
++ own install script so that the entire system can be made
++ stripped/not-stripped using a single knob. [-s]
++
++COPY The flag passed to the install program to cause the binary
++ to be copied rather than moved. This is to be used when
++ building our own install script so that the entire system
++ can either be installed with copies, or with moves using
++ a single knob. [-c]
++
++Additionally, the following variables may be set by bsd.own.mk or in a
++make configuration file to modify the behaviour of the system build
++process (default values are in brackets along with comments, if set by
++bsd.own.mk):
++
++EXPORTABLE_SYSTEM
++ Do not build /usr/src/domestic, even if it is present.
++
++SKEY Compile in support for S/key authentication. [yes, set
++ unconditionally]
++
++KERBEROS Compile in support for Kerberos 4 authentication.
++
++KERBEROS5 Compile in support for Kerberos 5 authentication.
++
++MANZ Compress manual pages at installation time.
++
++SYS_INCLUDE Copy or symlink kernel include files into /usr/include.
++ Possible values are "symlinks" or "copies" (which is
++ the same as the variable being unset).
++
++NOPROFILE Do not build profiled versions of system libraries
++
++NOPIC Do not build PIC versions of system libraries, and
++ do not build shared libraries. [set if ${MACHINE_ARCH}
++ is "sparc64", unset otherwise.]
++
++NOLINT Do not build lint libraries.
++
++OBJECT_FMT Object file format. [set to "ELF" on ports that use
++ ELF -- currently if ${MACHINE_ARCH} is "alpha", "mips"
++ or "powerpc" or set to "a.out" on other ports].
++
++
++bsd.own.mk is generally useful when building your own Makefiles so that
++they use the same default owners etc. as the rest of the tree.
++
++=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
++
++The include file <bsd.prog.mk> handles building programs from one or
++more source files, along with their manual pages. It has a limited number
++of suffixes, consistent with the current needs of the BSD tree.
++
++It has eight targets:
++
++ all:
++ build the program and its manual page
++ clean:
++ remove the program, any object files and the files a.out,
++ Errs, errs, mklog, and ${PROG}.core.
++ cleandir:
++ remove all of the files removed by the target clean, as
++ well as .depend, tags, and any manual pages.
++ `distclean' is a synonym for `cleandir'.
++ depend:
++ make the dependencies for the source files, and store
++ them in the file .depend.
++ includes:
++ install any header files.
++ install:
++ install the program and its manual pages; if the Makefile
++ does not itself define the target install, the targets
++ beforeinstall and afterinstall may also be used to cause
++ actions immediately before and after the install target
++ is executed.
++ lint:
++ run lint on the source files
++ tags:
++ create a tags file for the source files.
++
++It sets/uses the following variables:
++
++BINGRP Binary group.
++
++BINOWN Binary owner.
++
++BINMODE Binary mode.
++
++CLEANFILES Additional files to remove for the clean and cleandir targets.
++
++COPTS Additional flags to the compiler when creating C objects.
++
++CPPFLAGS Additional flags to the C pre-processor
++
++LDADD Additional loader objects. Usually used for libraries.
++ For example, to load with the compatibility and utility
++ libraries, use:
++
++ LDADD+=-lutil -lcompat
++
++LDFLAGS Additional loader flags.
++
++LINKS The list of binary links; should be full pathnames, the
++ linked-to file coming first, followed by the linked
++ file. The files are hard-linked. For example, to link
++ /bin/test and /bin/[, use:
++
++ LINKS= ${DESTDIR}/bin/test ${DESTDIR}/bin/[
++
++SYMLINKS The list of symbolic links; should be full pathnames.
++ Syntax is identical to LINKS. Note that DESTDIR is not
++ automatically included in the link.
++
++MAN Manual pages (should end in .1 - .9). If no MAN variable is
++ defined, "MAN=${PROG}.1" is assumed.
++
++PROG The name of the program to build. If not supplied, nothing
++ is built.
++
++PROGNAME The name that the above program will be installed as, if
++ different from ${PROG}.
++
++SRCS List of source files to build the program. If SRCS is not
++ defined, it's assumed to be ${PROG}.c.
++
++DPADD Additional dependencies for the program. Usually used for
++ libraries. For example, to depend on the compatibility and
++ utility libraries use:
++
++ DPADD+=${LIBCOMPAT} ${LIBUTIL}
++
++ The following libraries are predefined for DPADD:
++
++ LIBC?= ${DESTDIR}/usr/lib/libc.a
++ LIBC_PIC?= ${DESTDIR}/usr/lib/libc_pic.a
++ LIBCOMPAT?= ${DESTDIR}/usr/lib/libcompat.a
++ LIBCRYPT?= ${DESTDIR}/usr/lib/libcrypt.a
++ LIBCURSES?= ${DESTDIR}/usr/lib/libcurses.a
++ LIBDBM?= ${DESTDIR}/usr/lib/libdbm.a
++ LIBDES?= ${DESTDIR}/usr/lib/libdes.a
++ LIBEDIT?= ${DESTDIR}/usr/lib/libedit.a
++ LIBGCC?= ${DESTDIR}/usr/lib/libgcc.a
++ LIBGNUMALLOC?= ${DESTDIR}/usr/lib/libgnumalloc.a
++ LIBKDB?= ${DESTDIR}/usr/lib/libkdb.a
++ LIBKRB?= ${DESTDIR}/usr/lib/libkrb.a
++ LIBKVM?= ${DESTDIR}/usr/lib/libkvm.a
++ LIBL?= ${DESTDIR}/usr/lib/libl.a
++ LIBM?= ${DESTDIR}/usr/lib/libm.a
++ LIBMP?= ${DESTDIR}/usr/lib/libmp.a
++ LIBNTP?= ${DESTDIR}/usr/lib/libntp.a
++ LIBPC?= ${DESTDIR}/usr/lib/libpc.a
++ LIBPCAP?= ${DESTDIR}/usr/lib/libpcap.a
++ LIBPLOT?= ${DESTDIR}/usr/lib/libplot.a
++ LIBPOSIX?= ${DESTDIR}/usr/lib/libposix.a
++ LIBRESOLV?= ${DESTDIR}/usr/lib/libresolv.a
++ LIBRPCSVC?= ${DESTDIR}/usr/lib/librpcsvc.a
++ LIBSKEY?= ${DESTDIR}/usr/lib/libskey.a
++ LIBTERMCAP?= ${DESTDIR}/usr/lib/libtermcap.a
++ LIBTELNET?= ${DESTDIR}/usr/lib/libtelnet.a
++ LIBUTIL?= ${DESTDIR}/usr/lib/libutil.a
++ LIBWRAP?= ${DESTDIR}/usr/lib/libwrap.a
++ LIBY?= ${DESTDIR}/usr/lib/liby.a
++ LIBZ?= ${DESTDIR}/usr/lib/libz.a
++
++
++SHAREDSTRINGS If defined, a new .c.o rule is used that results in shared
++ strings, using xstr(1). Note that this will not work with
++ parallel makes.
++
++STRIP The flag passed to the install program to cause the binary
++ to be stripped.
++
++SUBDIR A list of subdirectories that should be built as well.
++ Each of the targets will execute the same target in the
++ subdirectories.
++
++SCRIPTS A list of interpreter scripts [file.{sh,csh,pl,awk,...}].
++ These are installed exactly like programs.
++
++SCRIPTSNAME The name that the above program will be installed as, if
++ different from ${SCRIPTS}. These can be further specialized
++ by setting SCRIPTSNAME_<script>.
++
++FILES A list of files to install. The installation is controlled
++ by the FILESNAME, FILESOWN, FILESGRP, FILESMODE, FILESDIR
++ variables that can be further specialized by FILES<VAR>_<file>
++
++The include file <bsd.prog.mk> includes the file named "../Makefile.inc"
++if it exists, as well as the include file <bsd.man.mk>.
++
++Some simple examples:
++
++To build foo from foo.c with a manual page foo.1, use:
++
++ PROG= foo
++
++ .include <bsd.prog.mk>
++
++To build foo from foo.c with a manual page foo.2, add the line:
++
++ MAN= foo.2
++
++If foo does not have a manual page at all, add the line:
++
++ NOMAN= noman
++
++If foo has multiple source files, add the line:
++
++ SRCS= a.c b.c c.c d.c
++
++=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
++
++The include file <bsd.subdir.mk> contains the default targets for building
++subdirectories. It has the same eight targets as <bsd.prog.mk>: all,
++clean, cleandir, depend, includes, install, lint, and tags. For all of
++the directories listed in the variable SUBDIRS, the specified directory
++will be visited and the target made. There is also a default target which
++allows the command "make subdir" where subdir is any directory listed in
++the variable SUBDIRS.
++
++=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
++
++The include file <bsd.links.mk> handles the LINKS and SYMLINKS variables
++and is included from from bsd.lib.mk and bsd.prog.mk.
++
++=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
++
++The include file <bsd.files.mk> handles the FILES variables and is included
++from bsd.lib.mk and bsd.prog.mk.
++
++=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
++
++The include file <bsd.inc.mk> defines the includes target and uses two
++variables:
++
++INCS The list of include files
++
++INCSDIR The location to install the include files.
++
++=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
++
++The include file <bsd.kinc.mk> defines the many targets (includes,
++subdirectories, etc.), and is used by kernel makefiles to handle
++include file installation. It is intended to be included alone, by
++kernel Makefiles. Please see bsd.kinc.mk for more details, and keep
++the documentation in that file up to date.
++
++=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
++
++The include file <bsd.info.mk> is used to generate and install GNU Info
++documentation from respective Texinfo source files. It defines three
++implicit targets (.txi.info, .texi.info, and .texinfo.info), and uses the
++following variables:
++
++TEXINFO List of Texinfo source files. Info documentation will
++ consist of single files with the extension replaced by
++ .info.
++
++INFOFLAGS Flags to pass to makeinfo. []
++
++INSTALL_INFO Name of install-info program. [install-info]
++
++MAKEINFO Name of makeinfo program. [makeinfo]
++
++=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
++
++The include file <bsd.sys.mk> is used by <bsd.prog.mk> and
++<bsd.lib.mk>. It contains overrides that are used when building
++the NetBSD source tree. For instance, if "PARALLEL" is defined by
++the program/library Makefile, it includes a set of rules for lex and
++yacc that allow multiple lex and yacc targets to be built in parallel.
++
++=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
++
++The include file <bsd.lib.mk> has support for building libraries. It has
++the same eight targets as <bsd.prog.mk>: all, clean, cleandir, depend,
++includes, install, lint, and tags. Additionally, it has a checkver target
++which checks for installed shared object libraries whose version is greater
++that the version of the source. It has a limited number of suffixes,
++consistent with the current needs of the BSD tree.
++
++It sets/uses the following variables:
++
++LIB The name of the library to build.
++
++LIBDIR Target directory for libraries.
++
++LINTLIBDIR Target directory for lint libraries.
++
++LIBGRP Library group.
++
++LIBOWN Library owner.
++
++LIBMODE Library mode.
++
++LDADD Additional loader objects.
++
++MAN The manual pages to be installed (use a .1 - .9 suffix).
++
++MKLINKLIB If "no", act as "MKPICINSTALL=no MKPROFILE=no".
++ Also:
++ - don't install the .a libraries
++ - don't install _pic.a libraries on PIC systems
++ - don't build .a libraries on PIC systems
++ - don't install the .so symlink on ELF systems
++ I.e, only install the shared library (and the .so.major
++ symlink on ELF).
++
++NOCHECKVER_<library>
++NOCHECKVER If set, disables checking for installed shared object
++ libraries with versions greater than the source. A
++ particular library name, without the "lib" prefix, may
++ be appended to the variable name to disable the check for
++ only that library.
++
++SRCS List of source files to build the library. Suffix types
++ .s, .c, and .f are supported. Note, .s files are preferred
++ to .c files of the same name. (This is not the default for
++ versions of make.)
++
++The include file <bsd.lib.mk> includes the file named "../Makefile.inc"
++if it exists, as well as the include file <bsd.man.mk>.
++
++It has rules for building profiled objects; profiled libraries are
++built by default.
++
++Libraries are ranlib'd when made.
++
++=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+--- pmake-1.111.orig/mk/bsd.dep.mk
++++ pmake-1.111/mk/bsd.dep.mk
+@@ -0,0 +1,62 @@
++# $NetBSD: bsd.dep.mk,v 1.26 1999/02/24 22:04:15 simonb Exp $
++
++.PHONY: cleandepend
++cleandir distclean: cleandepend
++
++MKDEP?= mkdep
++
++# some of the rules involve .h sources, so remove them from mkdep line
++depend: beforedepend
++.if defined(SRCS)
++depend: .depend
++ @true # hack to prevent "make depend" from using implicit rules
++.NOPATH: .depend
++.depend: ${SRCS} ${DPSRCS}
++ @rm -f .depend
++ @files="${.ALLSRC:M*.s} ${.ALLSRC:M*.S}"; \
++ if [ "$$files" != " " ]; then \
++ echo ${MKDEP} -a ${MKDEPFLAGS} \
++ ${AFLAGS:M-[ID]*:Q} ${CPPFLAGS:Q} ${AINC:Q} $$files; \
++ ${MKDEP} -a ${MKDEPFLAGS} \
++ ${AFLAGS:M-[ID]*} ${CPPFLAGS} ${AINC} $$files; \
++ fi
++ @files="${.ALLSRC:M*.c}"; \
++ if [ "$$files" != "" ]; then \
++ echo ${MKDEP} -a ${MKDEPFLAGS} \
++ ${CFLAGS:M-[ID]*:Q} ${CPPFLAGS:Q} $$files; \
++ ${MKDEP} -a ${MKDEPFLAGS} \
++ ${CFLAGS:M-[ID]*} ${CPPFLAGS} $$files; \
++ fi
++ @files="${.ALLSRC:M*.m}"; \
++ if [ "$$files" != "" ]; then \
++ echo ${MKDEP} -a ${MKDEPFLAGS} \
++ ${OBJCFLAGS:M-[ID]*:Q} ${CPPFLAGS:Q} $$files; \
++ ${MKDEP} -a ${MKDEPFLAGS} \
++ ${OBJCFLAGS:M-[ID]*} ${CPPFLAGS} $$files; \
++ fi
++ @files="${.ALLSRC:M*.cc} ${.ALLSRC:M*.C} ${.ALLSRC:M*.cxx}"; \
++ if [ "$$files" != " " ]; then \
++ echo ${MKDEP} -a ${MKDEPFLAGS} \
++ ${CXXFLAGS:M-[ID]*:Q} ${CPPFLAGS:Q} $$files; \
++ ${MKDEP} -a ${MKDEPFLAGS} \
++ ${CXXFLAGS:M-[ID]*} ${CPPFLAGS} $$files; \
++ fi
++cleandepend:
++ rm -f .depend ${.CURDIR}/tags
++.else
++cleandepend:
++.endif
++depend: afterdepend
++
++beforedepend:
++afterdepend:
++
++.if !target(tags)
++.if defined(SRCS)
++tags: ${SRCS}
++ -cd ${.CURDIR}; ctags -f /dev/stdout ${.ALLSRC:N*.h} | \
++ sed "s;\${.CURDIR}/;;" > tags
++.else
++tags:
++.endif
++.endif
+--- pmake-1.111.orig/mk/bsd.doc.mk
++++ pmake-1.111/mk/bsd.doc.mk
+@@ -0,0 +1,78 @@
++# $NetBSD: bsd.doc.mk,v 1.41 1999/02/12 01:10:06 lukem Exp $
++# @(#)bsd.doc.mk 8.1 (Berkeley) 8/14/93
++
++.if !target(__initialized__)
++__initialized__:
++.if exists(${.CURDIR}/../Makefile.inc)
++.include "${.CURDIR}/../Makefile.inc"
++.endif
++.include <bsd.own.mk>
++.MAIN: all
++.endif
++
++.PHONY: cleandoc docinstall print spell
++.if ${MKSHARE} != "no"
++realinstall: docinstall
++.endif
++clean cleandir distclean: cleandoc
++
++BIB?= bib
++EQN?= eqn
++GREMLIN?= grn
++GRIND?= vgrind -f
++INDXBIB?= indxbib
++PIC?= pic
++REFER?= refer
++ROFF?= groff ${MACROS} ${PAGES}
++SOELIM?= soelim
++TBL?= tbl
++
++.if !target(all)
++.if ${MKSHARE} != "no"
++all: paper.ps
++.else
++all:
++.endif
++.endif
++
++.if !target(paper.ps)
++paper.ps: ${SRCS}
++ ${ROFF} ${.ALLSRC} > ${.TARGET}
++.endif
++
++.if !target(print)
++print: paper.ps
++ lpr -P${PRINTER} ${.ALLSRC}
++.endif
++
++cleandoc:
++ rm -f paper.* [eE]rrs mklog ${CLEANFILES}
++
++.if ${MKDOC} != "no"
++FILES?= ${SRCS}
++.for F in ${FILES} ${EXTRA} Makefile
++docinstall:: ${DESTDIR}${DOCDIR}/${DIR}/${F}
++.if !defined(UPDATE)
++.PHONY: ${DESTDIR}${DOCDIR}/${DIR}/${F}
++.endif
++.if !defined(BUILD)
++${DESTDIR}${DOCDIR}/${DIR}/${F}: .MADE
++.endif
++
++.PRECIOUS: ${DESTDIR}${DOCDIR}/${DIR}/${F}
++${DESTDIR}${DOCDIR}/${DIR}/${F}: ${F}
++ ${INSTALL} ${RENAME} ${PRESERVE} -c -o ${DOCOWN} -g ${DOCGRP} \
++ -m ${DOCMODE} ${.ALLSRC} ${.TARGET}
++.endfor
++.endif
++
++.if !target(docinstall)
++docinstall::
++.endif
++
++spell: ${SRCS}
++ spell ${.ALLSRC} | sort | comm -23 - spell.ok > paper.spell
++
++depend includes lint obj tags:
++
++.include <bsd.obj.mk>
+--- pmake-1.111.orig/mk/bsd.files.mk
++++ pmake-1.111/mk/bsd.files.mk
+@@ -0,0 +1,43 @@
++# $NetBSD: bsd.files.mk,v 1.8 1999/02/11 13:25:42 tv Exp $
++
++# This file can be included multiple times. It clears the definition of
++# FILES at the end so that this is possible.
++
++.PHONY: filesinstall
++realinstall: filesinstall
++
++.if defined(FILES) && !empty(FILES)
++FILESDIR?=${BINDIR}
++FILESOWN?=${BINOWN}
++FILESGRP?=${BINGRP}
++FILESMODE?=${NONBINMODE}
++.for F in ${FILES}
++FILESDIR_${F}?=${FILESDIR}
++FILESOWN_${F}?=${FILESOWN}
++FILESGRP_${F}?=${FILESGRP}
++FILESMODE_${F}?=${FILESMODE}
++.if defined(FILESNAME)
++FILESNAME_${F} ?= ${FILESNAME}
++.else
++FILESNAME_${F} ?= ${F:T}
++.endif
++filesinstall:: ${DESTDIR}${FILESDIR_${F}}/${FILESNAME_${F}}
++.if !defined(UPDATE)
++.PHONY: ${DESTDIR}${FILESDIR_${F}}/${FILESNAME_${F}}
++.endif
++.if !defined(BUILD)
++${DESTDIR}${FILESDIR_${F}}/${FILESNAME_${F}}: .MADE
++.endif
++
++.PRECIOUS: ${DESTDIR}${FILESDIR_${F}}/${FILESNAME_${F}}
++${DESTDIR}${FILESDIR_${F}}/${FILESNAME_${F}}: ${F}
++ ${INSTALL} ${RENAME} ${PRESERVE} ${COPY} -o ${FILESOWN_${F}} \
++ -g ${FILESGRP_${F}} -m ${FILESMODE_${F}} ${.ALLSRC} ${.TARGET}
++.endfor
++.endif
++
++.if !target(filesinstall)
++filesinstall::
++.endif
++
++FILES:=
+--- pmake-1.111.orig/mk/bsd.inc.mk
++++ pmake-1.111/mk/bsd.inc.mk
+@@ -0,0 +1,25 @@
++# $NetBSD: bsd.inc.mk,v 1.12 1999/02/04 11:58:30 christos Exp $
++
++.PHONY: incinstall
++includes: ${INCS} incinstall
++
++.if defined(INCS)
++.for I in ${INCS}
++incinstall:: ${DESTDIR}${INCSDIR}/$I
++
++.PRECIOUS: ${DESTDIR}${INCSDIR}/$I
++.if !defined(UPDATE)
++.PHONY: ${DESTDIR}${INCSDIR}/$I
++.endif
++${DESTDIR}${INCSDIR}/$I: $I
++ @cmp -s ${.ALLSRC} ${.TARGET} > /dev/null 2>&1 || \
++ (echo "${INSTALL} ${RENAME} ${PRESERVE} -c -o ${BINOWN} \
++ -g ${BINGRP} -m ${NONBINMODE} ${.ALLSRC} ${.TARGET}" && \
++ ${INSTALL} ${RENAME} ${PRESERVE} -c -o ${BINOWN} -g ${BINGRP} \
++ -m ${NONBINMODE} ${.ALLSRC} ${.TARGET})
++.endfor
++.endif
++
++.if !target(incinstall)
++incinstall::
++.endif
+--- pmake-1.111.orig/mk/bsd.info.mk
++++ pmake-1.111/mk/bsd.info.mk
+@@ -0,0 +1,60 @@
++# $NetBSD: bsd.info.mk,v 1.7.2.1 1999/04/22 14:46:13 perry Exp $
++
++.if !target(__initialized__)
++__initialized__:
++.if exists(${.CURDIR}/../Makefile.inc)
++.include "${.CURDIR}/../Makefile.inc"
++.endif
++.include <bsd.own.mk>
++.include <bsd.obj.mk>
++.MAIN: all
++.endif
++
++MAKEINFO?= makeinfo
++INFOFLAGS?=
++INSTALL_INFO?= install-info
++
++.SUFFIXES: .txi .texi .texinfo .info
++
++.txi.info .texi.info .texinfo.info:
++ @${MAKEINFO} ${INFOFLAGS} --no-split -o $@ $<
++
++.if defined(TEXINFO) && !empty(TEXINFO) && ${MKINFO} != "no"
++INFOFILES= ${TEXINFO:C/\.te?xi(nfo)?$/.info/}
++FILES+= ${INFOFILES}
++
++infoinstall:
++.for F in ${INFOFILES}
++ @${INSTALL_INFO} --remove --info-dir=${DESTDIR}${INFODIR} ${DESTDIR}${INFODIR}/${F}
++ ${INSTALL_INFO} --info-dir=${DESTDIR}${INFODIR} ${DESTDIR}${INFODIR}/${F}
++.endfor
++
++.for F in ${INFOFILES}
++FILESDIR_${F}= ${INFODIR}
++FILESOWN_${F}= ${INFOOWN}
++FILESGRP_${F}= ${INFOGRP}
++FILESMODE_${F}= ${INFOMODE}
++FILESNAME_${F}= ${F:T}
++.endfor
++
++all: ${INFOFILES}
++.else
++all:
++.endif
++
++.if ${MKINFO} != "no"
++cleaninfo:
++ rm -f ${INFOFILES}
++.else
++cleaninfo infoinstall:
++.endif
++
++.include <bsd.files.mk>
++
++# These need to happen *after* filesinstall.
++.PHONY: infoinstall cleaninfo
++realinstall: infoinstall
++cleandir distclean: cleaninfo
++
++# Make sure all of the standard targets are defined, even if they do nothing.
++clean depend includes lint regress tags:
+--- pmake-1.111.orig/mk/bsd.kinc.mk
++++ pmake-1.111/mk/bsd.kinc.mk
+@@ -0,0 +1,136 @@
++# $NetBSD: bsd.kinc.mk,v 1.5 1999/02/04 11:58:30 christos Exp $
++
++# System configuration variables:
++#
++# SYS_INCLUDE "symlinks": symlinks to include directories are created.
++# This may not work 100% properly for all headers.
++#
++# "copies": directories are made, if necessary, and headers
++# are installed into them.
++#
++# Variables:
++#
++# INCSDIR Directory to install includes into (and/or make, and/or
++# symlink, depending on what's going on).
++#
++# KDIR Kernel directory to symlink to, if SYS_INCLUDE is symlinks.
++# If unspecified, no action will be taken when making include
++# for the directory if SYS_INCLUDE is symlinks.
++#
++# INCS Headers to install, if SYS_INCLUDE is copies.
++#
++# DEPINCS Headers to install which are built dynamically.
++#
++# SUBDIR Subdirectories to enter
++#
++# SYMLINKS Symlinks to make (unconditionally), a la bsd.links.mk.
++# Note that the original bits will be 'rm -rf'd rather than
++# just 'rm -f'd, to make the right thing happen with include
++# directories.
++#
++
++.if !target(__initialized__)
++__initialized__:
++.if exists(${.CURDIR}/../Makefile.inc)
++.include "${.CURDIR}/../Makefile.inc"
++.endif
++.include <bsd.own.mk>
++.MAIN: all
++.endif
++
++# Change SYS_INCLUDE in bsd.own.mk or /etc/mk.conf to "symlinks" if you
++# don't want copies
++SYS_INCLUDE?= copies
++
++# If DESTDIR is set, we're probably building a release, so force "copies".
++.if defined(DESTDIR) && (${DESTDIR} != "/" && !empty(DESTDIR))
++SYS_INCLUDE= copies
++.endif
++
++
++.PHONY: incinstall
++includes: ${INCS} incinstall
++
++
++.if ${SYS_INCLUDE} == "symlinks"
++
++# don't install includes, just make symlinks.
++
++.if defined(KDIR)
++SYMLINKS+= ${KDIR} ${INCSDIR}
++.endif
++
++.else # not symlinks
++
++# make sure the directory is OK, and install includes.
++
++.PRECIOUS: ${DESTDIR}${INCSDIR}
++.PHONY: ${DESTDIR}${INCSDIR}
++${DESTDIR}${INCSDIR}:
++ @if [ ! -d ${.TARGET} ] || [ -L ${.TARGET} ] ; then \
++ echo creating ${.TARGET}; \
++ /bin/rm -rf ${.TARGET}; \
++ ${INSTALL} -d -o ${BINOWN} -g ${BINGRP} -m 755 ${.TARGET}; \
++ fi
++
++incinstall:: ${DESTDIR}${INCSDIR}
++
++.if defined(INCS)
++.for I in ${INCS}
++incinstall:: ${DESTDIR}${INCSDIR}/$I
++
++.PRECIOUS: ${DESTDIR}${INCSDIR}/$I
++.if !defined(UPDATE)
++.PHONY: ${DESTDIR}${INCSDIR}/$I
++.endif
++${DESTDIR}${INCSDIR}/$I: ${DESTDIR}${INCSDIR} $I
++ @cmp -s ${.CURDIR}/$I ${.TARGET} > /dev/null 2>&1 || \
++ (echo "${INSTALL} ${RENAME} ${PRESERVE} -c -o ${BINOWN} \
++ -g ${BINGRP} -m ${NONBINMODE} ${.CURDIR}/$I ${.TARGET}" && \
++ ${INSTALL} ${RENAME} ${PRESERVE} -c -o ${BINOWN} -g ${BINGRP} \
++ -m ${NONBINMODE} ${.CURDIR}/$I ${.TARGET})
++.endfor
++.endif
++
++.if defined(DEPINCS)
++.for I in ${DEPINCS}
++incinstall:: ${DESTDIR}${INCSDIR}/$I
++
++.PRECIOUS: ${DESTDIR}${INCSDIR}/$I
++.if !defined(UPDATE)
++.PHONY: ${DESTDIR}${INCSDIR}/$I
++.endif
++${DESTDIR}${INCSDIR}/$I: ${DESTDIR}${INCSDIR} $I
++ @cmp -s $I ${.TARGET} > /dev/null 2>&1 || \
++ (echo "${INSTALL} ${RENAME} ${PRESERVE} -c -o ${BINOWN} \
++ -g ${BINGRP} -m ${NONBINMODE} $I ${.TARGET}" && \
++ ${INSTALL} ${RENAME} ${PRESERVE} -c -o ${BINOWN} -g ${BINGRP} \
++ -m ${NONBINMODE} $I ${.TARGET})
++.endfor
++.endif
++
++.endif # not symlinks
++
++.if defined(SYMLINKS) && !empty(SYMLINKS)
++incinstall::
++ @set ${SYMLINKS}; \
++ while test $$# -ge 2; do \
++ l=$$1; \
++ shift; \
++ t=${DESTDIR}$$1; \
++ shift; \
++ echo ".include <bsd.own.mk>"; \
++ echo "all:: $$t"; \
++ echo ".PHONY: $$t"; \
++ echo "$$t:"; \
++ echo " @echo \"$$t -> $$l\""; \
++ echo " @rm -rf $$t"; \
++ echo " @ln -s $$l $$t"; \
++ done | ${MAKE} -f-
++.endif
++
++.if !target(incinstall)
++incinstall::
++.endif
++
++.include <bsd.subdir.mk>
+--- pmake-1.111.orig/mk/bsd.kmod.mk
++++ pmake-1.111/mk/bsd.kmod.mk
+@@ -0,0 +1,95 @@
++# $NetBSD: bsd.kmod.mk,v 1.30 1999/03/10 06:34:19 ross Exp $
++
++.if !target(__initialized__)
++__initialized__:
++.if exists(${.CURDIR}/../Makefile.inc)
++.include "${.CURDIR}/../Makefile.inc"
++.endif
++.include <bsd.own.mk>
++.include <bsd.obj.mk>
++.MAIN: all
++.endif
++
++.PHONY: cleankmod kmodinstall load unload
++realinstall: kmodinstall
++clean cleandir distclean: cleankmod
++
++S?= /sys
++KERN= $S/kern
++
++CFLAGS+= ${COPTS} -D_KERNEL -D_LKM -I. -I${.CURDIR} -I$S -I$S/arch
++
++DPSRCS+= ${SRCS:M*.l:.l=.c} ${SRCS:M*.y:.y=.c}
++CLEANFILES+= ${DPSRCS}
++.if defined(YHEADER)
++CLEANFILES+= ${SRCS:M*.y:.y=.h}
++.endif
++
++OBJS+= ${SRCS:N*.h:N*.sh:R:S/$/.o/g}
++
++.if !defined(PROG)
++PROG= ${KMOD}.o
++.endif
++
++${PROG}: ${DPSRCS} ${OBJS} ${DPADD}
++ ${LD} -r ${LDFLAGS} -o tmp.o ${OBJS}
++ mv tmp.o ${.TARGET}
++
++.if !defined(MAN)
++MAN= ${KMOD}.4
++.endif
++
++all: machine-links ${PROG}
++
++.PHONY: machine-links
++beforedepend: machine-links
++machine-links:
++ -rm -f machine && \
++ ln -s $S/arch/${MACHINE}/include machine
++ -rm -f ${MACHINE_ARCH} && \
++ ln -s $S/arch/${MACHINE_ARCH}/include ${MACHINE_ARCH}
++CLEANFILES+=machine ${MACHINE_ARCH}
++
++cleankmod:
++ rm -f a.out [Ee]rrs mklog core *.core \
++ ${PROG} ${OBJS} ${LOBJS} ${CLEANFILES}
++
++#
++# define various install targets
++#
++.if !target(kmodinstall)
++kmodinstall:: ${DESTDIR}${KMODDIR}/${PROG}
++.if !defined(UPDATE)
++.PHONY: ${DESTDIR}${KMODDIR}/${PROG}
++.endif
++.if !defined(BUILD)
++${DESTDIR}${KMODDIR}/${PROG}: .MADE
++.endif
++
++.PRECIOUS: ${DESTDIR}${KMODDIR}/${PROG}
++${DESTDIR}${KMODDIR}/${PROG}: ${PROG}
++ ${INSTALL} ${RENAME} ${PRESERVE} ${COPY} -o ${KMODOWN} -g ${KMODGRP} \
++ -m ${KMODMODE} ${.ALLSRC} ${.TARGET}
++.endif
++
++lint: ${LOBJS}
++.if defined(LOBJS) && !empty(LOBJS)
++ ${LINT} ${LINTFLAGS} ${LDFLAGS:M-L*} ${LOBJS} ${LDADD}
++.endif
++
++.if !target(load)
++load: ${PROG}
++ /sbin/modload -o ${KMOD} -e${KMOD}_lkmentry ${PROG}
++.endif
++
++.if !target(unload)
++unload: ${PROG}
++ /sbin/modunload -n ${KMOD}
++.endif
++
++.include <bsd.man.mk>
++.include <bsd.links.mk>
++.include <bsd.dep.mk>
++.include <bsd.sys.mk>
++
++.-include "machine/Makefile.inc"
+--- pmake-1.111.orig/mk/bsd.lib.mk
++++ pmake-1.111/mk/bsd.lib.mk
+@@ -0,0 +1,396 @@
++# $NetBSD: bsd.lib.mk,v 1.152 1999/03/30 09:30:43 fair Exp $
++# @(#)bsd.lib.mk 8.3 (Berkeley) 4/22/94
++
++.if !target(__initialized__)
++__initialized__:
++.if exists(${.CURDIR}/../Makefile.inc)
++.include "${.CURDIR}/../Makefile.inc"
++.endif
++.include <bsd.own.mk>
++.include <bsd.obj.mk>
++.MAIN: all
++.endif
++
++.PHONY: checkver cleanlib libinstall
++realinstall: checkver libinstall
++clean cleandir distclean: cleanlib
++
++.if exists(${.CURDIR}/shlib_version)
++SHLIB_MAJOR != . ${.CURDIR}/shlib_version ; echo $$major
++SHLIB_MINOR != . ${.CURDIR}/shlib_version ; echo $$minor
++
++# Check for higher installed library versions.
++.if !defined(NOCHECKVER) && !defined(NOCHECKVER_${LIB}) && \
++ exists(${BSDSRCDIR}/lib/checkver)
++checkver:
++ @(cd ${.CURDIR} && \
++ ${BSDSRCDIR}/lib/checkver -d ${DESTDIR}${LIBDIR} ${LIB})
++.else
++checkver:
++.endif
++.else
++checkver:
++.endif
++
++# add additional suffixes not exported.
++# .po is used for profiling object files.
++# .so is used for PIC object files.
++.SUFFIXES: .out .a .ln .so .po .o .s .S .c .cc .C .m .F .f .r .y .l .cl .p .h
++.SUFFIXES: .sh .m4 .m
++
++
++# Set PICFLAGS to cc flags for producing position-independent code,
++# if not already set. Includes -DPIC, if required.
++
++# Data-driven table using make variables to control how shared libraries
++# are built for different platforms and object formats.
++# OBJECT_FMT: currently either "ELF" or "a.out", from <bsd.own.mk>
++# SHLIB_SOVERSION: version number to be compiled into a shared library
++# via -soname. Usualy ${SHLIB_MAJOR} on ELF.
++# NetBSD/pmax used to use ${SHLIB_MAJOR}.{SHLIB-MINOR}.
++# SHLIB_SHFLAGS: Flags to tell ${LD} to emit shared library.
++# with ELF, also set shared-lib version for ld.so.
++# SHLIB_LDSTARTFILE: support .o file, call C++ file-level constructors
++# SHLIB_LDENDFILE: support .o file, call C++ file-level destructors
++# CPPICFLAGS: flags for ${CPP} to preprocess .[sS] files for ${AS}
++# CPICFLAGS: flags for ${CC} to compile .[cC] files to .so objects.
++# CAPICFLAGS flags for {$CC} to compiling .[Ss] files
++# (usually just ${CPPPICFLAGS} ${CPICFLAGS})
++# APICFLAGS: flags for ${AS} to assemble .[sS] to .so objects.
++
++.if ${MACHINE_ARCH} == "alpha"
++ # Alpha-specific shared library flags
++CPICFLAGS ?= -fpic -DPIC
++CPPPICFLAGS?= -DPIC
++CAPICFLAGS?= ${CPPPICFLAGS} ${CPICFLAGS}
++APICFLAGS ?=
++.elif ${MACHINE_ARCH} == "mipsel" || ${MACHINE_ARCH} == "mipseb"
++ # mips-specific shared library flags
++
++# On mips, all libs need to be compiled with ABIcalls, not just sharedlibs.
++CPICFLAGS?=
++APICFLAGS?=
++#CPICFLAGS?= -fpic -DPIC
++#APICFLAGS?= -DPIC
++
++# so turn shlib PIC flags on for ${CPP}, ${CC}, and ${AS} as follows:
++AINC+=-DPIC -DABICALLS
++COPTS+= -fPIC ${AINC}
++AFLAGS+= -fPIC
++AS+= -KPIC
++
++.elif ${MACHINE_ARCH} == "sparc" && ${OBJECT_FMT} == "ELF"
++
++CPICFLAGS ?= -fpic -DPIC
++CPPPICFLAGS?= -DPIC
++CAPICFLAGS?= ${CPPPICFLAGS} ${CPICFLAGS}
++APICFLAGS ?= -KPIC
++
++.elif (${MACHINE} == "debian")
++
++SHLIB_TYPE=ELF
++SHLIB_LDSTARTFILE=
++SHLIB_LDENDFILE=
++SHLIB_SOVERSION=${SHLIB_MAJOR}
++CPICFLAGS ?= -fPIC -DPIC
++CPPPICFLAGS?= -DPIC
++CAPICFLAGS?= ${CPPPICFLAGS} ${CPICFLAGS}
++APICFLAGS ?=
++
++.else
++
++# Platform-independent flags for NetBSD a.out shared libraries (and PowerPC)
++SHLIB_LDSTARTFILE=
++SHLIB_LDENDFILE=
++SHLIB_SHFLAGS=
++SHLIB_SOVERSION=${SHLIB_MAJOR}.${SHLIB_MINOR}
++CPICFLAGS?= -fpic -DPIC
++CPPPICFLAGS?= -DPIC
++CAPICFLAGS?= ${CPPPICFLAGS} ${CPICFLAGS}
++APICFLAGS?= -k
++
++.endif
++
++# Platform-independent linker flags for ELF shared libraries
++.if ${OBJECT_FMT} == "ELF"
++SHLIB_SOVERSION=${SHLIB_MAJOR}
++SHLIB_SHFLAGS=-soname lib${LIB}.so.${SHLIB_SOVERSION}
++SHLIB_LDSTARTFILE= ${DESTDIR}/usr/lib/crtbeginS.o
++SHLIB_LDENDFILE= ${DESTDIR}/usr/lib/crtendS.o
++.endif
++
++CFLAGS+= ${COPTS}
++
++.c.o:
++ @echo ${COMPILE.c:Q} ${.IMPSRC}
++ @${COMPILE.c} ${.IMPSRC} -o ${.TARGET}.o
++ @${LD} -x -r ${.TARGET}.o -o ${.TARGET}
++ @rm -f ${.TARGET}.o
++
++.c.po:
++ @echo ${COMPILE.c:Q} -pg ${.IMPSRC} -o ${.TARGET}
++ @${COMPILE.c} -pg ${.IMPSRC} -o ${.TARGET}.o
++ @${LD} -X -r ${.TARGET}.o -o ${.TARGET}
++ @rm -f ${.TARGET}.o
++
++.c.so:
++ @echo ${COMPILE.c:Q} ${CPICFLAGS} ${.IMPSRC} -o ${.TARGET}
++ @${COMPILE.c} ${CPICFLAGS} ${.IMPSRC} -o ${.TARGET}.o
++ @${LD} -x -r ${.TARGET}.o -o ${.TARGET}
++ @rm -f ${.TARGET}.o
++
++.c.ln:
++ ${LINT} ${LINTFLAGS} ${CPPFLAGS:M-[IDU]*} -i ${.IMPSRC}
++
++.cc.o .C.o:
++ @echo ${COMPILE.cc:Q} ${.IMPSRC}
++ @${COMPILE.cc} ${.IMPSRC} -o ${.TARGET}.o
++ @${LD} -x -r ${.TARGET}.o -o ${.TARGET}
++ @rm -f ${.TARGET}.o
++
++.cc.po .C.po:
++ @echo ${COMPILE.cc:Q} -pg ${.IMPSRC} -o ${.TARGET}
++ @${COMPILE.cc} -pg ${.IMPSRC} -o ${.TARGET}.o
++ @${LD} -X -r ${.TARGET}.o -o ${.TARGET}
++ @rm -f ${.TARGET}.o
++
++.cc.so .C.so:
++ @echo ${COMPILE.cc:Q} ${CPICFLAGS} ${.IMPSRC} -o ${.TARGET}
++ @${COMPILE.cc} ${CPICFLAGS} ${.IMPSRC} -o ${.TARGET}.o
++ @${LD} -x -r ${.TARGET}.o -o ${.TARGET}
++ @rm -f ${.TARGET}.o
++
++.m.o:
++ @echo ${COMPILE.m:Q} ${.IMPSRC}
++ @${COMPILE.m} ${.IMPSRC} -o ${.TARGET}.o
++ @${LD} -x -r ${.TARGET}.o -o ${.TARGET}
++ @rm -f ${.TARGET}.o
++
++.m.po:
++ @echo ${COMPILE.m:Q} -pg ${.IMPSRC} -o ${.TARGET}
++ @${COMPILE.m} -pg ${.IMPSRC} -o ${.TARGET}.o
++ @${LD} -X -r ${.TARGET}.o -o ${.TARGET}
++ @rm -f ${.TARGET}.o
++
++.m.so:
++ @echo ${COMPILE.m:Q} ${CPICFLAGS} ${.IMPSRC} -o ${.TARGET}
++ @${COMPILE.m} ${CPICFLAGS} ${.IMPSRC} -o ${.TARGET}.o
++ @${LD} -x -r ${.TARGET}.o -o ${.TARGET}
++ @rm -f ${.TARGET}.o
++
++.S.o .s.o:
++ @echo ${COMPILE.S:Q} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC}
++ @${COMPILE.S} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} -o ${.TARGET}.o
++ @${LD} -x -r ${.TARGET}.o -o ${.TARGET}
++ @rm -f ${.TARGET}.o
++
++.S.po .s.po:
++ @echo ${COMPILE.S:Q} -DGPROF -DPROF ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} -o ${.TARGET}
++ @${COMPILE.S} -DGPROF -DPROF ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} -o ${.TARGET}.o
++ @${LD} -X -r ${.TARGET}.o -o ${.TARGET}
++ @rm -f ${.TARGET}.o
++
++.S.so .s.so:
++ @echo ${COMPILE.S:Q} ${CAPICFLAGS} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} -o ${.TARGET}
++ @${COMPILE.S} ${CAPICFLAGS} ${CFLAGS:M-[ID]*} ${AINC} ${.IMPSRC} -o ${.TARGET}.o
++ @${LD} -x -r ${.TARGET}.o -o ${.TARGET}
++ @rm -f ${.TARGET}.o
++
++.if ${MKPIC} == "no" || (defined(LDSTATIC) && ${LDSTATIC} != "") \
++ || ${MKLINKLIB} != "no"
++_LIBS=lib${LIB}.a
++.else
++_LIBS=
++.endif
++
++.if ${MKPROFILE} != "no"
++_LIBS+=lib${LIB}_p.a
++.endif
++
++.if ${MKPIC} != "no"
++_LIBS+=lib${LIB}_pic.a
++.if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR)
++_LIBS+=lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
++.endif
++.endif
++
++.if ${MKLINT} != "no" && ${MKLINKLIB} != "no"
++_LIBS+=llib-l${LIB}.ln
++.endif
++
++all: ${SRCS} ${_LIBS}
++
++__archivebuild: .USE
++ @rm -f ${.TARGET}
++ @${AR} cq ${.TARGET} `NM=${NM} ${LORDER} ${.ALLSRC:M*o} | ${TSORT}`
++ ${RANLIB} ${.TARGET}
++
++__archiveinstall: .USE
++ ${INSTALL} ${RENAME} ${PRESERVE} ${COPY} -o ${LIBOWN} -g ${LIBGRP} \
++ -m 600 ${.ALLSRC} ${.TARGET}
++ ${RANLIB} -t ${.TARGET}
++ chmod ${LIBMODE} ${.TARGET}
++
++DPSRCS+= ${SRCS:M*.l:.l=.c} ${SRCS:M*.y:.y=.c}
++CLEANFILES+= ${DPSRCS}
++.if defined(YHEADER)
++CLEANFILES+= ${SRCS:M*.y:.y=.h}
++.endif
++
++OBJS+= ${SRCS:N*.h:N*.sh:R:S/$/.o/g}
++lib${LIB}.a:: ${OBJS} __archivebuild
++ @echo building standard ${LIB} library
++
++POBJS+= ${OBJS:.o=.po}
++lib${LIB}_p.a:: ${POBJS} __archivebuild
++ @echo building profiled ${LIB} library
++
++SOBJS+= ${OBJS:.o=.so}
++lib${LIB}_pic.a:: ${SOBJS} __archivebuild
++ @echo building shared object ${LIB} library
++
++lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: lib${LIB}_pic.a ${DPADD} \
++ ${SHLIB_LDSTARTFILE} ${SHLIB_LDENDFILE}
++ @echo building shared ${LIB} library \(version ${SHLIB_MAJOR}.${SHLIB_MINOR}\)
++ @rm -f lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
++.if defined(DESTDIR)
++ $(CC) -shared ${SHLIB_SHFLAGS} -o ${.TARGET} \
++ ${SHLIB_LDSTARTFILE} \
++ --whole-archive lib${LIB}_pic.a \
++ -nostdlib -L${DESTDIR}${LIBDIR} -R${LIBDIR} \
++ --no-whole-archive ${LDADD} \
++ ${SHLIB_LDENDFILE}
++.else
++ $(CC) -shared ${SHLIB_SHFLAGS} -o ${.TARGET} \
++ ${SHLIB_LDSTARTFILE} \
++ --whole-archive lib${LIB}_pic.a --no-whole-archive ${LDADD} \
++ ${SHLIB_LDENDFILE}
++.endif
++.if ${OBJECT_FMT} == "ELF"
++ rm -f lib${LIB}.so.${SHLIB_MAJOR}
++ ln -s lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
++ lib${LIB}.so.${SHLIB_MAJOR}
++ rm -f lib${LIB}.so
++ ln -s lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
++ lib${LIB}.so
++.endif
++
++LOBJS+= ${LSRCS:.c=.ln} ${SRCS:M*.c:.c=.ln}
++LLIBS?= -lc
++llib-l${LIB}.ln: ${LOBJS}
++ @echo building llib-l${LIB}.ln
++ @rm -f llib-l${LIB}.ln
++ @${LINT} -C${LIB} ${.ALLSRC} ${LLIBS}
++
++cleanlib:
++ rm -f a.out [Ee]rrs mklog core *.core ${CLEANFILES}
++ rm -f lib${LIB}.a ${OBJS}
++ rm -f lib${LIB}_p.a ${POBJS}
++ rm -f lib${LIB}_pic.a lib${LIB}.so.* lib${LIB}.so ${SOBJS}
++ rm -f llib-l${LIB}.ln ${LOBJS}
++
++.if defined(SRCS)
++afterdepend: .depend
++ @(TMP=/tmp/_depend$$$$; \
++ sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.so \1.ln:/' \
++ < .depend > $$TMP; \
++ mv $$TMP .depend)
++.endif
++
++.if !target(libinstall)
++# Make sure it gets defined, in case MKPIC==no && MKLINKLIB==no
++libinstall::
++
++.if ${MKLINKLIB} != "no"
++libinstall:: ${DESTDIR}${LIBDIR}/lib${LIB}.a
++.if !defined(UPDATE)
++.PHONY: ${DESTDIR}${LIBDIR}/lib${LIB}.a
++.endif
++.if !defined(BUILD)
++${DESTDIR}${LIBDIR}/lib${LIB}.a: .MADE
++.endif
++
++.PRECIOUS: ${DESTDIR}${LIBDIR}/lib${LIB}.a
++${DESTDIR}${LIBDIR}/lib${LIB}.a: lib${LIB}.a __archiveinstall
++.endif
++
++.if ${MKPROFILE} != "no"
++libinstall:: ${DESTDIR}${LIBDIR}/lib${LIB}_p.a
++.if !defined(UPDATE)
++.PHONY: ${DESTDIR}${LIBDIR}/lib${LIB}_p.a
++.endif
++.if !defined(BUILD)
++${DESTDIR}${LIBDIR}/lib${LIB}_p.a: .MADE
++.endif
++
++.PRECIOUS: ${DESTDIR}${LIBDIR}/lib${LIB}_p.a
++${DESTDIR}${LIBDIR}/lib${LIB}_p.a: lib${LIB}_p.a __archiveinstall
++.endif
++
++.if ${MKPIC} != "no" && ${MKPICINSTALL} != "no"
++libinstall:: ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a
++.if !defined(UPDATE)
++.PHONY: ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a
++.endif
++.if !defined(BUILD)
++${DESTDIR}${LIBDIR}/lib${LIB}_pic.a: .MADE
++.endif
++
++.PRECIOUS: ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a
++${DESTDIR}${LIBDIR}/lib${LIB}_pic.a: lib${LIB}_pic.a __archiveinstall
++.endif
++
++.if ${MKPIC} != "no" && defined(SHLIB_MAJOR) && defined(SHLIB_MINOR)
++libinstall:: ${DESTDIR}${LIBDIR}/lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
++.if !defined(UPDATE)
++.PHONY: ${DESTDIR}${LIBDIR}/lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
++.endif
++.if !defined(BUILD)
++${DESTDIR}${LIBDIR}/lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: .MADE
++.endif
++
++.PRECIOUS: ${DESTDIR}${LIBDIR}/lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
++${DESTDIR}${LIBDIR}/lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}: lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR}
++ ${INSTALL} ${RENAME} ${PRESERVE} ${COPY} -o ${LIBOWN} -g ${LIBGRP} \
++ -m ${LIBMODE} ${.ALLSRC} ${.TARGET}
++.if ${OBJECT_FMT} == "a.out" && !defined(DESTDIR)
++ /sbin/ldconfig -m ${LIBDIR}
++.endif
++.if ${OBJECT_FMT} == "ELF"
++ rm -f ${DESTDIR}${LIBDIR}/lib${LIB}.so.${SHLIB_MAJOR}
++ ln -s lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
++ ${DESTDIR}${LIBDIR}/lib${LIB}.so.${SHLIB_MAJOR}
++ rm -f ${DESTDIR}${LIBDIR}/lib${LIB}.so
++.if ${MKLINKLIB} != "no"
++ ln -s lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} \
++ ${DESTDIR}${LIBDIR}/lib${LIB}.so
++.endif
++.endif
++.endif
++
++.if ${MKLINT} != "no" && ${MKLINKLIB} != "no"
++libinstall:: ${DESTDIR}${LINTLIBDIR}/llib-l${LIB}.ln
++.if !defined(UPDATE)
++.PHONY: ${DESTDIR}${LINTLIBDIR}/llib-l${LIB}.ln
++.endif
++.if !defined(BUILD)
++${DESTDIR}${LINTLIBDIR}/llib-l${LIB}.ln: .MADE
++.endif
++
++.PRECIOUS: ${DESTDIR}${LINTLIBDIR}/llib-l${LIB}.ln
++${DESTDIR}${LINTLIBDIR}/llib-l${LIB}.ln: llib-l${LIB}.ln
++ ${INSTALL} ${RENAME} ${PRESERVE} ${COPY} -o ${LIBOWN} -g ${LIBGRP} \
++ -m ${LIBMODE} ${.ALLSRC} ${DESTDIR}${LINTLIBDIR}
++.endif
++.endif
++
++.include <bsd.man.mk>
++.include <bsd.nls.mk>
++.include <bsd.files.mk>
++.include <bsd.inc.mk>
++.include <bsd.links.mk>
++.include <bsd.dep.mk>
++.include <bsd.sys.mk>
++
++# Make sure all of the standard targets are defined, even if they do nothing.
++lint regress:
+--- pmake-1.111.orig/mk/bsd.links.mk
++++ pmake-1.111/mk/bsd.links.mk
+@@ -0,0 +1,43 @@
++# $NetBSD: bsd.links.mk,v 1.8 1998/12/31 15:28:52 castor Exp $
++
++.PHONY: linksinstall
++realinstall: linksinstall
++
++.if defined(SYMLINKS) && !empty(SYMLINKS)
++linksinstall::
++ @set ${SYMLINKS}; \
++ while test $$# -ge 2; do \
++ l=$$1; \
++ shift; \
++ t=${DESTDIR}$$1; \
++ shift; \
++ echo ".include <bsd.own.mk>"; \
++ echo "all:: $$t"; \
++ echo ".PHONY: $$t"; \
++ echo "$$t:"; \
++ echo " @echo \"$$t -> $$l\""; \
++ echo " @rm -f $$t"; \
++ echo " @ln -s $$l $$t"; \
++ done | ${MAKE} -f-
++.endif
++.if defined(LINKS) && !empty(LINKS)
++linksinstall::
++ @set ${LINKS}; \
++ while test $$# -ge 2; do \
++ l=${DESTDIR}$$1; \
++ shift; \
++ t=${DESTDIR}$$1; \
++ shift; \
++ echo ".include <bsd.own.mk>"; \
++ echo "all:: $$t"; \
++ echo ".PHONY: $$t"; \
++ echo "$$t:"; \
++ echo " @echo \"$$t -> $$l\""; \
++ echo " @rm -f $$t"; \
++ echo " @ln $$l $$t"; \
++ done | ${MAKE} -f-
++.endif
++
++.if !target(linksinstall)
++linksinstall:
++.endif
+--- pmake-1.111.orig/mk/bsd.man.mk
++++ pmake-1.111/mk/bsd.man.mk
+@@ -0,0 +1,156 @@
++# $NetBSD: bsd.man.mk,v 1.45 1999/02/13 16:34:39 christos Exp $
++# @(#)bsd.man.mk 8.1 (Berkeley) 6/8/93
++
++.if !target(__initialized__)
++__initialized__:
++.if exists(${.CURDIR}/../Makefile.inc)
++.include "${.CURDIR}/../Makefile.inc"
++.endif
++.include <bsd.own.mk>
++.include <bsd.obj.mk>
++.MAIN: all
++.endif
++
++.PHONY: catinstall maninstall catpages manpages catlinks manlinks cleanman
++.if ${MKMAN} != "no"
++realinstall: ${MANINSTALL}
++.endif
++cleandir distclean: cleanman
++
++MANTARGET?= cat
++NROFF?= nroff
++TBL?= tbl
++
++.SUFFIXES: .1 .2 .3 .4 .5 .6 .7 .8 .9 \
++ .cat1 .cat2 .cat3 .cat4 .cat5 .cat6 .cat7 .cat8 .cat9
++
++.9.cat9 .8.cat8 .7.cat7 .6.cat6 .5.cat5 .4.cat4 .3.cat3 .2.cat2 .1.cat1:
++.if !defined(USETBL)
++ @echo "${NROFF} -mandoc ${.IMPSRC} > ${.TARGET}"
++ @${NROFF} -mandoc ${.IMPSRC} > ${.TARGET} || \
++ (rm -f ${.TARGET}; false)
++.else
++ @echo "${TBL} ${.IMPSRC} | ${NROFF} -mandoc > ${.TARGET}"
++ @${TBL} ${.IMPSRC} | ${NROFF} -mandoc > ${.TARGET} || \
++ (rm -f ${.TARGET}; false)
++.endif
++
++.if defined(MAN) && !empty(MAN)
++MANPAGES= ${MAN}
++CATPAGES= ${MANPAGES:C/(.*).([1-9])/\1.cat\2/}
++.endif
++
++MINSTALL= ${INSTALL} ${RENAME} ${PRESERVE} ${COPY} -o ${MANOWN} \
++ -g ${MANGRP} -m ${MANMODE}
++
++.if defined(MANZ)
++# chown and chmod are done afterward automatically
++MCOMPRESS= gzip -9cf
++MCOMPRESSSUFFIX= .gz
++.endif
++
++catinstall: catlinks
++maninstall: manlinks
++
++__installpage: .USE
++.if defined(MCOMPRESS) && !empty(MCOMPRESS)
++ @rm -f ${.TARGET}
++ ${MCOMPRESS} ${.ALLSRC} > ${.TARGET}
++ @chown ${MANOWN}:${MANGRP} ${.TARGET}
++ @chmod ${MANMODE} ${.TARGET}
++.else
++ ${MINSTALL} ${.ALLSRC} ${.TARGET}
++.endif
++
++
++# Rules for cat'ed man page installation
++.if defined(CATPAGES) && !empty(CATPAGES) && ${MKCATPAGES} != "no"
++. for P in ${CATPAGES}
++catpages:: ${DESTDIR}${MANDIR}/${P:T:E}${MANSUBDIR}/${P:T:R}.0${MCOMPRESSSUFFIX}
++
++. if !defined(UPDATE)
++.PHONY: ${DESTDIR}${MANDIR}/${P:T:E}${MANSUBDIR}/${P:T:R}.0${MCOMPRESSSUFFIX}
++. endif
++. if !defined(BUILD)
++${DESTDIR}${MANDIR}/${P:T:E}${MANSUBDIR}/${P:T:R}.0${MCOMPRESSSUFFIX}: .MADE
++. endif
++
++.PRECIOUS: ${DESTDIR}${MANDIR}/${P:T:E}${MANSUBDIR}/${P:T:R}.0${MCOMPRESSSUFFIX}
++${DESTDIR}${MANDIR}/${P:T:E}${MANSUBDIR}/${P:T:R}.0${MCOMPRESSSUFFIX}: ${P} __installpage
++. endfor
++.else
++catpages::
++.endif
++
++# Rules for source page installation
++.if defined(MANPAGES) && !empty(MANPAGES)
++. for P in ${MANPAGES}
++manpages:: ${DESTDIR}${MANDIR}/man${P:T:E}${MANSUBDIR}/${P}${MCOMPRESSSUFFIX}
++. if !defined(UPDATE)
++.PHONY: ${DESTDIR}${MANDIR}/man${P:T:E}${MANSUBDIR}/${P}${MCOMPRESSSUFFIX}
++. endif
++
++.PRECIOUS: ${DESTDIR}${MANDIR}/man${P:T:E}${MANSUBDIR}/${P}${MCOMPRESSSUFFIX}
++${DESTDIR}${MANDIR}/man${P:T:E}${MANSUBDIR}/${P}${MCOMPRESSSUFFIX}: ${P} __installpage
++. endfor
++.else
++manpages::
++.endif
++
++.if ${MKCATPAGES} != "no"
++catlinks: catpages
++.if defined(MLINKS) && !empty(MLINKS)
++ @set ${MLINKS}; \
++ while test $$# -ge 2; do \
++ name=$$1; \
++ shift; \
++ dir=${DESTDIR}${MANDIR}/cat$${name##*.}; \
++ l=$${dir}${MANSUBDIR}/$${name%.*}.0${MCOMPRESSSUFFIX}; \
++ name=$$1; \
++ shift; \
++ dir=${DESTDIR}${MANDIR}/cat$${name##*.}; \
++ t=$${dir}${MANSUBDIR}/$${name%.*}.0${MCOMPRESSSUFFIX}; \
++ if [ -z "${UPDATE}" -o ! -f $$t ]; then \
++ echo $$t -\> $$l; \
++ ln -sf $$l $$t; \
++ fi; \
++ done
++.endif
++.else
++catlinks:
++.endif
++
++manlinks: manpages
++.if defined(MLINKS) && !empty(MLINKS)
++ @set ${MLINKS}; \
++ while test $$# -ge 2; do \
++ name=$$1; \
++ shift; \
++ dir=${DESTDIR}${MANDIR}/man$${name##*.}; \
++ l=$${dir}${MANSUBDIR}/$${name}${MCOMPRESSSUFFIX}; \
++ name=$$1; \
++ shift; \
++ dir=${DESTDIR}${MANDIR}/man$${name##*.}; \
++ t=$${dir}${MANSUBDIR}/$${name}${MCOMPRESSSUFFIX}; \
++ if [ -z "${UPDATE}" -o ! -f $$t ]; then \
++ echo $$t -\> $$l; \
++ ln -sf $$l $$t; \
++ fi; \
++ done
++.endif
++
++.if defined(CATPAGES)
++.if ${MKCATPAGES} != "no" && ${MKMAN} != "no"
++all: ${CATPAGES}
++.else
++all:
++.endif
++
++cleanman:
++ rm -f ${CATPAGES}
++.else
++cleanman:
++.endif
++
++# Make sure all of the standard targets are defined, even if they do nothing.
++clean depend includes lint regress tags:
+--- pmake-1.111.orig/mk/bsd.nls.mk
++++ pmake-1.111/mk/bsd.nls.mk
+@@ -0,0 +1,64 @@
++# $NetBSD: bsd.nls.mk,v 1.17 1999/02/12 12:38:45 lukem Exp $
++
++.if !target(__initialized__)
++__initialized__:
++.if exists(${.CURDIR}/../Makefile.inc)
++.include "${.CURDIR}/../Makefile.inc"
++.endif
++
++.MAIN: all
++.endif
++.PHONY: cleannls nlsinstall
++.if ${MKNLS} != "no"
++realinstall: nlsinstall
++.endif
++cleandir distclean: cleannls
++
++.SUFFIXES: .cat .msg
++
++.msg.cat:
++ @rm -f ${.TARGET}
++ gencat ${.TARGET} ${.IMPSRC}
++
++.if defined(NLS) && !empty(NLS)
++NLSALL= ${NLS:.msg=.cat}
++.endif
++
++.if !defined(NLSNAME)
++.if defined(PROG)
++NLSNAME=${PROG}
++.else
++NLSNAME=lib${LIB}
++.endif
++.endif
++
++.if defined(NLSALL)
++.if ${MKNLS} != "no"
++all: ${NLSALL}
++.endif
++
++cleannls:
++ rm -f ${NLSALL}
++
++.for F in ${NLSALL}
++nlsinstall:: ${DESTDIR}${NLSDIR}/${F:T:R}/${NLSNAME}.cat
++.if !defined(UPDATE)
++.PHONY: ${DESTDIR}${NLSDIR}/${F:T:R}/${NLSNAME}.cat
++.endif
++.if !defined(BUILD)
++${DESTDIR}${NLSDIR}/${F:T:R}/${NLSNAME}.cat: .MADE
++.endif
++
++.PRECIOUS: ${DESTDIR}${NLSDIR}/${F:T:R}/${NLSNAME}.cat
++${DESTDIR}${NLSDIR}/${F:T:R}/${NLSNAME}.cat: ${F}
++ ${INSTALL} -d ${.TARGET:H}
++ ${INSTALL} ${RENAME} ${PRESERVE} ${COPY} -o ${NLSOWN} -g ${NLSGRP} \
++ -m ${NLSMODE} ${.ALLSRC} ${.TARGET}
++.endfor
++.else
++cleannls:
++.endif
++
++.if !target(nlsinstall)
++nlsinstall::
++.endif
+--- pmake-1.111.orig/mk/bsd.obj.mk
++++ pmake-1.111/mk/bsd.obj.mk
+@@ -0,0 +1,54 @@
++# $NetBSD: bsd.obj.mk,v 1.17 1999/02/12 04:13:26 lukem Exp $
++
++.if !target(__initialized_obj__)
++__initialized_obj__:
++.include <bsd.own.mk>
++.endif
++
++.if ${MKOBJ} == "no"
++obj:
++.else
++
++.if defined(OBJMACHINE)
++__objdir= obj.${MACHINE}
++.else
++__objdir= obj
++.endif
++
++.if defined(USR_OBJMACHINE)
++__usrobjdir= ${BSDOBJDIR}.${MACHINE}
++__usrobjdirpf=
++.else
++__usrobjdir= ${BSDOBJDIR}
++.if defined(OBJMACHINE)
++__usrobjdirpf= .${MACHINE}
++.else
++__usrobjdirpf=
++.endif
++.endif
++
++obj:
++ @cd ${.CURDIR}; rm -f ${__objdir} > /dev/null 2>&1 || true; \
++ here=`/bin/pwd`; subdir=$${here#${BSDSRCDIR}/}; \
++ if test $$here != $$subdir ; then \
++ dest=${__usrobjdir}/$$subdir${__usrobjdirpf} ; \
++ echo "$$here/${__objdir} -> $$dest"; \
++ rm -rf ${__objdir}; \
++ ln -s $$dest ${__objdir}; \
++ if test -d ${__usrobjdir} -a ! -d $$dest; then \
++ mkdir -p $$dest; \
++ else \
++ true; \
++ fi; \
++ else \
++ true ; \
++ dest=$$here/${__objdir} ; \
++ if test ! -d ${__objdir} ; then \
++ echo "making $$dest" ; \
++ mkdir $$dest; \
++ fi ; \
++ fi;
++.endif
++
++print-objdir:
++ @echo ${.OBJDIR}
+--- pmake-1.111.orig/mk/bsd.own.mk
++++ pmake-1.111/mk/bsd.own.mk
+@@ -0,0 +1,257 @@
++# $NetBSD: bsd.own.mk,v 1.120 1999/02/24 14:42:36 drochner Exp $
++
++.if !defined(_BSD_OWN_MK_)
++_BSD_OWN_MK_=1
++
++.if defined(MAKECONF) && exists(${MAKECONF})
++.include "${MAKECONF}"
++.elif exists(/etc/mk.conf)
++.include "/etc/mk.conf"
++.endif
++
++# Defining `SKEY' causes support for S/key authentication to be compiled in.
++SKEY= yes
++# Defining `KERBEROS' causes support for Kerberos authentication to be
++# compiled in.
++#KERBEROS= yes
++# Defining 'KERBEROS5' causes support for Kerberos5 authentication to be
++# compiled in.
++#KERBEROS5= yes
++
++# where the system object and source trees are kept; can be configurable
++# by the user in case they want them in ~/foosrc and ~/fooobj, for example
++BSDSRCDIR?= /usr/src
++BSDOBJDIR?= /usr/obj
++
++BINGRP?= root
++BINOWN?= root
++BINMODE?= 755
++NONBINMODE?= 644
++
++# Define MANZ to have the man pages compressed (gzip)
++MANZ= 1
++
++MANDIR?= /usr/share/man
++MANGRP?= root
++MANOWN?= root
++MANMODE?= ${NONBINMODE}
++MANINSTALL?= maninstall catinstall
++
++INFODIR?= /usr/share/info
++INFOGRP?= root
++INFOOWN?= root
++INFOMODE?= ${NONBINMODE}
++
++LIBDIR?= /usr/lib
++LINTLIBDIR?= /usr/libdata/lint
++LIBGRP?= ${BINGRP}
++LIBOWN?= ${BINOWN}
++LIBMODE?= ${NONBINMODE}
++
++DOCDIR?= /usr/share/doc
++DOCGRP?= root
++DOCOWN?= root
++DOCMODE?= ${NONBINMODE}
++
++NLSDIR?= /usr/share/nls
++NLSGRP?= root
++NLSOWN?= root
++NLSMODE?= ${NONBINMODE}
++
++KMODDIR?= /usr/lkm
++KMODGRP?= root
++KMODOWN?= root
++KMODMODE?= ${NONBINMODE}
++
++COPY?= -c
++.if defined(UPDATE)
++PRESERVE?= -p
++.else
++PRESERVE?=
++.endif
++RENAME?=
++STRIPFLAG?= -s
++
++# Define SYS_INCLUDE to indicate whether you want symbolic links to the system
++# source (``symlinks''), or a separate copy (``copies''); (latter useful
++# in environments where it's not possible to keep /sys publicly readable)
++#SYS_INCLUDE= symlinks
++
++# XXX The next two are temporary until the transition to UVM is complete.
++
++# Systems on which UVM is the standard VM system.
++.if ${MACHINE} != "pica"
++UVM?= yes
++.endif
++
++# Systems that use UVM's new pmap interface.
++.if ${MACHINE} == "alpha" || \
++ ${MACHINE} == "i386" || \
++ ${MACHINE} == "pc532" || \
++ ${MACHINE} == "vax"
++PMAP_NEW?= yes
++.endif
++
++# The sparc64 port is incomplete.
++.if ${MACHINE_ARCH} == "sparc64"
++NOPROFILE=1
++NOPIC=1
++NOLINT=1
++.endif
++
++# The PowerPC port is incomplete.
++.if ${MACHINE_ARCH} == "powerpc"
++NOPROFILE=
++.endif
++
++# Data-driven table using make variables to control how
++# toolchain-dependent targets and shared libraries are built
++# for different platforms and object formats.
++# OBJECT_FMT: currently either "ELF" or "a.out".
++# SHLIB_TYPE: "ELF" or "a.out" or "" to force static libraries.
++#
++#.if ${MACHINE_ARCH} == "alpha" || \
++# ${MACHINE_ARCH} == "mipsel" || ${MACHINE_ARCH} == "mipseb" || \
++# ${MACHINE_ARCH} == "powerpc" || \
++# ${MACHINE_ARCH} == "sparc64"
++#OBJECT_FMT?=ELF
++#.else
++
++# On Debian GNU/Linux, Everything is ELF.
++OBJECT_FMT?=a.out
++#.endif
++
++# GNU sources and packages sometimes see architecture names differently.
++# This table maps an architecture name to its GNU counterpart.
++# Use as so: ${GNU_ARCH.${TARGET_ARCH}} or ${MACHINE_GNU_ARCH}
++GNU_ARCH.alpha=alpha
++GNU_ARCH.arm32=arm
++GNU_ARCH.i386=i386
++GNU_ARCH.m68k=m68k
++GNU_ARCH.mipseb=mipseb
++GNU_ARCH.mipsel=mipsel
++GNU_ARCH.ns32k=ns32k
++GNU_ARCH.powerpc=powerpc
++GNU_ARCH.sparc=sparc
++GNU_ARCH.sparc64=sparc
++GNU_ARCH.vax=vax
++.if ${MACHINE_ARCH} == "mips"
++.INIT:
++ @echo Must set MACHINE_ARCH to one of mipseb or mipsel
++ @false
++.endif
++
++.if ${MACHINE_ARCH} == "sparc64"
++MACHINE_GNU_ARCH=${MACHINE_ARCH}
++.else
++MACHINE_GNU_ARCH=${GNU_ARCH.${MACHINE_ARCH}}
++.endif
++
++TARGETS+= all clean cleandir depend distclean includes install lint obj \
++ regress tags
++.PHONY: all clean cleandir depend distclean includes install lint obj \
++ regress tags beforedepend afterdepend beforeinstall \
++ afterinstall realinstall
++
++# set NEED_OWN_INSTALL_TARGET, if it's not already set, to yes
++# this is used by bsd.pkg.mk to stop "install" being defined
++NEED_OWN_INSTALL_TARGET?= yes
++
++.if ${NEED_OWN_INSTALL_TARGET} == "yes"
++.if !target(install)
++install: .NOTMAIN beforeinstall subdir-install realinstall afterinstall
++beforeinstall: .NOTMAIN
++subdir-install: .NOTMAIN beforeinstall
++realinstall: .NOTMAIN beforeinstall
++afterinstall: .NOTMAIN subdir-install realinstall
++.endif
++.endif
++
++# Define MKxxx variables (which are either yes or no) for users
++# to set in /etc/mk.conf and override on the make commandline.
++# These should be tested with `== "no"' or `!= "no"'.
++# The NOxxx variables should only be used by Makefiles.
++#
++
++MKCATPAGES?=no
++
++.if defined(NODOC)
++MKDOC=no
++#.elif !defined(MKDOC)
++#MKDOC=yes
++.else
++MKDOC?=yes
++.endif
++
++MKINFO?=yes
++
++.if defined(NOLINKLIB)
++MKLINKLIB=no
++.else
++MKLINKLIB?=yes
++.endif
++.if ${MKLINKLIB} == "no"
++MKPICINSTALL=no
++MKPROFILE=no
++.endif
++
++.if defined(NOLINT)
++MKLINT=no
++.else
++MKLINT?=yes
++.endif
++
++.if defined(NOMAN)
++MKMAN=no
++.else
++MKMAN?=yes
++.endif
++.if ${MKMAN} == "no"
++MKCATPAGES=no
++.endif
++
++.if defined(NONLS)
++MKNLS=no
++.else
++MKNLS?=yes
++.endif
++
++.if defined(NOOBJ)
++MKOBJ=no
++.else
++MKOBJ?=yes
++.endif
++
++.if defined(NOPIC)
++MKPIC=no
++.else
++MKPIC?=yes
++.endif
++
++.if defined(NOPICINSTALL)
++MKPICINSTALL=no
++.else
++MKPICINSTALL?=yes
++.endif
++
++.if defined(NOPROFILE)
++MKPROFILE=no
++.else
++MKPROFILE?=yes
++.endif
++
++.if defined(NOSHARE)
++MKSHARE=no
++.else
++MKSHARE?=yes
++.endif
++.if ${MKSHARE} == "no"
++MKCATPAGES=no
++MKDOC=no
++MKINFO=no
++MKMAN=no
++MKNLS=no
++.endif
++
++
++.endif # _BSD_OWN_MK_
+--- pmake-1.111.orig/mk/bsd.prog.mk
++++ pmake-1.111/mk/bsd.prog.mk
+@@ -0,0 +1,202 @@
++# $NetBSD: bsd.prog.mk,v 1.100 1999/02/12 01:10:08 lukem Exp $
++# @(#)bsd.prog.mk 8.2 (Berkeley) 4/2/94
++
++.if !target(__initialized__)
++__initialized__:
++.if exists(${.CURDIR}/../Makefile.inc)
++.include "${.CURDIR}/../Makefile.inc"
++.endif
++.include <bsd.own.mk>
++.include <bsd.obj.mk>
++.MAIN: all
++.endif
++
++.PHONY: cleanprog proginstall scriptsinstall
++realinstall: proginstall scriptsinstall
++clean cleandir distclean: cleanprog
++
++CFLAGS+= ${COPTS}
++
++# ELF platforms depend on crtbegin.o and crtend.o
++.if ${OBJECT_FMT} == "ELF"
++LIBCRTBEGIN?= ${DESTDIR}/usr/lib/crtbegin.o
++LIBCRTEND?= ${DESTDIR}/usr/lib/crtend.o
++.else
++LIBCRTBEGIN?=
++LIBCRTEND?=
++.endif
++
++LIBCRT0?=
++
++LIBBZ2?= ${DESTDIR}/usr/lib/libbz2.a
++LIBC?= ${DESTDIR}/usr/lib/libc.a
++LIBC_PIC?= ${DESTDIR}/usr/lib/libc_pic.a
++LIBCOMPAT?= ${DESTDIR}/usr/lib/libcompat.a
++LIBCRYPT?= ${DESTDIR}/usr/lib/libcrypt.a
++LIBCURSES?= ${DESTDIR}/usr/lib/libcurses.a
++LIBDBM?= ${DESTDIR}/usr/lib/libdbm.a
++LIBDES?= ${DESTDIR}/usr/lib/libdes.a
++LIBEDIT?= ${DESTDIR}/usr/lib/libedit.a
++LIBGCC?= ${DESTDIR}/usr/lib/libgcc.a
++LIBGNUMALLOC?= ${DESTDIR}/usr/lib/libgnumalloc.a
++LIBKDB?= ${DESTDIR}/usr/lib/libkdb.a
++LIBKRB?= ${DESTDIR}/usr/lib/libkrb.a
++LIBKVM?= ${DESTDIR}/usr/lib/libkvm.a
++LIBL?= ${DESTDIR}/usr/lib/libl.a
++LIBM?= ${DESTDIR}/usr/lib/libm.a
++LIBMP?= ${DESTDIR}/usr/lib/libmp.a
++LIBNTP?= ${DESTDIR}/usr/lib/libntp.a
++LIBOBJC?= ${DESTDIR}/usr/lib/libobjc.a
++LIBPC?= ${DESTDIR}/usr/lib/libpc.a
++LIBPCAP?= ${DESTDIR}/usr/lib/libpcap.a
++LIBPLOT?= ${DESTDIR}/usr/lib/libplot.a
++LIBPOSIX?= ${DESTDIR}/usr/lib/libposix.a
++LIBRESOLV?= ${DESTDIR}/usr/lib/libresolv.a
++LIBRPCSVC?= ${DESTDIR}/usr/lib/librpcsvc.a
++LIBSKEY?= ${DESTDIR}/usr/lib/libskey.a
++LIBTERMCAP?= ${DESTDIR}/usr/lib/libtermcap.a
++LIBTELNET?= ${DESTDIR}/usr/lib/libtelnet.a
++LIBUTIL?= ${DESTDIR}/usr/lib/libutil.a
++LIBWRAP?= ${DESTDIR}/usr/lib/libwrap.a
++LIBY?= ${DESTDIR}/usr/lib/liby.a
++LIBZ?= ${DESTDIR}/usr/lib/libz.a
++
++.if defined(SHAREDSTRINGS)
++CLEANFILES+=strings
++.c.o:
++ ${CC} -E ${CFLAGS} ${.IMPSRC} | xstr -c -
++ @${CC} ${CFLAGS} -c x.c -o ${.TARGET}
++ @rm -f x.c
++
++.cc.o:
++ ${CXX} -E ${CXXFLAGS} ${.IMPSRC} | xstr -c -
++ @mv -f x.c x.cc
++ @${CXX} ${CXXFLAGS} -c x.cc -o ${.TARGET}
++ @rm -f x.cc
++
++.C.o:
++ ${CXX} -E ${CXXFLAGS} ${.IMPSRC} | xstr -c -
++ @mv -f x.c x.C
++ @${CXX} ${CXXFLAGS} -c x.C -o ${.TARGET}
++ @rm -f x.C
++.endif
++
++
++.if defined(PROG)
++SRCS?= ${PROG}.c
++
++DPSRCS+= ${SRCS:M*.l:.l=.c} ${SRCS:M*.y:.y=.c}
++CLEANFILES+= ${DPSRCS}
++.if defined(YHEADER)
++CLEANFILES+= ${SRCS:M*.y:.y=.h}
++.endif
++
++.if !empty(SRCS:N*.h:N*.sh)
++OBJS+= ${SRCS:N*.h:N*.sh:R:S/$/.o/g}
++LOBJS+= ${LSRCS:.c=.ln} ${SRCS:M*.c:.c=.ln}
++.endif
++
++.if defined(OBJS) && !empty(OBJS)
++.NOPATH: ${OBJS}
++.if defined(DESTDIR)
++
++${PROG}: ${LIBCRT0} ${DPSRCS} ${OBJS} ${LIBC} ${LIBCRTBEGIN} ${LIBCRTEND} ${DPADD}
++ ${CC} ${LDFLAGS} ${LDSTATIC} -o ${.TARGET} -nostdlib -L${DESTDIR}/usr/lib ${LIBCRT0} ${LIBCRTBEGIN} ${OBJS} ${LDADD} -lgcc -lc -lgcc ${LIBCRTEND}
++
++.else
++
++${PROG}: ${LIBCRT0} ${DPSRCS} ${OBJS} ${LIBC} ${LIBCRTBEGIN} ${LIBCRTEND} ${DPADD}
++ ${CC} ${LDFLAGS} ${LDSTATIC} -o ${.TARGET} ${OBJS} ${LDADD}
++
++.endif # defined(DESTDIR)
++.endif # defined(OBJS) && !empty(OBJS)
++
++.if !defined(MAN)
++MAN= ${PROG}.1
++.endif # !defined(MAN)
++.endif # defined(PROG)
++
++all: ${PROG}
++
++cleanprog:
++ rm -f a.out [Ee]rrs mklog core *.core \
++ ${PROG} ${OBJS} ${LOBJS} ${CLEANFILES}
++
++.if defined(SRCS)
++afterdepend: .depend
++ @(TMP=/tmp/_depend$$$$; \
++ sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.ln:/' \
++ < .depend > $$TMP; \
++ mv $$TMP .depend)
++.endif
++
++.if defined(PROG) && !target(proginstall)
++PROGNAME?= ${PROG}
++proginstall:: ${DESTDIR}${BINDIR}/${PROGNAME}
++.if !defined(UPDATE)
++.PHONY: ${DESTDIR}${BINDIR}/${PROGNAME}
++.endif
++.if !defined(BUILD)
++${DESTDIR}${BINDIR}/${PROGNAME}: .MADE
++.endif
++
++.PRECIOUS: ${DESTDIR}${BINDIR}/${PROGNAME}
++${DESTDIR}${BINDIR}/${PROGNAME}: ${PROG}
++ ${INSTALL} ${RENAME} ${PRESERVE} ${COPY} ${STRIPFLAG} -o ${BINOWN} \
++ -g ${BINGRP} -m ${BINMODE} ${.ALLSRC} ${.TARGET}
++.endif
++
++.if !target(proginstall)
++proginstall::
++.endif
++
++.if defined(SCRIPTS) && !target(scriptsinstall)
++SCRIPTSDIR?=${BINDIR}
++SCRIPTSOWN?=${BINOWN}
++SCRIPTSGRP?=${BINGRP}
++SCRIPTSMODE?=${BINMODE}
++.for S in ${SCRIPTS}
++SCRIPTSDIR_${S}?=${SCRIPTSDIR}
++SCRIPTSOWN_${S}?=${SCRIPTSOWN}
++SCRIPTSGRP_${S}?=${SCRIPTSGRP}
++SCRIPTSMODE_${S}?=${SCRIPTSMODE}
++.if defined(SCRIPTSNAME)
++SCRIPTSNAME_${S} ?= ${SCRIPTSNAME}
++.else
++SCRIPTSNAME_${S} ?= ${S:T:R}
++.endif
++SCRIPTSDIR_${S} ?= ${SCRIPTSDIR}
++scriptsinstall:: ${DESTDIR}${SCRIPTSDIR_${S}}/${SCRIPTSNAME_${S}}
++.if !defined(UPDATE)
++.PHONY: ${DESTDIR}${SCRIPTSDIR_${S}}/${SCRIPTSNAME_${S}}
++.endif
++.if !defined(BUILD)
++${DESTDIR}${SCRIPTSDIR_${S}}/${SCRIPTSNAME_${S}}: .MADE
++.endif
++
++.PRECIOUS: ${DESTDIR}${SCRIPTSDIR_${S}}/${SCRIPTSNAME_${S}}
++${DESTDIR}${SCRIPTSDIR_${S}}/${SCRIPTSNAME_${S}}: ${S}
++ ${INSTALL} ${RENAME} ${PRESERVE} ${COPY} -o ${SCRIPTSOWN_${S}} -g \
++ ${SCRIPTSGRP_${S}} -m ${SCRIPTSMODE_${S}} ${.ALLSRC} ${.TARGET}
++.endfor
++.endif
++
++.if !target(scriptsinstall)
++scriptsinstall::
++.endif
++
++lint: ${LOBJS}
++.if defined(LOBJS) && !empty(LOBJS)
++ ${LINT} ${LINTFLAGS} ${LDFLAGS:M-L*} ${LOBJS} ${LDADD}
++.endif
++
++.include <bsd.man.mk>
++.include <bsd.nls.mk>
++.include <bsd.files.mk>
++.include <bsd.inc.mk>
++.include <bsd.links.mk>
++.include <bsd.dep.mk>
++.include <bsd.sys.mk>
++
++# Make sure all of the standard targets are defined, even if they do nothing.
++regress:
+--- pmake-1.111.orig/mk/bsd.subdir.mk
++++ pmake-1.111/mk/bsd.subdir.mk
+@@ -0,0 +1,34 @@
++# $NetBSD: bsd.subdir.mk,v 1.31 1999/02/11 05:01:39 tv Exp $
++# @(#)bsd.subdir.mk 8.1 (Berkeley) 6/8/93
++
++.if !target(__initialized__)
++__initialized__:
++.if exists(${.CURDIR}/../Makefile.inc)
++.include "${.CURDIR}/../Makefile.inc"
++.endif
++.include <bsd.own.mk>
++.MAIN: all
++.endif
++
++.for dir in ${SUBDIR}
++.if exists(${dir}.${MACHINE})
++__REALSUBDIR+=${dir}.${MACHINE}
++.else
++__REALSUBDIR+=${dir}
++.endif
++.endfor
++
++.for dir in ${__REALSUBDIR}
++.for targ in ${TARGETS}
++.PHONY: ${targ}-${dir}
++${targ}-${dir}: .MAKE
++ @echo "${targ} ===> ${_THISDIR_}${dir}"
++ @cd ${.CURDIR}/${dir}; \
++ ${MAKE} "_THISDIR_=${_THISDIR_}${dir}/" ${targ}
++subdir-${targ}: ${targ}-${dir}
++${targ}: subdir-${targ}
++.endfor
++.endfor
++
++# Make sure all of the standard targets are defined, even if they do nothing.
++${TARGETS}:
+--- pmake-1.111.orig/mk/bsd.sys.mk
++++ pmake-1.111/mk/bsd.sys.mk
+@@ -0,0 +1,110 @@
++# $NetBSD: bsd.sys.mk,v 1.34 1999/01/31 09:17:20 mrg Exp $
++#
++# Overrides used for NetBSD source tree builds.
++
++.if defined(WARNS) && ${WARNS} == 1
++CFLAGS+= -Wall -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith
++.endif
++.if !defined(NOGCCERROR)
++CFLAGS+= -Werror
++.endif
++CFLAGS+= ${CWARNFLAGS}
++
++.if defined(DESTDIR)
++CPPFLAGS+= -nostdinc -idirafter ${DESTDIR}/usr/include
++LINTFLAGS+= -d ${DESTDIR}/usr/include
++.endif
++
++.if defined(AUDIT)
++CPPFLAGS+= -D__AUDIT__
++.endif
++
++# Helpers for cross-compiling
++HOST_CC?= cc
++HOST_CFLAGS?= -O
++HOST_COMPILE.c?=${HOST_CC} ${HOST_CFLAGS} ${HOST_CPPFLAGS} -c
++HOST_LINK.c?= ${HOST_CC} ${HOST_CFLAGS} ${HOST_CPPFLAGS} ${HOST_LDFLAGS}
++
++HOST_CPP?= cpp
++HOST_CPPFLAGS?=
++
++HOST_LD?= ld
++HOST_LDFLAGS?=
++
++STRIPPROG?= strip
++
++
++.SUFFIXES: .m .o .ln .lo
++
++# Objective C
++# (Defined here rather than in <sys.mk> because `.m' is not just
++# used for Objective C source)
++.m:
++ ${LINK.m} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
++.m.o:
++ ${COMPILE.m} ${.IMPSRC}
++
++# Host-compiled C objects
++.c.lo:
++ ${HOST_COMPILE.c} -o ${.TARGET} ${.IMPSRC}
++
++
++.if defined(PARALLEL) || defined(LPREFIX)
++LPREFIX?=yy
++LFLAGS+=-P${LPREFIX}
++# Lex
++.l:
++ ${LEX.l} -o${.TARGET:R}.${LPREFIX}.c ${.IMPSRC}
++ ${LINK.c} -o ${.TARGET} ${.TARGET:R}.${LPREFIX}.c ${LDLIBS} -ll
++ rm -f ${.TARGET:R}.${LPREFIX}.c
++.l.c:
++ ${LEX.l} -o${.TARGET} ${.IMPSRC}
++.l.o:
++ ${LEX.l} -o${.TARGET:R}.${LPREFIX}.c ${.IMPSRC}
++ ${COMPILE.c} -o ${.TARGET} ${.TARGET:R}.${LPREFIX}.c
++ rm -f ${.TARGET:R}.${LPREFIX}.c
++.l.lo:
++ ${LEX.l} -o${.TARGET:R}.${LPREFIX}.c ${.IMPSRC}
++ ${HOST_COMPILE.c} -o ${.TARGET} ${.TARGET:R}.${LPREFIX}.c
++ rm -f ${.TARGET:R}.${LPREFIX}.c
++.endif
++
++# Yacc
++.if defined(YHEADER) || defined(YPREFIX)
++.if defined(YPREFIX)
++YFLAGS+=-p${YPREFIX}
++.endif
++.if defined(YHEADER)
++YFLAGS+=-d
++.endif
++.y:
++ ${YACC.y} -b ${.TARGET:R} ${.IMPSRC}
++ ${LINK.c} -o ${.TARGET} ${.TARGET:R}.tab.c ${LDLIBS}
++ rm -f ${.TARGET:R}.tab.c ${.TARGET:R}.tab.h
++.y.h: ${.TARGET:R}.c
++.y.c:
++ ${YACC.y} -o ${.TARGET} ${.IMPSRC}
++.y.o:
++ ${YACC.y} -b ${.TARGET:R} ${.IMPSRC}
++ ${COMPILE.c} -o ${.TARGET} ${.TARGET:R}.tab.c
++ rm -f ${.TARGET:R}.tab.c ${TARGET:R}.tab.h
++.y.lo:
++ ${YACC.y} -b ${.TARGET:R} ${.IMPSRC}
++ ${HOST_COMPILE.c} -o ${.TARGET} ${.TARGET:R}.tab.c
++ rm -f ${.TARGET:R}.tab.c ${TARGET:R}.tab.h
++.elif defined(PARALLEL)
++.y:
++ ${YACC.y} -b ${.TARGET:R} ${.IMPSRC}
++ ${LINK.c} -o ${.TARGET} ${.TARGET:R}.tab.c ${LDLIBS}
++ rm -f ${.TARGET:R}.tab.c
++.y.c:
++ ${YACC.y} -o ${.TARGET} ${.IMPSRC}
++.y.o:
++ ${YACC.y} -b ${.TARGET:R} ${.IMPSRC}
++ ${COMPILE.c} -o ${.TARGET} ${.TARGET:R}.tab.c
++ rm -f ${.TARGET:R}.tab.c
++.y.lo:
++ ${YACC.y} -b ${.TARGET:R} ${.IMPSRC}
++ ${HOST_COMPILE.c} -o ${.TARGET} ${.TARGET:R}.tab.c
++ rm -f ${.TARGET:R}.tab.c
++.endif
+--- pmake-1.111.orig/mk/sys.mk
++++ pmake-1.111/mk/sys.mk
+@@ -0,0 +1,207 @@
++# $NetBSD: sys.mk,v 1.54 1999/03/10 14:06:14 mycroft Exp $
++# @(#)sys.mk 8.2 (Berkeley) 3/21/94
++
++unix?= We run NetBSD.
++
++.SUFFIXES: .out .a .ln .o .s .S .c .cc .C .F .f .r .y .l .cl .p .h .sh .m4
++
++.LIBS: .a
++
++AR?= ar
++ARFLAGS?= rl
++RANLIB?= ranlib
++
++AS?= as
++AFLAGS?=
++COMPILE.s?= ${CC} ${AFLAGS} -c
++LINK.s?= ${CC} ${AFLAGS} ${LDFLAGS}
++COMPILE.S?= ${CC} ${AFLAGS} ${CPPFLAGS} -c -traditional-cpp
++LINK.S?= ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
++
++CC?= cc
++.if ${MACHINE_ARCH} == "alpha" || \
++ ${MACHINE_ARCH} == "arm32" || \
++ ${MACHINE_ARCH} == "i386" || \
++ ${MACHINE_ARCH} == "m68k" || \
++ ${MACHINE_ARCH} == "mipsel" || ${MACHINE_ARCH} == "mipseb" || \
++ ${MACHINE_ARCH} == "sparc"
++CFLAGS?= -O2
++.else
++CFLAGS?= -O
++.endif
++COMPILE.c?= ${CC} ${CFLAGS} ${CPPFLAGS} -c
++LINK.c?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
++
++CXX?= c++
++CXXFLAGS?= ${CFLAGS}
++COMPILE.cc?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c
++LINK.cc?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
++
++OBJC?= ${CC}
++OBJCFLAGS?= ${CFLAGS}
++COMPILE.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c
++LINK.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS}
++
++CPP?= cpp
++CPPFLAGS?=
++
++FC?= f77
++FFLAGS?= -O
++RFLAGS?=
++COMPILE.f?= ${FC} ${FFLAGS} -c
++LINK.f?= ${FC} ${FFLAGS} ${LDFLAGS}
++COMPILE.F?= ${FC} ${FFLAGS} ${CPPFLAGS} -c
++LINK.F?= ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS}
++COMPILE.r?= ${FC} ${FFLAGS} ${RFLAGS} -c
++LINK.r?= ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS}
++
++INSTALL?= install
++
++LEX?= lex
++LFLAGS?=
++LEX.l?= ${LEX} ${LFLAGS}
++
++LD?= ld
++LDFLAGS?=
++
++LINT?= lint
++LINTFLAGS?= -chapbxzF
++
++LORDER?= lorder
++
++MAKE?= pmake
++
++NM?= nm
++
++PC?= pc
++PFLAGS?=
++COMPILE.p?= ${PC} ${PFLAGS} ${CPPFLAGS} -c
++LINK.p?= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
++
++SHELL?= sh
++
++SIZE?= size
++
++TSORT?= tsort
++
++YACC?= yacc
++YFLAGS?=
++YACC.y?= ${YACC} ${YFLAGS}
++
++# C
++.c:
++ ${LINK.c} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
++.c.o:
++ ${COMPILE.c} ${.IMPSRC}
++.c.a:
++ ${COMPILE.c} ${.IMPSRC}
++ ${AR} ${ARFLAGS} $@ $*.o
++ rm -f $*.o
++.c.ln:
++ ${LINT} ${LINTFLAGS} ${CPPFLAGS:M-[IDU]*} -i ${.IMPSRC}
++
++# C++
++.cc:
++ ${LINK.cc} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
++.cc.o:
++ ${COMPILE.cc} ${.IMPSRC}
++.cc.a:
++ ${COMPILE.cc} ${.IMPSRC}
++ ${AR} ${ARFLAGS} $@ $*.o
++ rm -f $*.o
++
++.C:
++ ${LINK.cc} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
++.C.o:
++ ${COMPILE.cc} ${.IMPSRC}
++.C.a:
++ ${COMPILE.cc} ${.IMPSRC}
++ ${AR} ${ARFLAGS} $@ $*.o
++ rm -f $*.o
++
++# Fortran/Ratfor
++.f:
++ ${LINK.f} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
++.f.o:
++ ${COMPILE.f} ${.IMPSRC}
++.f.a:
++ ${COMPILE.f} ${.IMPSRC}
++ ${AR} ${ARFLAGS} $@ $*.o
++ rm -f $*.o
++
++.F:
++ ${LINK.F} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
++.F.o:
++ ${COMPILE.F} ${.IMPSRC}
++.F.a:
++ ${COMPILE.F} ${.IMPSRC}
++ ${AR} ${ARFLAGS} $@ $*.o
++ rm -f $*.o
++
++.r:
++ ${LINK.r} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
++.r.o:
++ ${COMPILE.r} ${.IMPSRC}
++.r.a:
++ ${COMPILE.r} ${.IMPSRC}
++ ${AR} ${ARFLAGS} $@ $*.o
++ rm -f $*.o
++
++# Pascal
++.p:
++ ${LINK.p} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
++.p.o:
++ ${COMPILE.p} ${.IMPSRC}
++.p.a:
++ ${COMPILE.p} ${.IMPSRC}
++ ${AR} ${ARFLAGS} $@ $*.o
++ rm -f $*.o
++
++# Assembly
++.s:
++ ${LINK.s} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
++.s.o:
++ ${COMPILE.s} ${.IMPSRC}
++.s.a:
++ ${COMPILE.s} ${.IMPSRC}
++ ${AR} ${ARFLAGS} $@ $*.o
++ rm -f $*.o
++.S:
++ ${LINK.S} -o ${.TARGET} ${.IMPSRC} ${LDLIBS}
++.S.o:
++ ${COMPILE.S} ${.IMPSRC}
++.S.a:
++ ${COMPILE.S} ${.IMPSRC}
++ ${AR} ${ARFLAGS} $@ $*.o
++ rm -f $*.o
++
++# Lex
++.l:
++ ${LEX.l} ${.IMPSRC}
++ ${LINK.c} -o ${.TARGET} lex.yy.c ${LDLIBS} -ll
++ rm -f lex.yy.c
++.l.c:
++ ${LEX.l} ${.IMPSRC}
++ mv lex.yy.c ${.TARGET}
++.l.o:
++ ${LEX.l} ${.IMPSRC}
++ ${COMPILE.c} -o ${.TARGET} lex.yy.c
++ rm -f lex.yy.c
++
++# Yacc
++.y:
++ ${YACC.y} ${.IMPSRC}
++ ${LINK.c} -o ${.TARGET} y.tab.c ${LDLIBS}
++ rm -f y.tab.c
++.y.c:
++ ${YACC.y} ${.IMPSRC}
++ mv y.tab.c ${.TARGET}
++.y.o:
++ ${YACC.y} ${.IMPSRC}
++ ${COMPILE.c} -o ${.TARGET} y.tab.c
++ rm -f y.tab.c
++
++# Shell
++.sh:
++ rm -f ${.TARGET}
++ cp ${.IMPSRC} ${.TARGET}
+--- pmake-1.111.orig/arch.c
++++ pmake-1.111/arch.c
+@@ -173,7 +173,7 @@
+ static FILE *ArchFindMember(char *, char *, struct ar_hdr *, const char *);
+ #if defined(__svr4__) || defined(__SVR4) || defined(__ELF__)
+ #define SVR4ARCHIVES
+-static int ArchSVR4Entry(Arch *, char *, size_t, FILE *);
++static int ArchSVR4Entry(Arch *, char **, size_t, FILE *);
+ #endif
+
+ #ifdef CLEANUP
+@@ -535,7 +535,7 @@
+ Arch *ar; /* Archive descriptor */
+ Hash_Entry *he; /* Entry containing member's description */
+ struct ar_hdr arh; /* archive-member header for reading archive */
+- char memName[MAXPATHLEN+1];
++ char *memName = NULL;
+ /* Current member name while hashing. */
+
+ /*
+@@ -617,7 +617,6 @@
+ ar->fnametab = NULL;
+ ar->fnamesize = 0;
+ Hash_InitTable(&ar->members, -1);
+- memName[AR_MAX_NAME_LEN] = '\0';
+
+ while (fread ((char *)&arh, sizeof (struct ar_hdr), 1, arch) == 1) {
+ if (strncmp ( arh.ar_fmag, ARFMAG, sizeof (arh.ar_fmag)) != 0) {
+@@ -636,10 +635,9 @@
+ arh.ar_size[sizeof(arh.ar_size)-1] = '\0';
+ size = (int) strtol(arh.ar_size, NULL, 10);
+
+- (void) strncpy (memName, arh.ar_name, sizeof(arh.ar_name));
+- for (cp = &memName[AR_MAX_NAME_LEN]; *cp == ' '; cp--) {
+- continue;
+- }
++ memName = estrdup(arh.ar_name);
++
++ for(cp = strchr(memName, 0)-1; *cp == ' '; cp--);
+ cp[1] = '\0';
+
+ #ifdef SVR4ARCHIVES
+@@ -650,7 +648,7 @@
+ /*
+ * svr4 magic mode; handle it
+ */
+- switch (ArchSVR4Entry(ar, memName, size, arch)) {
++ switch (ArchSVR4Entry(ar, &memName, size, arch)) {
+ case -1: /* Invalid data */
+ goto badarch;
+ case 0: /* List of files entry */
+@@ -675,8 +673,8 @@
+
+ unsigned int elen = atoi(&memName[sizeof(AR_EFMT1)-1]);
+
+- if (elen > MAXPATHLEN)
+- goto badarch;
++ memName = erealloc(memName, elen+1);
++
+ if (fread (memName, elen, 1, arch) != 1)
+ goto badarch;
+ memName[elen] = '\0';
+@@ -692,6 +690,9 @@
+ memcpy ((Address)Hash_GetValue (he), (Address)&arh,
+ sizeof (struct ar_hdr));
+ }
++ /* time to free memName */
++ free(memName);
++
+ fseek (arch, (size + 1) & ~1, SEEK_CUR);
+ }
+
+@@ -742,15 +743,15 @@
+ *-----------------------------------------------------------------------
+ */
+ static int
+-ArchSVR4Entry(Arch *ar, char *name, size_t size, FILE *arch)
++ArchSVR4Entry(Arch *ar, char **name, size_t size, FILE *arch)
+ {
+ #define ARLONGNAMES1 "//"
+ #define ARLONGNAMES2 "/ARFILENAMES"
+ size_t entry;
+ char *ptr, *eptr;
+
+- if (strncmp(name, ARLONGNAMES1, sizeof(ARLONGNAMES1) - 1) == 0 ||
+- strncmp(name, ARLONGNAMES2, sizeof(ARLONGNAMES2) - 1) == 0) {
++ if (strncmp(*name, ARLONGNAMES1, sizeof(ARLONGNAMES1) - 1) == 0 ||
++ strncmp(*name, ARLONGNAMES2, sizeof(ARLONGNAMES2) - 1) == 0) {
+
+ if (ar->fnametab != NULL) {
+ if (DEBUG(ARCH)) {
+@@ -793,30 +794,30 @@
+ return 0;
+ }
+
+- if (name[1] == ' ' || name[1] == '\0')
++ if ((*name)[1] == ' ' || (*name)[1] == '\0')
+ return 2;
+
+- entry = (size_t) strtol(&name[1], &eptr, 0);
+- if ((*eptr != ' ' && *eptr != '\0') || eptr == &name[1]) {
++ entry = (size_t) strtol(&(*name)[1], &eptr, 0);
++ if ((*eptr != ' ' && *eptr != '\0') || eptr == &(*name)[1]) {
+ if (DEBUG(ARCH)) {
+- printf("Could not parse SVR4 name %s\n", name);
++ printf("Could not parse SVR4 name %s\n", *name);
+ }
+ return 2;
+ }
+ if (entry >= ar->fnamesize) {
+ if (DEBUG(ARCH)) {
+ printf("SVR4 entry offset %s is greater than %lu\n",
+- name, (u_long)ar->fnamesize);
++ *name, (u_long)ar->fnamesize);
+ }
+ return 2;
+ }
+
+ if (DEBUG(ARCH)) {
+- printf("Replaced %s with %s\n", name, &ar->fnametab[entry]);
++ printf("Replaced %s with %s\n", *name, &ar->fnametab[entry]);
+ }
+
+- (void) strncpy(name, &ar->fnametab[entry], MAXPATHLEN);
+- name[MAXPATHLEN] = '\0';
++ free(*name);
++ *name = estrdup(&ar->fnametab[entry]);
+ return 1;
+ }
+ #endif
+@@ -926,12 +927,9 @@
+ isdigit((unsigned char)arhPtr->ar_name[sizeof(AR_EFMT1) - 1])) {
+
+ unsigned int elen = atoi(&arhPtr->ar_name[sizeof(AR_EFMT1)-1]);
+- char ename[MAXPATHLEN];
++ char *ename = NULL;
+
+- if (elen > MAXPATHLEN) {
+- fclose (arch);
+- return NULL;
+- }
++ ename = emalloc(elen+1);
+ if (fread (ename, elen, 1, arch) != 1) {
+ fclose (arch);
+ return NULL;
+@@ -945,6 +943,8 @@
+ fseek (arch, -sizeof(struct ar_hdr) - elen, SEEK_CUR);
+ return (arch);
+ }
++ /* time to free ename */
++ free(ename);
+ fseek (arch, -elen, SEEK_CUR);
+ goto skip;
+ } else
+--- pmake-1.111.orig/buf.c
++++ pmake-1.111/buf.c
+@@ -192,7 +192,8 @@
+ {
+
+ if (numBytesPtr != (int *)NULL) {
+- *numBytesPtr = bp->inPtr - bp->outPtr;
++ intptr_t num = bp->inPtr - bp->outPtr;
++ *numBytesPtr = num;
+ }
+
+ return (bp->outPtr);
+--- pmake-1.111.orig/compat.c
++++ pmake-1.111/compat.c
+@@ -130,7 +130,7 @@
+
+ Shell_Init(); /* setup default shell */
+
+- for (cp = "#=|^(){};&<>*?[]:$`\\\n"; *cp != '\0'; cp++) {
++ for (cp = "~#=|^(){};&<>*?[]:$`\\\n"; *cp != '\0'; cp++) {
+ meta[(unsigned char) *cp] = 1;
+ }
+ /*
+@@ -498,7 +498,7 @@
+ }
+ goto cohorts;
+ } else if (DEBUG(MAKE)) {
+- printf("out-of-date.\n");
++ printf("out-of-date\n");
+ }
+
+ /*
+--- pmake-1.111.orig/job.c
++++ pmake-1.111/job.c
+@@ -2162,7 +2162,8 @@
+ (void) fprintf(stdout, "Remaking `%s'\n", gn->name);
+ (void) fflush(stdout);
+ (void) strcpy(job->outFile, TMPPAT);
+- job->outFd = mkstemp(job->outFile);
++ if ((job->outFd = mkstemp(job->outFile)) == -1)
++ Punt("Cannot create temp file: %s", strerror(errno));
+ (void) fcntl(job->outFd, F_SETFD, 1);
+ }
+ }
+--- pmake-1.111.orig/main.c
++++ pmake-1.111/main.c
+@@ -825,7 +825,10 @@
+ * in a different format).
+ */
+ #ifdef POSIX
+- Main_ParseArgLine(getenv("MAKEFLAGS"));
++ /*
++ * If we are called by GNU make, do not read MAKEFLAGS.
++ */
++ Main_ParseArgLine(getenv(getenv("MAKELEVEL") ? "MAKE" : "MAKEFLAGS"));
+ #else
+ Main_ParseArgLine(getenv("MAKE"));
+ #endif
+@@ -1149,6 +1152,9 @@
+ }
+ free(path);
+ return(TRUE);
++ /* `path' is not freed before return because its
++ * pointer is stored somewhere else
++ */
+ }
+
+
+--- pmake-1.111.orig/make.1
++++ pmake-1.111/make.1
+@@ -33,7 +33,7 @@
+ .Dt MAKE 1
+ .Os
+ .Sh NAME
+-.Nm make
++.Nm pmake
+ .Nd maintain program dependencies
+ .Sh SYNOPSIS
+ .Nm
+@@ -1233,7 +1233,7 @@
+ .It Ic defined
+ Takes a variable name as an argument and evaluates to true if the variable
+ has been defined.
+-.It Ic make
++.It Ic pmake
+ Takes a target name as an argument and evaluates to true if the target
+ was specified as part of
+ .Nm Ns 's
+@@ -1602,7 +1602,6 @@
+ .Sh SEE ALSO
+ .Xr mkdep 1
+ .Sh HISTORY
+-A
+-.Nm
++A make
+ command appeared in
+ .At v7 .
+--- pmake-1.111.orig/var.c
++++ pmake-1.111/var.c
+@@ -124,6 +124,7 @@
+ */
+
+ #ifndef NO_REGEX
++#include <stdio.h>
+ #include <sys/types.h>
+ #include <regex.h>
+ #endif
+--- pmake-1.111.orig/debian/changelog
++++ pmake-1.111/debian/changelog
+@@ -0,0 +1,220 @@
++pmake (1.111-1) unstable; urgency=low
++
++ * New upstream snapshot.
++ * This version properly parses arguments and does not crash when parameters
++ are missing (Closes: #287336, #316394).
++ * debian/control:
++ + Set policy to 3.6.2.1.
++
++ -- Sam Hocevar (Debian packages) <sam+deb@zoy.org> Thu, 7 Jul 2005 10:20:56 +0200
++
++pmake (1.98-3) unstable; urgency=low
++
++ * mk/bsd.man.mk:
++ + Use symlinks instead of hard links when using the MLINKS directive
++ to link manual pages, courtesy of Robert Millan.
++
++ -- Sam Hocevar (Debian packages) <sam+deb@zoy.org> Fri, 12 Mar 2004 13:14:27 +0100
++
++pmake (1.98-2) unstable; urgency=low
++
++ * buf.c:
++ + Work around a GCC 3 ICE on hppa.
++
++ -- Sam Hocevar (Debian packages) <sam+deb@zoy.org> Wed, 10 Mar 2004 18:43:16 +0100
++
++pmake (1.98-1) unstable; urgency=low
++
++ * New maintainer (Closes: #218804).
++ * New upstream version from NetBSD HEAD (Closes: #134798).
++ * Moved to a non-native package.
++ * debian/rules:
++ + Switched to debhelper.
++ * main.c:
++ + Parse $MAKE instead of $MAKEFLAGS when called from GNU make to avoid
++ strange interactions (Closes: #189097).
++
++ -- Sam Hocevar (Debian packages) <sam+deb@zoy.org> Fri, 27 Feb 2004 16:04:12 +0100
++
++pmake (1.45-11) unstable; urgency=low
++
++ * Set defaults to match policy better. Closes: #150895. Thanks to
++ Matej Vela for the patch.
++
++ -- Steve McIntyre <93sam@debian.org> Sun, 30 Jun 2002 23:52:31 +0100
++
++pmake (1.45-10) unstable; urgency=low
++
++ * Fixed broken '.Nm ""' directives in the man page. Closes: #137768
++ * Changed name from "make" to "pmake" in manpage.
++
++ -- Steve McIntyre <93sam@debian.org> Tue, 12 Mar 2002 21:59:55 +0000
++
++pmake (1.45-9) unstable; urgency=low
++
++ * Fixed broken .Bl directives in the man page. Closes: #117723
++
++ -- Steve McIntyre <93sam@debian.org> Sun, 04 Nov 2001 17:00:14 +0000
++
++pmake (1.45-8) unstable; urgency=high
++
++ * High urgency because of two important bug fixes...
++ * Fixed important bug in getopt handling that broke -n flag in
++ recursive Makefiles. Closes: #109608
++ * Modified shared library targets to use $(CC) -shared instead of
++ $(LD) -x -shared, which didn't work. Closes: #109959
++
++ -- Steve McIntyre <93sam@debian.org> Sat, 08 Sep 2001 15:35:11 +0100
++
++pmake (1.45-7) unstable; urgency=low
++
++ * Don't depend on particular locations of groff's macros, as they may
++ change, and indeed have done with groff 1.17 (closes:
++ #101973). Thanks to Colin Watson for the patch.
++
++ -- Steve McIntyre <93sam@debian.org> Sun, 24 Apr 2001 02:40:21 +0100
++
++pmake (1.45-6) unstable; urgency=low
++
++ * Make sure that make execs a shell to expand target rules
++ containing "~". Closes: #89313.
++ * Fixed the definition of "sh" in job.c so that pmake will play
++ nicely with bash if non-compat mode is used (e.g parallel
++ makes). It was assuming that "sh" was "ash" and understood the -q
++ flag.
++
++ -- Steve McIntyre <93sam@debian.org> Tue, 17 Apr 2001 02:10:41 +0100
++
++pmake (1.45-5) unstable; urgency=low
++
++ * Applied patch for Hurd from Igor Khavkine <i_khavki@alcor.concordia.ca>.
++ * Added Build-Depends for groff. Closes: #90358
++ * New maintainer address
++ * Updated Standards-Version.
++
++ -- Steve McIntyre <93sam@debian.org> Thu, 22 Mar 2001 19:19:08 +0100
++
++pmake (1.45-4) unstable; urgency=low
++
++ * New maintainer.
++ * Updated Standards-Version.
++ * Fixed multiple lintian warnings.
++
++ -- Steve McIntyre <stevem@chiark.greenend.org.uk> Sun, 21 May 2000 18:36:23 +0100
++
++pmake (1.45-3.2) frozen unstable; urgency=low
++
++ * it's for frozen too
++
++ -- Jim Lynch <jwl@debian.org> Mon, 6 Mar 2000 09:03:28 +0800
++
++pmake (1.45-3.1) unstable; urgency=low
++
++ * Apply patch in Bug#56878 (Closes Bug#56878)
++
++ -- Jim Lynch <jwl@debian.org> Sun, 5 Mar 2000 12:45:54 +0800
++
++pmake (1.45-3) unstable; urgency=low
++
++ * Unconditionally set OBJECT_FMT to "a.out" in mk/bsd.own.mk (Fixes
++ crtbegin/crtend.o problems on powerpc and alpha). (Closes Bug#38951).
++
++ -- Edward Brocklesby <ejb@debian.org> Sun, 6 Jun 1999 09:35:15 +0000
++
++pmake (1.45-2) unstable; urgency=low
++
++ * Fixed crt0.o stuff in mk/bsd.prog.mk.
++ * Fixed FUD in /usr/share/mk/bsd.README
++
++ -- Edward Brocklesby <ejb@debian.org> Sun, 23 May 1999 16:55:06 +0000
++
++pmake (1.45-1) unstable; urgency=low
++
++ * New upstream version.
++ * Moved mk files back from /usr/lib/mk to /usr/share/mk.
++
++ -- Edward Brocklesby <ejb@debian.org> Wed, 5 May 1999 21:08:58 +0000
++
++pmake (1.39-4) unstable; urgency=low
++
++ * New maintainer.
++
++ -- Edward Brocklesby <ejb@debian.org> Tue, 23 Feb 1999 21:01:53 +0000
++
++pmake (1.39-3) unstable; urgency=low
++
++ * debian/control (Maintainer): new address.
++ * debian/copyright: ditto.
++ * debian/control (Standards-Version): updated to 2.5.0.0.
++
++ -- James Troup <james@nocrew.org> Tue, 10 Nov 1998 13:37:41 +0000
++
++pmake (1.39-2) frozen unstable; urgency=medium
++
++ * mk/bsd.man.mk: correct CATDEPS, Herbet Xu
++ <herbert@gondor.apana.org.au>. [#21158]
++ * debian/control (Standards-Version): Updated to 2.4.1.0.
++
++ -- James Troup <jjtroup@comp.brad.ac.uk> Wed, 15 Apr 1998 12:12:11 +0200
++
++pmake (1.39-1) unstable; urgency=high
++
++ * New upstream version [98-03-16].
++ * Reverts back to .orig.tar.gz and .diff.gz.
++ * Replace mkdep with the one from OpenBSD as it deals with temporary
++ files in a secure fashion. [#19806]
++ * pmake now comes with ASCII and postscript versions of the pmake
++ tutorial in /usr/doc/pmake/.
++ * debian/control: Updated Standards-Version to 2.4.0.0 [#16780].
++ * debian/copyright: Corrected ftp site information.
++ * debian/copyright: Expanded changes description.
++ * debian/rules: No longer uses {,} and other minor changes.
++ * mk/bsd.doc.mk: Groff's tmac macros are in /usr/share/groff/tmac,
++ not /usr/share/tmac on Debian GNU/Linux.
++ * mk/bsd.lib.mk: added a machine definition "debian".
++ * mk/bsd.own.mk: s#/usr/share/"/usr/" for MANDIR and DOCDIR.
++ * mk/bsd.own.mk: s/wheel/root/g.
++ * mk/bsd.own.mk: define MANZ.
++ * mk/bsd.own.mk: don't make files unwritable by owner.
++ * mk/bsd.prog.mk: undefine LIBCRT0.
++ * mk/sys.mk: MAKE is pmake not GNU make.
++ * var.c: #include <stdio.h> because <regex.h> needs it.
++ * util.c: don't try to redefine libc functions by #ifndefing a large
++ chunk on (__linux__).
++
++ -- James Troup <jjtroup@comp.brad.ac.uk> Thu, 19 Mar 1998 20:53:45 +0100
++
++pmake (1.0-17) unstable; urgency=low
++
++ * Fixed mk/bsd.lib.mk so that bogus `-q' argument isn't passed to
++ tsort [#11536]
++
++ -- James Troup <jjtroup@comp.brad.ac.uk> Mon, 28 Jul 1997 21:17:39 +0100
++
++pmake (1.0-16) unstable; urgency=low
++
++ * Abandonned debian diff, since the diff is bigger than the original
++ source.
++ * Added mkdep (again from NetBSD Current) [fixes #11464].
++
++ -- James Troup <jjtroup@comp.brad.ac.uk> Fri, 25 Jul 1997 13:50:44 +0100
++
++pmake (1.0-15) unstable; urgency=low
++
++ * Updated source to NetBSD Current.
++ * Rebuilt with libc6.
++
++ -- James Troup <jjtroup@comp.brad.ac.uk> Sat, 5 Jul 1997 01:10:27 +0100
++
++pmake (1.0-14) unstable; urgency=low
++
++ * New maintainer.
++ * Upgraded to Standards 2.1.3.0 (Fixes bug #9491, #3793).
++ * bsd.lib.mk no longer passes spurious `T' argument to ar
++ (Fixes bug #3793), patch from Philip Blundell <pb@nexus.co.uk>.
++
++ -- James Troup <jjtroup@comp.brad.ac.uk> Wed, 14 May 1997 01:34:07 +0100
++
++Local variables:
++mode: debian-changelog
++End:
+--- pmake-1.111.orig/debian/control
++++ pmake-1.111/debian/control
+@@ -0,0 +1,15 @@
++Source: pmake
++Section: devel
++Priority: optional
++Maintainer: Sam Hocevar (Debian packages) <sam+deb@zoy.org>
++Standards-Version: 3.6.2.1
++Build-Depends: debhelper (>= 4.0), groff
++
++Package: pmake
++Architecture: any
++Depends: ${shlibs:Depends}
++Description: NetBSD make
++ pmake is a program designed to simplify the maintenance of other
++ programs. Its input is a list of specifications as to the files upon
++ which programs and other files depend. mkdep, a program to construct
++ Makefile dependency lists, is also included.
+--- pmake-1.111.orig/debian/copyright
++++ pmake-1.111/debian/copyright
+@@ -0,0 +1,71 @@
++This is the Debian GNU/Linux prepackaged version of 4.4BSD make (pmake).
++
++This package was put together by James Troup <james@nocrew.org>, from
++sources obtained from:
++ ftp.netbsd.org:/pub/NetBSD-current/src/usr.bin/make/
++ ftp.openbsd.org:/pub/OpenBSD/src/usr.bin/mkdep/
++ ftp.netbsd.org:/pub/NetBSD-current/src/share/mk/
++This package was rebuilt by Sam Hocevar <sam@zoy.org> from the NetBSD
++CVS tree available from:
++ cvs://anoncvs@anoncvs.NetBSD.org:/cvsroot (module /src/usr.bin/make/)
++
++Changes:
++ o added Debian GNU/Linux package maintenance system files.
++ o var.c: #include <stdio.h> because <regex.h> needs it.
++ o util.c: don't try to redefine libc functions by #ifndefing a large
++ chunk on (__linux__).
++ o mk/bsd.doc.mk: don't give groff explicit macro paths; instead let it work
++ them out for itself.
++ o mk/bsd.lib.mk: added a machine definition "debian" for Debian GNU/Linux.
++ o mk/bsd.man.mk: correct CATDEPS, Herbet Xu <herbert@gondor.apana.org.au>.
++ o mk/bsd.own.mk: change MANDIR and DOCDIR to reflect the FSSTND
++ orientated Debian GNU/Linux directory structure
++ (i.e. /usr/share/* -> /usr/*).
++ o mk/bsd.own.mk: s/wheel/root/g.
++ o mk/bsd.own.mk: define MANZ.
++ o mk/bsd.own.mk: don't make files unwritable by owner.
++ o mk/bsd.prog.mk: undefine LIBCRT0.
++ o mk/sys.mk: MAKE should be pmake and not make on Debian GNU/Linux.
++ o mk/sys.mk: tsort from bsdmainutils doesn't accept -q as an argument,
++ so don't try to pass it.
++
++Modifications for Debian Copyright (C) 1997,1998 James Troup.
++ Copyright (C) 1999 Edward Brocklesby.
++ Copyright (C) 2003,2004 Sam Hocevar.
++/*
++ * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
++ * Copyright (c) 1988, 1989 by Adam de Boor
++ * Copyright (c) 1989 by Berkeley Softworks
++ * All rights reserved.
++ *
++ * This code is derived from software contributed to Berkeley by
++ * Adam de Boor.
++ *
++ * 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. All advertising materials mentioning features or use of this software
++ * must display the following acknowledgement:
++ * This product includes software developed by the University of
++ * California, Berkeley and its contributors.
++ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
++ */
+--- pmake-1.111.orig/debian/rules
++++ pmake-1.111/debian/rules
+@@ -0,0 +1,61 @@
++#!/usr/bin/make -f
++
++#export DH_VERBOSE=1
++
++ARCH=$(shell dpkg --print-gnu-build-architecture)
++CFLAGS="-O2 -g -Wall -D__COPYRIGHT\(x\)= -D__RCSID\(x\)= \
++ -I. -DMACHINE=\\\"debian\\\" -DMACHINE_ARCH=\\\"${ARCH}\\\" \
++ -DHAVE_SETENV -DHAVE_STRERROR -DHAVE_STRDUP -DHAVE_STRFTIME \
++ -DHAVE_VSNPRINTF \
++ -D_GNU_SOURCE"
++
++build: build-stamp
++build-stamp:
++ dh_testdir
++ $(MAKE) -f Makefile.boot CFLAGS=$(CFLAGS)
++ touch build-stamp
++
++clean:
++ dh_testdir
++ dh_testroot
++ rm -f build-stamp
++ $(MAKE) -f Makefile.boot clean
++ rm -f pmake pmake.1
++ dh_clean
++
++install: build
++ dh_testdir
++ dh_testroot
++ dh_clean -k
++ dh_installdirs usr/bin usr/share/mk usr/share/doc/pmake
++ cp bmake pmake
++ cp make.1 pmake.1
++ dh_install pmake mkdep usr/bin
++ dh_install mk/* usr/share/mk/
++ groff -Tascii -ms PSD.doc/tutorial.ms > \
++ debian/pmake/usr/share/doc/pmake/tutorial.asc
++ groff -Tps -ms PSD.doc/tutorial.ms > \
++ debian/pmake/usr/share/doc/pmake/tutorial.ps
++ gzip -9v debian/pmake/usr/share/doc/pmake/*
++
++binary-indep: build install
++
++binary-arch: build install
++ dh_testdir
++ dh_testroot
++ dh_installdocs
++ dh_installchangelogs
++ dh_install
++ dh_installman pmake.1 mkdep.1
++ dh_link
++ dh_strip
++ dh_compress
++ dh_fixperms
++ dh_installdeb
++ dh_shlibdeps
++ dh_gencontrol
++ dh_md5sums
++ dh_builddeb
++
++binary: binary-indep binary-arch
++.PHONY: build clean binary-indep binary-arch binary install
+--- pmake-1.111.orig/debian/compat
++++ pmake-1.111/debian/compat
+@@ -0,0 +1 @@
++4
+--- pmake-1.111.orig/mkdep
++++ pmake-1.111/mkdep
+@@ -0,0 +1,113 @@
++#!/bin/sh -
++#
++# $OpenBSD: mkdep.gcc.sh,v 1.8 1998/09/02 06:40:07 deraadt Exp $
++# $NetBSD: mkdep.gcc.sh,v 1.9 1994/12/23 07:34:59 jtc Exp $
++#
++# Copyright (c) 1991, 1993
++# The Regents of the University of California. All rights reserved.
++#
++# 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. All advertising materials mentioning features or use of this software
++# must display the following acknowledgement:
++# This product includes software developed by the University of
++# California, Berkeley and its contributors.
++# 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
++#
++# @(#)mkdep.gcc.sh 8.1 (Berkeley) 6/6/93
++#
++
++D=.depend # default dependency file is .depend
++append=0
++pflag=
++
++while :
++ do case "$1" in
++ # -a appends to the depend file
++ -a)
++ append=1
++ shift ;;
++
++ # -f allows you to select a makefile name
++ -f)
++ D=$2
++ shift; shift ;;
++
++ # the -p flag produces "program: program.c" style dependencies
++ # so .o's don't get produced
++ -p)
++ pflag=p
++ shift ;;
++ *)
++ break ;;
++ esac
++done
++
++if [ $# = 0 ] ; then
++ echo 'usage: mkdep [-p] [-f depend_file] [cc_flags] file ...'
++ exit 1
++fi
++
++DTMP=/tmp/mkdep$$
++TMP=$DTMP/mkdep
++
++um=`umask`
++umask 022
++if ! mkdir $DTMP ; then
++ echo failed to create tmp dir $DTMP
++ exit 1
++fi
++
++umask $um
++trap 'rm -rf $DTMP ; trap 2 ; kill -2 $$' 1 2 3 13 15
++
++if [ x$pflag = x ]; then
++ ${CC:-cc} -M "$@" | sed -e 's; \./; ;g' > $TMP
++else
++ ${CC:-cc} -M "$@" | sed -e 's;\.o :; :;' -e 's; \./; ;g' > $TMP
++fi
++
++if [ $? != 0 ]; then
++ echo 'mkdep: compile failed.'
++ rm -rf $DTMP
++ exit 1
++fi
++
++if [ $append = 1 ]; then
++ cat $TMP >> $D
++ if [ $? != 0 ]; then
++ echo 'mkdep: append failed.'
++ rm -rf $DTMP
++ exit 1
++ fi
++else
++ mv $TMP $D
++ if [ $? != 0 ]; then
++ echo 'mkdep: rename failed.'
++ rm -rf $DTMP
++ exit 1
++ fi
++fi
++
++rm -rf $DTMP
++exit 0
+--- pmake-1.111.orig/mkdep.1
++++ pmake-1.111/mkdep.1
+@@ -0,0 +1,106 @@
++.\" $OpenBSD: mkdep.1,v 1.3 1998/09/26 19:55:08 aaron Exp $
++.\" $NetBSD: mkdep.1,v 1.3 1994/12/23 07:34:56 jtc Exp $
++.\"
++.\" Copyright (c) 1987, 1990, 1993
++.\" The Regents of the University of California. All rights reserved.
++.\"
++.\" 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. All advertising materials mentioning features or use of this software
++.\" must display the following acknowledgement:
++.\" This product includes software developed by the University of
++.\" California, Berkeley and its contributors.
++.\" 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
++.\"
++.\" @(#)mkdep.1 8.1 (Berkeley) 6/6/93
++.\"
++.Dd June 6, 1993
++.Dt MKDEP 1
++.Os BSD 4.2
++.Sh NAME
++.Nm mkdep
++.Nd construct Makefile dependency list
++.Sh SYNOPSIS
++.Nm mkdep
++.Op Fl ap
++.Op Fl f Ar file
++.Op Ar flags
++.Ar file Op Ar ...
++.Sh DESCRIPTION
++.Nm mkdep
++takes a set of flags for the C compiler and a list
++of C source files as arguments and constructs a set of include
++file dependencies which are written into the file ``.depend''.
++An example of its use in a Makefile might be:
++.Bd -literal -offset indent
++CFLAGS= -O -I../include
++SRCS= file1.c file2.c
++
++depend:
++ mkdep ${CFLAGS} ${SRCS}
++.Ed
++.Pp
++where the macro SRCS is the list of C source files and the macro
++CFLAGS is the list of flags for the C compiler.
++.Pp
++The options are as follows:
++.Bl -tag -width Ds
++.It Fl a
++Append to the output file,
++so that multiple
++.Nm mkdep Ns 's
++may be run from a single Makefile.
++.It Fl f Ar file
++Write the include file dependencies to
++.Ar file ,
++instead of the default ``.depend''.
++.It Fl p
++Cause
++.Nm mkdep
++to produce dependencies of the form:
++.Bd -literal -offset indent
++program: program.c
++.Ed
++.Pp
++so that subsequent makes will produce
++.Ar program
++directly from its C module rather than using an intermediate
++.Pa \&.o
++module.
++This is useful for programs whose source is contained in a single
++module.
++.El
++.Sh SEE ALSO
++.Xr cc 1 ,
++.Xr cpp 1 ,
++.Xr make 1
++.Sh FILES
++.Bl -tag -width .depend -compact
++.It Pa .depend
++file containing list of dependencies
++.El
++.Sh HISTORY
++The
++.Nm mkdep
++command appeared in
++.Bx 4.3 Tahoe .
diff --git a/source/d/pmake/slack-desc b/source/d/pmake/slack-desc
new file mode 100644
index 000000000..d01c9b44e
--- /dev/null
+++ b/source/d/pmake/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+pmake: pmake (BSD parallel make)
+pmake:
+pmake: This is PMake -- a parallel Make program originally written for the
+pmake: Sprite operating system, ported from BSD Unix. This may be useful if
+pmake: you're going to port software with Makefiles designed for BSD.
+pmake:
+pmake: PMake was written by Adam de Boor.
+pmake:
+pmake:
+pmake:
+pmake:
diff --git a/source/d/python/python.SlackBuild b/source/d/python/python.SlackBuild
new file mode 100755
index 000000000..88445fd8d
--- /dev/null
+++ b/source/d/python/python.SlackBuild
@@ -0,0 +1,142 @@
+#!/bin/bash
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+
+VERSION=${VERSION:-2.6.2}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-3}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-python
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+# Don't set any SLKCFLAGS here, or OPT="$SLKCFLAGS" before the ./configure.
+# Python gets the compile options right without any help.
+if [ "$ARCH" = "i486" ]; then
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ LIBDIRSUFFIX="64"
+elif [ "$ARCH" = "arm" ]; then
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "armel" ]; then
+ LIBDIRSUFFIX=""
+fi
+
+# Location for Python site-packages:
+SITEPK=$PKG/usr/lib${LIBDIRSUFFIX}/python2.6/site-packages
+# same as above without $PKG
+TOOLSDIR=/usr/lib${LIBDIRSUFFIX}/python2.6/site-packages
+
+cd $TMP
+rm -rf Python-$VERSION
+tar xf $CWD/Python-$VERSION.tar.?z* || exit 1
+cd Python-$VERSION
+
+zcat $CWD/python.readline.set_pre_input_hook.diff.gz | patch -p1 --verbose || exit 1
+
+if [ "$ARCH" = "x86_64" ]; then
+ # Install to lib64 instead of lib:
+ zcat $CWD/python.x86_64.diff.gz | patch -p1 --verbose || exit 1
+ # Python must report /usr/lib64/python2.6/site-packages as python_lib_dir:
+ zcat $CWD/python.pure64.diff.gz | patch -p1 --verbose || exit 1
+fi
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/python-$VERSION \
+ --with-ncurses \
+ --with-threads \
+ --enable-ipv6 \
+ --enable-shared \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG
+
+# Install some python-demo files:
+mkdir -p $PKG/usr/doc/python-$VERSION
+cp -a Demo $PKG/usr/doc/python-$VERSION
+
+# We'll install the python-tools under site-packages:
+mkdir -p $SITEPK
+cp -a Tools/* $SITEPK
+
+mkdir -p $PKG/usr/doc/python-$VERSION
+mv $SITEPK/README $PKG/usr/doc/python-$VERSION/README.python-tools
+( cd $PKG/usr/doc/python-$VERSION
+ ln -sf $TOOLSDIR Tools
+)
+# Make a few useful symlinks:
+mkdir -p $PKG/usr/bin
+( cd $PKG/usr/bin
+ ln -sf $TOOLSDIR/modulator/modulator.py modulator
+ ln -sf $TOOLSDIR/pynche/pynche pynche
+ ln -sf $TOOLSDIR/i18n/msgfmt.py .
+ ln -sf $TOOLSDIR/i18n/pygettext.py .
+)
+
+# Install docs:
+mkdir -p $PKG/usr/doc/python-$VERSION/Documentation
+cp -a README LICENSE $PKG/usr/doc/python-$VERSION
+cp -a Misc $PKG/usr/doc/python-$VERSION
+tar xf $CWD/python-$VERSION-docs-text.tar.?z*
+mv python-${VERSION}-docs-text/* $PKG/usr/doc/python-$VERSION/Documentation
+chown -R root:root $PKG/usr/doc/python-$VERSION
+
+( cd $PKG/usr/bin
+ rm -f python
+ ln -sf python2.6 python
+)
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
+)
+
+( cd $PKG/usr/man
+ find . -type f -exec gzip -9 {} \;
+ for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/python-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/python/python.pure64.diff b/source/d/python/python.pure64.diff
new file mode 100644
index 000000000..a0d06aac4
--- /dev/null
+++ b/source/d/python/python.pure64.diff
@@ -0,0 +1,32 @@
+diff -uar Python-2.6.2.orig/Lib/distutils/command/install.py Python-2.6.2/Lib/distutils/command/install.py
+--- Python-2.6.2.orig/Lib/distutils/command/install.py 2009-04-29 22:15:21.000000000 +0200
++++ Python-2.6.2/Lib/distutils/command/install.py 2009-04-29 22:14:14.000000000 +0200
+@@ -41,14 +41,14 @@
+
+ INSTALL_SCHEMES = {
+ 'unix_prefix': {
+- 'purelib': '$base/lib/python$py_version_short/site-packages',
++ 'purelib': '$base/lib64/python$py_version_short/site-packages',
+ 'platlib': '$platbase/lib64/python$py_version_short/site-packages',
+ 'headers': '$base/include/python$py_version_short/$dist_name',
+ 'scripts': '$base/bin',
+ 'data' : '$base',
+ },
+ 'unix_home': {
+- 'purelib': '$base/lib/python',
++ 'purelib': '$base/lib64/python',
+ 'platlib': '$base/lib64/python',
+ 'headers': '$base/include/python/$dist_name',
+ 'scripts': '$base/bin',
+diff -uar Python-2.6.2.orig/Lib/distutils/sysconfig.py Python-2.6.2/Lib/distutils/sysconfig.py
+--- Python-2.6.2.orig/Lib/distutils/sysconfig.py 2009-04-29 22:15:21.000000000 +0200
++++ Python-2.6.2/Lib/distutils/sysconfig.py 2009-04-29 22:14:14.000000000 +0200
+@@ -118,7 +118,7 @@
+ if plat_specific or standard_lib:
+ lib = "lib64"
+ else:
+- lib = "lib"
++ lib = "lib64"
+ libpython = os.path.join(prefix,
+ lib, "python" + get_python_version())
+ if standard_lib:
diff --git a/source/d/python/python.readline.set_pre_input_hook.diff b/source/d/python/python.readline.set_pre_input_hook.diff
new file mode 100644
index 000000000..8af4b4bed
--- /dev/null
+++ b/source/d/python/python.readline.set_pre_input_hook.diff
@@ -0,0 +1,12 @@
+--- ./Modules/readline.c.orig 2008-11-04 14:43:31.000000000 -0600
++++ ./Modules/readline.c 2009-06-09 14:23:16.000000000 -0500
+@@ -11,6 +11,9 @@
+ #include <errno.h>
+ #include <sys/time.h>
+
++/* This seems to be needed for set_pre_input_hook to work */
++#define HAVE_RL_PRE_INPUT_HOOK 1
++
+ #if defined(HAVE_SETLOCALE)
+ /* GNU readline() mistakenly sets the LC_CTYPE locale.
+ * This is evil. Only the user or the app's main() should do this!
diff --git a/source/d/python/python.x86_64.diff b/source/d/python/python.x86_64.diff
new file mode 100644
index 000000000..712a5d1bf
--- /dev/null
+++ b/source/d/python/python.x86_64.diff
@@ -0,0 +1,173 @@
+diff -uar Python-2.6.2.orig/Lib/distutils/command/install.py Python-2.6.2/Lib/distutils/command/install.py
+--- Python-2.6.2.orig/Lib/distutils/command/install.py 2008-05-07 00:41:46.000000000 +0200
++++ Python-2.6.2/Lib/distutils/command/install.py 2009-04-29 22:05:43.000000000 +0200
+@@ -42,14 +42,14 @@
+ INSTALL_SCHEMES = {
+ 'unix_prefix': {
+ 'purelib': '$base/lib/python$py_version_short/site-packages',
+- 'platlib': '$platbase/lib/python$py_version_short/site-packages',
++ 'platlib': '$platbase/lib64/python$py_version_short/site-packages',
+ 'headers': '$base/include/python$py_version_short/$dist_name',
+ 'scripts': '$base/bin',
+ 'data' : '$base',
+ },
+ 'unix_home': {
+ 'purelib': '$base/lib/python',
+- 'platlib': '$base/lib/python',
++ 'platlib': '$base/lib64/python',
+ 'headers': '$base/include/python/$dist_name',
+ 'scripts': '$base/bin',
+ 'data' : '$base',
+diff -uar Python-2.6.2.orig/Lib/distutils/sysconfig.py Python-2.6.2/Lib/distutils/sysconfig.py
+--- Python-2.6.2.orig/Lib/distutils/sysconfig.py 2009-02-10 13:33:42.000000000 +0100
++++ Python-2.6.2/Lib/distutils/sysconfig.py 2009-04-29 22:05:43.000000000 +0200
+@@ -115,8 +115,12 @@
+ prefix = plat_specific and EXEC_PREFIX or PREFIX
+
+ if os.name == "posix":
++ if plat_specific or standard_lib:
++ lib = "lib64"
++ else:
++ lib = "lib"
+ libpython = os.path.join(prefix,
+- "lib", "python" + get_python_version())
++ lib, "python" + get_python_version())
+ if standard_lib:
+ return libpython
+ else:
+diff -uar Python-2.6.2.orig/Lib/site.py Python-2.6.2/Lib/site.py
+--- Python-2.6.2.orig/Lib/site.py 2008-05-10 19:36:24.000000000 +0200
++++ Python-2.6.2/Lib/site.py 2009-04-29 22:05:43.000000000 +0200
+@@ -265,12 +265,16 @@
+ if sys.platform in ('os2emx', 'riscos'):
+ sitedirs.append(os.path.join(prefix, "Lib", "site-packages"))
+ elif os.sep == '/':
++ sitedirs.append(os.path.join(prefix, "lib64",
++ "python" + sys.version[:3],
++ "site-packages"))
+ sitedirs.append(os.path.join(prefix, "lib",
+ "python" + sys.version[:3],
+ "site-packages"))
+ sitedirs.append(os.path.join(prefix, "lib", "site-python"))
+ else:
+ sitedirs.append(prefix)
++ sitedirs.append(os.path.join(prefix, "lib64", "site-packages"))
+ sitedirs.append(os.path.join(prefix, "lib", "site-packages"))
+
+ if sys.platform == "darwin":
+diff -uar Python-2.6.2.orig/Makefile.pre.in Python-2.6.2/Makefile.pre.in
+--- Python-2.6.2.orig/Makefile.pre.in 2009-02-24 12:07:44.000000000 +0100
++++ Python-2.6.2/Makefile.pre.in 2009-04-29 22:05:43.000000000 +0200
+@@ -87,11 +87,11 @@
+
+ # Expanded directories
+ BINDIR= $(exec_prefix)/bin
+-LIBDIR= $(exec_prefix)/lib
++LIBDIR= $(exec_prefix)/lib64
+ MANDIR= @mandir@
+ INCLUDEDIR= @includedir@
+ CONFINCLUDEDIR= $(exec_prefix)/include
+-SCRIPTDIR= $(prefix)/lib
++SCRIPTDIR= $(prefix)/lib64
+
+ # Detailed destination directories
+ BINLIBDEST= $(LIBDIR)/python$(VERSION)
+diff -uar Python-2.6.2.orig/Modules/Setup.dist Python-2.6.2/Modules/Setup.dist
+--- Python-2.6.2.orig/Modules/Setup.dist 2008-11-27 11:15:12.000000000 +0100
++++ Python-2.6.2/Modules/Setup.dist 2009-04-29 22:10:31.000000000 +0200
+@@ -414,7 +414,7 @@
+ #DB=/usr/local/BerkeleyDB.4.0
+ #DBLIBVER=4.0
+ #DBINC=$(DB)/include
+-#DBLIB=$(DB)/lib
++#DBLIB=$(DB)/lib64
+ #_bsddb _bsddb.c -I$(DBINC) -L$(DBLIB) -ldb-$(DBLIBVER)
+
+ # Historical Berkeley DB 1.85
+@@ -460,7 +460,7 @@
+ # Andrew Kuchling's zlib module.
+ # This require zlib 1.1.3 (or later).
+ # See http://www.gzip.org/zlib/
+-#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
++#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib64 -lz
+
+ # Interface to the Expat XML parser
+ #
+diff -uar Python-2.6.2.orig/Modules/getpath.c Python-2.6.2/Modules/getpath.c
+--- Python-2.6.2.orig/Modules/getpath.c 2007-03-10 08:38:14.000000000 +0100
++++ Python-2.6.2/Modules/getpath.c 2009-04-29 22:05:43.000000000 +0200
+@@ -117,8 +117,8 @@
+ #endif
+
+ #ifndef PYTHONPATH
+-#define PYTHONPATH PREFIX "/lib/python" VERSION ":" \
+- EXEC_PREFIX "/lib/python" VERSION "/lib-dynload"
++#define PYTHONPATH PREFIX "/lib64/python" VERSION ":" \
++ EXEC_PREFIX "/lib64/python" VERSION "/lib-dynload"
+ #endif
+
+ #ifndef LANDMARK
+@@ -129,7 +129,7 @@
+ static char exec_prefix[MAXPATHLEN+1];
+ static char progpath[MAXPATHLEN+1];
+ static char *module_search_path = NULL;
+-static char lib_python[] = "lib/python" VERSION;
++static char lib_python[] = "lib64/python" VERSION;
+
+ static void
+ reduce(char *dir)
+@@ -524,7 +524,7 @@
+ }
+ else
+ strncpy(zip_path, PREFIX, MAXPATHLEN);
+- joinpath(zip_path, "lib/python00.zip");
++ joinpath(zip_path, "lib64/python00.zip");
+ bufsz = strlen(zip_path); /* Replace "00" with version */
+ zip_path[bufsz - 6] = VERSION[0];
+ zip_path[bufsz - 5] = VERSION[2];
+@@ -534,7 +534,7 @@
+ fprintf(stderr,
+ "Could not find platform dependent libraries <exec_prefix>\n");
+ strncpy(exec_prefix, EXEC_PREFIX, MAXPATHLEN);
+- joinpath(exec_prefix, "lib/lib-dynload");
++ joinpath(exec_prefix, "lib64/lib-dynload");
+ }
+ /* If we found EXEC_PREFIX do *not* reduce it! (Yet.) */
+
+diff -uar Python-2.6.2.orig/setup.py Python-2.6.2/setup.py
+--- Python-2.6.2.orig/setup.py 2009-03-31 20:20:48.000000000 +0200
++++ Python-2.6.2/setup.py 2009-04-29 22:05:43.000000000 +0200
+@@ -310,7 +310,7 @@
+
+ def detect_modules(self):
+ # Ensure that /usr/local is always used
+- add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
++ add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib64')
+ add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
+
+ # Add paths specified in the environment variables LDFLAGS and
+@@ -585,11 +585,11 @@
+ elif self.compiler.find_library_file(lib_dirs, 'curses'):
+ readline_libs.append('curses')
+ elif self.compiler.find_library_file(lib_dirs +
+- ['/usr/lib/termcap'],
++ ['/usr/lib64/termcap'],
+ 'termcap'):
+ readline_libs.append('termcap')
+ exts.append( Extension('readline', ['readline.c'],
+- library_dirs=['/usr/lib/termcap'],
++ library_dirs=['/usr/lib64/termcap'],
+ extra_link_args=readline_extra_link_args,
+ libraries=readline_libs) )
+ else:
+@@ -626,8 +626,8 @@
+ if krb5_h:
+ ssl_incs += krb5_h
+ ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
+- ['/usr/local/ssl/lib',
+- '/usr/contrib/ssl/lib/'
++ ['/usr/local/ssl/lib64',
++ '/usr/contrib/ssl/lib64/'
+ ] )
+
+ if (ssl_incs is not None and
diff --git a/source/d/python/slack-desc b/source/d/python/slack-desc
new file mode 100644
index 000000000..569c3c5b3
--- /dev/null
+++ b/source/d/python/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+python: python (object-oriented interpreted programming language)
+python:
+python: Python is an interpreted, interactive, object-oriented programming
+python: language that combines remarkable power with very clear syntax.
+python: Python's basic power can be extended with your own modules written in
+python: C or C++. Python is also adaptable as an extension language for
+python: existing applications.
+python:
+python:
+python:
+python:
diff --git a/source/d/rcs/rcs-5.7.diff b/source/d/rcs/rcs-5.7.diff
new file mode 100644
index 000000000..a53b351cd
--- /dev/null
+++ b/source/d/rcs/rcs-5.7.diff
@@ -0,0 +1,17 @@
+--- src/conf.sh.orig Sat Aug 12 20:25:11 1995
++++ src/conf.sh Sat Aug 12 20:25:45 1995
+@@ -77,10 +77,10 @@
+ rm -f a.d &&
+ date >a.d &&
+ chmod 0 a.d &&
+-{ test -w a.d || cp /dev/null a.d 2>/dev/null; } && {
+- echo >&3 "$n$0: This command should not be run with superuser permissions."
+- exit 1
+-}
++#{ test -w a.d || cp /dev/null a.d 2>/dev/null; } && {
++# echo >&3 "$n$0: This command should not be run with superuser permissions."
++# exit 1
++#}
+ echo >&3 OK
+ rm -f a.d || exit
+
diff --git a/source/d/rcs/rcs.SlackBuild b/source/d/rcs/rcs.SlackBuild
new file mode 100755
index 000000000..4ea46e465
--- /dev/null
+++ b/source/d/rcs/rcs.SlackBuild
@@ -0,0 +1,92 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+VERSION=5.7
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-rcs
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+# Explode the package framework:
+cd $PKG
+explodepkg $CWD/_rcs.tar.gz
+
+echo "+=========+"
+echo "| rcs-$VERSION |"
+echo "+=========+"
+cd $TMP
+rm -rf rcs-$VERSION
+tar xvf $CWD/rcs-$VERSION.tar.gz | exit 1
+cd rcs-$VERSION
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+zcat $CWD/rcs-$VERSION.diff.gz | patch -p0 || exit 1
+
+./configure --prefix=/usr
+
+make CFLAGS="$SLKCFLAGS" LDFLAGS=-s || exit 1
+
+cd src
+cat ci > $PKG/usr/bin/ci
+cat co > $PKG/usr/bin/co
+cat ident > $PKG/usr/bin/ident
+cat merge > $PKG/usr/bin/merge
+cat rcs > $PKG/usr/bin/rcs
+cat rcsclean > $PKG/usr/bin/rcsclean
+cat rcsdiff > $PKG/usr/bin/rcsdiff
+cat rcsmerge > $PKG/usr/bin/rcsmerge
+cat rcstest > $PKG/usr/bin/rcstest
+cat rlog > $PKG/usr/bin/rlog
+
+cd ../man
+for page in ci.1 co.1 ident.1 merge.1 rcs.1 rcsclean.1 rcsdiff.1 rcsfreeze.1 \
+rcsintro.1 rcsmerge.1 rlog.1 ; do
+ cat $page | gzip -9c > $PKG/usr/man/man1/$page.gz
+done
+cat rcsfile.5 | gzip -9c > $PKG/usr/man/man5/rcsfile.5.gz
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/rcs-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/rcs/slack-desc b/source/d/rcs/slack-desc
new file mode 100644
index 000000000..b8d62a08c
--- /dev/null
+++ b/source/d/rcs/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+rcs: rcs (Revision Control System)
+rcs:
+rcs: RCS, the Revision Control System, manages multiple revisions of files.
+rcs:
+rcs: RCS can store, retrieve, log, identify, and merge revisions. It is
+rcs: useful for files that are revised frequently, e.g. programs,
+rcs: documentation, graphics, and papers.
+rcs:
+rcs:
+rcs:
+rcs:
diff --git a/source/d/ruby/ruby.SlackBuild b/source/d/ruby/ruby.SlackBuild
new file mode 100755
index 000000000..96234b8ff
--- /dev/null
+++ b/source/d/ruby/ruby.SlackBuild
@@ -0,0 +1,108 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+
+VERSION=1.8.7-p174
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-ruby
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf ruby-$VERSION
+tar xvf $CWD/ruby-$VERSION.tar.?z* || exit 1
+cd ruby-$VERSION || exit 1
+
+if [ "$ARCH" = "x86_64" ]; then
+ zcat $CWD/ruby.x86_64.diff.gz | patch -p1 --verbose || exit 1
+fi
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Evidently certain things must be linked static.
+# Seems suboptimal to me...
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --datadir=/usr/share \
+ --docdir=/usr/doc/ruby-$VERSION \
+ --enable-shared \
+ --enable-install-doc \
+ --enable-static \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+mkdir -p $PKG/usr/doc/ruby-$VERSION
+cp -a \
+ COPYING* *GPL* LEGAL NEWS README* ToDo \
+ $PKG/usr/doc/ruby-$VERSION
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress and if needed symlink the man pages:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/ruby-$(echo $VERSION | tr - _)-$ARCH-$BUILD.txz
+
diff --git a/source/d/ruby/ruby.x86_64.diff b/source/d/ruby/ruby.x86_64.diff
new file mode 100644
index 000000000..c557546d7
--- /dev/null
+++ b/source/d/ruby/ruby.x86_64.diff
@@ -0,0 +1,11 @@
+--- ruby-1.8.7-p160.orig/mkconfig.rb 2008-06-06 12:39:57.000000000 +0200
++++ ruby-1.8.7-p160/mkconfig.rb 2009-04-29 20:33:58.000000000 +0200
+@@ -102,7 +102,7 @@
+
+ drive = File::PATH_SEPARATOR == ';'
+
+-prefix = '/lib/ruby/' + RUBY_VERSION.sub(/\.\d+$/, '') + '/' + RUBY_PLATFORM
++prefix = '/lib64/ruby/' + RUBY_VERSION.sub(/\.\d+$/, '') + '/' + RUBY_PLATFORM
+ print " TOPDIR = File.dirname(__FILE__).chomp!(#{prefix.dump})\n"
+ print " DESTDIR = ", (drive ? "TOPDIR && TOPDIR[/\\A[a-z]:/i] || " : ""), "'' unless defined? DESTDIR\n"
+ print " CONFIG = {}\n"
diff --git a/source/d/ruby/slack-desc b/source/d/ruby/slack-desc
new file mode 100644
index 000000000..13ffd7a3d
--- /dev/null
+++ b/source/d/ruby/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+ruby: ruby (Interpreted object-oriented scripting language)
+ruby:
+ruby: Ruby is an interpreted scripting language for quick and easy
+ruby: object-oriented programming. It has many features to process text
+ruby: files and to do system management tasks (as in Perl). It is simple,
+ruby: straight-forward, and extensible.
+ruby:
+ruby: Visit the Ruby project online at http://www.ruby-lang.org/
+ruby:
+ruby:
+ruby:
diff --git a/source/d/strace/slack-desc b/source/d/strace/slack-desc
new file mode 100644
index 000000000..9f6d01c88
--- /dev/null
+++ b/source/d/strace/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+strace: strace (trace system calls and signals)
+strace:
+strace: Strace allows you to trace the execution of a command. It runs the
+strace: specified command until it exits, intercepting signals and system
+strace: calls and dumping the information to the standard error. System
+strace: administrators, diagnosticians and trouble-shooters will find it
+strace: invaluable for solving problems with programs for which the source
+strace: is not readily available since they do not need to be recompiled in
+strace: order to trace them.
+strace:
+strace:
diff --git a/source/d/strace/strace.SlackBuild b/source/d/strace/strace.SlackBuild
new file mode 100755
index 000000000..18affdaa7
--- /dev/null
+++ b/source/d/strace/strace.SlackBuild
@@ -0,0 +1,80 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+VERSION=4.5.18
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-strace
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf strace-$VERSION
+tar xvf $CWD/strace-$VERSION.tar.bz2 || exit 1
+cd strace-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --mandir=/usr/man \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+strip $PKG/usr/bin/strace
+
+mkdir -p $PKG/usr/doc/strace-$VERSION
+cp -a \
+ COPYRIGHT CREDITS NEWS PORTING \
+ README README-CVS README-freebsd README-linux README-sunos4 README-svr4 TODO \
+ $PKG/usr/doc/strace-$VERSION
+chmod 644 $PKG/usr/doc/strace-$VERSION/*
+
+gzip -9 $PKG/usr/man/man1/strace.1
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/strace-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/subversion/get-svn-book.sh b/source/d/subversion/get-svn-book.sh
new file mode 100755
index 000000000..112ba17c3
--- /dev/null
+++ b/source/d/subversion/get-svn-book.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+CWD=`pwd`
+
+# Add the latest copy of the Subversion book:
+( cd $CWD
+ lftpget http://svnbook.red-bean.com/nightly/en/svn-book-html.tar.bz2
+ chmod 644 svn-book-html.tar.bz2
+)
+
diff --git a/source/d/subversion/slack-desc b/source/d/subversion/slack-desc
new file mode 100644
index 000000000..935a52212
--- /dev/null
+++ b/source/d/subversion/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+subversion: subversion (a version control system)
+subversion:
+subversion: Subversion is a version control system which allows you to keep old
+subversion: versions of files and directories (usually source code), and keep a
+subversion: log of who, when, and why changes occurred, similar to other such
+subversion: systems like CVS, RCS or SCCS. Subversion keeps all the information
+subversion: to permit extracting previous versions of those files at any time.
+subversion:
+subversion: For more information about the Subversion project, visit:
+subversion: http://subversion.tigris.org
+subversion:
diff --git a/source/d/subversion/subversion.SlackBuild b/source/d/subversion/subversion.SlackBuild
new file mode 100755
index 000000000..87a7114e0
--- /dev/null
+++ b/source/d/subversion/subversion.SlackBuild
@@ -0,0 +1,161 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+
+VERSION=1.6.4
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-subversion
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf subversion-$VERSION
+tar xvf $CWD/subversion-$VERSION.tar.xz || exit 1
+cd subversion-$VERSION || exit 1
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/subversion-$VERSION \
+ --enable-shared \
+ --disable-static \
+ --with-apr=/usr \
+ --with-apr-util=/usr \
+ --with-apxs=/usr/sbin/apxs \
+ --with-neon=/usr \
+ --with-zlib=/usr \
+ --with-pic \
+ --with-ssl \
+ --with-kwallet \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+make install-docs DESTDIR=$PKG || exit 1
+
+# Install python bindings
+make swig-py
+make install-swig-py DESTDIR=$PKG
+PYTHON_VER=$(python -c 'import sys; print "%d.%d" % sys.version_info[:2]')
+mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/python${PYTHON_VER}/site-packages
+mv $PKG/usr/lib${LIBDIRSUFFIX}/svn-python/* \
+ $PKG/usr/lib${LIBDIRSUFFIX}/python${PYTHON_VER}/site-packages
+rmdir $PKG/usr/lib${LIBDIRSUFFIX}/svn-python
+
+# Perl bindings
+make swig-pl-lib
+make install-swig-pl-lib DESTDIR=$PKG
+( cd subversion/bindings/swig/perl/native
+ perl Makefile.PL
+ make install_vendor DESTDIR=$PKG
+)
+eval $(perl '-V:archlib')
+mv $PKG/$archlib/perllocal.pod $PKG/$archlib/subversion.pod
+
+# Ruby bindings
+make swig-rb
+make install-swig-rb DESTDIR=$PKG
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+rm -rf $PKG/usr/info
+# Something doesn't honor --mandir
+mv $PKG/usr/share/man/man3 $PKG/usr/man
+gzip -9 $PKG/usr/man/man?/*
+rmdir $PKG/usr/share/man
+
+# What is this junk for? Since I don't know, I'll erase it. :-)
+rm -rf $PKG/usr/build
+
+mkdir -p $PKG/usr/doc/subversion-$VERSION
+cp -a \
+ BUGS CHANGES COMMITTERS COPYING* HACKING INSTALL README TRANSLATING doc \
+ $PKG/usr/doc/subversion-$VERSION
+# too big && useless for most || if you think not, can be found in the source tarball
+rm -rf $PKG/usr/doc/subversion-$VERSION/doc/tools
+# Add the HTML svn book:
+( cd $PKG/usr/doc/subversion-$VERSION
+ tar xf $CWD/svn-book-html.tar.bz2
+ mv svn-book-html book
+ cd book
+ chown -R root:root .
+ find . -type d -exec chmod 0755 {} \;
+ find . -type f -exec chmod 0644 {} \;
+ find . -perm 2755 -exec chmod 0755 {} \;
+ find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+)
+
+# This removes our DESTDIR from the packlist filenames, to keep perl's
+# internal inventories consistent and correct.
+find $PKG -name .packlist | while read plist ; do
+ sed -e "s%/share/man%/man%g" \
+ -e "s%$PKG%%g" \
+ -e "s%\.1$%\.1\.gz%g" \
+ -e "s%\.2$%\.2\.gz%g" \
+ -e "s%\.3$%\.3\.gz%g" \
+ -e "s%\.3pm$%\.3pm\.gz%g" \
+ -e "s%\.4$%\.4\.gz%g" \
+ -e "s%\.5$%\.5\.gz%g" \
+ -e "s%\.6$%\.6\.gz%g" \
+ -e "s%\.7$%\.7\.gz%g" \
+ -e "s%\.8$%\.8\.gz%g" \
+ ${plist} > ${plist}.new
+ mv -f ${plist}.new ${plist}
+done
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/subversion-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/d/swig/slack-desc b/source/d/swig/slack-desc
new file mode 100644
index 000000000..189d275a2
--- /dev/null
+++ b/source/d/swig/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler--------------------------------------------------------|
+swig: swig (Simplified Wrapper and Interface Generator)
+swig:
+swig: SWIG is an interface compiler that connects programs written in C and
+swig: C++ with scripting languages such as Perl, Python, Ruby, and Tcl. It
+swig: works by taking the declarations found in C/C++ header files and using
+swig: them to generate the wrapper code that scripting languages need to
+swig: access the underlying C/C++ code. In addition, SWIG provides a variety
+swig: of customization features that let you tailor the wrapping process to
+swig: suit your application.
+swig:
+swig:
diff --git a/source/d/swig/swig.SlackBuild b/source/d/swig/swig.SlackBuild
new file mode 100755
index 000000000..44f3d53f0
--- /dev/null
+++ b/source/d/swig/swig.SlackBuild
@@ -0,0 +1,103 @@
+#!/bin/sh
+
+# Copyright 2009 Robby Workman, Northport, Alabama, USA
+# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''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 AUTHOR 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.
+
+VERSION=1.3.38
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=${PKG:-$TMP/package-swig}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+NUMJOBS=${NUMJOBS:--j6}
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf swig-$VERSION
+tar xvf $CWD/swig-$VERSION.tar.bz2
+cd swig-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --mandir=/usr/man \
+ --exec-prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null || true
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
+)
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+mkdir -p $PKG/usr/doc/swig-$VERSION
+cp -a \
+ ANNOUNCE CHANGES* COPYING* FUTURE INSTALL LICENSE NEW README TODO \
+ Examples Doc/Manual Doc/Devel \
+ $PKG/usr/doc/swig-$VERSION
+# Fix permissions and wipe the pdf bloat
+find $PKG/usr/doc/swig-$VERSION -type f -exec chmod 0644 {} \;
+find $PKG/usr/doc/swig-$VERSION -name "*.pdf" -exec rm -f {} \;
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/swig-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/d/swig/swig.url b/source/d/swig/swig.url
new file mode 100644
index 000000000..78023e2df
--- /dev/null
+++ b/source/d/swig/swig.url
@@ -0,0 +1 @@
+http://downloads.sourceforge.net/swig/swig-${version}.tar.gz