Makefile 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. .xbindkeysrc \
  16. .Xdefaults \
  17. .xinitrc
  18. dotlinks = $(addprefix $(HOMEDIR)/,$(dotfiles))
  19. .PHONY: all
  20. all: backup clean install
  21. .PHONY: backup
  22. backup:
  23. for i in $(dotlinks); do \
  24. if [ -f $$i ] || [ -d $$i ]; then \
  25. $(MV) --verbose $$i $$i.bck || exit $$?; \
  26. fi \
  27. done
  28. .PHONY: clean
  29. clean:
  30. $(RM) --verbose --force --recursive $(dotlinks)
  31. $(dotlinks): $(addprefix $(HOMEDIR)/,%) : $(addprefix $(CURDIR)/,%)
  32. $(LN) --verbose --symbolic --no-target-directory $< $@
  33. .PHONY: dotfiles
  34. dotfiles: $(dotlinks)
  35. .PHONY: install
  36. install: dotfiles
  37. .PHONY: uninstall
  38. uninstall:
  39. for i in $(dotlinks); do \
  40. if [ -L $$i ]; then \
  41. $(RM) --verbose $$i || exit $$? ; \
  42. fi \
  43. done