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