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 [h...@apache.org] Sent: Tuesday, September 10, 2013 4:29 AM To: dev@openoffice.apache.org 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: dev-unsubscr...@openoffice.apache.org For additional commands, e-mail: dev-h...@openoffice.apache.org