summary refs log tree commit diff stats
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile142
1 files changed, 81 insertions, 61 deletions
diff --git a/Makefile b/Makefile
index 05c565e6..1f75728c 100644
--- a/Makefile
+++ b/Makefile
@@ -1,92 +1,112 @@
+# Copyright (C) 2009, 2010  Roman Zimbelmann <romanz@lavabit.com>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
 NAME = ranger
 VERSION = 1.0.4
 PYTHON ?= python
 DOCDIR ?= doc/pydoc
-PREFIX ?= /usr/local
-PYTHONOPTIMIZE ?= 2
+PREFIX ?= /usr
+MANPREFIX ?= /share/man
+PYOPTIMIZE ?= 1
+PYTHON_SITE_DEST ?= $(shell $(PYTHON) -c 'import sys; sys.stdout.write( \
+	[p for p in sys.path if "site" in p][0])' 2> /dev/null)
+BMCOUNT ?= 5  # how often to run the benchmarks?
+
 CWD = $(shell pwd)
-EDITOR ?= vim
-DEST ?= $(shell $(PYTHON) -c 'import sys; sys.stdout.write( \
-	[p for p in sys.path if "site" in p][0])' 2> /dev/null)/ranger
 
-.PHONY: all compile clean doc cleandoc edit push test commit \
-	install uninstall info snapshot minimal_snapshot
+default: compile
+	@echo 'Run `make options` for a list of all options'
 
-info:
-	@echo 'This makefile provides shortcuts for common tasks.'
-	@echo 'make clean: Remove all unnecessary files (.pyc, .pyo)'
-	@echo 'make cleandoc: Remove the pydoc documentation'
+options: help
+	@echo
+	@echo 'Options:'
+	@echo 'PYTHON = $(PYTHON)'
+	@echo 'PYOPTIMIZE = $(PYOPTIMIZE)'
+	@echo 'PYTHON_SITE_DEST = $(PYTHON_SITE_DEST)'
+	@echo 'PREFIX = $(PREFIX)'
+	@echo 'MANPREFIX = $(MANPREFIX)'
+	@echo 'DOCDIR = $(DOCDIR)'
+
+help:
+	@echo 'make: Compile $(NAME)'
 	@echo 'make doc: Create the pydoc documentation'
 	@echo 'make install: Install ranger'
+	@echo 'make clean: Remove the compiled files (*.pyc, *.pyo)'
+	@echo 'make cleandoc: Remove the pydoc documentation'
+	@echo 'make uninstall: Uninstall ranger'
 	@echo 'make snapshot: Create a tar.gz of the current git revision'
-	@echo
-	@echo 'For developers:'
-	@echo 'make commit: Test and commit the changes'
 	@echo 'make test: Run all unittests.'
-	@echo 'make push: push the changes via git'
-	@echo 'make edit: open all relevant files in your editor'
 
-all: test install
+all: test compile install
+
+install:
+	@if [ '$(PYTHON_SITE_DEST)' == '' ]; then \
+		echo -n 'Cannot find a suitable destination for the files.'; \
+		echo '  Please install $(NAME) manually.'; \
+		false; \
+	fi
+	@echo "Installing $(NAME) version $(VERSION)..."
+	@mkdir -p $(PREFIX)/bin
+	cp -f ranger.py $(PREFIX)/bin/ranger
+	@mkdir -p $(PYTHON_SITE_DEST)
+	cp -fruT ranger $(PYTHON_SITE_DEST)/ranger
+	@chmod 755 $(PREFIX)/bin/ranger
+	@chmod -R +rX $(PYTHON_SITE_DEST)/ranger
+	@mkdir -p $(PREFIX)$(MANPREFIX)/man1
+	cp -f doc/ranger.1 $(PREFIX)$(MANPREFIX)/man1/ranger.1
+	@chmod 644 $(PREFIX)$(MANPREFIX)/man1/ranger.1
+
+uninstall:
+	rm -f $(PREFIX)/bin/ranger
+	rm -f '$(PREFIX)$(MANPREFIX)/man1/ranger.1'
+	@if [ '$(PYTHON_SITE_DEST)' == '' ]; then \
+		echo 'Cannot find a possible location of rangers library files'; \
+		false; \
+	fi
+	rm -rf '$(PYTHON_SITE_DEST)/ranger/*'
+	@echo 'NOTE: By default, configuration files are stored at "~/.ranger".'
+	@echo 'This script will not delete those.'
 
 compile: clean
 	@echo 'Compiling...'
-	python -m compileall -q ranger
-	PYTHONOPTIMIZE=$(PYTHONOPTIMIZE) python -m compileall -q ranger
+	PYTHONOPTIMIZE=$(PYOPTIMIZE) python -m compileall -q ranger
+
+clean:
+	@echo 'Cleaning...'
+	find . -regex .\*.py[co]\$$ -exec rm -f -- {} \;
 
 doc: cleandoc
+	@echo 'Creating pydoc html documentation...'
 	mkdir -p $(DOCDIR)
 	cd $(DOCDIR); \
 		$(PYTHON) -c 'import pydoc, sys; \
 		sys.path[0] = "$(CWD)"; \
 		pydoc.writedocs("$(CWD)")'
 
-uninstall:
-	@echo 'To uninstall ranger, please remove these files:'
-	@echo $(DEST)'/*'
-	@echo $(PREFIX)'/bin/ranger'
-	@echo 'and optionally the config files at:'
-	@echo '~/.ranger'
-
-install: compile
-	@if [ '$(DEST)' == '/ranger' ]; then \
-		echo 'Cannot find a suitable destination for the files.'; \
-		false; \
-	fi
-	@echo "Installing..."
-	cp ranger.py $(PREFIX)/bin/ranger
-	cp -ruT ranger $(DEST)
-	chmod 755 $(PREFIX)/bin/ranger
-	chmod -R +rX $(DEST)
-	@echo '--------------------------------------'
-	@echo 'Finished.'
-	@echo 'If you use BASH or ZSH, you can activate an extra feature now:'
-	@echo 'When you exit ranger, the directory of the current shell can be'
-	@echo 'changed to the last visited directory in ranger.  To do so, add'
-	@echo 'this alias to your shell rc file (like ~/.bashrc):'
-	@echo 'alias rng="source ranger ranger"'
-	@echo 'And run ranger by typing rng.'
-
-
 cleandoc:
+	@echo 'Removing pydoc html documentation...'
 	test -d $(DOCDIR) && rm -f -- $(DOCDIR)/*.html
 
-clean:
-	find . -regex .\*.py[co]\$$ -exec rm -f -- {} \;
-
 test:
-	./all_tests.py 1
+	@./all_tests.py 1
 
-edit:
-	@$(EDITOR) ranger.py Makefile README COPYING HACKING INSTALL $(shell find ranger test -regex .\*py$ )
-
-push:
-	@for repo in $(shell git remote); do \
-		echo "Pushing to $$repo..."; \
-		git push $$repo master; \
-	done
-
-commit: test
-	@git citool
+bm:
+	@./all_benchmarks.py $(BMCOUNT)
 
 snapshot:
 	git archive HEAD | gzip > $(NAME)-$(VERSION)-$(shell git rev-parse HEAD | cut -b 1-8).tar.gz
+
+.PHONY: default options all compile clean doc cleandoc test bm \
+	install uninstall snapshot