• R/O
  • HTTP
  • SSH
  • HTTPS

标签
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

XML catalogue of packages which are available for installation, using the mingw-get installer.


File Info

Rev. d2cc382cbae59cbc2b6cd90e29baa6a4e18fc1e5
大小 9,551 字节
时间 2020-06-04 05:42:21
作者 Keith Marshall
Log Message

Publish MinGW.org WSL-5.3.3 package set.

Content

# @configure_input@
#
# $Id$
#
# Written by Keith Marshall <keithmarshall@users.sourceforge.net>
# Copyright (C) 2010, 2011, 2013, MinGW.org Project
#
#
# Makefile template for generating mingw-get distribution manifests.
#
#   Project: @PACKAGE_TARNAME@
#   Version: @PACKAGE_VERSION@
#
#
# This is free software.  Permission is granted to copy, modify and
# redistribute this software, under the provisions of the GNU General
# Public License, Version 3, (or, at your option, any later version),
# as published by the Free Software Foundation; see the file COPYING
# for licensing details.
#
# Note, in particular, that this software is provided "as is", in the
# hope that it may prove useful, but WITHOUT WARRANTY OF ANY KIND; not
# even an implied WARRANTY OF MERCHANTABILITY, nor of FITNESS FOR ANY
# PARTICULAR PURPOSE.  Under no circumstances will the author, or the
# MinGW Project, accept liability for any damages, however caused,
# arising from the use of this software.
#
VPATH = ${srcdir}:${top_srcdir}:${top_builddir}

# Define hooks for invoking system tools.
#
LN_S = @LN_S@

all: all-distfiles

# Capture repository infrastructure changes.  The following rules ensure
# that configure, config.status, and all working makefiles will be updated,
# when any of their respective sources are modified.
#
configure: configure.ac makeopts.m4
	cd ${top_srcdir}; autoconf

config.status: configure
	cd ${top_builddir}; ./config.status --recheck

Makefile: config.status Makefile.in Makefile.stub.in Makefile.comm.in
	cd ${top_builddir}; ./config.status

# To accommodate a top-level make on just a single subdirectory, we list
# each of the managed subdirectories as an independent goal, invoking the
# "all" action for the target subdirectory.
#
@mingw_ac_subdirs@: all

# We use an automatically generated Makefile.sub to manage the list
# of distributable files, ensuring that we automatically capture all
# XML files in the source directory, and converting them to serialised
# LZMA compressed format for upload to the repository server.
#
Makefile.sub: ${srcdir}/*.xml
	echo "auto-distfiles = \\" > $@
	for file in $^; do echo "$$file.lzma \\" | sed 's,.*/,  ,' >> $@; done
	echo '  $$(EXTRA_DISTFILES)' >> $@

sinclude Makefile.sub
all-distfiles: unpublished issue.sed $(DISTFILES) $(auto-distfiles)
@SET_MAKE@

# Distributed manifests are serialised by incorporating a date-stamped
# issue number, of the form YYYYMMDDNN; we track issue numbers using the
# issue.log file, (which we keep in CVS to ensure that all maintainers
# can share a common issue number registry).
#
issue_number = YYYYMMDDNN
issue_key = awk '$$3 == "$*.xml" { print $$1 }' issue.new
issue_log = ${srcdir}/issue.log

update_issue_number = \
  test -n "$$issue" || issue=0; \
  test $$issue -lt $${mark="`date -u +%Y%m%d`00"} && \
    issue=$$mark || issue=`expr $$issue + 1`
generate_catalogue = -f ${top_builddir}/issue.sed -e $(store_issue_number)
store_issue_number = "s/@$(issue_number)@/$(issue)/"

# We use SHA1 hashes to determine when source files have been changed
# from the last published version, as recorded in `issue.log'; the hash
# is computed by openssl, after filtering the source through awk; (this
# ensures that the computed hash is not influenced by any unintentional
# pollution due to accidental insertion of CRLF line endings).
#
sha1hash = awk '{ sub( "\r$$", "" ); print }' $$catalogue | $(sha1sum)
sha1sum = openssl sha1 | awk '{print $$NF}'

# Formatting within issue.log is controlled by PAD and TAB settings.
#
TAB = [	 ]
PAD = "  "

# The following generic rule processes an XML source template, inserting
# the appropriate issue number, and compressing to yield the required LZMA
# distribution manifest.  The generated issue number which gets applied is
# appropriately serialised relative to the original record for the  source
# XML file being processed, as noted in the local copy of issue.log, which
# is then updated to record the new issue number; to avoid any regression
# of issue numbers, all maintainers are advised to update issue.log from
# CVS immediately prior manifest generation, and to commit back as soon
# as possible thereafter; any ensuing conflict must be resolved before
# any updated manifest is uploaded to the repository server.
#
%.xml.lzma: %.xml
	@echo
	>> $(issue_log)
	rm -f issue.new issue.tmp
	test -f ${top_builddir}/issue.sed || $(MAKE) issue.sed
	sed '/^$(TAB)*$$/d;/^$(TAB)*#/d' $(issue_log) > issue.new
	@catalogue="$<" issue=`awk '$$3 == "$*.xml" { print $$2 }' issue.new`; \
	  if test x$${hash="`$(sha1hash)`"} != x"`$(issue_key)`"; then \
	    $(update_issue_number); \
	    $(RMAKE) refname=$*.xml issue=$$issue hash=$$hash issue.tmp; \
	    fi; \
	  $(RMAKE) catalogue=$@ source=$< issue=$$issue generate-catalogue
	@if test -f issue.tmp; then \
	  $(RMAKE) refname=$@ select-for-publication; \
	  $(RMAKE) update-issue-log; \
	  fi
	rm -f issue.new issue.tmp

.PHONY: FORCE
# An internal target, to specify a dependency which must always be updated.
FORCE:

# Create a local directory in which to collect files which we have generated,
# but we have not yet published; (we make this a prerequisite of all sources,
# to ensure that it is created when the source directory is scanned to create
# Makefile.sub, so that will always exist when any individual source file is
# processed, even on explicit file-by-file request).
#
${srcdir}/*.xml: unpublished
unpublished:
	test -d $@ || mkdir $@

# Package lists are dynamically updated, to record the latest issues of each
# referenced package catalogue; the "sed" script used to accomplish this must
# be generated, and driven from, within the top build directory.  Similarly,
# the procedure for publishing updated catalogues to the file release system
# must be directed to the top build directory, to process the entire tree.
#
published update-references issue.sed: FORCE
	cd ${top_builddir}; $(MAKE) $@

# Requests to update references will be redirected back to each sub-directory
# in turn, to be processed by the following recursive make rule.
#
update-local-references: unpublished issue.sed
	rm -rf tmp; mkdir tmp; rm -f issue.tmp
	sed '/^$(TAB)*$$/d;/^$(TAB)*#/d' $(issue_log) > issue.new
	@for catalogue in `grep -l 'catalogue=' ${srcdir}/*.xml`; \
	  do refname=`echo $$catalogue | sed 's,^${srcdir}/,,'` \
	     issue=`awk '$$3 == "'$$refname'" { print $$2 }' issue.new`; \
	     $(RMAKE) refname=$$refname issue=$$issue generate-reference; \
	     lzma -dc $$refname.lzma | cmp -s - tmp/$$refname || \
	       { $(update_issue_number); \
	         $(RMAKE) dir=${top_builddir} issue.chk; \
		 $(RMAKE) refname=$$refname issue=$$issue \
		   hash=`$(sha1hash)` issue.tmp; \
	         $(RMAKE) catalogue=$$refname.lzma source=$$catalogue \
		   issue=$$issue generate-catalogue; \
		 $(RMAKE) refname=$$refname.lzma select-for-publication; \
	       }; \
	  done
	@test -f issue.tmp && $(RMAKE) update-issue-log || true
	rm -f ${top_builddir}/issue.sed issue.new issue.tmp
	rm -rf tmp

# The preceding rules for compiling catalogues for publication, and resolving
# "package-list" references, use several recursive make hooks to perform common
# sub-tasks.  GNU make tends to be very verbose about entering and leaving the
# directories in which these sub-tasks are performed, even when there is no
# change of directory involved; to make it quieter, we prefer this form of
# recursive invocation for local sub-tasks.
#
RMAKE = $(MAKE)@NO_PRINT_DIRECTORY@

# The following sub-task rule creates a tentative "publication-ready" version
# of each catalogue.
#
generate-catalogue: FORCE
	sed $(generate_catalogue) $(source) \
	  | lzma -c > $(catalogue)

# The following sub-task rule creates a reference copy of each catalogue, for
# comparison with the tentative "publication-ready" version, when checking for
# changes introduced by resolution of "package-list" references.
#
generate-reference: FORCE
	sed $(generate_catalogue) ${srcdir}/$(refname) \
	  > tmp/$(refname)

# When any generated catalogue has been found to differ from its previously
# published version, (if any), the following rule adds it to the schedule of
# catalogues which should be republished, (or published for the first time).
#
select-for-publication: FORCE
	cd unpublished && $(LN_S) -f ../$(refname) .

# The remaining macros and rules define the sub-tasks for management of the
# temporary files used to control the iterative resolution of "package-list"
# references, and to capture modifications to be recorded in the issue log...
#
extract_log_file_header = '/^$(TAB)*$$/q;/^$(TAB)*[^\#]/q;p'
extract_log_file_footer = 's/^$(TAB)*$$/break/;1,/^$(TAB)*[^\#]/d;/^$(TAB)*\#/p'

issue.chk: FORCE
	test -f issue.tmp && mv -f issue.tmp issue.new || true
	test -f ${dir}/$@ && echo check > ${dir}/$@ || true

issue.new: FORCE
issue.tmp: issue.new
	awk '$$3 != "$(refname)"' $^ > $@
	echo $(PAD)$(hash) $(issue) $(refname) >> $@

# ...with this final rule completing the recording of the current state of
# publication, in the permanent issue log files.
#
update-issue-log: FORCE
	sed -n $(extract_log_file_header) $(issue_log) > issue.new
	LC_COLLATE=POSIX sort -k3 issue.tmp >> issue.new;
	sed -n $(extract_log_file_footer) $(issue_log) >> issue.new;
	rm -f $(issue_log) && mv issue.new $(issue_log)

# The following goals may be specified, when building as a sub-project
# of mingw-get-setup; make each a no-op here.
#
NO_OP_GOALS = build.tag dist clean distclean maintainer-clean
.PHONY: $(NO_OP_GOALS)
$(NO_OP_GOALS):

# $RCSfile$: end of file