* [Buildroot] [PATCH 1/4] package/qemu: fix host-qemu variable names
From: Peter Korsgaard @ 2012-12-13 23:52 UTC (permalink / raw)
To: buildroot
In-Reply-To: <ef84613fdc32788b96df51eb2c074c547424ac9c.1355434710.git.yann.morin.1998@free.fr>
>>>>> "Yann" == Yann E MORIN <yann.morin.1998@free.fr> writes:
Yann> With the upcoming introduction of qemu-on-target, we need to properly
Yann> separate the variables used for the host qemu, from the variables
Yann> used for the target qemu.
Committed, thanks.
--
Bye, Peter Korsgaard
^ permalink raw reply
* [Buildroot] [git commit] package/qemu: fix host dependencies
From: Peter Korsgaard @ 2012-12-13 23:51 UTC (permalink / raw)
To: buildroot
commit: http://git.buildroot.net/buildroot/commit/?id=3a489f1ac87ea86c760271b516419fb81bbfc83d
branch: http://git.buildroot.net/buildroot/commit/?id=refs/heads/master
'host-*' packages should depends on other 'host-*' packages,
not on target packages.
Reported-by: Arnout Vandecappelle <arnout@mind.be>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Francois Perrad <fperrad@gmail.com>
Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
---
package/qemu/qemu.mk | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/package/qemu/qemu.mk b/package/qemu/qemu.mk
index 81cd79f..2c0dbde 100644
--- a/package/qemu/qemu.mk
+++ b/package/qemu/qemu.mk
@@ -16,7 +16,7 @@ QEMU_LICENSE_FILES = COPYING COPYING.LIB
#-------------------------------------------------------------
# Host-qemu
-HOST_QEMU_DEPENDENCIES = host-pkgconf zlib libglib2
+HOST_QEMU_DEPENDENCIES = host-pkgconf host-zlib host-libglib2
# BR ARCH qemu
# ------- ----
^ permalink raw reply related
* [Buildroot] [git commit] package/qemu: fix host-qemu variable names
From: Peter Korsgaard @ 2012-12-13 23:51 UTC (permalink / raw)
To: buildroot
commit: http://git.buildroot.net/buildroot/commit/?id=6f7884c81461bdb35ff47da9cd84c8a8ca5d57cb
branch: http://git.buildroot.net/buildroot/commit/?id=refs/heads/master
With the upcoming introduction of qemu-on-target, we need to properly
separate the variables used for the host qemu, from the variables
used for the target qemu.
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Francois Perrad <fperrad@gmail.com>
Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
---
package/qemu/qemu.mk | 25 ++++++++++++++-----------
1 files changed, 14 insertions(+), 11 deletions(-)
diff --git a/package/qemu/qemu.mk b/package/qemu/qemu.mk
index 790d34f..81cd79f 100644
--- a/package/qemu/qemu.mk
+++ b/package/qemu/qemu.mk
@@ -13,7 +13,10 @@ QEMU_LICENSE_FILES = COPYING COPYING.LIB
# the non-(L)GPL license texts are specified in the affected
# individual source files.
-QEMU_DEPENDENCIES = host-pkgconf zlib libglib2
+#-------------------------------------------------------------
+# Host-qemu
+
+HOST_QEMU_DEPENDENCIES = host-pkgconf zlib libglib2
# BR ARCH qemu
# ------- ----
@@ -44,20 +47,20 @@ QEMU_DEPENDENCIES = host-pkgconf zlib libglib2
# sh64 not supported
# sparc sparc
-QEMU_ARCH = $(ARCH)
-ifeq ($(QEMU_ARCH),i486)
- QEMU_ARCH = i386
+HOST_QEMU_ARCH = $(ARCH)
+ifeq ($(HOST_QEMU_ARCH),i486)
+ HOST_QEMU_ARCH = i386
endif
-ifeq ($(QEMU_ARCH),i586)
- QEMU_ARCH = i386
+ifeq ($(HOST_QEMU_ARCH),i586)
+ HOST_QEMU_ARCH = i386
endif
-ifeq ($(QEMU_ARCH),i686)
- QEMU_ARCH = i386
+ifeq ($(HOST_QEMU_ARCH),i686)
+ HOST_QEMU_ARCH = i386
endif
-ifeq ($(QEMU_ARCH),powerpc)
- QEMU_ARCH = ppc
+ifeq ($(HOST_QEMU_ARCH),powerpc)
+ HOST_QEMU_ARCH = ppc
endif
-HOST_QEMU_TARGETS=$(QEMU_ARCH)-linux-user
+HOST_QEMU_TARGETS=$(HOST_QEMU_ARCH)-linux-user
define HOST_QEMU_CONFIGURE_CMDS
(cd $(@D); $(HOST_CONFIGURE_OPTS) ./configure \
^ permalink raw reply related
* [Buildroot] [PATCH v2] jpeg-turbo: new package
From: Peter Korsgaard @ 2012-12-13 23:06 UTC (permalink / raw)
To: buildroot
In-Reply-To: <1338741144-14029-1-git-send-email-mdemirten@yh.com.tr>
>>>>> "Murat" == Murat Demirten <mdemirten@yh.com.tr> writes:
Murat> INSTALL_STAGING = YES added into this version.
Murat> Signed-off-by: Murat Demirten <mdemirten@yh.com.tr>
Sorry for the slow response. Committed with some fixups/simplifications
- Thanks.
--
Bye, Peter Korsgaard
^ permalink raw reply
* [Buildroot] [git commit] package: add selection between libjpeg and jpeg-turbo
From: Peter Korsgaard @ 2012-12-13 23:03 UTC (permalink / raw)
To: buildroot
commit: http://git.buildroot.net/buildroot/commit/?id=21dd3e777b5b9eb40c6e0fe9fadcf0c7fcc63901
branch: http://git.buildroot.net/buildroot/commit/?id=refs/heads/master
Introduce a virtual 'jpeg' package, which pulls in either libjpeg or
jpeg-turbo depending on a choice selection.
Rename jpeg package to libjpeg so we can reuse 'jpeg' for the virtual
package, making the change transparent to existing users and all the
packages using libjpeg.
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
---
package/Config.in | 1 -
package/jpeg-turbo/Config.in | 9 ---------
package/jpeg/Config.in | 27 +++++++++++++++++++++++++++
package/jpeg/jpeg.mk | 15 +++------------
package/libjpeg/libjpeg.mk | 19 +++++++++++++++++++
5 files changed, 49 insertions(+), 22 deletions(-)
diff --git a/package/Config.in b/package/Config.in
index 7358d93..cad1221 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -391,7 +391,6 @@ source "package/gtk2-engines/Config.in"
source "package/gtk2-themes/Config.in"
source "package/imlib2/Config.in"
source "package/jpeg/Config.in"
-source "package/jpeg-turbo/Config.in"
source "package/libart/Config.in"
source "package/libdmtx/Config.in"
source "package/libdrm/Config.in"
diff --git a/package/jpeg-turbo/Config.in b/package/jpeg-turbo/Config.in
deleted file mode 100644
index 19765b0..0000000
--- a/package/jpeg-turbo/Config.in
+++ /dev/null
@@ -1,9 +0,0 @@
-config BR2_PACKAGE_JPEG_TURBO
- bool "jpeg-turbo"
- help
- Libjpeg-turbo is a derivative of libjpeg that uses SIMD
- instructions (MMX, SSE2, NEON) to accelerate baseline JPEG
- compression and decompression on x86, x86-64, and ARM
- systems.
-
- http://www.libjpeg-turbo.org
diff --git a/package/jpeg/Config.in b/package/jpeg/Config.in
index 36d73c5..9508faf 100644
--- a/package/jpeg/Config.in
+++ b/package/jpeg/Config.in
@@ -1,6 +1,33 @@
config BR2_PACKAGE_JPEG
+ bool "jpeg support"
+ help
+ Select the desired JPEG library provider.
+
+if BR2_PACKAGE_JPEG
+
+choice
+ prompt "jpeg variant"
+ default BR2_PACKAGE_JPEG_TURBO if (BR2_X86_CPU_HAS_MMX || BR2_ARM_CPU_HAS_NEON)
+ help
+ Select the older stable version, or the newer developer version
+
+config BR2_PACKAGE_LIBJPEG
bool "jpeg"
help
The ubiquitous C library for manipulating JPEG images.
http://www.ijg.org/
+
+config BR2_PACKAGE_JPEG_TURBO
+ bool "jpeg-turbo"
+ help
+ Libjpeg-turbo is a derivative of libjpeg that uses SIMD
+ instructions (MMX, SSE2, NEON) to accelerate baseline JPEG
+ compression and decompression on x86, x86-64, and ARM
+ systems.
+
+ http://www.libjpeg-turbo.org
+
+endchoice
+
+endif
diff --git a/package/jpeg/jpeg.mk b/package/jpeg/jpeg.mk
index d7ef25a..9f40e6f 100644
--- a/package/jpeg/jpeg.mk
+++ b/package/jpeg/jpeg.mk
@@ -1,18 +1,9 @@
#############################################################
#
-# jpeg (libraries needed by some apps)
+# jpeg
#
#############################################################
-JPEG_VERSION = 8d
-JPEG_SITE = http://www.ijg.org/files/
-JPEG_SOURCE = jpegsrc.v$(JPEG_VERSION).tar.gz
-JPEG_INSTALL_STAGING = YES
-define JPEG_REMOVE_USELESS_TOOLS
- rm -f $(addprefix $(TARGET_DIR)/usr/bin/,cjpeg djpeg jpegtrans rdjpgcom wrjpgcom)
-endef
+jpeg: $(if $(BR2_PACKAGE_JPEG_TURBO),jpeg-turbo,libjpeg)
-JPEG_POST_INSTALL_TARGET_HOOKS += JPEG_REMOVE_USELESS_TOOLS
-
-$(eval $(autotools-package))
-$(eval $(host-autotools-package))
+host-jpeg: host-libjpeg
diff --git a/package/libjpeg/libjpeg.mk b/package/libjpeg/libjpeg.mk
new file mode 100644
index 0000000..0df2b3a
--- /dev/null
+++ b/package/libjpeg/libjpeg.mk
@@ -0,0 +1,19 @@
+#############################################################
+#
+# libjpeg (libraries needed by some apps)
+#
+#############################################################
+
+LIBJPEG_VERSION = 8d
+LIBJPEG_SITE = http://www.ijg.org/files/
+LIBJPEG_SOURCE = jpegsrc.v$(LIBJPEG_VERSION).tar.gz
+LIBJPEG_INSTALL_STAGING = YES
+
+define LIBJPEG_REMOVE_USELESS_TOOLS
+ rm -f $(addprefix $(TARGET_DIR)/usr/bin/,cjpeg djpeg jpegtrans rdjpgcom wrjpgcom)
+endef
+
+LIBJPEG_POST_INSTALL_TARGET_HOOKS += LIBJPEG_REMOVE_USELESS_TOOLS
+
+$(eval $(autotools-package))
+$(eval $(host-autotools-package))
^ permalink raw reply related
* [Buildroot] Getting It into Compact Flash
From: Arnout Vandecappelle @ 2012-12-13 23:02 UTC (permalink / raw)
To: buildroot
In-Reply-To: <20121213220434.GA819@mail.sceen.net>
On 13/12/12 23:04, Richard Braun wrote:
> On Thu, Dec 13, 2012 at 10:37:19PM +0100, Arnout Vandecappelle wrote:
>> - if you use anything else than static device management, the devtmps
>> will not be mounted automatically by the kernel; the cpio filesystem
>> adds a /init script that mounts it for you.
>
> The kernel has provided the ability to automatically mount devtmpfs for
> quite some time now. He just needs to make sure the option is selected
> in the kernel configuration.
But it doesn't automount devtmpfs when the initramfs is mounted. That's
why fs/cpio/init exists.
(Come to think of it, it is possible that an ext2 initrd is not
considered the same as an initramfs and the kernel _will_ mount devtmpfs
- I'm not sure).
Regards,
Arnout
--
Arnout Vandecappelle arnout at mind be
Senior Embedded Software Architect +32-16-286540
Essensium/Mind http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
^ permalink raw reply
* [Buildroot] [PATCH 2/4] package/qemu: fix host dependencies
From: Arnout Vandecappelle @ 2012-12-13 22:57 UTC (permalink / raw)
To: buildroot
In-Reply-To: <f3379896be4cbb7b0c1348fb207ecd6696702842.1355434710.git.yann.morin.1998@free.fr>
On 13/12/12 22:39, Yann E. MORIN wrote:
> 'host-*' packages should depends on other 'host-*' packages,
> not on target packages.
>
> Reported-by: Arnout Vandecappelle<arnout@mind.be>
> Signed-off-by: "Yann E. MORIN"<yann.morin.1998@free.fr>
> Cc: Francois Perrad<fperrad@gmail.com>
Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
--
Arnout Vandecappelle arnout at mind be
Senior Embedded Software Architect +32-16-286540
Essensium/Mind http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
^ permalink raw reply
* [Buildroot] [PATCH 1/4] package/qemu: fix host-qemu variable names
From: Arnout Vandecappelle @ 2012-12-13 22:56 UTC (permalink / raw)
To: buildroot
In-Reply-To: <ef84613fdc32788b96df51eb2c074c547424ac9c.1355434710.git.yann.morin.1998@free.fr>
On 13/12/12 22:39, Yann E. MORIN wrote:
> With the upcoming introduction of qemu-on-target, we need to properly
> separate the variables used for the host qemu, from the variables
> used for the target qemu.
>
> Signed-off-by: "Yann E. MORIN"<yann.morin.1998@free.fr>
> Cc: Francois Perrad<fperrad@gmail.com>
Didn't I already give my
Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
?
Regards,
Arnout
--
Arnout Vandecappelle arnout at mind be
Senior Embedded Software Architect +32-16-286540
Essensium/Mind http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
^ permalink raw reply
* [Buildroot] [PATCH] Fix xenomai build with Linaro toolchain
From: Arnout Vandecappelle @ 2012-12-13 22:54 UTC (permalink / raw)
To: buildroot
In-Reply-To: <50CA5162.8090304@wanadoo.fr>
On 13/12/12 23:06, Thierry Bultel wrote:
> This fixes the build with toolchains that have -mthumb by default
> (Not supported by xenomai yet)
>
>
> Signed-off-by: thierry.bultel at wanadoo.fr
> --- xenomai.mk 2012-12-13 22:48:05.841982812 +0100
> +++ xenomai.mk.orig 2012-12-13 23:01:13.473982051 +0100
This won't apply with git am. Could you create the patch with
git send-email?
> @@ -24,6 +23,12 @@
>
> XENOMAI_CONF_OPT += --includedir=/usr/include/xenomai/
>
> +XENOMAI_CONF_ENV = \
> + CFLAGS="$(TARGET_CFLAGS) -marm"
Wouldn't it be a good idea to make this conditional on BR2_arm? :-)
I would also use XENOMAI_CONF_ENV +=, easier for the future.
> +
> +XENOMAI_MAKE_ENV = \
> + CFLAGS="$(TARGET_CFLAGS) -marm"
Is this needed? Should be enough to do it in the CONF_ENV because
the CFLAGS are directly replaced in the Makefiles...
Regards,
Arnout
> +
> ifeq ($(BR2_HAVE_DEVFILES),)
> define XENOMAI_REMOVE_DEVFILES
> for i in xeno-config xeno-info wrap-link.sh ; do \
--
Arnout Vandecappelle arnout at mind be
Senior Embedded Software Architect +32-16-286540
Essensium/Mind http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
^ permalink raw reply
* [Buildroot] [pull request] Pull request for branch yem-new-packages
From: Arnout Vandecappelle @ 2012-12-13 22:45 UTC (permalink / raw)
To: buildroot
In-Reply-To: <cover.1355435224.git.yann.morin.1998@free.fr>
On 13/12/12 22:47, Yann E. MORIN wrote:
> This patch series is an extract from my qemu-related big-ish series,
> that I did split up to ease regview / integration upstream.
Thanks, that's really useful!
Now I just have to find some time to review...
Regards,
Arnout
--
Arnout Vandecappelle arnout at mind be
Senior Embedded Software Architect +32-16-286540
Essensium/Mind http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
^ permalink raw reply
* [Buildroot] [PATCH] Add package for mongoose web server
From: Arnout Vandecappelle @ 2012-12-13 22:42 UTC (permalink / raw)
To: buildroot
In-Reply-To: <1355349796-4165-1-git-send-email-cdhmanning@gmail.com>
Hi Charles,
On 12/12/12 23:03, Charles Manning wrote:
> Signed-off-by: Charles Manning<cdhmanning@gmail.com>
[snip]
> diff --git a/package/mongoose/Config.in b/package/mongoose/Config.in
> new file mode 100644
> index 0000000..39806f9
> --- /dev/null
> +++ b/package/mongoose/Config.in
> @@ -0,0 +1,13 @@
> +config BR2_PACKAGE_MONGOOSE
> + bool "mongoose wen server"
All other web servers just give their name, so:
bool "mongoose"
Missing:
depends on BR2_TOOLCHAIN_HAS_THREADS
depends on BR2_USE_WCHAR
> + help
> + Mongoose small web server
> +
> + https://github.com/valenok/mongoose
> +
> +config BR2_PACKAGE_MONGOOSE_NO_PUT_AUTH
> + bool "Disable PUT authorization"
> + depends on BR2_PACKAGE_MONGOOSE
> + default n
default n is redundant because it is the default.
I prefer package-specific extra options to be wrapped in a if...endif
instead of using 'depends on'.
> + help
> + Sometimes you don't need PUT authorization.
[snip]
> diff --git a/package/mongoose/mongoose-3.3-no-auth.patch b/package/mongoose/mongoose-3.3-no-auth.patch
> new file mode 100644
> index 0000000..a470f5e
> --- /dev/null
> +++ b/package/mongoose/mongoose-3.3-no-auth.patch
> @@ -0,0 +1,55 @@
> +From db714636f86d79be33ffe8f2408c8731b5969208 Mon Sep 17 00:00:00 2001
> +From: Charles Manning<cdhmanning@gmail.com>
> +Date: Mon, 10 Dec 2012 10:14:20 +1300
> +Subject: [PATCH] Add NO_PUT_AUTH option to allow put with not authorization
> +
> +Sometimes you really don't want the security.
> +
> +Signed-off-by: Charles Manning<cdhmanning@gmail.com>
Although this is a useful addition, it's really a new feature and not
a cross-compilation fix. We normally don't include new features in buildroot
patches.
Could you upstream this patch? Sergey is pretty quick with accepting patches.
[snip]
> diff --git a/package/mongoose/mongoose.mk b/package/mongoose/mongoose.mk
> new file mode 100644
> index 0000000..ef06f41
> --- /dev/null
> +++ b/package/mongoose/mongoose.mk
> @@ -0,0 +1,38 @@
> +# Package for mongoose web server.
> +# This has been patched with an extension to allow PUT with no authorization.
> +#
Although on the last buildroot developer meeting some doubts were voices
about its usefulness, the rule is still that the .mk file should have the
following header:
#############################################################
#
# mongoose
#
#############################################################
> +MONGOOSE_VERSION = 3.3
> +MONGOOSE_SITE = http://github.com/valenok/mongoose/tarball/master
> +MONGOOSE_LICENSE = MIT
> +MONGOOSE_LICENSE_FILES = COPYING
> +MONGOOSE_INSTALL_STAGING = YES
Why install in staging? You're not installing libraries or headers.
That said, mongoose is often used as an embedded web server, so it
would be useful to have the option to:
- install the library and include file in staging;
- not install the executable and init script to target.
But it's OK if you're not ready to do this; in that case, just
remove the INSTALL_STAGING line.
> +MONGOOSE_INSTALL_TARGET = YES
This is the default.
> +
> +MONGOOSE_OPTIONAL_DEFINES = -DNO_SSL
Ideally, SSL should be enabled if BR2_PACKAGE_OPENSSL is y.
Adding support for HAVE_MD5, NDEBUG, NO_CGI and USE_LUA would also be
nice.
> +ifeq ($(BR2_PACKAGE_MONGOOSE_NO_PUT_AUTH),y)
> +MONGOOSE_OPTIONAL_DEFINES += -DNO_PUT_AUTH
If the patch is removed then obviously this should also be removed.
> +endif
> +
> +define MONGOOSE_BUILD_CMDS
> + $(MAKE) CC="$(TARGET_CC)" LD="$TARGETLD)" -C $(@D) linux COPT="$(MONGOOSE_OPTIONAL_DEFINES)"
Missing ( in $(TARGET_LD). But the Makefile doesn't use LD so it's
redundant.
TARGET_CFLAGS and TARGET_LDFLAGS should also be passed - but mongoose's
Makefile doesn't support that. Your options are:
- Patch the Makefile to use CFLAGS += instead of CFLAGS =; if you do that,
also rename LINFLAGS to LDFLAGS, and use += instead of = for that as well.
And of course upstream this patch.
- Add TARGET_CFLAGS to COPT. You could also ad TARGET_LDFLAGS because
there is anyway no object file compilation, but it's not ideal. If you
leave out TARGET_LDFLAGS it's not such a big deal anyway because it's
not often used.
- Don't use the Makefile, but just run:
cd $(@D); $(TARGET_CC) $(TARGET_CFLAGS) mongoose.c main.c \
$(TARGET_LDFLAGS) -ldl -pthread
> +endef
> +
> +define MONGOOSE_INSTALL_STAGING_CMDS
> + $(INSTALL) -d $(STAGING_DIR)/sbin
> + $(INSTALL) -d $(STAGING_DIR)/etc
> + $(INSTALL) -d $(STAGING_DIR)/etc/init.d
> + $(INSTALL) -D -m 755 $(@D)/mongoose $(STAGING_DIR)/sbin/mongoose
> + $(INSTALL) -D -m 755 $(@D)/mongoose.init $(STAGING_DIR)/etc/init.d/mongoose
Neither of these should be installed in staging. As I said earlier, it does
make sense to install the header and the .so.
> +endef
> +
> +define MONGOOSE_INSTALL_TARGET_CMDS
> + $(INSTALL) -d $(TARGET_DIR)/sbin
> + $(INSTALL) -d $(TARGET_DIR)/etc
> + $(INSTALL) -d $(TARGET_DIR)/etc/init.d
The install -D below already creates the directories, so these three are redundant.
> + $(INSTALL) -D -m 755 $(@D)/mongoose $(TARGET_DIR)/sbin/mongoose
> + $(INSTALL) -D -m 755 $(@D)/mongoose.init $(TARGET_DIR)/etc/init.d/mongoose
> +endef
> +
> +
> +$(eval $(generic-package))
> +
Redundant empty line.
Regards,
Arnout
--
Arnout Vandecappelle arnout at mind be
Senior Embedded Software Architect +32-16-286540
Essensium/Mind http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
^ permalink raw reply
* [Buildroot] [git commit] jpeg-turbo: new package
From: Peter Korsgaard @ 2012-12-13 22:25 UTC (permalink / raw)
To: buildroot
commit: http://git.buildroot.net/buildroot/commit/?id=39348d803bda0c0f33805b06d302669293e4d38a
branch: http://git.buildroot.net/buildroot/commit/?id=refs/heads/master
[Peter: Various cleanups/fixes/simplifications]
Signed-off-by: Murat Demirten <mdemirten@yh.com.tr>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
---
package/Config.in | 1 +
package/jpeg-turbo/Config.in | 9 +++++++++
package/jpeg-turbo/jpeg-turbo.mk | 27 +++++++++++++++++++++++++++
3 files changed, 37 insertions(+), 0 deletions(-)
diff --git a/package/Config.in b/package/Config.in
index cad1221..7358d93 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -391,6 +391,7 @@ source "package/gtk2-engines/Config.in"
source "package/gtk2-themes/Config.in"
source "package/imlib2/Config.in"
source "package/jpeg/Config.in"
+source "package/jpeg-turbo/Config.in"
source "package/libart/Config.in"
source "package/libdmtx/Config.in"
source "package/libdrm/Config.in"
diff --git a/package/jpeg-turbo/Config.in b/package/jpeg-turbo/Config.in
new file mode 100644
index 0000000..19765b0
--- /dev/null
+++ b/package/jpeg-turbo/Config.in
@@ -0,0 +1,9 @@
+config BR2_PACKAGE_JPEG_TURBO
+ bool "jpeg-turbo"
+ help
+ Libjpeg-turbo is a derivative of libjpeg that uses SIMD
+ instructions (MMX, SSE2, NEON) to accelerate baseline JPEG
+ compression and decompression on x86, x86-64, and ARM
+ systems.
+
+ http://www.libjpeg-turbo.org
diff --git a/package/jpeg-turbo/jpeg-turbo.mk b/package/jpeg-turbo/jpeg-turbo.mk
new file mode 100644
index 0000000..19a0292
--- /dev/null
+++ b/package/jpeg-turbo/jpeg-turbo.mk
@@ -0,0 +1,27 @@
+#############################################################
+#
+# jpeg-turbo
+#
+#############################################################
+
+JPEG_TURBO_VERSION = 1.2.1
+JPEG_TURBO_SOURCE = libjpeg-turbo-$(JPEG_TURBO_VERSION).tar.gz
+JPEG_TURBO_SITE = http://downloads.sourceforge.net/project/libjpeg-turbo/$(JPEG_TURBO_VERSION)
+JPEG_TURBO_INSTALL_STAGING = YES
+JPEG_TURBO_CONF_OPT = --with-jpeg8
+
+ifeq ($(BR2_X86_CPU_HAS_MMX)$(BR2_ARM_CPU_HAS_NEON),y)
+JPEG_TURBO_CONF_OPT += --with-simd
+# x86 simd support needs nasm
+JPEG_TURBO_DEPENDENCIES += $(if $(BR2_X86_CPU_HAS_MMX),host-nasm)
+else
+JPEG_TURBO_CONF_OPT += --without-simd
+endif
+
+define JPEG_TURBO_REMOVE_USELESS_TOOLS
+ rm -f $(addprefix $(TARGET_DIR)/usr/bin/,cjpeg djpeg jpegtrans rdjpgcom tjbench wrjpgcom)
+endef
+
+JPEG_TURBO_POST_INSTALL_TARGET_HOOKS += JPEG_TURBO_REMOVE_USELESS_TOOLS
+
+$(eval $(autotools-package))
^ permalink raw reply related
* [Buildroot] [git commit] package: use BR2_ARM_CPU_HAS_NEON
From: Peter Korsgaard @ 2012-12-13 22:25 UTC (permalink / raw)
To: buildroot
commit: http://git.buildroot.net/buildroot/commit/?id=ce8a7d50557d8f4a8dd3ae8a2259cc8996a38c57
branch: http://git.buildroot.net/buildroot/commit/?id=refs/heads/master
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
---
package/efl/libevas/libevas.mk | 3 +--
package/multimedia/ffmpeg/ffmpeg.mk | 3 +--
package/multimedia/mplayer/mplayer.mk | 2 +-
3 files changed, 3 insertions(+), 5 deletions(-)
diff --git a/package/efl/libevas/libevas.mk b/package/efl/libevas/libevas.mk
index 2e9e930..1f053e3 100644
--- a/package/efl/libevas/libevas.mk
+++ b/package/efl/libevas/libevas.mk
@@ -142,8 +142,7 @@ else
LIBEVAS_CONF_OPT += --disable-cpu-altivec
endif
-ifeq ($(BR2_cortex_a8)$(BR2_cortex_a9),y)
-# NEON is optional for A9
+ifeq ($(BR2_ARM_CPU_HAS_NEON),y)
LIBEVAS_CONF_OPT += --enable-cpu-neon
else
LIBEVAS_CONF_OPT += --disable-cpu-neon
diff --git a/package/multimedia/ffmpeg/ffmpeg.mk b/package/multimedia/ffmpeg/ffmpeg.mk
index 994c7cd..90c1f1b 100644
--- a/package/multimedia/ffmpeg/ffmpeg.mk
+++ b/package/multimedia/ffmpeg/ffmpeg.mk
@@ -143,8 +143,7 @@ endif
ifeq ($(BR2_arm10)$(BR2_arm1136jf_s)$(BR2_arm1176jz_s)$(BR2_arm1176jzf-s)$(BR2_cortex_a8)$(BR2_cortex_a9),y)
FFMPEG_CONF_OPT += --enable-armvfp
endif
-# NEON is optional for A9
-ifeq ($(BR2_cortex_a8),y)
+ifeq ($(BR2_ARM_CPU_HAS_NEON),y)
FFMPEG_CONF_OPT += --enable-neon
endif
# Set powerpc altivec appropriately
diff --git a/package/multimedia/mplayer/mplayer.mk b/package/multimedia/mplayer/mplayer.mk
index 17680b6..4a1abf4 100644
--- a/package/multimedia/mplayer/mplayer.mk
+++ b/package/multimedia/mplayer/mplayer.mk
@@ -112,7 +112,7 @@ ifeq ($(call qstrip,$(BR2_GCC_TARGET_ARCH)),armv6j)
MPLAYER_CONF_OPTS += --enable-armv6
endif
-ifeq ($(call qstrip,$(BR2_GCC_TARGET_ARCH)),armv7-a)
+ifeq ($(BR2_ARM_CPU_HAS_NEON),y)
MPLAYER_CONF_OPTS += --enable-neon
endif
^ permalink raw reply related
* [Buildroot] [git commit] arch/Config.in.arm: Add BR2_ARM_CPU_HAS_NEON similar to how mmx/sse is handled on x86
From: Peter Korsgaard @ 2012-12-13 22:25 UTC (permalink / raw)
To: buildroot
commit: http://git.buildroot.net/buildroot/commit/?id=f9da98c85d661578e0f40d81fac53aa65bd08fbb
branch: http://git.buildroot.net/buildroot/commit/?id=refs/heads/master
NEON support is optional on A5/A9, so let the user choose if SoC has it /
wants to use it.
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
---
arch/Config.in.arm | 21 +++++++++++++++++++++
1 files changed, 21 insertions(+), 0 deletions(-)
diff --git a/arch/Config.in.arm b/arch/Config.in.arm
index b65b4ac..806b196 100644
--- a/arch/Config.in.arm
+++ b/arch/Config.in.arm
@@ -1,3 +1,11 @@
+# arm cpu features
+config BR2_ARM_CPU_HAS_NEON
+ bool
+
+# for some cores, NEON support is optional
+config BR2_ARM_CPU_MAYBE_HAS_NEON
+ bool
+
choice
prompt "Target Architecture Variant"
depends on BR2_arm || BR2_armeb
@@ -31,12 +39,16 @@ config BR2_arm1176jzf_s
bool "arm1176jzf-s"
config BR2_cortex_a5
bool "cortex-A5"
+ select BR2_ARM_CPU_MAYBE_HAS_NEON
config BR2_cortex_a8
bool "cortex-A8"
+ select BR2_ARM_CPU_HAS_NEON
config BR2_cortex_a9
bool "cortex-A9"
+ select BR2_ARM_CPU_MAYBE_HAS_NEON
config BR2_cortex_a15
bool "cortex-A15"
+ select BR2_ARM_CPU_HAS_NEON
config BR2_sa110
bool "sa110"
config BR2_sa1100
@@ -64,6 +76,15 @@ config BR2_ARM_OABI
depends on !BR2_GCC_VERSION_4_7_X
endchoice
+config BR2_ARM_ENABLE_NEON
+ bool "Enable NEON SIMD extension support"
+ depends on BR2_ARM_CPU_MAYBE_HAS_NEON
+ select BR2_ARM_CPU_HAS_NEON
+ help
+ For some CPU cores, the NEON SIMD extension is optional.
+ Select this option if you are certain your particular
+ implementation has NEON support and you want to use it.
+
config BR2_ARCH
default "arm" if BR2_arm
default "armeb" if BR2_armeb
^ permalink raw reply related
* [Buildroot] [PATCH] Fix xenomai build with Linaro toolchain
From: Thierry Bultel @ 2012-12-13 22:06 UTC (permalink / raw)
To: buildroot
This fixes the build with toolchains that have -mthumb by default
(Not supported by xenomai yet)
Signed-off-by: thierry.bultel at wanadoo.fr
--- xenomai.mk 2012-12-13 22:48:05.841982812 +0100
+++ xenomai.mk.orig 2012-12-13 23:01:13.473982051 +0100
@@ -24,6 +23,12 @@
XENOMAI_CONF_OPT += --includedir=/usr/include/xenomai/
+XENOMAI_CONF_ENV = \
+ CFLAGS="$(TARGET_CFLAGS) -marm"
+
+XENOMAI_MAKE_ENV = \
+ CFLAGS="$(TARGET_CFLAGS) -marm"
+
ifeq ($(BR2_HAVE_DEVFILES),)
define XENOMAI_REMOVE_DEVFILES
for i in xeno-config xeno-info wrap-link.sh ; do \
^ permalink raw reply
* [Buildroot] Getting It into Compact Flash
From: Richard Braun @ 2012-12-13 22:04 UTC (permalink / raw)
To: buildroot
In-Reply-To: <50CA4A8F.1050002@mind.be>
On Thu, Dec 13, 2012 at 10:37:19PM +0100, Arnout Vandecappelle wrote:
> - if you use anything else than static device management, the devtmps
> will not be mounted automatically by the kernel; the cpio filesystem
> adds a /init script that mounts it for you.
The kernel has provided the ability to automatically mount devtmpfs for
quite some time now. He just needs to make sure the option is selected
in the kernel configuration.
--
Richard Braun
^ permalink raw reply
* [Buildroot] builroot-2012.11.tar.bz2: CVS control directory left in toolchain/elf2flt/elf2flt
From: Thierry Bultel @ 2012-12-13 21:53 UTC (permalink / raw)
To: buildroot
In-Reply-To: <87hanplj47.fsf@dell.be.48ers.dk>
Le 13/12/2012 22:47, Peter Korsgaard a ?crit :
>>>>>> "Thierry" == Thierry Bultel <thierry.bultel@wanadoo.fr> writes:
>
> Hi,
>
> Thierry> Actually I am not using it either. The CVS dir came in
> Thierry> conflict with my versioning system and that is how I noticed
> Thierry> it.
>
> You're using CVS in 2012? Really? ;)
>
It is awesome, sometimes, to notice how people like to stay with what
they have, even when there is better elsewhere ;0)
^ permalink raw reply
* [Buildroot] builroot-2012.11.tar.bz2: CVS control directory left in toolchain/elf2flt/elf2flt
From: Peter Korsgaard @ 2012-12-13 21:47 UTC (permalink / raw)
To: buildroot
In-Reply-To: <50CA4C63.2000006@wanadoo.fr>
>>>>> "Thierry" == Thierry Bultel <thierry.bultel@wanadoo.fr> writes:
Hi,
Thierry> Actually I am not using it either. The CVS dir came in
Thierry> conflict with my versioning system and that is how I noticed
Thierry> it.
You're using CVS in 2012? Really? ;)
--
Bye, Peter Korsgaard
^ permalink raw reply
* [Buildroot] [PATCH 20/20] package/dtc: add option to install programs
From: Yann E. MORIN @ 2012-12-13 21:47 UTC (permalink / raw)
To: buildroot
In-Reply-To: <cover.1355435224.git.yann.morin.1998@free.fr>
By default, we only install the libfdt library.
As suggested by Arnout, add an option that also
installs the few dtc programs.
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
dtdiff, a diff for device trees, requires bash.
I did not add a 'depends on bash' (or a 'select' either), because
requiring bash just for that is a bit far-fetched.
Instead, at dtc install time, if bash is selected, dtdiff is installed
as usual to the target rootfs; if bash is not selected, dtdiff is
removed from the target rootfs.
---
package/dtc/Config.in | 24 ++++++++++++++++++++++--
package/dtc/dtc.mk | 29 +++++++++++++++++++++++------
2 files changed, 45 insertions(+), 8 deletions(-)
diff --git a/package/dtc/Config.in b/package/dtc/Config.in
index 96225e3..1c65a10 100644
--- a/package/dtc/Config.in
+++ b/package/dtc/Config.in
@@ -1,9 +1,29 @@
config BR2_PACKAGE_DTC
- bool "dtc"
+ bool "dtc (libfdt)"
help
The Device Tree Compiler, dtc, takes as input a device-tree in
a given format and outputs a device-tree in another format.
- Note that only the library is installed for now.
+ Note that only the library is installed.
+ If you want the programs, say 'y' here, and to "dtc programs", below.
http://git.jdl.com/gitweb/?p=dtc.git (no home page)
+
+if BR2_PACKAGE_DTC
+
+config BR2_PACKAGE_DTC_PROGRAMS
+ bool "dtc programs"
+ help
+ Say 'y' here if you also want the programs on the target:
+ - convert-dtsv0 convert from version 0 to version 1
+ - dtc the device tree compiler
+ - dtdiff compare two device trees (needs bash)
+ - fdtdump print a readable version of a flat device tree
+ - fdtget read values from device tree
+ - fdtput write a property value to a device tree
+
+ Note: dtdiff requires bash, so if bash is not selected, dtdiff will
+ be removed from the target file system. Enable bash if you
+ need dtdiff on the target.
+
+endif
diff --git a/package/dtc/dtc.mk b/package/dtc/dtc.mk
index a0e1e35..42843d5 100644
--- a/package/dtc/dtc.mk
+++ b/package/dtc/dtc.mk
@@ -8,27 +8,44 @@ DTC_VERSION = e4b497f367a3b2ae99cc52089a14a221b13a76ef
DTC_SITE = git://git.jdl.com/software/dtc.git
DTC_LICENSE = GPLv2+/BSD-2c
DTC_LICENSE_FILES = README.license GPL
-# Note: the dual-license only applies to the library.
-# The DT compiler (dtc) is GPLv2+, but we do not install it.
DTC_INSTALL_STAGING = YES
+ifeq ($(BR2_PACKAGE_DTC_PROGRAMS),y)
+DTC_LICENSE += (for the library), GPLv2+ (for the executables)
+# Use default goal to build everything
+DTC_BUILD_GOAL =
+DTC_INSTALL_GOAL = install
+DTC_CLEAN_GOAL = clean
+else # $(BR2_PACKAGE_DTC_PROGRAMS) != y
+DTC_BUILD_GOAL = libfdt
+#?libfdt_install is our own install rule added by our patch
+DTC_INSTALL_GOAL = libfdt_install
+DTC_CLEAN_GOAL = libfdt_clean
+ifeq ($(BR2_PACKAGE_BASH),)
+DTC_POST_INSTALL_TARGET_HOOKS += DTC_POST_INSTALL_TARGET_RM_DTDIFF
+endif
+endif # $(BR2_PACKAGE_DTC_PROGRAMS) != y
+
define DTC_BUILD_CMDS
$(TARGET_CONFIGURE_OPTS) \
CFLAGS="$(TARGET_CFLAGS)" \
- $(MAKE) -C $(@D) PREFIX=/usr libfdt
+ $(MAKE) -C $(@D) PREFIX=/usr $(DTC_BUILD_GOAL)
endef
-#?libfdt_install is our own install rule added by our patch
+# For staging, only the library is needed
define DTC_INSTALL_STAGING_CMDS
$(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) PREFIX=/usr libfdt_install
endef
define DTC_INSTALL_TARGET_CMDS
- $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) PREFIX=/usr libfdt_install
+ $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) PREFIX=/usr $(DTC_INSTALL_GOAL)
+endef
+define DTC_POST_INSTALL_TARGET_RM_DTDIFF
+ rm -f $(TARGET_DIR)/usr/bin/dtdiff
endef
define DTC_CLEAN_CMDS
- $(MAKE) -C $(@D) libfdt_clean
+ $(MAKE) -C $(@D) $(DTC_CLEAN_GOAL)
endef
$(eval $(generic-package))
--
1.7.2.5
^ permalink raw reply related
* [Buildroot] [PATCH 19/20] package/dtc: new package
From: Yann E. MORIN @ 2012-12-13 21:47 UTC (permalink / raw)
To: buildroot
In-Reply-To: <cover.1355435224.git.yann.morin.1998@free.fr>
dtc is the Device Tree Compiler, and manipulates device trees.
Cc: Arnout Vandecappelle <arnout@mind.be>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
Although Arnout suggested to move it out of the libraries sub-menu,
I kept it there, as by default, only the library is installed, like
it is done for, eg., libcurl.
---
package/Config.in | 1 +
package/dtc/Config.in | 9 +++++++
| 27 ++++++++++++++++++++++
package/dtc/dtc-separate-lib-install.patch | 28 +++++++++++++++++++++++
package/dtc/dtc.mk | 34 ++++++++++++++++++++++++++++
5 files changed, 99 insertions(+), 0 deletions(-)
create mode 100644 package/dtc/Config.in
create mode 100644 package/dtc/dtc-extra_cflags.patch
create mode 100644 package/dtc/dtc-separate-lib-install.patch
create mode 100644 package/dtc/dtc.mk
diff --git a/package/Config.in b/package/Config.in
index d395326..1f60aa9 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -417,6 +417,7 @@ endmenu
menu "Hardware handling"
source "package/ccid/Config.in"
+source "package/dtc/Config.in"
source "package/lcdapi/Config.in"
source "package/libaio/Config.in"
source "package/libraw1394/Config.in"
diff --git a/package/dtc/Config.in b/package/dtc/Config.in
new file mode 100644
index 0000000..96225e3
--- /dev/null
+++ b/package/dtc/Config.in
@@ -0,0 +1,9 @@
+config BR2_PACKAGE_DTC
+ bool "dtc"
+ help
+ The Device Tree Compiler, dtc, takes as input a device-tree in
+ a given format and outputs a device-tree in another format.
+
+ Note that only the library is installed for now.
+
+ http://git.jdl.com/gitweb/?p=dtc.git (no home page)
--git a/package/dtc/dtc-extra_cflags.patch b/package/dtc/dtc-extra_cflags.patch
new file mode 100644
index 0000000..9d1882b
--- /dev/null
+++ b/package/dtc/dtc-extra_cflags.patch
@@ -0,0 +1,27 @@
+Makefile: append the CFLAGS to existing ones
+
+Allow the user to pass custom CFLAGS (eg. optimisation flags).
+
+Do not use EXTRA_CFLAGS, append to existing CFLAGS with += (Arnout)
+
+Cc: Arnout Vandecappelle <arnout@mind.be>
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+
+---
+Patch not sent upstream.
+
+Although not specific to buildroot, I am not sure this is the best
+way to handle user-supplied CFLAGS.
+
+diff -durN dtc-e4b497f367a3b2ae99cc52089a14a221b13a76ef.orig/Makefile dtc-e4b497f367a3b2ae99cc52089a14a221b13a76ef/Makefile
+--- dtc-e4b497f367a3b2ae99cc52089a14a221b13a76ef.orig/Makefile 2012-10-22 22:02:47.541240846 +0200
++++ dtc-e4b497f367a3b2ae99cc52089a14a221b13a76ef/Makefile 2012-10-22 22:03:21.151047833 +0200
+@@ -18,7 +18,7 @@
+ CPPFLAGS = -I libfdt -I .
+ WARNINGS = -Werror -Wall -Wpointer-arith -Wcast-qual -Wnested-externs \
+ -Wstrict-prototypes -Wmissing-prototypes -Wredundant-decls
+-CFLAGS = -g -Os -fPIC -Werror $(WARNINGS)
++CFLAGS += -g -Os -fPIC -Werror $(WARNINGS)
+
+ BISON = bison
+ LEX = flex
diff --git a/package/dtc/dtc-separate-lib-install.patch b/package/dtc/dtc-separate-lib-install.patch
new file mode 100644
index 0000000..c86d587
--- /dev/null
+++ b/package/dtc/dtc-separate-lib-install.patch
@@ -0,0 +1,28 @@
+Makefile: add a rule to only install libfdt
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+
+---
+Patch not sent upstream.
+
+It's really specific to buildroot, and is probably not
+good (aka generic) enough to be pushed upstream.
+
+diff --git a/Makefile b/Makefile
+index 1169e6c..39e7190 100644
+--- a/Makefile
++++ b/Makefile
+@@ -160,10 +160,12 @@ endif
+ # intermediate target and building them again "for real"
+ .SECONDARY: $(DTC_GEN_SRCS) $(CONVERT_GEN_SRCS)
+
+-install: all $(SCRIPTS)
++install: all $(SCRIPTS) libfdt_install
+ @$(VECHO) INSTALL
+ $(INSTALL) -d $(DESTDIR)$(BINDIR)
+ $(INSTALL) $(BIN) $(SCRIPTS) $(DESTDIR)$(BINDIR)
++
++libfdt_install: libfdt
+ $(INSTALL) -d $(DESTDIR)$(LIBDIR)
+ $(INSTALL) $(LIBFDT_lib) $(DESTDIR)$(LIBDIR)
+ ln -sf $(notdir $(LIBFDT_lib)) $(DESTDIR)$(LIBDIR)/$(LIBFDT_soname)
diff --git a/package/dtc/dtc.mk b/package/dtc/dtc.mk
new file mode 100644
index 0000000..a0e1e35
--- /dev/null
+++ b/package/dtc/dtc.mk
@@ -0,0 +1,34 @@
+#############################################################
+#
+# dtc
+#
+#############################################################
+
+DTC_VERSION = e4b497f367a3b2ae99cc52089a14a221b13a76ef
+DTC_SITE = git://git.jdl.com/software/dtc.git
+DTC_LICENSE = GPLv2+/BSD-2c
+DTC_LICENSE_FILES = README.license GPL
+# Note: the dual-license only applies to the library.
+# The DT compiler (dtc) is GPLv2+, but we do not install it.
+DTC_INSTALL_STAGING = YES
+
+define DTC_BUILD_CMDS
+ $(TARGET_CONFIGURE_OPTS) \
+ CFLAGS="$(TARGET_CFLAGS)" \
+ $(MAKE) -C $(@D) PREFIX=/usr libfdt
+endef
+
+#?libfdt_install is our own install rule added by our patch
+define DTC_INSTALL_STAGING_CMDS
+ $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) PREFIX=/usr libfdt_install
+endef
+
+define DTC_INSTALL_TARGET_CMDS
+ $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) PREFIX=/usr libfdt_install
+endef
+
+define DTC_CLEAN_CMDS
+ $(MAKE) -C $(@D) libfdt_clean
+endef
+
+$(eval $(generic-package))
--
1.7.2.5
^ permalink raw reply related
* [Buildroot] [PATCH 18/20] package/ceph: new package
From: Yann E. MORIN @ 2012-12-13 21:47 UTC (permalink / raw)
To: buildroot
In-Reply-To: <cover.1355435224.git.yann.morin.1998@free.fr>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
package/Config.in | 1 +
package/ceph/Config.in | 18 ++++++++
package/ceph/ceph-no-envz.patch | 63 ++++++++++++++++++++++++++++
package/ceph/ceph-no-getloadavg.patch | 61 +++++++++++++++++++++++++++
package/ceph/ceph-no-posix_fallocate.patch | 50 ++++++++++++++++++++++
package/ceph/ceph.mk | 53 +++++++++++++++++++++++
6 files changed, 246 insertions(+), 0 deletions(-)
create mode 100644 package/ceph/Config.in
create mode 100644 package/ceph/ceph-no-envz.patch
create mode 100644 package/ceph/ceph-no-getloadavg.patch
create mode 100644 package/ceph/ceph-no-posix_fallocate.patch
create mode 100644 package/ceph/ceph.mk
diff --git a/package/Config.in b/package/Config.in
index 47c01db..d395326 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -588,6 +588,7 @@ source "package/bind/Config.in"
source "package/bmon/Config.in"
source "package/bridge-utils/Config.in"
source "package/can-utils/Config.in"
+source "package/ceph/Config.in"
source "package/connman/Config.in"
source "package/ctorrent/Config.in"
source "package/conntrack-tools/Config.in"
diff --git a/package/ceph/Config.in b/package/ceph/Config.in
new file mode 100644
index 0000000..db26886
--- /dev/null
+++ b/package/ceph/Config.in
@@ -0,0 +1,18 @@
+comment "ceph requires libnss, and libuuid (from util-linux)"
+ depends on !BR2_PACKAGE_BOOST
+ depends on !BR2_PACKAGE_LIBNSS
+ depends on !BR2_PACKAGE_UTIL_LINUX_LIBUUID
+
+config BR2_PACKAGE_CEPH
+ bool "ceph"
+ depends on BR2_PACKAGE_BOOST
+ depends on BR2_PACKAGE_LIBNSS
+ depends on BR2_PACKAGE_UTIL_LINUX_LIBUUID
+ select BR2_PACKAGE_EXPAT
+ select BR2_PACKAGE_KEYUTILS
+ select BR2_PACKAGE_LIBEDIT2
+ help
+ Ceph is a distributed object store and file system designed to
+ provide excellent performance, reliability and scalability.
+
+ http://ceph.com/
diff --git a/package/ceph/ceph-no-envz.patch b/package/ceph/ceph-no-envz.patch
new file mode 100644
index 0000000..c0369ba
--- /dev/null
+++ b/package/ceph/ceph-no-envz.patch
@@ -0,0 +1,63 @@
+tools+base: do not include envz.h on uClibc
+
+uClibc does not have envz, and no envz function is in fact used.
+So, simply do not include it under uClibc.
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+
+--- ceph-0.51.orig/src/tools/common.cc 2012-09-09 00:13:32.128838177 +0200
++++ ceph-0.51/src/tools/common.cc 2012-09-09 00:13:59.432064556 +0200
+@@ -17,9 +17,9 @@
+ #include <string>
+ using namespace std;
+
+-#if !defined(DARWIN) && !defined(__FreeBSD__)
++#if !defined(DARWIN) && !defined(__FreeBSD__) && !defined(__UCLIBC__)
+ #include <envz.h>
+-#endif // DARWIN
++#endif // DARWIN || __UCLIBC__
+
+ #include <memory>
+ #include <sys/types.h>
+--- ceph-0.51.orig/src/ceph_syn.cc 2012-09-09 00:25:23.302722032 +0200
++++ ceph-0.51/src/ceph_syn.cc 2012-09-09 00:24:39.702892463 +0200
+@@ -31,9 +31,9 @@
+ #include "common/ceph_argparse.h"
+ #include "common/pick_address.h"
+
+-#if !defined(DARWIN) && !defined(__FreeBSD__)
++#if !defined(DARWIN) && !defined(__FreeBSD__) && !defined(__UCLIBC__)
+ #include <envz.h>
+-#endif // DARWIN || __FreeBSD__
++#endif // DARWIN || __FreeBSD__ || __UCLIBC__
+
+ #include <sys/types.h>
+ #include <sys/stat.h>
+--- ceph-0.51.orig/src/ceph_fuse.cc 2012-09-09 00:43:46.875065556 +0200
++++ ceph-0.51/src/ceph_fuse.cc 2012-09-09 00:44:21.161597834 +0200
+@@ -32,9 +32,9 @@
+ #include "global/global_init.h"
+ #include "common/safe_io.h"
+
+-#ifndef DARWIN
++#if !defined(DARWIN) && !defined(__UCLIBC__)
+ #include <envz.h>
+-#endif // DARWIN
++#endif // DARWIN || __UCLIBC__
+
+ #include <sys/types.h>
+ #include <sys/stat.h>
+--- ceph-0.51.orig/src/testmsgr.cc 2012-09-09 00:44:48.108158886 +0200
++++ ceph-0.51/src/testmsgr.cc 2012-09-09 00:45:18.218040882 +0200
+@@ -28,9 +28,9 @@
+ #include "global/global_init.h"
+ #include "common/ceph_argparse.h"
+
+-#ifndef DARWIN
++#if !defined(DARWIN) && !defined(__UCLIBC__)
+ #include <envz.h>
+-#endif // DARWIN
++#endif // DARWIN || __UCLIBC__
+
+ #include <sys/types.h>
+ #include <sys/stat.h>
diff --git a/package/ceph/ceph-no-getloadavg.patch b/package/ceph/ceph-no-getloadavg.patch
new file mode 100644
index 0000000..7e887df
--- /dev/null
+++ b/package/ceph/ceph-no-getloadavg.patch
@@ -0,0 +1,61 @@
+OSD: do not use getloadavg(3) on uClibc
+
+getloadavg(3) is not available on uClibc, so do not use it.
+
+getloadavg is used in two places:
+ - once to log the loadavg in the heartbeat logs: we simply remove this;
+ - once to decide whether to schedule scrub (whatever it is) or not: we
+ simply use the existing coin-flip random choice in this case.
+
+The second change will probably have an impact on performances... :-(
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+
+diff -durN ceph-0.51.orig/src/osd/OSD.cc ceph-0.51/src/osd/OSD.cc
+--- ceph-0.51.orig/src/osd/OSD.cc 2012-08-26 00:58:06.000000000 +0200
++++ ceph-0.51/src/osd/OSD.cc 2012-09-08 23:56:31.396177885 +0200
+@@ -15,6 +15,7 @@
+ #include <fstream>
+ #include <iostream>
+ #include <errno.h>
++#include <features.h> /* For __ULIBC__ */
+ #include <sys/stat.h>
+ #include <signal.h>
+ #include <boost/scoped_ptr.hpp>
+@@ -1942,10 +1943,12 @@
+ {
+ dout(30) << "heartbeat" << dendl;
+
++#ifndef __UCLIBC__
+ // get CPU load avg
+ double loadavgs[1];
+ if (getloadavg(loadavgs, 1) == 1)
+ logger->fset(l_osd_loadavg, loadavgs[0]);
++#endif
+
+ dout(30) << "heartbeat checking stats" << dendl;
+
+@@ -3216,6 +3219,7 @@
+
+ bool OSDService::scrub_should_schedule()
+ {
++#ifndef __UCLIBC__
+ double loadavgs[1];
+
+ // TODOSAM: is_active should be conveyed to OSDService
+@@ -3249,6 +3253,15 @@
+ << " < max " << g_conf->osd_scrub_load_threshold
+ << " = yes" << dendl;
+ return loadavgs[0] < g_conf->osd_scrub_load_threshold;
++#else // ! defined __UCLIBC__
++ bool coin_flip = (rand() % 3) == whoami % 3;
++ if (coin_flip) {
++ dout(20) << "scrub_should_schedule randomly yes" << dendl;
++ } else {
++ dout(20) << "scrub_should_schedule randomly backing off" << dendl;
++ }
++ return coin_flip;
++#endif // ! defined __UCLIBC__
+ }
+
+ void OSD::sched_scrub()
diff --git a/package/ceph/ceph-no-posix_fallocate.patch b/package/ceph/ceph-no-posix_fallocate.patch
new file mode 100644
index 0000000..479705d
--- /dev/null
+++ b/package/ceph/ceph-no-posix_fallocate.patch
@@ -0,0 +1,50 @@
+Do not call posix_fallocate() on uClibc
+
+Based on a patch by Thomas, for lttng-babeltrace, in which he states:
+
+ uClibc does not implement posix_fallocate(), and posix_fallocate() is
+ mostly only an hint to the kernel that we will need such or such
+ amount of space inside a file. So we just don't call posix_fallocate()
+ when building against uClibc.
+
+Just do the same here.
+
+NOTE! IMHO, this patch is not correct, because overcommit (eg. for sparse
+files) on the underlying filesystem may cause allocation failures later on,
+which is exactly the situation that posix_fallocate is supposed to avoid.
+But, as uClibc still lacks posix_fallocate, we have no choice.
+
+If you really are concerned about this issue, there exists a posix_fallocate
+patch that is not upstream, but is used by the AlpineLinux distribution:
+ http://git.alpinelinux.org/cgit/aports/tree/main/libc0.9.32/posix_fallocate.patch?id=98a000b8e92b3aa1e0b7a5f94a74910bb0993c4d
+ http://git.alpinelinux.org/cgit/aports/tree/main/libc0.9.32/posix_fallocate-fix.patch?id=98a000b8e92b3aa1e0b7a5f94a74910bb0993c4d
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+
+diff -durN ceph-0.50.orig/src/os/FileJournal.cc ceph-0.50/src/os/FileJournal.cc
+--- ceph-0.50.orig/src/os/FileJournal.cc 2012-08-13 18:43:14.000000000 +0200
++++ ceph-0.50/src/os/FileJournal.cc 2012-09-08 23:07:12.597910027 +0200
+@@ -23,6 +23,7 @@
+ #include "include/compat.h"
+
+ #include <fcntl.h>
++#include <features.h>
+ #include <sstream>
+ #include <stdio.h>
+ #include <sys/types.h>
+@@ -303,6 +304,7 @@
+ << newsize << " bytes: " << cpp_strerror(err) << dendl;
+ return -err;
+ }
++#ifndef __UCLIBC__
+ ret = ::posix_fallocate(fd, 0, newsize);
+ if (ret < 0) {
+ int err = errno;
+@@ -310,6 +312,7 @@
+ << newsize << " bytes: " << cpp_strerror(err) << dendl;
+ return -err;
+ }
++#endif
+ max_size = newsize;
+ }
+ else {
diff --git a/package/ceph/ceph.mk b/package/ceph/ceph.mk
new file mode 100644
index 0000000..0849837
--- /dev/null
+++ b/package/ceph/ceph.mk
@@ -0,0 +1,53 @@
+#############################################################
+#
+# ceph
+#
+#############################################################
+
+CEPH_VERSION = 0.51
+CEPH_SOURCE = ceph-$(CEPH_VERSION).tar.bz2
+CEPH_SITE = http://ceph.com/download/
+CEPH_LICENSE = LGPLv2.1 CC-BY-SA Apache-2.0 GPLv2 LGPLv2+ BSD-3c MIT PD
+CEPH_LICENSE_FILES = COPYING
+CEPH_INSTALL_STAGING = YES
+
+CEPH_DEPENDENCIES = \
+ boost \
+ expat \
+ keyutils \
+ libedit2 \
+ libnss \
+ util-linux \
+
+# We disable everything for now, because the dependency tree can become
+# quite deep if we try to enable some features, and I have not tested that.
+# We need@least one crypto lib, and the currently only one available in
+# BR, that ceph can use, is libnss
+CEPH_CONF_OPT = \
+ --with-nss \
+ --without-profiler \
+ --without-debug \
+ --without-tcmalloc \
+ --without-hadoop \
+ --without-libatomic-ops \
+ --without-system-leveldb \
+ --without-system-libs3 \
+ --without-rest-bench \
+ --without-cryptopp \
+ --with-ocf \
+
+ifeq ($(BR2_PACKAGE_LIBFUSE),y)
+CEPH_DEPENDENCIES += libfuse
+CEPH_CONF_OPT += --with-fuse
+else
+CEPH_CONF_OPT += --without-fuse
+endif
+
+ifeq ($(BR2_PACKAGE_LIBAIO),y)
+CEPH_DEPENDENCIES += libaio
+CEPH_CONF_OPT += --with-libaio
+else
+CEPH_CONF_OPT += --without-libaio
+endif
+
+$(eval $(autotools-package))
--
1.7.2.5
^ permalink raw reply related
* [Buildroot] [PATCH 17/20] package/libedit2: new package
From: Yann E. MORIN @ 2012-12-13 21:47 UTC (permalink / raw)
To: buildroot
In-Reply-To: <cover.1355435224.git.yann.morin.1998@free.fr>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
package/Config.in | 1 +
package/libedit2/Config.in | 9 +++
package/libedit2/libedit2-01-Makefile.patch | 25 +++++++
package/libedit2/libedit2-02-el.c-issetugid.patch | 24 ++++++
package/libedit2/libedit2-03-el.c-MAXPATHLEN.patch | 40 +++++++++++
.../libedit2/libedit2-04-readline.h-stdio.patch | 17 +++++
.../libedit2/libedit2-08-readline-history.h.patch | 20 +++++
.../libedit2/libedit2-10-define_SIZE_T_MAX.patch | 18 +++++
.../libedit2/libedit2-12-libedit-Makefile.patch | 54 ++++++++++++++
package/libedit2/libedit2-20-fortify.patch | 23 ++++++
package/libedit2/libedit2.mk | 75 ++++++++++++++++++++
package/libedit2/libedit2.pc | 13 ++++
12 files changed, 319 insertions(+), 0 deletions(-)
create mode 100644 package/libedit2/Config.in
create mode 100644 package/libedit2/libedit2-01-Makefile.patch
create mode 100644 package/libedit2/libedit2-02-el.c-issetugid.patch
create mode 100644 package/libedit2/libedit2-03-el.c-MAXPATHLEN.patch
create mode 100644 package/libedit2/libedit2-04-readline.h-stdio.patch
create mode 100644 package/libedit2/libedit2-08-readline-history.h.patch
create mode 100644 package/libedit2/libedit2-10-define_SIZE_T_MAX.patch
create mode 100644 package/libedit2/libedit2-12-libedit-Makefile.patch
create mode 100644 package/libedit2/libedit2-20-fortify.patch
create mode 100644 package/libedit2/libedit2.mk
create mode 100644 package/libedit2/libedit2.pc
diff --git a/package/Config.in b/package/Config.in
index e016378..47c01db 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -538,6 +538,7 @@ endmenu
menu "Text and terminal handling"
source "package/enchant/Config.in"
source "package/icu/Config.in"
+source "package/libedit2/Config.in"
source "package/libiconv/Config.in"
source "package/linenoise/Config.in"
source "package/ncurses/Config.in"
diff --git a/package/libedit2/Config.in b/package/libedit2/Config.in
new file mode 100644
index 0000000..1e7b95d
--- /dev/null
+++ b/package/libedit2/Config.in
@@ -0,0 +1,9 @@
+config BR2_PACKAGE_LIBEDIT2
+ bool "libedit2"
+ select BR2_PACKAGE_LIBBSD
+ select BR2_PACKAGE_NCURSES
+ help
+ The editline library (from BSD) provides generic line editing
+ and history functions. It slightly resembles GNU readline.
+
+ http://ftp.netbsd.org/pub/NetBSD/NetBSD-release-5-0/src/lib/libedit/
diff --git a/package/libedit2/libedit2-01-Makefile.patch b/package/libedit2/libedit2-01-Makefile.patch
new file mode 100644
index 0000000..91645e4
--- /dev/null
+++ b/package/libedit2/libedit2-01-Makefile.patch
@@ -0,0 +1,25 @@
+ 01-Makefile.diff by Neal H Walfield <neal@cs.uml.edu> and
+ Gergely Nagy <algernon@debian.org>
+
+ Add the necessary includes and other things to the libedit
+ Makefile, so it will compile on GNU systems, with our supplied
+ glue code
+
+ Yann E. MORIN: patch from debian.
+
+--- a/libedit/Makefile
++++ b/libedit/Makefile
+@@ -1,6 +1,13 @@
+ # $NetBSD: Makefile,v 1.36 2007/05/28 12:06:18 tls Exp $
+ # @(#)Makefile 8.1 (Berkeley) 6/4/93
+
++OS!= sh -c "case `uname -s` in GNU|GNU/*) echo GNU ;; *) uname -s ;; esac"
++
++.if ${OS} == GNU || ${OS} == Linux
++CFLAGS += -include bsd/bsd.h
++MKLINT=no
++.endif
++
+ USE_SHLIBDIR= yes
+
+ WARNS= 3
diff --git a/package/libedit2/libedit2-02-el.c-issetugid.patch b/package/libedit2/libedit2-02-el.c-issetugid.patch
new file mode 100644
index 0000000..b060fa4
--- /dev/null
+++ b/package/libedit2/libedit2-02-el.c-issetugid.patch
@@ -0,0 +1,24 @@
+ 02-el.c-issetugid.diff by Gergely Nagy <algernon@debian.org>
+
+ issetugid(2) is not implemented on GNU systems, so #ifdef it out
+
+ Yann E. MORIN: patch from debian.
+
+--- a/libedit/el.c 2008-04-06 02:53:28.000000000 +1100
++++ b/libedit/el.c 2009-06-23 08:51:48.000000000 +1000
+@@ -479,12 +479,14 @@ el_source(EditLine *el, const char *fnam
+
+ fp = NULL;
+ if (fname == NULL) {
+-#ifdef HAVE_ISSETUGID
++#if 1
+ static const char elpath[] = "/.editrc";
+ char path[MAXPATHLEN];
+
++#ifndef __GLIBC__
+ if (issetugid())
+ return (-1);
++#endif
+ if ((ptr = getenv("HOME")) == NULL)
+ return (-1);
+ if (strlcpy(path, ptr, sizeof(path)) >= sizeof(path))
diff --git a/package/libedit2/libedit2-03-el.c-MAXPATHLEN.patch b/package/libedit2/libedit2-03-el.c-MAXPATHLEN.patch
new file mode 100644
index 0000000..aadd36a
--- /dev/null
+++ b/package/libedit2/libedit2-03-el.c-MAXPATHLEN.patch
@@ -0,0 +1,40 @@
+ 03-el.c-MAXPATHLEN.diff by Gergely Nagy <algernon@debian.org>
+
+ on systems without MAXPATHLEN, allocate memory dynamically
+
+ Yann E. MORIN: patch from debian.
+
+--- a/libedit/el.c 2009-06-23 08:57:04.000000000 +1000
++++ b/libedit/el.c 2009-06-23 08:57:30.000000000 +1000
+@@ -481,7 +481,11 @@ el_source(EditLine *el, const char *fnam
+ if (fname == NULL) {
+ #if 1
+ static const char elpath[] = "/.editrc";
++#ifdef MAXPATHLEN
+ char path[MAXPATHLEN];
++#else
++ char *path;
++#endif
+
+ #ifndef __GLIBC__
+ if (issetugid())
+@@ -489,10 +493,19 @@ el_source(EditLine *el, const char *fnam
+ #endif
+ if ((ptr = getenv("HOME")) == NULL)
+ return (-1);
++#ifndef MAXPATHLEN
++ path = (char *)malloc(strlen(ptr) + strlen(elpath) + 10);
++ if (path == NULL)
++ return (-1);
++ /* Always succeeds, since we have enough memory */
++ strcpy(path, ptr);
++ strcat(path, elpath);
++#else
+ if (strlcpy(path, ptr, sizeof(path)) >= sizeof(path))
+ return (-1);
+ if (strlcat(path, elpath, sizeof(path)) >= sizeof(path))
+ return (-1);
++#endif
+ fname = path;
+ #else
+ /*
diff --git a/package/libedit2/libedit2-04-readline.h-stdio.patch b/package/libedit2/libedit2-04-readline.h-stdio.patch
new file mode 100644
index 0000000..84257b9
--- /dev/null
+++ b/package/libedit2/libedit2-04-readline.h-stdio.patch
@@ -0,0 +1,17 @@
+ 04-readline.h-stdio.diff by Gergely Nagy <algernon@debian.org>
+
+ since readline.h uses types defined in stdio.h, that header should
+ be included
+
+ Yann E. MORIN: patch from debian.
+
+--- a/libedit/readline/readline.h 2008-04-29 16:53:01.000000000 +1000
++++ b/libedit/readline/readline.h 2009-06-23 08:35:58.000000000 +1000
+@@ -31,6 +31,7 @@
+ #ifndef _READLINE_H_
+ #define _READLINE_H_
+
++#include <stdio.h>
+ #include <sys/types.h>
+
+ /* list of readline stuff supported by editline library's readline wrapper */
diff --git a/package/libedit2/libedit2-08-readline-history.h.patch b/package/libedit2/libedit2-08-readline-history.h.patch
new file mode 100644
index 0000000..f30093f
--- /dev/null
+++ b/package/libedit2/libedit2-08-readline-history.h.patch
@@ -0,0 +1,20 @@
+ 08-readline-history.h.diff by Pawel Wiecek <coven@debian.org>
+ (compatibility with older versions)
+
+ Setting the global variable rl_inhibit_completion to 1 did indeed
+ disable completion, but the invoking key (e.g., <TAB>) was not
+ inserted directly into the input line as it should be.
+ This patch fixes this problem, and also declares rl_inhibit_completion
+ in readline.h for better readline compatibility.
+
+ Yann E. MORIN: patch from debian.
+
+--- a/libedit/readline/Makefile 2003-08-03 19:23:15.000000000 +1000
++++ b/libedit/readline/Makefile 2009-06-23 08:35:58.000000000 +1000
+@@ -10,4 +10,6 @@ INCS= readline.h
+ INCSDIR= /usr/include/readline
+ INCSYMLINKS= readline.h ${INCSDIR}/history.h
+
++incinstall:: linksinstall
++
+ .include <bsd.prog.mk>
diff --git a/package/libedit2/libedit2-10-define_SIZE_T_MAX.patch b/package/libedit2/libedit2-10-define_SIZE_T_MAX.patch
new file mode 100644
index 0000000..c8ce262
--- /dev/null
+++ b/package/libedit2/libedit2-10-define_SIZE_T_MAX.patch
@@ -0,0 +1,18 @@
+ 10-define_SIZE_T_MAX.diff by Anibal Monsalve Salazar
+ define SIZE_T_MAX as UINT_MAX in limits.h
+
+ Yann E. MORIN: patch from debian.
+
+--- a/libedit/readline.c 2008-04-29 16:53:01.000000000 +1000
++++ a/libedit/readline.c 2008-06-14 23:54:16.000000000 +1000
+@@ -61,6 +61,10 @@ __RCSID("$NetBSD: readline.c,v 1.75 2008
+ #include "readline/readline.h"
+ #include "filecomplete.h"
+
++#ifndef SIZE_T_MAX
++#define SIZE_T_MAX UINT_MAX
++#endif
++
+ void rl_prep_terminal(int);
+ void rl_deprep_terminal(void);
+
diff --git a/package/libedit2/libedit2-12-libedit-Makefile.patch b/package/libedit2/libedit2-12-libedit-Makefile.patch
new file mode 100644
index 0000000..3234f33
--- /dev/null
+++ b/package/libedit2/libedit2-12-libedit-Makefile.patch
@@ -0,0 +1,54 @@
+ 12-libedit-Makefile.diff by Anibal Monsalve Salazar
+ without this patch I get the following message:
+ make: ${_MKTARGET_CREATE} expands to empty string
+
+ Yann E. MORIN: patch from debian.
+
+--- a/libedit/Makefile 2007-05-28 22:06:18.000000000 +1000
++++ a/libedit/Makefile 2008-06-15 13:53:50.000000000 +1000
+@@ -59,45 +59,37 @@ CLEANFILES+= ${AHDR} fcns.h help.h fcns.
+ SUBDIR= readline
+
+ vi.h: vi.c makelist Makefile
+- ${_MKTARGET_CREATE}
+ ${HOST_SH} ${LIBEDITDIR}/makelist -h ${LIBEDITDIR}/vi.c \
+ > ${.TARGET}.tmp && \
+ mv ${.TARGET}.tmp ${.TARGET}
+
+ emacs.h: emacs.c makelist Makefile
+- ${_MKTARGET_CREATE}
+ ${HOST_SH} ${LIBEDITDIR}/makelist -h ${LIBEDITDIR}/emacs.c \
+ > ${.TARGET}.tmp && \
+ mv ${.TARGET}.tmp ${.TARGET}
+
+ common.h: common.c makelist Makefile
+- ${_MKTARGET_CREATE}
+ ${HOST_SH} ${LIBEDITDIR}/makelist -h ${LIBEDITDIR}/common.c \
+ > ${.TARGET}.tmp && \
+ mv ${.TARGET}.tmp ${.TARGET}
+
+ fcns.h: ${AHDR} makelist Makefile
+- ${_MKTARGET_CREATE}
+ ${HOST_SH} ${LIBEDITDIR}/makelist -fh ${AHDR} > ${.TARGET}.tmp && \
+ mv ${.TARGET}.tmp ${.TARGET}
+
+ fcns.c: ${AHDR} fcns.h help.h makelist Makefile
+- ${_MKTARGET_CREATE}
+ ${HOST_SH} ${LIBEDITDIR}/makelist -fc ${AHDR} > ${.TARGET}.tmp && \
+ mv ${.TARGET}.tmp ${.TARGET}
+
+ help.c: ${ASRC} makelist Makefile
+- ${_MKTARGET_CREATE}
+ ${HOST_SH} ${LIBEDITDIR}/makelist -bc ${ASRC} > ${.TARGET}.tmp && \
+ mv ${.TARGET}.tmp ${.TARGET}
+
+ help.h: ${ASRC} makelist Makefile
+- ${_MKTARGET_CREATE}
+ ${HOST_SH} ${LIBEDITDIR}/makelist -bh ${ASRC} > ${.TARGET}.tmp && \
+ mv ${.TARGET}.tmp ${.TARGET}
+
+ editline.c: ${OSRCS} makelist Makefile
+- ${_MKTARGET_CREATE}
+ ${HOST_SH} ${LIBEDITDIR}/makelist -e ${OSRCS:T} > ${.TARGET}.tmp && \
+ mv ${.TARGET}.tmp ${.TARGET}
+
diff --git a/package/libedit2/libedit2-20-fortify.patch b/package/libedit2/libedit2-20-fortify.patch
new file mode 100644
index 0000000..0a41ce3
--- /dev/null
+++ b/package/libedit2/libedit2-20-fortify.patch
@@ -0,0 +1,23 @@
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=488456
+
+Patch by Kees Cook <kees@outflux.net>
+
+Yann E. MORIN: patch from debian.
+
+--- a/libedit/vi.c 2006-10-22 17:48:13.000000000 +1000
++++ b/libedit/vi.c 2009-06-23 08:35:58.000000000 +1000
+@@ -1012,8 +1012,12 @@ vi_histedit(EditLine *el, int c)
+ if (fd < 0)
+ return CC_ERROR;
+ cp = el->el_line.buffer;
+- write(fd, cp, el->el_line.lastchar - cp +0u);
+- write(fd, "\n", 1);
++ if (write(fd, cp, el->el_line.lastchar - cp +0u)<0 ||
++ write(fd, "\n", 1)<0) {
++ close(fd);
++ unlink(tempfile);
++ return CC_ERROR;
++ }
+ pid = fork();
+ switch (pid) {
+ case -1:
diff --git a/package/libedit2/libedit2.mk b/package/libedit2/libedit2.mk
new file mode 100644
index 0000000..b9ca41e
--- /dev/null
+++ b/package/libedit2/libedit2.mk
@@ -0,0 +1,75 @@
+#############################################################
+#
+# libedit2
+#
+#############################################################
+
+# Note: libedit2 does not have a regular homepage, and it seems
+# there is no place where to download a tarball from. That's
+# why we use the Debian way-back machine.
+LIBEDIT2_VERSION_MAJOR = 2
+LIBEDIT2_VERSION_MINOR = 11-20080614
+LIBEDIT2_VERSION = $(LIBEDIT2_VERSION_MAJOR).$(LIBEDIT2_VERSION_MINOR)
+LIBEDIT2_SOURCE = libedit_$(LIBEDIT2_VERSION).orig.tar.bz2
+LIBEDIT2_SITE = http://snapshot.debian.org/archive/debian/20120601T033558Z/pool/main/libe/libedit
+LIBEDIT2_SUBDIR = libedit
+LIBEDIT2_INSTALL_STAGING = YES
+LIBEDIT2_DEPENDENCIES = host-pmake libbsd ncurses
+
+define POST_PATCH_PERMISSIONS
+ chmod +x $(@D)/libedit/makelist
+endef
+
+LIBEDIT2_POST_PATCH_HOOKS += POST_PATCH_PERMISSIONS
+
+define LIBEDIT2_FIX_VIS_H_INCLUDE
+ $(SED) 's/^#include <vis.h>$$/#include <bsd\/vis.h>/;' $(@D)/libedit/filecomplete.c
+ $(SED) 's/^#include <vis.h>$$/#include <bsd\/vis.h>/;' $(@D)/libedit/history.c
+ $(SED) 's/^#include <vis.h>$$/#include <bsd\/vis.h>/;' $(@D)/libedit/readline.c
+endef
+LIBEDIT2_POST_PATCH_HOOKS += LIBEDIT2_FIX_VIS_H_INCLUDE
+
+LIBEDIT2_PMAKE_ARGS = MKPROFILE=no MKCATPAGES=no MLINKS= MANPAGES= NOGCCERROR=1 \
+ SHLIB_SHFLAGS="-Wl,-soname,libedit.so.${LIBEDIT2_VERSION_MAJOR}" \
+
+define LIBEDIT2_BUILD_CMDS
+ cd $(@D)/$(LIBEDIT2_SUBDIR); \
+ $(TARGET_CONFIGURE_OPTS) LDADD="-lbsd -lcurses" pmake $(LIBEDIT2_PMAKE_ARGS)
+endef
+
+LIBEDIT2_MAN_LINKS = el_init el_end el_reset el_gets el_getc el_push el_parse \
+ el_set el_get el_source el_resize el_line el_insertstr \
+ el_deletestr history_init history_end history
+
+# $1: DESTDIR to install into
+# Can't use pmake to install, it wants to be root. sigh... :-(
+define LIBEDIT2_INSTALL_CMDS
+ $(INSTALL) -D -m 0644 package/libedit2/libedit2.pc $(1)/usr/lib/pkgconfig/libedit2.pc
+ ln -sf libedit2.pc $(1)/usr/lib/pkgconfig/libedit.pc
+ $(INSTALL) -D -m 0644 $(@D)/libedit/libedit.a $(1)/usr/lib/libedit.a
+ $(INSTALL) -D -m 0644 $(@D)/libedit/libedit_pic.a $(1)/usr/lib/libedit_pic.a
+ $(INSTALL) -D -m 0644 $(@D)/libedit/libedit.so.2.11 $(1)/usr/lib/libedit.so.2.11
+ $(INSTALL) -D -m 0644 $(@D)/libedit/histedit.h $(1)/usr/include/histedit.h
+ ln -sf libedit.so.$(LIBEDIT2_VERSION) $(1)/usr/lib/libedit.so.$(LIBEDIT2_VERSION_MAJOR)
+ ln -sf libedit.so.$(LIBEDIT2_VERSION_MAJOR) $(1)/usr/lib/libedit.so
+ $(INSTALL) -D -m 0644 $(@D)/libedit/readline/readline.h $(1)/usr/include/editline/readline.h
+ if [ "$(BR2_HAVE_DOCUMENTATION)" = "y" ]; then \
+ $(INSTALL) -v -D -m 0644 $(@D)/libedit/editline.3 $(1)/usr/share/man/man3/editline.3el; \
+ $(INSTALL) -v -D -m 0644 $(@D)/libedit/editrc.3 $(1)/usr/share/man/man5/editrc.5el; \
+ for lnk in $(LIBEDIT2_MAN_LINKS); do \
+ ln -sfv editline.3el $(1)/usr/share/man/man3/$${lnk}.3el; \
+ done; \
+ fi
+endef
+# cd $(@D)/libedit; pmake install incinstall DESTDIR=$(1) $(LIBEDIT2_PMAKE_ARGS)
+# cd $(@D)/libedit/readline; pmake incinstall DESTDIR=$(1) $(LIBEDIT2_PMAKE_ARGS)
+
+define LIBEDIT2_INSTALL_STAGING_CMDS
+ $(call LIBEDIT2_INSTALL_CMDS,$(STAGING_DIR))
+endef
+
+define LIBEDIT2_INSTALL_TARGET_CMDS
+ $(call LIBEDIT2_INSTALL_CMDS,$(TARGET_DIR))
+endef
+
+$(eval $(generic-package))
diff --git a/package/libedit2/libedit2.pc b/package/libedit2/libedit2.pc
new file mode 100644
index 0000000..47ac871
--- /dev/null
+++ b/package/libedit2/libedit2.pc
@@ -0,0 +1,13 @@
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: libedit
+Description: Not just a replacement library for libreadline and libhistory.
+Version: 2.11
+Requires: libbsd ncurses
+Requires.private:
+Libs: -L${libdir} -ledit
+Libs.private:
+Cflags: -I${includedir}
--
1.7.2.5
^ permalink raw reply related
* [Buildroot] [PATCH 16/20] package/libbsd: new package
From: Yann E. MORIN @ 2012-12-13 21:47 UTC (permalink / raw)
To: buildroot
In-Reply-To: <cover.1355435224.git.yann.morin.1998@free.fr>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
package/Config.in | 1 +
package/libbsd/Config.in | 10 ++++++++++
package/libbsd/libbsd.mk | 21 +++++++++++++++++++++
3 files changed, 32 insertions(+), 0 deletions(-)
create mode 100644 package/libbsd/Config.in
create mode 100644 package/libbsd/libbsd.mk
diff --git a/package/Config.in b/package/Config.in
index c90fcd8..e016378 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -508,6 +508,7 @@ source "package/libargtable2/Config.in"
source "package/argp-standalone/Config.in"
source "package/boost/Config.in"
source "package/libatomic_ops/Config.in"
+source "package/libbsd/Config.in"
source "package/libcap/Config.in"
source "package/libcap-ng/Config.in"
source "package/libdaemon/Config.in"
diff --git a/package/libbsd/Config.in b/package/libbsd/Config.in
new file mode 100644
index 0000000..7f2b55a
--- /dev/null
+++ b/package/libbsd/Config.in
@@ -0,0 +1,10 @@
+config BR2_PACKAGE_LIBBSD
+ bool "libbsd"
+ help
+ This library provides useful functions commonly found on BSD
+ systems, and lacking on others like GNU systems, thus making
+ it easier to port projects with strong BSD origins, without
+ needing to embed the same code over and over again on each
+ project.
+
+ http://libbsd.freedesktop.org/
diff --git a/package/libbsd/libbsd.mk b/package/libbsd/libbsd.mk
new file mode 100644
index 0000000..3af1002
--- /dev/null
+++ b/package/libbsd/libbsd.mk
@@ -0,0 +1,21 @@
+#############################################################
+#
+# libbsd
+#
+#############################################################
+
+LIBBSD_VERSION = 0.4.2
+LIBBSD_SOURCE = libbsd-$(LIBBSD_VERSION).tar.gz
+LIBBSD_SITE = http://libbsd.freedesktop.org/releases
+LIBBSD_LICENSE = BSD-3c MIT
+LIBBSD_LICENSE_FILES = LICENSE
+
+# man-pages are BSD-4c, so that license only matters
+# if doc is kept in the target rootfs
+ifeq ($(BR2_HAVE_DOCUMENTATION),y)
+LIBBSD_LICENSE += (libraries), BSD-4c (documentation)
+endif
+
+LIBBSD_INSTALL_STAGING = YES
+
+$(eval $(autotools-package))
--
1.7.2.5
^ permalink raw reply related
* [Buildroot] [PATCH 15/20] package/pmake: add host pmake
From: Yann E. MORIN @ 2012-12-13 21:47 UTC (permalink / raw)
To: buildroot
In-Reply-To: <cover.1355435224.git.yann.morin.1998@free.fr>
pmake is the make command used by the BSD.
It will used to build BSD-related packages, coming later.
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
package/pmake/pmake-100_mk.patch | 2624 ++++++++++++++++++++++++++++++
package/pmake/pmake-110_mkdep.patch | 230 +++
package/pmake/pmake-120_fixes.patch | 266 +++
package/pmake/pmake-130_maxpathlen.patch | 39 +
package/pmake/pmake-140_multiarch.patch | 354 ++++
package/pmake/pmake-150_mktemp.patch | 31 +
package/pmake/pmake.mk | 46 +
7 files changed, 3590 insertions(+), 0 deletions(-)
create mode 100644 package/pmake/pmake-100_mk.patch
create mode 100644 package/pmake/pmake-110_mkdep.patch
create mode 100644 package/pmake/pmake-120_fixes.patch
create mode 100644 package/pmake/pmake-130_maxpathlen.patch
create mode 100644 package/pmake/pmake-140_multiarch.patch
create mode 100644 package/pmake/pmake-150_mktemp.patch
create mode 100644 package/pmake/pmake.mk
diff --git a/package/pmake/pmake-100_mk.patch b/package/pmake/pmake-100_mk.patch
new file mode 100644
index 0000000..1786690
--- /dev/null
+++ b/package/pmake/pmake-100_mk.patch
@@ -0,0 +1,2624 @@
+Patch vampirised from Debian's package pmake_1.111-3.2:
+ http://snapshot.debian.org/archive/debian/20120601T033558Z/pool/main/p/pmake/
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+
+--- 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,536 @@
++# $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.
++
++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} \
++ -Wl,--whole-archive lib${LIB}_pic.a \
++ -nostdlib -L${DESTDIR}${LIBDIR} -R${LIBDIR} \
++ -Wl,--no-whole-archive ${LDADD} \
++ ${SHLIB_LDENDFILE}
++.else
++ $(CC) -shared ${SHLIB_SHFLAGS} -o ${.TARGET} \
++ ${SHLIB_LDSTARTFILE} \
++ -Wl,--whole-archive lib${LIB}_pic.a -Wl,--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,245 @@
++# $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
++
++# 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 Debian GNU.
++
++.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}
diff --git a/package/pmake/pmake-110_mkdep.patch b/package/pmake/pmake-110_mkdep.patch
new file mode 100644
index 0000000..70435cc
--- /dev/null
+++ b/package/pmake/pmake-110_mkdep.patch
@@ -0,0 +1,230 @@
+Patch vampirised from Debian's package pmake_1.111-3.2:
+ http://snapshot.debian.org/archive/debian/20120601T033558Z/pool/main/p/pmake/
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+
+--- 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/package/pmake/pmake-120_fixes.patch b/package/pmake/pmake-120_fixes.patch
new file mode 100644
index 0000000..5a57e4e
--- /dev/null
+++ b/package/pmake/pmake-120_fixes.patch
@@ -0,0 +1,266 @@
+Patch vampirised from Debian's package pmake_1.111-3.2:
+ http://snapshot.debian.org/archive/debian/20120601T033558Z/pool/main/p/pmake/
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+
+--- 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
diff --git a/package/pmake/pmake-130_maxpathlen.patch b/package/pmake/pmake-130_maxpathlen.patch
new file mode 100644
index 0000000..fa8fd5f
--- /dev/null
+++ b/package/pmake/pmake-130_maxpathlen.patch
@@ -0,0 +1,39 @@
+Patch vampirised from Debian's package pmake_1.111-3.2:
+ http://snapshot.debian.org/archive/debian/20120601T033558Z/pool/main/p/pmake/
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+
+diff -u pmake-1.111/main.c pmake-1.111/main.c
+--- pmake-1.111/main.c
++++ pmake-1.111/main.c
+@@ -636,6 +636,17 @@
+ char found_path[MAXPATHLEN + 1]; /* for searching for sys.mk */
+ struct timeval rightnow; /* to initialize random seed */
+
++#ifdef MAXPATHLEN_UNDEFINED
++ if (sysconf(_PC_PATH_MAX) > MAXPATHLEN) {
++ fprintf(stderr, "This operating system runs with "
++ "sysconf(_PC_PATH_MAX) > MAXPATHLEN\n(%ld > %ld). "
++ "Please change the guesstimated value at the bottom\n"
++ "of 'make.h' and recompile, or reduce the actual "
++ "value.\n", sysconf(_PC_PATH_MAX), (long)MAXPATHLEN);
++ return (255);
++ }
++#endif
++
+ /*
+ * Set the seed to produce a different random sequences
+ * on each program execution.
+--- pmake-1.111.orig/make.h
++++ pmake-1.111/make.h
+@@ -476,4 +476,10 @@
+ #define MAX(a, b) ((a > b) ? a : b)
+ #endif
+
++/* maybe Debian GNU/HURD */
++#ifndef MAXPATHLEN
++#define MAXPATHLEN 4096 /* some sensible value */
++#define MAXPATHLEN_UNDEFINED /* triggers check in main.c */
++#endif
++
+ #endif /* _MAKE_H_ */
diff --git a/package/pmake/pmake-140_multiarch.patch b/package/pmake/pmake-140_multiarch.patch
new file mode 100644
index 0000000..aef8fd3
--- /dev/null
+++ b/package/pmake/pmake-140_multiarch.patch
@@ -0,0 +1,354 @@
+Patch vampirised from Debian's package pmake_1.111-3.2:
+ http://snapshot.debian.org/archive/debian/20120601T033558Z/pool/main/p/pmake/
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+
+---
+ Makefile.boot | 5 +-
+ arch.c | 9 ---
+ main.c | 31 ++++++++++++
+ make.1 | 1
+ mk/bsd.lib.mk | 8 +++
+ mk/bsd.own.mk | 2
+ mk/bsd.prog.mk | 136 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 7 files changed, 179 insertions(+), 13 deletions(-)
+
+--- a/arch.c
++++ b/arch.c
+@@ -146,15 +146,6 @@ __RCSID("$NetBSD: arch.c,v 1.44 2005/02/
+ #include "dir.h"
+ #include "config.h"
+
+-#ifdef TARGET_MACHINE
+-#undef MAKE_MACHINE
+-#define MAKE_MACHINE TARGET_MACHINE
+-#endif
+-#ifdef TARGET_MACHINE_ARCH
+-#undef MAKE_MACHINE_ARCH
+-#define MAKE_MACHINE_ARCH TARGET_MACHINE_ARCH
+-#endif
+-
+ static Lst archives; /* Lst of archives we've already examined */
+
+ typedef struct Arch {
+--- a/main.c
++++ b/main.c
+@@ -146,6 +146,19 @@ __RCSID("$NetBSD: main.c,v 1.111 2005/06
+ #define DEFMAXLOCAL DEFMAXJOBS
+ #endif /* DEFMAXLOCAL */
+
++#ifdef TARGET_MACHINE
++#undef MAKE_MACHINE
++#define MAKE_MACHINE TARGET_MACHINE
++#endif
++#ifdef TARGET_MACHINE_ARCH
++#undef MAKE_MACHINE_ARCH
++#define MAKE_MACHINE_ARCH TARGET_MACHINE_ARCH
++#endif
++#ifdef TARGET_MACHINE_MULTIARCH
++#undef MAKE_MACHINE_MULTIARCH
++#define MAKE_MACHINE_MULTIARCH TARGET_MACHINE_MULTIARCH
++#endif
++
+ Lst create; /* Targets to be made */
+ time_t now; /* Time at start of make */
+ GNode *DEFAULT; /* .DEFAULT node */
+@@ -628,6 +641,7 @@ main(int argc, char **argv)
+ char mdpath[MAXPATHLEN];
+ char *machine = getenv("MACHINE");
+ const char *machine_arch = getenv("MACHINE_ARCH");
++ const char *machine_multiarch = getenv("MACHINE_MULTIARCH");
+ char *syspath = getenv("MAKESYSPATH");
+ Lst sysMkPath; /* Path of sys.mk */
+ char *cp = NULL, *start;
+@@ -711,8 +725,8 @@ main(int argc, char **argv)
+ * so we can share an executable for similar machines.
+ * (i.e. m68k: amiga hp300, mac68k, sun3, ...)
+ *
+- * Note that both MACHINE and MACHINE_ARCH are decided at
+- * run-time.
++ * Note that all of MACHINE, MACHINE_ARCH and MACHINE_MULTIARCH
++ * are decided at run-time.
+ */
+ if (!machine) {
+ #ifdef MAKE_NATIVE
+@@ -745,6 +759,18 @@ main(int argc, char **argv)
+ #endif
+ }
+
++ if (!machine_multiarch) {
++#ifndef MACHINE_MULTIARCH
++#ifdef MAKE_MACHINE_MULTIARCH
++ machine_multiarch = MAKE_MACHINE_MULTIARCH;
++#else
++ machine_multiarch = "unknown-unknown-unknown";
++#endif
++#else
++ machine_multiarch = MACHINE_MULTIARCH;
++#endif
++ }
++
+ /*
+ * Just in case MAKEOBJDIR wants us to do something tricky.
+ */
+@@ -753,6 +779,7 @@ main(int argc, char **argv)
+ Var_Set(".CURDIR", curdir, VAR_GLOBAL, 0);
+ Var_Set("MACHINE", machine, VAR_GLOBAL, 0);
+ Var_Set("MACHINE_ARCH", machine_arch, VAR_GLOBAL, 0);
++ Var_Set("MACHINE_MULTIARCH", machine_multiarch, VAR_GLOBAL, 0);
+ #ifdef MAKE_VERSION
+ Var_Set("MAKE_VERSION", MAKE_VERSION, VAR_GLOBAL, 0);
+ #endif
+--- a/make.1
++++ b/make.1
+@@ -1569,6 +1569,7 @@ If no sources are specified, any previou
+ uses the following environment variables, if they exist:
+ .Ev MACHINE ,
+ .Ev MACHINE_ARCH ,
++.Ev MACHINE_MULTIARCH ,
+ .Ev MAKE ,
+ .Ev MAKEFLAGS ,
+ .Ev MAKEOBJDIR ,
+--- a/Makefile.boot
++++ b/Makefile.boot
+@@ -4,7 +4,8 @@
+ #
+ # You only want to use this if you aren't running NetBSD.
+ #
+-# modify MACHINE and MACHINE_ARCH as appropriate for your target architecture
++# modify MACHINE, MACHINE_ARCH and MACHINE_MULTIARCH as appropriate for
++# your target architecture
+ #
+ CC=gcc -O -g
+
+@@ -13,11 +14,13 @@ CC=gcc -O -g
+
+ MACHINE=i386
+ MACHINE_ARCH=i386
++MACHINE_MULTIARCH=i386-linux-gnu
+ # tested on HP-UX 10.20
+ #MAKE_MACHINE=hp700
+ #MAKE_MACHINE_ARCH=hppa
+ CFLAGS= -DTARGET_MACHINE=\"${MACHINE}\" \
+ -DTARGET_MACHINE_ARCH=\"${MACHINE_ARCH}\" \
++ -DTARGET_MACHINE_MULTIARCH=\"${MACHINE_MULTIARCH}\" \
+ -DMAKE_MACHINE=\"${MACHINE}\"
+ LIBS=
+
+--- a/mk/bsd.prog.mk
++++ b/mk/bsd.prog.mk
+@@ -19,8 +19,16 @@ CFLAGS+= ${COPTS}
+
+ # ELF platforms depend on crtbegin.o and crtend.o
+ .if ${OBJECT_FMT} == "ELF"
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/crtbegin.o)
++LIBCRTBEGIN?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/crtbegin.o
++.else
+ LIBCRTBEGIN?= ${DESTDIR}/usr/lib/crtbegin.o
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/crtend.o)
++LIBCRTEND?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/crtend.o
++.else
+ LIBCRTEND?= ${DESTDIR}/usr/lib/crtend.o
++.endif
+ .else
+ LIBCRTBEGIN?=
+ LIBCRTEND?=
+@@ -28,38 +36,166 @@ LIBCRTEND?=
+
+ LIBCRT0?=
+
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libbz2.a)
++LIBBZ2?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libbz2.a
++.else
+ LIBBZ2?= ${DESTDIR}/usr/lib/libbz2.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libc.a)
++LIBC?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libc.a
++.else
+ LIBC?= ${DESTDIR}/usr/lib/libc.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libc_pic.a)
++LIBC_PIC?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libc_pic.a
++.else
+ LIBC_PIC?= ${DESTDIR}/usr/lib/libc_pic.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libcompat.a)
++LIBCOMPAT?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libcompat.a
++.else
+ LIBCOMPAT?= ${DESTDIR}/usr/lib/libcompat.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libcrypt.a)
++LIBCRYPT?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libcrypt.a
++.else
+ LIBCRYPT?= ${DESTDIR}/usr/lib/libcrypt.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libcurses.a)
++LIBCURSES?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libcurses.a
++.else
+ LIBCURSES?= ${DESTDIR}/usr/lib/libcurses.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libdbm.a)
++LIBDBM?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libdbm.a
++.else
+ LIBDBM?= ${DESTDIR}/usr/lib/libdbm.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libdes.a)
++LIBDES?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libdes.a
++.else
+ LIBDES?= ${DESTDIR}/usr/lib/libdes.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libedit.a)
++LIBEDIT?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libedit.a
++.else
+ LIBEDIT?= ${DESTDIR}/usr/lib/libedit.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libgcc.a)
++LIBGCC?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libgcc.a
++.else
+ LIBGCC?= ${DESTDIR}/usr/lib/libgcc.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libgnumalloc.a)
++LIBGNUMALLOC?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libgnumalloc.a
++.else
+ LIBGNUMALLOC?= ${DESTDIR}/usr/lib/libgnumalloc.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libkdb.a)
++LIBKDB?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libkdb.a
++.else
+ LIBKDB?= ${DESTDIR}/usr/lib/libkdb.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libkrb.a)
++LIBKRB?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libkrb.a
++.else
+ LIBKRB?= ${DESTDIR}/usr/lib/libkrb.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libkvm.a)
++LIBKVM?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libkvm.a
++.else
+ LIBKVM?= ${DESTDIR}/usr/lib/libkvm.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libl.a)
++LIBL?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libl.a
++.else
+ LIBL?= ${DESTDIR}/usr/lib/libl.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libm.a)
++LIBM?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libm.a
++.else
+ LIBM?= ${DESTDIR}/usr/lib/libm.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libmp.a)
++LIBMP?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libmp.a
++.else
+ LIBMP?= ${DESTDIR}/usr/lib/libmp.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libntp.a)
++LIBNTP?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libntp.a
++.else
+ LIBNTP?= ${DESTDIR}/usr/lib/libntp.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libobjc.a)
++LIBOBJC?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libobjc.a
++.else
+ LIBOBJC?= ${DESTDIR}/usr/lib/libobjc.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libpc.a)
++LIBPC?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libpc.a
++.else
+ LIBPC?= ${DESTDIR}/usr/lib/libpc.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libpcap.a)
++LIBPCAP?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libpcap.a
++.else
+ LIBPCAP?= ${DESTDIR}/usr/lib/libpcap.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libplot.a)
++LIBPLOT?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libplot.a
++.else
+ LIBPLOT?= ${DESTDIR}/usr/lib/libplot.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libposix.a)
++LIBPOSIX?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libposix.a
++.else
+ LIBPOSIX?= ${DESTDIR}/usr/lib/libposix.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libresolv.a)
++LIBRESOLV?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libresolv.a
++.else
+ LIBRESOLV?= ${DESTDIR}/usr/lib/libresolv.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/librpcsvc.a)
++LIBRPCSVC?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/librpcsvc.a
++.else
+ LIBRPCSVC?= ${DESTDIR}/usr/lib/librpcsvc.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libskey.a)
++LIBSKEY?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libskey.a
++.else
+ LIBSKEY?= ${DESTDIR}/usr/lib/libskey.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libtermcap.a)
++LIBTERMCAP?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libtermcap.a
++.else
+ LIBTERMCAP?= ${DESTDIR}/usr/lib/libtermcap.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libtelnet.a)
++LIBTELNET?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libtelnet.a
++.else
+ LIBTELNET?= ${DESTDIR}/usr/lib/libtelnet.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libutil.a)
++LIBUTIL?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libutil.a
++.else
+ LIBUTIL?= ${DESTDIR}/usr/lib/libutil.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libwrap.a)
++LIBWRAP?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libwrap.a
++.else
+ LIBWRAP?= ${DESTDIR}/usr/lib/libwrap.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/liby.a)
++LIBY?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/liby.a
++.else
+ LIBY?= ${DESTDIR}/usr/lib/liby.a
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libz.a)
++LIBZ?= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/libz.a
++.else
+ LIBZ?= ${DESTDIR}/usr/lib/libz.a
++.endif
+
+ .if defined(SHAREDSTRINGS)
+ CLEANFILES+=strings
+--- a/mk/bsd.lib.mk
++++ b/mk/bsd.lib.mk
+@@ -115,9 +115,17 @@ APICFLAGS?= -k
+ .if ${OBJECT_FMT} == "ELF"
+ SHLIB_SOVERSION=${SHLIB_MAJOR}
+ SHLIB_SHFLAGS=-soname lib${LIB}.so.${SHLIB_SOVERSION}
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/crtbeginS.o)
++SHLIB_LDSTARTFILE= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/crtbeginS.o
++.else
+ SHLIB_LDSTARTFILE= ${DESTDIR}/usr/lib/crtbeginS.o
++.endif
++.if exists(${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/crtendS.o)
++SHLIB_LDENDFILE= ${DESTDIR}/usr/lib/${MACHINE_MULTIARCH}/crtendS.o
++.else
+ SHLIB_LDENDFILE= ${DESTDIR}/usr/lib/crtendS.o
+ .endif
++.endif
+
+ CFLAGS+= ${COPTS}
+
+--- a/mk/bsd.own.mk
++++ b/mk/bsd.own.mk
+@@ -42,7 +42,7 @@ INFOGRP?= root
+ INFOOWN?= root
+ INFOMODE?= ${NONBINMODE}
+
+-LIBDIR?= /usr/lib
++LIBDIR?= /usr/lib/${MACHINE_MULTIARCH}
+ LINTLIBDIR?= /usr/libdata/lint
+ LIBGRP?= ${BINGRP}
+ LIBOWN?= ${BINOWN}
diff --git a/package/pmake/pmake-150_mktemp.patch b/package/pmake/pmake-150_mktemp.patch
new file mode 100644
index 0000000..5ccb2a8
--- /dev/null
+++ b/package/pmake/pmake-150_mktemp.patch
@@ -0,0 +1,31 @@
+Patch vampirised from Debian's package pmake_1.111-3.2:
+ http://snapshot.debian.org/archive/debian/20120601T033558Z/pool/main/p/pmake/
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+
+Index: pmake-1.111/mk/bsd.lib.mk
+===================================================================
+--- pmake-1.111.orig/mk/bsd.lib.mk 2011-05-29 15:38:35.843998781 +0200
++++ pmake-1.111/mk/bsd.lib.mk 2011-05-29 15:39:16.091998780 +0200
+@@ -299,7 +299,7 @@
+
+ .if defined(SRCS)
+ afterdepend: .depend
+- @(TMP=/tmp/_depend$$$$; \
++ @(TMP=`mktemp -t _dependXXXXXXXXXX` || exit $$?; \
+ sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.so \1.ln:/' \
+ < .depend > $$TMP; \
+ mv $$TMP .depend)
+Index: pmake-1.111/mk/bsd.prog.mk
+===================================================================
+--- pmake-1.111.orig/mk/bsd.prog.mk 2011-05-29 15:39:21.999998780 +0200
++++ pmake-1.111/mk/bsd.prog.mk 2011-05-29 15:39:30.923998779 +0200
+@@ -260,7 +260,7 @@
+
+ .if defined(SRCS)
+ afterdepend: .depend
+- @(TMP=/tmp/_depend$$$$; \
++ @(TMP=`mktemp -t _dependXXXXXXXXXX` || exit $$?; \
+ sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.ln:/' \
+ < .depend > $$TMP; \
+ mv $$TMP .depend)
diff --git a/package/pmake/pmake.mk b/package/pmake/pmake.mk
new file mode 100644
index 0000000..efd36f5
--- /dev/null
+++ b/package/pmake/pmake.mk
@@ -0,0 +1,46 @@
+#############################################################
+#
+# pmake
+#
+##############################################################
+
+PMAKE_VERSION = 1.111
+PMAKE_SOURCE = pmake_$(PMAKE_VERSION).orig.tar.gz
+PMAKE_SITE = http://snapshot.debian.org/archive/debian/20120601T033558Z/pool/main/p/pmake
+PMAKE_LICENSE = BSD-3c BSD-4c
+# No license file. License texts are spread in the boilerplates
+# of each individual source files; some are BSD-3c, some BSD-4c.
+
+# CFLAGS vampirised from Debian's rules, adapted to buildroot variables
+HOST_PMAKE_CFLAGS = -O2 -g -Wall -D__COPYRIGHT\(x\)= -D__RCSID\(x\)= -I. \
+ -DMACHINE=\\\"buildroot\\\" \
+ -DMACHINE_ARCH=\\\"$(ARCH)\\\" -DMACHINE_MULTIARCH=\\\"\\\" \
+ -DHAVE_SETENV -DHAVE_STRERROR -DHAVE_STRDUP -DHAVE_STRFTIME \
+ -DHAVE_VSNPRINTF -D_GNU_SOURCE -Wno-unused
+
+define HOST_PMAKE_BUILD_CMDS
+ $(MAKE) -C $(@D) -f Makefile.boot CFLAGS="$(HOST_PMAKE_CFLAGS)"
+endef
+
+# The generated file is named bmake, but we want pmake; but:
+# - pmake uses support files (in mk/)
+# - it's not possible to tell pmake, at build-time, where to expect
+# these support files, and pmake expects them in /usr/share/mk/
+# - but pmake has an option to override that search path at runtime
+# - so we install bmake as bmake
+# - and we install a wraper named pmake that calls pmake with the
+# appropriate search path
+define HOST_PMAKE_INSTALL_CMDS
+ $(INSTALL) -m 0755 $(@D)/bmake $(HOST_DIR)/usr/bin/bmake
+ $(INSTALL) -d -m 0755 $(HOST_DIR)/usr/share/pmake/mk
+ for mk in $(@D)/mk/*; do \
+ $(INSTALL) -m 0644 $${mk} $(HOST_DIR)/usr/share/pmake/mk; \
+ done
+ printf '#!/bin/sh\nexec %s -m %s $$@\n' \
+ $(HOST_DIR)/usr/bin/bmake \
+ $(HOST_DIR)/usr/share/pmake/mk \
+ >$(HOST_DIR)/usr/bin/pmake
+ chmod 0755 $(HOST_DIR)/usr/bin/pmake
+endef
+
+$(eval $(host-generic-package))
--
1.7.2.5
^ permalink raw reply related
* [Buildroot] [PATCH 14/20] package/keyutils: new package
From: Yann E. MORIN @ 2012-12-13 21:47 UTC (permalink / raw)
To: buildroot
In-Reply-To: <cover.1355435224.git.yann.morin.1998@free.fr>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Jarkko Sakkinen <jarkko.sakkinen@iki.fi>
---
package/Config.in | 1 +
package/keyutils/Config.in | 7 ++
.../keyutils-01-memleak-from-realloc.patch | 51 +++++++++++++++
package/keyutils/keyutils-02-another-memleak.patch | 32 ++++++++++
package/keyutils/keyutils-03-cifs.patch | 15 +++++
.../keyutils-04-Makefile-for-buildroot.patch | 65 ++++++++++++++++++++
.../keyutils/keyutils-05-fix-install-rule.patch | 19 ++++++
package/keyutils/keyutils.mk | 32 ++++++++++
8 files changed, 222 insertions(+), 0 deletions(-)
create mode 100644 package/keyutils/Config.in
create mode 100644 package/keyutils/keyutils-01-memleak-from-realloc.patch
create mode 100644 package/keyutils/keyutils-02-another-memleak.patch
create mode 100644 package/keyutils/keyutils-03-cifs.patch
create mode 100644 package/keyutils/keyutils-04-Makefile-for-buildroot.patch
create mode 100644 package/keyutils/keyutils-05-fix-install-rule.patch
create mode 100644 package/keyutils/keyutils.mk
diff --git a/package/Config.in b/package/Config.in
index 6ab638d..c90fcd8 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -738,6 +738,7 @@ endif
source "package/bwm-ng/Config.in"
source "package/cpuload/Config.in"
source "package/htop/Config.in"
+source "package/keyutils/Config.in"
source "package/kmod/Config.in"
if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
source "package/module-init-tools/Config.in"
diff --git a/package/keyutils/Config.in b/package/keyutils/Config.in
new file mode 100644
index 0000000..9b5a24b
--- /dev/null
+++ b/package/keyutils/Config.in
@@ -0,0 +1,7 @@
+config BR2_PACKAGE_KEYUTILS
+ bool "keyutils"
+ help
+ These tools are used to control the key management system
+ built into the Linux kernel.
+
+ http://people.redhat.com/~dhowells/keyutils/
diff --git a/package/keyutils/keyutils-01-memleak-from-realloc.patch b/package/keyutils/keyutils-01-memleak-from-realloc.patch
new file mode 100644
index 0000000..0faa9d8
--- /dev/null
+++ b/package/keyutils/keyutils-01-memleak-from-realloc.patch
@@ -0,0 +1,51 @@
+Patch vampirised from Debian's packaging of keyutils-1.4
+
+Author: Michael Gebetsroither <gebi@grml.org>
+Description: Fixed memleak from realloc (Closes: #496466).
+
+diff -Naurp keyutils.orig/keyutils.c keyutils/keyutils.c
+--- keyutils.orig/keyutils.c 2008-08-09 21:46:52.000000000 +0200
++++ keyutils/keyutils.c 2008-08-25 13:38:07.000000000 +0200
+@@ -165,6 +165,24 @@ long keyctl_assume_authority(key_serial_
+ return keyctl(KEYCTL_ASSUME_AUTHORITY, id);
+ }
+
++
++/*****************************************************************************/
++/*
++ * plain realloc is just crazy
++ */
++static void* __xrealloc(void* ptr, size_t size)
++{
++ void* ret;
++
++ ret = realloc(ptr, size);
++ if(!ret) {
++ free(ptr);
++ return 0;
++ }
++ return ret;
++}
++
++
+ /*****************************************************************************/
+ /*
+ * fetch key description into an allocated buffer
+@@ -194,7 +212,7 @@ int keyctl_describe_alloc(key_serial_t i
+ break;
+
+ buflen = ret;
+- buf = realloc(buf, buflen);
++ buf = __xrealloc(buf, buflen);
+ if (!buf)
+ return -1;
+ }
+@@ -233,7 +251,7 @@ int keyctl_read_alloc(key_serial_t id, v
+ break;
+
+ buflen = ret;
+- buf = realloc(buf, buflen + 1);
++ buf = __xrealloc(buf, buflen + 1);
+ if (!buf)
+ return -1;
+ }
diff --git a/package/keyutils/keyutils-02-another-memleak.patch b/package/keyutils/keyutils-02-another-memleak.patch
new file mode 100644
index 0000000..f74fd79
--- /dev/null
+++ b/package/keyutils/keyutils-02-another-memleak.patch
@@ -0,0 +1,32 @@
+Patch vampirised from Debian's packaging of keyutils-1.4
+
+Author: Michael Gebetsroither <gebi@grml.org>
+Description: Fixed another memleak (Closes: #496466).
+
+diff -Naurp keyutils.orig/keyutils.c keyutils/keyutils.c
+--- keyutils.orig/keyutils.c 2008-08-09 21:46:52.000000000 +0200
++++ keyutils/keyutils.c 2008-08-25 13:38:25.000000000 +0200
+@@ -187,8 +187,10 @@ int keyctl_describe_alloc(key_serial_t i
+
+ for (;;) {
+ ret = keyctl_describe(id, buf, buflen);
+- if (ret < 0)
++ if (ret < 0) {
++ free(buf);
+ return -1;
++ }
+
+ if (buflen >= ret)
+ break;
+@@ -226,8 +228,10 @@ int keyctl_read_alloc(key_serial_t id, v
+
+ for (;;) {
+ ret = keyctl_read(id, buf, buflen);
+- if (ret < 0)
++ if (ret < 0) {
++ free(buf);
+ return -1;
++ }
+
+ if (buflen >= ret)
+ break;
diff --git a/package/keyutils/keyutils-03-cifs.patch b/package/keyutils/keyutils-03-cifs.patch
new file mode 100644
index 0000000..b2903f9
--- /dev/null
+++ b/package/keyutils/keyutils-03-cifs.patch
@@ -0,0 +1,15 @@
+Patch vampirised from Debian's packaging of keyutils-1.4
+
+Author: Marcus Meissner <meissner@suse.de>
+Description: Added 2 cifs helpers to request-key.conf (for CIFS DFS support)
+
+diff -Naurp keyutils.orig/request-key.conf keyutils/request-key.conf
+--- keyutils.orig/request-key.conf 2008-09-07 23:53:10.000000000 +0000
++++ keyutils/request-key.conf 2009-02-05 00:53:00.000000000 +0000
+@@ -34,4 +34,6 @@
+ create user debug:* negate /bin/keyctl negate %k 30 %S
+ create user debug:loop:* * |/bin/cat
+ create user debug:* * /usr/share/keyutils/request-key-debug.sh %k %d %c %S
++create cifs.spnego * * /usr/sbin/cifs.upcall -c %k
++create dns_resolver * * /usr/sbin/cifs.upcall %k
+ negate * * * /bin/keyctl negate %k 30 %S
diff --git a/package/keyutils/keyutils-04-Makefile-for-buildroot.patch b/package/keyutils/keyutils-04-Makefile-for-buildroot.patch
new file mode 100644
index 0000000..e10abd5
--- /dev/null
+++ b/package/keyutils/keyutils-04-Makefile-for-buildroot.patch
@@ -0,0 +1,65 @@
+diff -durN keyutils-1.5.5.orig/Makefile keyutils-1.5.5/Makefile
+--- keyutils-1.5.5.orig/Makefile 2011-11-30 16:27:43.000000000 +0100
++++ keyutils-1.5.5/Makefile 2012-08-14 17:06:07.064412101 +0200
+@@ -1,7 +1,5 @@
+-CPPFLAGS := -I.
+-CFLAGS := -g -Wall -Werror
+-INSTALL := install
+-DESTDIR :=
++CPPFLAGS += -I.
++CFLAGS += -g -Wall -Werror
+ SPECFILE := keyutils.spec
+ NO_GLIBC_KEYERR := 0
+ NO_ARLIB := 0
+@@ -14,7 +12,7 @@
+ MAN5 := /usr/share/man/man5
+ MAN8 := /usr/share/man/man8
+ INCLUDEDIR := /usr/include
+-LNS := ln -sf
++LNS := $(LN) -sf
+
+ ###############################################################################
+ #
+@@ -48,29 +46,6 @@
+
+ ###############################################################################
+ #
+-# Guess at the appropriate lib directory and word size
+-#
+-###############################################################################
+-LIBDIR := $(shell ldd /usr/bin/make | grep '\(/libc\)' | sed -e 's!.*\(/.*\)/libc[.].*!\1!')
+-USRLIBDIR := $(patsubst /lib/%,/usr/lib/%,$(LIBDIR))
+-BUILDFOR := $(shell file /usr/bin/make | sed -e 's!.*ELF \(32\|64\)-bit.*!\1!')-bit
+-
+-LNS := ln -sf
+-
+-ifeq ($(BUILDFOR),32-bit)
+-CFLAGS += -m32
+-LIBDIR := /lib
+-USRLIBDIR := /usr/lib
+-else
+-ifeq ($(BUILDFOR),64-bit)
+-CFLAGS += -m64
+-LIBDIR := /lib64
+-USRLIBDIR := /usr/lib64
+-endif
+-endif
+-
+-###############################################################################
+-#
+ # This is necessary if glibc doesn't know about the key management error codes
+ #
+ ###############################################################################
+@@ -110,10 +85,10 @@
+
+
+ $(DEVELLIB): $(SONAME)
+- ln -sf $< $@
++ $(LNS) $< $@
+
+ $(SONAME): $(LIBNAME)
+- ln -sf $< $@
++ $(LNS) $< $@
+
+ LIBVERS := -shared -Wl,-soname,$(SONAME) -Wl,--version-script,version.lds
+
diff --git a/package/keyutils/keyutils-05-fix-install-rule.patch b/package/keyutils/keyutils-05-fix-install-rule.patch
new file mode 100644
index 0000000..74e5670
--- /dev/null
+++ b/package/keyutils/keyutils-05-fix-install-rule.patch
@@ -0,0 +1,19 @@
+Makefile: fix install rule
+
+Do not link the .so with an absolute path, otherwise it may point to
+the host library.
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+
+diff -durN keyutils-1.5.5.orig/Makefile keyutils-1.5.5/Makefile
+--- keyutils-1.5.5.orig/Makefile 2012-10-22 20:11:57.188548033 +0200
++++ keyutils-1.5.5/Makefile 2012-10-22 20:14:40.868236838 +0200
+@@ -127,7 +127,7 @@
+ $(INSTALL) -D $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBNAME)
+ $(LNS) $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SONAME)
+ mkdir -p $(DESTDIR)$(USRLIBDIR)
+- $(LNS) $(LIBDIR)/$(SONAME) $(DESTDIR)$(USRLIBDIR)/$(DEVELLIB)
++ $(LNS) $(SONAME) $(DESTDIR)$(USRLIBDIR)/$(DEVELLIB)
+ $(INSTALL) -D keyctl $(DESTDIR)$(BINDIR)/keyctl
+ $(INSTALL) -D request-key $(DESTDIR)$(SBINDIR)/request-key
+ $(INSTALL) -D request-key-debug.sh $(DESTDIR)$(SHAREDIR)/request-key-debug.sh
diff --git a/package/keyutils/keyutils.mk b/package/keyutils/keyutils.mk
new file mode 100644
index 0000000..184b58d
--- /dev/null
+++ b/package/keyutils/keyutils.mk
@@ -0,0 +1,32 @@
+#############################################################
+#
+# keyutils
+#
+##############################################################
+
+KEYUTILS_VERSION = 1.5.5
+KEYUTILS_SOURCE = keyutils-$(KEYUTILS_VERSION).tar.bz2
+KEYUTILS_SITE = http://people.redhat.com/~dhowells/keyutils
+KEYUTILS_LICENSE = GPLv2+ LGPLv2.1+
+KEYUTILS_LICENSE_FILES = LICENCE.GPL LICENCE.LGPL
+KEYUTILS_INSTALL_STAGING = YES
+
+KEYUTILS_MAKE_ENV = \
+ INSTALL=$(INSTALL) \
+ LIBDIR=/usr/lib \
+ USRLIBDIR=/usr/lib \
+ LN=$(HOSTLN) \
+
+define KEYUTILS_BUILD_CMDS
+ $(KEYUTILS_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D)
+endef
+
+define KEYUTILS_INSTALL_STAGING_CMDS
+ $(KEYUTILS_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(STAGING_DIR) install
+endef
+
+define KEYUTILS_INSTALL_TARGET_CMDS
+ $(KEYUTILS_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install
+endef
+
+$(eval $(generic-package))
--
1.7.2.5
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox