makefile: force dependency on all .nit file of src
[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 picnit nitpretty nitmetrics nitx nitlight nitserial nitrestful
20 SRCS=$(patsubst %,%.nit,$(OBJS))
21 BINS=$(patsubst %,../bin/%,$(OBJS))
22 DEPS=$(wildcard *.nit */*.nit) parser/parser.nit
23
24 # Workaround: Cygwin requires peflags to bootstrap
25 peflags := ${shell which peflags 2>/dev/null}
26
27 all: ../bin/nitc
28
29 pre-build:
30 ./git-gen-version.sh
31
32 nitc_0: ../c_src/nitc $(DEPS)
33 @echo '***************************************************************'
34 @echo '* Compile nitc_0 from NIT source files *'
35 @echo '***************************************************************'
36 ./git-gen-version.sh
37 ../c_src/nitc ${OLDNITCOPT} -o nitc_0 -v nitc.nit
38 ifdef peflags
39 ${peflags} --cygwin-heap=2048 nitc_0
40 endif
41
42 ../bin/nitc: nitc_0 $(DEPS)
43 @echo '***************************************************************'
44 @echo '* Compile binaries from NIT source files *'
45 @echo '***************************************************************'
46 ./git-gen-version.sh
47 test -d ../bin || mkdir ../bin
48 ./nitc_0 ${NITCOPT} -v --dir ../bin $(SRCS)
49
50 $(OBJS): nitc_0 $(DEPS)
51 ./git-gen-version.sh
52 ./nitc_0 ${NITCOPT} -v $@.nit
53
54 ../c_src/nitc: ../c_src/*.c ../c_src/*.h ../c_src/Makefile
55 @echo '***************************************************************'
56 @echo '* Compile nitc from C source files *'
57 @echo '***************************************************************'
58 cd ../c_src; make
59 rm ../c_src/*.o || true # to reduce disc used
60 ifdef peflags
61 ${peflags} --cygwin-heap=2048 ../c_src/nitc
62 endif
63
64 parser/parser.nit:
65 @echo '***************************************************************'
66 @echo '* Generate nit parser *'
67 @echo '***************************************************************'
68 cd parser; make
69
70 clean:
71 rm -rf -- version.nit nitc_0 2> /dev/null || true
72 cd parser; make clean