1122c3632SJürgen Schmidt#************************************************************** 2985d02c7SAriel Constenla-Haile# 3122c3632SJürgen Schmidt# Licensed to the Apache Software Foundation (ASF) under one 4122c3632SJürgen Schmidt# or more contributor license agreements. See the NOTICE file 5122c3632SJürgen Schmidt# distributed with this work for additional information 6122c3632SJürgen Schmidt# regarding copyright ownership. The ASF licenses this file 7122c3632SJürgen Schmidt# to you under the Apache License, Version 2.0 (the 8122c3632SJürgen Schmidt# "License"); you may not use this file except in compliance 9122c3632SJürgen Schmidt# with the License. You may obtain a copy of the License at 10985d02c7SAriel Constenla-Haile# 11122c3632SJürgen Schmidt# http://www.apache.org/licenses/LICENSE-2.0 12985d02c7SAriel Constenla-Haile# 13122c3632SJürgen Schmidt# Unless required by applicable law or agreed to in writing, 14122c3632SJürgen Schmidt# software distributed under the License is distributed on an 15122c3632SJürgen Schmidt# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16122c3632SJürgen Schmidt# KIND, either express or implied. See the License for the 17122c3632SJürgen Schmidt# specific language governing permissions and limitations 18122c3632SJürgen Schmidt# under the License. 19985d02c7SAriel Constenla-Haile# 20122c3632SJürgen Schmidt#************************************************************** 21122c3632SJürgen Schmidt 22cdf0e10cSrcweir# 23cdf0e10cSrcweir# configure.pl - a perl script to set a minimal environment for the SDK. 24cdf0e10cSrcweir# 25cdf0e10cSrcweir# Copyright 2000, 2010 Oracle and/or its affiliates. 26cdf0e10cSrcweir# 27cdf0e10cSrcweir 28cdf0e10cSrcweiruse IO::File; 29cdf0e10cSrcweiruse File::Basename; 30cdf0e10cSrcweir 31cdf0e10cSrcweir$main::hostname= $ARGV[0]; 32cdf0e10cSrcweir$main::sdkpath= $ARGV[1]; 33cdf0e10cSrcweir$main::OO_SDK_NAME= $ARGV[2]; 34cdf0e10cSrcweir 35cdf0e10cSrcweir$main::OO_MAJORVERSION=$main::OO_SDK_NAME; 36cdf0e10cSrcweir$main::OO_MINORVERSION=$main::OO_SDK_NAME; 37cdf0e10cSrcweir$main::OO_MAJORVERSION =~ s#[^\d]+(\d).(\d).+#$1#go; 38cdf0e10cSrcweir$main::OO_MINORVERSION =~ s#[^\d]+(\d).(\d).+#$2#go; 39cdf0e10cSrcweir 40cdf0e10cSrcweir$main::OO_SDK_CONFIG_HOME= "$ENV{HOME}/$main::OO_SDK_NAME"; 41cdf0e10cSrcweir 42cdf0e10cSrcweir$main::operatingSystem = `$main::sdkpath/config.guess | cut -d"-" -f3,4`; 43cdf0e10cSrcweirchomp ($main::operatingSystem); 44cdf0e10cSrcweir 45cdf0e10cSrcweir$main::OO_SDK_HOME = $main::sdkpath; 46cdf0e10cSrcweir$main::OO_SDK_HOME_SUGGESTION = $main::sdkpath; 47cdf0e10cSrcweir 48cdf0e10cSrcweir$main::OFFICE_HOME = ""; 49cdf0e10cSrcweir 50b3ba5bc7SJürgen Schmidt#$main::OFFICE_BASE_HOME = substr($main::sdkpath, 0, rindex($main::sdkpath, "/sdk")); 51cdf0e10cSrcweir 52cdf0e10cSrcweir$main::OO_SDK_MAKE_HOME = ""; 53cdf0e10cSrcweir$main::makeName = "make"; 54cdf0e10cSrcweirif ( $main::operatingSystem =~ m/solaris/ || 55cdf0e10cSrcweir $main::operatingSystem =~ m/freebsd/ ) 56cdf0e10cSrcweir{ 57cdf0e10cSrcweir $main::makeName = "gmake"; 58cdf0e10cSrcweir} 59cdf0e10cSrcweir$main::OO_SDK_MAKE_HOME_SUGGESTION = searchprog($main::makeName); 60cdf0e10cSrcweir$main::makeVersion = "3.79.1"; 61cdf0e10cSrcweir$main::correctVersion = 0; 62cdf0e10cSrcweir 63cdf0e10cSrcweir$main::OO_SDK_ZIP_HOME = ""; 64cdf0e10cSrcweir$main::OO_SDK_ZIP_HOME_SUGGESTION = searchprog("zip"); 65cdf0e10cSrcweir$main::zipVersion = "2.3"; 66cdf0e10cSrcweir 67985d02c7SAriel Constenla-Haile$main::OO_SDK_CAT_HOME = ""; 68985d02c7SAriel Constenla-Haile$main::OO_SDK_CAT_HOME_SUGGESTION = searchprog("cat"); 69985d02c7SAriel Constenla-Haile# TODO cat version 70985d02c7SAriel Constenla-Haile# $main::catVersion = ""; 71985d02c7SAriel Constenla-Haile 72985d02c7SAriel Constenla-Haile$main::OO_SDK_SED_HOME = ""; 73985d02c7SAriel Constenla-Haile$main::OO_SDK_SED_HOME_SUGGESTION = searchprog("sed"); 74985d02c7SAriel Constenla-Haile# TODO sed version 75985d02c7SAriel Constenla-Haile# $main::sedVersion = ""; 76985d02c7SAriel Constenla-Haile 77cdf0e10cSrcweir$main::OO_SDK_CPP_HOME = ""; 78cdf0e10cSrcweir$main::cppName = "gcc"; 79cdf0e10cSrcweir$main::cppVersion = "4.0.1"; 80cdf0e10cSrcweirif ( $main::operatingSystem =~ m/solaris/ ) 81cdf0e10cSrcweir{ 82cdf0e10cSrcweir $main::cppName = "CC"; 83cdf0e10cSrcweir $main::cppVersion = "5.2"; 84cdf0e10cSrcweir} 85cdf0e10cSrcweir$main::OO_SDK_CC_55_OR_HIGHER = ""; 86cdf0e10cSrcweir$main::OO_SDK_CPP_HOME_SUGGESTION = searchprog($main::cppName); 87cdf0e10cSrcweir 88cdf0e10cSrcweir$main::OO_SDK_JAVA_HOME = ""; 89cdf0e10cSrcweir$main::OO_SDK_JAVA_BIN_DIR = "bin"; 90cdf0e10cSrcweirif ( $main::operatingSystem =~ m/darwin/ ) 91cdf0e10cSrcweir{ 92cdf0e10cSrcweir $main::OO_SDK_JAVA_BIN_DIR="Commands"; 93cdf0e10cSrcweir} 94cdf0e10cSrcweir$main::OO_SDK_JAVA_HOME_SUGGESTION = searchprog("javac"); 95cdf0e10cSrcweir$main::javaVersion = "1.5.0_01"; 96cdf0e10cSrcweir 97*ed9d7cbeSJürgen Schmidt$main::OO_SDK_BOOST_HOME_SUGGESTION = ""; 98*ed9d7cbeSJürgen Schmidt$main::boostVersion = "1.48.0"; 99*ed9d7cbeSJürgen Schmidt$main::skipBoostDir = 0; 100*ed9d7cbeSJürgen Schmidt 101cdf0e10cSrcweir$main::SDK_AUTO_DEPLOYMENT = ""; 102cdf0e10cSrcweir$main::SDK_AUTO_DEPLOYMENT_SUGGESTION = "YES"; 103cdf0e10cSrcweir 104cdf0e10cSrcweir$main::OO_SDK_OUTPUT_DIR_SUGGESTION = "$ENV{HOME}"; 105cdf0e10cSrcweir$main::OO_SDK_OUTPUT_DIR = ""; 106cdf0e10cSrcweir$main::skipOutputDir = 0; 107cdf0e10cSrcweir 108cdf0e10cSrcweir$main::return = 0; 109cdf0e10cSrcweir 110b3ba5bc7SJürgen Schmidtif ( $main::operatingSystem =~ m/darwin/ ) 111cdf0e10cSrcweir{ 112cdf0e10cSrcweir# used for a SDK as part of the office installation 113b3ba5bc7SJürgen Schmidt# $main::OFFICE_HOME = `cd $main::sdkpath/../../.. && pwd`; 114b3ba5bc7SJürgen Schmidt# chomp($main::OFFICE_HOME); 115b3ba5bc7SJürgen Schmidt# print " Used Office = $main::OFFICE_HOME\n"; 116b3ba5bc7SJürgen Schmidt print " Used SDK = $main::OO_SDK_HOME\n\n"; 117b3ba5bc7SJürgen Schmidt 118b3ba5bc7SJürgen Schmidt $main::OFFICE_HOME_SUGGESTION = searchMacOffice(); 119b3ba5bc7SJürgen Schmidt while ( (! -d "$main::OFFICE_HOME" ) || 120b3ba5bc7SJürgen Schmidt ((-d "$main::OFFICE_HOME") && (! -d "$main::OFFICE_HOME/Contents/MacOS")) ) 121b3ba5bc7SJürgen Schmidt { 122b3ba5bc7SJürgen Schmidt print " Enter the Office installation directory [$main::OFFICE_HOME_SUGGESTION]: "; 123b3ba5bc7SJürgen Schmidt $main::OFFICE_HOME = readStdIn(); 124b3ba5bc7SJürgen Schmidt chop($main::OFFICE_HOME); 125b3ba5bc7SJürgen Schmidt if ( $main::OFFICE_HOME eq "" ) 126b3ba5bc7SJürgen Schmidt { 127b3ba5bc7SJürgen Schmidt $main::OFFICE_HOME = $main::OFFICE_HOME_SUGGESTION; 128b3ba5bc7SJürgen Schmidt } 129b3ba5bc7SJürgen Schmidt 130b3ba5bc7SJürgen Schmidt if ( ! -d "$main::OFFICE_HOME" ) 131b3ba5bc7SJürgen Schmidt { 132b3ba5bc7SJürgen Schmidt $main::OFFICE_HOME = ""; 133b3ba5bc7SJürgen Schmidt print " Error: An office installation is required, please specify the path to a valid installation.\n"; 134b3ba5bc7SJürgen Schmidt } 135b3ba5bc7SJürgen Schmidt 136b3ba5bc7SJürgen Schmidt# $main::OFFICE_BASE_HOME = "$main::OFFICE_HOME/Contents"; 137b3ba5bc7SJürgen Schmidt } 138b3ba5bc7SJürgen Schmidt} else 139b3ba5bc7SJürgen Schmidt{ 140b3ba5bc7SJürgen Schmidt $main::OFFICE_HOME_SUGGESTION = searchoffice(); 141b3ba5bc7SJürgen Schmidt 142b3ba5bc7SJürgen Schmidt if ( $main::OFFICE_HOME_SUGGESTION eq "" ) { 143b3ba5bc7SJürgen Schmidt # prepare Office path 144b3ba5bc7SJürgen Schmidt $main::OFFICE_HOME_SUGGESTION = searchprog("soffice"); 145b3ba5bc7SJürgen Schmidt } 146b3ba5bc7SJürgen Schmidt 147b3ba5bc7SJürgen Schmidt if ( ! $main::OFFICE_HOME_SUGGESTION eq "" ) 148b3ba5bc7SJürgen Schmidt { 149b3ba5bc7SJürgen Schmidt my $tmpOffice = readlink "$main::OFFICE_HOME_SUGGESTION/soffice"; 150b3ba5bc7SJürgen Schmidt 151b3ba5bc7SJürgen Schmidt if ( $tmpOffice eq "" ) 152b3ba5bc7SJürgen Schmidt { 153b3ba5bc7SJürgen Schmidt $tmpOffice = "$main::OFFICE_HOME_SUGGESTION/soffice"; 154b3ba5bc7SJürgen Schmidt } 155b3ba5bc7SJürgen Schmidt 156b3ba5bc7SJürgen Schmidt my $offset = rindex($tmpOffice, "/program/soffice"); 157b3ba5bc7SJürgen Schmidt if ( $offset != -1 ) 158b3ba5bc7SJürgen Schmidt { 159b3ba5bc7SJürgen Schmidt $main::OFFICE_HOME_SUGGESTION = substr($tmpOffice, 0, $offset); 160cdf0e10cSrcweir } else 161cdf0e10cSrcweir { 162b3ba5bc7SJürgen Schmidt $offset = rindex($tmpOffice, "/soffice"); 163b3ba5bc7SJürgen Schmidt if ( $offset != -1 ) 164b3ba5bc7SJürgen Schmidt { 165b3ba5bc7SJürgen Schmidt $main::OFFICE_HOME_SUGGESTION = substr($tmpOffice, 0, $offset); 166b3ba5bc7SJürgen Schmidt } else 167b3ba5bc7SJürgen Schmidt { 168b3ba5bc7SJürgen Schmidt $main::OFFICE_HOME_SUGGESTION = ""; 169b3ba5bc7SJürgen Schmidt } 170b3ba5bc7SJürgen Schmidt } 171b3ba5bc7SJürgen Schmidt } 172b3ba5bc7SJürgen Schmidt 173b3ba5bc7SJürgen Schmidt while ( (! -d "$main::OFFICE_HOME" ) || 174b3ba5bc7SJürgen Schmidt ((-d "$main::OFFICE_HOME") && (! -d "$main::OFFICE_HOME/program")) ) 175b3ba5bc7SJürgen Schmidt { 176b3ba5bc7SJürgen Schmidt print " Enter the Office installation directory [$main::OFFICE_HOME_SUGGESTION]: "; 177b3ba5bc7SJürgen Schmidt $main::OFFICE_HOME = readStdIn(); 178b3ba5bc7SJürgen Schmidt chop($main::OFFICE_HOME); 179b3ba5bc7SJürgen Schmidt if ( $main::OFFICE_HOME eq "" ) 180b3ba5bc7SJürgen Schmidt { 181b3ba5bc7SJürgen Schmidt $main::OFFICE_HOME = $main::OFFICE_HOME_SUGGESTION; 182b3ba5bc7SJürgen Schmidt } 183b3ba5bc7SJürgen Schmidt 184b3ba5bc7SJürgen Schmidt if ( ! -d "$main::OFFICE_HOME" ) 185b3ba5bc7SJürgen Schmidt { 186b3ba5bc7SJürgen Schmidt $main::OFFICE_HOME = ""; 187b3ba5bc7SJürgen Schmidt print " Error: An office installation is required, please specify the path to a valid installation.\n"; 188b3ba5bc7SJürgen Schmidt } else 189b3ba5bc7SJürgen Schmidt { 190b3ba5bc7SJürgen Schmidt # special work for a network installation, no prgram directory but a link to the soffice binary 191b3ba5bc7SJürgen Schmidt if ( (! -d "$main::OFFICE_HOME/program") && (-e "$main::OFFICE_HOME/soffice") ) 192b3ba5bc7SJürgen Schmidt { 193b3ba5bc7SJürgen Schmidt my $soserver = `ls -l $OFFICE_HOME_SUGGESTION/soffice | sed -n 's/.* -> //p'`; 194b3ba5bc7SJürgen Schmidt $soserver= substr($soserver, 0, rindex($soserver, "program") - 1); 195cdf0e10cSrcweir 196b3ba5bc7SJürgen Schmidt if ( ! -d $soserver ) 197cdf0e10cSrcweir { 198b3ba5bc7SJürgen Schmidt $main::OFFICE_HOME = ""; 199b3ba5bc7SJürgen Schmidt print " Error: An office installation is required, please specify the path to a valid installation.\n"; 200b3ba5bc7SJürgen Schmidt } else 201b3ba5bc7SJürgen Schmidt { 202b3ba5bc7SJürgen Schmidt $main::OFFICE_HOME = $soserver; 203cdf0e10cSrcweir } 204b3ba5bc7SJürgen Schmidt } 205cdf0e10cSrcweir } 206cdf0e10cSrcweir } 207cdf0e10cSrcweir} 208cdf0e10cSrcweir 209b3ba5bc7SJürgen Schmidt 210cdf0e10cSrcweir# prepare GNU make path 211cdf0e10cSrcweirwhile ( (!$main::correctVersion) && 212cdf0e10cSrcweir ((! -d "$main::OO_SDK_MAKE_HOME" ) || 213cdf0e10cSrcweir ((-d "$main::OO_SDK_MAKE_HOME") && (! -e "$main::OO_SDK_MAKE_HOME/$main::makeName"))) ) 214cdf0e10cSrcweir{ 215cdf0e10cSrcweir print " Enter GNU make ($main::makeVersion or higher) tools directory [$main::OO_SDK_MAKE_HOME_SUGGESTION]: "; 216cdf0e10cSrcweir $main::OO_SDK_MAKE_HOME = readStdIn(); 217cdf0e10cSrcweir chop($main::OO_SDK_MAKE_HOME); 218cdf0e10cSrcweir if ( $main::OO_SDK_MAKE_HOME eq "" ) 219cdf0e10cSrcweir { 220cdf0e10cSrcweir $main::OO_SDK_MAKE_HOME = $main::OO_SDK_MAKE_HOME_SUGGESTION; 221cdf0e10cSrcweir } 222cdf0e10cSrcweir if ( (! -d "$main::OO_SDK_MAKE_HOME") || 223cdf0e10cSrcweir ((-d "$main::OO_SDK_MAKE_HOME") && (! -e "$main::OO_SDK_MAKE_HOME/$main::makeName")) ) 224cdf0e10cSrcweir { 225cdf0e10cSrcweir $main::OO_SDK_MAKE_HOME = ""; 226cdf0e10cSrcweir print " Error: GNU make is required, please specify a GNU make tools directory.\n"; 227cdf0e10cSrcweir } else 228cdf0e10cSrcweir { 229cdf0e10cSrcweir #check version 230cdf0e10cSrcweir my $testVersion = `$OO_SDK_MAKE_HOME/$main::makeName --version`; 231cdf0e10cSrcweir if ( $testVersion eq "") 232cdf0e10cSrcweir { 233cdf0e10cSrcweir print " Set the environment variable OO_SDK_MAKE_HOME to your GNU build tools directory.\n"; 234cdf0e10cSrcweir print " GNU make version $main::makeVersion can be obtained at ftp://ftp.gnu.org/gnu/make/\n"; 235cdf0e10cSrcweir } else 236cdf0e10cSrcweir { 237cdf0e10cSrcweir if ($testVersion =~ m#((\d+\.)+\d+)# ) 238cdf0e10cSrcweir { 239cdf0e10cSrcweir $testVersion = $1; 240cdf0e10cSrcweir } 241cdf0e10cSrcweir $main::correctVersion = testVersion($main::makeVersion, $testVersion, "$main::OO_SDK_MAKE_HOME/$main::makeName", 1); 242cdf0e10cSrcweir if ( !$main::correctVersion ) 243cdf0e10cSrcweir { 244cdf0e10cSrcweir print " The '$main::makeName' command found at '$main::OO_SDK_MAKE_HOME' has a wrong version\n"; 245cdf0e10cSrcweir $main::OO_SDK_MAKE_HOME = ""; 246cdf0e10cSrcweir } 247cdf0e10cSrcweir } 248cdf0e10cSrcweir } 249cdf0e10cSrcweir} 250cdf0e10cSrcweir 251cdf0e10cSrcweir# prepare zip path 252cdf0e10cSrcweir$main::correctVersion = 0; 253cdf0e10cSrcweirwhile ( (!$main::correctVersion) && 254cdf0e10cSrcweir ((! -d "$main::OO_SDK_ZIP_HOME" ) || 255cdf0e10cSrcweir ((-d "$main::OO_SDK_ZIP_HOME") && (! -e "$main::OO_SDK_ZIP_HOME/zip"))) ) 256cdf0e10cSrcweir{ 257cdf0e10cSrcweir print " Enter zip ($main::zipVersion or higher) tool directory [$main::OO_SDK_ZIP_HOME_SUGGESTION]: "; 258cdf0e10cSrcweir $main::OO_SDK_ZIP_HOME = readStdIn(); 259cdf0e10cSrcweir chop($main::OO_SDK_ZIP_HOME); 260cdf0e10cSrcweir if ( $main::OO_SDK_ZIP_HOME eq "" ) 261cdf0e10cSrcweir { 262cdf0e10cSrcweir $main::OO_SDK_ZIP_HOME = $main::OO_SDK_ZIP_HOME_SUGGESTION; 263cdf0e10cSrcweir } 264cdf0e10cSrcweir if ( (! -d "$main::OO_SDK_ZIP_HOME") || 265cdf0e10cSrcweir ((-d "$main::OO_SDK_ZIP_HOME") && (! -e "$main::OO_SDK_ZIP_HOME/zip")) ) 266cdf0e10cSrcweir { 267cdf0e10cSrcweir $main::OO_SDK_ZIP_HOME = ""; 268cdf0e10cSrcweir print " Error: zip tool is required, please specify a zip tool directory.\n"; 269cdf0e10cSrcweir } else 270cdf0e10cSrcweir { 271cdf0e10cSrcweir #check version 272cdf0e10cSrcweir my $testVersion = `$OO_SDK_ZIP_HOME/zip -h 2>&1 | egrep Zip | head -n 1`; 273cdf0e10cSrcweir $testVersion =~ s#Zip ([\d.]+) .*#$1#go; 274cdf0e10cSrcweir if ( $testVersion eq "") 275cdf0e10cSrcweir { 276cdf0e10cSrcweir print " Set the environment variable OO_SDK_ZIP_HOME to your zip tool directory.\n"; 277cdf0e10cSrcweir print " zip version $main::zipVersion can be obtained at ftp://www.info-zip.org/\n"; 278cdf0e10cSrcweir } else 279cdf0e10cSrcweir { 280cdf0e10cSrcweir if ($testVersion =~ m#((\d+\.)+\d+)# ) 281cdf0e10cSrcweir { 282cdf0e10cSrcweir $testVersion = $1; 283cdf0e10cSrcweir } 284cdf0e10cSrcweir $main::correctVersion = testVersion($main::zipVersion, $testVersion, "$main::OO_SDK_MAKE_HOME/zip", 1); 285cdf0e10cSrcweir if ( !$main::correctVersion ) 286cdf0e10cSrcweir { 287cdf0e10cSrcweir print " The 'zip' command found at '$main::OO_SDK_ZIP_HOME' has a wrong version\n"; 288cdf0e10cSrcweir $main::OO_SDK_ZIP_HOME = ""; 289cdf0e10cSrcweir } 290cdf0e10cSrcweir } 291cdf0e10cSrcweir } 292cdf0e10cSrcweir} 293cdf0e10cSrcweir 294985d02c7SAriel Constenla-Haile# prepare cat path 295985d02c7SAriel Constenla-Haile$main::correctVersion = 0; 296985d02c7SAriel Constenla-Hailewhile ( (!$main::correctVersion) && 297985d02c7SAriel Constenla-Haile ((! -d "$main::OO_SDK_CAT_HOME" ) || 298985d02c7SAriel Constenla-Haile ((-d "$main::OO_SDK_CAT_HOME") && (! -e "$main::OO_SDK_CAT_HOME/cat"))) ) 299985d02c7SAriel Constenla-Haile{ 300985d02c7SAriel Constenla-Haile print " Enter cat tool directory [$main::OO_SDK_CAT_HOME_SUGGESTION]: "; 301985d02c7SAriel Constenla-Haile $main::OO_SDK_CAT_HOME = readStdIn(); 302985d02c7SAriel Constenla-Haile chop($main::OO_SDK_CAT_HOME); 303985d02c7SAriel Constenla-Haile if ( $main::OO_SDK_CAT_HOME eq "" ) 304985d02c7SAriel Constenla-Haile { 305985d02c7SAriel Constenla-Haile $main::OO_SDK_CAT_HOME = $main::OO_SDK_CAT_HOME_SUGGESTION; 306985d02c7SAriel Constenla-Haile } 307985d02c7SAriel Constenla-Haile if ( (! -d "$main::OO_SDK_CAT_HOME") || 308985d02c7SAriel Constenla-Haile ((-d "$main::OO_SDK_CAT_HOME") && (! -e "$main::OO_SDK_CAT_HOME/cat")) ) 309985d02c7SAriel Constenla-Haile { 310985d02c7SAriel Constenla-Haile $main::OO_SDK_CAT_HOME = ""; 311985d02c7SAriel Constenla-Haile print " Error: cat tool is required, please specify a cat tool directory.\n"; 312985d02c7SAriel Constenla-Haile } 313985d02c7SAriel Constenla-Haile # else ... 314985d02c7SAriel Constenla-Haile # TODO check version 315985d02c7SAriel Constenla-Haile # NOTE: only Linux cat understands --version 316985d02c7SAriel Constenla-Haile} 317985d02c7SAriel Constenla-Haile 318985d02c7SAriel Constenla-Haile# prepare sed path 319985d02c7SAriel Constenla-Haile$main::correctVersion = 0; 320985d02c7SAriel Constenla-Hailewhile ( (!$main::correctVersion) && 321985d02c7SAriel Constenla-Haile ((! -d "$main::OO_SDK_SED_HOME" ) || 322985d02c7SAriel Constenla-Haile ((-d "$main::OO_SDK_SED_HOME") && (! -e "$main::OO_SDK_SED_HOME/sed"))) ) 323985d02c7SAriel Constenla-Haile{ 324985d02c7SAriel Constenla-Haile print " Enter sed tool directory [$main::OO_SDK_SED_HOME_SUGGESTION]: "; 325985d02c7SAriel Constenla-Haile $main::OO_SDK_SED_HOME = readStdIn(); 326985d02c7SAriel Constenla-Haile chop($main::OO_SDK_SED_HOME); 327985d02c7SAriel Constenla-Haile if ( $main::OO_SDK_SED_HOME eq "" ) 328985d02c7SAriel Constenla-Haile { 329985d02c7SAriel Constenla-Haile $main::OO_SDK_SED_HOME = $main::OO_SDK_SED_HOME_SUGGESTION; 330985d02c7SAriel Constenla-Haile } 331985d02c7SAriel Constenla-Haile if ( (! -d "$main::OO_SDK_SED_HOME") || 332985d02c7SAriel Constenla-Haile ((-d "$main::OO_SDK_SED_HOME") && (! -e "$main::OO_SDK_SED_HOME/sed")) ) 333985d02c7SAriel Constenla-Haile { 334985d02c7SAriel Constenla-Haile $main::OO_SDK_SED_HOME = ""; 335985d02c7SAriel Constenla-Haile print " Error: sed tool is required, please specify a sed tool directory.\n"; 336985d02c7SAriel Constenla-Haile } 337985d02c7SAriel Constenla-Haile # else ... 338985d02c7SAriel Constenla-Haile # TODO check version 339985d02c7SAriel Constenla-Haile # NOTE: only Linux sed understands --version 340985d02c7SAriel Constenla-Haile} 341985d02c7SAriel Constenla-Haile 342cdf0e10cSrcweir# prepare C++ compiler path 343cdf0e10cSrcweir$main::correctVersion = 0; 344cdf0e10cSrcweirwhile ( (!$main::correctVersion) && 345cdf0e10cSrcweir ((! -d "$main::OO_SDK_CPP_HOME" ) || 346cdf0e10cSrcweir ((-d "$main::OO_SDK_CPP_HOME") && (! -e "$main::OO_SDK_CPP_HOME/$main::cpp"))) ) 347cdf0e10cSrcweir{ 348cdf0e10cSrcweir print " C++ compilers where for example a language binding exist:\n"; 349cdf0e10cSrcweir print " - Solaris, Sun WorkShop 6 update 1 C++ 5.2 2000/09/11 or higher\n"; 350cdf0e10cSrcweir print " - Linux, GNU C++ compiler, gcc version 4.0.1 or higher\n"; 351cdf0e10cSrcweir print " - MacOS, GNU C++ compiler, gcc version 4.0.1 or higher\n"; 352cdf0e10cSrcweir print " Enter the directory of the C++ compiler, the directory\n"; 353cdf0e10cSrcweir print " where the compiler is located (optional) [$main::OO_SDK_CPP_HOME_SUGGESTION]: "; 354cdf0e10cSrcweir 355cdf0e10cSrcweir $main::OO_SDK_CPP_HOME = readStdIn(); 356cdf0e10cSrcweir chop($main::OO_SDK_CPP_HOME); 357cdf0e10cSrcweir if ( $main::OO_SDK_CPP_HOME eq "" ) 358cdf0e10cSrcweir { 359cdf0e10cSrcweir $main::OO_SDK_CPP_HOME = $main::OO_SDK_CPP_HOME_SUGGESTION; 360cdf0e10cSrcweir } 361cdf0e10cSrcweir 362cdf0e10cSrcweir if ( ! $main::OO_SDK_CPP_HOME eq "" ) 363cdf0e10cSrcweir { 364cdf0e10cSrcweir if ( (! -d "$main::OO_SDK_CPP_HOME") || 365cdf0e10cSrcweir ((-d "$main::OO_SDK_CPP_HOME") && (! -e "$main::OO_SDK_CPP_HOME/$main::cppName")) ) 366cdf0e10cSrcweir { 367cdf0e10cSrcweir print " Error: Could not find directory '$main::OO_SDK_CPP_HOME'.\n"; 368cdf0e10cSrcweir if ( skipChoice("C++ compiler") == 1 ) 369cdf0e10cSrcweir { 370cdf0e10cSrcweir $main::correctVersion = 1; 371cdf0e10cSrcweir } 372cdf0e10cSrcweir $main::OO_SDK_CPP_HOME = ""; 373cdf0e10cSrcweir } else 374cdf0e10cSrcweir { 375cdf0e10cSrcweir #check version 376cdf0e10cSrcweir if ( $main::cppName eq "gcc" ) 377cdf0e10cSrcweir { 378cdf0e10cSrcweir my $testVersion = `$OO_SDK_CPP_HOME/$main::cppName -dumpversion`; 379cdf0e10cSrcweir if ( $testVersion eq "") 380cdf0e10cSrcweir { 381cdf0e10cSrcweir print " The '$main::cppName' command found at $main::OO_SDK_CPP_HOME/$main::cppName is not a "; 382cdf0e10cSrcweir print " GNU compiler.\nSet the environment variable OO_SDK_CPP_HOME to your GNU build tools "; 383cdf0e10cSrcweir print " directory.\nA GNU compiler version $main::cppVersion can be obtained at "; 384cdf0e10cSrcweir print " ftp://ftp.gnu.org/gnu/gcc/\n"; 385cdf0e10cSrcweir } else 386cdf0e10cSrcweir { 387cdf0e10cSrcweir $main::correctVersion = testVersion($main::cppVersion, $testVersion, "$main::OO_SDK_CPP_HOME/$main::cppName", 1); 388cdf0e10cSrcweir if ( !$main::correctVersion ) 389cdf0e10cSrcweir { 390cdf0e10cSrcweir print " The '$main::cppName' command found at '$main::OO_SDK_CPP_HOME' has a wrong version\n"; 391cdf0e10cSrcweir if ( skipChoice("C++ compiler") == 1 ) 392cdf0e10cSrcweir { 393cdf0e10cSrcweir $main::correctVersion = 1; 394cdf0e10cSrcweir } 395cdf0e10cSrcweir 396cdf0e10cSrcweir $main::OO_SDK_CPP_HOME = ""; 397cdf0e10cSrcweir } 398cdf0e10cSrcweir } 399cdf0e10cSrcweir } else 400cdf0e10cSrcweir { 401cdf0e10cSrcweir # for Solaris we have to check the version too 402cdf0e10cSrcweir open(FILE, "$OO_SDK_CPP_HOME/$main::cppName -V 2>&1 |"); 403cdf0e10cSrcweir my @lines = <FILE>; 404cdf0e10cSrcweir my $testVersion = $lines[0]; 405cdf0e10cSrcweir if ( $testVersion eq "") 406cdf0e10cSrcweir { 407cdf0e10cSrcweir print " The '$main::cppName' command found at $main::OO_SDK_CPP_HOME/$main::cppName is not a "; 408cdf0e10cSrcweir print " Solaris C++ compiler.\nSet the environment variable OO_SDK_CPP_HOME to your Solaris C++ compiler directory.\n"; 409cdf0e10cSrcweir } else 410cdf0e10cSrcweir { 411cdf0e10cSrcweir if ($testVersion =~ m#((\d+\.)+\d+)# ) 412cdf0e10cSrcweir { 413cdf0e10cSrcweir $testVersion = $1; 414cdf0e10cSrcweir } 415cdf0e10cSrcweir $main::correctVersion = testVersion($main::cppVersion, $testVersion, "$main::OO_SDK_CPP_HOME/$main::cppName", 1); 416cdf0e10cSrcweir if ( !$main::correctVersion ) 417cdf0e10cSrcweir { 418cdf0e10cSrcweir print " The '$main::cppName' command found at '$main::OO_SDK_CPP_HOME' has a wrong version\n"; 419cdf0e10cSrcweir if ( skipChoice("C++ compiler") == 1 ) 420cdf0e10cSrcweir { 421cdf0e10cSrcweir $main::correctVersion = 1; 422cdf0e10cSrcweir } 423cdf0e10cSrcweir 424cdf0e10cSrcweir $main::OO_SDK_CPP_HOME = ""; 425cdf0e10cSrcweir } else { 426cdf0e10cSrcweir $main::correctVersion = testVersion("5.5", $testVersion, "$main::OO_SDK_CPP_HOME/$main::cppName", 2); 427cdf0e10cSrcweir if ( $main::correctVersion ) { 428cdf0e10cSrcweir $main::OO_SDK_CC_55_OR_HIGHER = $testVersion; 429cdf0e10cSrcweir } 430cdf0e10cSrcweir } 431cdf0e10cSrcweir } 432cdf0e10cSrcweir } 433cdf0e10cSrcweir } 434cdf0e10cSrcweir } else 435cdf0e10cSrcweir { 436cdf0e10cSrcweir # the C++ compiler is optional 437cdf0e10cSrcweir $main::correctVersion = 1; 438cdf0e10cSrcweir } 439cdf0e10cSrcweir} 440cdf0e10cSrcweir 441cdf0e10cSrcweir 442cdf0e10cSrcweir# prepare Java path 443cdf0e10cSrcweir$main::correctVersion = 0; 444cdf0e10cSrcweir 445cdf0e10cSrcweir# prepare Java suggestion (cut bin or Commands directory to be in the root of the Java SDK) 446cdf0e10cSrcweir$main::offset = rindex($main::OO_SDK_JAVA_HOME_SUGGESTION, "/$main::OO_SDK_JAVA_BIN_DIR"); 447cdf0e10cSrcweirif ( $main::offset != -1 ) 448cdf0e10cSrcweir{ 449cdf0e10cSrcweir $main::OO_SDK_JAVA_HOME_SUGGESTION = substr($main::OO_SDK_JAVA_HOME_SUGGESTION, 0, $main::offset); 450cdf0e10cSrcweir} 451cdf0e10cSrcweir 452cdf0e10cSrcweirwhile ( (!$main::correctVersion) && 453cdf0e10cSrcweir ((! -d "$main::OO_SDK_JAVA_HOME" ) || 454cdf0e10cSrcweir ((-d "$main::OO_SDK_JAVA_HOME") && (! -e "$main::OO_SDK_JAVA_HOME/$main::OO_SDK_JAVA_BIN_DIR/javac"))) ) 455cdf0e10cSrcweir{ 456cdf0e10cSrcweir print " Enter Java SDK (1.5, recommendation is 1.6 or higher) installation directory (optional) [$main::OO_SDK_JAVA_HOME_SUGGESTION]: "; 457cdf0e10cSrcweir $main::OO_SDK_JAVA_HOME = readStdIn(); 458cdf0e10cSrcweir chop($main::OO_SDK_JAVA_HOME); 459cdf0e10cSrcweir if ( $main::OO_SDK_JAVA_HOME eq "" ) 460cdf0e10cSrcweir { 461cdf0e10cSrcweir $main::OO_SDK_JAVA_HOME = $main::OO_SDK_JAVA_HOME_SUGGESTION; 462cdf0e10cSrcweir } 463cdf0e10cSrcweir if ( ! $main::OO_SDK_JAVA_HOME eq "" ) 464cdf0e10cSrcweir { 465cdf0e10cSrcweir if ( (! -d "$main::OO_SDK_JAVA_HOME") || 466cdf0e10cSrcweir ((-d "$main::OO_SDK_JAVA_HOME") && (! -e "$main::OO_SDK_JAVA_HOME/$main::OO_SDK_JAVA_BIN_DIR/javac")) ) 467cdf0e10cSrcweir { 468cdf0e10cSrcweir print " Error: Could not find directory '$main::OO_SDK_JAVA_HOME' or '$main::OO_SDK_JAVA_HOME/$main::OO_SDK_JAVA_BIN_DIR/javac'.\n"; 469cdf0e10cSrcweir if ( skipChoice("JAVA SDK") == 1 ) 470cdf0e10cSrcweir { 471cdf0e10cSrcweir $main::correctVersion = 1; 472cdf0e10cSrcweir } 473cdf0e10cSrcweir $main::OO_SDK_JAVA_HOME = ""; 474cdf0e10cSrcweir } else 475cdf0e10cSrcweir { 476cdf0e10cSrcweir #check version 477cdf0e10cSrcweir my $testVersion = `$main::OO_SDK_JAVA_HOME/$main::OO_SDK_JAVA_BIN_DIR/java -version 2>&1 | egrep "java version" | head -n 1 | sed -e 's#.*version "##' | sed -e 's#".*##'`; 478cdf0e10cSrcweir $testVersion =~ s#([^\n]+)\n#$1#go; 479cdf0e10cSrcweir 480cdf0e10cSrcweir $main::correctVersion = testVersion($main::javaVersion, $testVersion, "$main::OO_SDK_JAVA_HOME/$main::OO_SDK_JAVA_BIN_DIR/java", 1); 481cdf0e10cSrcweir if ( !$main::correctVersion ) 482cdf0e10cSrcweir { 483cdf0e10cSrcweir if ( skipChoice("JAVA SDK") == 1 ) 484cdf0e10cSrcweir { 485cdf0e10cSrcweir $main::correctVersion = 1; 486cdf0e10cSrcweir } 487cdf0e10cSrcweir $main::OO_SDK_JAVA_HOME = ""; 488cdf0e10cSrcweir } 489cdf0e10cSrcweir } 490cdf0e10cSrcweir }else 491cdf0e10cSrcweir { 492cdf0e10cSrcweir # the Java SDK is optional 493cdf0e10cSrcweir $main::correctVersion = 1; 494cdf0e10cSrcweir } 495cdf0e10cSrcweir} 496cdf0e10cSrcweir 497*ed9d7cbeSJürgen Schmidt# prepare boost directory (optional) 498*ed9d7cbeSJürgen Schmidtwhile ( (!$main::skipBoostDir) && 499*ed9d7cbeSJürgen Schmidt ((! -d "$main::OO_SDK_BOOST_HOME" ) || 500*ed9d7cbeSJürgen Schmidt ((-d "$main::OO_SDK_BOOST_HOME") && (! -e "$main::OO_SDK_BOOST_HOME/boost/tr1/unordered_map.hpp"))) ) 501*ed9d7cbeSJürgen Schmidt{ 502*ed9d7cbeSJürgen Schmidt 503*ed9d7cbeSJürgen Schmidt print " Enter boost directory [$main::OO_SDK_BOOST_HOME_SUGGESTION]: "; 504*ed9d7cbeSJürgen Schmidt $main::OO_SDK_BOOST_HOME = readStdIn(); 505*ed9d7cbeSJürgen Schmidt chop($main::OO_SDK_BOOST_HOME); 506*ed9d7cbeSJürgen Schmidt if ( $main::OO_SDK_BOOST_HOME eq "" ) 507*ed9d7cbeSJürgen Schmidt { 508*ed9d7cbeSJürgen Schmidt $main::OO_SDK_BOOST_HOME = $main::OO_SDK_BOOST_HOME_SUGGESTION; 509*ed9d7cbeSJürgen Schmidt } 510*ed9d7cbeSJürgen Schmidt if ( (! -d "$main::OO_SDK_BOOST_HOME") || 511*ed9d7cbeSJürgen Schmidt ((-d "$main::OO_SDK_BOOST_HOME") && (! -e "$main::OO_SDK_BOOST_HOME/boost/tr1/unordered_map.hpp")) ) 512*ed9d7cbeSJürgen Schmidt { 513*ed9d7cbeSJürgen Schmidt print " Error: boost couldn't be find or verified, please specify a boost directory.\n"; 514*ed9d7cbeSJürgen Schmidt if ( skipChoice("optional output directory") == 1 ) 515*ed9d7cbeSJürgen Schmidt { 516*ed9d7cbeSJürgen Schmidt $main::skipBoostDir = 1; 517*ed9d7cbeSJürgen Schmidt } 518*ed9d7cbeSJürgen Schmidt $main::OO_SDK_BOOST_HOME = ""; 519*ed9d7cbeSJürgen Schmidt } else 520*ed9d7cbeSJürgen Schmidt { 521*ed9d7cbeSJürgen Schmidt # the boost directory is optional 522*ed9d7cbeSJürgen Schmidt $main::skipBoostDir = 1; 523*ed9d7cbeSJürgen Schmidt } 524*ed9d7cbeSJürgen Schmidt} 525cdf0e10cSrcweir 526cdf0e10cSrcweir# prepare output directory (optional) 527cdf0e10cSrcweirwhile ( (!$main::skipOutputDir) && 528cdf0e10cSrcweir (! -d "$main::OO_SDK_OUTPUT_DIR") ) 529cdf0e10cSrcweir{ 530cdf0e10cSrcweir print " Default output directory is in your HOME directory.\n"; 531cdf0e10cSrcweir print " Enter an existent directory if you prefer a different output directory (optional) [$main::OO_SDK_OUTPUT_DIR_SUGGESTION]: "; 532cdf0e10cSrcweir 533cdf0e10cSrcweir $main::OO_SDK_OUTPUT_DIR = readStdIn(); 534cdf0e10cSrcweir 535cdf0e10cSrcweir chop($main::OO_SDK_OUTPUT_DIR); 536cdf0e10cSrcweir if ( $main::OO_SDK_OUTPUT_DIR eq "" ) 537cdf0e10cSrcweir { 538cdf0e10cSrcweir $main::OO_SDK_OUTPUT_DIR = $main::OO_SDK_OUTPUT_DIR_SUGGESTION; 539cdf0e10cSrcweir } 540cdf0e10cSrcweir if ( ! $main::OO_SDK_OUTPUT_DIR eq "" ) 541cdf0e10cSrcweir { 542cdf0e10cSrcweir if ( ! -d "$main::OO_SDK_OUTPUT_DIR" ) 543cdf0e10cSrcweir { 544cdf0e10cSrcweir print " Error: Could not find directory '$main::OO_SDK_OUTPUT_DIR'.\n"; 545cdf0e10cSrcweir if ( skipChoice("optional output directory") == 1 ) 546cdf0e10cSrcweir { 547cdf0e10cSrcweir $main::skipOutputDir = 1; 548cdf0e10cSrcweir } 549cdf0e10cSrcweir $main::OO_SDK_OUTPUT_DIR = ""; 550cdf0e10cSrcweir } 551cdf0e10cSrcweir } else 552cdf0e10cSrcweir { 553cdf0e10cSrcweir # the output directory is optional 554cdf0e10cSrcweir $main::skipOutputDir = 1; 555cdf0e10cSrcweir } 556cdf0e10cSrcweir} 557cdf0e10cSrcweir 558cdf0e10cSrcweir# prepare auto deployment 559b3ba5bc7SJürgen Schmidtwhile ( $main::SDK_AUTO_DEPLOYMENT eq "" || 560b3ba5bc7SJürgen Schmidt ((! $main::SDK_AUTO_DEPLOYMENT eq "YES") && 561b3ba5bc7SJürgen Schmidt (! $main::SDK_AUTO_DEPLOYMENT eq "NO")) ) 562cdf0e10cSrcweir{ 563b3ba5bc7SJürgen Schmidt print " Automatic deployment of UNO components (YES/NO) [$main::SDK_AUTO_DEPLOYMENT_SUGGESTION]: "; 564b3ba5bc7SJürgen Schmidt $main::SDK_AUTO_DEPLOYMENT = uc <STDIN>; 565b3ba5bc7SJürgen Schmidt chop($main::SDK_AUTO_DEPLOYMENT); 566b3ba5bc7SJürgen Schmidt if ( $main::SDK_AUTO_DEPLOYMENT eq "" ) 567cdf0e10cSrcweir { 568b3ba5bc7SJürgen Schmidt $main::SDK_AUTO_DEPLOYMENT = "YES"; 569cdf0e10cSrcweir } 570cdf0e10cSrcweir} 571cdf0e10cSrcweir 572985d02c7SAriel Constenla-HaileprepareScriptFile("setsdkenv_unix.sh.in", "setsdkenv_unix.sh"); 573cdf0e10cSrcweirchmod 0644, "$main::OO_SDK_CONFIG_HOME/$main::hostname/setsdkenv_unix.sh"; 574cdf0e10cSrcweir 575cdf0e10cSrcweirprint "\n"; 576cdf0e10cSrcweirprint " ************************************************************************\n"; 577cdf0e10cSrcweirprint " * ... your SDK environment has been prepared.\n"; 578cdf0e10cSrcweirprint " * For each time you want to use this configured SDK environment, you\n"; 579cdf0e10cSrcweirprint " * have to run the \"setsdkenv_unix\" script file!\n"; 580cdf0e10cSrcweirprint " * Alternatively can you source one of the scripts\n"; 581cdf0e10cSrcweirprint " * \"$main::OO_SDK_CONFIG_HOME/$main::hostname/setsdkenv_unix.sh\"\n"; 582cdf0e10cSrcweirprint " * to get an environment without starting a new shell.\n"; 583cdf0e10cSrcweirprint " ************************************************************************\n\n"; 584cdf0e10cSrcweir 585cdf0e10cSrcweirexit $return; 586cdf0e10cSrcweir 587cdf0e10cSrcweirsub skipChoice 588cdf0e10cSrcweir{ 589cdf0e10cSrcweir my $msg = shift; 590cdf0e10cSrcweir my $skip = ""; 591cdf0e10cSrcweir while ( !( $skip eq "yes" || $skip eq "no") ) 592cdf0e10cSrcweir { 593cdf0e10cSrcweir print " Do you want to skip the choice of the '$msg' (YES/NO): [YES] "; 594cdf0e10cSrcweir $skip = lc <STDIN>; 595cdf0e10cSrcweir chop($skip); 596cdf0e10cSrcweir if ( $skip eq "" ) { $skip = "yes"; } # default 597cdf0e10cSrcweir if ( $skip eq "yes" ) 598cdf0e10cSrcweir { 599cdf0e10cSrcweir return 1; 600cdf0e10cSrcweir } 601cdf0e10cSrcweir } 602cdf0e10cSrcweir return 0; 603cdf0e10cSrcweir} 604cdf0e10cSrcweir 605cdf0e10cSrcweirsub resolveLink 606cdf0e10cSrcweir{ 607cdf0e10cSrcweir my $base= shift; 608cdf0e10cSrcweir my $link= shift; 609cdf0e10cSrcweir 610cdf0e10cSrcweir my $resolvedpath = "$base/$link"; 611cdf0e10cSrcweir my $linktarget = readlink "$resolvedpath"; 612cdf0e10cSrcweir my $resolvedlink = ""; 613cdf0e10cSrcweir 614cdf0e10cSrcweir while ( $linktarget ne "") { 615cdf0e10cSrcweir 616cdf0e10cSrcweir if ( $linktarget =~ m/^\/.*/ ) 617cdf0e10cSrcweir { 618cdf0e10cSrcweir $resolvedpath = "$linktarget"; 619cdf0e10cSrcweir } else { 620cdf0e10cSrcweir $resolvedpath = `cd $base/$linktarget; pwd`; 621cdf0e10cSrcweir chop $resolvedpath; 622cdf0e10cSrcweir } 623cdf0e10cSrcweir $base = dirname("$resolvedpath"); 624cdf0e10cSrcweir 625cdf0e10cSrcweir $linktarget = readlink "$resolvedpath"; 626cdf0e10cSrcweir } 627cdf0e10cSrcweir 628cdf0e10cSrcweir $resolvedlink = `cd $resolvedpath; pwd`; 629cdf0e10cSrcweir chop $resolvedlink; 630cdf0e10cSrcweir return $resolvedlink; 631cdf0e10cSrcweir} 632cdf0e10cSrcweir 633cdf0e10cSrcweirsub searchprog 634cdf0e10cSrcweir{ 635cdf0e10cSrcweir my $_search= shift; 636cdf0e10cSrcweir my $tmpPath = `echo "\$PATH"`; 637cdf0e10cSrcweir my @pathList = split(":" , $tmpPath); 638cdf0e10cSrcweir my $progDir = ""; 639cdf0e10cSrcweir 640cdf0e10cSrcweir if ( $_search eq "javac" ) 641cdf0e10cSrcweir { 642cdf0e10cSrcweir if ( $main::operatingSystem =~ m/darwin/ ) { 643cdf0e10cSrcweir $progDir = resolveLink("/System/Library/Frameworks/JavaVM.Framework/Versions", "CurrentJDK"); 644cdf0e10cSrcweir 645cdf0e10cSrcweir if ( -e "$progDir/$main::OO_SDK_JAVA_BIN_DIR/javac" ) 646cdf0e10cSrcweir { 647cdf0e10cSrcweir return "$progDir/$main::OO_SDK_JAVA_BIN_DIR"; 648cdf0e10cSrcweir } 649cdf0e10cSrcweir } 650cdf0e10cSrcweir 651cdf0e10cSrcweir if ( $main::operatingSystem =~ m/solaris/ ) { 652cdf0e10cSrcweir $progDir = resolveLink("/usr/jdk", "latest"); 653cdf0e10cSrcweir if ( -e "$progDir/$main::OO_SDK_JAVA_BIN_DIR/javac" ) 654cdf0e10cSrcweir { 655cdf0e10cSrcweir return "$progDir/$main::OO_SDK_JAVA_BIN_DIR"; 656cdf0e10cSrcweir } 657cdf0e10cSrcweir } 658cdf0e10cSrcweir } 659cdf0e10cSrcweir 660cdf0e10cSrcweir if ( $_search eq "gmake" && $main::operatingSystem =~ m/solaris/ ) { 661cdf0e10cSrcweir if ( -e "/usr/sfw/bin/gmake" ) 662cdf0e10cSrcweir { 663cdf0e10cSrcweir return "/usr/sfw/bin"; 664cdf0e10cSrcweir } 665cdf0e10cSrcweir } 666cdf0e10cSrcweir 667cdf0e10cSrcweir foreach $i (@pathList) 668cdf0e10cSrcweir { 669cdf0e10cSrcweir chomp ($i); 670cdf0e10cSrcweir 671cdf0e10cSrcweir if ( -e "$i/$_search" ) 672cdf0e10cSrcweir { 673cdf0e10cSrcweir 674cdf0e10cSrcweir if ( index($i, "/") == 0 ) 675cdf0e10cSrcweir { 676cdf0e10cSrcweir # # absolute path; leave unchanged 677cdf0e10cSrcweir $progDir = $i; 678cdf0e10cSrcweir } else 679cdf0e10cSrcweir { 680cdf0e10cSrcweir $progDir = `cd "$i"; pwd`; 681cdf0e10cSrcweir } 682cdf0e10cSrcweir return $progDir 683cdf0e10cSrcweir } 684cdf0e10cSrcweir } 685cdf0e10cSrcweir return $progDir 686cdf0e10cSrcweir} 687cdf0e10cSrcweir 688cdf0e10cSrcweirsub searchMacOffice 689cdf0e10cSrcweir{ 690599cc5b4SOliver-Rainer Wittmann if (-d "/Applications/OpenOffice.app" ) { 691599cc5b4SOliver-Rainer Wittmann return "/Applications/OpenOffice.app" 692ff3f4ebcSOliver-Rainer Wittmann } 693cdf0e10cSrcweir return ""; 694cdf0e10cSrcweir} 695cdf0e10cSrcweir 696cdf0e10cSrcweirsub searchoffice 697cdf0e10cSrcweir{ 698599cc5b4SOliver-Rainer Wittmann my $offset = rindex($main::sdkpath, "/openoffice"); 699cdf0e10cSrcweir my $tmpOffice = substr($main::sdkpath, 0, $offset); 700599cc5b4SOliver-Rainer Wittmann my $officepath = "$tmpOffice/openoffice$main::OO_MAJORVERSION"; 701cdf0e10cSrcweir 702cdf0e10cSrcweir# if ( $main::OO_MINORVERSION > 0) { 703cdf0e10cSrcweir# $officepath = "$officepath$main::OO_MINORVERSION"; 704cdf0e10cSrcweir# } 705cdf0e10cSrcweir 706cdf0e10cSrcweir # search corresponding office for this SDK 707cdf0e10cSrcweir if (-d $officepath && -e "$officepath/program/soffice") { 708cdf0e10cSrcweir return $officepath; 709cdf0e10cSrcweir } 710b3ba5bc7SJürgen Schmidt return ""; 711cdf0e10cSrcweir} 712cdf0e10cSrcweir 713cdf0e10cSrcweir 714cdf0e10cSrcweir 715cdf0e10cSrcweirsub testVersion 716cdf0e10cSrcweir{ 717cdf0e10cSrcweir my $tmpMustBeVersion = shift; 718cdf0e10cSrcweir my $tmpTestVersion = shift; 719cdf0e10cSrcweir my $toolName = shift; 720cdf0e10cSrcweir # 1=check + message 2=check only 721cdf0e10cSrcweir my $checkOnly = shift; 722cdf0e10cSrcweir my @mustBeVersion = split(/\.|_|-/,$tmpMustBeVersion); 723cdf0e10cSrcweir my @testVersion = split(/\.|_|-/,$tmpTestVersion); 724cdf0e10cSrcweir my $length = $#mustBeVersion; 725cdf0e10cSrcweir 726cdf0e10cSrcweir if ($#testVersion < $#mustBeVersion) { 727cdf0e10cSrcweir $length = $#testVersion; 728cdf0e10cSrcweir } 729cdf0e10cSrcweir 730cdf0e10cSrcweir for ($i=0; $i <= $length; $i++ ) 731cdf0e10cSrcweir { 732985d02c7SAriel Constenla-Haile if ( @testVersion[$i] > @mustBeVersion[$i] ) 733cdf0e10cSrcweir { 734cdf0e10cSrcweir return 1; # 1 indicates a correct version 735cdf0e10cSrcweir } 736cdf0e10cSrcweir 737985d02c7SAriel Constenla-Haile if ( @testVersion[$i] < @mustBeVersion[$i] ) 738cdf0e10cSrcweir { 739cdf0e10cSrcweir if ( $#checkOnly == 1 ) { 740cdf0e10cSrcweir print " The command '$toolName' has the version $tmpTestVersion.\n"; 741cdf0e10cSrcweir print " The SDK requires at least the version $tmpMustBeVersion.\n"; 742cdf0e10cSrcweir } 743cdf0e10cSrcweir return 0; 744cdf0e10cSrcweir } 745cdf0e10cSrcweir } 746cdf0e10cSrcweir 747cdf0e10cSrcweir return 1; # 1 indicates a correct version 748cdf0e10cSrcweir} 749cdf0e10cSrcweir 750cdf0e10cSrcweirsub readStdIn 751cdf0e10cSrcweir{ 752cdf0e10cSrcweir my $tmpstdin = <STDIN>; 753cdf0e10cSrcweir if ( index($tmpstdin, "\$") != -1) 754cdf0e10cSrcweir { 755cdf0e10cSrcweir return `echo $tmpstdin`; 756cdf0e10cSrcweir } 757cdf0e10cSrcweir 758cdf0e10cSrcweir return $tmpstdin; 759cdf0e10cSrcweir} 760cdf0e10cSrcweir 761cdf0e10cSrcweirsub prepareScriptFile() 762cdf0e10cSrcweir{ 763cdf0e10cSrcweir my $inputFile = shift; 764cdf0e10cSrcweir my $outputFile = shift; 765cdf0e10cSrcweir 766cdf0e10cSrcweir if ( ! -d "$main::OO_SDK_CONFIG_HOME/$main::hostname" ) 767cdf0e10cSrcweir { 768cdf0e10cSrcweir system("mkdir -p $main::OO_SDK_CONFIG_HOME/$main::hostname"); 769cdf0e10cSrcweir } 770cdf0e10cSrcweir 771cdf0e10cSrcweir open ( FILEIN, "$main::sdkpath/$inputFile" ) || die "\nERROR: could not open '$main::sdkpath/$inputFile' for reading"; 772cdf0e10cSrcweir open ( FILEOUT, ">$main::OO_SDK_CONFIG_HOME/$main::hostname/$outputFile" ) || die "\nERROR: could not open '$main::OO_SDK_CONFIG_HOME/$main::hostname/$outputFile' for writing"; 773cdf0e10cSrcweir 774cdf0e10cSrcweir while ( <FILEIN> ) 775cdf0e10cSrcweir { 776cdf0e10cSrcweir $_ =~ s#\@OO_SDK_NAME\@#$main::OO_SDK_NAME#go; 777cdf0e10cSrcweir $_ =~ s#\@OO_SDK_HOME\@#$main::OO_SDK_HOME#go; 778cdf0e10cSrcweir $_ =~ s#\@OFFICE_HOME\@#$main::OFFICE_HOME#go; 779cdf0e10cSrcweir $_ =~ s#\@OO_SDK_MAKE_HOME\@#$main::OO_SDK_MAKE_HOME#go; 780cdf0e10cSrcweir $_ =~ s#\@OO_SDK_ZIP_HOME\@#$main::OO_SDK_ZIP_HOME#go; 781b3ba5bc7SJürgen Schmidt $_ =~ s#\@OO_SDK_CAT_HOME\@#$main::OO_SDK_CAT_HOME#go; 782b3ba5bc7SJürgen Schmidt $_ =~ s#\@OO_SDK_SED_HOME\@#$main::OO_SDK_SED_HOME#go; 783cdf0e10cSrcweir $_ =~ s#\@OO_SDK_CPP_HOME\@#$main::OO_SDK_CPP_HOME#go; 784cdf0e10cSrcweir $_ =~ s#\@OO_SDK_CC_55_OR_HIGHER\@#$main::OO_SDK_CC_55_OR_HIGHER#go; 785cdf0e10cSrcweir $_ =~ s#\@OO_SDK_JAVA_HOME\@#$main::OO_SDK_JAVA_HOME#go; 786*ed9d7cbeSJürgen Schmidt $_ =~ s#\@OO_SDK_BOOST_HOME\@#$main::OO_SDK_BOOST_HOME#go; 787cdf0e10cSrcweir $_ =~ s#\@SDK_AUTO_DEPLOYMENT\@#$main::SDK_AUTO_DEPLOYMENT#go; 788cdf0e10cSrcweir $_ =~ s#\@OO_SDK_OUTPUT_DIR\@#$main::OO_SDK_OUTPUT_DIR#go; 789cdf0e10cSrcweir 790cdf0e10cSrcweir print FILEOUT $_; 791cdf0e10cSrcweir } 792cdf0e10cSrcweir 793cdf0e10cSrcweir close FILEIN; 794cdf0e10cSrcweir close FILEOUT; 795cdf0e10cSrcweir} 796