2003-04-17 03:37:10 -05:00
|
|
|
#
|
|
|
|
# configure.pl - a perl script to set a minimal environment for the SDK.
|
|
|
|
#
|
|
|
|
# Copyright (c) 2000 Sun Microsystems, Inc.
|
|
|
|
#
|
|
|
|
|
|
|
|
use IO::File;
|
|
|
|
|
2005-03-29 05:03:00 -06:00
|
|
|
$currentdir=`/bin/pwd`;
|
|
|
|
$main::sdkpath = `(cd $ARGV[0] && pwd && cd $currentdir ) | head -n 1`;
|
|
|
|
chop ($main::sdkpath);
|
|
|
|
$main::OO_SDK_NAME=readSDKName($main::sdkpath);
|
|
|
|
$main::operatingSystem = `$main::sdkpath/config.guess | cut -d"-" -f3,4`;
|
2003-04-17 03:37:10 -05:00
|
|
|
chop ($main::operatingSystem);
|
|
|
|
$main::OO_SDK_HOME = "";
|
2005-03-29 05:03:00 -06:00
|
|
|
$main::OO_SDK_HOME_SUGGESTION = $main::sdkpath;
|
2003-04-17 03:37:10 -05:00
|
|
|
|
2005-06-17 03:37:25 -05:00
|
|
|
$main::OFFICE_OR_URE = "";
|
|
|
|
$main::OFFICE_OR_URE_SUGGESTION = "Office";
|
|
|
|
|
2003-04-17 03:37:10 -05:00
|
|
|
$main::OFFICE_HOME = "";
|
2005-01-31 08:53:51 -06:00
|
|
|
|
2005-06-17 03:37:25 -05:00
|
|
|
$main::OO_SDK_URE_HOME = "";
|
2003-04-17 03:37:10 -05:00
|
|
|
|
|
|
|
$main::OO_SDK_MAKE_HOME = "";
|
2005-03-29 05:03:00 -06:00
|
|
|
$main::makeName = "make";
|
2005-05-31 10:38:36 -05:00
|
|
|
if ( $main::operatingSystem =~ /freebsd/ )
|
2005-03-29 05:03:00 -06:00
|
|
|
{
|
|
|
|
$main::makeName = "gmake";
|
|
|
|
}
|
|
|
|
$main::OO_SDK_MAKE_HOME_SUGGESTION = searchprog($main::makeName);
|
2003-04-17 03:37:10 -05:00
|
|
|
$main::makeVersion = "3.79.1";
|
|
|
|
$main::correctVersion = 0;
|
|
|
|
|
2005-01-31 08:53:51 -06:00
|
|
|
$main::OO_SDK_ZIP_HOME = "";
|
|
|
|
$main::OO_SDK_ZIP_HOME_SUGGESTION = searchprog("zip");
|
|
|
|
$main::zipVersion = "2.3";
|
|
|
|
|
2003-04-17 03:37:10 -05:00
|
|
|
$main::OO_SDK_CPP_HOME = "";
|
|
|
|
$main::cppName = "gcc";
|
|
|
|
$main::cppVersion = "3.0.1";
|
2005-03-07 10:30:04 -06:00
|
|
|
if ( $main::operatingSystem =~ m/solaris/ )
|
2003-04-17 03:37:10 -05:00
|
|
|
{
|
|
|
|
$main::cppName = "CC";
|
2003-07-09 04:36:22 -05:00
|
|
|
$main::cppVersion = "5.2";
|
2003-04-17 03:37:10 -05:00
|
|
|
}
|
2005-01-31 08:53:51 -06:00
|
|
|
$main::OO_SDK_CC_55_OR_HIGHER = "";
|
2003-04-17 03:37:10 -05:00
|
|
|
$main::OO_SDK_CPP_HOME_SUGGESTION = searchprog($main::cppName);
|
|
|
|
|
|
|
|
$main::OO_SDK_JAVA_HOME = "";
|
|
|
|
$main::OO_SDK_JAVA_HOME_SUGGESTION = searchprog("javac");
|
|
|
|
$main::javaVersion = "1.4.1_01";
|
|
|
|
|
|
|
|
$main::SDK_AUTO_DEPLOYMENT = "";
|
|
|
|
$main::SDK_AUTO_DEPLOYMENT_SUGGESTION = "YES";
|
|
|
|
|
2004-05-18 07:17:41 -05:00
|
|
|
$main::SDK_AUTO_DEPLOYMENT = "";
|
|
|
|
$main::SDK_AUTO_DEPLOYMENT_SUGGESTION = "YES";
|
|
|
|
|
|
|
|
$main::OO_SDK_OUTPUT_DIR = "";
|
|
|
|
#$main::OO_SDK_OUTPUT_DIR = '$HOME';
|
|
|
|
$main::OO_SDK_OUTPUT_DIR = "";
|
|
|
|
$main::skipOutputDir = 0;
|
|
|
|
|
2003-04-17 03:37:10 -05:00
|
|
|
$main::return = 0;
|
|
|
|
|
|
|
|
# prepare SDK path
|
|
|
|
while ( (! -d "$main::OO_SDK_HOME" ) ||
|
2003-07-09 04:36:22 -05:00
|
|
|
((-d "$main::OO_SDK_HOME") && (! -d "$main::OO_SDK_HOME/idl")) )
|
2003-04-17 03:37:10 -05:00
|
|
|
{
|
2004-05-18 07:17:41 -05:00
|
|
|
print " Enter the Office Software Development Kit directory [$main::OO_SDK_HOME_SUGGESTION]: ";
|
|
|
|
$main::OO_SDK_HOME = readStdIn();
|
2003-04-17 03:37:10 -05:00
|
|
|
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 = "";
|
2004-05-18 07:17:41 -05:00
|
|
|
print " Error: An SDK is required, please specify the path to a valid installation.\n";
|
2003-04-17 03:37:10 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2005-06-17 03:37:25 -05:00
|
|
|
# Office or URE:
|
|
|
|
while ($main::OFFICE_OR_URE ne "office" && $main::OFFICE_OR_URE ne "ure")
|
2003-04-17 03:37:10 -05:00
|
|
|
{
|
2005-06-17 03:37:25 -05:00
|
|
|
print " Use an installed Office or an installed UNO Runtime Environment",
|
|
|
|
" (Office/URE) [$main::OFFICE_OR_URE_SUGGESTION]: ";
|
|
|
|
$main::OFFICE_OR_URE = <STDIN>;
|
|
|
|
chop $main::OFFICE_OR_URE;
|
|
|
|
$main::OFFICE_OR_URE = $main::OFFICE_OR_URE_SUGGESTION if
|
|
|
|
$main::OFFICE_OR_URE eq "";
|
|
|
|
$main::OFFICE_OR_URE = lc $main::OFFICE_OR_URE;
|
|
|
|
}
|
2003-04-17 03:37:10 -05:00
|
|
|
|
2005-06-17 03:37:25 -05:00
|
|
|
if ( $main::OFFICE_OR_URE eq "office" )
|
|
|
|
{
|
|
|
|
# prepare Office path
|
|
|
|
$main::OFFICE_HOME_SUGGESTION = searchprog("soffice");
|
|
|
|
if ( ! $main::OFFICE_HOME_SUGGESTION eq "" )
|
2003-04-17 03:37:10 -05:00
|
|
|
{
|
2005-06-17 03:37:25 -05:00
|
|
|
my $tmpOffice = readlink "$main::OFFICE_HOME_SUGGESTION/soffice";
|
|
|
|
|
|
|
|
if ( $tmpOffice eq "" )
|
2003-04-17 03:37:10 -05:00
|
|
|
{
|
2005-06-17 03:37:25 -05:00
|
|
|
$tmpOffice = "$main::OFFICE_HOME_SUGGESTION/soffice";
|
|
|
|
}
|
2003-04-17 03:37:10 -05:00
|
|
|
|
2005-06-17 03:37:25 -05:00
|
|
|
my $offset = rindex($tmpOffice, "/program/soffice");
|
|
|
|
if ( $offset != -1 )
|
|
|
|
{
|
|
|
|
$main::OFFICE_HOME_SUGGESTION = substr($tmpOffice, 0, $offset);
|
|
|
|
} else
|
|
|
|
{
|
|
|
|
$offset = rindex($tmpOffice, "/soffice");
|
|
|
|
if ( $offset != -1 )
|
2003-04-17 03:37:10 -05:00
|
|
|
{
|
2005-06-17 03:37:25 -05:00
|
|
|
$main::OFFICE_HOME_SUGGESTION = substr($tmpOffice, 0, $offset);
|
2003-04-17 03:37:10 -05:00
|
|
|
} else
|
|
|
|
{
|
2005-06-17 03:37:25 -05:00
|
|
|
$main::OFFICE_HOME_SUGGESTION = "";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
while ( (! -d "$main::OFFICE_HOME" ) ||
|
|
|
|
((-d "$main::OFFICE_HOME") && (! -d "$main::OFFICE_HOME/program")) )
|
|
|
|
{
|
|
|
|
print " Enter the Office installation directory [$main::OFFICE_HOME_SUGGESTION]: ";
|
|
|
|
$main::OFFICE_HOME = readStdIn();
|
|
|
|
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;
|
|
|
|
}
|
2003-04-17 03:37:10 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2005-06-17 03:37:25 -05:00
|
|
|
else
|
|
|
|
{
|
|
|
|
# prepare URE path
|
|
|
|
$main::OO_SDK_URE_HOME_SUGGESTION = "/opt/openoffice.org/ure";
|
|
|
|
$main::OO_SDK_URE_HOME_SUGGESTION = "" unless
|
|
|
|
-e "$main::OO_SDK_URE_HOME_SUGGESTION/bin/uno";
|
|
|
|
for (;;)
|
|
|
|
{
|
|
|
|
print " Enter the URE installation directory",
|
|
|
|
" [$main::OO_SDK_URE_HOME_SUGGESTION]: ";
|
|
|
|
$main::OO_SDK_URE_HOME = readStdIn();
|
|
|
|
chop $main::OO_SDK_URE_HOME;
|
|
|
|
$main::OO_SDK_URE_HOME = $main::OO_SDK_URE_HOME_SUGGESTION if
|
|
|
|
$main::OO_SDK_URE_HOME eq "" &&
|
|
|
|
$main::OO_SDK_URE_HOME_SUGGESTION ne "";
|
|
|
|
last if -e "$main::OO_SDK_URE_HOME/bin/uno";
|
|
|
|
print " Error: A valid URE installation is required.\n";
|
|
|
|
}
|
|
|
|
}
|
2003-04-17 03:37:10 -05:00
|
|
|
|
|
|
|
# prepare GNU make path
|
|
|
|
while ( (!$main::correctVersion) &&
|
2003-07-09 04:36:22 -05:00
|
|
|
((! -d "$main::OO_SDK_MAKE_HOME" ) ||
|
2005-03-29 05:03:00 -06:00
|
|
|
((-d "$main::OO_SDK_MAKE_HOME") && (! -e "$main::OO_SDK_MAKE_HOME/$main::makeName"))) )
|
2003-04-17 03:37:10 -05:00
|
|
|
{
|
2004-05-18 07:17:41 -05:00
|
|
|
print " Enter GNU make ($main::makeVersion or higher) tools directory [$main::OO_SDK_MAKE_HOME_SUGGESTION]: ";
|
|
|
|
$main::OO_SDK_MAKE_HOME = readStdIn();
|
2003-04-17 03:37:10 -05:00
|
|
|
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") ||
|
2005-03-29 05:03:00 -06:00
|
|
|
((-d "$main::OO_SDK_MAKE_HOME") && (! -e "$main::OO_SDK_MAKE_HOME/$main::makeName")) )
|
2003-04-17 03:37:10 -05:00
|
|
|
{
|
|
|
|
$main::OO_SDK_MAKE_HOME = "";
|
2004-05-18 07:17:41 -05:00
|
|
|
print " Error: GNU make is required, please specify a GNU make tools directory.\n";
|
2003-04-17 03:37:10 -05:00
|
|
|
} else
|
|
|
|
{
|
|
|
|
#check version
|
2005-03-29 05:03:00 -06:00
|
|
|
my $testVersion = `$OO_SDK_MAKE_HOME/$main::makeName --version`;
|
2003-04-17 03:37:10 -05:00
|
|
|
if ( $testVersion eq "")
|
|
|
|
{
|
2004-05-18 07:17:41 -05:00
|
|
|
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";
|
2003-04-17 03:37:10 -05:00
|
|
|
} else
|
|
|
|
{
|
2003-07-09 04:36:22 -05:00
|
|
|
if ($testVersion =~ m#((\d+\.)+\d+)# )
|
|
|
|
{
|
|
|
|
$testVersion = $1;
|
|
|
|
}
|
2005-03-29 05:03:00 -06:00
|
|
|
$main::correctVersion = testVersion($main::makeVersion, $testVersion, "$main::OO_SDK_MAKE_HOME/$main::makeName", 1);
|
2003-04-17 03:37:10 -05:00
|
|
|
if ( !$main::correctVersion )
|
|
|
|
{
|
2005-03-29 05:03:00 -06:00
|
|
|
print " The '$main::makeName' command found at '$main::OO_SDK_MAKE_HOME' has a wrong version\n";
|
2003-04-17 03:37:10 -05:00
|
|
|
$main::OO_SDK_MAKE_HOME = "";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2005-01-31 08:53:51 -06:00
|
|
|
# prepare zip path
|
|
|
|
$main::correctVersion = 0;
|
|
|
|
while ( (!$main::correctVersion) &&
|
|
|
|
((! -d "$main::OO_SDK_ZIP_HOME" ) ||
|
|
|
|
((-d "$main::OO_SDK_ZIP_HOME") && (! -e "$main::OO_SDK_ZIP_HOME/zip"))) )
|
|
|
|
{
|
|
|
|
print " Enter zip ($main::zipVersion or higher) tool directory [$main::OO_SDK_ZIP_HOME_SUGGESTION]: ";
|
|
|
|
$main::OO_SDK_ZIP_HOME = readStdIn();
|
|
|
|
chop($main::OO_SDK_ZIP_HOME);
|
|
|
|
if ( $main::OO_SDK_ZIP_HOME eq "" )
|
|
|
|
{
|
|
|
|
$main::OO_SDK_ZIP_HOME = $main::OO_SDK_ZIP_HOME_SUGGESTION;
|
|
|
|
}
|
|
|
|
if ( (! -d "$main::OO_SDK_ZIP_HOME") ||
|
|
|
|
((-d "$main::OO_SDK_ZIP_HOME") && (! -e "$main::OO_SDK_ZIP_HOME/zip")) )
|
|
|
|
{
|
|
|
|
$main::OO_SDK_ZIP_HOME = "";
|
|
|
|
print " Error: zip tool is required, please specify a zip tool directory.\n";
|
|
|
|
} else
|
|
|
|
{
|
|
|
|
#check version
|
|
|
|
my $testVersion = `$OO_SDK_ZIP_HOME/zip -h 2>&1 | egrep Zip | head -n 1`;
|
|
|
|
$testVersion =~ s#Zip ([\d.]+) .*#$1#go;
|
|
|
|
if ( $testVersion eq "")
|
|
|
|
{
|
|
|
|
print " Set the environment variable OO_SDK_ZIP_HOME to your zip tool directory.\n";
|
|
|
|
print " zip version $main::zipVersion can be obtained at ftp://www.info-zip.org/\n";
|
|
|
|
} else
|
|
|
|
{
|
|
|
|
if ($testVersion =~ m#((\d+\.)+\d+)# )
|
|
|
|
{
|
|
|
|
$testVersion = $1;
|
|
|
|
}
|
|
|
|
$main::correctVersion = testVersion($main::zipVersion, $testVersion, "$main::OO_SDK_MAKE_HOME/zip", 1);
|
|
|
|
if ( !$main::correctVersion )
|
|
|
|
{
|
|
|
|
print " The 'zip' command found at '$main::OO_SDK_ZIP_HOME' has a wrong version\n";
|
|
|
|
$main::OO_SDK_ZIP_HOME = "";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2003-04-17 03:37:10 -05:00
|
|
|
# prepare C++ compiler path
|
|
|
|
$main::correctVersion = 0;
|
|
|
|
while ( (!$main::correctVersion) &&
|
2003-07-09 04:36:22 -05:00
|
|
|
((! -d "$main::OO_SDK_CPP_HOME" ) ||
|
|
|
|
((-d "$main::OO_SDK_CPP_HOME") && (! -e "$main::OO_SDK_CPP_HOME/$main::cpp"))) )
|
2003-04-17 03:37:10 -05:00
|
|
|
{
|
2004-05-18 07:17:41 -05:00
|
|
|
print " C++ compilers where for example 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 the directory of the C++ compiler, the directory\n";
|
|
|
|
print " where the compiler is located (optional) [$main::OO_SDK_CPP_HOME_SUGGESTION]: ";
|
2003-04-17 03:37:10 -05:00
|
|
|
|
2004-05-18 07:17:41 -05:00
|
|
|
$main::OO_SDK_CPP_HOME = readStdIn();
|
2003-04-17 03:37:10 -05:00
|
|
|
chop($main::OO_SDK_CPP_HOME);
|
|
|
|
if ( $main::OO_SDK_CPP_HOME eq "" )
|
|
|
|
{
|
|
|
|
$main::OO_SDK_CPP_HOME = $main::OO_SDK_CPP_HOME_SUGGESTION;
|
2005-01-31 08:53:51 -06:00
|
|
|
}
|
2004-05-18 07:17:41 -05:00
|
|
|
|
2003-04-17 03:37:10 -05:00
|
|
|
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")) )
|
|
|
|
{
|
2004-05-18 07:17:41 -05:00
|
|
|
print " Error: Could not find directory '$main::OO_SDK_CPP_HOME'.\n";
|
2003-04-17 03:37:10 -05:00
|
|
|
if ( skipChoice("C++ compiler") == 1 )
|
|
|
|
{
|
|
|
|
$main::correctVersion = 1;
|
|
|
|
}
|
|
|
|
$main::OO_SDK_CPP_HOME = "";
|
|
|
|
} else
|
|
|
|
{
|
|
|
|
#check version
|
|
|
|
if ( $main::cppName eq "gcc" )
|
|
|
|
{
|
2003-07-09 04:36:22 -05:00
|
|
|
my $testVersion = `$OO_SDK_CPP_HOME/$main::cppName -dumpversion`;
|
2003-04-17 03:37:10 -05:00
|
|
|
if ( $testVersion eq "")
|
|
|
|
{
|
2004-05-18 07:17:41 -05:00
|
|
|
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";
|
2003-04-17 03:37:10 -05:00
|
|
|
} else
|
|
|
|
{
|
2005-01-31 08:53:51 -06:00
|
|
|
$main::correctVersion = testVersion($main::cppVersion, $testVersion, "$main::OO_SDK_CPP_HOME/$main::cppName", 1);
|
2003-04-17 03:37:10 -05:00
|
|
|
if ( !$main::correctVersion )
|
|
|
|
{
|
2004-05-18 07:17:41 -05:00
|
|
|
print " The '$main::cppName' command found at '$main::OO_SDK_CPP_HOME' has a wrong version\n";
|
2003-04-17 03:37:10 -05:00
|
|
|
if ( skipChoice("C++ compiler") == 1 )
|
|
|
|
{
|
|
|
|
$main::correctVersion = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
$main::OO_SDK_CPP_HOME = "";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else
|
|
|
|
{
|
|
|
|
# for Solaris we have to check the version too
|
2003-07-09 04:36:22 -05:00
|
|
|
open(FILE, "$OO_SDK_CPP_HOME/$main::cppName -V 2>&1 |");
|
|
|
|
my @lines = <FILE>;
|
|
|
|
my $testVersion = $lines[0];
|
|
|
|
if ( $testVersion eq "")
|
|
|
|
{
|
2004-05-18 07:17:41 -05:00
|
|
|
print " The '$main::cppName' command found at $main::OO_SDK_CPP_HOME/$main::cppName is not a ";
|
|
|
|
print " Solaris C++ compiler.\nSet the environment variable OO_SDK_CPP_HOME to your Solaris C++ compiler directory.\n";
|
2003-07-09 04:36:22 -05:00
|
|
|
} else
|
|
|
|
{
|
|
|
|
if ($testVersion =~ m#((\d+\.)+\d+)# )
|
|
|
|
{
|
|
|
|
$testVersion = $1;
|
|
|
|
}
|
2005-01-31 08:53:51 -06:00
|
|
|
$main::correctVersion = testVersion($main::cppVersion, $testVersion, "$main::OO_SDK_CPP_HOME/$main::cppName", 1);
|
2003-07-09 04:36:22 -05:00
|
|
|
if ( !$main::correctVersion )
|
|
|
|
{
|
2004-05-18 07:17:41 -05:00
|
|
|
print " The '$main::cppName' command found at '$main::OO_SDK_CPP_HOME' has a wrong version\n";
|
2003-07-09 04:36:22 -05:00
|
|
|
if ( skipChoice("C++ compiler") == 1 )
|
|
|
|
{
|
|
|
|
$main::correctVersion = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
$main::OO_SDK_CPP_HOME = "";
|
2005-01-31 08:53:51 -06:00
|
|
|
} else {
|
|
|
|
$main::correctVersion = testVersion("5.5", $testVersion, "$main::OO_SDK_CPP_HOME/$main::cppName", 2);
|
|
|
|
if ( $main::correctVersion ) {
|
|
|
|
$main::OO_SDK_CC_55_OR_HIGHER = $testVersion;
|
|
|
|
}
|
2003-07-09 04:36:22 -05:00
|
|
|
}
|
|
|
|
}
|
2003-04-17 03:37:10 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
} else
|
|
|
|
{
|
|
|
|
# the C++ compiler is optional
|
|
|
|
$main::correctVersion = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
# prepare Java path
|
|
|
|
$main::correctVersion = 0;
|
2004-05-18 07:17:41 -05:00
|
|
|
|
|
|
|
# prepare Java suggestion (cut bin directory to be in the root of the Java SDK)
|
|
|
|
$main::offset = rindex($main::OO_SDK_JAVA_HOME_SUGGESTION, "/bin");
|
|
|
|
if ( $main::offset != -1 )
|
|
|
|
{
|
|
|
|
$main::OO_SDK_JAVA_HOME_SUGGESTION = substr($main::OO_SDK_JAVA_HOME_SUGGESTION, 0, $main::offset);
|
|
|
|
}
|
|
|
|
|
2003-04-17 03:37:10 -05:00
|
|
|
while ( (!$main::correctVersion) &&
|
|
|
|
((! -d "$main::OO_SDK_JAVA_HOME" ) ||
|
|
|
|
((-d "$main::OO_SDK_JAVA_HOME") && (! -e "$main::OO_SDK_JAVA_HOME/bin/javac"))) )
|
|
|
|
{
|
2005-01-31 08:53:51 -06:00
|
|
|
print " Enter Java SDK (1.4.1_01 or higher) installation directory (optional) [$Main::OO_SDK_JAVA_HOME_SUGGESTION]: ";
|
2004-05-18 07:17:41 -05:00
|
|
|
$main::OO_SDK_JAVA_HOME = readStdIn();
|
2003-04-17 03:37:10 -05:00
|
|
|
chop($main::OO_SDK_JAVA_HOME);
|
|
|
|
if ( $main::OO_SDK_JAVA_HOME eq "" )
|
|
|
|
{
|
|
|
|
$main::OO_SDK_JAVA_HOME = $main::OO_SDK_JAVA_HOME_SUGGESTION;
|
|
|
|
}
|
2005-01-31 08:53:51 -06:00
|
|
|
if ( ! $main::OO_SDK_JAVA_HOME eq "" )
|
2003-04-17 03:37:10 -05:00
|
|
|
{
|
2005-01-31 08:53:51 -06:00
|
|
|
if ( (! -d "$main::OO_SDK_JAVA_HOME") ||
|
|
|
|
((-d "$main::OO_SDK_JAVA_HOME") && (! -e "$main::OO_SDK_JAVA_HOME/bin/javac")) )
|
2003-04-17 03:37:10 -05:00
|
|
|
{
|
2005-01-31 08:53:51 -06:00
|
|
|
print " Error: Could not find directory '$main::OO_SDK_JAVA_HOME' or '$main::OO_SDK_JAVA_HOME/bin/javac'.\n";
|
|
|
|
if ( skipChoice("JAVA SDK") == 1 )
|
|
|
|
{
|
|
|
|
$main::correctVersion = 1;
|
|
|
|
}
|
2003-04-17 03:37:10 -05:00
|
|
|
$main::OO_SDK_JAVA_HOME = "";
|
2005-01-31 08:53:51 -06:00
|
|
|
} else
|
|
|
|
{
|
|
|
|
#check version
|
|
|
|
my $testVersion = `$main::OO_SDK_JAVA_HOME/bin/java -version 2>&1 | egrep "java version" | head -n 1 | sed -e 's#.*version "##' | sed -e 's#".*##'`;
|
|
|
|
$testVersion =~ s#([^\n]+)\n#$1#go;
|
|
|
|
|
|
|
|
$main::correctVersion = testVersion($main::javaVersion, $testVersion, "$main::OO_SDK_JAVA_HOME/bin/java", 1);
|
|
|
|
if ( !$main::correctVersion )
|
|
|
|
{
|
|
|
|
if ( skipChoice("JAVA SDK") == 1 )
|
|
|
|
{
|
|
|
|
$main::correctVersion = 1;
|
|
|
|
}
|
|
|
|
$main::OO_SDK_JAVA_HOME = "";
|
|
|
|
}
|
2003-04-17 03:37:10 -05:00
|
|
|
}
|
2005-01-31 08:53:51 -06:00
|
|
|
}else
|
|
|
|
{
|
|
|
|
# the Java SDK is optional
|
|
|
|
$main::correctVersion = 1;
|
2003-04-17 03:37:10 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2004-05-18 07:17:41 -05:00
|
|
|
# prepare output directory (optional)
|
|
|
|
while ( (!$main::skipOutputDir) &&
|
|
|
|
(! -d "$main::OO_SDK_OUTPUT_DIR") )
|
|
|
|
{
|
|
|
|
print " Default output directory is the SDK directory itself.\n";
|
|
|
|
print " Enter an existent directory if you prefer a different output directory (optional) [$main::OO_SDK_OUTPUT_DIR]: ";
|
|
|
|
|
|
|
|
$main::OO_SDK_OUTPUT_DIR = readStdIn();
|
|
|
|
|
|
|
|
chop($main::OO_SDK_OUTPUT_DIR);
|
|
|
|
if ( $main::OO_SDK_OUTPUT_DIR eq "" )
|
|
|
|
{
|
|
|
|
$main::OO_SDK_OUTPUT_DIR = $main::OO_SDK_OUTPUT_DIR_SUGGESTION;
|
|
|
|
}
|
|
|
|
if ( ! $main::OO_SDK_OUTPUT_DIR eq "" )
|
|
|
|
{
|
|
|
|
if ( ! -d "$main::OO_SDK_OUTPUT_DIR" )
|
|
|
|
{
|
|
|
|
print " Error: Could not find directory '$main::OO_SDK_OUTPUT_DIR'.\n";
|
|
|
|
if ( skipChoice("optional output directory") == 1 )
|
|
|
|
{
|
|
|
|
$main::skipOutputDir = 1;
|
|
|
|
}
|
|
|
|
$main::OO_SDK_OUTPUT_DIR = "";
|
|
|
|
}
|
|
|
|
} else
|
|
|
|
{
|
|
|
|
# the output directory is optional
|
|
|
|
$main::skipOutputDir = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
# prepare auto deployment
|
2005-06-17 03:37:25 -05:00
|
|
|
if ( $main::OFFICE_OR_URE eq "office" )
|
2003-04-17 03:37:10 -05:00
|
|
|
{
|
2005-06-17 03:37:25 -05:00
|
|
|
while ( $main::SDK_AUTO_DEPLOYMENT eq "" ||
|
|
|
|
((! $main::SDK_AUTO_DEPLOYMENT eq "YES") &&
|
|
|
|
(! $main::SDK_AUTO_DEPLOYMENT eq "NO")) )
|
2003-04-17 03:37:10 -05:00
|
|
|
{
|
2005-06-17 03:37:25 -05:00
|
|
|
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;
|
|
|
|
}
|
2003-04-17 03:37:10 -05:00
|
|
|
}
|
|
|
|
}
|
2005-06-17 03:37:25 -05:00
|
|
|
else
|
|
|
|
{
|
|
|
|
$main::SDK_AUTO_DEPLOYMENT = "NO";
|
|
|
|
}
|
2003-04-17 03:37:10 -05:00
|
|
|
|
2005-01-31 08:53:51 -06:00
|
|
|
prepareScriptFile("setsdkenv_unix.sh.in", "setsdkenv_unix.sh", 1);
|
2005-03-29 05:03:00 -06:00
|
|
|
chmod 0644, "$main::sdkpath/setsdkenv_unix.sh";
|
2003-04-17 03:37:10 -05:00
|
|
|
|
2005-01-31 08:53:51 -06:00
|
|
|
prepareScriptFile("setsdkenv_unix.csh.in", "setsdkenv_unix.csh", 2);
|
2005-03-29 05:03:00 -06:00
|
|
|
chmod 0644, "$main::sdkpath/setsdkenv_unix.csh";
|
2003-04-17 03:37:10 -05:00
|
|
|
|
2004-05-18 07:17:41 -05:00
|
|
|
print "\n";
|
2005-01-31 08:53:51 -06:00
|
|
|
print " *********************************************************************\n";
|
|
|
|
print " * ... your SDK environment has been prepared.\n";
|
|
|
|
print " * For each time you want to use this configured SDK environment, you\n";
|
|
|
|
print " * have to run the \"setsdkenv_unix\" script file!\n";
|
|
|
|
print " * Alternatively can you source one of the scripts \"setsdkenv_unix.sh\"\n";
|
|
|
|
print " * or \"setsdkenv_unix.csh\" to get an environment without starting\n";
|
|
|
|
print " * a new shell.\n";
|
|
|
|
print " *********************************************************************\n\n";
|
2003-07-09 04:36:22 -05:00
|
|
|
|
2003-04-17 03:37:10 -05:00
|
|
|
exit $return;
|
|
|
|
|
|
|
|
sub skipChoice
|
|
|
|
{
|
|
|
|
my $msg = shift;
|
|
|
|
my $skip = "";
|
|
|
|
while ( !( $skip eq "YES" || $skip eq "NO") )
|
|
|
|
{
|
2004-05-18 07:17:41 -05:00
|
|
|
print " Do you want to skip the choice of the '$msg' (YES/NO): [YES] ";
|
2003-04-17 03:37:10 -05:00
|
|
|
$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;
|
2005-01-31 08:53:51 -06:00
|
|
|
# 1=check + message 2=check only
|
|
|
|
my $checkOnly = shift;
|
2004-05-18 07:17:41 -05:00
|
|
|
my @mustBeVersion = split(/\.|_|-/,$tmpMustBeVersion);
|
|
|
|
my @testVersion = split(/\.|_|-/,$tmpTestVersion);
|
2003-04-17 03:37:10 -05:00
|
|
|
my $length = $#mustBeVersion;
|
|
|
|
|
2003-07-09 04:36:22 -05:00
|
|
|
if ($#testVersion < $#mustBeVersion) {
|
|
|
|
$length = $#testVersion;
|
|
|
|
}
|
|
|
|
|
|
|
|
for ($i=0; $i <= $length; $i++ )
|
2003-04-17 03:37:10 -05:00
|
|
|
{
|
2003-06-10 04:02:00 -05:00
|
|
|
if ( @testVersion->[$i] < @mustBeVersion->[$i] )
|
2003-04-17 03:37:10 -05:00
|
|
|
{
|
2005-01-31 08:53:51 -06:00
|
|
|
if ( $#checkOnly == 1 ) {
|
|
|
|
print " The command '$toolName' has the version $tmpTestVersion.\n";
|
|
|
|
print " The SDK requires at least the version $tmpMustBeVersion.\n";
|
|
|
|
}
|
2003-04-17 03:37:10 -05:00
|
|
|
return 0;
|
2004-05-18 07:17:41 -05:00
|
|
|
} else {
|
|
|
|
if ( @testVersion->[$i] > @mustBeVersion->[$i] )
|
|
|
|
{
|
|
|
|
return 1; # 1 indicates a correct version
|
|
|
|
}
|
2003-04-17 03:37:10 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return 1; # 1 indicates a correct version
|
|
|
|
}
|
2004-05-18 07:17:41 -05:00
|
|
|
|
|
|
|
sub readSDKName
|
|
|
|
{
|
2005-03-29 05:03:00 -06:00
|
|
|
my $sdkpath = shift;
|
|
|
|
my $mkfilename = "$sdkpath/settings/dk.mk";
|
|
|
|
|
2004-05-18 07:17:41 -05:00
|
|
|
open ( FILEIN, $mkfilename ) || die "ERROR: could not open '$mkfilename' for reading";
|
|
|
|
|
|
|
|
@lines = <FILEIN>;
|
|
|
|
close( FILEIN );
|
|
|
|
foreach $_ (@lines)
|
|
|
|
{
|
2005-01-31 08:53:51 -06:00
|
|
|
if( s#(SDKNAME=([\w\._]+)\n)#$1#go )
|
2004-05-18 07:17:41 -05:00
|
|
|
{
|
|
|
|
return $2;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
sub readStdIn
|
|
|
|
{
|
|
|
|
my $tmpstdin = <STDIN>;
|
|
|
|
if ( index($tmpstdin, "\$") != -1)
|
|
|
|
{
|
|
|
|
return `echo $tmpstdin`;
|
|
|
|
}
|
|
|
|
|
|
|
|
return $tmpstdin;
|
|
|
|
}
|
2005-01-31 08:53:51 -06:00
|
|
|
|
|
|
|
sub prepareScriptFile()
|
|
|
|
{
|
|
|
|
my $inputFile = shift;
|
|
|
|
my $outputFile = shift;
|
|
|
|
# shell mode 1 = sh
|
|
|
|
# 2 = csh
|
|
|
|
my $shellMode = shift;
|
|
|
|
|
2005-03-29 05:03:00 -06:00
|
|
|
open ( FILEIN, "$main::sdkpath/$inputFile" ) || die "\nERROR: could not open '$main::sdkpath/$inputFile' for reading";
|
|
|
|
open ( FILEOUT, ">$main::sdkpath/$outputFile" ) || die "\nERROR: could not open '$main::sdkpath/$outputFile' for writing";
|
2005-01-31 08:53:51 -06:00
|
|
|
|
|
|
|
while ( <FILEIN> )
|
|
|
|
{
|
|
|
|
$_ =~ s#\@OO_SDK_NAME\@#$main::OO_SDK_NAME#go;
|
|
|
|
$_ =~ s#\@OO_SDK_HOME\@#$main::OO_SDK_HOME#go;
|
|
|
|
$_ =~ s#\@OFFICE_HOME\@#$main::OFFICE_HOME#go;
|
2005-06-17 03:37:25 -05:00
|
|
|
$_ =~ s#\@OO_SDK_URE_HOME\@#$main::OO_SDK_URE_HOME#go;
|
2005-01-31 08:53:51 -06:00
|
|
|
$_ =~ s#\@OO_SDK_MAKE_HOME\@#$main::OO_SDK_MAKE_HOME#go;
|
|
|
|
$_ =~ s#\@OO_SDK_ZIP_HOME\@#$main::OO_SDK_ZIP_HOME#go;
|
|
|
|
$_ =~ s#\@OO_SDK_CPP_HOME\@#$main::OO_SDK_CPP_HOME#go;
|
|
|
|
$_ =~ s#\@OO_SDK_CC_55_OR_HIGHER\@#$main::OO_SDK_CC_55_OR_HIGHER#go;
|
|
|
|
$_ =~ s#\@OO_SDK_JAVA_HOME\@#$main::OO_SDK_JAVA_HOME#go;
|
|
|
|
$_ =~ s#\@SDK_AUTO_DEPLOYMENT\@#$main::SDK_AUTO_DEPLOYMENT#go;
|
|
|
|
$_ =~ s#\@OO_SDK_OUTPUT_DIR\@#$main::OO_SDK_OUTPUT_DIR#go;
|
|
|
|
|
|
|
|
print FILEOUT $_;
|
|
|
|
}
|
|
|
|
|
|
|
|
close FILEIN;
|
|
|
|
close FILEOUT;
|
|
|
|
}
|