I cannot seem to figure out which <limits> integer_fw.hpp is using on my
system. I put the following in scopeguard.cxx and received a
void ScopeGuard::dismiss()
{
struct Dummy{} dummy = ::std::numeric_limits<unsigned char>::digits;
m_func.clear();
}
Here is the output.
bash-3.2# make
mkdir -p
/opt/aoo-4.0.0/main/solver/400/unxsoli4.pro/workdir/Dep/CxxObject/comphelper/source/misc/
&& echo
'/opt/aoo-4.0.0/main/solver/400/unxsoli4.pro/workdir/CxxObject/comphelper/source/misc/scopeguard.o
: $(gb_Helper_PHONY)' >
/opt/aoo-4.0.0/main/solver/400/unxsoli4.pro/workdir/Dep/CxxObject/comphelper/source/misc/scopeguard.d
[ build DEP ] LNK:Library/libcomphelpC52.so
R=/opt/aoo-4.0.0 && S=$R/main && O=$S/solver/400/unxsoli4.pro && W=$O/workdir
&& mkdir -p $W/Dep/LinkTarget/Library/ && RESPONSEFILE=/tmp/gbuild.roTO8o &&
cat ${RESPONSEFILE} /dev/null | xargs -n 200 cat >
$W/Dep/LinkTarget/Library/libcomphelpC52.so.d && rm -f ${RESPONSEFILE}
[ build CXX ] comphelper/source/misc/scopeguard
R=/opt/aoo-4.0.0 && S=$R/main && O=$S/solver/400/unxsoli4.pro && W=$O/workdir
&& mkdir -p $W/CxxObject/comphelper/source/misc/ && mkdir -p
$W/Dep/CxxObject/comphelper/source/misc/ && /opt/solarisstudio12.3/bin/CC -DC52
-DCPPU_ENV=sunpro5 -DCUI -DENABLE_GTK -DENABLE_LAYOUT=0
-DENABLE_LAYOUT_EXPERIMENTAL=0 -DINTEL -DNDEBUG -DOPTIMIZE -DOSL_DEBUG_LEVEL=0
-DPRODUCT -DPRODUCT_FULL -DSOLARIS -DSOLAR_JAVA -DSTLPORT_VERSION=400 -DSUN
-DSUN4 -DSUPD=400 -DSYSV -DUNIX -DUNX -DVCL -D_POSIX_PTHREAD_SEMANTICS
-D_PTHREADS -D_REENTRANT -DCOMPHELPER_DLLIMPLEMENTATION -DUNX -temp=/tmp
-KPIC -mt -xldscope=hidden -features=no%altspell -library=no%Cstd +w2
-erroff=doubunder,identexpected,inllargeuse,inllargeint,notemsource,reftotemp,truncwarn,wnoretvalue,anonnotype
-DEXCEPTIONS_ON -xarch=generic -xO3 -c
$S/comphelper/source/misc/scopeguard.cxx -o
$W/CxxObject/comphelper/source/misc/scopeguard.o -xMMD -xMF
$W/Dep/CxxObject/comphelper/source/misc/scopeguard.d
-I$S/comphelper/source/misc/ -I$O/inc/stl -I$O/inc/stl -I$S/comphelper/inc/pch
-I$S/comphelper/source/inc -I$O/inc/external -I$O/inc -I$S/solenv/unxsoli4/inc
-I$S/solenv/inc -I$S/res -I/opt/solarisstudio12.3/include -I$S/solenv/inc/Xp31
-I/usr/jdk/latest/include -I/usr/jdk/latest/include/solaris
-I/usr/jdk/latest/include/native_threads/include: -I/usr/local/include
-I/usr/include -I/usr/local/include/boost
-I/opt/solarisstudio12.3/prod/include/CC/Cstd/ -I/usr/local/include/rasqal:
-I/usr/local/include -I/usr/include -I/usr/local/include/boost
-I/usr/local/include/rasqal -I/usr/include/stdcxx4 -I$O/inc/offuh
"/usr/local/include/boost/integer_fwd.hpp", line 138: Error: Illegal value for
template parameter.
"/usr/local/include/boost/integer_fwd.hpp", line 138: Error: Cannot use class
specialization with non-classes.
"/opt/aoo-4.0.0/main/comphelper/source/misc/scopeguard.cxx", line 63: Error:
Cannot use const int to initialize Dummy.
3 Error(s) detected.
make: ***
[/opt/aoo-4.0.0/main/solver/400/unxsoli4.pro/workdir/CxxObject/comphelper/source/misc/scopeguard.o]
Error 2
I did a search for all the limits files on my system. Here are the results.:
bash-3.2# find / -name limits
/usr/sfw/include/c++/3.4.3/limits
/usr/include/stdcxx4/limits
/usr/local/include/boost/mpl/limits
/usr/local/include/boost/tr1/tr1/limits
/usr/local/include/boost_52/mpl/limits
/usr/local/include/boost_52/tr1/tr1/limits
/usr/local/gcc-4.8.1/include/c++/4.8.1/limits
/opt/aoo-4.0.0/main/stlport/unxsoli4.pro/inc/stlport/limits
/opt/aoo-4.0.0/main/stlport/unxsoli4.pro/inc/stlport/SC5/limits
/opt/aoo-4.0.0/main/stlport/unxsoli4.pro/misc/build/STLport-4.0/stlport/limits
/opt/aoo-4.0.0/main/stlport/unxsoli4.pro/misc/build/STLport-4.0/stlport/SC5/limits
/opt/aoo-4.0.0/main/solver/400/unxsoli4.pro/inc/stl/limits
/opt/aoodeps/perl-5.18.1/cpan/Devel-PPPort/parts/inc/limits
/opt/aoodeps/STLport-5.2.1/stlport/limits
/opt/aoodeps/boost_1_48_0/boost/mpl/limits
/opt/aoodeps/boost_1_48_0/boost/tr1/tr1/limits
/opt/aoodeps/gcc-4.8.1/libstdc++-v3/testsuite/18_support/headers/limits
/opt/aoodeps/gcc-4.8.1/libstdc++-v3/include/std/limits
/opt/solarisstudio12.3/prod/include/CC/Cstd/limits
/opt/solarisstudio12.3/prod/include/CC/stlport4/limits
/boost_1_54_0/boost/mpl/limits
/boost_1_54_0/boost/tr1/tr1/limits
/gcc-4.8.1.OLD/include/c++/4.8.1/limits
Lastly,
The following patch seems to address the erf() issue. I edited
/opt/aoo-4.0./main/solver/400/unxsoli4.pro/inc/vigra/config.hxx with the
following and it seems to compile without error. However, isn't
/opt/aoo-4.0.0/main/solver/400/unxsoli4.pro/inc/vigra/config.hxx generated by
the build. Should this be modified somewhere else?
///////////////////////////////////////////////////////////
// //
// Sun C++ ??? //
// //
///////////////////////////////////////////////////////////
-#if defined(__sun) && !defined(__GNUC__)
- #define VIGRA_HAS_ERF
-#endif // __sun
+#if 0 // #i123228# let vigra provide the erf() function
+#if defined(__sun) && !defined(__GNUC__)
+ #define VIGRA_HAS_ERF
+ #endif // __sun
+#endif
________________________________________
From: Herbert Duerr [[email protected]]
Sent: Tuesday, September 10, 2013 4:29 AM
To: [email protected]
Cc: Steele, Raymond
Subject: Re: EXTERNAL: Re: Building comphelper
Hi Raymond,
On 09.09.2013 19:13, Steele, Raymond wrote:
> Thanks for the information. I attached the new mathconf.h file with your
> patch. I then did a clean build and it compiles without error.
Good. I created an issue ("Adaptions for building AOO 4.0.0 on Solaris")
for all such adaptions that we'll find. I already attached the patch for
mathconf.h there.
[1] https://issues.apache.org/ooo/show_bug.cgi?id=123228
> I am
> not sure about what you'd like me to provide when you say , " Of course
> it would also interesting to know what type
> ::std::numeric_limits<unsigned char>::digits on that platform." Could
> you provide more details? Thanks.
In your platform's <limits> include file there are probably
specializations for numeric_limits template. The symptoms of the error
message look as if there was no template specialization for
numeric_limits<unsigned char>. Is this so? Please check the <limits>
include file. In case you are using gcc then you could use the "-E"
option to see the preprocessed source (with the <limits> file included).
Another trick is to create a line
struct Dummy{} dummy = ::std::numeric_limits<unsigned char>::digits;
in one of the functions and when compiling there will be an error
message about an invalid assignment that hopefully provides enough
detail about the type of this digits member.
> Also,
>
> I've found a couple other things that you may be interested in.
Sure. I suggest to collect these findings in the newly created task
123228 I referenced above [1].
> 1. The generated bootstrap script will not execute after configure
> because of like 64. I've had to change it like this:
>
> - dmake_full_package_name=$(find $TARFILE_LOCATION
> -type f -name "*-$dmake_package_name")
>
> + dmake_full_package_name=`find $TARFILE_LOCATION
> -type f -name "*-$dmake_package_name"`
Good. I attached this patch to issue [1] too. It replaces the bash-ism
with generic shell code.
> 2. I keep receiving the following each time I do a clean build:
> [...]
> Compiling: basebmp/source/bitmapdevice.cxx
> "/opt/aoo-4.0.0/main/solver/400/unxsoli4.pro/inc/vigra/mathutil.hxx",
> line 801: Error: erf is not a member of _STL.
According to the C99 standard the error function erf() should be
provided via math.h. If this is not so then vigra could provide the
function itself if the macro VIGRA_HAS_ERF was not defined. For some
reason that macro gets defined for Solaris in
/opt/aoo-4.0.0/main/solver/400/unxsoli4.pro/inc/vigra/config.hxx
for __sun && !__GNUC__ Vigra's commit message regarding this was
"added configs for Sun C++ (very incomplete)
which shows that there is room for improvement. I added an experimental
patch for vigra to the issue [1]. Please try it out.
Herbert
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]