]> de.git.xonotic.org Git - xonotic/netradiant.git/blob - setup/win32/setup.pl
git-svn-id: svn://svn.icculus.org/netradiant/trunk@55 61c419a2-8eb2-4b30-bcec-8cead03...
[xonotic/netradiant.git] / setup / win32 / setup.pl
1 #!/usr/bin/env perl
2 # see ./setup.pl for usage info
3
4 # the templated source
5 $TEMPLATE_DIR='template';
6 # the 'meta' directory (no longer a template, not a final setup dir yet)
7 $WORK_DIR='WorkDir';
8
9 # Source common perl functions
10 BEGIN {
11   push @INC, "../common";
12 }
13 use setup;
14 $common = new setup();
15
16 # replace in file
17 sub replace {
18   # only wrap setup::replace() for now
19   $common->replace(@_);
20 }
21
22 sub svn_cleanup {
23         $CLEAN = shift(@_);
24   # take out .svn/ directories
25   print "SVN file cleanup in $CLEAN...\n";
26   my $findscan;
27   open($findscan, "find $CLEAN -name .svn | ");
28   my $line = <$findscan>;
29   do
30   {
31     chop($line);
32     system("rm -rf '$line'");
33   } until (!($line = <$findscan>));
34   close($findscan);
35 }
36
37 # make a work version from the template
38 # for IS developer use, and for custom setups generation
39 sub build_work_tree()
40 {
41   print "Building a work tree in $WORK_DIR/ from $TEMPLATE_DIR/\n";
42   
43   # make a clean copy
44   print "File copy...\n";
45   system("rm -rf $WORK_DIR");
46   system("cp -R $TEMPLATE_DIR $WORK_DIR");
47   
48   svn_cleanup( "$WORK_DIR" );
49
50   my $ESCAPED_GTKRAD_DIR = $GTKRAD_DIR;
51   $ESCAPED_GTKRAD_DIR =~ s/\\/\\\\/g;
52   
53   # proceed to replace <<GTKRAD_DIR>> in .fgl files
54   print "search/replace for base dir...\n";
55   open($findscan, "find $WORK_DIR -name '*.fgl' | ");
56   my $line = <$findscan>;
57   do
58   {
59     chop($line);
60     replace($line, '<<GTKRAD_DIR>>', $ESCAPED_GTKRAD_DIR);
61   } until (!($line = <$findscan>));
62   close($findscan);  
63 }
64
65 # finalize from a work tree version
66 # this sets some common settings, but doesn't set customizable stuff (like game packs selection)
67 # as we customize more things, this should shrink
68 sub finalize_tree
69 {
70   my $DIR = shift(@_);
71   # what is the version?
72   # NOTE: I've had countless shit getting this extracted correctly
73   my $GTKRAD_VERSION=`cat ../../include/version.default | tr -d \\\\n\\\\r\\\\f`;
74   
75   # what is the name of the binary?
76   my $GTKRAD_BIN="GtkRadiant-$GTKRAD_VERSION.exe";
77
78   print "  Finalizing $DIR/...\n";
79
80   # copy the Radiant binary to a generated file with the right name
81   #print "the thing: cp ../../radiant/Release/GtkRadiant.exe ./bin/$GTKRAD_BIN\n";
82   system("cp ../../radiant/Release/GtkRadiant.exe ./bin/$GTKRAD_BIN");
83   
84   # copy the splash screen - ET version
85   system("cp ../setup.bmp '$DIR/Setup Files/Uncompressed Files/Language Independent/OS Independent'");
86    
87   # PRODUCT_VERSION
88   print "  Product version $GTKRAD_VERSION...\n";
89   replace("$DIR/String Tables/0009-English/value.shl", '<<GTKRAD_VERSION>>', "$GTKRAD_VERSION ");
90
91   # set the binary name
92   print "  Binary name $GTKRAD_BIN...\n";
93   replace("$DIR/File Groups/Program Executable Files.fgl", '<<GTKRAD_BIN>>', "$GTKRAD_BIN");
94   replace("$DIR/String Tables/0009-English/value.shl", '<<GTKRAD_BIN>>', "$GTKRAD_BIN");
95   replace("$DIR/Shell Objects/Default.shl", '<<GTKRAD_BIN>>', "$GTKRAD_BIN");
96
97   # install path prompt  
98   replace("$SETUP_DIR/String Tables/0009-English/value.shl", '<<GTKRAD_FOLDER>>', "GtkRadiant $GTKRAD_VERSION");
99
100   # uuid
101   my $MAIN_GUID=`uuidgen`;
102   chop($MAIN_GUID);
103   chop($MAIN_GUID);
104   print "  $SETUP_DIR/ has uuid: $MAIN_GUID...\n";
105   replace("$SETUP_DIR/GtkRadiant.ipr", '<<GTKRAD_ISGUID>>', "$MAIN_GUID");
106   replace("$SETUP_DIR/String Tables/0009-English/value.shl", '<<GTKRAD_ISGUID>>', "$MAIN_GUID");
107   
108 }
109
110 # configure a tree:
111 # - what is included in the media (core, game packs)
112 # - full/nightly
113 # TODO: this could be cleaner
114 #   the variable names could be generated from DO_CORE DO_GAME_Q3 DO_GAME_WOLF
115 sub configure_tree
116 {
117   my $DIR = $SETUP_DIR;
118   print "  Configuring $DIR/...\n";
119   # get the major and minor
120   my $RADIANT_MAJOR=`cat ../../include/RADIANT_MAJOR`;
121   chomp($RADIANT_MAJOR);
122   chomp($RADIANT_MAJOR);
123   my $RADIANT_MINOR=`cat ../../include/RADIANT_MINOR`;
124   chomp($RADIANT_MINOR);
125   chomp($RADIANT_MINOR);
126   print "    version 1.$RADIANT_MAJOR.$RADIANT_MINOR\n";
127   replace("$DIR/Script Files/Setup.rul", '<<RADIANT_MAJOR>>', "$RADIANT_MAJOR");
128   replace("$DIR/Script Files/Setup.rul", '<<RADIANT_MINOR>>', "$RADIANT_MINOR");
129   if ($DO_CORE == 1)
130   {
131     replace("$DIR/Script Files/Setup.rul", '<<DO_CORE_BOOL>>', '1');
132     replace("$DIR/Component Definitions/Default.cdf", '<<DO_CORE_BOOL_YESNO>>', 'Yes');
133     if ($DO_NIGHTLY == 1)
134     {
135       replace("$DIR/Component Definitions/Default.cdf", '<<DO_CORE_BOOL_FULL_YESNO>>', 'No');
136       replace("$DIR/Script Files/Setup.rul", '<<DO_NIGHTLY_BOOL>>', '1');
137     }
138     else
139     {
140       replace("$DIR/Component Definitions/Default.cdf", '<<DO_CORE_BOOL_FULL_YESNO>>', 'Yes');      
141       replace("$DIR/Script Files/Setup.rul", '<<DO_NIGHTLY_BOOL>>', '0');
142     }
143   }
144   else
145   {
146     replace("$DIR/Script Files/Setup.rul", '<<DO_CORE_BOOL>>', '0');
147     replace("$DIR/Component Definitions/Default.cdf", '<<DO_CORE_BOOL_YESNO>>', 'No');
148     replace("$DIR/Component Definitions/Default.cdf", '<<DO_CORE_BOOL_FULL_YESNO>>', 'No');
149   }
150   if ($DO_GAME_Q3 == 1)
151   {
152     replace("$DIR/Script Files/Setup.rul", '<<DO_GAME_Q3_BOOL>>', '1');
153     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_Q3_BOOL_YESNO>>', 'Yes');
154     if ($DO_NIGHTLY == 1)
155     {
156       replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_Q3_BOOL_FULL_YESNO>>', 'No');
157     }
158     else
159     {
160       replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_Q3_BOOL_FULL_YESNO>>', 'Yes');      
161     }
162   }
163   else
164   {
165     replace("$DIR/Script Files/Setup.rul", '<<DO_GAME_Q3_BOOL>>', '0');
166     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_Q3_BOOL_YESNO>>', 'No');
167     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_Q3_BOOL_FULL_YESNO>>', 'No');
168   }
169   if ($DO_GAME_WOLF == 1)
170   {  
171     replace("$DIR/Script Files/Setup.rul", '<<DO_GAME_WOLF_BOOL>>', '1');
172     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_WOLF_BOOL_YESNO>>', 'Yes');
173     if ($DO_NIGHTLY == 1)
174     {
175       replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_WOLF_BOOL_FULL_YESNO>>', 'No');
176     }
177     else
178     {
179       replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_WOLF_BOOL_FULL_YESNO>>', 'Yes');      
180     }
181   }
182   else
183   {    
184     replace("$DIR/Script Files/Setup.rul", '<<DO_GAME_WOLF_BOOL>>', '0');
185     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_WOLF_BOOL_YESNO>>', 'No');
186     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_WOLF_BOOL_FULL_YESNO>>', 'No');
187   }
188   if ($DO_GAME_JKII == 1)
189   {  
190     replace("$DIR/Script Files/Setup.rul", '<<DO_GAME_JKII_BOOL>>', '1');
191     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_JKII_BOOL_YESNO>>', 'Yes');
192     if ($DO_NIGHTLY == 1)
193     {
194       replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_JKII_BOOL_FULL_YESNO>>', 'No');
195     }
196     else
197     {
198       replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_JKII_BOOL_FULL_YESNO>>', 'Yes');      
199     }
200   }
201   else
202   {    
203     replace("$DIR/Script Files/Setup.rul", '<<DO_GAME_JKII_BOOL>>', '0');
204     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_JKII_BOOL_YESNO>>', 'No');
205     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_JKII_BOOL_FULL_YESNO>>', 'No');
206   }
207   if ($DO_GAME_STVEF == 1)
208   {  
209     replace("$DIR/Script Files/Setup.rul", '<<DO_GAME_STVEF_BOOL>>', '1');
210     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_STVEF_BOOL_YESNO>>', 'Yes');
211     if ($DO_NIGHTLY == 1)
212     {
213       replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_STVEF_BOOL_FULL_YESNO>>', 'No');
214     }
215     else
216     {
217       replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_STVEF_BOOL_FULL_YESNO>>', 'Yes');      
218     }
219   }
220   else
221   {    
222     replace("$DIR/Script Files/Setup.rul", '<<DO_GAME_STVEF_BOOL>>', '0');
223     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_STVEF_BOOL_YESNO>>', 'No');
224     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_STVEF_BOOL_FULL_YESNO>>', 'No');
225   }
226   if ($DO_GAME_HALFLIFE == 1)
227   {  
228     replace("$DIR/Script Files/Setup.rul", '<<DO_GAME_HALFLIFE_BOOL>>', '1');
229     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_HALFLIFE_BOOL_YESNO>>', 'Yes');
230     if ($DO_NIGHTLY == 1)
231     {
232       replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_HALFLIFE_BOOL_FULL_YESNO>>', 'No');
233     }
234     else
235     {
236       replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_HALFLIFE_BOOL_FULL_YESNO>>', 'Yes');      
237     }
238   }
239   else
240   {    
241     replace("$DIR/Script Files/Setup.rul", '<<DO_GAME_HALFLIFE_BOOL>>', '0');
242     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_HALFLIFE_BOOL_YESNO>>', 'No');
243     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_HALFLIFE_BOOL_FULL_YESNO>>', 'No');
244   }
245   if ($DO_GAME_SOF2 == 1)
246   {  
247     replace("$DIR/Script Files/Setup.rul", '<<DO_GAME_SOF2_BOOL>>', '1');
248     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_SOF2_BOOL_YESNO>>', 'Yes');
249     if ($DO_NIGHTLY == 1)
250     {
251       replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_SOF2_BOOL_FULL_YESNO>>', 'No');
252     }
253     else
254     {
255       replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_SOF2_BOOL_FULL_YESNO>>', 'Yes');      
256     }
257   }
258   else
259   {    
260     replace("$DIR/Script Files/Setup.rul", '<<DO_GAME_SOF2_BOOL>>', '0');
261     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_SOF2_BOOL_YESNO>>', 'No');
262     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_SOF2_BOOL_FULL_YESNO>>', 'No');
263   }
264   if ($DO_GAME_ET == 1)
265   {
266     replace("$DIR/Script Files/Setup.rul", '<<DO_GAME_ET_BOOL>>', '1');
267     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_ET_BOOL_YESNO>>', 'Yes');
268     if ($DO_NIGHTLY == 1)
269     {
270       replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_ET_BOOL_FULL_YESNO>>', 'No');
271     }
272     else
273     {
274       replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_ET_BOOL_FULL_YESNO>>', 'Yes');      
275     }
276   }
277   else
278   {
279     replace("$DIR/Script Files/Setup.rul", '<<DO_GAME_ET_BOOL>>', '0');
280     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_ET_BOOL_YESNO>>', 'No');
281     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_ET_BOOL_FULL_YESNO>>', 'No');
282   }
283   if ($DO_GAME_Q1 == 1)
284   {
285     replace("$DIR/Script Files/Setup.rul", '<<DO_GAME_Q1_BOOL>>', '1');
286     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_Q1_BOOL_YESNO>>', 'Yes');
287     if ($DO_NIGHTLY == 1)
288     {
289       replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_Q1_BOOL_FULL_YESNO>>', 'No');
290     }
291     else
292     {
293       replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_Q1_BOOL_FULL_YESNO>>', 'Yes');      
294     }
295   }
296   else
297   {
298     replace("$DIR/Script Files/Setup.rul", '<<DO_GAME_Q1_BOOL>>', '0');
299     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_Q1_BOOL_YESNO>>', 'No');
300     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_Q1_BOOL_FULL_YESNO>>', 'No');
301   }
302   if ($DO_GAME_JA == 1)
303   {
304         # prepare the dynamic JA media file group
305         print "  Prepare JA media file group..\n";
306         # would go faster by copying only the right files in the first place
307         # rsync might even go faster - if we use it on a toplevel JAPack copy
308         system( "cp -R ../../../JAPack/base $DIR/JAPack" );
309         svn_cleanup( "$DIR/JAPack" );
310         replace( "$DIR/File Groups/JA Media Files.fgl", '<<JA_MEDIA_PATH>>', "$GTKRAD_DIR/GtkRadiant/setup/win32/$DIR/JAPack" );
311         
312     replace("$DIR/Script Files/Setup.rul", '<<DO_GAME_JA_BOOL>>', '1');
313     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_JA_BOOL_YESNO>>', 'Yes');
314     if ($DO_NIGHTLY == 1)
315     {
316       replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_JA_BOOL_FULL_YESNO>>', 'No');
317     }
318     else
319     {
320       replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_JA_BOOL_FULL_YESNO>>', 'Yes');      
321     }
322         }
323         else
324         {
325     replace("$DIR/Script Files/Setup.rul", '<<DO_GAME_JA_BOOL>>', '0');
326     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_JA_BOOL_YESNO>>', 'No');
327     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_JA_BOOL_FULL_YESNO>>', 'No');
328         }
329   if ($DO_GAME_Q2 == 1)
330   {
331     replace("$DIR/Script Files/Setup.rul", '<<DO_GAME_Q2_BOOL>>', '1');
332     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_Q2_BOOL_YESNO>>', 'Yes');
333     if ($DO_NIGHTLY == 1)
334     {
335       replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_Q2_BOOL_FULL_YESNO>>', 'No');
336     }
337     else
338     {
339       replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_Q2_BOOL_FULL_YESNO>>', 'Yes');      
340     }
341         }
342         else
343         {
344     replace("$DIR/Script Files/Setup.rul", '<<DO_GAME_Q2_BOOL>>', '0');
345     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_Q2_BOOL_YESNO>>', 'No');
346     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_Q2_BOOL_FULL_YESNO>>', 'No');
347         }
348   if ($DO_GAME_HER2 == 1)
349   {
350     replace("$DIR/Script Files/Setup.rul", '<<DO_GAME_HER2_BOOL>>', '1');
351     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_HER2_BOOL_YESNO>>', 'Yes');
352     if ($DO_NIGHTLY == 1)
353     {
354       replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_HER2_BOOL_FULL_YESNO>>', 'No');
355     }
356     else
357     {
358       replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_HER2_BOOL_FULL_YESNO>>', 'Yes');      
359     }
360         }
361         else
362         {
363     replace("$DIR/Script Files/Setup.rul", '<<DO_GAME_HER2_BOOL>>', '0');
364     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_HER2_BOOL_YESNO>>', 'No');
365     replace("$DIR/Component Definitions/Default.cdf", '<<DO_GAME_HER2_BOOL_FULL_YESNO>>', 'No');
366         }
367   # and now the nightly only stuff (i.e. media upgrade)
368   if ($DO_NIGHTLY == 1)
369   {
370     replace("$DIR/Component Definitions/Default.cdf", '<<DO_NIGHTLY_BOOL_YESNO>>', 'Yes');
371   }
372   else
373   {
374     replace("$DIR/Component Definitions/Default.cdf", '<<DO_NIGHTLY_BOOL_YESNO>>', 'No');
375   }
376 }
377
378 # command line options, default to generating the setups
379 # optional, build a template from a work version
380
381 # usage instructions
382 sub usage {
383   print <<eof;
384 Usage:
385 Builds IS script trees
386   setup.pl <gtkrad_dir> <config_file>
387   ex: setup.pl 'C:\\\\home\\\\Id' q3.cf
388   where q3.cf holds Q3 only game pack config
389 or
390 Takes a work tree and turns it back into a template tree
391   setup.pl <gtkrad_dir> -template <template_dir>
392   ex: setup.pl 'C:\\\\home\\\\Id' -template template-gen
393 eof
394 };
395
396 # main
397
398 # configure some shit
399 $UUIDGEN=`which uuidgen.exe 2>/dev/null`;
400 chop($UUIDGEN);
401 if (!-e $UUIDGEN)
402 {
403   print "uuidgen not found\n";
404   exit;
405 }
406
407 if (scalar(@ARGV)<2)
408 {
409   usage();
410   exit;
411 };
412
413 $GTKRAD_DIR=$ARGV[0];
414 print "Configured for base GtkRadiant directory: '$GTKRAD_DIR'\n";
415
416 if (@ARGV>2 && $ARGV[1] eq '-template')
417 {
418   # building a template from a work dir
419   $TEMPLATE_GEN_DIR=$ARGV[2];
420   print "Building a template version of $WORK_DIR/ into $TEMPLATE_GEN_DIR/\n";
421   print "Copy files...\n";
422   system("rm -rf $TEMPLATE_GEN_DIR");
423   system("cp -R $WORK_DIR $TEMPLATE_GEN_DIR\n");
424   # replace UUID
425   print "Templating UUID...\n";
426   system("cat $TEMPLATE_GEN_DIR/GtkRadiant.ipr | sed -e 's/InstallationGUID.*/InstallationGUID=<<GTKRAD_ISGUID>>/' > $TEMPLATE_GEN_DIR/GtkRadiant.ipr.tmp");
427   system("cp $TEMPLATE_GEN_DIR/GtkRadiant.ipr.tmp $TEMPLATE_GEN_DIR/GtkRadiant.ipr; rm $TEMPLATE_GEN_DIR/GtkRadiant.ipr.tmp");
428   # base dir
429   print "Processing '$GTKRAD_DIR' into '<<GTKRAD_DIR>>'\n";
430   open($findscan, "find $TEMPLATE_GEN_DIR -name '*.fgl' | ");
431   my $line = <$findscan>;
432   do
433   {
434     chop($line);
435     replace($line, $GTKRAD_DIR, '<<GTKRAD_DIR>>');
436   } until (!($line = <$findscan>));
437   close($findscan);
438   exit;
439 }
440
441 # set default config
442 $SETUP_DIR = 'SetupOutput';
443 $DO_CORE = 1;
444 $DO_GAME_Q3 = 0;
445 $DO_GAME_WOLF = 0;
446 $DO_GAME_JKII = 0;
447 $DO_GAME_STVEF = 0;
448 $DO_GAME_HALFLIFE = 0;
449 $DO_GAME_SOF2 = 0;
450 $DO_GAME_ET = 0;
451 $DO_GAME_Q1 = 0;
452 $DO_GAME_JA = 0;
453 $DO_GAME_Q2 = 0;
454 $DO_GAME_HER2 = 0;
455 $DO_NIGHTLY = 0;
456   
457 # load config
458
459 my $config_file = $ARGV[1];
460
461 print "Reading config from $config_file\n";
462 eval "require \"$config_file\"";
463 if ($SETUP_DIR eq $WORK_DIR)
464 {
465   die "Error: $WORK_DIR is reserved\n";
466 }
467
468 print "Config:\n";
469 print "  Output directory : $SETUP_DIR\n";
470 print "  DO_CORE          : $DO_CORE\n";
471 print "  DO_GAME_Q3       : $DO_GAME_Q3\n";
472 print "  DO_GAME_WOLF     : $DO_GAME_WOLF\n";
473 print "  DO_GAME_JKII     : $DO_GAME_JKII\n";
474 print "  DO_GAME_STVEF    : $DO_GAME_STVEF\n";
475 print "  DO_GAME_HALFLIFE : $DO_GAME_HALFLIFE\n";
476 print "  DO_GAME_SOF2     : $DO_GAME_SOF2\n";
477 print "  DO_GAME_ET       : $DO_GAME_ET\n";
478 print "  DO_GAME_Q1       : $DO_GAME_Q1\n";
479 print "  DO_GAME_JA       : $DO_GAME_JA\n";
480 print "  DO_GAME_Q2       : $DO_GAME_Q2\n";
481 print "  DO_GAME_HER2     : $DO_GAME_HER2\n";
482 if ($DO_NIGHTLY == 1)
483 {
484   print "  Configured for nightly setup\n";
485 }
486 else
487 {
488   print "  Configured for full setup\n";
489 }
490
491 build_work_tree();
492
493 print "Preparing $SETUP_DIR/...\n";
494 system("rm -rf $SETUP_DIR");
495 system("cp -R $WORK_DIR $SETUP_DIR");
496 finalize_tree("$SETUP_DIR");
497 configure_tree();