xref: /AOO41X/main/soltools/testhxx/create.pl (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir#*************************************************************************
2*cdf0e10cSrcweir#
3*cdf0e10cSrcweir# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir#
5*cdf0e10cSrcweir# Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir#
7*cdf0e10cSrcweir# OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir#
9*cdf0e10cSrcweir# This file is part of OpenOffice.org.
10*cdf0e10cSrcweir#
11*cdf0e10cSrcweir# OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir# it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir# only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir#
15*cdf0e10cSrcweir# OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir# but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir# GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir# (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir#
21*cdf0e10cSrcweir# You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir# version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir# <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir# for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir#
26*cdf0e10cSrcweir#*************************************************************************
27*cdf0e10cSrcweir
28*cdf0e10cSrcweir$solarversion = $ENV{SOLARVERSION};
29*cdf0e10cSrcweir$solarversion =~ s![^0-9A-Za-z]!\\$&!g;
30*cdf0e10cSrcweir$in = <> || die 'no input';
31*cdf0e10cSrcweirchomp $in;
32*cdf0e10cSrcweirif ($ENV{OS} eq 'LINUX') {
33*cdf0e10cSrcweir    1 while $in =~ s!\s+-I\s*[^/]\S*\s*! !g; # discard relative includes
34*cdf0e10cSrcweir    $in =~ s!(\s+-I\s*)$solarversion(\S*)!$1\${SOLARVERSION}$2!og;
35*cdf0e10cSrcweir        # macrofy includes to solver
36*cdf0e10cSrcweir    $in =~ s!\s+-o\s*\S+! -o /dev/null! || die 'bad input: no -o';
37*cdf0e10cSrcweir    $in =~ s!\S+/testhxx.cxx!-x c++ /proc/self/fd/0!
38*cdf0e10cSrcweir        || die 'bad input: no source file';
39*cdf0e10cSrcweir    print STDOUT '#!/bin/bash', "\n";
40*cdf0e10cSrcweir    print STDOUT $in,
41*cdf0e10cSrcweir        ' <<<"#include \\"`echo $(if [ ${1%/*} != $1 ];then cd ${1%/*};fi;',
42*cdf0e10cSrcweir        '/bin/pwd)/${1##*/}`\\""', "\n";
43*cdf0e10cSrcweir} elsif ($ENV{OS} eq 'SOLARIS') {
44*cdf0e10cSrcweir    1 while $in =~ s!\s+-I\s*[^/]\S*\s*! !g; # discard relative includes
45*cdf0e10cSrcweir    $in =~ s!(\s+-I\s*)$solarversion(\S*)!$1\${SOLARVERSION}$2!og;
46*cdf0e10cSrcweir        # macrofy includes to solver
47*cdf0e10cSrcweir    $in =~ s!\s+-o\s*\S+! -o /dev/null! || die 'bad input: no -o';
48*cdf0e10cSrcweir    $in =~ s!\S+/testhxx.cxx!\${my_tmp}!
49*cdf0e10cSrcweir        || die 'bad input: no source file';
50*cdf0e10cSrcweir    print STDOUT '#!/bin/sh', "\n";
51*cdf0e10cSrcweir    print STDOUT
52*cdf0e10cSrcweir        'my_tmp=${TMPDIR:-/tmp}/`/usr/xpg4/bin/id -u`_$$_include.cc', "\n";
53*cdf0e10cSrcweir    print STDOUT 'my_pat=`dirname $1`', "\n";
54*cdf0e10cSrcweir    print STDOUT 'my_fil=`basename $1`', "\n";
55*cdf0e10cSrcweir    print STDOUT 'my_org=${PWD}', "\n";
56*cdf0e10cSrcweir    print STDOUT 'cd $my_pat || exit 1', "\n";
57*cdf0e10cSrcweir    print STDOUT 'my_pat=`pwd`', "\n";
58*cdf0e10cSrcweir    print STDOUT 'cd $my_org || exit 1', "\n";
59*cdf0e10cSrcweir    print STDOUT
60*cdf0e10cSrcweir        'echo "#include \\"${my_pat}/${my_fil}\\"" > ${my_tmp} || exit 1', "\n";
61*cdf0e10cSrcweir    print STDOUT $in, ' > ${my_tmp}.out 2>&1', "\n";
62*cdf0e10cSrcweir    print STDOUT 'my_ret=$?', "\n";
63*cdf0e10cSrcweir    print STDOUT
64*cdf0e10cSrcweir        'if [ ${my_ret} -ne 0 ] ; then echo $1 >&2 ; cat ${my_tmp}.out >&2 ;',
65*cdf0e10cSrcweir        ' fi', "\n";
66*cdf0e10cSrcweir    print STDOUT 'unlink ${my_tmp} || exit 1', "\n";
67*cdf0e10cSrcweir    print STDOUT 'unlink ${my_tmp}.out || exit 1', "\n";
68*cdf0e10cSrcweir    print STDOUT 'exit ${my_ret}', "\n";
69*cdf0e10cSrcweir} elsif ($ENV{OS} eq 'WNT') {
70*cdf0e10cSrcweir  if ($ENV{COM} eq 'GCC') {
71*cdf0e10cSrcweir    1 while $in =~ s!\s+-I\s*\.\S*\s*! !g; # discard relative includes
72*cdf0e10cSrcweir    $in =~ s!(\s+-I\s*)(?i:$solarversion)(\S*)!$1\${SOLARVERSION}$2!og;
73*cdf0e10cSrcweir        # macrofy includes to solver
74*cdf0e10cSrcweir    $in =~ s!\s+-o\s*\S+! -o /dev/null! || die 'bad input: no -o';
75*cdf0e10cSrcweir    $in =~ s!\S+/testhxx.cxx!\${my_tmp}!
76*cdf0e10cSrcweir        || die 'bad input: no source file';
77*cdf0e10cSrcweir    print STDOUT '#!/bin/sh', "\n";
78*cdf0e10cSrcweir    print STDOUT
79*cdf0e10cSrcweir        'my_tmp=${TMPDIR:-/tmp}/`id -u`_$$_include.cc', "\n";
80*cdf0e10cSrcweir    print STDOUT 'my_pat=`dirname $1`', "\n";
81*cdf0e10cSrcweir    print STDOUT 'my_fil=`basename $1`', "\n";
82*cdf0e10cSrcweir    print STDOUT 'my_org=${PWD}', "\n";
83*cdf0e10cSrcweir    print STDOUT 'cd $my_pat || exit 1', "\n";
84*cdf0e10cSrcweir    print STDOUT 'my_pat=`cygpath -m \`pwd\``', "\n";
85*cdf0e10cSrcweir    print STDOUT 'cd $my_org || exit 1', "\n";
86*cdf0e10cSrcweir    print STDOUT
87*cdf0e10cSrcweir        'echo "#include \\"${my_pat}/${my_fil}\\"" > ${my_tmp} || exit 1', "\n";
88*cdf0e10cSrcweir    print STDOUT $in, ' > ${my_tmp}.out 2>&1', "\n";
89*cdf0e10cSrcweir    print STDOUT 'my_ret=$?', "\n";
90*cdf0e10cSrcweir    print STDOUT
91*cdf0e10cSrcweir        'if [ ${my_ret} -ne 0 ] ; then echo $1 >&2 ; cat ${my_tmp}.out >&2 ;',
92*cdf0e10cSrcweir        ' fi', "\n";
93*cdf0e10cSrcweir    print STDOUT 'unlink ${my_tmp} || exit 1', "\n";
94*cdf0e10cSrcweir    print STDOUT 'unlink ${my_tmp}.out || exit 1', "\n";
95*cdf0e10cSrcweir    print STDOUT 'exit ${my_ret}', "\n";
96*cdf0e10cSrcweir  } else {
97*cdf0e10cSrcweir    1 while $in =~ s!\s+-I\s*\.\S*\s*! !g; # discard relative includes
98*cdf0e10cSrcweir    $in =~ s!(\s+-I\s*)(?i:$solarversion)(\S*)!$1\${SOLARVERSION}$2!og;
99*cdf0e10cSrcweir        # macrofy includes to solver
100*cdf0e10cSrcweir    $in =~ s!\s+-Fo\s*\S+! -Fo$[my_tmp}obj! || die 'bad input: no -Fo';
101*cdf0e10cSrcweir    $in =~ s!\s+-Zi\s! !;
102*cdf0e10cSrcweir    $in =~ s!\s+-Fd\s*\S+!!;
103*cdf0e10cSrcweir    print STDOUT '#!/bin/sh', "\n";
104*cdf0e10cSrcweir    print STDOUT
105*cdf0e10cSrcweir        'my_tmp=${TMPDIR:-/tmp}/`id -u`_$$_include.cc', "\n";
106*cdf0e10cSrcweir    print STDOUT 'my_pat=`dirname $1`', "\n";
107*cdf0e10cSrcweir    print STDOUT 'my_fil=`basename $1`', "\n";
108*cdf0e10cSrcweir    print STDOUT 'my_org=${PWD}', "\n";
109*cdf0e10cSrcweir    print STDOUT 'cd $my_pat || exit 1', "\n";
110*cdf0e10cSrcweir    print STDOUT 'my_pat=`pwd`', "\n";
111*cdf0e10cSrcweir    print STDOUT 'cd $my_org || exit 1', "\n";
112*cdf0e10cSrcweir    print STDOUT
113*cdf0e10cSrcweir        'echo "#include \\"${my_pat}/${my_fil}\\"" > ${my_tmp} || exit 1', "\n";
114*cdf0e10cSrcweir    print STDOUT $in, ' > ${my_tmp}.out 2>&1', "\n";
115*cdf0e10cSrcweir    print STDOUT 'my_ret=$?', "\n";
116*cdf0e10cSrcweir    print STDOUT
117*cdf0e10cSrcweir        'if [ ${my_ret} -ne 0 ] ; then echo $1 >&2 ; cat ${my_tmp}.out >&2 ;',
118*cdf0e10cSrcweir        ' fi', "\n";
119*cdf0e10cSrcweir    print STDOUT 'unlink ${my_tmp} || exit 1', "\n";
120*cdf0e10cSrcweir    print STDOUT 'unlink ${my_tmp}.out || exit 1', "\n";
121*cdf0e10cSrcweir    print STDOUT 'exit ${my_ret}', "\n";
122*cdf0e10cSrcweir  }
123*cdf0e10cSrcweir} else {
124*cdf0e10cSrcweir    print STDOUT 'echo \'no testhxx on this platform\'', "\n";
125*cdf0e10cSrcweir}
126