Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 23 Apr 2016 18:22:40 +0200
From:      Michael Reifenberger <mike@reifenberger.com>
To:        Dimitry Andric <dim@freebsd.org>, Gerald Pfeifer <gerald@freebsd.org>
Cc:        mr <mr@freebsd.org>, FreeBSD-ports <freebsd-ports@freebsd.org>
Subject:   Re: Needing help getting cad/kicad-devel compiled under FreeBSD-9
Message-ID:  <20160423182240.Horde.1LIhWxAplQrGMNW9WZqSQZw@mail.eeeit.de>
In-Reply-To: <A94B9F2A-52B4-4B8D-8712-ED6CEE6C5CE5@FreeBSD.org>
References:  <CAPEmwasEN2BxDMZ5Pgbodck%2BPpxOS-H54E8qB27-hitRyboXSQ@mail.gmail.com> <A94B9F2A-52B4-4B8D-8712-ED6CEE6C5CE5@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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 <dim@freebsd.org>:

> On 20 Apr 2016, at 10:28, mr <mr@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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20160423182240.Horde.1LIhWxAplQrGMNW9WZqSQZw>