We generate one IDL file per typekit, which means that include paths should be transitive. The current code was using #used_typekits, which only computes the typekits that the types exported by the typekit need.
Let's assume typekit X defines type BaseUsingStruct and StdUsingStruct. BaseUsingStruct reuses a type already defined by typekit base. StdUsingStruct reuses a type already defined by typekit std.
Now, we have typekit Y which defines EndStruct. EndStruct reuses StdUsingStruct, but nothing in Y uses something from base. This was causing the CMake code to only add the include paths for std and not base, and generation failed.
This commit fixes it by essentially adding the -I options recursively.
Build tests added by:
We generate one IDL file per typekit, which means that include paths should be transitive. The current code was using
#used_typekits
, which only computes the typekits that the types exported by the typekit need.Let's assume typekit X defines type
BaseUsingStruct
andStdUsingStruct
.BaseUsingStruct
reuses a type already defined by typekitbase
.StdUsingStruct
reuses a type already defined by typekitstd
.Now, we have typekit Y which defines
EndStruct
.EndStruct
reusesStdUsingStruct
, but nothing inY
uses something frombase
. This was causing the CMake code to only add the include paths forstd
and notbase
, and generation failed.This commit fixes it by essentially adding the
-I
options recursively.