[GRASS5] Fw: [DebianGIS-dev] Bug#336498: grass: broken macro LOC_CHECK_VERSION (also FTBFS on GNU/FreeBSD)

Wolf Bergenheim wolf+grass at bergenheim.net
Thu Nov 3 17:36:38 EST 2005


On 03/11/05 16:57, Markus Neteler wrote:
> Does anyone know how to modify 'configure.in' for this problem?
> 

LOC_CHECK_VERSION does 2 tests. First it tries to compile this program:
#include "confdefs.h"

#include <stdio.h>
#include <proj_api.h>
int main(void) {
 FILE *fp = fopen("conftestdata","w");
 fputs(PJ_VERSION, fp);
 return 0;
}

Since PJ_VERSION is defined to be 449 or some similar number this will
produce a compiler warning. -Werror will make gcc act as if warning are
errors ==> compilation fails and this is never run. The macro then tries
to build this program:

#include "confdefs.h"

#include <stdio.h>
#include <$1>
int main(void) {
 FILE *fp = fopen("conftestdata","w");
 fprintf(fp, "%d", $2);
 return 0;
}

which will compile in this case, and write the version to the
conftestdata file.

So to fix this all you need to do is introduce the -Werror flag to the
gcc commandline, which is trivial to do. All you need to do is modify
configure.in line 516. Add -Werror to the 5th parameter of the macro call.

Your line should now look something like this: (without linebreaks).

LOC_CHECK_VERSION(proj_api.h,PJ_VERSION,
		External PROJ.4,proj_ver,$PROJINC -Werror,UNKNOWN)

I don't have a BSD to test on so I can't say if this works or not, but
on GNU/Linux PowerPC it does work.

--Wolf

-- 

<:3 )---- Wolf Bergenheim ----( 8:>




More information about the grass-dev mailing list