Skip site navigation (1)Skip section navigation (2)
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>