xref: /aoo41x/main/odk/configure.pl (revision ed9d7cbe)
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