On 20 Apr 2016, at 10:28, mr <m...@freebsd.org> wrote: > since the last update kicad seems to use GLM (math/glm) additionaly. > Compiling under FreeBSD-10 works FreeBSD-9 not. > > A bugreport ( https://bugs.launchpad.net/kicad/+bug/1571393 ) for kicad got > closed because of: > ... > As reported this doesn't appear to be a Kicad bug, so i will close this > bug, the problems are from GLM which may be better at providing support in > this case. > ... > > Since GLM is the same in ports on FreeBSD-9/10 the Issue is probably due to > the way FreeBSD handles the compiler/settings... > > The difference seems to be that FreeBSD-10 chooses the base clang++ as > compiler, FreeBSD-9 uses g++48 from ports as compiler. > In the Makefile I have 'USES=...compiler:c++11-lib...'. > Shouldn't this be sufficient to select the appropriate compiler/settings?
Yes, that looks about right. > Compiling under FreeBSD-9 gives: > ... > > [ 34%] Building CXX object common/CMakeFiles/gal.dir/draw_panel_gal.cpp.o > cd /wrkdirs/usr/ports/cad/kicad-devel/work/kicad-r6694/common && > /usr/local/bin/g++48 -DHAVE_STDINT_H -DKICAD_KEEPCASE -DUSE_OPENMP > -DWXUSINGDLL -DWX_COMPATIBILITY -D_FILE_OFFSET_BITS=64 -D_THREAD_SAFE > -D__WXGTK__ -I/wrkdirs/usr/ports/cad/kicad-devel/work/kicad-r6694/include > -I/wrkdirs/usr/ports/cad/kicad-devel/work/kicad-r6694/common/. -isystem > /usr/local/lib/wx/include/gtk2-unicode-3.0 -isystem > /usr/local/include/wx-3.0 > -I/wrkdirs/usr/ports/cad/kicad-devel/work/kicad-r6694/common/./dialogs > -I/wrkdirs/usr/ports/cad/kicad-devel/work/kicad-r6694/common/./widgets > -I/wrkdirs/usr/ports/cad/kicad-devel/work/kicad-r6694/common/./dialog_about > -I/usr/local/include/cairo -I/usr/local/include > -I/wrkdirs/usr/ports/cad/kicad-devel/work/kicad-r6694/common/../3d-viewer > -I/wrkdirs/usr/ports/cad/kicad-devel/work/kicad-r6694/common/../pcbnew > -I/wrkdirs/usr/ports/cad/kicad-devel/work/kicad-r6694/common/../polygon > -I/wrkdirs/usr/ports/cad/kicad-devel/work/kicad-r6694 -I/usr/local/include > -Wall -O2 -pipe -fstack-protector -Wl,-rpath=/usr/local/lib/gcc48 > -fno-strict-aliasing -Wl,-rpath=/usr/local/lib/gcc48 > -Wno-unused-local-typedefs -Wno-strict-aliasing -fopenmp -pthread -O2 -pipe > -fstack-protector -Wl,-rpath=/usr/local/lib/gcc48 -fno-strict-aliasing > -Wl,-rpath=/usr/local/lib/gcc48 -DNDEBUG -fPIC -fvisibility=hidden > -fvisibility-inlines-hidden -std=gnu++11 -o > CMakeFiles/gal.dir/draw_panel_gal.cpp.o -c > /wrkdirs/usr/ports/cad/kicad-devel/work/kicad-r6694/common/draw_panel_gal.cpp > In file included from > /usr/local/include/glm/detail/func_exponential.hpp:132:0, > from /usr/local/include/glm/detail/func_geometric.inl:33, > from /usr/local/include/glm/detail/func_geometric.hpp:142, > from /usr/local/include/glm/geometric.hpp:35, > from /usr/local/include/glm/gtc/matrix_transform.inl:33, > from /usr/local/include/glm/gtc/matrix_transform.hpp:394, > from > /wrkdirs/usr/ports/cad/kicad-devel/work/kicad-r6694/include/gal/opengl/vertex_manager.h:35, > from > /wrkdirs/usr/ports/cad/kicad-devel/work/kicad-r6694/include/gal/opengl/opengl_gal.h:35, > from > /wrkdirs/usr/ports/cad/kicad-devel/work/kicad-r6694/common/draw_panel_gal.cpp:40: > /usr/local/include/glm/detail/func_exponential.inl:43:14: error: > 'std::log2' has not been declared > using std::log2; > ^ > In file included from /usr/local/include/glm/detail/func_common.hpp:455:0, > from /usr/local/include/glm/detail/func_geometric.inl:34, > from /usr/local/include/glm/detail/func_geometric.hpp:142, > from /usr/local/include/glm/geometric.hpp:35, > from /usr/local/include/glm/gtc/matrix_transform.inl:33, > from /usr/local/include/glm/gtc/matrix_transform.hpp:394, > from > /wrkdirs/usr/ports/cad/kicad-devel/work/kicad-r6694/include/gal/opengl/vertex_manager.h:35, > from > /wrkdirs/usr/ports/cad/kicad-devel/work/kicad-r6694/include/gal/opengl/opengl_gal.h:35, > from > /wrkdirs/usr/ports/cad/kicad-devel/work/kicad-r6694/common/draw_panel_gal.cpp:40: > /usr/local/include/glm/detail/func_common.inl:229:16: error: 'std::trunc' > has not been declared > using ::std::trunc; > ^ > /usr/local/include/glm/detail/func_common.inl:248:16: error: 'std::round' > has not been declared > using ::std::round; > ^ This is because gcc48's <cmath> header does not define a whole bunch of C99 math functions in the std:: namespace. E.g., /usr/local/lib/gcc48/include/c++/cmath has: 922 #if __cplusplus >= 201103L 923 924 #ifdef _GLIBCXX_USE_C99_MATH_TR1 ... 983 #undef log2 984 #undef log2f 985 #undef log2l ... 1032 namespace std _GLIBCXX_VISIBILITY(default) 1033 { 1034 _GLIBCXX_BEGIN_NAMESPACE_VERSION ... 1117 using ::log2; 1118 using ::log2f; 1119 using ::log2l; ... 1678 _GLIBCXX_END_NAMESPACE_VERSION 1679 } // namespace 1680 1681 #endif // _GLIBCXX_USE_C99_MATH_TR1 1682 1683 #endif // C++11 and /usr/local/lib/gcc48/include/c++/x86_64-portbld-freebsd9.3/bits/c++config.h has: /* Define if C99 functions or macros in <math.h> should be imported in <tr1/cmath> in namespace std::tr1. */ /* #undef _GLIBCXX_USE_C99_MATH_TR1 */ It looks like this file is generated at build time, so something in gcc's configure scripts is turning off the "C99_MATH_TR1" support. Then again, the name of the define is a bit strange, since this is not about <tr1/cmath>, but the regular <cmath> header. It is probably worth reporting a bug for the gcc port. I tried this quick hack to work around it: --- /usr/local/lib/gcc48/include/c++/cmath.orig 2016-04-14 07:09:27.000000000 +0200 +++ /usr/local/lib/gcc48/include/c++/cmath 2016-04-20 23:21:19.847854000 +0200 @@ -921,7 +921,7 @@ _GLIBCXX_END_NAMESPACE_VERSION #if __cplusplus >= 201103L -#ifdef _GLIBCXX_USE_C99_MATH_TR1 +#ifdef _GLIBCXX_USE_C99_MATH #undef acosh #undef acoshf @@ -1678,7 +1678,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_END_NAMESPACE_VERSION } // namespace -#endif // _GLIBCXX_USE_C99_MATH_TR1 +#endif // _GLIBCXX_USE_C99_MATH #endif // C++11 You will also need to add -D_DECLARE_C99_LDBL_MATH to ${CXXFLAGS}, to enable the declaration of a number of long double functions in math.h, otherwise gcc's <cmath> fails to compile with: /usr/local/lib/gcc48/include/c++/cmath:1043:11: error: '::acoshl' has not been declared using ::acoshl; ^ -Dimitry
signature.asc
Description: Message signed with OpenPGP using GPGMail