xref: /aoo41x/main/odk/configure.pl (revision 122c3632)
1*122c3632SJürgen Schmidt#**************************************************************
2*122c3632SJürgen Schmidt#
3*122c3632SJürgen Schmidt#  Licensed to the Apache Software Foundation (ASF) under one
4*122c3632SJürgen Schmidt#  or more contributor license agreements.  See the NOTICE file
5*122c3632SJürgen Schmidt#  distributed with this work for additional information
6*122c3632SJürgen Schmidt#  regarding copyright ownership.  The ASF licenses this file
7*122c3632SJürgen Schmidt#  to you under the Apache License, Version 2.0 (the
8*122c3632SJürgen Schmidt#  "License"); you may not use this file except in compliance
9*122c3632SJürgen Schmidt#  with the License.  You may obtain a copy of the License at
10*122c3632SJürgen Schmidt#
11*122c3632SJürgen Schmidt#    http://www.apache.org/licenses/LICENSE-2.0
12*122c3632SJürgen Schmidt#
13*122c3632SJürgen Schmidt#  Unless required by applicable law or agreed to in writing,
14*122c3632SJürgen Schmidt#  software distributed under the License is distributed on an
15*122c3632SJürgen Schmidt#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*122c3632SJürgen Schmidt#  KIND, either express or implied.  See the License for the
17*122c3632SJürgen Schmidt#  specific language governing permissions and limitations
18*122c3632SJürgen Schmidt#  under the License.
19*122c3632SJürgen Schmidt#
20*122c3632SJürgen Schmidt#**************************************************************
21*122c3632SJü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 = "";
47cdf0e10cSrcweir$main::OO_SDK_HOME_SUGGESTION = $main::sdkpath;
48cdf0e10cSrcweir
49cdf0e10cSrcweir$main::OFFICE_OR_URE = "Office";
50cdf0e10cSrcweir$main::OFFICE_OR_URE_SUGGESTION = "Office";
51cdf0e10cSrcweir
52cdf0e10cSrcweir$main::OFFICE_HOME = "";
53cdf0e10cSrcweir
54cdf0e10cSrcweir$main::OFFICE_BASE_HOME = substr($main::sdkpath, 0, rindex($main::sdkpath, "/sdk"));
55cdf0e10cSrcweir
56cdf0e10cSrcweirif ( $main::operatingSystem =~ m/darwin/ )
57cdf0e10cSrcweir{
58cdf0e10cSrcweir#	$main::OO_SDK_URE_HOME = `cd $main::sdkpath/../ure-link && pwd`;
59cdf0e10cSrcweir} else {
60cdf0e10cSrcweir	$main::OO_SDK_URE_HOME = `cd $main::sdkpath/../ure-link && pwd`;
61cdf0e10cSrcweir}
62cdf0e10cSrcweirchomp($main::OO_SDK_URE_HOME);
63cdf0e10cSrcweir
64cdf0e10cSrcweir$main::OO_SDK_MAKE_HOME = "";
65cdf0e10cSrcweir$main::makeName = "make";
66cdf0e10cSrcweirif ( $main::operatingSystem =~ m/solaris/ ||
67cdf0e10cSrcweir	 $main::operatingSystem =~ m/freebsd/ )
68cdf0e10cSrcweir{
69cdf0e10cSrcweir    $main::makeName = "gmake";
70cdf0e10cSrcweir}
71cdf0e10cSrcweir$main::OO_SDK_MAKE_HOME_SUGGESTION = searchprog($main::makeName);
72cdf0e10cSrcweir$main::makeVersion = "3.79.1";
73cdf0e10cSrcweir$main::correctVersion = 0;
74cdf0e10cSrcweir
75cdf0e10cSrcweir$main::OO_SDK_ZIP_HOME = "";
76cdf0e10cSrcweir$main::OO_SDK_ZIP_HOME_SUGGESTION = searchprog("zip");
77cdf0e10cSrcweir$main::zipVersion = "2.3";
78cdf0e10cSrcweir
79cdf0e10cSrcweir$main::OO_SDK_CPP_HOME = "";
80cdf0e10cSrcweir$main::cppName = "gcc";
81cdf0e10cSrcweir$main::cppVersion = "4.0.1";
82cdf0e10cSrcweirif ( $main::operatingSystem =~ m/solaris/ )
83cdf0e10cSrcweir{
84cdf0e10cSrcweir	$main::cppName = "CC";
85cdf0e10cSrcweir	$main::cppVersion = "5.2";
86cdf0e10cSrcweir}
87cdf0e10cSrcweir$main::OO_SDK_CC_55_OR_HIGHER = "";
88cdf0e10cSrcweir$main::OO_SDK_CPP_HOME_SUGGESTION = searchprog($main::cppName);
89cdf0e10cSrcweir
90cdf0e10cSrcweir$main::OO_SDK_JAVA_HOME = "";
91cdf0e10cSrcweir$main::OO_SDK_JAVA_BIN_DIR = "bin";
92cdf0e10cSrcweirif ( $main::operatingSystem =~ m/darwin/ )
93cdf0e10cSrcweir{
94cdf0e10cSrcweir    $main::OO_SDK_JAVA_BIN_DIR="Commands";
95cdf0e10cSrcweir}
96cdf0e10cSrcweir$main::OO_SDK_JAVA_HOME_SUGGESTION = searchprog("javac");
97cdf0e10cSrcweir$main::javaVersion = "1.5.0_01";
98cdf0e10cSrcweir
99cdf0e10cSrcweir$main::SDK_AUTO_DEPLOYMENT = "";
100cdf0e10cSrcweir$main::SDK_AUTO_DEPLOYMENT_SUGGESTION = "YES";
101cdf0e10cSrcweir
102cdf0e10cSrcweir$main::OO_SDK_OUTPUT_DIR_SUGGESTION = "$ENV{HOME}";
103cdf0e10cSrcweir$main::OO_SDK_OUTPUT_DIR = "";
104cdf0e10cSrcweir$main::skipOutputDir = 0;
105cdf0e10cSrcweir
106cdf0e10cSrcweir$main::return = 0;
107cdf0e10cSrcweir
108cdf0e10cSrcweirif ( $main::OFFICE_OR_URE eq "Office" )
109cdf0e10cSrcweir{
110cdf0e10cSrcweir	if ( $main::operatingSystem =~ m/darwin/ )
111cdf0e10cSrcweir	{
112cdf0e10cSrcweir# used for a SDK as part of the office installation
113cdf0e10cSrcweir#		$main::OFFICE_HOME = `cd $main::sdkpath/../../.. && pwd`;
114cdf0e10cSrcweir#		chomp($main::OFFICE_HOME);
115cdf0e10cSrcweir#		print " Used Office = $main::OFFICE_HOME\n";
116cdf0e10cSrcweir		print " Used SDK = $main::OO_SDK_HOME\n\n";
117cdf0e10cSrcweir
118cdf0e10cSrcweir		$main::OFFICE_HOME_SUGGESTION = searchMacOffice();
119cdf0e10cSrcweir		while ( (! -d "$main::OFFICE_HOME" ) ||
120cdf0e10cSrcweir				((-d "$main::OFFICE_HOME") && (! -d "$main::OFFICE_HOME/Contents/MacOS")) )
121cdf0e10cSrcweir		{
122cdf0e10cSrcweir			print " Enter the Office installation directory [$main::OFFICE_HOME_SUGGESTION]: ";
123cdf0e10cSrcweir			$main::OFFICE_HOME = readStdIn();
124cdf0e10cSrcweir			chop($main::OFFICE_HOME);
125cdf0e10cSrcweir			if ( $main::OFFICE_HOME eq "" )
126cdf0e10cSrcweir			{
127cdf0e10cSrcweir				$main::OFFICE_HOME = $main::OFFICE_HOME_SUGGESTION;
128cdf0e10cSrcweir			}
129cdf0e10cSrcweir
130cdf0e10cSrcweir			if ( ! -d "$main::OFFICE_HOME" )
131cdf0e10cSrcweir			{
132cdf0e10cSrcweir				$main::OFFICE_HOME = "";
133cdf0e10cSrcweir				print " Error: An office installation is required, please specify the path to a valid installation.\n";
134cdf0e10cSrcweir			}
135cdf0e10cSrcweir
136cdf0e10cSrcweir			# check more details
137cdf0e10cSrcweir			if ( -d "$main::OFFICE_HOME/Contents/basis-link" ) {
138cdf0e10cSrcweir				$main::OFFICE_BASE_HOME = "$main::OFFICE_HOME/Contents/basis-link";
139cdf0e10cSrcweir				if ( -d "$main::OFFICE_BASE_HOME/ure-link" ) {
140cdf0e10cSrcweir					$main::OO_SDK_URE_HOME = "$main::OFFICE_BASE_HOME/ure-link";
141cdf0e10cSrcweir				} else {
142cdf0e10cSrcweir					$main::OFFICE_HOME = "";
143cdf0e10cSrcweir					$main::OFFICE_BASE_HOME = "";
144cdf0e10cSrcweir					$main::OO_SDK_URE_HOME = "";
145cdf0e10cSrcweir					print " Error: no URE found in office installation, please specify the path to a valid installation.\n";
146cdf0e10cSrcweir				}
147cdf0e10cSrcweir			} else {
148cdf0e10cSrcweir				$main::OFFICE_HOME = "";
149cdf0e10cSrcweir				$main::OFFICE_BASE_HOME = "";
150cdf0e10cSrcweir				$main::OO_SDK_URE_HOME = "";
151cdf0e10cSrcweir				print " Error: no base layer found in office installation, please specify the path to a valid installation.\n";
152cdf0e10cSrcweir			}
153cdf0e10cSrcweir		}
154cdf0e10cSrcweir	} else
155cdf0e10cSrcweir	{
156cdf0e10cSrcweir		$main::OFFICE_HOME_SUGGESTION = searchoffice();
157cdf0e10cSrcweir
158cdf0e10cSrcweir		if ( $main::OFFICE_HOME_SUGGESTION eq "" ) {
159cdf0e10cSrcweir			# prepare Office path
160cdf0e10cSrcweir			$main::OFFICE_HOME_SUGGESTION = searchprog("soffice");
161cdf0e10cSrcweir		}
162cdf0e10cSrcweir
163cdf0e10cSrcweir		if ( ! $main::OFFICE_HOME_SUGGESTION eq "" )
164cdf0e10cSrcweir		{
165cdf0e10cSrcweir			my $tmpOffice = readlink "$main::OFFICE_HOME_SUGGESTION/soffice";
166cdf0e10cSrcweir
167cdf0e10cSrcweir			if ( $tmpOffice eq "" )
168cdf0e10cSrcweir			{
169cdf0e10cSrcweir				$tmpOffice = "$main::OFFICE_HOME_SUGGESTION/soffice";
170cdf0e10cSrcweir			}
171cdf0e10cSrcweir
172cdf0e10cSrcweir			my $offset = rindex($tmpOffice, "/program/soffice");
173cdf0e10cSrcweir			if ( $offset != -1 )
174cdf0e10cSrcweir			{
175cdf0e10cSrcweir				$main::OFFICE_HOME_SUGGESTION = substr($tmpOffice, 0, $offset);
176cdf0e10cSrcweir			} else
177cdf0e10cSrcweir			{
178cdf0e10cSrcweir				$offset = rindex($tmpOffice, "/soffice");
179cdf0e10cSrcweir				if ( $offset != -1 )
180cdf0e10cSrcweir				{
181cdf0e10cSrcweir					$main::OFFICE_HOME_SUGGESTION = substr($tmpOffice, 0, $offset);
182cdf0e10cSrcweir				} else
183cdf0e10cSrcweir				{
184cdf0e10cSrcweir					$main::OFFICE_HOME_SUGGESTION = "";
185cdf0e10cSrcweir				}
186cdf0e10cSrcweir			}
187cdf0e10cSrcweir		}
188cdf0e10cSrcweir
189cdf0e10cSrcweir		while ( (! -d "$main::OFFICE_HOME" ) ||
190cdf0e10cSrcweir				((-d "$main::OFFICE_HOME") && (! -d "$main::OFFICE_HOME/program")) )
191cdf0e10cSrcweir		{
192cdf0e10cSrcweir			print " Enter the Office installation directory [$main::OFFICE_HOME_SUGGESTION]: ";
193cdf0e10cSrcweir			$main::OFFICE_HOME = readStdIn();
194cdf0e10cSrcweir			chop($main::OFFICE_HOME);
195cdf0e10cSrcweir			if ( $main::OFFICE_HOME eq "" )
196cdf0e10cSrcweir			{
197cdf0e10cSrcweir				$main::OFFICE_HOME = $main::OFFICE_HOME_SUGGESTION;
198cdf0e10cSrcweir			}
199cdf0e10cSrcweir
200cdf0e10cSrcweir			if ( ! -d "$main::OFFICE_HOME" )
201cdf0e10cSrcweir			{
202cdf0e10cSrcweir				$main::OFFICE_HOME = "";
203cdf0e10cSrcweir				print " Error: An office installation is required, please specify the path to a valid installation.\n";
204cdf0e10cSrcweir			} else
205cdf0e10cSrcweir			{
206cdf0e10cSrcweir				# special work for a network installation, no prgram directory but a link to the soffice binary
207cdf0e10cSrcweir				if ( (! -d "$main::OFFICE_HOME/program") && (-e "$main::OFFICE_HOME/soffice") )
208cdf0e10cSrcweir				{
209cdf0e10cSrcweir					my $soserver = `ls -l $OFFICE_HOME_SUGGESTION/soffice | sed -n 's/.* -> //p'`;
210cdf0e10cSrcweir					$soserver= substr($soserver, 0, rindex($soserver, "program") - 1);
211cdf0e10cSrcweir
212cdf0e10cSrcweir					if ( ! -d $soserver )
213cdf0e10cSrcweir					{
214cdf0e10cSrcweir						$main::OFFICE_HOME = "";
215cdf0e10cSrcweir						print " Error: An office installation is required, please specify the path to a valid installation.\n";
216cdf0e10cSrcweir					} else
217cdf0e10cSrcweir					{
218cdf0e10cSrcweir						$main::OFFICE_HOME = $soserver;
219cdf0e10cSrcweir					}
220cdf0e10cSrcweir				}
221cdf0e10cSrcweir			}
222cdf0e10cSrcweir		}
223cdf0e10cSrcweir	}
224cdf0e10cSrcweir}
225cdf0e10cSrcweirelse
226cdf0e10cSrcweir{
227cdf0e10cSrcweir    # prepare URE path
228cdf0e10cSrcweir    $main::OO_SDK_URE_HOME_SUGGESTION = "/opt/openoffice.org/ure";
229cdf0e10cSrcweir    $main::OO_SDK_URE_HOME_SUGGESTION = "" unless
230cdf0e10cSrcweir        -e "$main::OO_SDK_URE_HOME_SUGGESTION/bin/uno";
231cdf0e10cSrcweir    for (;;)
232cdf0e10cSrcweir    {
233cdf0e10cSrcweir        print " Enter the URE installation directory",
234cdf0e10cSrcweir            " [$main::OO_SDK_URE_HOME_SUGGESTION]: ";
235cdf0e10cSrcweir        $main::OO_SDK_URE_HOME = readStdIn();
236cdf0e10cSrcweir        chop $main::OO_SDK_URE_HOME;
237cdf0e10cSrcweir        $main::OO_SDK_URE_HOME = $main::OO_SDK_URE_HOME_SUGGESTION if
238cdf0e10cSrcweir            $main::OO_SDK_URE_HOME eq "" &&
239cdf0e10cSrcweir            $main::OO_SDK_URE_HOME_SUGGESTION ne "";
240cdf0e10cSrcweir        last if -e "$main::OO_SDK_URE_HOME/bin/uno";
241cdf0e10cSrcweir        print " Error: A valid URE installation is required.\n";
242cdf0e10cSrcweir    }
243cdf0e10cSrcweir}
244cdf0e10cSrcweir
245cdf0e10cSrcweir# prepare GNU make path
246cdf0e10cSrcweirwhile ( (!$main::correctVersion) &&
247cdf0e10cSrcweir		((! -d "$main::OO_SDK_MAKE_HOME" ) ||
248cdf0e10cSrcweir		 ((-d "$main::OO_SDK_MAKE_HOME") && (! -e "$main::OO_SDK_MAKE_HOME/$main::makeName"))) )
249cdf0e10cSrcweir{
250cdf0e10cSrcweir    print " Enter GNU make ($main::makeVersion or higher) tools directory [$main::OO_SDK_MAKE_HOME_SUGGESTION]: ";
251cdf0e10cSrcweir    $main::OO_SDK_MAKE_HOME = readStdIn();
252cdf0e10cSrcweir    chop($main::OO_SDK_MAKE_HOME);
253cdf0e10cSrcweir    if ( $main::OO_SDK_MAKE_HOME eq "" )
254cdf0e10cSrcweir    {
255cdf0e10cSrcweir		$main::OO_SDK_MAKE_HOME = $main::OO_SDK_MAKE_HOME_SUGGESTION;
256cdf0e10cSrcweir    }
257cdf0e10cSrcweir    if ( (! -d "$main::OO_SDK_MAKE_HOME") ||
258cdf0e10cSrcweir		 ((-d "$main::OO_SDK_MAKE_HOME") && (! -e "$main::OO_SDK_MAKE_HOME/$main::makeName")) )
259cdf0e10cSrcweir    {
260cdf0e10cSrcweir		$main::OO_SDK_MAKE_HOME = "";
261cdf0e10cSrcweir		print " Error: GNU make is required, please specify a GNU make tools directory.\n";
262cdf0e10cSrcweir    } else
263cdf0e10cSrcweir    {
264cdf0e10cSrcweir		#check version
265cdf0e10cSrcweir		my $testVersion = `$OO_SDK_MAKE_HOME/$main::makeName --version`;
266cdf0e10cSrcweir		if ( $testVersion eq "")
267cdf0e10cSrcweir		{
268cdf0e10cSrcweir			print " Set the environment variable OO_SDK_MAKE_HOME to your GNU build tools directory.\n";
269cdf0e10cSrcweir			print " GNU make version $main::makeVersion can be obtained at ftp://ftp.gnu.org/gnu/make/\n";
270cdf0e10cSrcweir		} else
271cdf0e10cSrcweir		{
272cdf0e10cSrcweir		    if ($testVersion =~ m#((\d+\.)+\d+)# )
273cdf0e10cSrcweir			{
274cdf0e10cSrcweir				$testVersion = $1;
275cdf0e10cSrcweir			}
276cdf0e10cSrcweir			$main::correctVersion = testVersion($main::makeVersion, $testVersion, "$main::OO_SDK_MAKE_HOME/$main::makeName", 1);
277cdf0e10cSrcweir			if ( !$main::correctVersion )
278cdf0e10cSrcweir			{
279cdf0e10cSrcweir				print " The '$main::makeName' command found at '$main::OO_SDK_MAKE_HOME' has a wrong version\n";
280cdf0e10cSrcweir				$main::OO_SDK_MAKE_HOME = "";
281cdf0e10cSrcweir			}
282cdf0e10cSrcweir		}
283cdf0e10cSrcweir	}
284cdf0e10cSrcweir}
285cdf0e10cSrcweir
286cdf0e10cSrcweir# prepare zip path
287cdf0e10cSrcweir$main::correctVersion = 0;
288cdf0e10cSrcweirwhile ( (!$main::correctVersion) &&
289cdf0e10cSrcweir		((! -d "$main::OO_SDK_ZIP_HOME" ) ||
290cdf0e10cSrcweir		 ((-d "$main::OO_SDK_ZIP_HOME") && (! -e "$main::OO_SDK_ZIP_HOME/zip"))) )
291cdf0e10cSrcweir{
292cdf0e10cSrcweir    print " Enter zip ($main::zipVersion or higher) tool directory [$main::OO_SDK_ZIP_HOME_SUGGESTION]: ";
293cdf0e10cSrcweir    $main::OO_SDK_ZIP_HOME = readStdIn();
294cdf0e10cSrcweir    chop($main::OO_SDK_ZIP_HOME);
295cdf0e10cSrcweir    if ( $main::OO_SDK_ZIP_HOME eq "" )
296cdf0e10cSrcweir    {
297cdf0e10cSrcweir		$main::OO_SDK_ZIP_HOME = $main::OO_SDK_ZIP_HOME_SUGGESTION;
298cdf0e10cSrcweir    }
299cdf0e10cSrcweir    if ( (! -d "$main::OO_SDK_ZIP_HOME") ||
300cdf0e10cSrcweir		 ((-d "$main::OO_SDK_ZIP_HOME") && (! -e "$main::OO_SDK_ZIP_HOME/zip")) )
301cdf0e10cSrcweir    {
302cdf0e10cSrcweir		$main::OO_SDK_ZIP_HOME = "";
303cdf0e10cSrcweir		print " Error: zip tool is required, please specify a zip tool directory.\n";
304cdf0e10cSrcweir    } else
305cdf0e10cSrcweir    {
306cdf0e10cSrcweir		#check version
307cdf0e10cSrcweir		my $testVersion = `$OO_SDK_ZIP_HOME/zip -h 2>&1 | egrep Zip | head -n 1`;
308cdf0e10cSrcweir		$testVersion =~ s#Zip ([\d.]+) .*#$1#go;
309cdf0e10cSrcweir		if ( $testVersion eq "")
310cdf0e10cSrcweir		{
311cdf0e10cSrcweir			print " Set the environment variable OO_SDK_ZIP_HOME to your zip tool directory.\n";
312cdf0e10cSrcweir			print " zip version $main::zipVersion can be obtained at ftp://www.info-zip.org/\n";
313cdf0e10cSrcweir		} else
314cdf0e10cSrcweir		{
315cdf0e10cSrcweir		    if ($testVersion =~ m#((\d+\.)+\d+)# )
316cdf0e10cSrcweir			{
317cdf0e10cSrcweir				$testVersion = $1;
318cdf0e10cSrcweir			}
319cdf0e10cSrcweir			$main::correctVersion = testVersion($main::zipVersion, $testVersion, "$main::OO_SDK_MAKE_HOME/zip", 1);
320cdf0e10cSrcweir			if ( !$main::correctVersion )
321cdf0e10cSrcweir			{
322cdf0e10cSrcweir				print " The 'zip' command found at '$main::OO_SDK_ZIP_HOME' has a wrong version\n";
323cdf0e10cSrcweir				$main::OO_SDK_ZIP_HOME = "";
324cdf0e10cSrcweir			}
325cdf0e10cSrcweir		}
326cdf0e10cSrcweir	}
327cdf0e10cSrcweir}
328cdf0e10cSrcweir
329cdf0e10cSrcweir# prepare C++ compiler path
330cdf0e10cSrcweir$main::correctVersion = 0;
331cdf0e10cSrcweirwhile ( (!$main::correctVersion) &&
332cdf0e10cSrcweir		((! -d "$main::OO_SDK_CPP_HOME" ) ||
333cdf0e10cSrcweir		 ((-d "$main::OO_SDK_CPP_HOME") && (! -e "$main::OO_SDK_CPP_HOME/$main::cpp"))) )
334cdf0e10cSrcweir{
335cdf0e10cSrcweir	print " C++ compilers where for example a language binding exist:\n";
336cdf0e10cSrcweir	print "  - Solaris, Sun WorkShop 6 update 1 C++ 5.2 2000/09/11 or higher\n";
337cdf0e10cSrcweir	print "  - Linux, GNU C++ compiler, gcc version 4.0.1 or higher\n";
338cdf0e10cSrcweir	print "  - MacOS, GNU C++ compiler, gcc version 4.0.1 or higher\n";
339cdf0e10cSrcweir	print " Enter the directory of the C++ compiler, the directory\n";
340cdf0e10cSrcweir	print " where the compiler is located (optional) [$main::OO_SDK_CPP_HOME_SUGGESTION]: ";
341cdf0e10cSrcweir
342cdf0e10cSrcweir	$main::OO_SDK_CPP_HOME = readStdIn();
343cdf0e10cSrcweir	chop($main::OO_SDK_CPP_HOME);
344cdf0e10cSrcweir	if ( $main::OO_SDK_CPP_HOME eq "" )
345cdf0e10cSrcweir	{
346cdf0e10cSrcweir		$main::OO_SDK_CPP_HOME = $main::OO_SDK_CPP_HOME_SUGGESTION;
347cdf0e10cSrcweir	}
348cdf0e10cSrcweir
349cdf0e10cSrcweir	if ( ! $main::OO_SDK_CPP_HOME eq "" )
350cdf0e10cSrcweir	{
351cdf0e10cSrcweir		if ( (! -d "$main::OO_SDK_CPP_HOME") ||
352cdf0e10cSrcweir			 ((-d "$main::OO_SDK_CPP_HOME") && (! -e "$main::OO_SDK_CPP_HOME/$main::cppName")) )
353cdf0e10cSrcweir		{
354cdf0e10cSrcweir			print " Error: Could not find directory '$main::OO_SDK_CPP_HOME'.\n";
355cdf0e10cSrcweir			if ( skipChoice("C++ compiler") == 1 )
356cdf0e10cSrcweir			{
357cdf0e10cSrcweir				$main::correctVersion = 1;
358cdf0e10cSrcweir			}
359cdf0e10cSrcweir			$main::OO_SDK_CPP_HOME = "";
360cdf0e10cSrcweir		} else
361cdf0e10cSrcweir		{
362cdf0e10cSrcweir			#check version
363cdf0e10cSrcweir			if ( $main::cppName eq "gcc" )
364cdf0e10cSrcweir			{
365cdf0e10cSrcweir				my $testVersion = `$OO_SDK_CPP_HOME/$main::cppName -dumpversion`;
366cdf0e10cSrcweir				if ( $testVersion eq "")
367cdf0e10cSrcweir				{
368cdf0e10cSrcweir					print " The '$main::cppName' command found at $main::OO_SDK_CPP_HOME/$main::cppName is not a ";
369cdf0e10cSrcweir					print " GNU compiler.\nSet the environment variable OO_SDK_CPP_HOME to your GNU build tools ";
370cdf0e10cSrcweir					print " directory.\nA GNU compiler version $main::cppVersion can be obtained at ";
371cdf0e10cSrcweir					print " ftp://ftp.gnu.org/gnu/gcc/\n";
372cdf0e10cSrcweir				} else
373cdf0e10cSrcweir				{
374cdf0e10cSrcweir					$main::correctVersion = testVersion($main::cppVersion, $testVersion, "$main::OO_SDK_CPP_HOME/$main::cppName", 1);
375cdf0e10cSrcweir					if ( !$main::correctVersion )
376cdf0e10cSrcweir					{
377cdf0e10cSrcweir						print " The '$main::cppName' command found at '$main::OO_SDK_CPP_HOME' has a wrong version\n";
378cdf0e10cSrcweir						if ( skipChoice("C++ compiler") == 1 )
379cdf0e10cSrcweir						{
380cdf0e10cSrcweir							$main::correctVersion = 1;
381cdf0e10cSrcweir						}
382cdf0e10cSrcweir
383cdf0e10cSrcweir						$main::OO_SDK_CPP_HOME = "";
384cdf0e10cSrcweir					}
385cdf0e10cSrcweir				}
386cdf0e10cSrcweir			} else
387cdf0e10cSrcweir			{
388cdf0e10cSrcweir				# for Solaris we have to check the version too
389cdf0e10cSrcweir				open(FILE, "$OO_SDK_CPP_HOME/$main::cppName -V 2>&1 |");
390cdf0e10cSrcweir				my @lines = <FILE>;
391cdf0e10cSrcweir				my $testVersion = $lines[0];
392cdf0e10cSrcweir				if ( $testVersion eq "")
393cdf0e10cSrcweir				{
394cdf0e10cSrcweir					print " The '$main::cppName' command found at $main::OO_SDK_CPP_HOME/$main::cppName is not a ";
395cdf0e10cSrcweir					print " Solaris C++ compiler.\nSet the environment variable OO_SDK_CPP_HOME to your Solaris C++ compiler directory.\n";
396cdf0e10cSrcweir				} else
397cdf0e10cSrcweir				{
398cdf0e10cSrcweir				    if ($testVersion =~ m#((\d+\.)+\d+)# )
399cdf0e10cSrcweir					{
400cdf0e10cSrcweir						$testVersion = $1;
401cdf0e10cSrcweir					}
402cdf0e10cSrcweir					$main::correctVersion = testVersion($main::cppVersion, $testVersion, "$main::OO_SDK_CPP_HOME/$main::cppName", 1);
403cdf0e10cSrcweir					if ( !$main::correctVersion )
404cdf0e10cSrcweir					{
405cdf0e10cSrcweir						print " The '$main::cppName' command found at '$main::OO_SDK_CPP_HOME' has a wrong version\n";
406cdf0e10cSrcweir						if ( skipChoice("C++ compiler") == 1 )
407cdf0e10cSrcweir						{
408cdf0e10cSrcweir							$main::correctVersion = 1;
409cdf0e10cSrcweir						}
410cdf0e10cSrcweir
411cdf0e10cSrcweir						$main::OO_SDK_CPP_HOME = "";
412cdf0e10cSrcweir					} else {
413cdf0e10cSrcweir						$main::correctVersion = testVersion("5.5", $testVersion, "$main::OO_SDK_CPP_HOME/$main::cppName", 2);
414cdf0e10cSrcweir						if ( $main::correctVersion ) {
415cdf0e10cSrcweir							$main::OO_SDK_CC_55_OR_HIGHER = $testVersion;
416cdf0e10cSrcweir						}
417cdf0e10cSrcweir					}
418cdf0e10cSrcweir				}
419cdf0e10cSrcweir			}
420cdf0e10cSrcweir		}
421cdf0e10cSrcweir	} else
422cdf0e10cSrcweir	{
423cdf0e10cSrcweir		# the C++ compiler is optional
424cdf0e10cSrcweir		$main::correctVersion = 1;
425cdf0e10cSrcweir	}
426cdf0e10cSrcweir}
427cdf0e10cSrcweir
428cdf0e10cSrcweir
429cdf0e10cSrcweir# prepare Java path
430cdf0e10cSrcweir$main::correctVersion = 0;
431cdf0e10cSrcweir
432cdf0e10cSrcweir# prepare Java suggestion (cut bin or Commands directory to be in the root of the Java SDK)
433cdf0e10cSrcweir$main::offset = rindex($main::OO_SDK_JAVA_HOME_SUGGESTION, "/$main::OO_SDK_JAVA_BIN_DIR");
434cdf0e10cSrcweirif ( $main::offset != -1 )
435cdf0e10cSrcweir{
436cdf0e10cSrcweir	$main::OO_SDK_JAVA_HOME_SUGGESTION = substr($main::OO_SDK_JAVA_HOME_SUGGESTION, 0, $main::offset);
437cdf0e10cSrcweir}
438cdf0e10cSrcweir
439cdf0e10cSrcweirwhile ( (!$main::correctVersion) &&
440cdf0e10cSrcweir		((! -d "$main::OO_SDK_JAVA_HOME" ) ||
441cdf0e10cSrcweir		 ((-d "$main::OO_SDK_JAVA_HOME") && (! -e "$main::OO_SDK_JAVA_HOME/$main::OO_SDK_JAVA_BIN_DIR/javac"))) )
442cdf0e10cSrcweir{
443cdf0e10cSrcweir	print " Enter Java SDK (1.5, recommendation is 1.6 or higher) installation directory  (optional) [$main::OO_SDK_JAVA_HOME_SUGGESTION]: ";
444cdf0e10cSrcweir	$main::OO_SDK_JAVA_HOME = readStdIn();
445cdf0e10cSrcweir	chop($main::OO_SDK_JAVA_HOME);
446cdf0e10cSrcweir	if ( $main::OO_SDK_JAVA_HOME eq "" )
447cdf0e10cSrcweir	{
448cdf0e10cSrcweir		$main::OO_SDK_JAVA_HOME = $main::OO_SDK_JAVA_HOME_SUGGESTION;
449cdf0e10cSrcweir	}
450cdf0e10cSrcweir	if ( ! $main::OO_SDK_JAVA_HOME eq "" )
451cdf0e10cSrcweir	{
452cdf0e10cSrcweir		if ( (! -d "$main::OO_SDK_JAVA_HOME") ||
453cdf0e10cSrcweir			 ((-d "$main::OO_SDK_JAVA_HOME") && (! -e "$main::OO_SDK_JAVA_HOME/$main::OO_SDK_JAVA_BIN_DIR/javac")) )
454cdf0e10cSrcweir		{
455cdf0e10cSrcweir			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";
456cdf0e10cSrcweir			if ( skipChoice("JAVA SDK") == 1 )
457cdf0e10cSrcweir			{
458cdf0e10cSrcweir				$main::correctVersion = 1;
459cdf0e10cSrcweir			}
460cdf0e10cSrcweir			$main::OO_SDK_JAVA_HOME = "";
461cdf0e10cSrcweir		} else
462cdf0e10cSrcweir		{
463cdf0e10cSrcweir			#check version
464cdf0e10cSrcweir			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#".*##'`;
465cdf0e10cSrcweir			$testVersion =~ s#([^\n]+)\n#$1#go;
466cdf0e10cSrcweir
467cdf0e10cSrcweir			$main::correctVersion = testVersion($main::javaVersion, $testVersion, "$main::OO_SDK_JAVA_HOME/$main::OO_SDK_JAVA_BIN_DIR/java", 1);
468cdf0e10cSrcweir			if ( !$main::correctVersion )
469cdf0e10cSrcweir			{
470cdf0e10cSrcweir				if ( skipChoice("JAVA SDK") == 1 )
471cdf0e10cSrcweir				{
472cdf0e10cSrcweir					$main::correctVersion = 1;
473cdf0e10cSrcweir				}
474cdf0e10cSrcweir				$main::OO_SDK_JAVA_HOME = "";
475cdf0e10cSrcweir			}
476cdf0e10cSrcweir		}
477cdf0e10cSrcweir	}else
478cdf0e10cSrcweir	{
479cdf0e10cSrcweir		# the Java SDK is optional
480cdf0e10cSrcweir		$main::correctVersion = 1;
481cdf0e10cSrcweir	}
482cdf0e10cSrcweir}
483cdf0e10cSrcweir
484cdf0e10cSrcweir
485cdf0e10cSrcweir# prepare output directory (optional)
486cdf0e10cSrcweirwhile ( (!$main::skipOutputDir) &&
487cdf0e10cSrcweir		(! -d "$main::OO_SDK_OUTPUT_DIR") )
488cdf0e10cSrcweir{
489cdf0e10cSrcweir	print " Default output directory is in your HOME directory.\n";
490cdf0e10cSrcweir	print " Enter an existent directory if you prefer a different output directory (optional) [$main::OO_SDK_OUTPUT_DIR_SUGGESTION]: ";
491cdf0e10cSrcweir
492cdf0e10cSrcweir	$main::OO_SDK_OUTPUT_DIR = readStdIn();
493cdf0e10cSrcweir
494cdf0e10cSrcweir	chop($main::OO_SDK_OUTPUT_DIR);
495cdf0e10cSrcweir	if ( $main::OO_SDK_OUTPUT_DIR eq "" )
496cdf0e10cSrcweir	{
497cdf0e10cSrcweir		$main::OO_SDK_OUTPUT_DIR = $main::OO_SDK_OUTPUT_DIR_SUGGESTION;
498cdf0e10cSrcweir	}
499cdf0e10cSrcweir	if ( ! $main::OO_SDK_OUTPUT_DIR eq "" )
500cdf0e10cSrcweir	{
501cdf0e10cSrcweir		if ( ! -d "$main::OO_SDK_OUTPUT_DIR" )
502cdf0e10cSrcweir		{
503cdf0e10cSrcweir			print " Error: Could not find directory '$main::OO_SDK_OUTPUT_DIR'.\n";
504cdf0e10cSrcweir			if ( skipChoice("optional output directory") == 1 )
505cdf0e10cSrcweir			{
506cdf0e10cSrcweir				$main::skipOutputDir = 1;
507cdf0e10cSrcweir			}
508cdf0e10cSrcweir			$main::OO_SDK_OUTPUT_DIR = "";
509cdf0e10cSrcweir		}
510cdf0e10cSrcweir	} else
511cdf0e10cSrcweir	{
512cdf0e10cSrcweir		# the output directory is optional
513cdf0e10cSrcweir		$main::skipOutputDir = 1;
514cdf0e10cSrcweir	}
515cdf0e10cSrcweir}
516cdf0e10cSrcweir
517cdf0e10cSrcweir# prepare auto deployment
518cdf0e10cSrcweirif ( $main::OFFICE_OR_URE eq "Office" )
519cdf0e10cSrcweir{
520cdf0e10cSrcweir    while ( $main::SDK_AUTO_DEPLOYMENT eq "" ||
521cdf0e10cSrcweir    	 ((! $main::SDK_AUTO_DEPLOYMENT eq "YES") &&
522cdf0e10cSrcweir    	  (! $main::SDK_AUTO_DEPLOYMENT eq "NO")) )
523cdf0e10cSrcweir    {
524cdf0e10cSrcweir        print " Automatic deployment of UNO components (YES/NO) [$main::SDK_AUTO_DEPLOYMENT_SUGGESTION]: ";
525cdf0e10cSrcweir        $main::SDK_AUTO_DEPLOYMENT = uc <STDIN>;
526cdf0e10cSrcweir        chop($main::SDK_AUTO_DEPLOYMENT);
527cdf0e10cSrcweir        if ( $main::SDK_AUTO_DEPLOYMENT eq "" )
528cdf0e10cSrcweir        {
529cdf0e10cSrcweir			$main::SDK_AUTO_DEPLOYMENT = "YES";
530cdf0e10cSrcweir        }
531cdf0e10cSrcweir    }
532cdf0e10cSrcweir}
533cdf0e10cSrcweirelse
534cdf0e10cSrcweir{
535cdf0e10cSrcweir    $main::SDK_AUTO_DEPLOYMENT = "NO";
536cdf0e10cSrcweir}
537cdf0e10cSrcweir
538cdf0e10cSrcweirprepareScriptFile("setsdkenv_unix.sh.in", "setsdkenv_unix.sh", 1);
539cdf0e10cSrcweirchmod 0644, "$main::OO_SDK_CONFIG_HOME/$main::hostname/setsdkenv_unix.sh";
540cdf0e10cSrcweir
541cdf0e10cSrcweirprepareScriptFile("setsdkenv_unix.csh.in", "setsdkenv_unix.csh", 2);
542cdf0e10cSrcweirchmod 0644, "$main::OO_SDK_CONFIG_HOME/$main::hostname/setsdkenv_unix.csh";
543cdf0e10cSrcweir
544cdf0e10cSrcweirprint "\n";
545cdf0e10cSrcweirprint " ************************************************************************\n";
546cdf0e10cSrcweirprint " * ... your SDK environment has been prepared.\n";
547cdf0e10cSrcweirprint " * For each time you want to use this configured SDK environment, you\n";
548cdf0e10cSrcweirprint " * have to run the \"setsdkenv_unix\" script file!\n";
549cdf0e10cSrcweirprint " * Alternatively can you source one of the scripts\n";
550cdf0e10cSrcweirprint " *   \"$main::OO_SDK_CONFIG_HOME/$main::hostname/setsdkenv_unix.sh\"\n";
551cdf0e10cSrcweirprint " *   \"$main::OO_SDK_CONFIG_HOME/$main::hostname/setsdkenv_unix.csh\"\n";
552cdf0e10cSrcweirprint " * to get an environment without starting a new shell.\n";
553cdf0e10cSrcweirprint " ************************************************************************\n\n";
554cdf0e10cSrcweir
555cdf0e10cSrcweirexit $return;
556cdf0e10cSrcweir
557cdf0e10cSrcweirsub skipChoice
558cdf0e10cSrcweir{
559cdf0e10cSrcweir	my $msg = shift;
560cdf0e10cSrcweir	my $skip = "";
561cdf0e10cSrcweir	while ( !( $skip eq "yes" || $skip eq "no") )
562cdf0e10cSrcweir	{
563cdf0e10cSrcweir		print " Do you want to skip the choice of the '$msg' (YES/NO): [YES] ";
564cdf0e10cSrcweir		$skip = lc <STDIN>;
565cdf0e10cSrcweir		chop($skip);
566cdf0e10cSrcweir		if ( $skip eq "" ) { $skip = "yes"; } # default
567cdf0e10cSrcweir		if ( $skip eq "yes" )
568cdf0e10cSrcweir		{
569cdf0e10cSrcweir			return 1;
570cdf0e10cSrcweir		}
571cdf0e10cSrcweir	}
572cdf0e10cSrcweir	return 0;
573cdf0e10cSrcweir}
574cdf0e10cSrcweir
575cdf0e10cSrcweirsub resolveLink
576cdf0e10cSrcweir{
577cdf0e10cSrcweir    my $base= shift;
578cdf0e10cSrcweir    my $link= shift;
579cdf0e10cSrcweir
580cdf0e10cSrcweir    my $resolvedpath = "$base/$link";
581cdf0e10cSrcweir    my $linktarget =  readlink "$resolvedpath";
582cdf0e10cSrcweir    my $resolvedlink = "";
583cdf0e10cSrcweir
584cdf0e10cSrcweir    while ( $linktarget ne "") {
585cdf0e10cSrcweir
586cdf0e10cSrcweir	if ( $linktarget =~ m/^\/.*/ )
587cdf0e10cSrcweir	{
588cdf0e10cSrcweir	    $resolvedpath = "$linktarget";
589cdf0e10cSrcweir	} else {
590cdf0e10cSrcweir	    $resolvedpath = `cd $base/$linktarget; pwd`;
591cdf0e10cSrcweir	    chop $resolvedpath;
592cdf0e10cSrcweir	}
593cdf0e10cSrcweir	$base = dirname("$resolvedpath");
594cdf0e10cSrcweir
595cdf0e10cSrcweir	$linktarget = readlink "$resolvedpath";
596cdf0e10cSrcweir    }
597cdf0e10cSrcweir
598cdf0e10cSrcweir    $resolvedlink = `cd $resolvedpath; pwd`;
599cdf0e10cSrcweir    chop $resolvedlink;
600cdf0e10cSrcweir    return $resolvedlink;
601cdf0e10cSrcweir}
602cdf0e10cSrcweir
603cdf0e10cSrcweirsub searchprog
604cdf0e10cSrcweir{
605cdf0e10cSrcweir	my $_search= shift;
606cdf0e10cSrcweir	my $tmpPath = `echo "\$PATH"`;
607cdf0e10cSrcweir	my @pathList = split(":" , $tmpPath);
608cdf0e10cSrcweir	my $progDir = "";
609cdf0e10cSrcweir
610cdf0e10cSrcweir    if ( $_search eq "javac" )
611cdf0e10cSrcweir    {
612cdf0e10cSrcweir		if ( $main::operatingSystem =~ m/darwin/ ) {
613cdf0e10cSrcweir			$progDir = resolveLink("/System/Library/Frameworks/JavaVM.Framework/Versions", "CurrentJDK");
614cdf0e10cSrcweir
615cdf0e10cSrcweir			if ( -e "$progDir/$main::OO_SDK_JAVA_BIN_DIR/javac" )
616cdf0e10cSrcweir			{
617cdf0e10cSrcweir				return "$progDir/$main::OO_SDK_JAVA_BIN_DIR";
618cdf0e10cSrcweir			}
619cdf0e10cSrcweir		}
620cdf0e10cSrcweir
621cdf0e10cSrcweir		if ( $main::operatingSystem =~ m/solaris/ ) {
622cdf0e10cSrcweir			$progDir = resolveLink("/usr/jdk", "latest");
623cdf0e10cSrcweir			if ( -e "$progDir/$main::OO_SDK_JAVA_BIN_DIR/javac" )
624cdf0e10cSrcweir			{
625cdf0e10cSrcweir				return "$progDir/$main::OO_SDK_JAVA_BIN_DIR";
626cdf0e10cSrcweir			}
627cdf0e10cSrcweir		}
628cdf0e10cSrcweir    }
629cdf0e10cSrcweir
630cdf0e10cSrcweir    if ( $_search eq "gmake" && $main::operatingSystem =~ m/solaris/ ) {
631cdf0e10cSrcweir		if ( -e "/usr/sfw/bin/gmake" )
632cdf0e10cSrcweir		{
633cdf0e10cSrcweir			return "/usr/sfw/bin";
634cdf0e10cSrcweir		}
635cdf0e10cSrcweir    }
636cdf0e10cSrcweir
637cdf0e10cSrcweir	foreach $i (@pathList)
638cdf0e10cSrcweir	{
639cdf0e10cSrcweir	    chomp ($i);
640cdf0e10cSrcweir
641cdf0e10cSrcweir		if ( -e "$i/$_search" )
642cdf0e10cSrcweir		{
643cdf0e10cSrcweir
644cdf0e10cSrcweir			if ( index($i, "/") == 0 )
645cdf0e10cSrcweir			{
646cdf0e10cSrcweir				# # absolute path; leave unchanged
647cdf0e10cSrcweir				$progDir = $i;
648cdf0e10cSrcweir			} else
649cdf0e10cSrcweir			{
650cdf0e10cSrcweir				$progDir = `cd "$i"; pwd`;
651cdf0e10cSrcweir			}
652cdf0e10cSrcweir			return $progDir
653cdf0e10cSrcweir		}
654cdf0e10cSrcweir	}
655cdf0e10cSrcweir	return $progDir
656cdf0e10cSrcweir}
657cdf0e10cSrcweir
658cdf0e10cSrcweirsub searchMacOffice
659cdf0e10cSrcweir{
660cdf0e10cSrcweir	if (-d "/Applications/OpenOffice.org.app" ) {
661cdf0e10cSrcweir		return "/Applications/OpenOffice.org.app"
662cdf0e10cSrcweir	}
663cdf0e10cSrcweir	if (-d "/Applications/Oracle Open Office.app" ) {
664cdf0e10cSrcweir		return "/Applications/Oracle Open Office.app";
665cdf0e10cSrcweir	}
666cdf0e10cSrcweir	if (-d "/Applications/StarOffice.app" ) {
667cdf0e10cSrcweir		return "/Applications/StarOffice.app";
668cdf0e10cSrcweir	}
669cdf0e10cSrcweir	if (-d "/Applications/StarSuite.app" ) {
670cdf0e10cSrcweir		return "/Applications/StarSuite.app";
671cdf0e10cSrcweir	}
672cdf0e10cSrcweir
673cdf0e10cSrcweir	return "";
674cdf0e10cSrcweir}
675cdf0e10cSrcweir
676cdf0e10cSrcweirsub searchoffice
677cdf0e10cSrcweir{
678cdf0e10cSrcweir	my $offset = rindex($main::sdkpath, "/openoffice.org");
679cdf0e10cSrcweir	my $tmpOffice = substr($main::sdkpath, 0, $offset);
680cdf0e10cSrcweir	my $officepath = "$tmpOffice/openoffice.org$main::OO_MAJORVERSION";
681cdf0e10cSrcweir
682cdf0e10cSrcweir#	if ( $main::OO_MINORVERSION > 0) {
683cdf0e10cSrcweir#		$officepath = "$officepath$main::OO_MINORVERSION";
684cdf0e10cSrcweir#	}
685cdf0e10cSrcweir
686cdf0e10cSrcweir	# search corresponding office for this SDK
687cdf0e10cSrcweir	if (-d $officepath && -e "$officepath/program/soffice") {
688cdf0e10cSrcweir		return $officepath;
689cdf0e10cSrcweir	}
690cdf0e10cSrcweir	# fallback
691cdf0e10cSrcweir	my $tmpversion = $main::OO_MAJORVERSION;
692cdf0e10cSrcweir#	if ( $main::OO_MINORVERSION > 0) {
693cdf0e10cSrcweir#		$tmpversion = "$tmpversion.$main::OO_MINORVERSION";
694cdf0e10cSrcweir#	}
695cdf0e10cSrcweir
696cdf0e10cSrcweir	$officepath = "$tmpOffice/oracle_open_office$tmpversion";
697cdf0e10cSrcweir	if (-d $officepath && -e "$officepath/program/soffice") {
698cdf0e10cSrcweir		return $officepath;
699cdf0e10cSrcweir	}
700cdf0e10cSrcweir
701cdf0e10cSrcweir	my $tmpversion = $main::OO_MAJORVERSION + 6;
702cdf0e10cSrcweir	if ( $main::OO_MINORVERSION > 0) {
703cdf0e10cSrcweir		$tmpversion = "$tmpversion.$main::OO_MINORVERSION";
704cdf0e10cSrcweir	}
705cdf0e10cSrcweir
706cdf0e10cSrcweir	$officepath = "$tmpOffice/staroffice$tmpversion";
707cdf0e10cSrcweir	if (-d $officepath && -e "$officepath/program/soffice") {
708cdf0e10cSrcweir		return $officepath;
709cdf0e10cSrcweir	}
710cdf0e10cSrcweir	$officepath = "$tmpOffice/StarOffice$tmpversion";
711cdf0e10cSrcweir	if (-d $officepath && -e "$officepath/program/soffice") {
712cdf0e10cSrcweir		return $officepath;
713cdf0e10cSrcweir	}
714cdf0e10cSrcweir	$officepath = "$tmpOffice/starsuite$tmpversion";
715cdf0e10cSrcweir	if (-d $officepath && -e "$officepath/program/soffice") {
716cdf0e10cSrcweir		return $officepath;
717cdf0e10cSrcweir	}
718cdf0e10cSrcweir	$officepath = "$tmpOffice/StarSuite$tmpversion";
719cdf0e10cSrcweir	if (-d $officepath && -e "$officepath/program/soffice") {
720cdf0e10cSrcweir		return $officepath;
721cdf0e10cSrcweir	}
722cdf0e10cSrcweir	$officepath = "";
723cdf0e10cSrcweir
724cdf0e10cSrcweir	# search other potential matching office versions
725cdf0e10cSrcweir	my $path = "/opt/";
726cdf0e10cSrcweir	my $entry = "";
727cdf0e10cSrcweir	my $version = "0";
728cdf0e10cSrcweir	for $entry (glob($path.'*')) {
729cdf0e10cSrcweir		## if the file is a directory
730cdf0e10cSrcweir		if( -d $entry) {
731cdf0e10cSrcweir
732cdf0e10cSrcweir		    if ($entry =~ m#(.+(o|O)ffice(\.org){0,1}(\d([\d\.]){0,2}))# ||
733cdf0e10cSrcweir			    $entry =~ m#(.+(s|S)uite(.*)(\d([\d\.]){0,2}))# )
734cdf0e10cSrcweir			{
735cdf0e10cSrcweir				if ($4 > $version) {
736cdf0e10cSrcweir					$version = $4;
737cdf0e10cSrcweir					$officepath = $entry;
738cdf0e10cSrcweir				}
739cdf0e10cSrcweir			}
740cdf0e10cSrcweir		}
741cdf0e10cSrcweir	}
742cdf0e10cSrcweir	return $officepath;
743cdf0e10cSrcweir}
744cdf0e10cSrcweir
745cdf0e10cSrcweir
746cdf0e10cSrcweir
747cdf0e10cSrcweirsub testVersion
748cdf0e10cSrcweir{
749cdf0e10cSrcweir	my $tmpMustBeVersion = shift;
750cdf0e10cSrcweir	my $tmpTestVersion = shift;
751cdf0e10cSrcweir	my $toolName = shift;
752cdf0e10cSrcweir	# 1=check + message 2=check only
753cdf0e10cSrcweir	my $checkOnly = shift;
754cdf0e10cSrcweir	my @mustBeVersion = split(/\.|_|-/,$tmpMustBeVersion);
755cdf0e10cSrcweir	my @testVersion = split(/\.|_|-/,$tmpTestVersion);
756cdf0e10cSrcweir	my $length = $#mustBeVersion;
757cdf0e10cSrcweir
758cdf0e10cSrcweir	if ($#testVersion < $#mustBeVersion) {
759cdf0e10cSrcweir	    $length = $#testVersion;
760cdf0e10cSrcweir	}
761cdf0e10cSrcweir
762cdf0e10cSrcweir	for ($i=0; $i <= $length; $i++ )
763cdf0e10cSrcweir	{
764cdf0e10cSrcweir		if ( @testVersion->[$i] > @mustBeVersion->[$i] )
765cdf0e10cSrcweir		{
766cdf0e10cSrcweir			return 1; # 1 indicates a correct version
767cdf0e10cSrcweir		}
768cdf0e10cSrcweir
769cdf0e10cSrcweir		if ( @testVersion->[$i] < @mustBeVersion->[$i] )
770cdf0e10cSrcweir		{
771cdf0e10cSrcweir			if ( $#checkOnly == 1 ) {
772cdf0e10cSrcweir				print " The command '$toolName' has the version $tmpTestVersion.\n";
773cdf0e10cSrcweir				print " The SDK requires at least the version $tmpMustBeVersion.\n";
774cdf0e10cSrcweir			}
775cdf0e10cSrcweir			return 0;
776cdf0e10cSrcweir		}
777cdf0e10cSrcweir	}
778cdf0e10cSrcweir
779cdf0e10cSrcweir	return 1; # 1 indicates a correct version
780cdf0e10cSrcweir}
781cdf0e10cSrcweir
782cdf0e10cSrcweirsub readStdIn
783cdf0e10cSrcweir{
784cdf0e10cSrcweir	my $tmpstdin = <STDIN>;
785cdf0e10cSrcweir	if ( index($tmpstdin, "\$") != -1)
786cdf0e10cSrcweir	{
787cdf0e10cSrcweir	    return `echo $tmpstdin`;
788cdf0e10cSrcweir	}
789cdf0e10cSrcweir
790cdf0e10cSrcweir	return $tmpstdin;
791cdf0e10cSrcweir}
792cdf0e10cSrcweir
793cdf0e10cSrcweirsub prepareScriptFile()
794cdf0e10cSrcweir{
795cdf0e10cSrcweir	my $inputFile = shift;
796cdf0e10cSrcweir	my $outputFile = shift;
797cdf0e10cSrcweir	# shell mode 1 = sh
798cdf0e10cSrcweir	#            2 = csh
799cdf0e10cSrcweir	my $shellMode = shift;
800cdf0e10cSrcweir
801cdf0e10cSrcweir	if ( ! -d "$main::OO_SDK_CONFIG_HOME/$main::hostname" )
802cdf0e10cSrcweir	{
803cdf0e10cSrcweir		system("mkdir -p $main::OO_SDK_CONFIG_HOME/$main::hostname");
804cdf0e10cSrcweir	}
805cdf0e10cSrcweir
806cdf0e10cSrcweir	open ( FILEIN, "$main::sdkpath/$inputFile" ) || die "\nERROR: could not open '$main::sdkpath/$inputFile' for reading";
807cdf0e10cSrcweir	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";
808cdf0e10cSrcweir
809cdf0e10cSrcweir	while ( <FILEIN> )
810cdf0e10cSrcweir	{
811cdf0e10cSrcweir		$_ =~ s#\@OO_SDK_NAME\@#$main::OO_SDK_NAME#go;
812cdf0e10cSrcweir		$_ =~ s#\@OO_SDK_HOME\@#$main::OO_SDK_HOME#go;
813cdf0e10cSrcweir		$_ =~ s#\@OFFICE_HOME\@#$main::OFFICE_HOME#go;
814cdf0e10cSrcweir		$_ =~ s#\@OFFICE_BASE_HOME\@#$main::OFFICE_BASE_HOME#go;
815cdf0e10cSrcweir		$_ =~ s#\@OO_SDK_URE_HOME\@#$main::OO_SDK_URE_HOME#go;
816cdf0e10cSrcweir		$_ =~ s#\@OO_SDK_MAKE_HOME\@#$main::OO_SDK_MAKE_HOME#go;
817cdf0e10cSrcweir		$_ =~ s#\@OO_SDK_ZIP_HOME\@#$main::OO_SDK_ZIP_HOME#go;
818cdf0e10cSrcweir		$_ =~ s#\@OO_SDK_CPP_HOME\@#$main::OO_SDK_CPP_HOME#go;
819cdf0e10cSrcweir		$_ =~ s#\@OO_SDK_CC_55_OR_HIGHER\@#$main::OO_SDK_CC_55_OR_HIGHER#go;
820cdf0e10cSrcweir		$_ =~ s#\@OO_SDK_JAVA_HOME\@#$main::OO_SDK_JAVA_HOME#go;
821cdf0e10cSrcweir		$_ =~ s#\@SDK_AUTO_DEPLOYMENT\@#$main::SDK_AUTO_DEPLOYMENT#go;
822cdf0e10cSrcweir		$_ =~ s#\@OO_SDK_OUTPUT_DIR\@#$main::OO_SDK_OUTPUT_DIR#go;
823cdf0e10cSrcweir
824cdf0e10cSrcweir		print FILEOUT $_;
825cdf0e10cSrcweir	}
826cdf0e10cSrcweir
827cdf0e10cSrcweir	close FILEIN;
828cdf0e10cSrcweir	close FILEOUT;
829cdf0e10cSrcweir}
830