Makefile 999 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. CURDIR = $(PWD)
  2. HOMEDIR = $(HOME)
  3. BASH = /bin/bash
  4. LN = /bin/ln
  5. MV = /bin/mv
  6. RM = /bin/rm
  7. dotfiles = .bashrc \
  8. .bash_functions \
  9. .config \
  10. .emacs.d \
  11. .gitconfig \
  12. .pythonrc \
  13. .vim \
  14. .vimrc \
  15. .Xdefaults
  16. dotlinks = $(addprefix $(HOMEDIR)/,$(dotfiles))
  17. .PHONY: all
  18. all: backup clean install
  19. .PHONY: backup
  20. backup:
  21. for i in $(dotlinks); do \
  22. if [ -f $$i ] || [ -d $$i ]; then \
  23. $(MV) --verbose $$i $$i.bck || exit $$?; \
  24. fi \
  25. done
  26. .PHONY: clean
  27. clean:
  28. $(RM) --verbose --force --recursive $(dotlinks)
  29. $(dotlinks): $(addprefix $(HOMEDIR)/,%) : $(addprefix $(CURDIR)/,%)
  30. $(LN) --verbose --symbolic --no-target-directory $< $@
  31. .PHONY: dotfiles
  32. dotfiles: $(dotlinks)
  33. .PHONY: install
  34. install: dotfiles
  35. .PHONY: uninstall
  36. uninstall:
  37. for i in $(dotlinks); do \
  38. if [ -L $$i ]; then \
  39. $(RM) --verbose $$i || exit $$? ; \
  40. fi \
  41. done