* platformFilters on Dependecies
* platformFilters on sources
* fixed current unit tests
* renamed enum to SupportedPlatforms
* supportedPlatforms field for target
* errors
* renamed errors
* inferPlatformFiltersByPath flag
* changed priority to generate filter
* fixed parsing
* fixed init
* unit test supportedPlatforms
* unit tests for errors
* fixing build settings and unit tests
* added new settingsPresets
* new check errors and unit tests
* case insensitive match
* fixed skipping cross platform target
* json decode
* unit tests inferPlatformFiltersByPath and platformFilters for sources
* mocked files
* fixing unit tests
* first test on dependecies
* unit tests completed
* fixed unit tests
* changelog
* doc changes
* doc changes
* doc changes
* doc changes
* doc changes
* doc changes
* doc changes
* doc changes
* fixed doc
* fixed unti tests style
* fixed regex
* fixed doc
* addressing comments
* Added TestProject, moved unit tests resources in another folder
* Raising error if platform is an array
* unit test on new error
* fixed error enum
* Integrated in TestProject
* committed TestProject
* unit test error
* fixing spm deps in test project
* pushed testProject
* pushed testProject
* pushed testProject fix
* comment on isResolved property
* renameing supportedPlatforms to supportedDestinations
* renameing supportedPlatforms to supportedDestinations
* renameing test app
* checked out old file
* fixing test app
* working on auto baseSDK
* fixed deploymentTarget
* renamed errors
* fixed presets
* remamed index to priority
* small comments
* removed isResolved in target and fixed error check
* added unit tests
* fixed doc
* fixed doc
* fixed doc
* fixed doc
* fixed test app
* add visionOS and more error check and testing
* fixed supported destinations priority and tests
* fixed doc
* solved conflicts
* fixed conflicts
* renamed everything
---------
Co-authored-by: Giovanni Amati <giovanni.amati@sky.uk>
* Speed up SettingsBuilder
It's unnecessary to build up a whole grouped dictionary only to check
if all platforms are identical and then immediately discard the
dictionary.
Instead we can check if all targets match the first platform, which
avoids creating a new dictionary but also allows bailing early as soon
as a non-matching platform is found.
Generating a large project (36MB json spec) on an M1 Max machine leads
to a ~6% total speedup: 28.48s vs 30.07s.
* Add changelog entry