Mercurial > projects > dwt2
annotate rakefile @ 33:712f3c7f7660
make clean work without require existing files
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Mon, 23 Mar 2009 12:16:13 +0100 |
parents | 93b0e7382fd5 |
children | a8a838017920 |
rev | line source |
---|---|
1 | 1 # |
2 # RSP : Create a response file for the compiler, which lists all files from the packages | |
3 # Compile and create Headers | |
4 # Move objects to unique names | |
5 # | |
6 require 'find' | |
7 require 'fileutils' | |
8 | |
8 | 9 #DMD="c:\\project\\dmd-2.026\\dmd\\windows\\bin\\dmd.exe" |
10 DMD="dmd" | |
28 | 11 OBJDIR =File.expand_path("obj") |
12 DIMPDIR =File.expand_path("imp") | |
13 LIBDIR =File.expand_path("lib") | |
29
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
14 BINDIR =File.expand_path("bin") |
28 | 15 RSPNAME =File.expand_path("rsp") |
27 | 16 ALL_RESDIRS= [ "base/res", "res" ] |
21
9b96950f2c3c
the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents:
20
diff
changeset
|
17 |
28 | 18 LOG_STDOUT = File.expand_path("olog.txt") |
19 LOG_STDERR = File.expand_path("elog.txt") | |
20 | |
25 | 21 def isWindows |
22 Config::CONFIG['host_os'] =~ /mswin/ | |
23 end | |
24 | |
25 if isWindows | |
21
9b96950f2c3c
the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents:
20
diff
changeset
|
26 ALL_RESDIRS << "org.eclipse.swt.win32.win32.x86/res" |
28 | 27 LIBEXT = ".lib" |
28 OBJEXT = ".obj" | |
29 EXEEXT = ".exe" | |
21
9b96950f2c3c
the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents:
20
diff
changeset
|
30 else |
9b96950f2c3c
the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents:
20
diff
changeset
|
31 ALL_RESDIRS << "org.eclipse.swt.gtk.linux.x86/res" |
28 | 32 LIBEXT = ".a" |
33 OBJEXT = ".o" | |
34 EXEEXT = "" | |
21
9b96950f2c3c
the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents:
20
diff
changeset
|
35 end |
1 | 36 |
37 class String | |
38 def to_path | |
25 | 39 if isWindows |
40 self.gsub( '/', '\\' ); | |
41 else | |
42 self | |
43 end | |
1 | 44 end |
45 end | |
46 | |
28 | 47 def buildTree( basedir, srcdir, resdir, dcargs="", libname="" ) |
20 | 48 puts "Building #{basedir}/#{srcdir}" |
1 | 49 |
50 resdir_abs = File.expand_path( File.join( basedir, resdir )) | |
51 srcdir_abs = File.expand_path( File.join( basedir, srcdir )) | |
52 | |
28 | 53 FileUtils.mkdir_p DIMPDIR |
54 FileUtils.mkdir_p OBJDIR | |
1 | 55 |
28 | 56 rsp = File.new( RSPNAME, "w+" ) |
1 | 57 rsp.puts "-H" |
58 rsp.puts "-I#{srcdir_abs.to_path}" | |
28 | 59 rsp.puts "-I#{DIMPDIR.to_path}" |
1 | 60 rsp.puts "-J#{resdir_abs.to_path}" |
16
dbfb303e8fb0
first complete successful compile (win-only)
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
61 if dcargs.size > 0 then |
dbfb303e8fb0
first complete successful compile (win-only)
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
62 rsp.puts dcargs |
dbfb303e8fb0
first complete successful compile (win-only)
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
63 end |
3
4c0057e71936
Made a class for StringBuffer
Frank Benoit <benoit@tionex.de>
parents:
1
diff
changeset
|
64 ALL_RESDIRS.each do | dir | |
4c0057e71936
Made a class for StringBuffer
Frank Benoit <benoit@tionex.de>
parents:
1
diff
changeset
|
65 rsp.puts "-J#{File.expand_path(dir).to_path}" |
4c0057e71936
Made a class for StringBuffer
Frank Benoit <benoit@tionex.de>
parents:
1
diff
changeset
|
66 end |
1 | 67 rsp.puts "-c" |
68 rsp.puts "-op" | |
69 Find.find( srcdir_abs ) do |path| | |
70 if path =~ /\.d$/ then | |
71 rsp.puts path.to_path | |
72 end | |
73 end | |
74 rsp.close | |
75 | |
76 Dir.chdir(basedir) do | |
25 | 77 if isWindows |
28 | 78 cmd = "#{DMD} @#{RSPNAME.to_path}" |
25 | 79 else |
28 | 80 cmd = "cat #{RSPNAME.to_path} | xargs #{DMD}" |
25 | 81 end |
82 sh cmd, :verbose => false do |ok, res| | |
3
4c0057e71936
Made a class for StringBuffer
Frank Benoit <benoit@tionex.de>
parents:
1
diff
changeset
|
83 if !ok then |
4c0057e71936
Made a class for StringBuffer
Frank Benoit <benoit@tionex.de>
parents:
1
diff
changeset
|
84 Find.find( srcdir_abs ) do |path| |
4c0057e71936
Made a class for StringBuffer
Frank Benoit <benoit@tionex.de>
parents:
1
diff
changeset
|
85 if FileTest.file?(path) && path =~ /\.di$/ then |
4c0057e71936
Made a class for StringBuffer
Frank Benoit <benoit@tionex.de>
parents:
1
diff
changeset
|
86 FileUtils.rm path |
4c0057e71936
Made a class for StringBuffer
Frank Benoit <benoit@tionex.de>
parents:
1
diff
changeset
|
87 end |
4c0057e71936
Made a class for StringBuffer
Frank Benoit <benoit@tionex.de>
parents:
1
diff
changeset
|
88 end |
4c0057e71936
Made a class for StringBuffer
Frank Benoit <benoit@tionex.de>
parents:
1
diff
changeset
|
89 |
4c0057e71936
Made a class for StringBuffer
Frank Benoit <benoit@tionex.de>
parents:
1
diff
changeset
|
90 raise "compile error" |
4c0057e71936
Made a class for StringBuffer
Frank Benoit <benoit@tionex.de>
parents:
1
diff
changeset
|
91 end |
1 | 92 end |
93 end | |
94 | |
95 Find.find( srcdir_abs ) do |path| | |
96 if FileTest.file?(path) && path =~ /\.di$/ then | |
28 | 97 trgfile = File.join( DIMPDIR, path[ srcdir_abs.length+1 .. -1 ]) |
1 | 98 FileUtils.mkdir_p File.dirname(trgfile) |
99 FileUtils.mv path, trgfile | |
100 end | |
101 end | |
102 | |
28 | 103 libobjs = Array.new |
1 | 104 srcdirparts = split_all( srcdir_abs ).length |
105 Find.find( srcdir_abs ) do |path| | |
106 if FileTest.file?(path) && path =~ /\.o(bj)?$/ then | |
107 trgfile = split_all( path )[ srcdirparts .. -1 ].join( "-" ) | |
28 | 108 FileUtils.mv path, File.join( OBJDIR, trgfile ) |
109 libobjs << File.join( OBJDIR, trgfile ) | |
110 end | |
111 end | |
112 | |
113 if libname.size == 0 | |
114 libname = basedir | |
115 end | |
116 createLib( libobjs, libname ) | |
117 end | |
118 | |
119 def createLib( libobjs, name ) | |
120 FileUtils.mkdir_p LIBDIR.to_path | |
121 rsp = File.new( RSPNAME, "w+" ) | |
122 rsp.puts "-p512 -n -c #{LIBDIR}/#{name}#{LIBEXT}" | |
123 libobjs.each do |obj| | |
124 rsp.puts obj.to_path | |
125 end | |
126 rsp.close | |
127 cmd = "lib @#{RSPNAME} > #{LOG_STDOUT}" | |
128 sh cmd, :verbose => false do |ok, res| | |
129 if !ok then | |
130 raise "librarian error" | |
1 | 131 end |
132 end | |
133 | |
134 end | |
135 | |
3
4c0057e71936
Made a class for StringBuffer
Frank Benoit <benoit@tionex.de>
parents:
1
diff
changeset
|
136 desc "Clean" |
4c0057e71936
Made a class for StringBuffer
Frank Benoit <benoit@tionex.de>
parents:
1
diff
changeset
|
137 task :clean do |
20 | 138 puts "Cleaning" |
3
4c0057e71936
Made a class for StringBuffer
Frank Benoit <benoit@tionex.de>
parents:
1
diff
changeset
|
139 FileUtils.rm_rf DIMPDIR |
4c0057e71936
Made a class for StringBuffer
Frank Benoit <benoit@tionex.de>
parents:
1
diff
changeset
|
140 FileUtils.rm_rf OBJDIR |
28 | 141 FileUtils.rm_rf LIBDIR |
33
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
142 FileUtils.rm RSPNAME, :force => true |
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
143 FileUtils.rm LOG_STDOUT, :force => true |
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
144 FileUtils.rm LOG_STDERR, :force => true |
3
4c0057e71936
Made a class for StringBuffer
Frank Benoit <benoit@tionex.de>
parents:
1
diff
changeset
|
145 end |
4c0057e71936
Made a class for StringBuffer
Frank Benoit <benoit@tionex.de>
parents:
1
diff
changeset
|
146 |
27 | 147 desc "Build Base (Java Environment and Helpers)" |
148 task :base do | |
28 | 149 buildTree( "base", "src", "res", "", "dwt-base" ) |
1 | 150 end |
151 | |
152 desc "Build SWT" | |
153 task :swt do | |
25 | 154 if isWindows |
21
9b96950f2c3c
the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents:
20
diff
changeset
|
155 buildTree( "org.eclipse.swt.win32.win32.x86", "src", "res" ) |
9b96950f2c3c
the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents:
20
diff
changeset
|
156 else |
9b96950f2c3c
the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents:
20
diff
changeset
|
157 buildTree( "org.eclipse.swt.gtk.linux.x86", "src", "res" ) |
9b96950f2c3c
the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents:
20
diff
changeset
|
158 end |
1 | 159 end |
160 | |
20 | 161 desc "Build Equinox" |
162 task :equinox do | |
16
dbfb303e8fb0
first complete successful compile (win-only)
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
163 buildTree( "org.eclipse.osgi", "src", "res" ) |
dbfb303e8fb0
first complete successful compile (win-only)
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
164 buildTree( "org.eclipse.osgi", "supplement/src", "res" ) |
dbfb303e8fb0
first complete successful compile (win-only)
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
165 buildTree( "org.eclipse.equinox.common", "src", "res" ) |
20 | 166 end |
167 | |
168 desc "Build Eclipse Core" | |
169 task :core do | |
16
dbfb303e8fb0
first complete successful compile (win-only)
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
170 buildTree( "org.eclipse.core.runtime", "src", "res" ) |
dbfb303e8fb0
first complete successful compile (win-only)
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
171 buildTree( "org.eclipse.core.commands", "src", "res" ) |
dbfb303e8fb0
first complete successful compile (win-only)
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
172 buildTree( "org.eclipse.core.jobs", "src", "res" ) |
20 | 173 end |
174 | |
175 desc "Build JFace" | |
176 task :jface do | |
16
dbfb303e8fb0
first complete successful compile (win-only)
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
177 buildTree( "org.eclipse.jface", "src", "res" ) |
21
9b96950f2c3c
the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents:
20
diff
changeset
|
178 end |
9b96950f2c3c
the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents:
20
diff
changeset
|
179 |
9b96950f2c3c
the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents:
20
diff
changeset
|
180 desc "Build JFace.Text" |
9b96950f2c3c
the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents:
20
diff
changeset
|
181 task :jfacetext do |
12
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
8
diff
changeset
|
182 buildTree( "org.eclipse.text", "src", "res" ) |
28 | 183 buildTree( "org.eclipse.jface.text", "projection", "res", "-Isrc", "org.eclipse.jface.text.projection" ) |
12
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
8
diff
changeset
|
184 buildTree( "org.eclipse.jface.text", "src", "res" ) |
20 | 185 end |
186 | |
187 desc "Build UI Forms" | |
188 task :uiforms do | |
12
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
8
diff
changeset
|
189 buildTree( "org.eclipse.ui.forms", "src", "res" ) |
20 | 190 end |
191 | |
192 desc "Build Draw2D" | |
193 task :draw2d do | |
12
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
8
diff
changeset
|
194 buildTree( "org.eclipse.draw2d", "src", "res" ) |
3
4c0057e71936
Made a class for StringBuffer
Frank Benoit <benoit@tionex.de>
parents:
1
diff
changeset
|
195 end |
4c0057e71936
Made a class for StringBuffer
Frank Benoit <benoit@tionex.de>
parents:
1
diff
changeset
|
196 |
20 | 197 desc "Build ALL" |
27 | 198 task :all => [ :base, :swt, :equinox, :core, :jface, :jfacetext, :uiforms, |
21
9b96950f2c3c
the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents:
20
diff
changeset
|
199 :draw2d ] |
20 | 200 |
21
9b96950f2c3c
the 'java' tree compiles on both D1-Tango and D2-Phobos
Frank Benoit <benoit@tionex.de>
parents:
20
diff
changeset
|
201 desc "Clean, then build ALL" |
20 | 202 task :default => [ :clean, :all ] |
203 | |
204 | |
29
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
205 desc "Build SWT Snippet Collection" |
30
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
206 task :swtsnippets, :explicit_snp do | t, args | |
29
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
207 |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
208 snps_browser = [ "Snippet128", "Snippet136" ] |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
209 snps_opengl = [ "Snippet174", "Snippet195" ] |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
210 |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
211 snps_exclude = snps_browser + snps_opengl |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
212 allsnippets = FileList[ File.join("org.eclipse.swt.snippets", "src", "**/Snippet*.d" )] |
30
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
213 if args.explicit_snp != nil |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
214 puts "Building #{args.explicit_snp}" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
215 buildApp( "org.eclipse.swt.snippets", "src", "res", "", args.explicit_snp ) |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
216 else |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
217 allsnippets.each do | snp | |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
218 puts "Building #{snp}" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
219 if snp =~ /.*(Snippet\w+)\.d$/ |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
220 snpname = $1 |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
221 if !snps_exclude.include? snpname |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
222 buildApp( "org.eclipse.swt.snippets", "src", "res", "", snpname ) |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
223 end |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
224 else |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
225 puts snp |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
226 raise "Name does not match" |
29
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
227 end |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
228 end |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
229 end |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
230 end |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
231 |
33
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
232 desc "Build JFace Snippet Collection" |
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
233 task :jfacesnippets, :explicit_snp do | t, args | |
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
234 |
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
235 snps_exclude = [] |
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
236 allsnippets = FileList[ File.join("org.eclipse.jface.snippets", "EclipseJfaceSnippets", "**/*.d" )] |
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
237 if args.explicit_snp != nil |
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
238 puts "Building #{args.explicit_snp}" |
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
239 buildApp( "org.eclipse.jface.snippets", "src", "res", "", args.explicit_snp ) |
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
240 else |
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
241 allsnippets.each do | snp | |
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
242 puts "Building #{snp}" |
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
243 if snp =~ /.*[\\\/](\w+)\.d$/ |
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
244 snpname = $1 |
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
245 if !snps_exclude.include? snpname |
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
246 buildApp( "org.eclipse.jface.snippets", "src", "res", "", snpname ) |
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
247 end |
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
248 else |
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
249 puts snp |
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
250 raise "Name does not match" |
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
251 end |
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
252 end |
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
253 end |
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
254 end |
712f3c7f7660
make clean work without require existing files
Frank Benoit <benoit@tionex.de>
parents:
30
diff
changeset
|
255 |
29
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
256 def buildApp( basedir, srcdir, resdir, dflags, appname, filelist=nil ) |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
257 if filelist == nil |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
258 filelist = FileList[ "**/#{appname}.d" ] |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
259 end |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
260 |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
261 srcdir_abs = File.expand_path( File.join( basedir, srcdir)) |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
262 resdir_abs = File.expand_path( File.join( basedir, resdir)) |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
263 |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
264 rsp = File.new( RSPNAME, "w+" ) |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
265 rsp.puts "-I#{srcdir_abs.to_path}" |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
266 rsp.puts "-I#{DIMPDIR.to_path}" |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
267 rsp.puts "-J#{resdir_abs.to_path}" |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
268 if dflags.size > 0 then |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
269 rsp.puts dflags |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
270 end |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
271 ALL_RESDIRS.each do | dir | |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
272 rsp.puts "-J#{File.expand_path(dir).to_path}" |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
273 end |
30
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
274 #rsp.puts "-L/NOMAP" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
275 #rsp.print "-L" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
276 #rsp.print "+advapi32" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
277 #rsp.print "+comctl32" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
278 #rsp.print "+comdlg32" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
279 #rsp.print "+gdi32" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
280 #rsp.print "+kernel32" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
281 #rsp.print "+shell32" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
282 #rsp.print "+ole32" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
283 #rsp.print "+oleaut32" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
284 #rsp.print "+olepro32" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
285 #rsp.print "+oleacc" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
286 #rsp.print "+user32" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
287 #rsp.print "+usp10" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
288 #rsp.print "+msimg32" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
289 #rsp.print "+opengl32" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
290 #rsp.print "+shlwapi" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
291 #rsp.print "+tango-user-dmd.lib" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
292 #rsp.print "+zlib.lib" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
293 #rsp.print "+dwt-base.lib" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
294 #rsp.print "+org.eclipse.swt.win32.win32.x86.lib" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
295 #rsp.print "+#{LIBDIR.to_path}\\" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
296 #rsp.puts |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
297 |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
298 rsp.puts "-L/NOM" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
299 rsp.puts "-L+advapi32" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
300 rsp.puts "-L+comctl32" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
301 rsp.puts "-L+comdlg32" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
302 rsp.puts "-L+gdi32" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
303 rsp.puts "-L+kernel32" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
304 rsp.puts "-L+shell32" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
305 rsp.puts "-L+ole32" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
306 rsp.puts "-L+oleaut32" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
307 rsp.puts "-L+olepro32" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
308 rsp.puts "-L+oleacc" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
309 rsp.puts "-L+user32" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
310 rsp.puts "-L+usp10" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
311 rsp.puts "-L+msimg32" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
312 rsp.puts "-L+opengl32" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
313 rsp.puts "-L+shlwapi" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
314 rsp.puts "-L+tango-user-dmd.lib" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
315 rsp.puts "-L+zlib.lib" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
316 rsp.puts "-L+dwt-base.lib" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
317 rsp.puts "-L+org.eclipse.swt.win32.win32.x86.lib" |
93b0e7382fd5
SWT Snippets build on windows
Frank Benoit <benoit@tionex.de>
parents:
29
diff
changeset
|
318 rsp.puts "-L+#{LIBDIR.to_path}\\" |
29
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
319 |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
320 rsp.puts "-op" |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
321 rsp.puts "-od#{OBJDIR.to_path}" |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
322 applfile = File.join(BINDIR,appname+EXEEXT) |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
323 rsp.puts "-of#{applfile.to_path}" |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
324 filelist.each do |path| |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
325 rsp.puts File.expand_path(path).to_path |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
326 end |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
327 rsp.close |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
328 |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
329 Dir.chdir(basedir) do |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
330 if isWindows |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
331 cmd = "#{DMD} @#{RSPNAME.to_path}" |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
332 else |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
333 cmd = "cat #{RSPNAME.to_path} | xargs #{DMD}" |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
334 end |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
335 sh cmd, :verbose => false do |ok, res| |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
336 if !ok then |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
337 raise "compile error" |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
338 end |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
339 end |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
340 end |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
341 |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
342 end |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
343 |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
344 |
4e5843b771cc
First snippets buildable on windows
Frank Benoit <benoit@tionex.de>
parents:
28
diff
changeset
|
345 |