On Mon, Jan 25, 2016 at 09:30:29PM +0000, David Stacey wrote: > On 25/01/16 21:00, Robert May wrote: > >many warnings are given in the following text - see end for error message > > > >echo '#define BCFTOOLS_VERSION "1.3"'> version.h > >gcc -g -Wall -Wc++-compat -O2 -std=c99 -I. -Ihtslib-1.3 > >-DPLUGINPATH=\"/usr/local/libexec/bcftools\" -c -o main.o main.c > >gcc -g -Wall -Wc++-compat -O2 -std=c99 -I. -Ihtslib-1.3 > >-DPLUGINPATH=\"/usr/local/libexec/bcftools\" -c -o vcfindex.o vcfindex.c > >vcfindex.c: In function ?main_vcfindex?: > >vcfindex.c:209:9: warning: implicit declaration of function ?alloca? > >[-Wimplicit-function-declaration] > > char*idx_fname = (char*)alloca(strlen(fname) + 5); > > ^ > >vcfindex.c:209:27: warning: cast to pointer from integer of different size > >[-Wint-to-pointer-cast] > > char*idx_fname = (char*)alloca(strlen(fname) + 5); > > These warnings can be generated for a number of reasons. One is that the > source code you are attempting to compile pre-dates this version of gcc. > Another reason is that you are somehow using a combination of compiler > switches that were never expected. A third reason is that the source code > simply isn't well written, but the majority of Open Source contributors take > great pride in their work. > > In your case, it could be the compiler switches - see below. > > >gcc -g -Wall -Wc++-compat -O2 -std=c99 -I. -Ihtslib-1.3 > >-DPLUGINPATH=\"/usr/local/libexec/bcftools\" -c -o vcfcnv.o vcfcnv.c > >vcfcnv.c: In function ?norm_prob?: > >vcfcnv.c:602:93: error: ?M_PI? undeclared (first use in this function) > > return exp(-(baf-param->mean)*(baf-param->mean)*0.5/param->dev2) / > > param->norm / sqrt(2*M_PI*param->dev2); > > > > ^ > >vcfcnv.c:602:93: note: each undeclared identifier is reported only once for > >each function it appears in > >vcfcnv.c: In function ?main_vcfcnv?: > >vcfcnv.c:1349:9: warning: implicit declaration of function ?fileno? > >[-Wimplicit-function-declaration] > > if ( !isatty(fileno((FILE *)stdin)) ) fname = "-"; > > ^ > >vcfcnv.c: In function ?norm_prob?: > >vcfcnv.c:603:1: warning: control reaches end of non-void function > >[-Wreturn-type] > > } > > ^ > > This looks like expected behaviour to me. Specifying '-std=c99' defines a > __STRICT_ANSI__ macro, which in turn means that mathematical constants like > M_PI are not defined. Using '-std=gnu99' instead should work. You may also > find that this more relaxed compiler setting doesn't generate so many > warnings. > > Dave. > Definitely you need a gnu standard for /usr/include/alloca.h to make alloca visible. It is not a POSIX function.
Cheers ... Duncan. -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple