submake machinery is useful in general