From owner-freebsd-ports@freebsd.org Sat Apr 23 16:31:57 2016 Return-Path: Delivered-To: freebsd-ports@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B4F14B1AAB1 for ; Sat, 23 Apr 2016 16:31:57 +0000 (UTC) (envelope-from mike@reifenberger.com) Received: from mail.eeeit.de (mail.eeeit.de [37.120.160.187]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 5D8D6137A; Sat, 23 Apr 2016 16:31:57 +0000 (UTC) (envelope-from mike@reifenberger.com) Received: from localhost (localhost [127.0.0.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: mike@reifenberger.com) by mail.eeeit.de (Postfix) with ESMTPSA id A6560444A; Sat, 23 Apr 2016 18:22:40 +0200 (CEST) Received: from ppp-62-216-193-19.dynamic.mnet-online.de (ppp-62-216-193-19.dynamic.mnet-online.de [62.216.193.19]) by mail.eeeit.de (Horde Framework) with HTTP; Sat, 23 Apr 2016 18:22:40 +0200 Date: Sat, 23 Apr 2016 18:22:40 +0200 Message-ID: <20160423182240.Horde.1LIhWxAplQrGMNW9WZqSQZw@mail.eeeit.de> From: Michael Reifenberger To: Dimitry Andric , Gerald Pfeifer Cc: mr , FreeBSD-ports Subject: Re: Needing help getting cad/kicad-devel compiled under FreeBSD-9 References: In-Reply-To: User-Agent: Horde Application Framework 5 Content-Type: text/plain; charset=utf-8; format=flowed; DelSp=Yes MIME-Version: 1.0 Content-Disposition: inline Content-Transfer-Encoding: 8bit X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 23 Apr 2016 16:31:57 -0000 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 : > On 20 Apr 2016, at 10:28, mr 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 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 should be imported in > 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 , but the regular 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 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