OSDN Git Service

For snapshot build,define VERSION variable
[happyabc/happyabc.git] / OMakefile
1 PREFIX=
2         if $(not $(defined PREFIX))
3                 value /usr/local
4         else
5                 value $(PREFIX)
6
7
8 if $(file-exists OMakefile.release)
9         include OMakefile.release
10         export
11 else
12         VERSION=HEAD[$(shell date +%Y-%m-%d)]
13         export
14
15
16 Shell. +=
17     ounit-postproc(argv) =
18       (grep "FAIL\|ERROR" && exit 1) || exit 0
19     ocaml-clean(argv) =
20       rm -f *.cm[iox] *.o *.omc *.opt *.run *~ $(argv) *.cmxa *.a *.spot *.annot
21
22
23 .PHONY: all install config clean distclean info
24
25 info:
26         echo $(VERSION)
27
28 # ------------------------------
29 # config
30 # ------------------------------
31 config: OMakefile.config base/config.ml
32
33 .INCLUDE: OMakefile.config
34         if $(mem config,$(TARGETS))
35                 rm -f $@
36                 if $(and $(defined RELATIVE),$(RELATIVE))
37                         echo LIB_DIR=$(PREFIX) >> $@
38                         echo SHARE_DIR=$(PREFIX) >> $@
39                         echo BIN_DIR=$(PREFIX) >> $@
40                 else
41                         if $(not $(defined LIB_DIR))
42                                 echo LIB_DIR=$(PREFIX)/lib/habc >> $@
43                         else
44                                 echo LIB_DIR=$(LIB_DIR) >> $@
45                         if $(not $(defined SHARE_DIR))
46                                 echo SHARE_DIR=$(PREFIX)/share/habc >> $@
47                         else
48                                 echo SHARE_DIR=$(SHARE_DIR) >> $@
49                         if $(not $(defined BIN_DIR))
50                                 echo BIN_DIR=$(PREFIX)/bin >> $@
51                         else
52                                 echo BIN_DIR=$(BIN_DIR) >> $@
53
54                 if $(shell-success-null ocamlc$(if $(OCAMLC_OPT_EXISTS), .opt) -annot)
55                         @echo "static.OCAMLFLAGS +=-annot" >> $@
56                 else
57                         @echo "static.OCAMLFLAGS +=-dtypes" >> $@
58         if $(not $(file-exists OMakefile.config))
59                 @echo "Please refer to the installation instructions in file README.mkdn."
60                 @echo "If you've just unpacked the distribution, something like"
61                 @echo "   omake config"
62                 @echo "   omake all"
63                 @echo "   omake install"
64                 @echo "should work.  But see the file README.mkdn for more details."
65
66 base/config.ml:
67         if $(mem config,$(TARGETS))
68                 rm -f $@
69                 echo 'let version = "$(VERSION)"' >> $@
70                 if $(and $(defined RELATIVE),$(RELATIVE))
71                         @echo 'let bin_dir   = Str.global_replace (Str.regexp "\\\\") "/" (Filename.dirname Sys.executable_name)' >> $@
72                         @echo 'let share_dir = bin_dir' >> $@
73                         @echo 'let lib_dir   = bin_dir' >> $@
74                 else
75                         @echo 'let bin_dir   = "$(ocaml-escaped  $(BIN_DIR))"' >> $@
76                         @echo 'let share_dir = "$(ocaml-escaped  $(SHARE_DIR))"' >> $@
77                         @echo 'let lib_dir   = "$(ocaml-escaped  $(LIB_DIR))"' >> $@
78                 @echo 'let default_includes = [lib_dir;"."]' >> $@
79                 @echo 'let default_template = share_dir ^ "/template.xml"' >> $@
80                 @echo 'let path_sep="$(PATHSEP)"' >> $@
81                 @echo 'let exe="$(EXE)"' >> $@
82
83 .SUBDIRS: scm xml driver base
84 # ------------------------------
85 # all
86 # ------------------------------
87 habc-scm$(EXE): scm/src/habc-scm$(EXE)
88         cp $^ .
89
90 habc-xml$(EXE): xml/src/habc-xml$(EXE)
91         cp $^ .
92
93 habc$(EXE) : driver/habc$(EXE)
94         cp $^ .
95
96 PROGRAM = habc$(EXE) habc-xml$(EXE) habc-scm$(EXE)
97
98 all: config $(PROGRAM)
99
100 .DEFAULT: all
101
102 # ------------------------------
103 # install
104 # ------------------------------
105 install: $(PROGRAM)
106         mkdir -p $(BIN_DIR)
107         mkdir -p $(LIB_DIR)
108         mkdir -p $(SHARE_DIR)
109         mkdir -p $(SHARE_DIR)/example
110         $(INSTALL) $(PROGRAM)   $(BIN_DIR)
111         $(INSTALL) share/habc/* $(SHARE_DIR)
112         $(INSTALL) example/*    $(SHARE_DIR)/example/
113         $(INSTALL) lib/habc/*   $(LIB_DIR)
114         if $(or $(equal Win32,$(OSTYPE)),$(equal Cygwin,$(OSTYPE)))
115                 $(INSTALL) win32/swfmill/* $(BIN_DIR)/
116                 $(INSTALL) README.mkdn $(BIN_DIR)/
117
118 # ------------------------------
119 # clean
120 # ------------------------------
121 clean:
122         ocaml-clean *.abc $(PROGRAM)
123
124 distclean: clean
125         ocaml-clean *.abc $(PROGRAM) OMakefile.config base/config.ml
126