3 ms·
FD: I'm a member of SG15, author of P1689[1], and implemented much of the support for compiling them in CMake. It is my opinion that hand-coded Makefiles are u
by mathstuf 3y ago
FD: I'm a member of SG15, author of P1689[1], and implemented much of the support for compiling them in CMake.
It is my opinion that hand-coded Makefiles are unlikely to handle modules well. They have the same required strategy as Fortran modules where the (documented!) approach by Intel was to run `make` in parallel until it works (basically using the `make` scheduler to get the TU compilation order eventually). Of course, there's no reliable way to know if you found a stale module or anything like that if there's a cycle or a module rename leaving old artifacts around.
There is the `makedepf90` tool that could do the "dynamic dependencies" with a fixed-level recursive Makefile to order the compilations in the right order (though I think you may be able skip the recursive layer if you have no sources generated by tools built during the build).
Anyways, this strategy fails if you want implementation-only modules, modules of the same name (that don't end up in the same process space; debug and release builds in a single tree are the more common example though), use modules from other projects (as you need to add rules to compile their module interfaces for your own build).
[1] https://wg21.link/p1689 https://wg21.link/p1689