In (3) separately: there is no need to choose, just create bold binary code with ARM6 and ARM7 code, which is still the default behavior. Using thumb directions depends on what your program does in most cases - ARMv6 Thumb does not contain floating point operations, so there are significant costs for floating point math. And vice versa, if you don’t have a lot of floating point math, then it’s much smarter to leave thumb mode and save memory bandwidth and cache size. ARMv7 Thumb contains floating point operations.
In your project: check the "Architecture" settings. It will probably be the "Standard (arm6 arm7)" that will generate fat.
To configure the Thumb mode (or any other settings) for each architecture, select it in the Target Info window, click the small gear in the lower left corner and select the “Add Build Setting Condition”. You can then set the value that applies to this parameter for a specific combination of SDK and architecture. So, if you are differentiating by the target processor family, then you want to do this twice by adding one value for “Any SDK” with “ARMv6” and one for “Any SDK” with “ARMv7”.
Tommy
source share