[GRASS5] can't get 5.7 to get past ./configure

I've tried to compile the 5.7 (or 5.1 or whatever the name is this week)
and can't seem to get past the ./configure. I've run ./configure with the
following settings...

./configure --with-includes=/ur/local/include \
            --with-libs=/usr/local/lib \
            --without-postgres \
            --without-tcltk \
            --without-fftw \
            --with-proj \
            --with-grass50=/usr/home/hamannj/grass

and get the following results:

GRASS is now configured for: i386-unknown-freebsd4.9

Source directory: /usr/home/hamannj/grass51
Build directory: /usr/home/hamannj/grass51
Installation directory: /usr/local/grass57
Startup script in directory: ${exec_prefix}/bin
C compiler: gcc -g -O2 -pthread -pthread
C++ compiler:
FORTRAN compiler: f77
Building shared libraries: yes

  NVIZ: no

  X11 support: yes
  JPEG support: yes
  TIFF support: yes
  PNG support: yes
  Tcl/Tk support: no
  PostgreSQL support: no
  MySQL support: no
  OpenGL(R) support: yes
  ODBC support: yes
  FFTW support: no
  BLAS support: no
  LAPACK support: no
  Motif support: no
  FreeType support: no
  GLw support: no
  NLS support: no
  Readline support: no
  C++ support: no
  openDWG support: no
  GDAL support: yes
  OGR support: yes

when I attempt to run make, I get,

$ make
"./include/Make/Grass.make", line 235: Missing dependency operator
"./include/Make/Grass.make", line 308: Need an operator
"Makefile", line 51: Missing dependency operator
"Makefile", line 53: Need an operator
make: fatal errors encountered -- cannot continue
$

Is there something I'm doing incorrectly? I've performed a cvs checkout of
the grass51 code into a fresh directory such that my home dir looks
something like:

/usr/home/hamannj/grass
/usr/home/hamannj/grass51

and have been successful in compiling and running grass5.3

Ideas?

Jeff.

--
Jeff D. Hamann
Forest Informatics, Inc.
PO Box 1421
Corvallis, Oregon 97339-1421
phone 541-754-1428
jeff.hamann@forestinformatics.com
www.forestinformatics.com

Hello

On Sun, 7 Mar 2004, Jeff D. Hamann wrote:

GRASS is now configured for: i386-unknown-freebsd4.9

Source directory: /usr/home/hamannj/grass51
Build directory: /usr/home/hamannj/grass51
Installation directory: /usr/local/grass57
Startup script in directory: ${exec_prefix}/bin
C compiler: gcc -g -O2 -pthread -pthread

I don't like the look of that -pthread but equally I don't understand its
implications so it might be all right. I think there is now some
FreeBSD-specific code in the configure script that is putting it in.

[...]

when I attempt to run make, I get,

$ make
"./include/Make/Grass.make", line 235: Missing dependency operator
"./include/Make/Grass.make", line 308: Need an operator
"Makefile", line 51: Missing dependency operator
"Makefile", line 53: Need an operator
make: fatal errors encountered -- cannot continue
$

Well obvious first place to look is what does line 235 in
include/Make/Grass.make say? I think it should be
ifeq ($(GRASS_LIBRARY_TYPE),stlib)
but it could have been changed somewhere maybe if you're using an unusual
shell and it expanded the variable $(GRASS_LIBRARY_TYPE) when it shouldn't
have or something. If that line is intact, check near the top of the file
to see what GRASS_LIBRARY_TYPE has been set to. Other than that I can't
think of anything else to try for now.

Paul

On Sun, 7 Mar 2004, Jeff D. Hamann wrote:

when I attempt to run make, I get,

$ make
"./include/Make/Grass.make", line 235: Missing dependency operator
"./include/Make/Grass.make", line 308: Need an operator
"Makefile", line 51: Missing dependency operator
"Makefile", line 53: Need an operator
make: fatal errors encountered -- cannot continue
$

I should have said also that the quick solution is probably to use GNU
make---if you proceed further into the compilation you will probably come
across other Makefiles that require GNU make anyway.

Paul

"Jeff D. Hamann" wrote:

[...]

>> when I attempt to run make, I get,
>>
>> $ make
>> "./include/Make/Grass.make", line 235: Missing dependency operator
>> "./include/Make/Grass.make", line 308: Need an operator
>> "Makefile", line 51: Missing dependency operator
>> "Makefile", line 53: Need an operator
>> make: fatal errors encountered -- cannot continue
>> $
>>
>
> Well obvious first place to look is what does line 235 in
> include/Make/Grass.make say? I think it should be
> ifeq ($(GRASS_LIBRARY_TYPE),stlib)
> but it could have been changed somewhere maybe if you're using an unusual
> shell and it expanded the variable $(GRASS_LIBRARY_TYPE) when it shouldn't
> have or something. If that line is intact, check near the top of the file
> to see what GRASS_LIBRARY_TYPE has been set to. Other than that I can't
> think of anything else to try for now.

That's exactly what it says...

ifeq ($(GRASS_LIBRARY_TYPE),stlib)

and

GRASS_LIBRARY_TYPE=shlib

near the top of the file.

Does that help? Thanks.

Well it rules something out. Does the BSD make have a problem with the
ifeq construct? Perhaps something like
ifeq('$(GRASS_LIBRARY_TYPE)','stlib')
I really don't know if/why that should make any difference though.

Incidentally the reason for this line is that if the library type is
shared, the library filenames don't need to be listed as dependencies
because the modules don't need to be recompiled when the libraries
change. I hope this is the correct thing to do---it greatly speeded up
the GRASS 5.7 compilation time when I added it. Since you are using
shared libraries you could just delete that conditional block of the
Makefile to get around the problem.

But as you almost certainly will run into problems with your make later
in the compilation, I would suggest using GNU make. This is really
required for GRASS 5.7 (and parts of 5.3 as well) but I'm not sure if it
is listed as something you must install.

On Mon, Mar 08, 2004 at 11:02:55AM +0000, Paul Kelly wrote:

"Jeff D. Hamann" wrote:
>
[...]
> >> when I attempt to run make, I get,
> >>
> >> $ make
> >> "./include/Make/Grass.make", line 235: Missing dependency operator
> >> "./include/Make/Grass.make", line 308: Need an operator
> >> "Makefile", line 51: Missing dependency operator
> >> "Makefile", line 53: Need an operator
> >> make: fatal errors encountered -- cannot continue
> >> $

[...]

But as you almost certainly will run into problems with your make later
in the compilation, I would suggest using GNU make. This is really
required for GRASS 5.7 (and parts of 5.3 as well) but I'm not sure if it
is listed as something you must install.

Yes, the REQUIREMENTS.html of 5.7 lists it as second entry.

Markus

On Mon, Mar 08, 2004 at 11:02:55AM +0000, Paul Kelly wrote:

Well it rules something out. Does the BSD make have a problem with the
ifeq construct? Perhaps something like
ifeq('$(GRASS_LIBRARY_TYPE)','stlib')
I really don't know if/why that should make any difference though.

The only parts common to different flavours of make, as specified in the
POSIX make, are the basic ones. There is no common scheme for
conditionnals.

So yes, Makefile with such constructs are one flavour of make dependent.
And on a BSD system, one must invoke gmake (GNU make) for this to run.

That is one of the strengh of the historical GRASS make scheme to create
basic Makefiles that use basic constructs compatible with BSD make or
GNU make.

Cheers,
--
Thierry Laronde (Alceste) <tlaronde@polynum.org>
Key fingerprint = 0FF7 E906 FBAF FE95 FD89 250D 52B1 AE95 6006 F40C