diff --git a/Makefile b/Makefile index f934c88..5cf84f5 100644 --- a/Makefile +++ b/Makefile @@ -5,29 +5,30 @@ home ?= $(HOME) -dotfiles_url_base = https://raw.githubusercontent.com/10sr/dotfiles/master/ -dotfiles_git = git@github.com:10sr/dotfiles.git -dotfiles_git_pub = http://github.com/10sr/dotfiles.git +dotfiles_url_base := https://raw.githubusercontent.com/10sr/dotfiles/master/ +dotfiles_git := git@github.com:10sr/dotfiles.git +dotfiles_git_pub := http://github.com/10sr/dotfiles.git -ifeq (,$(DOTFILES_DIR)) ifeq (,$(dotfiles_dir)) +ifeq (,$(DOTFILES_DIR)) $(warning "Neigher DOTFILES_DIR nor dotfiles_dir not defined.") $(warning "Use $(home)/10sr_dotfiles for default.") +dotfiles_dir := $(home)/10sr_dotfiles +else +dotfiles_dir := $(DOTFILES_DIR) endif endif -DOTFILES_DIR ?= $(home)/10sr_dotfiles -dotfiles_dir ?= $(DOTFILES_DIR) -localdir = $(home)/.local -vardir = $(home)/.var -bindir = $(localdir)/bin +localdir := $(home)/.local +vardir := $(home)/.var +bindir := $(localdir)/bin -current = $(shell date) -uname = $(shell uname) +current := $(shell date) +uname := $(shell uname) -shrc_loadables = sh bash zsh -shrc_common_tpl = +shrc_loadables := sh bash zsh +shrc_common_tpl := emacs ?= $(shell which emacs 2>/dev/null) git ?= $(shell which git 2>/dev/null) @@ -38,13 +39,13 @@ grep ?= GREP_OPTIONS= $(shell which grep 2>/dev/null) all: default -tests = test-el +tests := test-el test: test-syntax $(tests) -test_syntaxes = test-syntax-el test-syntax-sh +test_syntaxes := test-syntax-el test-syntax-sh test-syntax: $(test_syntaxes) -setups = setup-darwin setup-directories setup-emacs setup-gitconf \ +setups := setup-darwin setup-directories setup-emacs setup-gitconf \ setup-repository setup-util setup-rc # `make setup` to setup these all sounds to be too match setup-all: $(setups) @@ -70,38 +71,38 @@ check-syntax: test-syntax # Is this usefull? Just checking uname is not enough? -ismsys = -iscygwin = -iswindows = +ismsys := +iscygwin := +iswindows := -isdarwin = -isfreebsd = -isbsd = +isdarwin := +isfreebsd := +isbsd := -islinux = +islinux := ifneq (,$(findstring MINGW,$(uname))) -ismsys = t +ismsys := t endif ifneq (,$(findstring CYGWIN,$(uname))) -iscygwin = t +iscygwin := t endif ifneq (,$(ismsys)$(iscygwin)) -iswindows = t +iswindows := t endif ifneq (,$(findstring Darwin,$(uname))) -isdarwin = t +isdarwin := t endif ifneq (,$(findstring FreeBSD,$(uname))) -isfreebsd = t +isfreebsd := t endif ifneq (,$(isdarwin)$(isfreebsd)) -isbsd = t +isbsd := t endif ifneq (,$(findstring Linux,$(uname))) -islinux = t +islinux := t endif @@ -111,8 +112,8 @@ endif -# setup repository -# ---------------- +# setup git repository +# -------------------- setup-repository: $(dotfiles_dir)/.git @@ -134,11 +135,11 @@ endif # utils # ----- -setup_utils = colortable16.sh 256colors2.pl pacapt ack-2.12 +setup_utils := colortable16.sh 256colors2.pl pacapt ack-2.12 setup-util: $(setup_utils) .PHONY: $(setup_utils) -setup_utils_path = $(setup_utils:%=$(bindir)/%) +setup_utils_path := $(setup_utils:%=$(bindir)/%) $(setup_utils): %: $(bindir)/% @@ -147,17 +148,17 @@ $(setup_utils_path): chmod +x "$@" colortable16.sh: \ - util_url = https://gist.github.com/10sr/6852317/raw/colortable16.sh -256colors2.pl: util_url = https://gist.github.com/10sr/6852331/raw/256colors2.pl -pacapt: util_url = https://github.com/icy/pacapt/raw/ng/pacapt -ack-2.12: util_url = http://beyondgrep.com/ack-2.12-single-file + util_url := https://gist.github.com/10sr/6852317/raw/colortable16.sh +256colors2.pl: util_url := https://gist.github.com/10sr/6852331/raw/256colors2.pl +pacapt: util_url := https://github.com/icy/pacapt/raw/ng/pacapt +ack-2.12: util_url := http://beyondgrep.com/ack-2.12-single-file # create directories # ------------------ -setup_directories = $(localdir) $(vardir) $(bindir) +setup_directories := $(localdir) $(vardir) $(bindir) setup-directory: $(setup_directories) $(localdir) $(vardir) $(bindir): @@ -168,7 +169,7 @@ $(localdir) $(vardir) $(bindir): # darwin setup # ------------ -setup_darwins = setup-darwin-defaults setup-darwin-daemon +setup_darwins := setup-darwin-defaults setup-darwin-daemon setup-darwin: $(setup_darwins) .PHONY: $(setup_darwins) @@ -210,10 +211,10 @@ setup-emacs: emacs.el # ---------------- ifneq (,$(git)) -git_conf = $(git) config --global +git_conf := $(git) config --global endif -xz = $(shell which xz 2>/dev/null) +xz := $(shell which xz 2>/dev/null) setup-gitconf: ifeq (,$(git)) @@ -271,11 +272,18 @@ endif # setup rc files # -------------- -setup_rcs = setup-rc-vimrc setup-rc-tmux.conf setup-rc-emacs.el +# Generate load codes from the files themselves. +# Load codes are defined by following SETUP_LOAD: indicator. +# String DOTFILES_DIR in the load codes will be replaced into the value of +# $(dotfiles_dir). +# If append_load is non-empty, the load codes are appended to $(topfile), +# otherwise the code will be just printed out to stdout. + +setup_rcs := setup-rc-vimrc setup-rc-tmux.conf setup-rc-emacs.el setup-rc: $(setup_rcs) .PHONY: $(setup_rcs) -command_extract_setup_load = $(grep) -e 'SETUP_LOAD: ' | \ +command_extract_setup_load := $(grep) -e 'SETUP_LOAD: ' | \ sed -e 's/^.*SETUP_LOAD: //' -e 's|DOTFILES_DIR|$(dotfiles_dir)|' $(setup_rcs): setup-rc-%: $(dotfiles_dir)/% @@ -286,17 +294,21 @@ else cat "$<" | $(command_extract_setup_load) | tee -a "$(topfile)" endif -setup-rc-vimrc: topfile = $(home)/.vimrc -setup-rc-tmux.conf: topfile = $(home)/.tmux.conf -setup-rc-emacs.el: topfile = $(home)/.emacs.d/init.el +setup-rc-vimrc: topfile := $(home)/.vimrc +setup-rc-tmux.conf: topfile := $(home)/.tmux.conf +setup-rc-emacs.el: topfile := $(home)/.emacs.d/init.el $(dotfiles_dir)/%: setup-repository + + + + # test # ==== -test_els = test-el-emacs.el +test_els := test-el-emacs.el test-el: $(test_els) .PHONY: $(test_els) @@ -312,7 +324,7 @@ $(test_els): test-el-%: % # test syntax # =========== -test_syntax_shs = test-syntax-shrc test-syntax-profile \ +test_syntax_shs := test-syntax-shrc test-syntax-profile \ test-syntax-xinitrc test-syntax-xprograms test-syntax-sh: $(test_syntax_shs) .PHONY: $(test_syntax_shs) @@ -322,11 +334,11 @@ $(test_syntax_shs): test-syntax-%: % -test_syntax_els = test-syntax-emacs.el +test_syntax_els := test-syntax-emacs.el test-syntax-el: $(test_syntax_els) .PHONY: $(test_syntax_els) -sexp_elisp_syntax_check = \ +sexp_elisp_syntax_check := \ (with-temp-buffer \ (emacs-lisp-mode) \ (insert-file-contents file) \