Date: Tue, 19 Jun 2012 20:14:12 +0300 From: "Andrew W. Nosenko" <andrew.w.nosenko@gmail.com> To: Boris Samorodov <bsam@passap.ru> Cc: freebsd-ports@freebsd.org Subject: Re: clang, dbus, firefox+thunderbird Message-ID: <CALa-7vwOaw5hwMGdDN497KCG=qn3NK_hPA8VYeDCDErE6oSmvQ@mail.gmail.com> In-Reply-To: <4FE097DA.30701@passap.ru> References: <4FE097DA.30701@passap.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
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=3D"YES" and > WITH_LIBCPLUSPLUS=3D"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 J= un > 14 17:16:43 SAMT 2012 =A0 =A0 bsam@bsam.wart.ru:/usr/obj/usr/src/sys/BBX = =A0i386 > ----- > > 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_X= ML_SYSTEM_IDENTIFIER"\">\n" > > =A0 =A0 ^ > > > /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_X= ML_SYSTEM_IDENTIFIER"\">\n" > > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0^ > > > 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=3Dgnu++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" --=20 Andrew W. Nosenko <andrew.w.nosenko@gmail.com>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CALa-7vwOaw5hwMGdDN497KCG=qn3NK_hPA8VYeDCDErE6oSmvQ>