ken wrote:Intel isn't really a single architecture either. You need to either compile for the lowest common denominator or detect cpu and other hardware features and enable or disable code accordingly.
It's not, but unlike ARM it's mostly sane. You can test for instruction support, and most importantly, Intel doesn't use the same machine code for different instructions
across different processor. This does happen with Intel vs AMD tho. Intel and AMD can't match like for like when mapping machine code considering they're both developing independently of each other. BUT, they do document these and compilers compile code that will work for both processing families.
When it comes to ARM, it's a different kettle of fish. Due to the nature of ARM licensing, there are a huge number of different processor manufacturers out there that makes it nearly impossible to cover them all in the same fashion that you cover Intel and AMD differences, but, more importantly, many manufacturers DO NOT document their processors publicly, and instead opt to release a device specific compiler, making it impossible to do what you suggest.
This is exactly why Windows Phone support is restricted to a handful of processor, why Apple manufacture their own ARM CPUs and why android apps run on a VM.
ken wrote:I'm not trying to be pushy here, but if your code were Open Source it would probably already work on most Arm versions, as well as ppc and some other bizarre stuff. I write commercial software for a living so I understand you have your license model and I respect it.
Coding isn't the issue here, it's compiling and testing.