Hi,
thanks alot for looking into this!
Unfortunately as it seems I can't workaround this issue by adopting
kicad-devel.
The final fix would be adopting gcc48, right?
Is there a way to force the usage of the ports clang for the
compiler:c++11-lib case?
Would it be compatible for example with the boost libs if boost would
be compiled with
g++48?
Thanks again!
Greetings
---
Mike
Zitat von Dimitry Andric <d...@freebsd.org>:
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
Gruß
---
Michael Reifenberger
_______________________________________________
freebsd-ports@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"