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