doc: Initial version.
[mes.git] / GNUmakefile
1 .PHONY: doc
2
3 GUILE:=guile
4 GUILE_FLAGS:=--no-auto-compile -L . -L guile -C . -C guile
5
6 include .config.make
7
8 .config.make:
9         ./configure
10
11 PHONY_TARGETS:= all all-go check clean clean-go default help install
12 .PHONY: $(PHONY_TARGETS)
13
14 default: all
15
16 all: build doc
17
18 build:
19         ./build.sh
20
21 cc:
22         build-aux/build-cc.sh
23
24 mes-gcc:
25         build-aux/build-cc32.sh
26
27 mes-tcc:
28         CC32=$(TCC) build-aux/build-cc32.sh
29
30 mes:
31         build-aux/build-mes.sh
32
33 clean:
34         git clean -dfx
35
36 all-go:
37         build-aux/build-guile.sh
38
39 clean-go:
40         rm -f $(shell find . -name '*.go')
41
42 check:
43         ./check.sh
44
45
46 install:
47         ./install.sh
48
49 .config.make: ./configure
50
51 seed: all-go mes-gcc mes-tcc
52         cd $(TINYCC_SEED) && MES_PREFIX=$(PWD) ./refresh.sh
53         cd $(MES_SEED) && git reset --hard HEAD
54         MES=$(GUILE) GUILE=$(GUILE) SEED=1 build-aux/build-mes.sh
55         cd $(MES_SEED) && MES_PREFIX=$(PWD) ./refresh.sh
56         MES=$(GUILE) GUILE=$(GUILE) SEED=1 build-aux/build-mes.sh
57         cp lib/x86-mes/elf32-header.hex2\
58            lib/x86-mes/x86.M1\
59            lib/x86-mes/libc+tcc.S\
60            lib/x86-mes/libc.S\
61            lib/x86-mes/crt1.S\
62            lib/x86-mes/libgetopt.S\
63            $(MESCC_TOOLS_SEED)/libs
64         cd $(MESCC_TOOLS_SEED) && MES_PREFIX=$(PWD) ./bootstrap.sh
65
66 doc/version.texi: doc/mes.texi GNUmakefile
67         (set `LANG= date -r $< +'%d %B %Y'`;\
68         echo "@set UPDATED $$1 $$2 $$3"; \
69         echo "@set UPDATED-MONTH $$2 $$3"; \
70         echo "@set EDITION $(VERSION)"; \
71         echo "@set VERSION $(VERSION)") > $@
72
73 doc: info
74
75 info: doc/mes.info
76
77 doc/mes.info: doc/mes.texi doc/version.texi GNUmakefile
78         $(MAKEINFO) -o $@ -I doc $<
79
80 install-info: info
81
82 define HELP_TOP
83 Usage: make [OPTION]... [TARGET]...
84
85 Targets:
86   all             update everything
87   all-go          update .go files
88   cc              update src/mes.gcc-out
89   doc             update documentation
90   mes-gcc         update src/mes.mes-gcc-out
91   mes-tcc         update src/mes.mes-tcc-out
92   mes             update src/mes
93   check           run unit tests
94   clean           run git clean -dfx
95   clean-go        clean .go files
96   info            update info documentation
97   install         install in $(PREFIX)
98   install-info    install info docs in $(PREFIX)/share/info
99   seed            update mes-seed in $(MES_SEED)
100 endef
101 export HELP_TOP
102 help:
103         @echo "$$HELP_TOP"
104
105 ifdef PREFIX
106 export PREFIX
107 endif
108
109 ifdef VERSION
110 export VERSION
111 endif
112
113 ifdef CC
114 export CC
115 endif
116
117 ifdef CC32
118 export CC32
119 endif
120
121 ifdef BLOOD_ELF
122 export BLOOD_ELF
123 endif
124
125 ifdef M1
126 export M1
127 endif
128
129 ifdef HEX2
130 export HEX2
131 endif
132
133 ifdef GUILE
134 export GUILE
135 endif
136
137 ifdef GUILE_TOOLS
138 export GUILE_TOOLS
139 endif
140
141 ifdef TCC
142 export TCC
143 endif
144
145 ifdef GUILE_LOAD_PATH
146 export GUILE_LOAD_PATH
147 endif
148
149 ifdef GUILE_LOAD_COMPILED_PATH
150 export GUILE_LOAD_COMPILED_PATH
151 endif
152
153 ifdef CFLAGS
154 export CFLAGS
155 endif
156
157 ifdef C32FLAGS
158 export C32FLAGS
159 endif
160
161 ifdef HEX2FLAGS
162 export HEX2FLAGS
163 endif
164
165 ifdef M1FLAGS
166 export M1FLAGS
167 endif
168
169 ifdef MESCCFLAGS
170 export MESCCFLAGS
171 endif
172
173 ifdef MES_SEED
174 export MES_SEED
175 endif
176
177 ifdef MESCC_TOOLS_SEED
178 export MESCC_TOOLS_SEED
179 endif
180
181 ifdef TINYCC_SEED
182 export TINYCC_SEED
183 endif