<div dir="ltr"><br><div class="gmail_extra">Hi Karl,</div><div class="gmail_extra"><br></div><div class="gmail_extra">Thank you for the feedback, comments inline.</div><div class="gmail_extra"><div class="gmail_quote"><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word"><div></div><div>1) I’m not sure about listing all of the test targets together with the product targets. I feel it may be better to have them as separate Arrays.</div></div></blockquote><div><br></div><div>They both are similar entity so they stay together. Another example is products, which can be an executable or a library. It is also easier to scale if these are not separate. Otherwise, we need to keep adding new properties to the top level Package structure every time we introduce a new type of target.</div><div> </div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word"><div></div><div>2) I think we need a way to specify directories non-recursively. For example:</div><div><br></div><div>- Sources</div><div>| - Foo</div><div>| | - MultipleImplementations</div><div>| | | - Impl1</div><div>| | | - Impl2</div><div><br></div><div>In this case, “MultipleImplementations” contains some common definitions, but has multiple potential implementations. Impl1 and Impl2 will each implement the functionality in their own way, perhaps making use of platform-specific features or optional dependencies. Basically, I want to import “MultipleImplementations” non-recursively, then decide which subdirectory/implementation to use based on some build condition:</div><div><br></div><div>.Target(“Foo”, sources: [“Sources/Foo”, “[NR]Sources/Foo/<wbr>MultipleImplementations”])</div><div><br></div><div>if someCondition {</div><div>  package.targets[0].sources.<wbr>append(“Sources/Foo/<wbr>MultipleImplementations/Impl1”<wbr>)</div><div>else {</div><div>  package.targets[0].sources.<wbr>append(“Sources/Foo/<wbr>MultipleImplementations/Impl2”<wbr>)</div><div>}</div><div><br></div><div>The workaround today is to test for the inverse and add every other directory to “exclude”, but that’s not an elegant long-term solution.</div></div></blockquote><div><br></div><div>We agree we need to support more complex specifications. We plan to add support for globbing and conditionals in future (there is a note about that in the proposal). Both of these are additive features and this proposals gives us a good base for designing that.<br></div><div><br></div><div>Thanks,</div><div>Ankit</div></div></div></div>