root/lang/make/misc/kana/Makefile.deploy

Revision 5284, 4.7 kB (checked in by kana, 9 months ago)

lang/make/misc/kana/Makefile.deploy:
* Initial import.

Line 
1# Makefile to update config.
2# NOTE: GNU make is required.
3ID=$$Id$$#{{{1
4
5all: update
6.PHONY: all clean package _package update
7
8SHELL=/bin/sh
9# For testing `update', use like DESTDIR=./test
10DESTDIR=
11
12
13
14
15# Group definitions  #{{{1
16ALL_GROUPS
17## sample
18# ALL_GROUPS=DOTS VIM
19
20GROUP_DOTS_FILES=\
21  dot.bash_profile \
22  dot.bashrc \
23  dot.bash.d/bash_completion \
24  dot.bash.d/cdhist.sh \
25  dot.bash.d/svk-completion.pl \
26  dot.inputrc \
27  dot.guile \
28  dot.screenrc \
29  dot.Xdefaults
30GROUP_DOTS_RULE=$(patsubst dot.%,$(HOME)/.%,$(1))
31
32GROUP_VIM_FILES=\
33  $(GROUP_VIM_DOC_FILES) \
34  vim/dot.vim/after/ftplugin/xml_autons.vim \
35  vim/dot.vim/autoload/narrow.vim \
36  vim/dot.vim/autoload/scratch.vim \
37  vim/dot.vim/autoload/textobj/user.vim \
38  vim/dot.vim/autoload/vcsi.vim \
39  vim/dot.vim/autoload/xml/svg11.vim \
40  vim/dot.vim/colors/black_angus.vim \
41  vim/dot.vim/colors/gothic.vim \
42  vim/dot.vim/colors/less.vim \
43  vim/dot.vim/ftplugin/c_tofunc.vim \
44  vim/dot.vim/ftplugin/issue.vim \
45  vim/dot.vim/ftplugin/vim_tofunc.vim \
46  vim/dot.vim/ftplugin/xml_move.vim \
47  vim/dot.vim/plugin/cygclip.vim \
48  vim/dot.vim/plugin/narrow.vim \
49  vim/dot.vim/plugin/scratch.vim \
50  vim/dot.vim/plugin/surround.vim \
51  vim/dot.vim/plugin/surround_config.vim \
52  vim/dot.vim/plugin/textobj/datetime.vim \
53  vim/dot.vim/plugin/tofunc.vim \
54  vim/dot.vim/plugin/vcsi.vim \
55  vim/dot.vim/plugin/zapit.vim \
56  vim/dot.vim/syntax/issue.vim \
57  vim/dot.vim/syntax/rest.vim \
58  vim/dot.vimrc
59GROUP_VIM_RULE=$(patsubst vim/dot.%,$(HOME)/.%,$(1))
60GROUP_VIM_DOC_FILES=\
61  vim/dot.vim/doc/cygclip.txt \
62  vim/dot.vim/doc/narrow.txt \
63  vim/dot.vim/doc/scratch.txt \
64  vim/dot.vim/doc/surround.txt \
65  vim/dot.vim/doc/textobj-datetime.txt \
66  vim/dot.vim/doc/textobj-user.txt \
67  vim/dot.vim/doc/tofunc.txt \
68  vim/dot.vim/doc/vcsi.txt \
69  vim/dot.vim/doc/xml_autons.txt \
70  vim/dot.vim/doc/xml_move.txt \
71  vim/dot.vim/doc/zapit.txt
72GROUP_VIM_POST_TARGETS=vim-update-local-helptags
73vim-update-local-helptags: $(DESTDIR)$(HOME)/.vim/doc/tags
74$(DESTDIR)$(HOME)/.vim/doc/tags: $(GROUP_VIM_DOC_FILES)
75        vim -n -N -u NONE -U NONE -e -c 'helptags $(dir $@) | q'
76
77
78
79
80# Package definitions  #{{{1
81# Usage:
82#   make PACKAGE_NAME={one in ALL_PACKAGES} \
83#        PACKAGE_TYPE={one in ALL_PACKAGE_TYPES} \
84#        package
85ALL_PACKAGES=
86## sample:
87#ALL_PACKAGES=\
88#  vim-all \
89#  vim-cygclip
90
91PACKAGE_vim_all_ARCHIVE=vim-all
92PACKAGE_vim_all_BASE=vim
93PACKAGE_vim_all_FILES=$(GROUP_VIM_FILES)
94
95PACKAGE_vim_cygclip_ARCHIVE=vim-cygclip-0.1
96PACKAGE_vim_cygclip_BASE=vim/dot.vim
97PACKAGE_vim_cygclip_FILES=\
98  vim/dot.vim/doc/cygclip.txt \
99  vim/dot.vim/plugin/cygclip.vim
100
101
102
103
104# package  #{{{1
105
106PACKAGE_NAME=# Set from command line
107PACKAGE_TYPE=tar
108
109ALL_PACKAGE_TYPES=tar zip
110PACKAGE_COMMAND_tar=tar jcvf
111PACKAGE_SUFFIX_tar=.tar.bz2
112PACKAGE_COMMAND_zip=zip
113PACKAGE_SUFFIX_zip=.zip
114
115package:
116        if [ -z '$(filter $(PACKAGE_NAME),$(ALL_PACKAGES))' ]; then \
117          echo 'Error: Invalid PACKAGE_NAME "$(PACKAGE_NAME)".'; \
118          false; \
119        fi
120        if [ -z '$(filter $(PACKAGE_TYPE),$(ALL_PACKAGE_TYPES))' ]; then \
121          echo 'Error: Invalid PACKAGE_TYPE "$(PACKAGE_TYPE)".'; \
122          false; \
123        fi
124        $(MAKE) 'package=$(subst -,_,$(PACKAGE_NAME))' _package
125_package:
126        ln -s $(PACKAGE_$(package)_BASE) $(PACKAGE_$(package)_ARCHIVE)
127        $(PACKAGE_COMMAND_$(PACKAGE_TYPE)) \
128          $(PACKAGE_$(package)_ARCHIVE)$(PACKAGE_SUFFIX_$(PACKAGE_TYPE)) \
129          $(foreach file, \
130                    $(PACKAGE_$(package)_FILES), \
131                    $(patsubst $(PACKAGE_$(package)_BASE)/%, \
132                               $(PACKAGE_$(package)_ARCHIVE)/%, \
133                               $(file)))
134        rm $(PACKAGE_$(package)_ARCHIVE)
135
136
137
138
139# update  #{{{1
140# Rules for `update' are generated by eval.
141
142UPDATE_DIR=mkdir -p
143UPDATE_FILE=cp
144
145RemoveCurrentDirectory=$(filter-out ./,$(1))
146RemoveDuplicates=$(sort $(1))
147CallRule=$(call RemoveCurrentDirectory,$(call GROUP_$(1)_RULE,$(2)))
148
149define GenerateRulesToUpdateFile  # (src, dest)
150update: $(DESTDIR)$(2)
151$(DESTDIR)$(2): $(1)
152        $(UPDATE_FILE) '$$<' '$$@'
153
154endef
155
156define GenerateRulesToUpdateDirectory  # (dest)
157update: $(DESTDIR)$(1)
158$(DESTDIR)$(1):
159        $(UPDATE_DIR) '$$@'
160
161endef
162
163define GenerateRulesFromGroups  # (groups = (group_name*))
164$(foreach directory, \
165  $(call RemoveDuplicates, \
166    $(foreach group, \
167      $(1), \
168      $(dir $(call CallRule,$(group),$(GROUP_$(group)_FILES))))), \
169  $(call GenerateRulesToUpdateDirectory,$(directory)))
170$(foreach group, \
171  $(1), \
172  $(foreach file, \
173    $(GROUP_$(group)_FILES), \
174    $(call GenerateRulesToUpdateFile,$(file),$(call CallRule,$(group),$(file)))))
175update .PHONY: $(foreach group,$(1),$(GROUP_$(group)_POST_TARGETS))
176endef
177
178$(eval $(call GenerateRulesFromGroups,$(ALL_GROUPS)))
179
180
181
182
183# clean  #{{{1
184
185clean:
186        rm -rf `find -name '*~' -or -name ',*'`
187
188
189
190
191# __END__
192# vim: foldmethod=marker
Note: See TracBrowser for help on using the browser.