+
+void Options::setArchitecture(cpu_type_t type, cpu_subtype_t subtype)
+{
+ fArchitecture = type;
+ fSubArchitecture = subtype;
+ switch ( type ) {
+ case CPU_TYPE_POWERPC:
+ switch ( subtype ) {
+ case CPU_SUBTYPE_POWERPC_750:
+ fArchitectureName = "ppc750";
+ fHasPreferredSubType = true;
+ break;
+ case CPU_SUBTYPE_POWERPC_7400:
+ fArchitectureName = "ppc7400";
+ fHasPreferredSubType = true;
+ break;
+ case CPU_SUBTYPE_POWERPC_7450:
+ fArchitectureName = "ppc7450";
+ fHasPreferredSubType = true;
+ break;
+ case CPU_SUBTYPE_POWERPC_970:
+ fArchitectureName = "ppc970";
+ fHasPreferredSubType = true;
+ break;
+ case CPU_SUBTYPE_POWERPC_ALL:
+ fArchitectureName = "ppc";
+ fHasPreferredSubType = false;
+ break;
+ default:
+ assert(0 && "unknown ppc subtype");
+ fArchitectureName = "ppc";
+ break;
+ }
+ if ( (fMacVersionMin == ld::macVersionUnset) && (fOutputKind != Options::kObjectFile) ) {
+ #ifdef DEFAULT_MACOSX_MIN_VERSION
+ warning("-macosx_version_min not specificed, assuming " DEFAULT_MACOSX_MIN_VERSION);
+ setMacOSXVersionMin(DEFAULT_MACOSX_MIN_VERSION);
+ #else
+ warning("-macosx_version_min not specificed, assuming 10.6");
+ fMacVersionMin = ld::mac10_6;
+ #endif
+ }
+ break;
+ case CPU_TYPE_POWERPC64:
+ fArchitectureName = "ppc64";
+ if ( (fMacVersionMin == ld::macVersionUnset) && (fOutputKind != Options::kObjectFile) ) {
+ warning("-macosx_version_min not specificed, assuming 10.5");
+ fMacVersionMin = ld::mac10_5;
+ }
+ break;
+ case CPU_TYPE_I386:
+ fArchitectureName = "i386";
+ if ( (fMacVersionMin == ld::macVersionUnset) && (fOutputKind != Options::kObjectFile) ) {
+ #ifdef DEFAULT_MACOSX_MIN_VERSION
+ warning("-macosx_version_min not specificed, assuming " DEFAULT_MACOSX_MIN_VERSION);
+ setMacOSXVersionMin(DEFAULT_MACOSX_MIN_VERSION);
+ #else
+ warning("-macosx_version_min not specificed, assuming 10.6");
+ fMacVersionMin = ld::mac10_6;
+ #endif
+ }
+ if ( !fMakeCompressedDyldInfo && (fMacVersionMin >= ld::mac10_6) && !fMakeCompressedDyldInfoForceOff )
+ fMakeCompressedDyldInfo = true;
+ break;
+ case CPU_TYPE_X86_64:
+ fArchitectureName = "x86_64";
+ if ( (fMacVersionMin == ld::macVersionUnset) && (fOutputKind != Options::kObjectFile) ) {
+ #ifdef DEFAULT_MACOSX_MIN_VERSION
+ warning("-macosx_version_min not specificed, assuming " DEFAULT_MACOSX_MIN_VERSION);
+ setMacOSXVersionMin(DEFAULT_MACOSX_MIN_VERSION);
+ #else
+ warning("-macosx_version_min not specificed, assuming 10.6");
+ fMacVersionMin = ld::mac10_6;
+ #endif
+ }
+ if ( !fMakeCompressedDyldInfo && (fMacVersionMin >= ld::mac10_6) && !fMakeCompressedDyldInfoForceOff )
+ fMakeCompressedDyldInfo = true;
+ break;
+ case CPU_TYPE_ARM:
+ switch ( subtype ) {
+ case CPU_SUBTYPE_ARM_V4T:
+ fArchitectureName = "armv4t";
+ fHasPreferredSubType = true;
+ break;
+ case CPU_SUBTYPE_ARM_V5TEJ:
+ fArchitectureName = "armv5";
+ fHasPreferredSubType = true;
+ break;
+ case CPU_SUBTYPE_ARM_V6:
+ fArchitectureName = "armv6";
+ fHasPreferredSubType = true;
+ break;
+ case CPU_SUBTYPE_ARM_V7:
+ fArchitectureName = "armv7";
+ fHasPreferredSubType = true;
+ break;
+ default:
+ assert(0 && "unknown arm subtype");
+ fArchitectureName = "arm";
+ break;
+ }
+ if ( (fMacVersionMin == ld::macVersionUnset) && (fIPhoneVersionMin == ld::iPhoneVersionUnset) && (fOutputKind != Options::kObjectFile) ) {
+#if defined(DEFAULT_IPHONEOS_MIN_VERSION)
+ warning("-ios_version_min not specificed, assuming " DEFAULT_IPHONEOS_MIN_VERSION);
+ setIPhoneVersionMin(DEFAULT_IPHONEOS_MIN_VERSION);
+#elif defined(DEFAULT_MACOSX_MIN_VERSION)
+ warning("-macosx_version_min not specificed, assuming " DEFAULT_MACOSX_MIN_VERSION);
+ setMacOSXVersionMin(DEFAULT_MACOSX_MIN_VERSION);
+#else
+ warning("-macosx_version_min not specificed, assuming 10.6");
+ fMacVersionMin = ld::mac10_6;
+#endif
+ }
+ if ( !fMakeCompressedDyldInfo && minOS(ld::mac10_6, ld::iPhone3_1) && !fMakeCompressedDyldInfoForceOff )
+ fMakeCompressedDyldInfo = true;
+ break;
+ default:
+ fArchitectureName = "unknown architecture";
+ break;
+ }
+}
+
+void Options::parseArch(const char* arch)