--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/group/setupprj.bat Fri Jun 25 17:29:25 2010 +0800
@@ -0,0 +1,542 @@
+@REM Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+@REM All rights reserved.
+@REM This component and the accompanying materials are made available
+@REM under the terms of "Eclipse Public License v1.0"
+@REM which accompanies this distribution, and is available
+@REM at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@REM
+@REM Initial Contributors:
+@REM Nokia Corporation - initial contribution.
+@REM
+@REM Contributors:
+@REM
+@REM Description:
+@REM builds bld.bat files for subprojects within this component
+
+@if exist %0.bat perl -w -x %0.bat %1 %2 %3 %4 %5
+@if exist %0 perl -w -x %0 %1 %2 %3 %4 %5
+@GOTO End
+
+#!perl
+
+use strict;
+use Cwd;
+
+my $EPOCRoot;
+
+BEGIN {
+ $EPOCRoot = $ENV{EPOCROOT};
+ $EPOCRoot .= "\\" unless($EPOCRoot =~ /\\$/);
+ die "ERROR: Must set the EPOCROOT environment variable\n" if (!defined($EPOCRoot));
+ $EPOCRoot =~ s-/-\\-go; # for those working with UNIX shells
+ die "ERROR: EPOCROOT must not be a UNC path\n" if ($EPOCRoot =~ /^\\\\/);
+ die "ERROR: EPOCROOT must end with a backslash\n" if ($EPOCRoot !~ /\\$/);
+ die "ERROR: EPOCROOT must specify an existing directory\n" if (!-d $EPOCRoot);
+}
+
+
+my $EPOCToolsPath="${EPOCRoot}epoc32\\tools";
+
+my $EPOCToolsConfigFilePath="${EPOCRoot}epoc32\\tools\\compilation_config";
+
+my $DocsPath="${EPOCRoot}epoc32\\EngDoc\\E32toolp";
+
+my $TemplateFilePath="${EPOCRoot}epoc32\\tools\\makefile_templates";
+
+my $ShellFilePath="${EPOCRoot}epoc32\\tools\\shell";
+
+my $BinFilePath="${EPOCRoot}epoc32\\tools";
+
+if (scalar @ARGV > 1) {
+ die "Too many arguments for setupprj.bat\n";
+}
+
+# only the secure platform is now supported, but keep the argument
+# checking as insurance against future developments.
+#
+my $secure = 1;
+if (scalar @ARGV == 1) {
+ my $option = $ARGV[0];
+ if ($option !~ /^secure$/i) {
+ die "Unknown option $ARGV[0] - did you mean \"secure\"?\n";
+ }
+}
+
+my $GroupDir=$0; # $0 is this script
+$GroupDir=~s-^\w:(.*)$-$1-o; # remove drive letter
+$GroupDir=~s-\/-\\-go;
+unless ($GroupDir=~m-^\\-o)
+ {
+ # $GroupDir is relative
+ my $Cwd=cwd();
+ $Cwd=~s-^\w:(.*)$-$1-o; # remove drive letter
+ $Cwd=~s-\/-\\-go;
+ $Cwd=~s-^\\$--o; # make sure we don't end in a backslash
+ $GroupDir="$Cwd\\$GroupDir"; # append relative group dir to absolute Cwd
+ }
+$GroupDir=~s-^(.*\\)[^\\]+$-$1-o; # remove filename, leaving just path
+# strip the resulting path of excess occurrences of . and ..
+while ($GroupDir=~s-\\\.\\-\\-go) { }
+while ($GroupDir=~s-\\(?!\.{2}\\)[^\\]*\\\.{2}(?=\\)--go) { }
+
+$GroupDir=~s-\\$--o; # remove trailing backslash
+chdir "$GroupDir" or die "Can't cd to $GroupDir: $!\n";
+
+my %Files=();
+
+# read the component
+opendir E32TOOLP, ".." or die "ERROR: Can't open dir ..\n";
+my $SubDir;
+foreach $SubDir (grep /^[^\.]/o, map lc $_, readdir E32TOOLP) {
+ if ($SubDir!~/^(group|doc|test|binutils|maksym)$/o) {
+ opendir SUBDIR, "..\\$SubDir" or die "ERROR: Can't open dir \"..\\$SubDir\"\n";
+ my @FileList = map lc $_, readdir SUBDIR;
+ foreach my $file (grep /^[^_\.].+\.(pm|pl|bat|cmd|config|bsf|xml|cwlink|txt)$/o, @FileList) {
+ $Files{$file} = "$SubDir\\$file";
+ }
+ if ($secure) {
+ # Look for additional files whose names start with _secure_
+ my @securefiles = grep /^_secure_.+\.(pm|pl|bat|cmd|config|bsf|xml|cwlink|txt)$/o, @FileList;
+ foreach my $file (@securefiles) {
+ my $dstfile = $file;
+ $dstfile =~ s/^_secure_//;
+ if (defined($Files{$dstfile})) {
+ print "$dstfile: $SubDir\\$file overrides $Files{$dstfile}\n";
+ }
+ $Files{$dstfile} = "$SubDir\\$file";
+ }
+ }
+ }
+}
+
+# read the compiler configuration files
+my @ConfigFiles;
+
+opendir CONFIGDIR, "..\\platform" or die "ERROR: Can't open dir \"..\\platform\"\n";
+@ConfigFiles = grep /\.(mk|make)/i, readdir CONFIGDIR;
+
+closedir CONFIGDIR;
+
+opendir SUBDIR, "..\\doc" or die "ERROR: Can't open dir \"..\\doc\"\n";
+my @Docs = map lc $_, readdir SUBDIR;
+@Docs = grep /^[^\.].+\.(rtf|doc|changes|txt|html|htm)$/o, @Docs;
+
+closedir SUBDIR;
+
+open TEMPLATEFILESUBDIR, "\"dir \/s \/b \/a-d ..\\..\\buildsystem\\extension\" |";
+my @TemplateFiles=();
+my %TemplateDirs;
+while (<TEMPLATEFILESUBDIR>)
+ {
+ next if ($_ !~ /\.(mk|meta)$/i);
+ $_ =~ s/^.*\\buildsystem\\extension\\//i;
+ chomp $_;
+ push @TemplateFiles, $_;
+ $_ =~ /^(.*\\)/o;
+ my $path = $1;
+ $path =~ s/\\$//;
+ $TemplateDirs{$path}=1;
+ }
+close TEMPLATEFILESUBDIR;
+
+opendir SHELLFILESUBDIR, "..\\..\\buildsystem\\shell" or die "ERROR: Can't open dir \"..\\..\\buildsystem\\shell\"\n";
+my @ShellFiles = map lc $_, readdir SHELLFILESUBDIR;
+@ShellFiles = grep /^[^\.].+\.(mk)$/o, @ShellFiles;
+closedir SHELLFILESUBDIR;
+
+open BINFILESUBDIR, "\"dir \/s \/b \/a-d ..\\..\\buildsystem\\bin\" |";
+my @BinFiles=();
+my %BinDirs;
+while (<BINFILESUBDIR>)
+ {
+ next if ($_ !~ /\.(exe|jar)$/i);
+ $_ =~ s/^.*\\buildsystem\\bin\\//i;
+ chomp $_;
+ push @BinFiles, $_;
+ $_ =~ /^(.*\\)/o;
+ my $path = $1;
+ $path =~ s/\\$//;
+ $BinDirs{$path}=1;
+ }
+close BINFILESUBDIR;
+
+my $PrintGroupDir=$GroupDir;
+$PrintGroupDir=~s-\\-\\\\-go;
+
+# Create BLD.BAT
+my $OutTxt='';
+&Output(
+ "\@echo off\n",
+ "\@goto invoke\n",
+ "\n",
+ "#!perl\n",
+ "unless (\@ARGV==1 && \$ARGV[0]=~/^(deb|rel|clean|releasables)\$/io) {\n",
+ " die\n",
+ " \"E32TOOLP's bld.bat - usage\\n\",\n",
+ " \"BLD [param]\\n\",\n",
+ " \"where\\n\",\n",
+ " \"param = DEB or REL or CLEAN\\n\"\n",
+ " ;\n",
+ "}\n",
+ "my \$Param=lc \$ARGV[0];\n",
+ "chdir \"$PrintGroupDir\";\n",
+ "if (\$Param =~ /releasables/i)\n",
+ "{\n",
+ "open PIPE, \"..\\\\..\\\\make-abld\\\\make -s -f e32toolp.make \$Param |\" or die \"Can't invoke make: \$!\\n\";\n",
+ "while (<PIPE>) { print \$_; }\n",
+ "close PIPE;\n",
+ "\n",
+ "exit;\n",
+ "}\n",
+ "print \"..\\\\..\\\\make-abld\\\\make -s -f e32toolp.make \$Param\\n\";\n",
+ "open PIPE, \"..\\\\..\\\\make-abld\\\\make -s -f e32toolp.make \$Param |\" or die \"Can't invoke make: \$!\\n\";\n",
+ "while (<PIPE>) { }\n",
+ "close PIPE;\n",
+ "\n",
+ "__END__\n",
+ "\n",
+ ":invoke\n",
+ "perl -x $GroupDir\\bld.bat %1 %2\n"
+);
+
+my $BLDFILE='bld.bat';
+print "Creating File \"$BLDFILE\"\n";
+open BLDFILE,">$BLDFILE" or die "\nERROR: Can't open or create Batch file \"$BLDFILE\"\n";
+print BLDFILE "$OutTxt" or die "\nERROR: Can't write output to Batch file \"$BLDFILE\"\n";
+close BLDFILE or die "\nERROR: Can't close Batch file \"$BLDFILE\"\n";
+
+
+# Create the make file
+$OutTxt='';
+&Output(
+ "\n",
+ "ifeq (\$(OS),Windows_NT)\n",
+ "ERASE = \@erase 2>>nul\n",
+ "else\n",
+ "ERASE = \@erase\n",
+ "endif\n",
+ "\n",
+ "\n",
+ "$EPOCToolsPath :\n",
+ "\t\@perl -w ..\\genutil\\emkdir.pl $EPOCToolsPath\n",
+ "\n",
+ "$TemplateFilePath :\n",
+ "\t\@perl -w ..\\genutil\\emkdir.pl $TemplateFilePath\n",
+ "\n"
+);
+
+foreach (sort keys %TemplateDirs) {
+ &Output(
+ "$TemplateFilePath\\$_ :\n",
+ "\t\@perl -w ..\\genutil\\emkdir.pl $TemplateFilePath\\$_\n",
+ "\n"
+ );
+}
+
+foreach (sort keys %BinDirs) {
+ &Output(
+ "$BinFilePath\\$_ :\n",
+ "\t\@perl -w ..\\genutil\\emkdir.pl $BinFilePath\\$_\n",
+ "\n"
+ );
+}
+
+&Output(
+ "$ShellFilePath :\n",
+ "\t\@perl -w ..\\genutil\\emkdir.pl $ShellFilePath\n",
+ "\n",
+ "$EPOCToolsConfigFilePath :\n",
+ "\t\@perl -w ..\\genutil\\emkdir.pl $EPOCToolsConfigFilePath\n",
+ "\n",
+ "$DocsPath :\n",
+ "\t\@perl -w ..\\genutil\\emkdir.pl $DocsPath\n",
+ "\n",
+ "\n",
+ "deb : $EPOCToolsPath $EPOCToolsConfigFilePath $DocsPath $TemplateFilePath $ShellFilePath "
+);
+
+foreach (sort keys %TemplateDirs) {
+ &Output(
+ "$TemplateFilePath\\$_ "
+ );
+}
+
+foreach (sort keys %BinDirs) {
+ &Output(
+ "$BinFilePath\\$_ "
+ );
+}
+
+&Output("\n");
+
+my $File;
+foreach $File (keys %Files) {
+ &Output(
+ "\tcopy \"..\\$Files{$File}\" \"$EPOCToolsPath\\$File\" >nul\n"
+ );
+}
+
+my $ConfigFile;
+foreach $ConfigFile (@ConfigFiles) {
+ &Output(
+ "\tcopy \"..\\platform\\$ConfigFile\" \"$EPOCToolsConfigFilePath\\$ConfigFile\" >nul\n"
+ );
+}
+
+foreach $File (@Docs) {
+ &Output(
+ "\tcopy \"..\\doc\\$File\" \"$DocsPath\\$File\" >nul\n"
+ );
+}
+
+my $tfile;
+foreach $tfile (@TemplateFiles) {
+ &Output(
+ "\tcopy \"..\\..\\buildsystem\\extension\\$tfile\" \"$TemplateFilePath\\$tfile\" >nul\n"
+ );
+}
+
+my $bfile;
+foreach $bfile (@BinFiles) {
+ &Output(
+ "\tcopy \"..\\..\\buildsystem\\bin\\$bfile\" \"$BinFilePath\\$bfile\" >nul\n"
+ );
+}
+
+my $sfile;
+foreach $sfile (@ShellFiles) {
+ &Output(
+ "\tcopy \"..\\..\\buildsystem\\shell\\$sfile\" \"$ShellFilePath\\$sfile\" >nul\n"
+ );
+}
+
+&Output(
+ "\n",
+ "\n",
+ "rel : $EPOCToolsPath $EPOCToolsConfigFilePath $DocsPath $TemplateFilePath $ShellFilePath "
+);
+
+foreach (sort keys %TemplateDirs) {
+ &Output(
+ "$TemplateFilePath\\$_ "
+ );
+}
+
+foreach (sort keys %BinDirs) {
+ &Output(
+ "$BinFilePath\\$_ "
+ );
+}
+
+&Output("\n");
+
+
+foreach $File (keys %Files) {
+ &Output(
+ "\t.\\perlprep.bat \"..\\$Files{$File}\" \"$EPOCToolsPath\\$File\"\n"
+ );
+}
+
+foreach $ConfigFile (@ConfigFiles) {
+ &Output(
+ "\tcopy \"..\\platform\\$ConfigFile\" \"$EPOCToolsConfigFilePath\\$ConfigFile\" >nul\n"
+ );
+}
+
+foreach $File (@Docs) {
+ &Output(
+ "\tcopy \"..\\doc\\$File\" \"$DocsPath\\$File\" >nul\n"
+ );
+}
+
+foreach $tfile (@TemplateFiles) {
+ &Output(
+ "\tcopy \"..\\..\\buildsystem\\extension\\$tfile\" \"$TemplateFilePath\\$tfile\" >nul\n"
+ );
+}
+foreach $bfile (@BinFiles) {
+ &Output(
+ "\tcopy \"..\\..\\buildsystem\\bin\\$bfile\" \"$BinFilePath\\$bfile\" >nul\n"
+ );
+}
+foreach $sfile (@ShellFiles) {
+ &Output(
+ "\tcopy \"..\\..\\buildsystem\\shell\\$sfile\" \"$ShellFilePath\\$sfile\" >nul\n"
+ );
+}
+&Output(
+ "\n",
+ "rel deb : $EPOCToolsPath\\make.exe\n",
+ "$EPOCToolsPath\\make.exe: ..\\..\\make-abld\\make.exe\n",
+ "\tcopy \$\? \$\@\n"
+);
+
+&Output(
+ "\n",
+ "rel deb : $EPOCToolsPath\\scpp.exe\n",
+ "$EPOCToolsPath\\scpp.exe: ..\\..\\scpp-abld\\scpp.exe\n",
+ "\tcopy \$\? \$\@\n"
+);
+
+
+&Output(
+ "\n",
+ "clean :\n"
+);
+foreach $File (keys %Files) {
+ &Output(
+ "\t-\$(ERASE) \"$EPOCToolsPath\\$File\"\n"
+ );
+}
+foreach $ConfigFile (@ConfigFiles) {
+ &Output(
+ "\t-\$(ERASE) \"$EPOCToolsConfigFilePath\\$ConfigFile\"\n"
+ );
+}
+foreach $File (@Docs) {
+ &Output(
+ "\t-\$(ERASE) \"$DocsPath\\$File\"\n"
+ );
+}
+foreach $tfile (@TemplateFiles) {
+ &Output(
+ "\t-\$(ERASE) \"$TemplateFilePath\\$tfile\"\n"
+ );
+}
+foreach $bfile (@BinFiles) {
+ &Output(
+ "\t-\$(ERASE) \"$BinFilePath\\$bfile\"\n"
+ );
+}
+foreach $sfile (@ShellFiles) {
+ &Output(
+ "\t-\$(ERASE) \"$ShellFilePath\\$sfile\"\n"
+ );
+}
+
+&Output(
+ "\n",
+ "releasables :\n"
+);
+foreach $File (keys %Files) {
+ &Output(
+ "\t\@echo $EPOCToolsPath\\$File\n"
+ );
+}
+foreach $ConfigFile (@ConfigFiles) {
+ &Output(
+ "\t\@echo $EPOCToolsConfigFilePath\\$ConfigFile\n"
+ );
+}
+foreach $File (@Docs) {
+ &Output(
+ "\t\@echo $DocsPath\\$File\n"
+ );
+}
+foreach $tfile (@TemplateFiles) {
+ &Output(
+ "\t\@echo $TemplateFilePath\\$tfile\n"
+ );
+}
+foreach $bfile (@BinFiles) {
+ &Output(
+ "\t\@echo $BinFilePath\\$bfile\n"
+ );
+}
+foreach $sfile (@ShellFiles) {
+ &Output(
+ "\t\@echo $ShellFilePath\\$sfile\n"
+ );
+}
+
+my $MAKEFILE="e32toolp.make";
+print "Creating File \"$MAKEFILE\"\n";
+open MAKEFILE,">$MAKEFILE" or die "\nERROR: Can't open or create Batch file \"$MAKEFILE\"\n";
+print MAKEFILE "$OutTxt" or die "\nERROR: Can't write output to Batch file \"$MAKEFILE\"\n";
+close MAKEFILE or die "\nERROR: Can't close Batch file \"$MAKEFILE\"\n";
+
+
+
+# this code autocreates the .rel file
+
+my @ToolsDst = ("make.exe", "scpp.exe");
+my @DocsDst = @Docs;
+my @ConfigFilesDst = @ConfigFiles;
+my @TemplateFilesDst = @TemplateFiles;
+my @BinFilesDst = @BinFiles;
+my @ShellFilesDst = @ShellFiles;
+
+push @ToolsDst, keys %Files;
+
+# TOOLS.REL file
+
+my $RELFILE="tools.rel";
+print "Creating File \"$RELFILE\"\n";
+open RELFILE,">$RELFILE" or die "\nERROR: Can't open or create Rel file \"$RELFILE\"\n";
+print RELFILE "${EPOCRoot}epoc32\\tools\\";
+print RELFILE join("\n${EPOCRoot}epoc32\\tools\\", sort @ToolsDst);
+print RELFILE join("\n${EPOCRoot}epoc32\\tools\\compilation_config\\","", sort @ConfigFilesDst);
+print RELFILE join("\n${EPOCRoot}epoc32\\EngDoc\\E32toolp\\","", sort @DocsDst);
+close RELFILE or die "\nERROR: Can't close Rel file \"$RELFILE\"\n";
+
+# Check MRP file - the modern equivalent of tools.rel
+
+my $NewMRPText = "component tools_e32toolp\n";
+$NewMRPText .= "# This file is generated by setupprj.bat\n\n";
+$NewMRPText .= "ipr T\n";
+$NewMRPText .= "ipr O \\sf\\os\\buildtools\\sbsv1_os\\e32toolp\\binutils\n\n";
+$NewMRPText .= "source \\sf\\os\\buildtools\\sbsv1_os\\e32toolp\n";
+$NewMRPText .= "source \\sf\\os\\buildtools\\toolsandutils\\buildsystem\n";
+$NewMRPText .= join("\nbinary \\epoc32\\tools\\", "",sort @ToolsDst);
+# Don't include EngDoc files in the MRP file
+$NewMRPText .= join("\nbinary \\epoc32\\tools\\compilation_config\\","", sort @ConfigFilesDst);
+$NewMRPText .= join("\nbinary \\epoc32\\tools\\makefile_templates\\","", sort @TemplateFilesDst);
+$NewMRPText .= join("\nbinary \\epoc32\\tools\\","", sort @BinFilesDst);
+$NewMRPText .= join("\nbinary \\epoc32\\tools\\shell\\","", sort @ShellFilesDst);
+$NewMRPText .= "\n\n";
+$NewMRPText .= "notes_source \\component_defs\\release.src\n";
+
+my $MRPFILE="abld.mrp";
+open MRPFILE,"<$MRPFILE" or die "\nERROR: Can't read MRP file \"$MRPFILE\"\n";
+my $OldMRPText = "";
+sysread MRPFILE, $OldMRPText, 100000; # assumes MRP file is less than 100,000 bytes
+close MRPFILE or die "\nERROR: Can't close MRP file \"$MRPFILE\"\n";
+
+if ($OldMRPText ne $NewMRPText) {
+ print "REMARK: MRP file \"$MRPFILE\" differs from setupprj.bat generated content\n";
+ print "Creating suggested new MRP file \"$MRPFILE.new\"\n";
+ open MRPFILE,">$MRPFILE.new" or die "\nERROR: Can't open or create MRP file \"$MRPFILE.new\"\n";
+ print MRPFILE $NewMRPText;
+ close MRPFILE or die "\nERROR: Can't close MRP file \"$MRPFILE.new\"\n";
+}
+
+
+# SUBROUTINE SECTION
+####################
+sub Output (@) {
+ my $Txt;
+ foreach $Txt (@_) {
+ $OutTxt.=$Txt;
+ }
+}
+
+sub UpToRoot ($) { #args: $_[0] Abs FilePath/Path
+# return the path that will lead from the directory the path passed into the function
+# specifies back up to the root directory
+ return undef unless $_[0]=~m-^\\-o;
+ my $Path=$_[0];
+ my $UpP;
+ while ($Path=~m-\\-go)
+ {
+ $UpP.="..\\";
+ }
+ undef $Path;
+ $UpP=~s-^(.*)\.\.\\-$1-o;
+ $UpP=".\\" unless $UpP;
+}
+
+
+
+__END__
+
+:End