This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: bcftools error running Make after installing update 2.4.1.1 to Cygwin64
- From: Duncan Roe <duncan_roe at acslink dot net dot au>
- To: cygwin at cygwin dot com
- Date: Tue, 26 Jan 2016 15:51:05 +1100
- Subject: Re: bcftools error running Make after installing update 2.4.1.1 to Cygwin64
- Authentication-results: sourceware.org; auth=none
- References: <BAY175-W14DF8CC504AF6F9213BF6CADC70 at phx dot gbl> <56A693F5 dot 7070000 at tiscali dot co dot uk>
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