Jeshua Lacock wrote:
I just built 6.2.2 with one failed module here on Mac OS X:
make[2]: *** No rule to make target `/usr/include/gcc/darwin/4.0/c++/
iostream', needed by `ami_stream.d'. Stop.
make[1]: *** [build] Error 2
make: *** [/usr/src/openosx-grass-autobuild/src/grass-6.2.1/
dist.powerpc-apple-darwin8.9.0/bin/r.terraflow] Error 2
On my machine "/usr/include/gcc/darwin/4.0/c++/iostream" is "/usr/
include//c++/4.0.0/iostream".
It appears that either the compiler has changed since it was last
built, or a partially-built code tree has been copied to a different
machine.
After replacing about 20 lines in `ami_stream.d' it started having
similar problems with `mm_utils.d'.
Just delete all of the .d files.
Can anyone advise how were those ".d" files generated?
With the following rule:
%.d: %.cc
$(SHELL) -ec '$(CXX) -M $(CPPFLAGS) $< | sed '\''s/$*.o/& $@/g'\'' > $@'
Or do I have to fix one line at a time?
The .d files aren't necessary. They will be built automatically, and
they should be removed automatically by "make clean".
In general, auto-generating dependency files is a bad idea, as it can
lead to this sort of problem when changes occur. Even if the Makefile
has rules which to clean and/or re-build the dependencies, stale
dependencies can prevent the Makefile from working.
Personally, I would just remove all references to .d files from
r.terraflow.
[Well, personally I would just remove r.terraflow, having been written
without any consideration for GRASS' build system or coding
conventions, or portability in general. But that's just me.]
--
Glynn Clements <glynn@gclements.plus.com>