- More work on scripting interface
[supertux.git] / src / scripting / Jamfile
1 SubDir TOP src scripting ;
2
3 if $(MINISWIG)
4 {
5     ##  MiniSwigRule outputcppfile : inputfile : modulename : flags
6     rule MiniSwigRule
7     {
8         local sources = [ SearchSource $(>) ] ;
9         local cppfile = [ LocateTarget $(<) : $(SUBDIR) ] ;
10         local headerfile = [ LocateTarget $(<:S=.h) : $(SUBDIR) ] ;
11         SEARCH on $(headerfile) = $(SOURCH_SOURCE) ;
12     
13         MiniSwig $(cppfile) : $(sources) ;
14         CPPFLAGS on $(cppfile) = $(CPPFLAGS) ;
15         headerfile on $(cppfile) = $(headerfile) ;
16         modulename on $(cppfile) = $(3) ;
17         FLAGS on $(cppfile) = $(4) ;
18
19         local object = [ CompileObject $(cppfile) ] ;
20
21         return $(object) ;
22     }
23
24     rule MiniSwig
25     {
26         Depends $(<) : $(>) $(MINISWIG) ;
27         Clean clean : $(<) ;
28     }
29
30     actions MiniSwig bind headerfile
31     {
32         $(CPP) -x c $(CPPFLAGS) $(>) -o $(LOCATE_OBJECTS)/miniswig.tmp
33         $(MINISWIG) --output-cpp $(<) --input $(LOCATE_OBJECTS)/miniswig.tmp --output-hpp $(headerfile) --module $(modulename) $(FLAGS)
34 #        rm -f $(LOCATE_OBJECTS)/miniswig.tmp
35     }
36 }
37
38 wrapper_sources = [ Filter [ Wildcard *.cpp *.h ] : wrapper.cpp wrapper.h ] ;
39 if ! $(MINISWIG)
40 {
41     wrapper_sources += wrapper.cpp ;
42 }
43 wrapper_objects = [ CompileObjects $(wrapper_sources) ] ;
44 if $(MINISWIG)
45 {
46     wrapper_objects += 
47         [ MiniSwigRule wrapper.cpp : wrapper.interface.h : supertux : --select-namespace Scripting ] ;
48 }
49