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