-Started to move stuff from library back to main game
[supertux.git] / mk / jam / compiler.jam
1 #============================================================================
2 # Rules for C and C++ files
3 #============================================================================
4
5 if $(CC)
6 {
7
8 rule CcRule
9 {
10     local object ;
11
12     if [ IsElem shared : $(2) ]
13     {
14         object = [ LocateTarget $(<:S=.lo) ] ;
15         CC on $(object) = "$(LIBTOOL) --mode=compile $(CC)" ;
16     } else {
17         object = [ LocateTarget $(<:S=.o) ] ;
18     }
19
20     CFLAGS on $(object) = $(CFLAGS) ;
21     CPPFLAGS on $(object) = $(CPPFLAGS) ;
22     Cc $(object) : $(<) ;
23     Depends $(object) : $(<) ;
24     return $(object) ;
25 }
26 RegisterFileType CcRule : .c ;
27 RegisterHeaderRule HeaderRule : $(HDRPATTERN) : .c ;
28
29 actions Cc
30 {
31     $(CC) -c -o $(<) $(CPPFLAGS) $(CFLAGS) $(>)
32 }
33 } # end if $(CC)
34
35 if $(CXX)
36 {
37
38 rule C++Rule
39 {
40     local object ;
41     
42     if [ IsElem shared : $(2) ] {
43         object = [ LocateTarget $(<:S=.lo) ] ;
44         CXX on $(object) = "$(LIBTOOL) --mode=compile $(CXX)" ;
45     } else {
46         object = [ LocateTarget $(<:S=.o) ] ;
47     }
48     CXXFLAGS on $(object) = $(CXXFLAGS) ;
49     CPPFLAGS on $(object) = $(CPPFLAGS) ;
50     C++ $(object) : $(<) ;
51     Depends $(object) : $(<) ;
52     return $(object) ;
53 }
54 RegisterFileType C++Rule : .cpp .cc .c++ ; # we can't register .C here because
55                                            # of windows being case-insensitive.
56 RegisterHeaderRule HeaderRule : $(HDRPATTERN) : .cpp .cc .c++ ;
57
58 actions C++
59 {
60     $(CXX) -c -o $(<) $(CPPFLAGS) $(CXXFLAGS) $(>)
61 }
62 } # end if $(CXX)
63
64 rule CreateIncludeFlags
65 {
66     return -I$(<) ;
67 }
68
69 rule CreateDefineFlags
70 {
71     return -D$(<) ;
72 }