Hey folks,
Just a quick note that Android SDK is now working on all target architectures.
By use of a pre-build tool I made in C#, I've created a slightly smart/evil little tool that will read the Extension.cpp and Extension.h files, and generate a new Edif.cpp with a ACE call table.
In layman's terms, when the C++ compile is started, the tools creates a list of A/C/E functions that are accessed by index.
Normally, this isn't possible because every extension has a different A/C/E, or it might be updated by the ext dev, but the pre-build tool can adapt to any extension and generate the corresponding list.
Now my Android SDK target all the ABIs; x86, ARM, ARM64, and x86_64. If some new arch came out, it would support that too.
For the ABIs that already have their assembly code, I've opted to use that instead of the call table, as I expect it's more efficient.
I'm also considering other optimisations to the call table, like a system that requests all parameter types from Fusion in one go, instead of one at a time.
Fusion doesn't actually support that, it must be one parameter at a time, but the Java file that talks to the C++ extension can have that function added in. The C++ would call the Java file which would request all the parameters in its loop, then return, giving C++ all the results in one Java call. Currently, the C++ invokes a new C++ -> Java -> C++ for each parameter.
This new tool can be used for iOS development as well, when I have an iOS version. After all, it's the same ol' C++ in both Android and iOS.
At the very least, it's a method that will work, even if I need to write a second tool.
Cheers,
~Phi