upload http
[bottlenecks.git] / rubbos / app / httpd-2.0.64 / srclib / apr / build / cvtdsp.pl
1 use IO::File;
2 use File::Find;
3
4 if ($ARGV[0] eq '-6') {
5     find(\&tovc6, '.');
6 }
7 elsif ($ARGV[0] eq '-5') {
8     find(\&tovc5, '.');
9 }
10 elsif ($ARGV[0] eq '-2005') {
11     find(\&tovc2005, '.');
12 }
13 elsif ($ARGV[0] eq '-w3') {
14     find(\&tow3, '.');
15 }
16 elsif ($ARGV[0] eq '-w4') {
17     find(\&tow4, '.');
18 }
19 elsif ($ARGV[0] eq '-ia64') {
20     find(\&tovc64, '.');
21 }
22 elsif ($ARGV[0] eq '-d') {
23     find(\&todebugpools, '.');
24 }
25 elsif ($ARGV[0] eq '-b') {
26     find(\&tobrowse, '.');
27 }
28 elsif ($ARGV[0] eq '-mt') {
29     find(\&addmt, '.');
30 }
31 elsif ($ARGV[0] eq '-m') {
32         ## 0 - conapp, 1 - dll lib, 2 - static lib
33         $dsptype = 2;
34         $name = "apr";
35         onemake();
36 }
37 else {
38     print "Specify -5 or -6 for Visual Studio 5 or 6 (98) .dsp format\n";
39     print "Specify -w3 or -w4 for .dsp build with warning level 3 or 4 (strict)\n\n";
40     print "Specify -ia64 for build targeted at Itanium (req's psdk tools)\n\n";
41     print "Specify -p for extreme pool debugging\n\n";
42     print "Specify -mt to add .manifest embedding\n\n";
43     die "Missing argument";
44 }
45
46 sub addmt { 
47     my $outpath, $outtype;
48
49     if (m|\.dsp$|) {
50         $oname = $_;
51         $tname = '.#' . $_;
52         $verchg = 0;
53         $srcfl = new IO::File $oname, "r" || die;
54         $dstfl = new IO::File $tname, "w" || die;
55         while ($src = <$srcfl>) {
56             if ($src =~ m|^# TARGTYPE .+ Application|) {
57                 $outtype = ".exe"
58             }
59             if ($src =~ m|^# TARGTYPE .+ Dynamic-Link|) {
60                 $outtype = ".dll"
61             }
62             if ($src =~ m|^# PROP Output_Dir "(.+)"|) {
63                 $outdir = $1;
64                 $outpath = $oname;
65                 $outpath =~ s|\.dsp||;
66                 $outpath =  ".\\" . $outdir . "\\" . $outpath . $outtype;
67             }
68             if ($src =~ m|^# ADD (BASE )?LINK32 .+ /out:"([^"]+)"|) {
69                 $outpath = $2;
70                 $outpath =~ s|/|\\|;
71                 $outpath = ".\\" . $outpath if (!($outpath =~ m|^\.|));
72                 $src =~ s|/out:"([^"]+)"|/out:"$outpath"|;
73             }
74             if (defined($outpath) && ($src =~ m|^# Begin Special Build Tool|)) {
75                 undef $outpath;
76             }
77             if (defined($outpath) && defined($outtype) && ($src =~ m|^\s*$|)) {
78                 print $dstfl '# Begin Special Build Tool' . "\n";
79                 print $dstfl 'TargetPath=' . $outpath . "\n";
80                 print $dstfl 'SOURCE="$(InputPath)"' . "\n";
81                 print $dstfl 'PostBuild_Desc=Embed .manifest' . "\n";
82                 print $dstfl 'PostBuild_Cmds=if exist $(TargetPath).manifest mt.exe -manifest $(TargetPath).manifest -outputresource:$(TargetPath);2' . "\n";
83                 print $dstfl '# End Special Build Tool' . "\n";
84                 $verchg = -1;
85                 undef $outpath;
86             }
87             print $dstfl $src;
88         }
89         undef $outtype if (defined($outtype));
90         undef $outpath if (defined($outpath));
91         undef $srcfl;
92         undef $dstfl;
93         if ($verchg) {
94             unlink $oname || die;
95             rename $tname, $oname || die;
96             print "Added manifest to " . $oname . " in " . $File::Find::dir . "\n"; 
97         }
98         else {
99             unlink $tname;
100         }
101     }
102 }
103 sub tovc5 { 
104
105     if (m|\.dsp$|) {
106         $oname = $_;
107         $tname = '.#' . $_;
108         $verchg = 0;
109         $srcfl = new IO::File $oname, "r" || die;
110         $dstfl = new IO::File $tname, "w" || die;
111         while ($src = <$srcfl>) {
112             if ($src =~ s|Format Version 6\.00|Format Version 5\.00|) {
113                 $verchg = -1;
114             }
115             if ($src =~ s|^(# ADD CPP .*)/ZI (.*)|$1/Zi $2|) {
116                 $verchg = -1;
117             }
118             if ($src =~ s|^(# ADD BASE CPP .*)/ZI (.*)|$1/Zi $2|) {
119                 $verchg = -1;
120             }
121             if ($src =~ s|^(# ADD CPP .*)/EHsc (.*)|$1/GX $2|) {
122                 $verchg = -1;
123             }
124             if ($src =~ s|^(# ADD BASE CPP .*)/EHsc (.*)|$1/GX $2|) {
125                 $verchg = -1;
126             }
127             while ($src =~ s|^(# ADD RSC .*)/d "([^ ="]+)=([^"]+)"|$1/d $2="$3"|) {
128                 $verchg = -1;
129             }
130             if ($src !~ m|^# PROP AllowPerConfigDependencies|) {
131                 print $dstfl $src; }
132             else {
133                 $verchg = -1;
134             }
135         }
136         undef $srcfl;
137         undef $dstfl;
138         if ($verchg) {
139             unlink $oname || die;
140             rename $tname, $oname || die;
141             print "Converted VC6 project " . $oname . " to VC5 in " . $File::Find::dir . "\n"; 
142         }
143         else {
144             unlink $tname;
145         }
146     }
147 }
148
149 sub tovc6 { 
150
151     if (m|\.dsp$|) {
152         $oname = $_;
153         $tname = '.#' . $_;
154         $verchg = 0;
155         $srcfl = new IO::File $_, "r" || die;
156         $dstfl = new IO::File $tname, "w" || die;
157         while ($src = <$srcfl>) {
158             if ($src =~ s|Format Version 5\.00|Format Version 6\.00|) {
159                 $verchg = -1;
160             }
161             if ($src =~ s|^(!MESSAGE .*)\\\n|$1|) {
162                 $cont = <$srcfl>;
163                 $src = $src . $cont;
164                 $verchg = -1;
165             }
166             if ($src =~ s|^(# ADD CPP .*)/GX (.*)|$1/EHsc $2|) {
167                 $verchg = -1;
168             }
169             if ($src =~ s|^(# ADD BASE CPP .*)/GX (.*)|$1/EHsc $2|) {
170                 $verchg = -1;
171             }
172             while ($src =~ s|^(# ADD RSC .*)/d "([^ ="]+)=([^"]+)"|$1/d $2="$3"|) {
173                 $verchg = -1;
174             }
175             print $dstfl $src; 
176             if ($verchg && $src =~ m|^# Begin Project|) {
177                 print $dstfl "# PROP AllowPerConfigDependencies 0\n"; 
178             }
179         }
180         undef $srcfl;
181         undef $dstfl;
182         if ($verchg) {
183             unlink $oname || die;
184             rename $tname, $oname || die;
185             print "Converted VC5 project " . $oname . " to VC6 in " . $File::Find::dir . "\n"; 
186         }
187         else {
188             unlink $tname;
189         }
190     }
191 }
192
193 sub tovc2005 { 
194
195     if (m|\.dsp$| || m|\.mak$|) {
196         $oname = $_;
197         $tname = '.#' . $_;
198         $verchg = 0;
199         $srcfl = new IO::File $_, "r" || die;
200         $dstfl = new IO::File $tname, "w" || die;
201         while ($src = <$srcfl>) {
202             if ($src =~ s|(\bCPP.*) /GX(.*)|$1 /EHsc$2|) {
203                 $verchg = -1;
204             }
205             if ($src =~ s|(\bLINK32.*) /machine:I386(.*)|$1$2|) {
206                 $verchg = -1;
207             }
208             while ($src =~ s|^(# ADD RSC .*)/d ([^ ="]+)="([^"]+)"|$1/d "$2=$3"|) {
209                 $verchg = -1;
210             }
211             print $dstfl $src; 
212         }
213         undef $srcfl;
214         undef $dstfl;
215         if ($verchg) {
216             unlink $oname || die;
217             rename $tname, $oname || die;
218             print "Converted project " . $oname . " to 2005 in " . $File::Find::dir . "\n"; 
219         }
220         else {
221             unlink $tname;
222         }
223     }
224 }
225
226 sub tow3 { 
227
228     if (m|\.dsp$| || m|\.mak$|) {
229         $oname = $_;
230         $tname = '.#' . $_;
231         $verchg = 0;
232         $srcfl = new IO::File $_, "r" || die;
233         $dstfl = new IO::File $tname, "w" || die;
234         while ($src = <$srcfl>) {
235             while ($src =~ m|\\\n$|) {
236                 $src = $src . <$srcfl>
237             }
238             if ($src =~ s|(\bCPP.*) /W4(.*)|$1 /W3$2|) {
239                 $verchg = -1;
240             }
241             print $dstfl $src; 
242         }
243         undef $srcfl;
244         undef $dstfl;
245         if ($verchg) {
246             unlink $oname || die;
247             rename $tname, $oname || die;
248             print "Converted project " . $oname . " to warn:3 in " . $File::Find::dir . "\n"; 
249         }
250         else {
251             unlink $tname;
252         }
253     }
254 }
255
256 sub tow4 { 
257
258     if (m|\.dsp$| || m|\.mak$|) {
259         $oname = $_;
260         $tname = '.#' . $_;
261         $verchg = 0;
262         $srcfl = new IO::File $_, "r" || die;
263         $dstfl = new IO::File $tname, "w" || die;
264         while ($src = <$srcfl>) {
265             while ($src =~ m|\\\n$|) {
266                 $src = $src . <$srcfl>
267             }
268             if ($src =~ s|(\bCPP.*) /W3(.*)|$1 /W4$2|) {
269                 $verchg = -1;
270             }
271             print $dstfl $src; 
272         }
273         undef $srcfl;
274         undef $dstfl;
275         if ($verchg) {
276             unlink $oname || die;
277             rename $tname, $oname || die;
278             print "Converted project " . $oname . " to warn:4 " . $File::Find::dir . "\n"; 
279         }
280         else {
281             unlink $tname;
282         }
283     }
284 }
285
286 sub tovc64 { 
287
288     if (m|\.dsp$| || m|\.mak$|) {
289         $oname = $_;
290         $tname = '.#' . $_;
291         $verchg = 0;
292         $srcfl = new IO::File $_, "r" || die;
293         $dstfl = new IO::File $tname, "w" || die;
294         while ($src = <$srcfl>) {
295             while ($src =~ m|\\\n$|) {
296                 $src = $src . <$srcfl>
297             }
298             if ($src =~ s|Win32 \(x86\) (Release)|Win32 (IA64) $1|s) {
299                 $verchg = -1;
300             }
301             if ($src =~ s|Win32 \(x86\) (Debug)|Win32 (IA64) $1|s) {
302                 $verchg = -1;
303             }
304             if ($src =~ s| - Win32 (Release)| - Win32 (IA64) $1|s) {
305                 $verchg = -1;
306             }
307             if ($src =~ s| - Win32 (Debug)| - Win32 (IA64) $1|s) {
308                 $verchg = -1;
309             }
310             # Cross compilation exceptions
311             if (!(m|gen[^/]*$| || m|dftables[^/]*$|)) {
312                 if ($src =~ s|(\bCPP.* /W3)(.*) /FD(.*)|$1 /As64 /Wp64$2$3|s) {
313                     $verchg = -1;
314                 }
315                 if ($src =~ s|(\bLINK.*/machine):I386(.*)|$1:IA64$2|s) {
316                     $verchg = -1;
317                 }
318             }
319             else {
320                 if ($src =~ s|(\bCPP.* /W3)(.*) /FD(.*)|$1 /As32 /Wp64$2$3|s) {
321                     $verchg = -1;
322                 }
323             }
324             print $dstfl $src; 
325         }
326         undef $srcfl;
327         undef $dstfl;
328         if ($verchg) {
329             unlink $oname || die;
330             rename $tname, $oname || die;
331             print "Converted build file " . $oname . " to Win64 in " . $File::Find::dir . "\n"; 
332         }
333         else {
334             unlink $tname;
335         }
336     }
337 }
338
339 sub todebugpools { 
340
341     if (m|\.dsp$|) {
342         $oname = $_;
343         $tname = '.#' . $_;
344         $verchg = 0;
345         $srcfl = new IO::File $oname, "r" || die;
346         $dstfl = new IO::File $tname, "w" || die;
347         while ($src = <$srcfl>) {
348             if ($src =~ s|^(# ADD CPP .* /D "_DEBUG" )|$1/D "APR_POOL_DEBUG" |) {
349                 $verchg = -1;
350                 if ($oname =~ /apr\.dsp$/) {
351                     $src =~ s|^(# ADD CPP .* /D "_DEBUG" )|$1/D "POOL_DEBUG" |;
352                 }
353             }
354             print $dstfl $src; 
355         }
356         undef $srcfl;
357         undef $dstfl;
358         if ($verchg) {
359             unlink $oname || die;
360             rename $tname, $oname || die;
361             print "Converted project " . $oname . " to debug pools in " . $File::Find::dir . "\n"; 
362         }
363         else {
364             unlink $tname;
365         }
366     }
367 }
368
369 sub tobrowsesources { 
370
371     if (m|\.dsp$|) {
372         $oname = $_;
373         $tname = '.#' . $_;
374         $verchg = 0;
375         $srcfl = new IO::File $oname, "r" || die;
376         $dstfl = new IO::File $tname, "w" || die;
377         while ($src = <$srcfl>) {
378             if ($src =~ s|^(# ADD CPP .*)( /Fd)|$1 /Fr "/httpd-2.0/srclib/apr"$2|) {
379                 $verchg = -1;
380             }
381             print $dstfl $src; 
382         }
383         undef $srcfl;
384         undef $dstfl;
385         if ($verchg) {
386             unlink $oname || die;
387             rename $tname, $oname || die;
388             print "Converted project " . $oname . " to browse sources in " . $File::Find::dir . "\n"; 
389         }
390         else {
391             unlink $tname;
392         }
393     }
394 }
395
396 sub frommakefiles {
397
398     if (m|\.mak\.in$|) {
399         $oname = $_;
400         $dname = $_;
401         $_ =~ s/\.mak\.in/.dsp/;
402         $verchg = 0;
403         $srcfl = new IO::File $oname, "r" || die;
404         $dstfl = new IO::File $tname, "w" || die;
405         while ($src = <$srcfl>) {
406             if ($src =~ s|^(# ADD CPP .*)( /Fd)|$1 /Fr "/httpd-2.0/srclib/apr"$2|) {
407                 $verchg = -1;
408             }
409             print $dstfl $src; 
410         }
411         undef $srcfl;
412         undef $dstfl;
413         if ($verchg) {
414             unlink $oname || die;
415             rename $tname, $oname || die;
416             print "Converted project " . $oname . " to browse sources in " . $File::Find::dir . "\n"; 
417         }
418         else {
419             unlink $tname;
420         }
421     }
422 }
423
424
425 sub onemake {
426
427     if ($dsptype == 0) {
428         $cdefs = qq{/D "WIN32" /D "_CONSOLE"};
429         $lmodel = qq{/subsystem:console};
430         $targname = "Win32 (x86) Console Application";
431         $targid = "0x0103";
432         $debpath = "Debug"; $relpath = "Release";
433     } elsif ($dsptype == 1) {
434         $cdefs = qq{/D "WIN32" /D "_WINDOWS"};
435         $lmodel = qq{/subsystem:windows /dll};
436         $targname = "Win32 (x86) Dynamic-Link Library";
437         $targid = "0x0102";
438         $debpath = "Debug"; $relpath = "Release";
439     } elsif($dsptype == 2) {
440         $cdefs = qq{/D "WIN32" /D "_CONSOLE"};
441         $lmodel = qq{/subsystem:console};
442         $targname = "Win32 (x86) Static Library";
443         $targid = "0x0104";
444         $debpath = "LibD"; $relpath = "LibR";
445     }
446         $file = dspheader();
447
448
449         $second = "";
450
451         $model = "Release";
452         $usedebuglib = "0";
453         $debugdef = "NDEBUG";
454         $cflags = "/MD /W3 /O2";
455         $cincl = qq{/I "./include" /I "./os/win32" /I "./srclib/apr/include" /I "./srclib/apr-util/include"};
456         $lflags = qq{/map};
457         $file .= dsponemodel();
458
459         $second = "ELSE";
460         $model = "Debug";
461         $usedebuglib = "1";
462         $debugdef = "_DEBUG";
463         $cflags = "/MDd /W3 /GX /Zi /Od";
464         $cincl = qq{/I "./include" /I "./os/win32" /I "./srclib/apr/include" /I "./srclib/apr-util/include"};
465         $lflags = qq{/incremental:no /debug};
466         $file .= dsponemodel();
467
468         $file .= qq{
469 !ENDIF 
470
471 # Begin Target
472
473 # Name "$name - Win32 Release"
474 # Name "$name - Win32 Debug"
475 };
476
477         $toroot = ".";
478
479 #HERE IS OUR FOREACH!
480         $file .= qq{# Begin Source File
481
482 SOURCE=./server/main.c
483 # End Source File
484 };
485
486     if ($dsptype == 0) {
487         #HERE IS OUR ICON!
488         $icon="$toroot/build/win32/apache.ico";
489         $file .= qq{# Begin Source File
490
491 SOURCE=$icon
492 # End Source File
493 };
494         $icon = "icon=" . $icon . " ";
495     }
496     if ($dsptype == 0 || $dsptype == 1) {
497         $file .= qq{
498 # Begin Source File
499
500 SOURCE=./$name.rc
501 # End Source File
502 # Begin Source File
503
504 SOURCE=$toroot/include/ap_release.h
505 # PROP Ignore_Default_Tool 1
506 # Begin Custom Build - Creating Version Resource
507 InputPath=$toroot/include/ap_release.h $toroot/build/win32/win32ver.awk
508
509 "./$name.rc" : \$(SOURCE) "\$(INTDIR)" "\$(OUTDIR)"
510         awk -f $toroot/build/win32/win32ver.awk $name "Apache HTTP Server" $toroot/include/ap_release.h $icon> ./Apache.rc
511
512 # End Custom Build
513 # End Source File
514 };
515     }
516         $file .= qq{
517 # End Target
518 # End Project
519 };
520         print $file;
521 }
522
523 sub dspheader {
524     if ($dsptype == 1) {
525         $midl = "MTL=midl.exe\n";
526     } else {
527         $midl = ""
528     }
529 qq{# Microsoft Developer Studio Project File - Name="$name" - Package Owner=<4>
530 # Microsoft Developer Studio Generated Build File, Format Version 6.00
531 # ** DO NOT EDIT **
532
533 # TARGTYPE "$targname" $targid
534
535 CFG=$name - Win32 Release
536 !MESSAGE This is not a valid makefile. To build this project using NMAKE,
537 !MESSAGE use the Export Makefile command and run
538 !MESSAGE 
539 !MESSAGE NMAKE /f "$name.mak".
540 !MESSAGE 
541 !MESSAGE You can specify a configuration when running NMAKE
542 !MESSAGE by defining the macro CFG on the command line. For example:
543 !MESSAGE 
544 !MESSAGE NMAKE /f "$name.mak" CFG="$name - Win32 Release"
545 !MESSAGE 
546 !MESSAGE Possible choices for configuration are:
547 !MESSAGE 
548 !MESSAGE "$name - Win32 Release" (based on "$targname")
549 !MESSAGE "$name - Win32 Debug" (based on "$targname")
550 !MESSAGE 
551
552 # Begin Project
553 # PROP AllowPerConfigDependencies 0
554 # PROP Scc_ProjName ""
555 # PROP Scc_LocalPath ""
556 CPP=cl.exe
557 ${midl}RSC=rc.exe
558 };
559 }
560 sub dsponemodel {
561     if ($model eq "Release") {
562         $targpath = $relpath;
563     } else {
564         $targpath = $debpath;
565     }
566     if ($dsptype == 1) {
567         $midl = 
568 qq{# ADD BASE MTL /nologo /D "$debugdef" /win32
569 # ADD MTL /nologo /D "$debugdef" /mktyplib203 /win32
570 };  }
571     if ($dsptype == 2) {
572         $linkop = qq{LIB32=link.exe -lib
573 # ADD BASE LIB32 /nologo
574 # ADD LIB32 /nologo
575 };
576     } else {
577         $linkop = qq{LINK32=link.exe
578 # ADD BASE LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo $lmodel $lflags /machine:I386
579 # ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib mswsock.lib /nologo $lmodel $lflags /machine:I386
580 };
581     }        
582
583 qq{
584 !${second}IF  "\$(CFG)" == "$name - Win32 $model"
585
586 # PROP BASE Use_MFC 0
587 # PROP BASE Use_Debug_Libraries $usedebuglib
588 # PROP BASE Output_Dir "$targpath"
589 # PROP BASE Intermediate_Dir "$targpath"
590 # PROP BASE Target_Dir ""
591 # PROP Use_MFC 0
592 # PROP Use_Debug_Libraries $usedebuglib
593 # PROP Output_Dir "$targpath"
594 # PROP Intermediate_Dir "$targpath"
595 # PROP Ignore_Export_Lib 0
596 # PROP Target_Dir ""
597 # ADD BASE CPP /nologo $cflags $cincl /D "$debugdef" $cdefs /FD /c
598 # ADD CPP /nologo $cflags $cincl /D "$debugdef" $cdefs /Fd"$targpath/$name" /FD /c
599 ${midl}# ADD BASE RSC /l 0x409 /d "$debugdef"
600 # ADD RSC /l 0x409 /d "$debugdef"
601 BSC32=bscmake.exe
602 # ADD BASE BSC32 /nologo
603 # ADD BSC32 /nologo
604 $linkop};
605 }