summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorrillig <rillig>2007-01-06 17:10:42 +0000
committerrillig <rillig>2007-01-06 17:10:42 +0000
commit8a0210e20fc749ae047a1220fd93b19fcfae4b88 (patch)
treedc6f857d04e74e3b899cc59893b7e52a8ca3cc54 /Makefile
parent2fd4a67df50ba5b10be7e527b1f8816063a1d15b (diff)
downloadpkgsrc-8a0210e20fc749ae047a1220fd93b19fcfae4b88.tar.gz
Moved the make targets from the top-level Makefile to their own file,
mk/misc/toplevel.mk. Added a bit of documentation.
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile215
1 files changed, 25 insertions, 190 deletions
diff --git a/Makefile b/Makefile
index f113d1c0e89..cf5247c710d 100644
--- a/Makefile
+++ b/Makefile
@@ -1,19 +1,31 @@
-# $NetBSD: Makefile,v 1.78 2006/12/29 19:02:25 joerg Exp $
+# $NetBSD: Makefile,v 1.79 2007/01/06 17:10:42 rillig Exp $
+#
+# This is the top-level Makefile of pkgsrc. It contains a list of the
+# categories of packages, as well as some targets that operate on the
+# whole pkgsrc system.
+#
+# User-settable variables:
+#
+# SPECIFIC_PKGS
+# (See mk/defaults/mk.conf)
+#
+# SITE_SPECIFIC_PKGS
+# HOST_SPECIFIC_PKGS
+# GROUP_SPECIFIC_PKGS
+# USER_SPECIFIC_PKGS
+# The specific packages that are to be built.
+#
+# XXX: Why are there four distinct variables? The same could be
+# achieved using just SPECIFIC_PKGS as the list of packages and
+# leaving the remaining details to the user.
+#
+# See also:
+# mk/misc/toplevel.mk
#
-
-# tools used by this Makefile
-USE_TOOLS+= [ awk cat cmp echo env expr false fgrep grep mv rm sed \
- sort wc
-
-# additional tools used by bsd.pkg.subdir.mk
-USE_TOOLS+= basename touch
-
-# additional tools used by bsd.bulk-pkg.mk
-USE_TOOLS+= egrep find ls sh tee true tsort
.include "mk/bsd.prefs.mk"
-.ifdef SPECIFIC_PKGS
+.if defined(SPECIFIC_PKGS)
SUBDIR+= ${SITE_SPECIFIC_PKGS}
SUBDIR+= ${HOST_SPECIFIC_PKGS}
SUBDIR+= ${GROUP_SPECIFIC_PKGS}
@@ -63,183 +75,6 @@ SUBDIR+= www
SUBDIR+= x11
.endif
-.ifdef USER_ADDITIONAL_PKGS
SUBDIR+= ${USER_ADDITIONAL_PKGS}
-.endif
-
-PKGSRCTOP= yes
-
-
-# If PACKAGES is set to the default (${PKGSRCDIR}/packages), the current
-# ${MACHINE_ARCH} and "release" (uname -r) will be used. Otherwise a directory
-# structure of ...pkgsrc/packages/`uname -r`/${MACHINE_ARCH} is assumed.
-# The PKG_URL is set from FTP_PKG_URL_* or CDROM_PKG_URL_*, depending on
-# the target used to generate the README.html file.
-.PHONY: README.html
-_README_TYPE_FLAG?= none
-README.html: .PRECIOUS
-.if ${_README_TYPE_FLAG} == "--ftp" || ${_README_TYPE_FLAG} == "--cdrom"
- ${SETENV} TMPDIR=${TMPDIR:U/tmp}/mkreadme \
- BMAKE=${MAKE} \
- ./mk/scripts/mkreadme --pkgsrc ${.CURDIR} \
- --packages ${PACKAGES} ${_README_TYPE_FLAG} \
- --prune
-.else
- @${ECHO} "ERROR: please do not use the README.html target directly."
- @${ECHO} " Instead use either the \"readme\" or \"cdrom-readme\""
- @${ECHO} " target."
- @${FALSE}
-.endif
-
-.include "mk/bsd.pkg.subdir.mk"
-
-# the bulk-cache and clean-bulk-cache targets are a global-pkgsrc
-# thing and thus it makes sense to run it from the top level pkgsrc
-# directory.
-.if make(bulk-cache) || make(clean-bulk-cache)
-.include "${.CURDIR}/mk/bulk/bsd.bulk-pkg.mk"
-.endif
-
-.PHONY: ${.CURDIR}/PKGDB
-${.CURDIR}/PKGDB:
- @${RM} -f ${.CURDIR}/PKGDB
- @${ECHO_MSG} "Extracting complete dependency database. This may take a while..."
- @DB=${.CURDIR}/PKGDB ; \
- PKGSRCDIR=${.CURDIR} ; \
- npkg=1; \
- list=`${GREP} '^[[:space:]]*'SUBDIR */Makefile | ${SED} 's,/Makefile.*=[[:space:]]*,/,'` ; \
- for pkgdir in $$list ; do \
- if [ ! -d $$pkgdir ]; then \
- echo " " ; \
- echo "WARNING: the package directory $$pkgdir is listed in" > /dev/stderr ; \
- echo $$pkgdir | ${SED} 's;/.*;/Makefile;g' > /dev/stderr ; \
- echo "but the directory does not exist. Please fix this!" > /dev/stderr ; \
- else \
- cd $$pkgdir ; \
- l=`${MAKE} print-summary-data` ; \
- if [ $$? != 0 ]; then \
- echo "WARNING (printdepends): the package in $$pkgdir had problem with" \
- > /dev/stderr ; \
- echo " ${MAKE} print-summary-data" > /dev/stderr ; \
- echo " database information for this package" > /dev/stderr ; \
- echo " will be dropped." > /dev/stderr ; \
- ${MAKE} print-summary-data 2>&1 > /dev/stderr ; \
- else \
- echo "$$l" >> $$DB ; \
- fi ; \
- fi ; \
- ${ECHO_N} "."; \
- if [ `${EXPR} $$npkg % 100 = 0` -eq 1 ]; then \
- echo " " ; \
- echo "$$npkg" ; \
- fi ; \
- npkg=`${EXPR} $$npkg + 1` ; \
- cd $$PKGSRCDIR ; \
- done
-
-.PHONY: index
-index:
- @${RM} ${.CURDIR}/INDEX
- @${MAKE} ${.CURDIR}/INDEX
-
-${.CURDIR}/INDEX:
- @${MAKE} ${.CURDIR}/PKGDB
- @${RM} -f ${.CURDIR}/INDEX
- @${AWK} -f ./mk/scripts/genindex.awk PKGSRCDIR=${.CURDIR} SORT=${SORT} ${.CURDIR}/PKGDB
- @${RM} -f ${.CURDIR}/PKGDB
-
-print-index: ${.CURDIR}/INDEX
- @${AWK} -F\| '{ printf("Pkg:\t%s\nPath:\t%s\nInfo:\t%s\nMaint:\t%s\nIndex:\t%s\nB-deps:\t%s\nR-deps:\t%s\nArch:\t%s\n\n", $$1, $$2, $$4, $$6, $$7, $$8, $$9, $$10); }' < ${.CURDIR}/INDEX
-
-search: ${.CURDIR}/INDEX
-.if !defined(key)
- @${ECHO} "The search target requires a keyword parameter,"
- @${ECHO} "e.g.: \"${MAKE} search key=somekeyword\""
-.else
- @${GREP} ${key} ${.CURDIR}/INDEX | ${AWK} -F\| '{ printf("Pkg:\t%s\nPath:\t%s\nInfo:\t%s\nMaint:\t%s\nIndex:\t%s\nB-deps:\t%s\nR-deps:\t%s\nArch:\t%s\n\n", $$1, $$2, $$4, $$6, $$7, $$8, $$9, $$10); }'
-.endif
-
-#
-# Generate list of all packages by extracting information from
-# the category/README.html pages
-#
-readme-all:
- @if [ -f README-all.html ]; then \
- ${MV} README-all.html README-all.html.BAK ; \
- fi
- @${MAKE} README-all.html
- @if ${CMP} -s README-all.html README-all.html.BAK ; then \
- ${MV} README-all.html.BAK README-all.html ; \
- else \
- ${RM} -f README-all.html.BAK ; \
- fi
-
-README-all.html:
- @${RM} -f $@.new
- @${RM} -f $@.newsorted
- @${ECHO_N} "Processing categories for $@:"
-.for category in ${SUBDIR}
- @if [ -f ${category}/README.html ]; then \
- ${ECHO_N} ' ${category}' ; \
- ${GREP} '^<TR>' ${category}/README.html \
- | ${SED} -e 's|"|"${category}/|' \
- -e 's| <TD>| <TD>(<A HREF="${category}/README.html">${category}</A>) <TD>|' \
- -e 's|<TR>|<TR VALIGN=TOP>|' \
- -e 's|<TD VALIGN=TOP>|<TD>|' \
- >> $@.new ; \
- fi
-.endfor
- @${ECHO} "."
- @if [ ! -f $@.new ]; then \
- ${ECHO} "There are no categories with README.html files available."; \
- ${ECHO} "You need to run \`${MAKE} readme' to generate them before running this target."; \
- ${FALSE}; \
- fi
- @${SORT} -f -t '">' +2 <$@.new >$@.newsorted
- @${WC} -l $@.newsorted | ${AWK} '{ print $$1 }' >$@.npkgs
- @${CAT} templates/README.all \
- | ${SED} \
- -e '/%%NPKGS%%/r$@.npkgs' \
- -e '/%%NPKGS%%/d' \
- -e '/%%PKGS%%/r$@.newsorted' \
- -e '/%%PKGS%%/d' \
- > $@
- @${RM} -f $@.npkgs
- @${RM} -f $@.new
- @${RM} -f $@.newsorted
-
-readme-ipv6:
- @if [ -f README-IPv6.html ]; then \
- ${MV} README-IPv6.html README-IPv6.html.BAK ; \
- fi
- @${MAKE} README-IPv6.html
- @if ${CMP} -s README-IPv6.html README-IPv6.html.BAK ; then \
- ${MV} README-IPv6.html.BAK README-IPv6.html ; \
- else \
- ${RM} -f README-IPv6.html.BAK ; \
- fi
-
-README-IPv6.html:
- @${GREP} -l -e '^BUILD_DEFS.*=.*USE_INET6' -e '^PKG_SUPPORTED_OPTIONS.*=.*inet6' \
- */*/Makefile */*/options.mk \
- | ${SED} -e s,Makefile,, -e s,options.mk,, >$@.pkgs
- @${FGREP} -f $@.pkgs README-all.html | ${SORT} -t/ +1 >$@.trs
- @${CAT} templates/README.ipv6 \
- | ${SED} \
- -e '/%%TRS%%/r$@.trs' \
- -e '/%%TRS%%/d' \
- >$@
- @${RM} $@.pkgs $@.trs
-
-show-host-specific-pkgs:
- @${ECHO} "HOST_SPECIFIC_PKGS= \\"; \
- ${MAKE} show-pkgsrc-dir | ${AWK} '/^===/ { next; } { printf("%s \\\n", $$1) }'; \
- ${ECHO} ""
-# list all packages that depend on a particular package; needs the INDEX file
-# usage: 'make show-deps PKG=openssl'
-# PKG: name of the package
-show-deps:
- @if [ ! -f "${.CURDIR}/INDEX" ]; then ${ECHO} "No index available -- please build it with 'make index'" >&2; ${FALSE}; fi
- @if [ -z "${PKG}" ]; then ${ECHO} "PKG variable not set" >&2; ${FALSE}; fi
- @${GREP} -E "^([^|]*\|){7}([^|]* |)${PKG}>=" ${.CURDIR}/INDEX | ${SED} -n 's/^[^|]*|\([^|]*\)|.*/\1/p' | ${SORT}
+.include "${.PARSEDIR}/mk/misc/toplevel.mk"