Date: Wed, 20 Jun 2012 12:37:09 +0400 From: Boris Samorodov <bsam@passap.ru> To: "Andrew W. Nosenko" <andrew.w.nosenko@gmail.com> Cc: freebsd-ports@freebsd.org Subject: Re: clang, dbus, firefox+thunderbird Message-ID: <4FE18BB5.5040803@passap.ru> In-Reply-To: <CALa-7vwOaw5hwMGdDN497KCG=qn3NK_hPA8VYeDCDErE6oSmvQ@mail.gmail.com> References: <4FE097DA.30701@passap.ru> <CALa-7vwOaw5hwMGdDN497KCG=qn3NK_hPA8VYeDCDErE6oSmvQ@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi All, Andrew, thanks for your time and help! 19.06.2012 21:14, Andrew W. Nosenko написал: > On Tue, Jun 19, 2012 at 6:16 PM, Boris Samorodov<bsam@passap.ru> wrote: >> Hi List, >> >> I use clang compiled world (WITH_CLANG_IS_CC="YES" and >> WITH_LIBCPLUSPLUS="YES" at /etc/make.conf). The system >> is current: >> ----- >> % uname -a >> FreeBSD bsam.wart.ru 10.0-CURRENT FreeBSD 10.0-CURRENT #16 r237055: Thu Jun >> 14 17:16:43 SAMT 2012 bsam@bsam.wart.ru:/usr/obj/usr/src/sys/BBX i386 >> ----- >> >> While updating to the latest firefox I get an error: >> ----- >> /usr/local/include/dbus-1.0/dbus/dbus-protocol.h:459:77: error: invalid >> suffix on literal; C++11 requires a space between literal and identifier >> [-Wreserved-user-defined-literal] >> #define DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE "<!DOCTYPE node PUBLIC >> \""DBUS_INTROSPECT_1_0_XML_PUBLIC_IDENTIFIER"\"\n\""DBUS_INTROSPECT_1_0_XML_SYSTEM_IDENTIFIER"\">\n" >> >> ^ >> >> >> /usr/local/include/dbus-1.0/dbus/dbus-protocol.h:459:126: error: invalid >> suffix on literal; C++11 requires a space between literal and identifier >> [-Wreserved-user-defined-literal] >> #define DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE "<!DOCTYPE node PUBLIC >> \""DBUS_INTROSPECT_1_0_XML_PUBLIC_IDENTIFIER"\"\n\""DBUS_INTROSPECT_1_0_XML_SYSTEM_IDENTIFIER"\">\n" >> >> ^ >> >> >> 2 errors generated. >> >> ----- >> >> OK, I did make config and deselect DBUS. Great, firefox compiles and >> installs (the latest one, 13.0.1). Then I try to upgrade thunderbird >> and get the same error. However there is no option DBUS to disable. >> >> What am I to do? >> Thanks! > > It's because of "User defined literals" (the new c++11 feature) and > your clang++ is in c++11 (or gnu++11?) mode by default. > > As workaround, you may try either: "downgrade" to something like gnu++ > 98 (-std=gnu++98), or edit dbus-protocol.h header for make it c++11 > compatible. It's easy: just add spaces around > DBUS_INTROSPECT_1_0_XML_PUBLIC_IDENTIFIER and > DBUS_INTROSPECT_1_0_XML_SYSTEM_IDENTIFIER literals in the line 459 > (just as compiler suggested). > > I.e. the line 459 > > #define DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE "<!DOCTYPE node > PUBLIC \""DBUS_INTROSPECT_1_0_XML_PUBLIC_IDENTIFIER"\"\n\""DBUS_INTROSPECT_1_0_XML_SYSTEM_IDENTIFIER"\">\n" > > should be written as > > #define DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE "<!DOCTYPE node > PUBLIC \"" DBUS_INTROSPECT_1_0_XML_PUBLIC_IDENTIFIER "\"\n\"" > DBUS_INTROSPECT_1_0_XML_SYSTEM_IDENTIFIER "\">\n" You are right. And AFAIK a similar fix was committed to the ports tree while I was testing your suggestion. The fix helped clang to build firefox with DBUS on. However, thunderbird stopped building with another error. I'll create a new thread on the matter after some testing. -- WBR, Boris Samorodov (bsam) FreeBSD Committer, http://www.FreeBSD.org The Power To Serve
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4FE18BB5.5040803>