xref: /aoo4110/main/soltools/testhxx/create.pl (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski#**************************************************************
2*b1cdbd2cSJim Jagielski#
3*b1cdbd2cSJim Jagielski#  Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski#  or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski#  distributed with this work for additional information
6*b1cdbd2cSJim Jagielski#  regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski#  to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski#  "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski#  with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski#
11*b1cdbd2cSJim Jagielski#    http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski#
13*b1cdbd2cSJim Jagielski#  Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski#  software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski#  KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski#  specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski#  under the License.
19*b1cdbd2cSJim Jagielski#
20*b1cdbd2cSJim Jagielski#**************************************************************
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski$solarversion = $ENV{SOLARVERSION};
25*b1cdbd2cSJim Jagielski$solarversion =~ s![^0-9A-Za-z]!\\$&!g;
26*b1cdbd2cSJim Jagielski$in = <> || die 'no input';
27*b1cdbd2cSJim Jagielskichomp $in;
28*b1cdbd2cSJim Jagielskiif ($ENV{OS} eq 'LINUX') {
29*b1cdbd2cSJim Jagielski    1 while $in =~ s!\s+-I\s*[^/]\S*\s*! !g; # discard relative includes
30*b1cdbd2cSJim Jagielski    $in =~ s!(\s+-I\s*)$solarversion(\S*)!$1\${SOLARVERSION}$2!og;
31*b1cdbd2cSJim Jagielski        # macrofy includes to solver
32*b1cdbd2cSJim Jagielski    $in =~ s!\s+-o\s*\S+! -o /dev/null! || die 'bad input: no -o';
33*b1cdbd2cSJim Jagielski    $in =~ s!\S+/testhxx.cxx!-x c++ /proc/self/fd/0!
34*b1cdbd2cSJim Jagielski        || die 'bad input: no source file';
35*b1cdbd2cSJim Jagielski    print STDOUT '#!/bin/sh', "\n";
36*b1cdbd2cSJim Jagielski    print STDOUT $in,
37*b1cdbd2cSJim Jagielski        ' <<<"#include \\"`echo $(if [ ${1%/*} != $1 ];then cd ${1%/*};fi;',
38*b1cdbd2cSJim Jagielski        '/bin/pwd)/${1##*/}`\\""', "\n";
39*b1cdbd2cSJim Jagielski} elsif ($ENV{OS} eq 'SOLARIS') {
40*b1cdbd2cSJim Jagielski    1 while $in =~ s!\s+-I\s*[^/]\S*\s*! !g; # discard relative includes
41*b1cdbd2cSJim Jagielski    $in =~ s!(\s+-I\s*)$solarversion(\S*)!$1\${SOLARVERSION}$2!og;
42*b1cdbd2cSJim Jagielski        # macrofy includes to solver
43*b1cdbd2cSJim Jagielski    $in =~ s!\s+-o\s*\S+! -o /dev/null! || die 'bad input: no -o';
44*b1cdbd2cSJim Jagielski    $in =~ s!\S+/testhxx.cxx!\${my_tmp}!
45*b1cdbd2cSJim Jagielski        || die 'bad input: no source file';
46*b1cdbd2cSJim Jagielski    print STDOUT '#!/bin/sh', "\n";
47*b1cdbd2cSJim Jagielski    print STDOUT
48*b1cdbd2cSJim Jagielski        'my_tmp=${TMPDIR:-/tmp}/`/usr/xpg4/bin/id -u`_$$_include.cc', "\n";
49*b1cdbd2cSJim Jagielski    print STDOUT 'my_pat=`dirname $1`', "\n";
50*b1cdbd2cSJim Jagielski    print STDOUT 'my_fil=`basename $1`', "\n";
51*b1cdbd2cSJim Jagielski    print STDOUT 'my_org=${PWD}', "\n";
52*b1cdbd2cSJim Jagielski    print STDOUT 'cd $my_pat || exit 1', "\n";
53*b1cdbd2cSJim Jagielski    print STDOUT 'my_pat=`pwd`', "\n";
54*b1cdbd2cSJim Jagielski    print STDOUT 'cd $my_org || exit 1', "\n";
55*b1cdbd2cSJim Jagielski    print STDOUT
56*b1cdbd2cSJim Jagielski        'echo "#include \\"${my_pat}/${my_fil}\\"" > ${my_tmp} || exit 1', "\n";
57*b1cdbd2cSJim Jagielski    print STDOUT $in, ' > ${my_tmp}.out 2>&1', "\n";
58*b1cdbd2cSJim Jagielski    print STDOUT 'my_ret=$?', "\n";
59*b1cdbd2cSJim Jagielski    print STDOUT
60*b1cdbd2cSJim Jagielski        'if [ ${my_ret} -ne 0 ] ; then echo $1 >&2 ; cat ${my_tmp}.out >&2 ;',
61*b1cdbd2cSJim Jagielski        ' fi', "\n";
62*b1cdbd2cSJim Jagielski    print STDOUT 'unlink ${my_tmp} || exit 1', "\n";
63*b1cdbd2cSJim Jagielski    print STDOUT 'unlink ${my_tmp}.out || exit 1', "\n";
64*b1cdbd2cSJim Jagielski    print STDOUT 'exit ${my_ret}', "\n";
65*b1cdbd2cSJim Jagielski} elsif ($ENV{OS} eq 'WNT') {
66*b1cdbd2cSJim Jagielski  if ($ENV{COM} eq 'GCC') {
67*b1cdbd2cSJim Jagielski    1 while $in =~ s!\s+-I\s*\.\S*\s*! !g; # discard relative includes
68*b1cdbd2cSJim Jagielski    $in =~ s!(\s+-I\s*)(?i:$solarversion)(\S*)!$1\${SOLARVERSION}$2!og;
69*b1cdbd2cSJim Jagielski        # macrofy includes to solver
70*b1cdbd2cSJim Jagielski    $in =~ s!\s+-o\s*\S+! -o /dev/null! || die 'bad input: no -o';
71*b1cdbd2cSJim Jagielski    $in =~ s!\S+/testhxx.cxx!\${my_tmp}!
72*b1cdbd2cSJim Jagielski        || die 'bad input: no source file';
73*b1cdbd2cSJim Jagielski    print STDOUT '#!/bin/sh', "\n";
74*b1cdbd2cSJim Jagielski    print STDOUT
75*b1cdbd2cSJim Jagielski        'my_tmp=${TMPDIR:-/tmp}/`id -u`_$$_include.cc', "\n";
76*b1cdbd2cSJim Jagielski    print STDOUT 'my_pat=`dirname $1`', "\n";
77*b1cdbd2cSJim Jagielski    print STDOUT 'my_fil=`basename $1`', "\n";
78*b1cdbd2cSJim Jagielski    print STDOUT 'my_org=${PWD}', "\n";
79*b1cdbd2cSJim Jagielski    print STDOUT 'cd $my_pat || exit 1', "\n";
80*b1cdbd2cSJim Jagielski    print STDOUT 'my_pat=`cygpath -m \`pwd\``', "\n";
81*b1cdbd2cSJim Jagielski    print STDOUT 'cd $my_org || exit 1', "\n";
82*b1cdbd2cSJim Jagielski    print STDOUT
83*b1cdbd2cSJim Jagielski        'echo "#include \\"${my_pat}/${my_fil}\\"" > ${my_tmp} || exit 1', "\n";
84*b1cdbd2cSJim Jagielski    print STDOUT $in, ' > ${my_tmp}.out 2>&1', "\n";
85*b1cdbd2cSJim Jagielski    print STDOUT 'my_ret=$?', "\n";
86*b1cdbd2cSJim Jagielski    print STDOUT
87*b1cdbd2cSJim Jagielski        'if [ ${my_ret} -ne 0 ] ; then echo $1 >&2 ; cat ${my_tmp}.out >&2 ;',
88*b1cdbd2cSJim Jagielski        ' fi', "\n";
89*b1cdbd2cSJim Jagielski    print STDOUT 'unlink ${my_tmp} || exit 1', "\n";
90*b1cdbd2cSJim Jagielski    print STDOUT 'unlink ${my_tmp}.out || exit 1', "\n";
91*b1cdbd2cSJim Jagielski    print STDOUT 'exit ${my_ret}', "\n";
92*b1cdbd2cSJim Jagielski  } else {
93*b1cdbd2cSJim Jagielski    1 while $in =~ s!\s+-I\s*\.\S*\s*! !g; # discard relative includes
94*b1cdbd2cSJim Jagielski    $in =~ s!(\s+-I\s*)(?i:$solarversion)(\S*)!$1\${SOLARVERSION}$2!og;
95*b1cdbd2cSJim Jagielski        # macrofy includes to solver
96*b1cdbd2cSJim Jagielski    $in =~ s!\s+-Fo\s*\S+! -Fo$[my_tmp}obj! || die 'bad input: no -Fo';
97*b1cdbd2cSJim Jagielski    $in =~ s!\s+-Zi\s! !;
98*b1cdbd2cSJim Jagielski    $in =~ s!\s+-Fd\s*\S+!!;
99*b1cdbd2cSJim Jagielski    print STDOUT '#!/bin/sh', "\n";
100*b1cdbd2cSJim Jagielski    print STDOUT
101*b1cdbd2cSJim Jagielski        'my_tmp=${TMPDIR:-/tmp}/`id -u`_$$_include.cc', "\n";
102*b1cdbd2cSJim Jagielski    print STDOUT 'my_pat=`dirname $1`', "\n";
103*b1cdbd2cSJim Jagielski    print STDOUT 'my_fil=`basename $1`', "\n";
104*b1cdbd2cSJim Jagielski    print STDOUT 'my_org=${PWD}', "\n";
105*b1cdbd2cSJim Jagielski    print STDOUT 'cd $my_pat || exit 1', "\n";
106*b1cdbd2cSJim Jagielski    print STDOUT 'my_pat=`pwd`', "\n";
107*b1cdbd2cSJim Jagielski    print STDOUT 'cd $my_org || exit 1', "\n";
108*b1cdbd2cSJim Jagielski    print STDOUT
109*b1cdbd2cSJim Jagielski        'echo "#include \\"${my_pat}/${my_fil}\\"" > ${my_tmp} || exit 1', "\n";
110*b1cdbd2cSJim Jagielski    print STDOUT $in, ' > ${my_tmp}.out 2>&1', "\n";
111*b1cdbd2cSJim Jagielski    print STDOUT 'my_ret=$?', "\n";
112*b1cdbd2cSJim Jagielski    print STDOUT
113*b1cdbd2cSJim Jagielski        'if [ ${my_ret} -ne 0 ] ; then echo $1 >&2 ; cat ${my_tmp}.out >&2 ;',
114*b1cdbd2cSJim Jagielski        ' fi', "\n";
115*b1cdbd2cSJim Jagielski    print STDOUT 'unlink ${my_tmp} || exit 1', "\n";
116*b1cdbd2cSJim Jagielski    print STDOUT 'unlink ${my_tmp}.out || exit 1', "\n";
117*b1cdbd2cSJim Jagielski    print STDOUT 'exit ${my_ret}', "\n";
118*b1cdbd2cSJim Jagielski  }
119*b1cdbd2cSJim Jagielski} else {
120*b1cdbd2cSJim Jagielski    print STDOUT 'echo \'no testhxx on this platform\'', "\n";
121*b1cdbd2cSJim Jagielski}
122