Makefiles: add pre-build
[nit.git] / src / Makefile
1 # This file is part of NIT ( http://www.nitlanguage.org ).
2 #
3 # Copyright 2008 Jean Privat <jean@pryen.org>
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 # http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16
17 NITCOPT=--semi-global
18 OLDNITCOPT=--semi-global
19 OBJS=nitc nitpick nit nitdoc nitls nitunit nitpretty nitmetrics nitx nitlight nitdbg_client nitserial
20 SRCS=$(patsubst %,%.nit,$(OBJS))
21 BINS=$(patsubst %,../bin/%,$(OBJS))
22
23 all: bin/nitc
24
25 pre-build:
26 ./git-gen-version.sh
27
28 nitc_0: ../c_src/nitc parser/parser.nit
29 @echo '***************************************************************'
30 @echo '* Compile nitc_0 from NIT source files *'
31 @echo '***************************************************************'
32 ./git-gen-version.sh
33 ../c_src/nitc ${OLDNITCOPT} -o nitc_0 -v nitc.nit
34
35 bin/nitc: nitc_0 parser/parser.nit
36 @echo '***************************************************************'
37 @echo '* Compile binaries from NIT source files *'
38 @echo '***************************************************************'
39 ./git-gen-version.sh
40 test -d ../bin || mkdir ../bin
41 ./nitc_0 ${NITCOPT} -v --dir ../bin $(SRCS)
42
43 $(OBJS): nitc_0 parser/parser.nit
44 ./git-gen-version.sh
45 ./nitc_0 ${NITCOPT} -v $@.nit
46
47 ../c_src/nitc: ../c_src/*.c ../c_src/*.h ../c_src/Makefile
48 @echo '***************************************************************'
49 @echo '* Compile nitc from C source files *'
50 @echo '***************************************************************'
51 cd ../c_src; make
52 rm ../c_src/*.o || true # to reduce disc used
53
54 parser/parser.nit:
55 @echo '***************************************************************'
56 @echo '* Generate nit parser *'
57 @echo '***************************************************************'
58 cd parser; make
59
60 clean:
61 rm -rf -- version.nit nitc_0 2> /dev/null || true
62 cd parser; make clean