[Cmake] infinite recursion during Dart build.

Ian Scott ian.m.scott at stud.man.ac.uk
Tue, 6 Jan 2004 10:46:12 -0000


Hi,

One of the users on our private repository created a sub-project with two
interdependent libraries.

in wibble/CMakeLists.txt
...
SUBDIRS(foo bar)
...

in wibble/foo/CMakeLists.txt
...
ADD_LIBRARY(foo ${foo_sources})
TARGET_LINK_LIBRARIES(foo bar some other libraries)
...


in wibble/bar/CMakeLists.txt
...
ADD_LIBRARY(bar ${bar_sources})
TARGET_LINK_LIBRARIES(bar foo some other libraries)
...


When Dart goes to build the project with it descends into an unterminated
recursion (>1000 gmake processes running at one time, before the Linux VM
starts randomly killing single processes.) I presume that this is because
Dart uses gmake -k (for keep going.)

This problem caused all manner of hassles for our dashboard machine, which
(does some Dart builds as well as runs the Dart server.)

My questions are:
For CMake: Should cmake detect this potential recursion and produce
makefiles which can't carry on recursing?

For Dart: Should Dart really be using gmake -k, and/or detect runaway builds
and kill them?

I think that automated CMake/Dart builds should be robust enough to cope
with such errors without my intervention.

Ian.