Heyho,
On 08/08/14 01:19, Matthew Brush wrote:
On 14-08-07 02:58 PM, Colomban Wendling wrote:
Le 07/08/2014 23:38, Enrico Tröger a écrit :
On 07/08/14 18:41, Colomban Wendling wrote:
Le 07/08/2014 18:24, Enrico Tröger a écrit :
[...] I'd like to make the nightly builds a bit stricter especially if it helps to spoil out such problems.
Any idea how to make such warnings error without using -Werror? I'm afraid -Werror is too hard for cross-compiling.
-Werror-implicit-function-declaration
I use the following when building Geany, and although it shows a few warnings (one in Scintilla that is fixed upstream, a few harmless const promotions, and a few non-literals passed as printf-like formats) it's pretty neat, maybe we'd like to be able to look at these in the logs. Not sure it's so important though.
-Wall -Wextra -g -O2 -Wunused -Wno-unused-parameter -Wunreachable-code -Wformat=2 -Wundef -Wshadow -Wpointer-arith -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wmissing-noreturn -Wmissing-format-attribute -Wredundant-decls -Wnested-externs -Werror-implicit-function-declaration -Wno-deprecated-declarations
Thanks. I applied these to the Windows nightly builds and also printed the used CFLAGS into the logfile (for reference).
Hum, this is weird. There are many more warnings that I saw locally, and the compiled code looks outdated -- when I go to e.g. "src/symbols.c:579: warning: will never be executed", I see... an accolade starting the function body.
s/accolade/brace/ ... maybe the hook/timer that updates from Git stopped working or something?
Nope: rm -rf /home/geany/build/geany_git
git clone --depth=1 git://github.com/geany/geany.git /home/geany/build/geany_git
this happens very early in the build process, i.e. getting a fresh clone frm Github.
Additionally, I checked src/symbols.c:579 on the build host against my local version and this line is the same containing a '{'. So, I guess it's just gcc which issues this warning on that exact line though I have no idea *why* it thinks that find_toplevel_iter() will never be executed. But given that this is a very old gcc 3.4.5, it might be just gcc's secret.
Maybe we could update the toolchain used there if anyone knows a working toolchain and has enough will to do it. I personally don't want to do this as long as the code compiles against gcc 3.4 because it is always a pain (for me).
Also, the headers used seem to generate a lot of shadowing warnings, so
-Wshadow is removed.
I'd also remove the warning which causes 'warning: function declaration isn't a prototype' if there are no objections.
maybe we should disable this one. Though, some are really weird, like having a math.h having a global "y0" symbol!?
Looking in my MinGW math.h, it seems you need to define _NO_OLDNAMES to get rid of those non-ANSII names. It might also be useful to define __STRICT_ANSI__ to get rid of more non-std/non-prefixed names.
Should I define those for the Windows builds?
Anyway, as-is it's not really useful, so maybe we should either fix the warnings or remove the flags triggering them when not important.
It would be a lot more useful if there's a way to hide errors that originate in "system headers" (ie. not any of ours).
@Enrico, is there anyway to make the "nightlies" rebuild on a Git hook instead of only once per day? Like maybe giving 10 minutes buffer time to allow merging massive branches without re-compiling a bunch of times. It would be more immediate feedback on how badly one has broken Windows build :)
Yeah, this is on my TODO list though I cannot say when this will happen but yeah, it would be very cool. Even though we need a bigger buffer than 10 minutes, the last whole build tonight (Windows, ArchLinux & Debian) took about 40 minutes so I'd rather use a buffer of 60 minutes..
But one hours is still better than 24 hours, I guess :).
I will do, at some point.
Regards, Enrico