gnucash master: Multiple changes pushed

Geert Janssens janssens-geert at telenet.be
Thu Jul 3 12:04:25 EDT 2014


On Thursday 03 July 2014 17:51:42 John Ralls wrote:
> On Jul 3, 2014, at 4:16 PM, Geert Janssens <janssens-geert at telenet.be> wrote:
> > On Thursday 03 July 2014 16:09:28 John Ralls wrote:
> > > On Jul 3, 2014, at 3:58 PM, Geert Janssens <janssens-geert at telenet.be> wrote:
> > > > Hmm, my previous mail got truncated by the list server
> > > > for some reason. Anyway the errors continue for a while
> > > > with yet more undefined references to std::xyz functions.
> > > > 
> > > > This was with a clean autogen/configure/make sequence
> > > > in an empty build directory.
> > > > 
> > > > If I do the same with gcc it works fine.
> > > 
> > > Interesting. What version of Clang? What happens if you add
> > > -stdlib=libstdc++ to CXXFLAGS?
> > > 
> > > Regards,
> > > John Ralls
> > 
> > $ clang --version
> > clang version 3.4 (tags/RELEASE_34/final)
> > Target: x86_64-redhat-linux-gnu
> > Thread model: posix
> > 
> > I have appended "CXXFLAGS=-stdlib=libstdc++" (without the quotes) to
> > my configure run. The error I get now is:
> > 
> > /bin/sh ../../../../libtool  --tag=CXX   --mode=link clang -Werror 
> > -Wall -Wno-unused -Wno-deprecated-register -stdlib=libstdc++
> > -std=gnu++11 -g   -g  -o test-qof test_qof-test-gnc-date.o
> > test_qof-test-qof.o test_qof-test-qofbook.o
> > test_qof-test-qofinstance.o test_qof-test-kvp_frame.o
> > test_qof-test-qofobject.o test_qof-test-qofsession.o
> > test_qof-test-qof-string-cache.o test_qof-test-gnc-guid.o
> > test_qof-unittest-support.o
> > ../../../../src/libqof/qof/libgnc-qof.la -lgio-2.0 -lgthread-2.0
> > -pthread -lgobject-2.0 -Wl,--export-dynamic -lgmodule-2.0 -pthread
> > -lglib-2.0  -lm libtool: link: clang -Werror -Wall -Wno-unused
> > -Wno-deprecated-register -stdlib=libstdc++ -std=gnu++11 -g -g -o
> > .libs/test-qof test_qof-test-gnc-date.o test_qof-test-qof.o
> > test_qof-test-qofbook.o test_qof-test-qofinstance.o
> > test_qof-test-kvp_frame.o test_qof-test-qofobject.o
> > test_qof-test-qofsession.o test_qof-test-qof-string-cache.o
> > test_qof-test-gnc-guid.o test_qof-unittest-support.o -pthread
> > -Wl,--export-dynamic -pthread 
> > ../../../../src/libqof/qof/.libs/libgnc-qof.so -L/usr/lib64
> > -lgio-2.0 -lgthread-2.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lm
> > -pthread -Wl,-rpath
> > -Wl,/home/janssege/Development/Installs/gnucash-f20-master/lib64
> > clang: error: argument unused during compilation:
> > '-stdlib=libstdc++' make[5]: *** [test-qof] Error 1
> > make[5]: Leaving directory
> > `/kobaltnet/janssege/Development/Builds/gnucash-f20-master/src/libq
> > of/qof/test' make[4]: *** [all-recursive] Error 1
> > make[4]: Leaving directory
> > `/kobaltnet/janssege/Development/Builds/gnucash-f20-master/src/libq
> > of/qof' make[3]: *** [all-recursive] Error 1
> > make[3]: Leaving directory
> > `/kobaltnet/janssege/Development/Builds/gnucash-f20-master/src/libq
> > of' make[2]: *** [all-recursive] Error 1
> > make[2]: Leaving directory
> > `/kobaltnet/janssege/Development/Builds/gnucash-f20-master/src'
> > make[1]: *** [all-recursive] Error 1
> > make[1]: Leaving directory
> > `/kobaltnet/janssege/Development/Builds/gnucash-f20-master' make:
> > *** [all] Error 2
> 
> Oh, well. Seems libc++ is working only on OSX, so it's still libstdc++
> on Linux, so that's not it... or maybe it is. The libstdc++ shipped
> with Xcode is the last GPLV2 one and doesn't support C++11, so I
> can't test against it to see if that's the problem.
> 
> Maybe this is the problem:
> https://bbs.archlinux.org/viewtopic.php?id=135667 Apparently clang
> isn't smart enough to figure out that it should compile a C++ file as
> C++, so you need to set $CXX=clang++.
> 
Bingo. If I define CXX=clang++ it passes qof. I removed the CXXFLAGS at the same time. They 
don't seem to be necessary.

I'm hitting the non-literal-null-conversion warning turned error in gnc-slots-sql.c:

/kobaltnet/janssege/Development/EclipseGnuCash/GnuCash-git/src/backend/sql/gnc-slots-
sql.c:712:90: error: expression which evaluates to zero treated as a null pointer constant of 
type 'const gchar *' (aka 'const char *')
      [-Werror,-Wnon-literal-null-conversion]
    slot_info_t slot_info = { NULL, NULL, TRUE, NULL, 0, NULL, FRAME, NULL, g_string_new('\0') };
                                                                                         ^~~~
/kobaltnet/janssege/Development/EclipseGnuCash/GnuCash-git/src/backend/sql/gnc-slots-
sql.c:739:90: error: expression which evaluates to zero treated as a null pointer constant of 
type 'const gchar *' (aka 'const char *')
      [-Werror,-Wnon-literal-null-conversion]
    slot_info_t slot_info = { NULL, NULL, TRUE, NULL, 0, NULL, FRAME, NULL, g_string_new('\0') };
                                                                                         ^~~~
/kobaltnet/janssege/Development/EclipseGnuCash/GnuCash-git/src/backend/sql/gnc-slots-
sql.c:821:85: error: expression which evaluates to zero treated as a null pointer constant of 
type 'const gchar *' (aka 'const char *')
      [-Werror,-Wnon-literal-null-conversion]
    slot_info_t info = { NULL, NULL, TRUE, NULL, 0, NULL, FRAME, NULL, g_string_new('\0') };

I assume the cure is the same as before.

But I do wonder why you are not getting those ? Does OS X not define that warning be default 
where Fedora does ?

Geert


More information about the gnucash-devel mailing list