2020-06-05 19:05:22 +02:00
|
|
|
# $NetBSD: bsd.pkg.subdir.mk,v 1.71 2020/06/05 17:05:22 rillig Exp $
|
2005-11-14 05:41:17 +01:00
|
|
|
# Derived from: FreeBSD Id: bsd.port.subdir.mk,v 1.19 1997/03/09 23:10:56 wosch Exp
|
1997-08-20 12:21:05 +02:00
|
|
|
# from: @(#)bsd.subdir.mk 5.9 (Berkeley) 2/1/91
|
|
|
|
#
|
1998-04-15 12:45:05 +02:00
|
|
|
# The include file <bsd.pkg.subdir.mk> contains the default targets
|
2005-11-14 05:41:17 +01:00
|
|
|
# for building ports subdirectories.
|
1997-08-20 12:21:05 +02:00
|
|
|
#
|
|
|
|
#
|
|
|
|
# +++ variables +++
|
|
|
|
#
|
|
|
|
# OPSYS Get the operating system type [`uname -s`]
|
|
|
|
#
|
|
|
|
# SUBDIR A list of subdirectories that should be built as well.
|
|
|
|
# Each of the targets will execute the same target in the
|
|
|
|
# subdirectories.
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# +++ targets +++
|
|
|
|
#
|
|
|
|
# README.html:
|
|
|
|
# Creating README.html for package.
|
|
|
|
#
|
|
|
|
# afterinstall, all, beforeinstall, build, checksum, clean,
|
2005-11-14 05:41:17 +01:00
|
|
|
# configure, deinstall, depend, describe, extract, fetch, fetch-list,
|
1998-01-28 00:04:48 +01:00
|
|
|
# install, package, readmes, realinstall, reinstall, tags,
|
2020-06-05 19:05:22 +02:00
|
|
|
# mirror-distfiles, ${PKG_MISC_TARGETS}
|
1997-08-20 12:21:05 +02:00
|
|
|
#
|
|
|
|
|
2007-10-13 13:04:15 +02:00
|
|
|
.include "misc/common.mk"
|
1997-08-20 12:21:05 +02:00
|
|
|
|
1999-12-15 16:52:17 +01:00
|
|
|
AWK?= /usr/bin/awk
|
2001-02-16 14:06:17 +01:00
|
|
|
CAT?= /bin/cat
|
1998-09-23 15:09:32 +02:00
|
|
|
BASENAME?= /usr/bin/basename
|
2000-06-03 23:18:47 +02:00
|
|
|
ECHO?= echo
|
1999-05-18 01:34:37 +02:00
|
|
|
ECHO_MSG?= ${ECHO}
|
1998-09-23 15:09:32 +02:00
|
|
|
MV?= /bin/mv
|
|
|
|
RM?= /bin/rm
|
|
|
|
SED?= /usr/bin/sed
|
|
|
|
SORT?= /usr/bin/sort
|
1997-08-20 12:21:05 +02:00
|
|
|
|
|
|
|
_SUBDIRUSE: .USE
|
1999-07-02 14:56:32 +02:00
|
|
|
@for entry in "" ${SUBDIR}; do \
|
|
|
|
if [ "X$$entry" = "X" ]; then continue; fi; \
|
1997-08-20 12:21:05 +02:00
|
|
|
OK=""; \
|
1999-07-02 14:56:32 +02:00
|
|
|
for dud in "" ${DUDS}; do \
|
|
|
|
if [ "X$$dud" = "X" ]; then continue; fi; \
|
1997-08-20 12:21:05 +02:00
|
|
|
if [ $${dud} = $${entry} ]; then \
|
|
|
|
OK="false"; \
|
1999-05-18 00:24:15 +02:00
|
|
|
${ECHO_MSG} "===> ${_THISDIR_}$${entry} skipped"; \
|
1997-08-20 12:21:05 +02:00
|
|
|
fi; \
|
|
|
|
done; \
|
1998-09-23 15:09:32 +02:00
|
|
|
if [ -d ${.CURDIR}/$${entry}.${MACHINE} ]; then \
|
1997-08-20 12:21:05 +02:00
|
|
|
edir=$${entry}.${MACHINE}; \
|
1998-09-23 15:09:32 +02:00
|
|
|
elif [ -d ${.CURDIR}/$${entry} ]; then \
|
1997-08-20 12:21:05 +02:00
|
|
|
edir=$${entry}; \
|
|
|
|
else \
|
|
|
|
OK="false"; \
|
1999-05-18 00:24:15 +02:00
|
|
|
${ECHO_MSG} "===> ${_THISDIR_}$${entry} non-existent"; \
|
1997-08-20 12:21:05 +02:00
|
|
|
fi; \
|
|
|
|
if [ "$$OK" = "" ]; then \
|
|
|
|
cd ${.CURDIR}/$${edir}; \
|
2000-05-29 02:54:25 +02:00
|
|
|
${ECHO_MSG} "===> ${_THISDIR_}$${edir}"; \
|
2006-07-27 23:46:45 +02:00
|
|
|
${RECURSIVE_MAKE} ${MAKEFLAGS} "_THISDIR_=${_THISDIR_}$${edir}/" \
|
2000-06-03 17:25:16 +02:00
|
|
|
${.TARGET:realinstall=install} || true; \
|
1997-08-20 12:21:05 +02:00
|
|
|
fi; \
|
|
|
|
done
|
|
|
|
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
.for __target in all fetch package extract configure build clean \
|
1998-12-29 23:31:53 +01:00
|
|
|
cleandir distclean depend describe reinstall tags checksum \
|
2005-02-22 22:02:15 +01:00
|
|
|
makedistinfo makepatchsum makesum mirror-distfiles deinstall \
|
|
|
|
show-downlevel show-pkgsrc-dir show-var show-vars \
|
2020-06-05 19:05:22 +02:00
|
|
|
fetch-list-one-pkg \
|
2005-02-22 22:02:15 +01:00
|
|
|
fetch-list-recursive update clean-update lint \
|
2007-05-10 01:33:51 +02:00
|
|
|
check-vulnerable pbulk-index \
|
2001-03-06 17:14:35 +01:00
|
|
|
${PKG_MISC_TARGETS}
|
1997-08-20 12:21:05 +02:00
|
|
|
.if !target(__target)
|
2006-01-29 02:39:01 +01:00
|
|
|
.PHONY: ${__target}
|
1997-08-20 12:21:05 +02:00
|
|
|
${__target}: _SUBDIRUSE
|
|
|
|
.endif
|
|
|
|
.endfor
|
|
|
|
|
|
|
|
.if !target(install)
|
|
|
|
.if !target(beforeinstall)
|
|
|
|
beforeinstall:
|
|
|
|
.endif
|
|
|
|
.if !target(afterinstall)
|
|
|
|
afterinstall:
|
|
|
|
.endif
|
|
|
|
install: afterinstall
|
|
|
|
afterinstall: realinstall
|
|
|
|
realinstall: beforeinstall _SUBDIRUSE
|
|
|
|
.endif
|
|
|
|
|
|
|
|
.if !target(readmes)
|
|
|
|
readmes: readme _SUBDIRUSE
|
|
|
|
.endif
|
|
|
|
|
|
|
|
.if !target(readme)
|
|
|
|
readme:
|
2006-07-27 23:46:45 +02:00
|
|
|
@${RECURSIVE_MAKE} ${MAKEFLAGS} README.html _README_TYPE_FLAG=--ftp _README_TYPE=$@
|
1998-09-23 15:09:32 +02:00
|
|
|
.endif
|
|
|
|
|
|
|
|
.if !target(cdrom-readme)
|
|
|
|
cdrom-readme:
|
2006-07-27 23:46:45 +02:00
|
|
|
@${RECURSIVE_MAKE} ${MAKEFLAGS} README.html _README_TYPE_FLAG=--cdrom README_TYPE=$@
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
1998-05-15 14:14:24 +02:00
|
|
|
.if defined(PKGSRCTOP)
|
1998-04-24 11:15:57 +02:00
|
|
|
README= templates/README.top
|
1997-08-20 12:21:05 +02:00
|
|
|
.else
|
1998-04-24 11:15:57 +02:00
|
|
|
README= ../templates/README.category
|
1997-08-20 12:21:05 +02:00
|
|
|
.endif
|
|
|
|
|
1998-09-23 15:09:32 +02:00
|
|
|
HTMLIFY= ${SED} -e 's/&/\&/g' -e 's/>/\>/g' -e 's/</\</g'
|
1997-11-21 17:01:54 +01:00
|
|
|
|
2001-02-16 14:06:17 +01:00
|
|
|
show-comment:
|
2005-05-23 12:24:35 +02:00
|
|
|
@if [ ${COMMENT:Q}"" ]; then \
|
2005-05-23 09:57:02 +02:00
|
|
|
${ECHO} ${COMMENT:Q}; \
|
2001-11-28 11:21:46 +01:00
|
|
|
elif [ -f COMMENT ] ; then \
|
|
|
|
${CAT} COMMENT; \
|
2001-02-16 14:06:17 +01:00
|
|
|
else \
|
|
|
|
${ECHO} '(no description)'; \
|
|
|
|
fi
|
|
|
|
|
1999-06-28 13:42:28 +02:00
|
|
|
.if !target(show-distfiles)
|
|
|
|
show-distfiles:
|
|
|
|
@for entry in ${SUBDIR}; do \
|
|
|
|
if [ -d ${.CURDIR}/$${entry}.${MACHINE} ]; then \
|
|
|
|
edir=$${entry}.${MACHINE}; \
|
|
|
|
elif [ -d ${.CURDIR}/$${entry} ]; then \
|
|
|
|
edir=$${entry}; \
|
|
|
|
else \
|
|
|
|
OK="false"; \
|
|
|
|
${ECHO_MSG} "===> ${_THISDIR_}$${entry} non-existent"; \
|
|
|
|
fi; \
|
|
|
|
if [ "$$OK" = "" ]; then \
|
2006-07-27 23:46:45 +02:00
|
|
|
cd ${.CURDIR}/$${edir} && ${RECURSIVE_MAKE} ${MAKEFLAGS} show-distfiles; \
|
1999-06-28 13:42:28 +02:00
|
|
|
fi; \
|
|
|
|
done
|
|
|
|
.endif
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
|
2006-05-22 19:10:41 +02:00
|
|
|
.PHONY: show-subdir-var
|
|
|
|
show-subdir-var:
|
2006-05-23 17:20:17 +02:00
|
|
|
@${ECHO} ${${VARNAME}:Q}
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
|
|
|
|
# Print out a script to fetch all needed files (no checksumming).
|
|
|
|
#
|
|
|
|
# When invoked at the top or category level, this target needs to be
|
|
|
|
# handled specially, to elide the "===>" messages that would otherwise
|
|
|
|
# ruin the script.
|
|
|
|
#
|
|
|
|
.if !target(fetch-list)
|
|
|
|
.PHONY: fetch-list
|
|
|
|
|
|
|
|
fetch-list:
|
|
|
|
@${ECHO} '#!/bin/sh'
|
|
|
|
@${ECHO} '#'
|
|
|
|
@${ECHO} '# This is an auto-generated script, the result of running'
|
2003-01-15 21:55:38 +01:00
|
|
|
@${ECHO} '# `make fetch-list'"'"' in directory "'"`${PWD_CMD}`"'"'
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
@${ECHO} '# on host "'"`${UNAME} -n`"'" on "'"`date`"'".'
|
|
|
|
@${ECHO} '#'
|
|
|
|
.if defined(PKGSRCTOP) && !defined(SPECIFIC_PKGS)
|
|
|
|
# Recursing over dependencies would be pointless, in this case.
|
2006-07-27 23:46:45 +02:00
|
|
|
@${RECURSIVE_MAKE} ${MAKEFLAGS} fetch-list-one-pkg \
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
| ${AWK} ' \
|
|
|
|
function do_block () { \
|
|
|
|
if (FoundSomething) { \
|
|
|
|
for (line = 0; line < c; line++) \
|
|
|
|
print block[line]; \
|
|
|
|
FoundSomething = 0 \
|
|
|
|
} \
|
|
|
|
c = 0 \
|
|
|
|
} \
|
|
|
|
/^[^#=]/ { FoundSomething = 1 } \
|
|
|
|
/^unsorted/ { gsub(/[[:space:]]+/, " \\\n\t") } \
|
2002-03-04 20:41:03 +01:00
|
|
|
/^echo/ { gsub(/;[[:space:]]+/, "\n") } \
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
!/^=/ { block[c++] = $$0 } \
|
|
|
|
/^=/ { do_block() } \
|
|
|
|
END { do_block() } \
|
|
|
|
'
|
|
|
|
.else
|
2006-07-27 23:46:45 +02:00
|
|
|
@${RECURSIVE_MAKE} ${MAKEFLAGS} fetch-list-recursive \
|
Comprehensive update to the fetch-list target (and friends), incorporating
many suggestions made by Bernd Ernesti on "tech-pkg". Closes PR pkg/15539.
- - Partially revert 1.895, which made 'fetch-list' ape 'fetch', so instead
check if a file exists on the building host before emitting anything
for it into the generated script. Update to use the new 'fetch' procedure
on the fetching host, once it is determined that the file is needed,
and generally clean up the output, so that it's a human readable shell
script with comments.
- - Introduce utility target 'show-all-depends-dirs', to do the necessary
recursing over dependencies quickly and correctly. Add a couple of
variations to show how it's done, and bracket the whole thing with
".if make()", so it's invisible to the dependency graph for all the
other targets. The key improvement over the old way, is that it utilizes
an "awk" associative array to guarantee that no package subdirectory
is visited twice. For the package with the hairiest dependency graph,
"x11/gnome", this leads to something like a 1,000-fold improvement!
- - "sort -u" over the result of 'fetch-list-one-pkg' goes bye-bye. The new
"awk" post-processor begins emitting output as soon as there is a file
to fetch, so the user doesn't have to wait for the whole thing to finish
before he sees anything.
- - Get rid of the old hook for non-recursing for a top-level 'fetch-list',
which was never used. Previously, a top-level 'fetch-list' couldn't work
anyway, because the progress reports ruined the shell script. Remove
'fetch-list' from the targets that recurse from the top, and instead
use a different 'fetch-list' target in "bsd.pkg.subdir.mk" to do the right
thing. Currently, that right thing includes recursing in the single-category
case, or if ${SPECIFIC_PKGS} is set, and not recursing in the top-level,
all packages case (where it would be perfectly pointless).
2002-02-28 15:42:39 +01:00
|
|
|
| ${SED} '/^=/d'
|
|
|
|
.endif
|
|
|
|
.endif # !target(fetch-list)
|