On Jul 9, 2014, at 3:05 AM, Tim Janssen <tjans...@gmail.com> wrote: > Hello gnucash-devel, > > I've been following this thread and trying to compile GnuCash myself and have > been getting the same error about unrecognised command line option but have > gotten different results through experimenting. > > First of all, I'm running Arch Linux 64bit. And gcc/g++ version 4.9.0. I'm > trying to compile the latest source from git as of July 8, around 14:00 EDT. > > $ gcc --version > gcc (GCC) 4.9.0 20140604 (prerelease) > Copyright (C) 2014 Free Software Foundation, Inc. > This is free software; see the source for copying conditions. There is NO > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. > > I ran ./configure with the --disable--error-on-warning option just so one > warning won't halt the whole compile. > > When compiling, sometimes there are two warnings: a warning about > FORTIFY_SOURCE and a warning about the unrecognised command line option > -Wno-non-literal-null-conversion: > > In file included from /usr/include/string.h:25:0, > from swig-core-utils-guile.c:300: > /usr/include/features.h:341:4: warning: #warning _FORTIFY_SOURCE requires > compiling with optimization (-O) [-Wcpp] > # warning _FORTIFY_SOURCE requires compiling with optimization (-O) > ^ > cc1: warning: unrecognized command line option > "-Wno-non-literal-null-conversion" > > > These two warnings always appear together. Like Sumit, I tried compiling some > trivial C and C++ programs with that compiler option to see what would > happen. Neither gcc nor g++ issued warnings or erros about using that > argument when I tried it on my sample code. > > $ make > gcc -c -Wall -Wno-non-literal-null-conversion -Werror -o main.o main.c > gcc -c -Wall -Wno-non-literal-null-conversion -Werror -o foo.o foo.c > gcc -o main main.o foo.o > $ > > > $ make > g++ -c -Wall -Wno-non-literal-null-conversion -Werror -std=c++11 -o main.o > main.cpp > g++ -c -Wall -Wno-non-literal-null-conversion -Werror -std=c++11 -o foo.o > foo.cpp > g++ -c -Wall -Wno-non-literal-null-conversion -Werror -std=c++11 -o bar.o > bar.cpp > g++ -o main main.o foo.o bar.o > $ > > > The wierd part: I changed configure.ac around line 1318 to add the -O2 option > to CFLAGS and CXXFLAGS. (I doubt this is the right way to do it, but I'm not > too familliar with the GNU build system, and I'm doing it just to see what > would happen). > > # This has to come after AC_PROG_CC _AND_ GNOME_COMPILE_WARNINGS > AC_LANG([C++]) > AX_CHECK_COMPILE_FLAG([-Wno-deprecated-register], > [AM_CXXFLAGS="${AM_CXXFLAGS} -Wno-unused -Wno-deprecated-register -O2"], > [AM_CXXFLAGS="${AM_CXXFLAGS} -Wno-unused"], [-Werror]) > AC_LANG([C]) > AX_CHECK_COMPILE_FLAG([-Wno-non-literal-null-conversion], > [AM_CFLAGS="${AM_CFLAGS} -Wno-non-literal-null-conversion -O2"], > [], [-Werror]) > > > After making this change and running autogen.sh, configure, and make, the > warning about FORTIFY_SOURCE still appears about 4 times. But, the warning > about -Wno-non-literal-null-conversion has disappeared. > > gcc -DHAVE_CONFIG_H -I. -I../../../.. -I../../../../lib/libc > -I../../../../src -I../../../../src/core-utils -I../../../../src/gnc-module > -I../../../../src/test-core -I../../../../src/engine > -I../../../../src/engine/test-core -I../../../../src/backend/sql > -I../../../../src/libqof/qof -pthread -I/usr/include/glib-2.0 > -I/usr/lib/glib-2.0/include -D_FORTIFY_SOURCE=2 -pthread > -DG_LOG_DOMAIN=\"gnc.backend.sql\" -DTESTPROG=test_sqlbe -I. -I../../../.. > -I../../../../src/backend/sql/ -I../../../../src/backend/dbi/ > -I../../../../src/libqof/qof/ -I../../../../src/test-core/ -pthread > -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -g -g -MT > test_sqlbe-utest-gnc-backend-sql.o -MD -MP -MF > .deps/test_sqlbe-utest-gnc-backend-sql.Tpo -c -o > test_sqlbe-utest-gnc-backend-sql.o `test -f 'utest-gnc-backend-sql.c' || echo > './'`utest-gnc-backend-sql.c > In file included from /usr/include/string.h:25:0, > from utest-gnc-backend-sql.c:24: > /usr/include/features.h:341:4: warning: #warning _FORTIFY_SOURCE requires > compiling with optimization (-O) [-Wcpp] > # warning _FORTIFY_SOURCE requires compiling with optimization (-O) > ^ > mv -f .deps/test_sqlbe-utest-gnc-backend-sql.Tpo > .deps/test_sqlbe-utest-gnc-backend-sql.Po > > I noticed that, for the files that still emit the FORTIFY_SOURCE warning when > compiled, the CFLAGS in the configure.ac file are not being used. My -O2 and > the -Wno-non-literal-null-conversion don't show up in the terminal. > > > So, it seems trying to eliminate one compiler warning not only doesn't work > but somehow eliminates another completely unrelated compiler warning. > > I post this in the hopes that it might help someone much smarter than me > figure out what's actually going on.
That's interesting. I don't see -DFORTIFY_SOURCE, -Wno-non-literal-null-conversion in that last compile. I'll also note that Sumit's compillation of gfec.c which failed also has -O2 in the command line. Regards, John Ralls _______________________________________________ gnucash-devel mailing list gnucash-devel@gnucash.org https://lists.gnucash.org/mailman/listinfo/gnucash-devel