[cfe-dev] cyclic dependencies in building modules

Thompson, John John_Thompson at playstation.sony.com
Wed Jan 28 15:58:37 PST 2015


I'm experimenting with trying to use separate module maps in my three include directories, as a possible alternative to my one module map approach in a common parent directory.

Isn't there some way we could support cyclic dependencies in building modules?

It seems that cycles are okay in sub-modules, but not in top-level modules.

It seems the only way to work around having cycles in separate directories is to make lots of smaller top-level modules.  But then because they are not submodules any more, cycles within an include directory start popping up.  For example:

While building module 'limits' imported from target/include/srclimits_h.cpp:1:
While building module 'xstddef' imported from D:\usr\local\psp2\ORBIS SDKs\2.000_pre_mod/target/include/limits:17:
While building module 'initializer_list' imported from D:\usr\local\psp2\ORBIS SDKs\2.000_pre_mod/target/include/xstddef:162:
While building module 'type_traits' imported from D:\usr\local\psp2\ORBIS SDKs\2.000_pre_mod/target/include/initializer_list:5:
In file included from <module-includes>:1:
D:\usr\local\psp2\ORBIS SDKs\2.000_pre_mod/target/include/type_traits:12:10: fatal error: cyclic dependency in module
      'xstddef': xstddef -> initializer_list -> type_traits -> xstddef
#include <xstddef>
         ^
D:\usr\local\psp2\ORBIS SDKs\2.000_pre_mod/target/include/initializer_list:5:10: fatal error: could not build module
      'type_traits'
#include <type_traits>
~~~~~~~~^
D:\usr\local\psp2\ORBIS SDKs\2.000_pre_mod/target/include/xstddef:162:11: fatal error: could not build module
      'initializer_list'
#include <initializer_list>

Or is using lots of small top-level modules a bad idea because of the cost in performance when dealing with separate module files?

I would also like to minimize major changes to the headers.

Thanks.

-John

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20150128/8df3606b/attachment.html>


More information about the cfe-dev mailing list