summaryrefslogtreecommitdiff
path: root/odk/configure.pl
diff options
context:
space:
mode:
authorRüdiger Timm <rt@openoffice.org>2003-04-17 08:37:10 +0000
committerRüdiger Timm <rt@openoffice.org>2003-04-17 08:37:10 +0000
commit2ad146d2564dfab41d7fd5b537402f38cd773573 (patch)
tree4d55ffc6f8301801331c11d57b6e4f285f2f7960 /odk/configure.pl
parent2809dcb792176841ba6ba4ab50951651a4d4e665 (diff)
INTEGRATION: CWS sdk01 (1.1.2); FILE ADDED
2003/04/16 09:57:21 jsc 1.1.2.6: #107898# changes back 2003/04/16 09:26:49 jsc 1.1.2.5: #107898# remove tr command 2003/04/15 13:56:39 jsc 1.1.2.4: #107898# use variable for directory check (typo) 2003/04/15 13:44:13 jsc 1.1.2.3: #107898# use variable for directory check (typo) 2003/04/15 08:27:49 jsc 1.1.2.2: #107898# insert space 2003/03/12 09:56:56 jsc 1.1.2.1: #10898# imporve usability
Diffstat (limited to 'odk/configure.pl')
-rw-r--r--odk/configure.pl429
1 files changed, 429 insertions, 0 deletions
diff --git a/odk/configure.pl b/odk/configure.pl
new file mode 100644
index 000000000000..13ffc3b40588
--- /dev/null
+++ b/odk/configure.pl
@@ -0,0 +1,429 @@
+#
+# configure.pl - a perl script to set a minimal environment for the SDK.
+#
+# Copyright (c) 2000 Sun Microsystems, Inc.
+#
+
+use IO::File;
+
+$main::currentWorkingDir = `pwd`;
+chop ($main::currentWorkingDir);
+$main::operatingSystem = `uname -s`;
+chop ($main::operatingSystem);
+$main::OO_SDK_HOME = "";
+$main::OO_SDK_HOME_SUGGESTION = $main::currentWorkingDir;
+
+$main::OFFICE_HOME = "";
+$main::OFFICE_HOME_SUGGESTION=`egrep "=file://" \$HOME/.sversionrc | tr -d \\\r | head -1 | sed -e 's#.*=file://##'`;
+chop ($main::OFFICE_HOME_SUGGESTION);
+
+$main::OO_SDK_MAKE_HOME = "";
+$main::OO_SDK_MAKE_HOME_SUGGESTION = searchprog("make");
+$main::makeVersion = "3.79.1";
+$main::correctVersion = 0;
+
+$main::OO_SDK_CPP_HOME = "";
+$main::cppName = "gcc";
+$main::cppVersion = "3.0.1";
+if ( $main::operatingSystem eq "SunOS" )
+{
+ $main::cppName = "CC";
+ $main::cppVersion = "";
+}
+
+$main::OO_SDK_CPP_HOME_SUGGESTION = searchprog($main::cppName);
+
+$main::OO_STLPORT_HOME = "";
+$main::OO_STLPORT_HOME_SUGGESTION = "";
+
+$main::OO_SDK_JAVA_HOME = "";
+$main::OO_SDK_JAVA_HOME_SUGGESTION = searchprog("javac");
+$main::javaVersion = "1.4.1_01";
+
+$main::OO_SDK_ANT_HOME = "";
+$main::OO_SDK_ANT_HOME_SUGGESTION = searchprog("ant");
+$main::antVersion = "1.4";
+
+$main::SDK_AUTO_DEPLOYMENT = "";
+$main::SDK_AUTO_DEPLOYMENT_SUGGESTION = "YES";
+
+$main::return = 0;
+
+# prepare SDK path
+while ( (! -d "$main::OO_SDK_HOME" ) ||
+ ((-d "$main::OO_SDK_HOME") && (! -d "$main::OO_SDK_HOME/idl")) )
+{
+ print "Enter the Office Software Development Kit directory [$main::OO_SDK_HOME_SUGGESTION]: ";
+ $main::OO_SDK_HOME = <STDIN>;
+ chop($main::OO_SDK_HOME);
+ if ( $main::OO_SDK_HOME eq "" )
+ {
+ $main::OO_SDK_HOME = $main::OO_SDK_HOME_SUGGESTION;
+ }
+ if ( (! -d "$main::OO_SDK_HOME") ||
+ ((-d "$main::OO_SDK_HOME") && (! -d "$main::OO_SDK_HOME/idl")) )
+ {
+ $main::OO_SDK_HOME = "";
+ print "Error: An SDK is required, please specify the path to a valid installation.\n";
+ }
+}
+
+# prepare Office path
+while ( (! -d "$main::OFFICE_HOME" ) ||
+ ((-d "$main::OFFICE_HOME") && (! -d "$main::OFFICE_HOME/program")) )
+{
+ print "Enter Office (OpenOffice.org 1.1, StarOffice 6.1, StarSuite 6.1, or higher) installation directory [$main::OFFICE_HOME_SUGGESTION]: ";
+ $main::OFFICE_HOME = <STDIN>;
+ chop($main::OFFICE_HOME);
+ if ( $main::OFFICE_HOME eq "" )
+ {
+ $main::OFFICE_HOME = $main::OFFICE_HOME_SUGGESTION;
+ }
+
+ if ( ! -d "$main::OFFICE_HOME" )
+ {
+ $main::OFFICE_HOME = "";
+ print "Error: An office installation is required, please specify the path to a valid installation.\n";
+ } else
+ {
+ # special work for a network installation, no prgram directory but a link to the soffice binary
+ if ( (! -d "$main::OFFICE_HOME/program") && (-e "$main::OFFICE_HOME/soffice") )
+ {
+ my $soserver = `ls -l $OFFICE_HOME_SUGGESTION/soffice | sed -n 's/.* -> //p'`;
+ $soserver= substr($soserver, 0, rindex($soserver, "program") - 1);
+
+ if ( ! -d $soserver )
+ {
+ $main::OFFICE_HOME = "";
+ print "Error: An office installation is required, please specify the path to a valid installation.\n";
+ } else
+ {
+ $main::OFFICE_HOME = $soserver;
+ }
+ }
+ }
+}
+
+# prepare GNU make path
+while ( (!$main::correctVersion) &&
+ ((! -d "$main::OO_SDK_MAKE_HOME" ) ||
+ ((-d "$main::OO_SDK_MAKE_HOME") && (! -e "$main::OO_SDK_MAKE_HOME/make"))) )
+{
+ print "Enter GNU make ($main::makeVersion or higher) tools directory [$main::OO_SDK_MAKE_HOME_SUGGESTION]: ";
+ $main::OO_SDK_MAKE_HOME = <STDIN>;
+ chop($main::OO_SDK_MAKE_HOME);
+ if ( $main::OO_SDK_MAKE_HOME eq "" )
+ {
+ $main::OO_SDK_MAKE_HOME = $main::OO_SDK_MAKE_HOME_SUGGESTION;
+ }
+ if ( (! -d "$main::OO_SDK_MAKE_HOME") ||
+ ((-d "$main::OO_SDK_MAKE_HOME") && (! -e "$main::OO_SDK_MAKE_HOME/make")) )
+ {
+ $main::OO_SDK_MAKE_HOME = "";
+ print "Error: GNU make is required, please specify a GNU make tools directory.\n";
+ } else
+ {
+ #check version
+ my $testVersion = `$main::OO_SDK_MAKE_HOME/make --version 2> /dev/null | egrep "GNU Make version" | head -1 | sed -e 's#.*GNU Make version ##' | sed -e 's#,.*##'`;
+ if ( $testVersion eq "")
+ {
+ print "The 'make' command found at $main::OO_SDK_MAKE_HOME/make is not GNU Make\n";
+ print "Set the environment variable OO_SDK_MAKE_HOME to your GNU build tools directory.\n";
+ print "GNU make version $main::makeVersion can be obtained at ftp://ftp.gnu.org/gnu/make/\n";
+ } else
+ {
+ $main::correctVersion = testVersion($main::makeVersion, $testVersion, "$main::OO_SDK_MAKE_HOME/make");
+ if ( !$main::correctVersion )
+ {
+ $main::OO_SDK_MAKE_HOME = "";
+ }
+ }
+ }
+}
+
+# prepare C++ compiler path
+$main::correctVersion = 0;
+while ( (!$main::correctVersion) &&
+ ((! -d "$main::OO_SDK_CPP_HOME" ) ||
+ ((-d "$main::OO_SDK_CPP_HOME") && (! -e "$main::OO_SDK_CPP_HOME/$main::cpp"))) )
+{
+ print "C++ Compiler where a language binding exist:\n";
+ print "Solaris, Sun WorkShop 6 update 1 C++ 5.2 2000/09/11 or higher\n";
+ print "Linux, GNU C++ compiler, gcc version 3.0.1 or higher\n";
+ print "Enter C++ tools directory (optional) [$main::OO_SDK_CPP_HOME_SUGGESTION]: ";
+
+ $main::OO_SDK_CPP_HOME = <STDIN>;
+ chop($main::OO_SDK_CPP_HOME);
+ if ( $main::OO_SDK_CPP_HOME eq "" )
+ {
+ $main::OO_SDK_CPP_HOME = $main::OO_SDK_CPP_HOME_SUGGESTION;
+ }
+ if ( ! $main::OO_SDK_CPP_HOME eq "" )
+ {
+ if ( (! -d "$main::OO_SDK_CPP_HOME") ||
+ ((-d "$main::OO_SDK_CPP_HOME") && (! -e "$main::OO_SDK_CPP_HOME/$main::cppName")) )
+ {
+ print "Error: Could not find directory '$main::OO_SDK_CPP_HOME'.\n";
+ if ( skipChoice("C++ compiler") == 1 )
+ {
+ $main::correctVersion = 1;
+ }
+ $main::OO_SDK_CPP_HOME = "";
+ } else
+ {
+ #check version
+ if ( $main::cppName eq "gcc" )
+ {
+ my $testVersion = `$OO_SDK_CPP_HOME/$main::cppName --version`;
+ if ( $testVersion eq "")
+ {
+ print "The '$main::cppName' command found at $main::OO_SDK_CPP_HOME/$main::cppName is not a ";
+ print "GNU compiler.\nSet the environment variable OO_SDK_CPP_HOME to your GNU build tools ";
+ print "directory.\nA GNU compiler version $main::cppVersion can be obtained at ";
+ print "ftp://ftp.gnu.org/gnu/gcc/\n";
+ } else
+ {
+ $main::correctVersion = testVersion($main::cppVersion, $testVersion, "$main::OO_SDK_CPP_HOME/$main::cppName");
+ if ( !$main::correctVersion )
+ {
+ if ( skipChoice("C++ compiler") == 1 )
+ {
+ $main::correctVersion = 1;
+ }
+
+ $main::OO_SDK_CPP_HOME = "";
+ }
+ }
+ } else
+ {
+ # for Solaris we have to check the version too
+ $main::correctVersion = 1;
+ }
+ }
+ } else
+ {
+ # the C++ compiler is optional
+ $main::correctVersion = 1;
+ }
+}
+# prepare the stlport path
+$main::correctVersion = 0;
+while ( (!$main::correctVersion) &&
+ ((! -d "$main::OO_STLPORT_HOME" ) ||
+ ((-d "$main::OO_STLPORT_HOME") && (! -d "$main::OO_STLPORT_HOME/lib"))) )
+{
+ print "Enter STLPORT installation directory (optional) [$main::OO_STLPORT_HOME_SUGGESTION]: ";
+
+ $main::OO_STLPORT_HOME = <STDIN>;
+ chop($main::OO_STLPORT_HOME);
+ if ( $main::OO_STLPORT_HOME eq "" )
+ {
+ $main::OO_STLPORT_HOME = $main::OO_STLPORT_HOME_SUGGESTION;
+ }
+ if ( ! $main::OO_STLPORT_HOME eq "")
+ {
+ if ( (! -d "$main::OO_STLPORT_HOME") ||
+ ((-d "$main::OO_STLPORT_HOME") && (! -d "$main::OO_STLPORT_HOME/lib")) )
+ {
+ print "Error: Could not find directory '$main::OO_STLPORT_HOME'.\n";
+
+ if ( skipChoice("STLPort library") == 1 )
+ {
+ $main::correctVersion = 1;
+ }
+
+ $main::OO_STLPORT_HOME = "";
+ } else
+ {
+ #check version later
+ $main::correctVersion = 1;
+ }
+ } else
+ {
+ # STLPort is optional
+ $main::correctVersion = 1;
+ }
+}
+
+# prepare Java path
+$main::correctVersion = 0;
+while ( (!$main::correctVersion) &&
+ ((! -d "$main::OO_SDK_JAVA_HOME" ) ||
+ ((-d "$main::OO_SDK_JAVA_HOME") && (! -e "$main::OO_SDK_JAVA_HOME/bin/javac"))) )
+{
+ print "Enter JAVA SDK (1.4.1_01 or higher) installation directory [$Main::OO_SDK_JAVA_HOME_SUGGESTION]: ";
+ $main::OO_SDK_JAVA_HOME = <STDIN>;
+ chop($main::OO_SDK_JAVA_HOME);
+ if ( $main::OO_SDK_JAVA_HOME eq "" )
+ {
+ $main::OO_SDK_JAVA_HOME = $main::OO_SDK_JAVA_HOME_SUGGESTION;
+ }
+ if ( (! -d "$main::OO_SDK_JAVA_HOME") ||
+ ((-d "$main::OO_SDK_JAVA_HOME") && (! -e "$main::OO_SDK_JAVA_HOME/bin/javac")) )
+ {
+ $main::OO_SDK_JAVA_HOME = "";
+ print "Error: A Java SDK is required, please specify a valid Java SDK directory.\n";
+ } else
+ {
+ #check version
+ my $testVersion = `$main::OO_SDK_JAVA_HOME/bin/java -version 2>&1 | egrep "java version" | head -1 | sed -e 's#.*version "##' | sed -e 's#".*##'`;
+
+ $main::correctVersion = testVersion($main::javaVersion, $testVersion, "$main::OO_SDK_JAVA_HOME/bin/java");
+ if ( !$main::correctVersion )
+ {
+ $main::OO_SDK_JAVA_HOME = "";
+ }
+ }
+}
+
+# prepare the Ant path
+$main::correctVersion = 0;
+while ( (!$main::correctVersion) &&
+ ((! -d "$main::OO_SDK_ANT_HOME") ||
+ ((-d "$main::OO_SDK_ANT_HOME") && (! -e "$main::OO_SDK_ANT_HOME/bin/ant"))) )
+{
+ print "Enter ANT (1.4 or higher) installation directory (optional) [$main::OO_SDK_ANT_HOME_SUGGESTION]: ";
+
+ $main::OO_SDK_ANT_HOME = <STDIN>;
+ chop($main::OO_SDK_ANT_HOME);
+ if ( $main::OO_SDK_ANT_HOME eq "" )
+ {
+ $main::OO_SDK_ANT_HOME = $main::OO_SDK_ANT_HOME_SUGGESTION;
+ }
+ if ( ! $main::OO_SDK_ANT_HOME eq "" )
+ {
+ if ( (! -d "$main::OO_SDK_ANT_HOME") ||
+ ((-d "$main::OO_SDK_ANT_HOME") && (! -d "$main::OO_SDK_ANT_HOME/lib")) )
+ {
+ print "Error: Could not find directory '$main::OO_SDK_ANT_HOME'.\n";
+
+ if ( skipChoice("Ant build tools") == 1 )
+ {
+ $main::correctVersion = 1;
+ }
+
+ $main::OO_SDK_ANT_HOME = "";
+ } else
+ {
+ my $testVersion = `$main::OO_SDK_ANT_HOME/bin/ant -version | egrep "Ant version" | head -1 | sed -e 's#Ant version ##' | sed -e 's# .*##'`;
+
+ $main::correctVersion = testVersion($main::antVersion, $testVersion, "$main::OO_SDK_ANT_HOME/bin/ant");
+ if ( !$main::correctVersion )
+ {
+
+ if ( skipChoice("Ant build tools") == 1 )
+ {
+ $main::correctVersion = 1;
+ }
+ $main::OO_SDK_ANT_HOME = "";
+ }
+ }
+ } else
+ {
+ # Ant is optional
+ $main::correctVersion = 1;
+ }
+}
+
+while ( $main::SDK_AUTO_DEPLOYMENT eq "" ||
+ ((! $main::SDK_AUTO_DEPLOYMENT eq "YES") &&
+ (! $main::SDK_AUTO_DEPLOYMENT eq "NO")) )
+{
+ print "Automatic deployment of UNO components (YES/NO) [$main::SDK_AUTO_DEPLOYMENT_SUGGESTION]: ";
+ $main::SDK_AUTO_DEPLOYMENT = <STDIN>;
+ chop($main::SDK_AUTO_DEPLOYMENT);
+ if ( $main::SDK_AUTO_DEPLOYMENT eq "" )
+ {
+ $main::SDK_AUTO_DEPLOYMENT = $main::SDK_AUTO_DEPLOYMENT_SUGGESTION;
+ }
+}
+
+
+
+open ( FILEIN, "$main::currentWorkingDir/setsdkenv_unix.in" ) || die "\nERROR: could not open '$main::currentWorkingDir/setsdkenv_unix.in' for reading";
+open ( FILEOUT, ">$main::currentWorkingDir/setsdkenv_unix" ) || die "\nERROR: could not open '$main::currentWorkingDir/setsdkenv_unix' for writing";
+
+while ( <FILEIN> )
+{
+ $_ =~ s#\@OO_SDK_HOME\@#$main::OO_SDK_HOME#go;
+ $_ =~ s#\@OFFICE_HOME\@#$main::OFFICE_HOME#go;
+ $_ =~ s#\@OO_SDK_MAKE_HOME\@#$main::OO_SDK_MAKE_HOME#go;
+ $_ =~ s#\@OO_SDK_CPP_HOME\@#$main::OO_SDK_CPP_HOME#go;
+ $_ =~ s#\@OO_STLPORT_HOME\@#$main::OO_STLPORT_HOME#go;
+ $_ =~ s#\@OO_SDK_JAVA_HOME\@#$main::OO_SDK_JAVA_HOME#go;
+ $_ =~ s#\@OO_SDK_ANT_HOME\@#$main::OO_SDK_ANT_HOME#go;
+ $_ =~ s#\@SDK_AUTO_DEPLOYMENT\@#$main::SDK_AUTO_DEPLOYMENT#go;
+
+ print FILEOUT $_;
+}
+
+close FILEIN;
+close FILEOUT;
+chmod 0755, "$main::currentWorkingDir/setsdkenv_unix";
+
+exit $return;
+
+sub skipChoice
+{
+ my $msg = shift;
+ my $skip = "";
+ while ( !( $skip eq "YES" || $skip eq "NO") )
+ {
+ print "Do you want to skip the choice of the '$msg' (YES/NO): [YES] ";
+ $skip = <STDIN>;
+ chop($skip);
+ if ( $skip eq "" ) { $skip = "YES"; } # default
+ if ( $skip eq "YES" )
+ {
+ return 1;
+ }
+ }
+ return 0;
+}
+
+sub searchprog
+{
+ my $_search= shift;
+ my $tmpPath = `echo "\$PATH"`;
+ my @pathList = split(":" , $tmpPath);
+ my $progDir = "";
+
+ foreach $i (@pathList)
+ {
+ if ( -e "$i/$_search" )
+ {
+ if ( index($i, "/") == 0 )
+ {
+ # # absolute path; leave unchanged
+ $progDir = $i;
+ } else
+ {
+ $progDir = `cd "$i"; pwd`;
+ }
+ return $progDir
+ }
+ }
+ return $progDir
+}
+
+sub testVersion
+{
+ my $tmpMustBeVersion = shift;
+ my $tmpTestVersion = shift;
+ my $toolName = shift;
+ my @mustBeVersion = split(/\.*_*/,$tmpMustBeVersion);
+ my @testVersion = split(/\.*_*/,$tmpTestVersion);
+ my $length = $#mustBeVersion;
+
+ for ($i=0; $i < $length; $i++ )
+ {
+ if ( @testVersion->[0] < @mustBeVersion->[0] )
+ {
+ print "The command '$toolName' has the version $tmpTestVersion.\n";
+ print "The SDK requires at least the version $tmpMustBeVersion.\n";
+ return 0;
+ }
+ }
+
+ return 1; # 1 indicates a correct version
+}