Replaced exhaustive search with a binary lookup in watch list.
[erlang-gen_inotify.git] / erlang.install.mk
1 #!/usr/bin/make -f
2 #
3 # Installation helper for Erlang projects.
4 # Intended to be used along with erlang.mk.
5 #
6 #-----------------------------------------------------------------------------
7 # variables to be used in main makefile or to be set for functions in next
8 # sections
9
10 ERL_LIB_DIR = $(shell $(ERL) -noinput -eval ' \
11         io:put_chars([code:lib_dir(), "\n"]), \
12         halt(). \
13 ')
14 ESCRIPT_PATH = /usr/bin/escript
15
16 #-----------------------------------------------------------------------------
17 # information reading helpers
18
19 # APP_VERSION = $(call app-version,ebin/$(PROJECT).app)
20 define app-version
21 $(shell $(ERL) -eval ' \
22         {ok, AppFile} = init:get_argument(app_file), \
23         {ok, [{application,_,KeyList}]} = file:consult(AppFile), \
24         io:put_chars([proplists:get_value(vsn, KeyList), "\n"]), \
25         halt(). \
26 ' -app_file $1)
27 endef
28
29 #-----------------------------------------------------------------------------
30 # build rule helpers
31
32 inst_silent_0 = true
33 inst_silent = $(inst_silent_$(V))
34
35 # $(call install-wildcard,$(MODE),$(WILDCARD),$(DESTDIR))
36 define install-wildcard
37 $(if $(inst_silent),@)mkdir -p $3
38 $(foreach F,$(wildcard $2),$(call install,$1,$F,$3,skip_mkdir))
39 endef
40
41 # $(call install,$(MODE),$(FILE),$(DESTDIR))
42 #
43 # Note that this function preserves the filename. If you need to install the
44 # file under a different name (e.g. "*.example"), use /usr/bin/install
45 # directly.
46 define install
47 $(if $4,,$(if $(inst_silent),@)mkdir -p $3)
48 $(if $(inst_silent),@echo " INSTALL " $3/$(notdir $2); )install -m $1 $2 $3/$(notdir $2)
49
50 endef
51
52 # $(call install-escript,$(FILE),$(DESTFILE),$(BEAM_OPTS))
53 #
54 # Remember to set in $(BEAM_OPTS) at least "-args_file ...", so the VM args
55 # can be overriden.
56 define install-escript
57 $(if $(inst_silent),@echo " ESCRIPT " $2)
58 $(if $(inst_silent),@)mkdir -p $(dir $2)
59 $(if $(inst_silent),@)printf '#!%s\n%%%%! %s\n' '$(ESCRIPT_PATH)' '$3' > $2
60 $(if $(inst_silent),@)head -n 3 $1 | sed -e '/^#!/d' -e '/^%*!/d' >> $2
61 $(if $(inst_silent),@)tail -n +4 $1 >> $2
62 $(if $(inst_silent),@)chmod 755 $2
63 endef
64
65 #-----------------------------------------------------------------------------
66 # vim:ft=make