Makefile
226 lines
| 6.9 KiB
| text/x-makefile
|
MakefileLexer
|
r10134 | # If you want to change PREFIX, do not just edit it below. The changed | ||
# value wont get passed on to recursive make calls. You should instead | ||||
# override the variable on the command like: | ||||
# | ||||
# % make PREFIX=/opt/ install | ||||
|
r2233 | PREFIX=/usr/local | ||
export PREFIX | ||||
|
r1008 | PYTHON=python | ||
|
r24194 | $(eval HGROOT := $(shell pwd)) | ||
HGPYTHONS ?= $(HGROOT)/build/pythons | ||||
|
r7706 | PURE= | ||
|
r12816 | PYFILES:=$(shell find mercurial hgext doc -name '*.py') | ||
|
r12817 | DOCFILES=mercurial/help/*.txt | ||
|
r19427 | export LANGUAGE=C | ||
export LC_ALL=C | ||||
|
r24195 | TESTFLAGS ?= $(shell echo $$HGTESTFLAGS) | ||
|
r1008 | |||
|
r18056 | # Set this to e.g. "mingw32" to use a non-default compiler. | ||
COMPILER= | ||||
|
r2244 | help: | ||
@echo 'Commonly used make targets:' | ||||
@echo ' all - build program and documentation' | ||||
|
r20311 | @echo ' install - install program and man pages to $$PREFIX ($(PREFIX))' | ||
@echo ' install-home - install with setup.py install --home=$$HOME ($(HOME))' | ||||
|
r4706 | @echo ' local - build for inplace usage' | ||
|
r2244 | @echo ' tests - run all tests in the automatic test suite' | ||
|
r15379 | @echo ' test-foo - run only specified tests (e.g. test-merge1.t)' | ||
|
r2244 | @echo ' dist - run all tests and create a source tarball in dist/' | ||
@echo ' clean - remove files created by other targets' | ||||
@echo ' (except installed files or dist source tarball)' | ||||
|
r7648 | @echo ' update-pot - update i18n/hg.pot' | ||
|
r2244 | @echo | ||
@echo 'Example for a system-wide installation under /usr/local:' | ||||
@echo ' make all && su -c "make install" && hg version' | ||||
@echo | ||||
@echo 'Example for a local installation (usable in this directory):' | ||||
@echo ' make local && ./hg version' | ||||
all: build doc | ||||
|
r2235 | |||
local: | ||||
|
r18056 | $(PYTHON) setup.py $(PURE) \ | ||
build_py -c -d . \ | ||||
build_ext $(COMPILER:%=-c %) -i \ | ||||
build_hgexe $(COMPILER:%=-c %) -i \ | ||||
build_mo | ||||
|
r17927 | env HGRCPATH= $(PYTHON) hg version | ||
|
r1020 | |||
|
r2235 | build: | ||
|
r18056 | $(PYTHON) setup.py $(PURE) build $(COMPILER:%=-c %) | ||
|
r2235 | |||
doc: | ||||
$(MAKE) -C doc | ||||
|
r1008 | |||
clean: | ||||
|
r8365 | -$(PYTHON) setup.py clean --all # ignore errors from this command | ||
|
r20007 | find contrib doc hgext i18n mercurial tests \ | ||
\( -name '*.py[cdo]' -o -name '*.so' \) -exec rm -f '{}' ';' | ||||
|
r16460 | rm -f $(addprefix mercurial/,$(notdir $(wildcard mercurial/pure/[a-z]*.py))) | ||
|
r22375 | rm -f MANIFEST MANIFEST.in hgext/__index__.py tests/*.err | ||
if test -d .hg; then rm -f mercurial/__version__.py; fi | ||||
|
r12500 | rm -rf build mercurial/locale | ||
|
r1423 | $(MAKE) -C doc clean | ||
|
r1008 | |||
|
r2527 | install: install-bin install-doc | ||
install-bin: build | ||||
|
r10961 | $(PYTHON) setup.py $(PURE) install --root="$(DESTDIR)/" --prefix="$(PREFIX)" --force | ||
|
r2527 | |||
install-doc: doc | ||||
|
r2235 | cd doc && $(MAKE) $(MFLAGS) install | ||
|
r2527 | install-home: install-home-bin install-home-doc | ||
install-home-bin: build | ||||
|
r20614 | $(PYTHON) setup.py $(PURE) install --home="$(HOME)" --prefix="" --force | ||
|
r2527 | |||
install-home-doc: doc | ||||
|
r2235 | cd doc && $(MAKE) $(MFLAGS) PREFIX="$(HOME)" install | ||
|
r3872 | MANIFEST-doc: | ||
$(MAKE) -C doc MANIFEST | ||||
|
r14558 | MANIFEST.in: MANIFEST-doc | ||
hg manifest | sed -e 's/^/include /' > MANIFEST.in | ||||
echo include mercurial/__version__.py >> MANIFEST.in | ||||
sed -e 's/^/include /' < doc/MANIFEST >> MANIFEST.in | ||||
|
r3872 | |||
|
r2234 | dist: tests dist-notests | ||
|
r14558 | dist-notests: doc MANIFEST.in | ||
|
r3865 | TAR_OPTIONS="--owner=root --group=root --mode=u+w,go-w,a+rX-s" $(PYTHON) setup.py -q sdist | ||
|
r1008 | |||
|
r14172 | check: tests | ||
|
r1008 | tests: | ||
|
r3969 | cd tests && $(PYTHON) run-tests.py $(TESTFLAGS) | ||
|
r1008 | |||
|
r1426 | test-%: | ||
|
r3969 | cd tests && $(PYTHON) run-tests.py $(TESTFLAGS) $@ | ||
|
r1426 | |||
|
r24194 | testpy-%: | ||
@echo Looking for Python $* in $(HGPYTHONS) | ||||
[ -e $(HGPYTHONS)/$*/bin/python ] || ( \ | ||||
cd $$(mktemp --directory --tmpdir) && \ | ||||
$(MAKE) -f $(HGROOT)/contrib/Makefile.python PYTHONVER=$* PREFIX=$(HGPYTHONS)/$* python ) | ||||
cd tests && $(HGPYTHONS)/$*/bin/python run-tests.py $(TESTFLAGS) | ||||
|
r18598 | check-code: | ||
hg manifest | xargs python contrib/check-code.py | ||||
|
r7893 | update-pot: i18n/hg.pot | ||
|
r20358 | i18n/hg.pot: $(PYFILES) $(DOCFILES) i18n/posplit i18n/hggettext | ||
|
r8542 | $(PYTHON) i18n/hggettext mercurial/commands.py \ | ||
|
r16126 | hgext/*.py hgext/*/__init__.py \ | ||
mercurial/fileset.py mercurial/revset.py \ | ||||
|
r14815 | mercurial/templatefilters.py mercurial/templatekw.py \ | ||
|
r24601 | mercurial/templater.py \ | ||
|
r16126 | mercurial/filemerge.py \ | ||
|
r24859 | mercurial/hgweb/webcommands.py \ | ||
|
r20121 | $(DOCFILES) > i18n/hg.pot.tmp | ||
|
r7710 | # All strings marked for translation in Mercurial contain | ||
# ASCII characters only. But some files contain string | ||||
# literals like this '\037\213'. xgettext thinks it has to | ||||
|
r8273 | # parse them even though they are not marked for translation. | ||
# Extracting with an explicit encoding of ISO-8859-1 will make | ||||
# xgettext "parse" and ignore them. | ||||
|
r12816 | echo $(PYFILES) | xargs \ | ||
|
r9278 | xgettext --package-name "Mercurial" \ | ||
|
r8272 | --msgid-bugs-address "<mercurial-devel@selenic.com>" \ | ||
--copyright-holder "Matt Mackall <mpm@selenic.com> and others" \ | ||||
|
r12806 | --from-code ISO-8859-1 --join --sort-by-file --add-comments=i18n: \ | ||
|
r20121 | -d hg -p i18n -o hg.pot.tmp | ||
$(PYTHON) i18n/posplit i18n/hg.pot.tmp | ||||
|
r20080 | # The target file is not created before the last step. So it never is in | ||
# an intermediate state. | ||||
|
r20121 | mv -f i18n/hg.pot.tmp i18n/hg.pot | ||
|
r1008 | |||
|
r7893 | %.po: i18n/hg.pot | ||
|
r19991 | # work on a temporary copy for never having a half completed target | ||
cp $@ $@.tmp | ||||
msgmerge --no-location --update $@.tmp $^ | ||||
|
r20120 | mv -f $@.tmp $@ | ||
|
r7893 | |||
|
r21255 | # Packaging targets | ||
|
r21559 | osx: | ||
|
r23932 | python -c 'import bdist_mpkg.script_bdist_mpkg' || \ | ||
|
r21559 | (echo "Missing bdist_mpkg (easy_install bdist_mpkg)"; false) | ||
|
r22358 | rm -rf dist/mercurial-*.mpkg | ||
|
r23932 | python -m bdist_mpkg.script_bdist_mpkg setup.py -- | ||
|
r23940 | python contrib/fixpax.py dist/mercurial-*.mpkg/Contents/Packages/*.pkg/Contents/Archive.pax.gz | ||
|
r21560 | mkdir -p packages/osx | ||
|
r22358 | N=`cd dist && echo mercurial-*.mpkg | sed 's,\.mpkg$$,,'` && hdiutil create -srcfolder dist/$$N.mpkg/ -scrub -volname "$$N" -ov packages/osx/$$N.dmg | ||
|
r21559 | rm -rf dist/mercurial-*.mpkg | ||
|
r24971 | debian-jessie: | ||
mkdir -p packages/debian-jessie | ||||
contrib/builddeb | ||||
mv debbuild/*.deb packages/debian-jessie | ||||
rm -rf debbuild | ||||
|
r24973 | docker-debian-jessie: | ||
mkdir -p packages/debian/jessie | ||||
contrib/dockerdeb jessie | ||||
|
r22442 | fedora20: | ||
mkdir -p packages/fedora20 | ||||
|
r21640 | contrib/buildrpm | ||
|
r22442 | cp rpmbuild/RPMS/*/* packages/fedora20 | ||
cp rpmbuild/SRPMS/* packages/fedora20 | ||||
|
r21255 | rm -rf rpmbuild | ||
|
r22442 | docker-fedora20: | ||
mkdir -p packages/fedora20 | ||||
contrib/dockerrpm fedora20 | ||||
|
r21255 | |||
|
r23882 | fedora21: | ||
mkdir -p packages/fedora21 | ||||
contrib/buildrpm | ||||
cp rpmbuild/RPMS/*/* packages/fedora21 | ||||
cp rpmbuild/SRPMS/* packages/fedora21 | ||||
rm -rf rpmbuild | ||||
docker-fedora21: | ||||
mkdir -p packages/fedora21 | ||||
contrib/dockerrpm fedora21 | ||||
|
r22443 | centos5: | ||
mkdir -p packages/centos5 | ||||
contrib/buildrpm --withpython | ||||
cp rpmbuild/RPMS/*/* packages/centos5 | ||||
cp rpmbuild/SRPMS/* packages/centos5 | ||||
docker-centos5: | ||||
mkdir -p packages/centos5 | ||||
contrib/dockerrpm centos5 --withpython | ||||
|
r21255 | centos6: | ||
|
r21560 | mkdir -p packages/centos6 | ||
|
r21640 | contrib/buildrpm | ||
|
r21560 | cp rpmbuild/RPMS/*/* packages/centos6 | ||
cp rpmbuild/SRPMS/* packages/centos6 | ||||
|
r21255 | |||
docker-centos6: | ||||
|
r21560 | mkdir -p packages/centos6 | ||
|
r21255 | contrib/dockerrpm centos6 | ||
|
r23033 | centos7: | ||
mkdir -p packages/centos7 | ||||
contrib/buildrpm | ||||
cp rpmbuild/RPMS/*/* packages/centos7 | ||||
cp rpmbuild/SRPMS/* packages/centos7 | ||||
docker-centos7: | ||||
mkdir -p packages/centos7 | ||||
contrib/dockerrpm centos7 | ||||
|
r2527 | .PHONY: help all local build doc clean install install-bin install-doc \ | ||
|
r23125 | install-home install-home-bin install-home-doc \ | ||
dist dist-notests check tests check-code update-pot \ | ||||
|
r23882 | osx fedora20 docker-fedora20 fedora21 docker-fedora21 \ | ||
|
r23125 | centos5 docker-centos5 centos6 docker-centos6 centos7 docker-centos7 | ||