Makefile
author Raphael Marmier <raphael@marmier.net>
Mon, 03 Jul 2006 10:18:46 -0700
changeset 2550 45235e492cc6
parent 2527 c51fad25e59e
child 2692 2ab464771b7d
child 3864 1a7794525c2b
permissions -rw-r--r--
Disable automatic line endings conversion on windows The rationale behind this is that such conversion implies a particular situation in which all files in the repo are terminated by only LF. This is documented nowhere and it bit me sharply when I upgraded. Furthermore, it works on the assumption that a file containing no NULL characters are actually a text file. Therefore it cannot guarantee that no binary file will be harmed in the process. Currently, if a file already contains CRLF line endings when it is copied to the working dir from the repo, then the version in the working dir will be corrupted by an extra CR. I'm working on a patch that will turn this into a warning. But as a side effect, committing such a file back will strip it from its CR. In all case, unrequested data modification can occur under the feet of the user, which is bad(tm), ihmo.

PREFIX=/usr/local
export PREFIX
PYTHON=python

help:
	@echo 'Commonly used make targets:'
	@echo '  all          - build program and documentation'
	@echo '  install      - install program and man pages to PREFIX ($(PREFIX))'
	@echo '  install-home - install with setup.py install --home=HOME ($(HOME))'
	@echo '  local        - build C extensions for inplace usage'
	@echo '  tests        - run all tests in the automatic test suite'
	@echo '  test-foo     - run only specified tests (e.g. test-merge1)'
	@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)'
	@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

local:
	$(PYTHON) setup.py build_ext -i

build:
	$(PYTHON) setup.py build

doc:
	$(MAKE) -C doc

clean:
	-$(PYTHON) setup.py clean --all # ignore errors of this command
	find . -name '*.py[co]' -exec rm -f '{}' ';'
	rm -f MANIFEST mercurial/__version__.py mercurial/*.so tests/*.err
	$(MAKE) -C doc clean

install: install-bin install-doc

install-bin: build
	$(PYTHON) setup.py install --prefix="$(PREFIX)" --force

install-doc: doc
	cd doc && $(MAKE) $(MFLAGS) install

install-home: install-home-bin install-home-doc

install-home-bin: build
	$(PYTHON) setup.py install --home="$(HOME)" --force

install-home-doc: doc
	cd doc && $(MAKE) $(MFLAGS) PREFIX="$(HOME)" install

dist:	tests dist-notests

dist-notests:	doc
	TAR_OPTIONS="--owner=root --group=root --mode=u+w,go-w,a+rX-s" $(PYTHON) setup.py sdist --force-manifest

tests:
	cd tests && $(PYTHON) run-tests.py

test-%:
	cd tests && $(PYTHON) run-tests.py $@


.PHONY: help all local build doc clean install install-bin install-doc \
	install-home install-home-bin install-home-doc dist dist-notests tests