├── Obfuscator.xcplugin └── Contents │ ├── Info.plist │ ├── MacOS │ └── Clang LLVM 1.0 │ ├── Resources │ ├── Default Compiler.xcspec │ ├── English.lproj │ │ ├── Default Compiler.strings │ │ └── Obfuscator 4.0.strings │ └── Obfuscator.xcspec │ ├── _CodeSignature │ └── CodeResources │ └── version.plist └── README.md /Obfuscator.xcplugin/Contents/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obaby/xcode-obfuscator-llvm-plugin/2b8ac3411c91ed16a85c48e45a861fe00a3c094b/Obfuscator.xcplugin/Contents/Info.plist -------------------------------------------------------------------------------- /Obfuscator.xcplugin/Contents/MacOS/Clang LLVM 1.0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obaby/xcode-obfuscator-llvm-plugin/2b8ac3411c91ed16a85c48e45a861fe00a3c094b/Obfuscator.xcplugin/Contents/MacOS/Clang LLVM 1.0 -------------------------------------------------------------------------------- /Obfuscator.xcplugin/Contents/Resources/Default Compiler.xcspec: -------------------------------------------------------------------------------- 1 | /** 2 | Default compiler specification 3 | 4 | Copyright (c) 2000-2012 Apple Inc. 5 | All Rights Reserved. 6 | */ 7 | 8 | { Type = Compiler; 9 | Identifier = com.apple.compilers.gcc; 10 | Class = PBXCompilerSpecificationGcc; 11 | Name = "Default Compiler"; 12 | Description = "Default Compiler"; 13 | Version = "Default"; 14 | Vendor = "Apple"; 15 | Architectures = ( 16 | i386, 17 | ppc, 18 | ppc7400, 19 | ppc7450, 20 | ppc970, 21 | ppc64, 22 | "x86_64", 23 | armv6, 24 | armv7, 25 | ); 26 | FileTypes = (sourcecode.c.c, sourcecode.c.objc, sourcecode.cpp.cpp, sourcecode.cpp.objcpp, sourcecode.asm); 27 | BuiltinJambaseRuleName = "ProcessC"; // <== is this still used? A.B. 2004.09.20 28 | CommandOutputParser = XCGccCommandOutputParser; 29 | OptionConditionFlavors = ( 30 | arch, 31 | sdk, 32 | ); 33 | SupportsHeadermaps = Yes; 34 | DashIFlagAcceptsHeadermaps = No; 35 | UseCPlusPlusCompilerDriverWhenBundlizing = No; 36 | SupportsIsysroot = NO; 37 | ExecDescription = "Compile $(InputFile)"; 38 | ProgressDescription = "Compiling $(CommandProgressByType) source files"; 39 | ExecDescriptionForPrecompile = "Precompile $(InputFile)"; 40 | ProgressDescriptionForPrecompile = "Precompiling $(CommandProgressByType) prefix headers"; 41 | } 42 | -------------------------------------------------------------------------------- /Obfuscator.xcplugin/Contents/Resources/English.lproj/Default Compiler.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/obaby/xcode-obfuscator-llvm-plugin/2b8ac3411c91ed16a85c48e45a861fe00a3c094b/Obfuscator.xcplugin/Contents/Resources/English.lproj/Default Compiler.strings -------------------------------------------------------------------------------- /Obfuscator.xcplugin/Contents/Resources/English.lproj/Obfuscator 4.0.strings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Description 6 | Obfuscator 4.0 compiler 7 | Name 8 | Obfuscator 4.0 9 | Vendor 10 | HEIG-VD 11 | Version 12 | 4.0 13 | [ASANPolicy]-category 14 | Address Sanitizer 15 | [CLANG_ADDRESS_SANITIZER_CONTAINER_OVERFLOW]-description 16 | Check for C++ container overflow when Address Sanitizer is enabled. This check requires the entire application to be built with Address Sanitizer. If not, it may report false positives. 17 | [CLANG_ADDRESS_SANITIZER_CONTAINER_OVERFLOW]-name 18 | Enable C++ Container Overflow Checks 19 | [CLANG_ADDRESS_SANITIZER_CONTAINER_OVERFLOW]-value-[NO] 20 | No 21 | [CLANG_ADDRESS_SANITIZER_CONTAINER_OVERFLOW]-value-[YES] 22 | Yes 23 | [CLANG_ANALYZER_DEADCODE_DEADSTORES]-description 24 | Check for values stored to variables and never read again. 25 | [CLANG_ANALYZER_DEADCODE_DEADSTORES]-name 26 | Dead Stores 27 | [CLANG_ANALYZER_DEADCODE_DEADSTORES]-value-[NO] 28 | No 29 | [CLANG_ANALYZER_DEADCODE_DEADSTORES]-value-[YES] 30 | Yes 31 | [CLANG_ANALYZER_DEADCODE_IDEMPOTENT_OPERATIONS]-description 32 | This checker is a form of dead code analysis, and flags various "idempotent operations" (operations that effectively do nothing). Examples include always assigning a value to variable that never changes the original value, always adding 0 to a variable, etc. 33 | [CLANG_ANALYZER_DEADCODE_IDEMPOTENT_OPERATIONS]-name 34 | Idempotent Operations 35 | [CLANG_ANALYZER_DEADCODE_IDEMPOTENT_OPERATIONS]-value-[NO] 36 | No 37 | [CLANG_ANALYZER_DEADCODE_IDEMPOTENT_OPERATIONS]-value-[YES] 38 | Yes 39 | [CLANG_ANALYZER_GCD]-description 40 | Check for misuses of the Grand Central Dispatch API. 41 | [CLANG_ANALYZER_GCD]-name 42 | Misuse of Grand Central Dispatch 43 | [CLANG_ANALYZER_GCD]-value-[NO] 44 | No 45 | [CLANG_ANALYZER_GCD]-value-[YES] 46 | Yes 47 | [CLANG_ANALYZER_LOCALIZABILITY_EMPTY_CONTEXT]-description 48 | Warn when a call to an `NSLocalizedString()` macro is missing a context comment for the localizer. 49 | [CLANG_ANALYZER_LOCALIZABILITY_EMPTY_CONTEXT]-name 50 | Missing Localization Context Comment 51 | [CLANG_ANALYZER_LOCALIZABILITY_EMPTY_CONTEXT]-value-[NO] 52 | No 53 | [CLANG_ANALYZER_LOCALIZABILITY_EMPTY_CONTEXT]-value-[YES] 54 | Yes 55 | [CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED]-description 56 | Warn when a nonlocalized string is passed to a user interface method expecting a localized string. 57 | [CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED]-name 58 | Missing Localizability 59 | [CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED]-value-[NO] 60 | No 61 | [CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED]-value-[YES] 62 | Yes 63 | [CLANG_ANALYZER_MEMORY_MANAGEMENT]-description 64 | Warn about memory leaks, use-after-free, and other API misuses. 65 | [CLANG_ANALYZER_MEMORY_MANAGEMENT]-name 66 | Improper Memory Management 67 | [CLANG_ANALYZER_MEMORY_MANAGEMENT]-value-[NO] 68 | No 69 | [CLANG_ANALYZER_MEMORY_MANAGEMENT]-value-[YES] 70 | Yes 71 | [CLANG_ANALYZER_NONNULL]-description 72 | Check for misuses of `nonnull` parameter and return types. 73 | [CLANG_ANALYZER_NONNULL]-name 74 | Misuse of 'nonnull' 75 | [CLANG_ANALYZER_NONNULL]-value-[NO] 76 | No 77 | [CLANG_ANALYZER_NONNULL]-value-[YES] 78 | Yes (Aggressive) 79 | [CLANG_ANALYZER_NONNULL]-value-[YES_NONAGGRESSIVE] 80 | Yes 81 | [CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION]-description 82 | Warn when a number object, such as an instance of `NSNumber`, `CFNumberRef`, `OSNumber`, or `OSBoolean` is compared or converted to a primitive value instead of another object. 83 | [CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION]-name 84 | Suspicious Conversions of NSNumber and CFNumberRef 85 | [CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION]-value-[NO] 86 | No 87 | [CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION]-value-[YES] 88 | Yes 89 | [CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION]-value-[YES_AGGRESSIVE] 90 | Yes (Aggressive) 91 | [CLANG_ANALYZER_OBJC_ATSYNC]-description 92 | Warn on `nil` pointers used as mutexes for `@synchronized`. 93 | [CLANG_ANALYZER_OBJC_ATSYNC]-name 94 | @synchronized with nil mutex 95 | [CLANG_ANALYZER_OBJC_ATSYNC]-value-[NO] 96 | No 97 | [CLANG_ANALYZER_OBJC_ATSYNC]-value-[YES] 98 | Yes 99 | [CLANG_ANALYZER_OBJC_COLLECTIONS]-description 100 | Warn if `CF` collections are created with non-pointer-size values. Check if `NS` collections are initialized with non-Objective-C type elements. 101 | [CLANG_ANALYZER_OBJC_COLLECTIONS]-name 102 | Misuse of Collections API 103 | [CLANG_ANALYZER_OBJC_COLLECTIONS]-value-[NO] 104 | No 105 | [CLANG_ANALYZER_OBJC_COLLECTIONS]-value-[YES] 106 | Yes 107 | [CLANG_ANALYZER_OBJC_DEALLOC]-description 108 | Warn when an instance is improperly cleaned up in `-dealloc`. 109 | [CLANG_ANALYZER_OBJC_DEALLOC]-name 110 | Improper Instance Cleanup in '-dealloc' 111 | [CLANG_ANALYZER_OBJC_DEALLOC]-value-[NO] 112 | No 113 | [CLANG_ANALYZER_OBJC_DEALLOC]-value-[YES] 114 | Yes 115 | [CLANG_ANALYZER_OBJC_GENERICS]-description 116 | Warn if a specialized generic type is converted to an incompatible type. 117 | [CLANG_ANALYZER_OBJC_GENERICS]-name 118 | Misuse of Objective-C generics 119 | [CLANG_ANALYZER_OBJC_GENERICS]-value-[NO] 120 | No 121 | [CLANG_ANALYZER_OBJC_GENERICS]-value-[YES] 122 | Yes 123 | [CLANG_ANALYZER_OBJC_INCOMP_METHOD_TYPES]-description 124 | Warn about Objective-C method signatures with type incompatibilities. 125 | [CLANG_ANALYZER_OBJC_INCOMP_METHOD_TYPES]-name 126 | Method Signatures Mismatch 127 | [CLANG_ANALYZER_OBJC_INCOMP_METHOD_TYPES]-value-[NO] 128 | No 129 | [CLANG_ANALYZER_OBJC_INCOMP_METHOD_TYPES]-value-[YES] 130 | Yes 131 | [CLANG_ANALYZER_OBJC_NSCFERROR]-description 132 | Warn if functions accepting `CFErrorRef` or `NSError` cannot indicate that an error occurred. 133 | [CLANG_ANALYZER_OBJC_NSCFERROR]-name 134 | Improper Handling of CFError and NSError 135 | [CLANG_ANALYZER_OBJC_NSCFERROR]-value-[NO] 136 | No 137 | [CLANG_ANALYZER_OBJC_NSCFERROR]-value-[YES] 138 | Yes 139 | [CLANG_ANALYZER_OBJC_RETAIN_COUNT]-description 140 | Warn on leaks and improper reference count management. 141 | [CLANG_ANALYZER_OBJC_RETAIN_COUNT]-name 142 | Violation of Reference Counting Rules 143 | [CLANG_ANALYZER_OBJC_RETAIN_COUNT]-value-[NO] 144 | No 145 | [CLANG_ANALYZER_OBJC_RETAIN_COUNT]-value-[YES] 146 | Yes 147 | [CLANG_ANALYZER_OBJC_SELF_INIT]-description 148 | Check that `super init` is properly called within an Objective-C initialization method. 149 | [CLANG_ANALYZER_OBJC_SELF_INIT]-name 150 | Violation of 'self = [super init]' Rule 151 | [CLANG_ANALYZER_OBJC_SELF_INIT]-value-[NO] 152 | No 153 | [CLANG_ANALYZER_OBJC_SELF_INIT]-value-[YES] 154 | Yes 155 | [CLANG_ANALYZER_OBJC_UNUSED_IVARS]-description 156 | Warn about private ivars that are never used. 157 | [CLANG_ANALYZER_OBJC_UNUSED_IVARS]-name 158 | Unused Ivars 159 | [CLANG_ANALYZER_OBJC_UNUSED_IVARS]-value-[NO] 160 | No 161 | [CLANG_ANALYZER_OBJC_UNUSED_IVARS]-value-[YES] 162 | Yes 163 | [CLANG_ANALYZER_SECURITY_BUFFER_OVERFLOW_EXPERIMENTAL]-description 164 | Check for potential buffer overflows. 165 | [CLANG_ANALYZER_SECURITY_BUFFER_OVERFLOW_EXPERIMENTAL]-name 166 | *EXPERIMENTAL* Buffer overflows 167 | [CLANG_ANALYZER_SECURITY_BUFFER_OVERFLOW_EXPERIMENTAL]-value-[NO] 168 | No 169 | [CLANG_ANALYZER_SECURITY_BUFFER_OVERFLOW_EXPERIMENTAL]-value-[YES] 170 | Yes 171 | [CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER]-description 172 | Warn on using a floating point value as a loop counter (CERT: FLP30-C, FLP30-CPP). 173 | [CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER]-name 174 | Floating Point Value Used as Loop Counter 175 | [CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER]-value-[NO] 176 | No 177 | [CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER]-value-[YES] 178 | Yes 179 | [CLANG_ANALYZER_SECURITY_INSECUREAPI_GETPW_GETS]-description 180 | Warn on uses of `getpw` and `gets`. The functions are dangerous as they may trigger a buffer overflow. 181 | [CLANG_ANALYZER_SECURITY_INSECUREAPI_GETPW_GETS]-name 182 | Use of 'getpw', 'gets' (Buffer Overflow) 183 | [CLANG_ANALYZER_SECURITY_INSECUREAPI_GETPW_GETS]-value-[NO] 184 | No 185 | [CLANG_ANALYZER_SECURITY_INSECUREAPI_GETPW_GETS]-value-[YES] 186 | Yes 187 | [CLANG_ANALYZER_SECURITY_INSECUREAPI_MKSTEMP]-description 188 | Warn on uses of `mktemp`, which produces predictable temporary files. It is obsoleted by `mktemps`. Warn when `mkstemp` is passed fewer than 6 `X`'s in the format string. 189 | [CLANG_ANALYZER_SECURITY_INSECUREAPI_MKSTEMP]-name 190 | Use of 'mktemp' or Predictable 'mktemps' 191 | [CLANG_ANALYZER_SECURITY_INSECUREAPI_MKSTEMP]-value-[NO] 192 | No 193 | [CLANG_ANALYZER_SECURITY_INSECUREAPI_MKSTEMP]-value-[YES] 194 | Yes 195 | [CLANG_ANALYZER_SECURITY_INSECUREAPI_RAND]-description 196 | Warn on uses of `rand`, `random`, and related functions, which produce predictable random number sequences. Use `arc4random` instead. 197 | [CLANG_ANALYZER_SECURITY_INSECUREAPI_RAND]-name 198 | Use of 'rand' Functions 199 | [CLANG_ANALYZER_SECURITY_INSECUREAPI_RAND]-value-[NO] 200 | No 201 | [CLANG_ANALYZER_SECURITY_INSECUREAPI_RAND]-value-[YES] 202 | Yes 203 | [CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY]-description 204 | Warn on uses of the `strcpy` and `strcat` functions, which can result in buffer overflows. Use `strlcpy` or `strlcat` instead. 205 | [CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY]-name 206 | Use of 'strcpy' and 'strcat' 207 | [CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY]-value-[NO] 208 | No 209 | [CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY]-value-[YES] 210 | Yes 211 | [CLANG_ANALYZER_SECURITY_INSECUREAPI_UNCHECKEDRETURN]-description 212 | Warn on uses of sensitive functions whose return values must be always checked. 213 | [CLANG_ANALYZER_SECURITY_INSECUREAPI_UNCHECKEDRETURN]-name 214 | Unchecked Return Values 215 | [CLANG_ANALYZER_SECURITY_INSECUREAPI_UNCHECKEDRETURN]-value-[NO] 216 | No 217 | [CLANG_ANALYZER_SECURITY_INSECUREAPI_UNCHECKEDRETURN]-value-[YES] 218 | Yes 219 | [CLANG_ANALYZER_SECURITY_INSECUREAPI_VFORK]-description 220 | Warn on uses of the `vfork` function, which is inherently insecure. Use the safer `posix_spawn` function instead. 221 | [CLANG_ANALYZER_SECURITY_INSECUREAPI_VFORK]-name 222 | Use of 'vfork' 223 | [CLANG_ANALYZER_SECURITY_INSECUREAPI_VFORK]-value-[NO] 224 | No 225 | [CLANG_ANALYZER_SECURITY_INSECUREAPI_VFORK]-value-[YES] 226 | Yes 227 | [CLANG_ANALYZER_SECURITY_KEYCHAIN_API]-description 228 | Check for misuse of the Keychain Services API. 229 | [CLANG_ANALYZER_SECURITY_KEYCHAIN_API]-name 230 | Misuse of Keychain Services API 231 | [CLANG_ANALYZER_SECURITY_KEYCHAIN_API]-value-[NO] 232 | No 233 | [CLANG_ANALYZER_SECURITY_KEYCHAIN_API]-value-[YES] 234 | Yes 235 | [CLANG_CXX_LANGUAGE_STANDARD]-description 236 | Choose a standard or non-standard C++ language dialect. Options include: 237 | 238 | * *C++98:* Accept ISO C++ 1998 with amendments, but not GNU extensions. [-std=c++98] 239 | * *GNU++98:* Accept ISO C++ 1998 with amendments and GNU extensions. [-std=gnu++98] 240 | * *C++11:* Accept the ISO C++ 2011 standard with amendments, but not GNU extensions. [-std=c++11] 241 | * *GNU++11:* Accept the ISO C++ 2011 standard with amendments and GNU extensions. [-std=gnu++11] 242 | * *C++14:* Accept the ISO C++ 2014 standard with amendments, but not GNU extensions. [-std=c++14] 243 | * *GNU++14:* Accept the ISO C++ 2014 standard with amendments and GNU extensions. [-std=gnu++14] 244 | * *C++17:* Accept the ISO C++ 2017 standard with amendments, but not GNU extensions. [-std=c++17] 245 | * *GNU++17:* Accept the ISO C++ 2017 standard with amendments and GNU extensions. [-std=gnu++17] 246 | * *Compiler Default:* Tells the compiler to use its default C++ language dialect. This is normally the best choice unless you have specific needs. (Currently equivalent to GNU++98.) 247 | [CLANG_CXX_LANGUAGE_STANDARD]-description-[c++0x] 248 | Accept the ISO C++ 2011 standard with amendments, but not GNU extensions. [-std=c++11] 249 | [CLANG_CXX_LANGUAGE_STANDARD]-description-[c++14] 250 | Accept the ISO C++ 2014 standard with amendments, but not GNU extensions. [-std=c++14] 251 | [CLANG_CXX_LANGUAGE_STANDARD]-description-[c++17] 252 | Accept the ISO C++ 2017 standard with amendments, but not GNU extensions. [-std=c++17] 253 | [CLANG_CXX_LANGUAGE_STANDARD]-description-[c++98] 254 | Accept ISO C++ 1998 with amendments, but not GNU extensions. [-std=c++98] 255 | [CLANG_CXX_LANGUAGE_STANDARD]-description-[compiler-default] 256 | Tells the compiler to use its default C++ language dialect. This is normally the best choice unless you have specific needs. (Currently equivalent to GNUC++98.) 257 | [CLANG_CXX_LANGUAGE_STANDARD]-description-[gnu++0x] 258 | Accept the ISO C++ 2011 standard with amendments and GNU extensions. [-std=gnu++11] 259 | [CLANG_CXX_LANGUAGE_STANDARD]-description-[gnu++14] 260 | Accept the ISO C++ 2014 standard with amendments and GNU extensions. [-std=gnu++14] 261 | [CLANG_CXX_LANGUAGE_STANDARD]-description-[gnu++17] 262 | Accept the ISO C++ 2017 standard with amendments and GNU extensions. [-std=gnu++17] 263 | [CLANG_CXX_LANGUAGE_STANDARD]-description-[gnu++98] 264 | Accept ISO C++ 1998 with amendments and GNU extensions. [-std=gnu++98] 265 | [CLANG_CXX_LANGUAGE_STANDARD]-name 266 | C++ Language Dialect 267 | [CLANG_CXX_LANGUAGE_STANDARD]-value-[c++0x] 268 | C++11 [-std=c++11] 269 | [CLANG_CXX_LANGUAGE_STANDARD]-value-[c++14] 270 | C++14 [-std=c++14] 271 | [CLANG_CXX_LANGUAGE_STANDARD]-value-[c++17] 272 | C++17 [-std=c++17] 273 | [CLANG_CXX_LANGUAGE_STANDARD]-value-[c++98] 274 | C++98 [-std=c++98] 275 | [CLANG_CXX_LANGUAGE_STANDARD]-value-[compiler-default] 276 | Compiler Default 277 | [CLANG_CXX_LANGUAGE_STANDARD]-value-[gnu++0x] 278 | GNU++11 [-std=gnu++11] 279 | [CLANG_CXX_LANGUAGE_STANDARD]-value-[gnu++14] 280 | GNU++14 [-std=gnu++14] 281 | [CLANG_CXX_LANGUAGE_STANDARD]-value-[gnu++17] 282 | GNU++17 [-std=gnu++17] 283 | [CLANG_CXX_LANGUAGE_STANDARD]-value-[gnu++98] 284 | GNU++98 [-std=gnu++98] 285 | [CLANG_CXX_LIBRARY]-description 286 | Choose a version of the C++ standard library to use. 287 | 288 | * *libstdc++:* A traditional C++ standard library that works with GCC and the LLVM Compiler (default). 289 | * *libc++:* A highly optimized C++ standard library that works only with the LLVM Compiler, and is designed to support new C++11 features. 290 | [CLANG_CXX_LIBRARY]-description-[compiler-default] 291 | Tells the compiler to use its default C++ standard library. (Currently equivalent to libstdc++) 292 | [CLANG_CXX_LIBRARY]-description-[libc++] 293 | New optimized C++ standard library that works only with the LLVM Compiler. 294 | [CLANG_CXX_LIBRARY]-description-[libstdc++] 295 | C++ standard library that works with GCC and the LLVM Compiler. 296 | [CLANG_CXX_LIBRARY]-name 297 | C++ Standard Library 298 | [CLANG_CXX_LIBRARY]-value-[compiler-default] 299 | Compiler Default 300 | [CLANG_CXX_LIBRARY]-value-[libc++] 301 | libc++ (LLVM C++ standard library with C++11 support) 302 | [CLANG_CXX_LIBRARY]-value-[libstdc++] 303 | libstdc++ (GNU C++ standard library) 304 | [CLANG_DEBUG_INFORMATION_LEVEL]-description 305 | Toggles the amount of debug information emitted when debug symbols are enabled. This can impact the size of the generated debug information, which may matter in some cases for large projects, such as when using LTO. 306 | [CLANG_DEBUG_INFORMATION_LEVEL]-name 307 | Debug Information Level 308 | [CLANG_DEBUG_INFORMATION_LEVEL]-value-[default] 309 | Compiler default 310 | [CLANG_DEBUG_INFORMATION_LEVEL]-value-[line-tables-only] 311 | Line tables only 312 | [CLANG_ENABLE_MODULES]-description 313 | Enables the use of modules for system APIs. System headers are imported as semantic modules instead of raw headers. This can result in faster builds and project indexing. 314 | [CLANG_ENABLE_MODULES]-name 315 | Enable Modules (C and Objective-C) 316 | [CLANG_ENABLE_MODULES]-value-[NO] 317 | No 318 | [CLANG_ENABLE_MODULES]-value-[YES] 319 | Yes 320 | [CLANG_ENABLE_OBJC_ARC]-description 321 | Compiles reference-counted Objective-C code (when garbage collection is not enabled) to use Automatic Reference Counting. Code compiled using automated reference counting is compatible with other code (such as frameworks) compiled using either manual reference counting (for example, traditional `retain` and `release` messages) or automated reference counting. Using this mode is currently incompatible with compiling code to use Objective-C Garbage Collection. 322 | [CLANG_ENABLE_OBJC_ARC]-name 323 | Objective-C Automatic Reference Counting 324 | [CLANG_ENABLE_OBJC_ARC]-value-[NO] 325 | Use manual (traditional) reference counting 326 | [CLANG_ENABLE_OBJC_ARC]-value-[YES] 327 | Use automated reference counting 328 | [CLANG_ENABLE_OBJC_WEAK]-description 329 | Compiles Objective-C code to enable weak references for code compiled with manual retain release (MRR) semantics. 330 | [CLANG_ENABLE_OBJC_WEAK]-name 331 | Weak References in Manual Retain Release 332 | [CLANG_ENABLE_OBJC_WEAK]-value-[NO] 333 | Do not enable weak references in MRR 334 | [CLANG_ENABLE_OBJC_WEAK]-value-[YES] 335 | Enable weak references for MRR 336 | [CLANG_LINK_OBJC_RUNTIME]-description 337 | When linking a target using Objective-C code, implicitly link in Foundation (and if deploying back to an older OS) a backwards compatibility library to allow newer language features to run on an OS where the runtime support is not natively available. Most targets that use Objective-C should use this, although there are rare cases where a target should opt out of this behavior. 338 | [CLANG_LINK_OBJC_RUNTIME]-name 339 | Implicitly Link Objective-C Runtime Support 340 | [CLANG_LINK_OBJC_RUNTIME]-value-[No] 341 | No 342 | [CLANG_LINK_OBJC_RUNTIME]-value-[YES] 343 | Yes 344 | [CLANG_MODULES_AUTOLINK]-description 345 | Automatically link SDK frameworks that are referenced using `#import` or `#include`. This feature requires also enabling support for modules. 346 | [CLANG_MODULES_AUTOLINK]-name 347 | Link Frameworks Automatically 348 | [CLANG_MODULES_AUTOLINK]-value-[NO] 349 | No 350 | [CLANG_MODULES_AUTOLINK]-value-[YES] 351 | Yes (when modules are enabled) 352 | [CLANG_OPTIMIZATION_PROFILE_FILE]-description 353 | The path to the file of the profile data to use when `CLANG_USE_OPTIMIZATION_PROFILE` is enabled. 354 | [CLANG_OPTIMIZATION_PROFILE_FILE]-name 355 | Optimization Profile File 356 | [CLANG_STATIC_ANALYZER_MODE]-description 357 | The depth the static analyzer uses during the Build action. Use `Deep` to exercise the full power of the analyzer. Use `Shallow` for faster analysis. 358 | [CLANG_STATIC_ANALYZER_MODE]-name 359 | Mode of Analysis for 'Build' 360 | [CLANG_STATIC_ANALYZER_MODE]-value-[deep] 361 | Deep 362 | [CLANG_STATIC_ANALYZER_MODE]-value-[shallow] 363 | Shallow (faster) 364 | [CLANG_STATIC_ANALYZER_MODE_ON_ANALYZE_ACTION]-description 365 | The depth the static analyzer uses during the Analyze action. Use `Deep` to exercise the full power of the analyzer. Use `Shallow` for faster analysis. 366 | [CLANG_STATIC_ANALYZER_MODE_ON_ANALYZE_ACTION]-name 367 | Mode of Analysis for 'Analyze' 368 | [CLANG_STATIC_ANALYZER_MODE_ON_ANALYZE_ACTION]-value-[deep] 369 | Deep 370 | [CLANG_STATIC_ANALYZER_MODE_ON_ANALYZE_ACTION]-value-[shallow] 371 | Shallow (faster) 372 | [CLANG_UNDEFINED_BEHAVIOR_SANITIZER_INTEGER]-description 373 | Check for unsigned integer overflow, in addition to checks for signed integer overflow. 374 | [CLANG_UNDEFINED_BEHAVIOR_SANITIZER_INTEGER]-name 375 | Enable Extra Integer Checks 376 | [CLANG_UNDEFINED_BEHAVIOR_SANITIZER_INTEGER]-value-[NO] 377 | No 378 | [CLANG_UNDEFINED_BEHAVIOR_SANITIZER_INTEGER]-value-[YES] 379 | Yes 380 | [CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY]-description 381 | Check for violations of nullability annotations in function calls, return statements, and assignments. 382 | [CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY]-name 383 | Enable Nullability Annotation Checks 384 | [CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY]-value-[NO] 385 | No 386 | [CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY]-value-[YES] 387 | Yes 388 | [CLANG_USE_OPTIMIZATION_PROFILE]-description 389 | When this setting is enabled, `clang` will use the optimization profile collected for a target when building it. 390 | [CLANG_USE_OPTIMIZATION_PROFILE]-name 391 | Use Optimization Profile 392 | [CLANG_USE_OPTIMIZATION_PROFILE]-value-[NO] 393 | No 394 | [CLANG_USE_OPTIMIZATION_PROFILE]-value-[YES] 395 | Yes 396 | [CLANG_WARN_ASSIGN_ENUM]-description 397 | Warn about assigning integer constants to enum values that are out of the range of the enumerated type. 398 | [CLANG_WARN_ASSIGN_ENUM]-name 399 | Out-of-Range Enum Assignments 400 | [CLANG_WARN_ASSIGN_ENUM]-value-[NO] 401 | No 402 | [CLANG_WARN_ASSIGN_ENUM]-value-[YES] 403 | Yes 404 | [CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING]-description 405 | Warn about block captures of implicitly autoreleasing parameters. 406 | [CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING]-name 407 | Block Capture of Autoreleasing 408 | [CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING]-value-[NO] 409 | No 410 | [CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING]-value-[YES] 411 | Yes 412 | [CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING]-value-[YES_ERROR] 413 | Yes (Error) 414 | [CLANG_WARN_BOOL_CONVERSION]-description 415 | Warn about implicit conversions to boolean values that are suspicious. For example, writing `if (foo)` where `foo` is the name a function will trigger a warning. 416 | [CLANG_WARN_BOOL_CONVERSION]-name 417 | Implicit Boolean Conversions 418 | [CLANG_WARN_BOOL_CONVERSION]-value-[NO] 419 | No 420 | [CLANG_WARN_BOOL_CONVERSION]-value-[YES] 421 | Yes 422 | [CLANG_WARN_BOOL_CONVERSION]-value-[YES_ERROR] 423 | Yes (Error) 424 | [CLANG_WARN_COMMA]-description 425 | Warn about suspicious uses of the comma operator. 426 | [CLANG_WARN_COMMA]-name 427 | Suspicious Commas 428 | [CLANG_WARN_COMMA]-value-[NO] 429 | No 430 | [CLANG_WARN_COMMA]-value-[YES] 431 | Yes 432 | [CLANG_WARN_COMMA]-value-[YES_ERROR] 433 | Yes (Error) 434 | [CLANG_WARN_CONSTANT_CONVERSION]-description 435 | Warn about implicit conversions of constant values that cause the constant value to change, either through a loss of precision, or entirely in its meaning. 436 | [CLANG_WARN_CONSTANT_CONVERSION]-name 437 | Implicit Constant Conversions 438 | [CLANG_WARN_CONSTANT_CONVERSION]-value-[NO] 439 | No 440 | [CLANG_WARN_CONSTANT_CONVERSION]-value-[YES] 441 | Yes 442 | [CLANG_WARN_CONSTANT_CONVERSION]-value-[YES_ERROR] 443 | Yes (Error) 444 | [CLANG_WARN_CXX0X_EXTENSIONS]-description 445 | When compiling C++ code using a language standard older than C++11, warn about the use of C++11 extensions. 446 | [CLANG_WARN_CXX0X_EXTENSIONS]-name 447 | Using C++11 extensions in earlier versions of C++ 448 | [CLANG_WARN_CXX0X_EXTENSIONS]-value-[NO] 449 | No 450 | [CLANG_WARN_CXX0X_EXTENSIONS]-value-[YES] 451 | Yes 452 | [CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS]-description 453 | Warn if an Objective-C class either subclasses a deprecated class or overrides a method that has been marked deprecated. 454 | [CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS]-name 455 | Overriding Deprecated Objective-C Methods 456 | [CLANG_WARN_DIRECT_OBJC_ISA_USAGE]-description 457 | Warn about direct accesses to the Objective-C `isa` pointer instead of using a runtime API. 458 | [CLANG_WARN_DIRECT_OBJC_ISA_USAGE]-name 459 | Direct usage of 'isa' 460 | [CLANG_WARN_DIRECT_OBJC_ISA_USAGE]-value-[NO] 461 | No 462 | [CLANG_WARN_DIRECT_OBJC_ISA_USAGE]-value-[YES] 463 | Yes 464 | [CLANG_WARN_DIRECT_OBJC_ISA_USAGE]-value-[YES_ERROR] 465 | Yes (treat as error) 466 | [CLANG_WARN_DOCUMENTATION_COMMENTS]-description 467 | Warns about issues in documentation comments (`doxygen`-style) such as missing or incorrect documentation tags. 468 | [CLANG_WARN_DOCUMENTATION_COMMENTS]-name 469 | Documentation Comments 470 | [CLANG_WARN_DOCUMENTATION_COMMENTS]-value-[NO] 471 | No 472 | [CLANG_WARN_DOCUMENTATION_COMMENTS]-value-[YES] 473 | Yes 474 | [CLANG_WARN_EMPTY_BODY]-description 475 | Warn about loop bodies that are suspiciously empty. 476 | [CLANG_WARN_EMPTY_BODY]-name 477 | Empty Loop Bodies 478 | [CLANG_WARN_EMPTY_BODY]-value-[NO] 479 | No 480 | [CLANG_WARN_EMPTY_BODY]-value-[YES] 481 | Yes 482 | [CLANG_WARN_ENUM_CONVERSION]-description 483 | Warn about implicit conversions between different kinds of enum values. For example, this can catch issues when using the wrong enum flag as an argument to a function or method. 484 | [CLANG_WARN_ENUM_CONVERSION]-name 485 | Implicit Enum Conversions 486 | [CLANG_WARN_ENUM_CONVERSION]-value-[NO] 487 | No 488 | [CLANG_WARN_ENUM_CONVERSION]-value-[YES] 489 | Yes 490 | [CLANG_WARN_ENUM_CONVERSION]-value-[YES_ERROR] 491 | Yes (Error) 492 | [CLANG_WARN_FLOAT_CONVERSION]-description 493 | Warn about implicit conversions that turn floating-point numbers into integers. 494 | [CLANG_WARN_FLOAT_CONVERSION]-name 495 | Implicit Float Conversions 496 | [CLANG_WARN_FLOAT_CONVERSION]-value-[NO] 497 | No 498 | [CLANG_WARN_FLOAT_CONVERSION]-value-[YES] 499 | Yes 500 | [CLANG_WARN_FLOAT_CONVERSION]-value-[YES_ERROR] 501 | Yes (Error) 502 | [CLANG_WARN_IMPLICIT_SIGN_CONVERSION]-description 503 | Warn about implicit integer conversions that change the signedness of an integer value. 504 | [CLANG_WARN_IMPLICIT_SIGN_CONVERSION]-name 505 | Implicit Signedness Conversions 506 | [CLANG_WARN_IMPLICIT_SIGN_CONVERSION]-value-[NO] 507 | No 508 | [CLANG_WARN_IMPLICIT_SIGN_CONVERSION]-value-[YES] 509 | Yes 510 | [CLANG_WARN_IMPLICIT_SIGN_CONVERSION]-value-[YES_ERROR] 511 | Yes (Error) 512 | [CLANG_WARN_INFINITE_RECURSION]-description 513 | Warn if all paths through a function call itself. 514 | [CLANG_WARN_INFINITE_RECURSION]-name 515 | Infinite Recursion 516 | [CLANG_WARN_INFINITE_RECURSION]-value-[NO] 517 | No 518 | [CLANG_WARN_INFINITE_RECURSION]-value-[YES] 519 | Yes 520 | [CLANG_WARN_INT_CONVERSION]-description 521 | Warn about implicit conversions between pointers and integers. For example, this can catch issues when one incorrectly intermixes using `NSNumber*`'s and raw integers. 522 | [CLANG_WARN_INT_CONVERSION]-name 523 | Implicit Integer to Pointer Conversions 524 | [CLANG_WARN_INT_CONVERSION]-value-[NO] 525 | No 526 | [CLANG_WARN_INT_CONVERSION]-value-[YES] 527 | Yes 528 | [CLANG_WARN_INT_CONVERSION]-value-[YES_ERROR] 529 | Yes (Error) 530 | [CLANG_WARN_NON_LITERAL_NULL_CONVERSION]-description 531 | Warn about non-literal expressions that evaluate to zero being treated as a null pointer. 532 | [CLANG_WARN_NON_LITERAL_NULL_CONVERSION]-name 533 | Implicit Non-Literal Null Conversions 534 | [CLANG_WARN_NON_LITERAL_NULL_CONVERSION]-value-[NO] 535 | No 536 | [CLANG_WARN_NON_LITERAL_NULL_CONVERSION]-value-[YES] 537 | Yes 538 | [CLANG_WARN_NON_LITERAL_NULL_CONVERSION]-value-[YES_ERROR] 539 | Yes (Error) 540 | [CLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION]-description 541 | Warns when a nullable expression is used somewhere it’s not allowed, such as when passed as a `_Nonnull` parameter. 542 | [CLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION]-name 543 | Incorrect Uses of Nullable Values 544 | [CLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION]-value-[NO] 545 | No 546 | [CLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION]-value-[YES] 547 | Yes 548 | [CLANG_WARN_OBJCPP_ARC_ABI]-description 549 | When compiling Objective-C++ code that uses Automatic Reference Counting, report code that may cause ABI issues when linking ARC code with traditional manual reference counting code. 550 | [CLANG_WARN_OBJCPP_ARC_ABI]-name 551 | Objective-C++ Automatic Reference Counting ABI incompatibilities 552 | [CLANG_WARN_OBJCPP_ARC_ABI]-value-[NO] 553 | No 554 | [CLANG_WARN_OBJCPP_ARC_ABI]-value-[YES] 555 | Yes 556 | [CLANG_WARN_OBJC_EXPLICIT_OWNERSHIP_TYPE]-description 557 | Warn about implicit ownership types on Objective-C object references as out parameters. For example, declaring a parameter with type `NSObject**` will produce a warning because the compiler will assume that the out parameter's ownership type is `__autoreleasing`. 558 | [CLANG_WARN_OBJC_EXPLICIT_OWNERSHIP_TYPE]-name 559 | Implicit ownership types on out parameters 560 | [CLANG_WARN_OBJC_EXPLICIT_OWNERSHIP_TYPE]-value-[NO] 561 | No 562 | [CLANG_WARN_OBJC_EXPLICIT_OWNERSHIP_TYPE]-value-[YES] 563 | Yes 564 | [CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES]-description 565 | Warn about `@property` declarations that are implicitly atomic. 566 | [CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES]-name 567 | Implicit Atomic Objective-C Properties 568 | [CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES]-value-[NO] 569 | No 570 | [CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES]-value-[YES] 571 | Yes 572 | [CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF]-description 573 | Warn about implicit retains of `self` within blocks, which can create a retain-cycle. 574 | [CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF]-name 575 | Implicit retain of 'self' within blocks 576 | [CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF]-value-[NO] 577 | No 578 | [CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF]-value-[YES] 579 | Yes 580 | [CLANG_WARN_OBJC_LITERAL_CONVERSION]-description 581 | Warn about implicit conversions from Objective-C literals to values of incompatible type. 582 | [CLANG_WARN_OBJC_LITERAL_CONVERSION]-name 583 | Implicit Objective-C Literal Conversions 584 | [CLANG_WARN_OBJC_LITERAL_CONVERSION]-value-[NO] 585 | No 586 | [CLANG_WARN_OBJC_LITERAL_CONVERSION]-value-[YES] 587 | Yes 588 | [CLANG_WARN_OBJC_LITERAL_CONVERSION]-value-[YES_ERROR] 589 | Yes (Error) 590 | [CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS]-description 591 | Starting in Xcode 4.4, the Apple LLVM Compiler will implicitly synthesize properties that are not explicitly synthesized using `@synthesize`. This setting warns about such implicit behavior, even though the property is still synthesized. This is essentially a backwards compatibility warning, or for those who wish to continue to explicitly use `@synthesize`. 592 | [CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS]-name 593 | Implicit Synthesized Properties 594 | [CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS]-value-[NO] 595 | No 596 | [CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS]-value-[YES] 597 | Yes 598 | [CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK]-description 599 | Warn about repeatedly using a weak reference without assigning the weak reference to a strong reference. This is often symptomatic of a race condition where the weak reference can become `nil` between accesses, resulting in unexpected behavior. Assigning to temporary strong reference ensures the object stays alive during the related accesses. 600 | [CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK]-name 601 | Repeatedly using a __weak reference 602 | [CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK]-value-[NO] 603 | No 604 | [CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK]-value-[YES] 605 | Yes 606 | [CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK]-value-[YES_AGGRESSIVE] 607 | Yes (Aggressive) 608 | [CLANG_WARN_OBJC_ROOT_CLASS]-description 609 | Warn about classes that unintentionally do not subclass a root class, such as `NSObject`. 610 | [CLANG_WARN_OBJC_ROOT_CLASS]-name 611 | Unintentional Root Class 612 | [CLANG_WARN_OBJC_ROOT_CLASS]-value-[NO] 613 | No 614 | [CLANG_WARN_OBJC_ROOT_CLASS]-value-[YES] 615 | Yes 616 | [CLANG_WARN_OBJC_ROOT_CLASS]-value-[YES_ERROR] 617 | Yes (treat as error) 618 | [CLANG_WARN_RANGE_LOOP_ANALYSIS]-description 619 | Warn about ranged-based for loops. 620 | [CLANG_WARN_RANGE_LOOP_ANALYSIS]-name 621 | Range-based For Loops 622 | [CLANG_WARN_RANGE_LOOP_ANALYSIS]-value-[NO] 623 | No 624 | [CLANG_WARN_RANGE_LOOP_ANALYSIS]-value-[YES] 625 | Yes 626 | [CLANG_WARN_STRICT_PROTOTYPES]-description 627 | Warn about non-prototype declarations. 628 | [CLANG_WARN_STRICT_PROTOTYPES]-name 629 | Strict Prototypes 630 | [CLANG_WARN_STRICT_PROTOTYPES]-value-[NO] 631 | No 632 | [CLANG_WARN_STRICT_PROTOTYPES]-value-[YES] 633 | Yes 634 | [CLANG_WARN_STRICT_PROTOTYPES]-value-[YES_ERROR] 635 | Yes (Error) 636 | [CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION]-description 637 | Warn about various implicit conversions that can lose information or are otherwise suspicious. 638 | [CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION]-name 639 | Suspicious Implicit Conversions 640 | [CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION]-value-[NO] 641 | No 642 | [CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION]-value-[YES] 643 | Yes 644 | [CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION]-value-[YES_ERROR] 645 | Yes (Error) 646 | [CLANG_WARN_SUSPICIOUS_MOVE]-description 647 | Warn about suspicious uses of `std::move`. 648 | [CLANG_WARN_SUSPICIOUS_MOVE]-name 649 | Suspicious Moves 650 | [CLANG_WARN_SUSPICIOUS_MOVE]-value-[NO] 651 | No 652 | [CLANG_WARN_SUSPICIOUS_MOVE]-value-[YES] 653 | Yes 654 | [CLANG_WARN_UNGUARDED_AVAILABILITY]-description 655 | Warn if an API that is newer than the deployment target is used without "if (@available(...))" guards. 656 | [CLANG_WARN_UNGUARDED_AVAILABILITY]-name 657 | Unguarded availability 658 | [CLANG_WARN_UNGUARDED_AVAILABILITY]-value-[NO] 659 | No 660 | [CLANG_WARN_UNGUARDED_AVAILABILITY]-value-[YES] 661 | Yes 662 | [CLANG_WARN_UNGUARDED_AVAILABILITY]-value-[YES_AGGRESSIVE] 663 | Yes (All Versions) 664 | [CLANG_WARN_UNREACHABLE_CODE]-description 665 | Warns about potentially unreachable code. 666 | [CLANG_WARN_UNREACHABLE_CODE]-name 667 | Unreachable Code 668 | [CLANG_WARN_UNREACHABLE_CODE]-value-[NO] 669 | No 670 | [CLANG_WARN_UNREACHABLE_CODE]-value-[YES] 671 | Yes 672 | [CLANG_WARN_UNREACHABLE_CODE]-value-[YES_AGGRESSIVE] 673 | Yes (Aggressive) 674 | [CLANG_WARN__ARC_BRIDGE_CAST_NONARC]-description 675 | Warn about using `__bridge` casts when not using ARC, where they have no effect. 676 | [CLANG_WARN__ARC_BRIDGE_CAST_NONARC]-name 677 | Using __bridge Casts Outside of ARC 678 | [CLANG_WARN__ARC_BRIDGE_CAST_NONARC]-value-[NO] 679 | No 680 | [CLANG_WARN__ARC_BRIDGE_CAST_NONARC]-value-[YES] 681 | Yes 682 | [CLANG_WARN__DUPLICATE_METHOD_MATCH]-description 683 | Warn about declaring the same method more than once within the same `@interface`. 684 | [CLANG_WARN__DUPLICATE_METHOD_MATCH]-name 685 | Duplicate Method Definitions 686 | [CLANG_WARN__DUPLICATE_METHOD_MATCH]-value-[NO] 687 | No 688 | [CLANG_WARN__DUPLICATE_METHOD_MATCH]-value-[YES] 689 | Yes 690 | [CLANG_WARN__EXIT_TIME_DESTRUCTORS]-description 691 | Warn about destructors for C++ objects that are called when an application is terminating. 692 | [CLANG_WARN__EXIT_TIME_DESTRUCTORS]-name 693 | Exit-Time C++ Destructors 694 | [CLANG_WARN__EXIT_TIME_DESTRUCTORS]-value-[NO] 695 | No 696 | [CLANG_WARN__EXIT_TIME_DESTRUCTORS]-value-[YES] 697 | Yes 698 | [CLANG_X86_VECTOR_INSTRUCTIONS]-value-[avx2] 699 | AVX 2 700 | [CLANG_X86_VECTOR_INSTRUCTIONS]-value-[avx] 701 | AVX 702 | [CLANG_X86_VECTOR_INSTRUCTIONS]-value-[default] 703 | Platform default 704 | [CLANG_X86_VECTOR_INSTRUCTIONS]-value-[sse3] 705 | SSE 3 706 | [CLANG_X86_VECTOR_INSTRUCTIONS]-value-[sse4.1] 707 | SSE 4.1 708 | [CLANG_X86_VECTOR_INSTRUCTIONS]-value-[sse4.2] 709 | SSE 4.2 710 | [CLANG_X86_VECTOR_INSTRUCTIONS]-value-[ssse3] 711 | SSE 3 (with supplemental extensions) 712 | [CodeGeneration]-category 713 | Code Generation 714 | [CustomFlags]-category 715 | Custom Compiler Flags 716 | [ENABLE_NS_ASSERTIONS]-description 717 | Controls whether assertion logic provided by `NSAssert` is included in the preprocessed source code or is elided during preprocessing. Disabling assertions can improve code performance. 718 | [ENABLE_NS_ASSERTIONS]-name 719 | Enable Foundation Assertions 720 | [ENABLE_NS_ASSERTIONS]-value-[NO] 721 | No 722 | [ENABLE_NS_ASSERTIONS]-value-[YES] 723 | Yes 724 | [ENABLE_STRICT_OBJC_MSGSEND]-description 725 | Controls whether `objc_msgSend` calls must be cast to the appropriate function pointer type before being called. 726 | [ENABLE_STRICT_OBJC_MSGSEND]-name 727 | Enable Strict Checking of objc_msgSend Calls 728 | [ENABLE_STRICT_OBJC_MSGSEND]-value-[NO] 729 | No 730 | [ENABLE_STRICT_OBJC_MSGSEND]-value-[YES] 731 | Yes 732 | [GCC_CHAR_IS_UNSIGNED_CHAR]-description 733 | Enabling this setting causes `char` to be unsigned by default, disabling it causes `char` to be signed by default. 734 | [GCC_CHAR_IS_UNSIGNED_CHAR]-name 735 | 'char' Type Is Unsigned 736 | [GCC_CHAR_IS_UNSIGNED_CHAR]-value-[NO] 737 | No 738 | [GCC_CHAR_IS_UNSIGNED_CHAR]-value-[YES] 739 | Yes 740 | [GCC_CW_ASM_SYNTAX]-description 741 | Enable the CodeWarrior/Microsoft syntax for inline assembly code in addition to the standard GCC syntax. 742 | [GCC_CW_ASM_SYNTAX]-name 743 | CodeWarrior/MS-Style Inline Assembly 744 | [GCC_CW_ASM_SYNTAX]-value-[NO] 745 | No 746 | [GCC_CW_ASM_SYNTAX]-value-[YES] 747 | Yes 748 | [GCC_C_LANGUAGE_STANDARD]-description 749 | Choose a standard or non-standard C language dialect. 750 | 751 | * *ANSI C:* Accept ISO C90 and ISO C++, turning off GNU extensions that are incompatible. [-ansi] 752 | Incompatible GNU extensions include the `asm`, `inline`, and `typeof` keywords (but not the equivalent `\_\_asm\_\_`, `\_\_inline\_\_`, and `\_\_typeof\_\_` forms), and the `//` syntax for comments. 753 | This setting also enables trigraphs. 754 | * *C89:* Accept ISO C90 (1990), but not GNU extensions. [-std=c89] 755 | * *GNU89:* Accept ISO C90 and GNU extensions. [-std=gnu89] 756 | * *C99:* Accept ISO C99 (1999), but not GNU extensions. [-std=c99] 757 | * *GNU99:* Accept ISO C99 and GNU extensions. [-std=gnu99] 758 | * *C11:* Accept ISO C11 (2011), but not GNU extensions. [-std=c11] 759 | * *GNU11:* Accept ISO C11 and GNU extensions. [-std=gnu11] 760 | * *Compiler Default:* Tells the compiler to use its default C language dialect. This is normally the best choice unless you have specific needs. (Currently equivalent to GNU99.) 761 | [GCC_C_LANGUAGE_STANDARD]-description-[ansi] 762 | Accept ISO C90 and ISO C++, turning off GNU extensions that are incompatible. [-ansi] 763 | [GCC_C_LANGUAGE_STANDARD]-description-[c89] 764 | Accept ISO C90, but not GNU extensions. [-std=c89] 765 | [GCC_C_LANGUAGE_STANDARD]-description-[c99] 766 | Accept ISO C99, but not GNU extensions. [-std=c99] 767 | [GCC_C_LANGUAGE_STANDARD]-description-[compiler-default] 768 | Tells the compiler to use its default C language dialect. This is normally the best choice unless you have specific needs. (Currently equivalent to GNU99.) 769 | [GCC_C_LANGUAGE_STANDARD]-description-[gnu89] 770 | Accept ISO C90 and GNU extensions. [-std=gnu89] 771 | [GCC_C_LANGUAGE_STANDARD]-description-[gnu99] 772 | Accept ISO C99 and GNU extensions. [-std=gnu99] 773 | [GCC_C_LANGUAGE_STANDARD]-name 774 | C Language Dialect 775 | [GCC_C_LANGUAGE_STANDARD]-value-[ansi] 776 | ANSI C [-ansi] 777 | [GCC_C_LANGUAGE_STANDARD]-value-[c89] 778 | C89 [-std=c89] 779 | [GCC_C_LANGUAGE_STANDARD]-value-[c99] 780 | C99 [-std=c99] 781 | [GCC_C_LANGUAGE_STANDARD]-value-[compiler-default] 782 | Compiler Default 783 | [GCC_C_LANGUAGE_STANDARD]-value-[gnu89] 784 | GNU89 [-std=gnu89] 785 | [GCC_C_LANGUAGE_STANDARD]-value-[gnu99] 786 | GNU99 [-std=gnu99] 787 | [GCC_DYNAMIC_NO_PIC]-description 788 | Faster function calls for applications. Not appropriate for shared libraries, which need to be position-independent. 789 | [GCC_DYNAMIC_NO_PIC]-name 790 | Generate Position-Dependent Code 791 | [GCC_DYNAMIC_NO_PIC]-value-[NO] 792 | No 793 | [GCC_DYNAMIC_NO_PIC]-value-[YES] 794 | Yes 795 | [GCC_ENABLE_ASM_KEYWORD]-description 796 | Controls whether `asm`, `inline`, and `typeof` are treated as keywords or whether they can be used as identifiers. 797 | [GCC_ENABLE_ASM_KEYWORD]-name 798 | Allow 'asm', 'inline', 'typeof' 799 | [GCC_ENABLE_ASM_KEYWORD]-value-[NO] 800 | No 801 | [GCC_ENABLE_ASM_KEYWORD]-value-[YES] 802 | Yes 803 | [GCC_ENABLE_BUILTIN_FUNCTIONS]-description 804 | Controls whether builtin functions that do not begin with `\_\_builtin\_` as prefix are recognized. 805 | 806 | GCC normally generates special code to handle certain builtin functions more efficiently; for instance, calls to `alloca` may become single instructions that adjust the stack directly, and calls to `memcpy` may become inline copy loops. The resulting code is often both smaller and faster, but since the function calls no longer appear as such, you cannot set a breakpoint on those calls, nor can you change the behavior of the functions by linking with a different library. In addition, when a function is recognized as a builtin function, GCC may use information about that function to warn about problems with calls to that function, or to generate more efficient code, even if the resulting code still contains calls to that function. For example, warnings are given with `-Wformat` for bad calls to `printf`, when `printf` is built in, and `strlen` is known not to modify global memory. 807 | [GCC_ENABLE_BUILTIN_FUNCTIONS]-name 808 | Recognize Builtin Functions 809 | [GCC_ENABLE_BUILTIN_FUNCTIONS]-value-[NO] 810 | No 811 | [GCC_ENABLE_BUILTIN_FUNCTIONS]-value-[YES] 812 | Yes 813 | [GCC_ENABLE_CPP_EXCEPTIONS]-description 814 | Enable C++ exception handling. Generates extra code needed to propagate exceptions. For some targets, this implies GCC will generate frame unwind information for all functions, which can produce significant data size overhead, although it does not affect execution. If you do not specify this option, GCC will enable it by default for languages like C++ that normally require exception handling, and disable it for languages like C that do not normally require it. However, you may need to enable this option when compiling C code that needs to interoperate properly with exception handlers written in C++. 815 | [GCC_ENABLE_CPP_EXCEPTIONS]-name 816 | Enable C++ Exceptions 817 | [GCC_ENABLE_CPP_EXCEPTIONS]-value-[NO] 818 | No 819 | [GCC_ENABLE_CPP_EXCEPTIONS]-value-[YES] 820 | Yes 821 | [GCC_ENABLE_CPP_RTTI]-description 822 | Enable generation of information about every class with virtual functions for use by the C++ runtime type identification features (`dynamic_cast` and `typeid`). If you don't use those parts of the language, you can save some space by using this flag. Note that exception handling uses the same information, but it will generate it as needed. 823 | [GCC_ENABLE_CPP_RTTI]-name 824 | Enable C++ Runtime Types 825 | [GCC_ENABLE_CPP_RTTI]-value-[NO] 826 | No 827 | [GCC_ENABLE_CPP_RTTI]-value-[YES] 828 | Yes 829 | [GCC_ENABLE_EXCEPTIONS]-description 830 | Enable exception handling. Generates extra code needed to propagate exceptions. For some targets, this implies GCC will generate frame unwind information for all functions, which can produce significant data size overhead, although it does not affect execution. If you do not specify this option, GCC will enable it by default for languages like C++ and Objective-C that normally require exception handling, and disable it for languages like C that do not normally require it. However, you may need to enable this option when compiling C code that needs to interoperate properly with exception handlers written in other languages. You may also wish to disable this option if you are compiling older programs that don't use exception handling. 831 | [GCC_ENABLE_EXCEPTIONS]-name 832 | Enable Exceptions 833 | [GCC_ENABLE_EXCEPTIONS]-value-[NO] 834 | No 835 | [GCC_ENABLE_EXCEPTIONS]-value-[YES] 836 | Yes 837 | [GCC_ENABLE_FLOATING_POINT_LIBRARY_CALLS]-description 838 | Generate output containing library calls for floating point. 839 | [GCC_ENABLE_FLOATING_POINT_LIBRARY_CALLS]-name 840 | Generate Floating Point Library Calls 841 | [GCC_ENABLE_FLOATING_POINT_LIBRARY_CALLS]-value-[NO] 842 | No 843 | [GCC_ENABLE_FLOATING_POINT_LIBRARY_CALLS]-value-[YES] 844 | Yes 845 | [GCC_ENABLE_KERNEL_DEVELOPMENT]-description 846 | Activating this setting enables kernel development mode. 847 | [GCC_ENABLE_KERNEL_DEVELOPMENT]-name 848 | Kernel Development Mode 849 | [GCC_ENABLE_KERNEL_DEVELOPMENT]-value-[NO] 850 | No 851 | [GCC_ENABLE_KERNEL_DEVELOPMENT]-value-[YES] 852 | Yes 853 | [GCC_ENABLE_OBJC_EXCEPTIONS]-description 854 | This setting enables `@try`/`@catch`/`@throw` syntax for handling exceptions in Objective-C code. Only applies to Objective-C. 855 | [GCC_ENABLE_OBJC_EXCEPTIONS]-name 856 | Enable Objective-C Exceptions 857 | [GCC_ENABLE_OBJC_EXCEPTIONS]-value-[NO] 858 | No 859 | [GCC_ENABLE_OBJC_EXCEPTIONS]-value-[YES] 860 | Yes 861 | [GCC_ENABLE_PASCAL_STRINGS]-description 862 | Recognize and construct Pascal-style string literals. Its use in new code is discouraged. 863 | 864 | Pascal string literals take the form `"\pstring"` . The special escape sequence `\p` denotes the Pascal length byte for the string, and will be replaced at compile time with the number of characters that follow. The `\p` may only appear at the beginning of a string literal, and may not appear in wide string literals or as an integral constant. 865 | [GCC_ENABLE_PASCAL_STRINGS]-name 866 | Recognize Pascal Strings 867 | [GCC_ENABLE_PASCAL_STRINGS]-value-[NO] 868 | No 869 | [GCC_ENABLE_PASCAL_STRINGS]-value-[YES] 870 | Yes 871 | [GCC_ENABLE_TRIGRAPHS]-description 872 | Controls whether or not trigraphs are permitted in the source code. 873 | [GCC_ENABLE_TRIGRAPHS]-name 874 | Enable Trigraphs 875 | [GCC_ENABLE_TRIGRAPHS]-value-[NO] 876 | No 877 | [GCC_ENABLE_TRIGRAPHS]-value-[YES] 878 | Yes 879 | [GCC_FAST_MATH]-description 880 | Enables some floating point optimizations that are not IEEE754-compliant, but which usually work. Programs that require strict IEEE compliance may not work with this option. 881 | [GCC_FAST_MATH]-name 882 | Relax IEEE Compliance 883 | [GCC_FAST_MATH]-value-[NO] 884 | No 885 | [GCC_FAST_MATH]-value-[YES] 886 | Yes 887 | [GCC_FAST_OBJC_DISPATCH]-description 888 | This setting enables highly accelerated dispatch to the Objective-C runtime. Only applies to Objective-C. 889 | [GCC_FAST_OBJC_DISPATCH]-name 890 | Accelerated Objective-C Dispatch 891 | [GCC_FAST_OBJC_DISPATCH]-value-[NO] 892 | No 893 | [GCC_FAST_OBJC_DISPATCH]-value-[YES] 894 | Yes 895 | [GCC_GENERATE_DEBUGGING_SYMBOLS]-description 896 | Enables or disables generation of debug symbols. When debug symbols are enabled, the level of detail can be controlled by the `DEBUG_INFORMATION_FORMAT` setting. 897 | [GCC_GENERATE_DEBUGGING_SYMBOLS]-name 898 | Generate Debug Symbols 899 | [GCC_GENERATE_DEBUGGING_SYMBOLS]-value-[NO] 900 | No 901 | [GCC_GENERATE_DEBUGGING_SYMBOLS]-value-[YES] 902 | Yes 903 | [GCC_GENERATE_TEST_COVERAGE_FILES]-description 904 | Activating this setting causes a `notes` file to be produced that the `gcov` code-coverage utility can use to show program coverage. 905 | [GCC_GENERATE_TEST_COVERAGE_FILES]-name 906 | Generate Legacy Test Coverage Files 907 | [GCC_GENERATE_TEST_COVERAGE_FILES]-value-[NO] 908 | No 909 | [GCC_GENERATE_TEST_COVERAGE_FILES]-value-[YES] 910 | Yes 911 | [GCC_INCREASE_PRECOMPILED_HEADER_SHARING]-description 912 | Enabling this option will enable increased sharing of precompiled headers among targets that share the same prefix header and precompiled header directory. 913 | 914 | Xcode distinguishes between precompiled header (PCH) files by generating a hash value based on the command-line options to the compiler used to create the PCH. Enabling this option will exclude certain compiler options from that hash. Presently this option will exclude search path options (`-I`, `-iquote`, `-isystem`, `-F`, `-L`) from the hash. 915 | 916 | Enabling increased sharing of PCH files carries some risk—if two targets use the same prefix header but have different include paths that cause the prefix header to include different files when they are precompiled, then subtle problems may result because one target will use a PCH that was built using files included by the other target. In this case, this option must be turned off in order to enforce correctness. 917 | [GCC_INCREASE_PRECOMPILED_HEADER_SHARING]-name 918 | Increase Sharing of Precompiled Headers 919 | [GCC_INCREASE_PRECOMPILED_HEADER_SHARING]-value-[NO] 920 | No 921 | [GCC_INCREASE_PRECOMPILED_HEADER_SHARING]-value-[YES] 922 | Yes 923 | [GCC_INLINES_ARE_PRIVATE_EXTERN]-description 924 | When enabled, out-of-line copies of inline methods are declared `private extern`. 925 | [GCC_INLINES_ARE_PRIVATE_EXTERN]-name 926 | Inline Methods Hidden 927 | [GCC_INLINES_ARE_PRIVATE_EXTERN]-value-[NO] 928 | No 929 | [GCC_INLINES_ARE_PRIVATE_EXTERN]-value-[YES] 930 | Yes 931 | [GCC_INPUT_FILETYPE]-description 932 | Specifies whether to compile each source file according to its file type, or whether to treat all source files in the target as if they are of a specific language. 933 | [GCC_INPUT_FILETYPE]-name 934 | Compile Sources As 935 | [GCC_INPUT_FILETYPE]-value-[automatic] 936 | According to File Type 937 | [GCC_INPUT_FILETYPE]-value-[sourcecode.c.c] 938 | C 939 | [GCC_INPUT_FILETYPE]-value-[sourcecode.c.objc] 940 | Objective-C 941 | [GCC_INPUT_FILETYPE]-value-[sourcecode.cpp.cpp] 942 | C++ 943 | [GCC_INPUT_FILETYPE]-value-[sourcecode.cpp.objcpp] 944 | Objective-C++ 945 | [GCC_INSTRUMENT_PROGRAM_FLOW_ARCS]-description 946 | Activating this setting indicates that code should be added so program flow arcs are instrumented. 947 | [GCC_INSTRUMENT_PROGRAM_FLOW_ARCS]-name 948 | Instrument Program Flow 949 | [GCC_INSTRUMENT_PROGRAM_FLOW_ARCS]-value-[NO] 950 | No 951 | [GCC_INSTRUMENT_PROGRAM_FLOW_ARCS]-value-[YES] 952 | Yes 953 | [GCC_LINK_WITH_DYNAMIC_LIBRARIES]-description 954 | Enabling this option allows linking with the shared libraries. This is the default for most product types. 955 | [GCC_LINK_WITH_DYNAMIC_LIBRARIES]-name 956 | Enable Linking With Shared Libraries 957 | [GCC_LINK_WITH_DYNAMIC_LIBRARIES]-value-[NO] 958 | No 959 | [GCC_LINK_WITH_DYNAMIC_LIBRARIES]-value-[YES] 960 | Yes 961 | [GCC_NO_COMMON_BLOCKS]-description 962 | In C, allocate even uninitialized global variables in the data section of the object file, rather than generating them as common blocks. This has the effect that if the same variable is declared (without `extern`) in two different compilations, you will get an error when you link them. 963 | [GCC_NO_COMMON_BLOCKS]-name 964 | No Common Blocks 965 | [GCC_NO_COMMON_BLOCKS]-value-[NO] 966 | No 967 | [GCC_NO_COMMON_BLOCKS]-value-[YES] 968 | Yes 969 | [GCC_OPTIMIZATION_LEVEL]-description 970 | Specifies the degree to which the generated code is optimized for speed and binary size. 971 | 972 | * *None:* Do not optimize. [-O0] 973 | With this setting, the compiler's goal is to reduce the cost of compilation and to make debugging produce the expected results. Statements are independent—if you stop the program with a breakpoint between statements, you can then assign a new value to any variable or change the program counter to any other statement in the function and get exactly the results you would expect from the source code. 974 | * *Fast:* Optimizing compilation takes somewhat more time, and a lot more memory for a large function. [-O1] 975 | With this setting, the compiler tries to reduce code size and execution time, without performing any optimizations that take a great deal of compilation time. In Apple's compiler, strict aliasing, block reordering, and inter-block scheduling are disabled by default when optimizing. 976 | * *Faster:* The compiler performs nearly all supported optimizations that do not involve a space-speed tradeoff. [-O2] 977 | With this setting, the compiler does not perform loop unrolling or function inlining, or register renaming. As compared to the `Fast` setting, this setting increases both compilation time and the performance of the generated code. 978 | * *Fastest:* Turns on all optimizations specified by the `Faster` setting and also turns on function inlining and register renaming options. This setting may result in a larger binary. [-O3] 979 | * *Fastest, Smallest:* Optimize for size. This setting enables all `Faster` optimizations that do not typically increase code size. It also performs further optimizations designed to reduce code size. [-Os] 980 | * *Fastest, Aggressive Optimizations:* This setting enables `Fastest` but also enables aggressive optimizations that may break strict standards compliance but should work well on well-behaved code. [-Ofast] 981 | [GCC_OPTIMIZATION_LEVEL]-name 982 | Optimization Level 983 | [GCC_OPTIMIZATION_LEVEL]-value-[0] 984 | None [-O0] 985 | [GCC_OPTIMIZATION_LEVEL]-value-[1] 986 | Fast [-O, O1] 987 | [GCC_OPTIMIZATION_LEVEL]-value-[2] 988 | Faster [-O2] 989 | [GCC_OPTIMIZATION_LEVEL]-value-[3] 990 | Fastest [-O3] 991 | [GCC_OPTIMIZATION_LEVEL]-value-[fast] 992 | Fastest, Aggressive Optimizations [-Ofast] 993 | [GCC_OPTIMIZATION_LEVEL]-value-[s] 994 | Fastest, Smallest [-Os] 995 | [GCC_PRECOMPILE_PREFIX_HEADER]-description 996 | Generates a precompiled header for the prefix header, which should reduce overall build times. 997 | 998 | Precompiling the prefix header will be most effective if the contents of the prefix header or any file it includes change rarely. If the contents of the prefix header or any file it includes change frequently, there may be a negative impact to overall build time. 999 | [GCC_PRECOMPILE_PREFIX_HEADER]-name 1000 | Precompile Prefix Header 1001 | [GCC_PRECOMPILE_PREFIX_HEADER]-value-[NO] 1002 | No 1003 | [GCC_PRECOMPILE_PREFIX_HEADER]-value-[YES] 1004 | Yes 1005 | [GCC_PREFIX_HEADER]-description 1006 | Implicitly include the named header. The path given should either be a project relative path or an absolute path. 1007 | [GCC_PREFIX_HEADER]-name 1008 | Prefix Header 1009 | [GCC_PREFIX_HEADER]-value-[NO] 1010 | No 1011 | [GCC_PREFIX_HEADER]-value-[YES] 1012 | Yes 1013 | [GCC_PREPROCESSOR_DEFINITIONS]-description 1014 | Space-separated list of preprocessor macros of the form `foo` or `foo=bar`. 1015 | [GCC_PREPROCESSOR_DEFINITIONS]-name 1016 | Preprocessor Macros 1017 | [GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS]-description 1018 | Space-separated list of preprocessor macros of the form `foo` or `foo=bar`. These macros are not used when precompiling a prefix header file. 1019 | [GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS]-name 1020 | Preprocessor Macros Not Used In Precompiled Headers 1021 | [GCC_REUSE_STRINGS]-description 1022 | Reuse string literals. 1023 | [GCC_REUSE_STRINGS]-name 1024 | Make Strings Read-Only 1025 | [GCC_REUSE_STRINGS]-value-[NO] 1026 | No 1027 | [GCC_REUSE_STRINGS]-value-[YES] 1028 | Yes 1029 | [GCC_SHORT_ENUMS]-description 1030 | Make enums only as large as needed for the range of possible values. 1031 | 1032 | This setting generates code that may not binary compatible with code generated without this setting or with macOS frameworks. 1033 | [GCC_SHORT_ENUMS]-name 1034 | Short Enumeration Constants 1035 | [GCC_SHORT_ENUMS]-value-[NO] 1036 | No 1037 | [GCC_SHORT_ENUMS]-value-[YES] 1038 | Yes 1039 | [GCC_STRICT_ALIASING]-description 1040 | Optimize code by making more aggressive assumptions about whether pointers can point to the same objects as other pointers. Programs that use pointers a lot may benefit from this, but programs that don't strictly follow the ISO C rules about the type with which an object may be accessed may behave unexpectedly. 1041 | [GCC_STRICT_ALIASING]-name 1042 | Enforce Strict Aliasing 1043 | [GCC_STRICT_ALIASING]-value-[NO] 1044 | No 1045 | [GCC_STRICT_ALIASING]-value-[YES] 1046 | Yes 1047 | [GCC_SYMBOLS_PRIVATE_EXTERN]-description 1048 | When enabled, all symbols are declared `private extern` unless explicitly marked to be exported using `\_\_attribute\_\_((visibility("default")))` in code. If not enabled, all symbols are exported unless explicitly marked as `private extern`. See [Controlling Symbol Visibility](https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/CppRuntimeEnv/Articles/SymbolVisibility.html#//apple_ref/doc/uid/TP40001670-CJBGBHEJ) in [C++ Runtime Environment Programming Guide](https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/CppRuntimeEnv/CPPRuntimeEnv.html). 1049 | [GCC_SYMBOLS_PRIVATE_EXTERN]-name 1050 | Symbols Hidden by Default 1051 | [GCC_SYMBOLS_PRIVATE_EXTERN]-value-[NO] 1052 | No 1053 | [GCC_SYMBOLS_PRIVATE_EXTERN]-value-[YES] 1054 | Yes 1055 | [GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS]-description 1056 | Causes warnings about missing function prototypes to be treated as errors. Only applies to C and Objective-C. 1057 | [GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS]-name 1058 | Treat Missing Function Prototypes as Errors 1059 | [GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS]-value-[NO] 1060 | No 1061 | [GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS]-value-[YES] 1062 | Yes 1063 | [GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS]-description 1064 | Enabling this option causes warnings about incompatible pointer types to be treated as errors. 1065 | [GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS]-name 1066 | Treat Incompatible Pointer Type Warnings as Errors 1067 | [GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS]-value-[NO] 1068 | No 1069 | [GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS]-value-[YES] 1070 | Yes 1071 | [GCC_TREAT_WARNINGS_AS_ERRORS]-description 1072 | Enabling this option causes all warnings to be treated as errors. 1073 | [GCC_TREAT_WARNINGS_AS_ERRORS]-name 1074 | Treat Warnings as Errors 1075 | [GCC_TREAT_WARNINGS_AS_ERRORS]-value-[NO] 1076 | No 1077 | [GCC_TREAT_WARNINGS_AS_ERRORS]-value-[YES] 1078 | Yes 1079 | [GCC_UNROLL_LOOPS]-description 1080 | Unrolls loops. Unrolling makes the code larger, but may make it faster by reducing the number of branches executed. 1081 | [GCC_UNROLL_LOOPS]-name 1082 | Unroll Loops 1083 | [GCC_UNROLL_LOOPS]-value-[NO] 1084 | No 1085 | [GCC_UNROLL_LOOPS]-value-[YES] 1086 | Yes 1087 | [GCC_USE_STANDARD_INCLUDE_SEARCHING]-description 1088 | Controls whether the standard system directories are searched for header files. When disabled, only the directories you have specified with `-I` options (and the directory of the current file, if appropriate) are searched. 1089 | [GCC_USE_STANDARD_INCLUDE_SEARCHING]-name 1090 | Use Standard System Header Directory Searching 1091 | [GCC_USE_STANDARD_INCLUDE_SEARCHING]-value-[NO] 1092 | No 1093 | [GCC_USE_STANDARD_INCLUDE_SEARCHING]-value-[YES] 1094 | Yes 1095 | [GCC_WARN_64_TO_32_BIT_CONVERSION]-description 1096 | Warn if a value is implicitly converted from a 64-bit type to a 32-bit type. This is a subset of the warnings provided by -Wconversion. 1097 | [GCC_WARN_64_TO_32_BIT_CONVERSION]-name 1098 | Implicit Conversion to 32 Bit Type 1099 | [GCC_WARN_64_TO_32_BIT_CONVERSION]-value-[NO] 1100 | No 1101 | [GCC_WARN_64_TO_32_BIT_CONVERSION]-value-[YES] 1102 | Yes 1103 | [GCC_WARN_64_TO_32_BIT_CONVERSION]-value-[YES_ERROR] 1104 | Yes (Error) 1105 | [GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS]-description 1106 | Warn about the use of deprecated functions, variables, and types (as indicated by the `deprecated` attribute). 1107 | [GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS]-name 1108 | Deprecated Functions 1109 | [GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS]-value-[NO] 1110 | No 1111 | [GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS]-value-[YES] 1112 | Yes 1113 | [GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO]-description 1114 | Unchecking this setting will suppress warnings from applying the `offsetof` macro to a non-POD type. According to the 1998 ISO C++ standard, applying `offsetof` to a non-POD type is undefined. In existing C++ implementations, however, `offsetof` typically gives meaningful results even when applied to certain kinds of non-POD types, such as a simple struct that fails to be a POD type only by virtue of having a constructor. This flag is for users who are aware that they are writing nonportable code and who have deliberately chosen to ignore the warning about it. 1115 | 1116 | The restrictions on `offsetof` may be relaxed in a future version of the C++ standard. 1117 | [GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO]-name 1118 | Undefined Use of offsetof Macro 1119 | [GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO]-value-[NO] 1120 | No 1121 | [GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO]-value-[YES] 1122 | Yes 1123 | [GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS]-description 1124 | Warn if a structure's initializer has some fields missing. For example, the following code would cause such a warning because `x.h` is implicitly zero: 1125 | 1126 | struct s { int f, g, h; }; 1127 | struct s x = { 3, 4 }; 1128 | 1129 | This option does not warn about designated initializers, so the following modification would not trigger a warning: 1130 | 1131 | struct s { int f, g, h; }; 1132 | struct s x = { .f = 3, .g = 4 }; 1133 | [GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS]-name 1134 | Missing Fields in Structure Initializers 1135 | [GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS]-value-[NO] 1136 | No 1137 | [GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS]-value-[YES] 1138 | Yes 1139 | [GCC_WARN_ABOUT_MISSING_NEWLINE]-description 1140 | Warn when a source file does not end with a newline. 1141 | [GCC_WARN_ABOUT_MISSING_NEWLINE]-name 1142 | Missing Newline At End Of File 1143 | [GCC_WARN_ABOUT_MISSING_NEWLINE]-value-[NO] 1144 | No 1145 | [GCC_WARN_ABOUT_MISSING_NEWLINE]-value-[YES] 1146 | Yes 1147 | [GCC_WARN_ABOUT_MISSING_PROTOTYPES]-description 1148 | Causes warnings to be emitted about missing prototypes. 1149 | [GCC_WARN_ABOUT_MISSING_PROTOTYPES]-name 1150 | Missing Function Prototypes 1151 | [GCC_WARN_ABOUT_MISSING_PROTOTYPES]-value-[NO] 1152 | No 1153 | [GCC_WARN_ABOUT_MISSING_PROTOTYPES]-value-[YES] 1154 | Yes 1155 | [GCC_WARN_ABOUT_POINTER_SIGNEDNESS]-description 1156 | Warn when pointers passed via arguments or assigned to a variable differ in sign. 1157 | [GCC_WARN_ABOUT_POINTER_SIGNEDNESS]-name 1158 | Pointer Sign Comparison 1159 | [GCC_WARN_ABOUT_POINTER_SIGNEDNESS]-value-[NO] 1160 | No 1161 | [GCC_WARN_ABOUT_POINTER_SIGNEDNESS]-value-[YES] 1162 | Yes 1163 | [GCC_WARN_ABOUT_RETURN_TYPE]-description 1164 | Causes warnings to be emitted when a function with a defined return type (not `void`) contains a return statement without a return-value. Also emits a warning when a function is defined without specifying a return type. 1165 | [GCC_WARN_ABOUT_RETURN_TYPE]-name 1166 | Mismatched Return Type 1167 | [GCC_WARN_ABOUT_RETURN_TYPE]-value-[NO] 1168 | No 1169 | [GCC_WARN_ABOUT_RETURN_TYPE]-value-[YES] 1170 | Yes 1171 | [GCC_WARN_ABOUT_RETURN_TYPE]-value-[YES_ERROR] 1172 | Yes (treat as error) 1173 | [GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL]-description 1174 | Warn if methods required by a protocol are not implemented in the class adopting it. Only applies to Objective-C. 1175 | [GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL]-name 1176 | Incomplete Objective-C Protocols 1177 | [GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL]-value-[NO] 1178 | No 1179 | [GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL]-value-[YES] 1180 | Yes 1181 | [GCC_WARN_CHECK_SWITCH_STATEMENTS]-description 1182 | Warn whenever a switch statement has an index of enumeral type and lacks a case for one or more of the named codes of that enumeration. The presence of a default label prevents this warning. Case labels outside the enumeration range also provoke warnings when this option is used. 1183 | [GCC_WARN_CHECK_SWITCH_STATEMENTS]-name 1184 | Check Switch Statements 1185 | [GCC_WARN_CHECK_SWITCH_STATEMENTS]-value-[NO] 1186 | No 1187 | [GCC_WARN_CHECK_SWITCH_STATEMENTS]-value-[YES] 1188 | Yes 1189 | [GCC_WARN_FOUR_CHARACTER_CONSTANTS]-description 1190 | Warn about four-char literals (for example, macOS-style `OSTypes`: `'APPL'`). 1191 | [GCC_WARN_FOUR_CHARACTER_CONSTANTS]-name 1192 | Four Character Literals 1193 | [GCC_WARN_FOUR_CHARACTER_CONSTANTS]-value-[NO] 1194 | No 1195 | [GCC_WARN_FOUR_CHARACTER_CONSTANTS]-value-[YES] 1196 | Yes 1197 | [GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS]-description 1198 | Warn when a function declaration hides virtual functions from a base class. 1199 | 1200 | For example, in the following example, the `A` class version of `f()` is hidden in `B`. 1201 | 1202 | struct A { 1203 | virtual void f(); 1204 | }; 1205 | 1206 | struct B: public A { 1207 | void f(int); 1208 | }; 1209 | 1210 | As a result, the following code will fail to compile. 1211 | 1212 | B* b; 1213 | b->f(); 1214 | 1215 | This setting only applies to C++ and Objective-C++ sources. 1216 | [GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS]-name 1217 | Overloaded Virtual Functions 1218 | [GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS]-value-[NO] 1219 | No 1220 | [GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS]-value-[YES] 1221 | Yes 1222 | [GCC_WARN_INHIBIT_ALL_WARNINGS]-description 1223 | Inhibit all warning messages. 1224 | [GCC_WARN_INHIBIT_ALL_WARNINGS]-name 1225 | Inhibit All Warnings 1226 | [GCC_WARN_INHIBIT_ALL_WARNINGS]-value-[NO] 1227 | No 1228 | [GCC_WARN_INHIBIT_ALL_WARNINGS]-value-[YES] 1229 | Yes 1230 | [GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED]-description 1231 | Warn if an aggregate or union initializer is not fully bracketed. In the following example, the initializer for `a` is not fully bracketed, but the initializer for `b` is fully bracketed. 1232 | 1233 | int a[2][2] = { 0, 1, 2, 3 }; 1234 | int b[2][2] = { { 0, 1 }, { 2, 3 } }; 1235 | 1236 | [GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED]-name 1237 | Initializer Not Fully Bracketed 1238 | [GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED]-value-[NO] 1239 | No 1240 | [GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED]-value-[YES] 1241 | Yes 1242 | [GCC_WARN_MISSING_PARENTHESES]-description 1243 | Warn if parentheses are omitted in certain contexts, such as when there is an assignment in a context where a truth value is expected, or when operators are nested whose precedence causes confusion. Also, warn about constructions where there may be confusion as to which `if` statement an `else` branch belongs. For example: 1244 | 1245 | { 1246 | if (a) 1247 | if (b) 1248 | foo (); 1249 | else 1250 | bar (); 1251 | } 1252 | 1253 | In C, every `else` branch belongs to the innermost possible `if` statement, which in the example above is `if (b)`. This is often not what the programmer expects, as illustrated by indentation used in the example above. This build setting causes GCC to issue a warning when there is the potential for this confusion. To eliminate the warning, add explicit braces around the innermost `if` statement so there is no way the `else` could belong to the enclosing `if`. For example: 1254 | 1255 | { 1256 | if (a) 1257 | { 1258 | if (b) 1259 | foo (); 1260 | else 1261 | bar (); 1262 | } 1263 | } 1264 | 1265 | [GCC_WARN_MISSING_PARENTHESES]-name 1266 | Missing Braces and Parentheses 1267 | [GCC_WARN_MISSING_PARENTHESES]-value-[NO] 1268 | No 1269 | [GCC_WARN_MISSING_PARENTHESES]-value-[YES] 1270 | Yes 1271 | [GCC_WARN_NON_VIRTUAL_DESTRUCTOR]-description 1272 | Warn when a class declares an nonvirtual destructor that should probably be virtual, because it looks like the class will be used polymorphically. This is only active for C++ or Objective-C++ sources. 1273 | [GCC_WARN_NON_VIRTUAL_DESTRUCTOR]-name 1274 | Nonvirtual Destructor 1275 | [GCC_WARN_NON_VIRTUAL_DESTRUCTOR]-value-[NO] 1276 | No 1277 | [GCC_WARN_NON_VIRTUAL_DESTRUCTOR]-value-[YES] 1278 | Yes 1279 | [GCC_WARN_PEDANTIC]-description 1280 | Issue all the warnings demanded by strict ISO C and ISO C++; reject all programs that use forbidden extensions, and some other programs that do not follow ISO C and ISO C++. For ISO C, follows the version of the ISO C standard specified by any `-std` option used. 1281 | [GCC_WARN_PEDANTIC]-name 1282 | Pedantic Warnings 1283 | [GCC_WARN_PEDANTIC]-value-[NO] 1284 | No 1285 | [GCC_WARN_PEDANTIC]-value-[YES] 1286 | Yes 1287 | [GCC_WARN_SHADOW]-description 1288 | Warn whenever a local variable shadows another local variable, parameter or global variable or whenever a builtin function is shadowed. 1289 | [GCC_WARN_SHADOW]-name 1290 | Hidden Local Variables 1291 | [GCC_WARN_SHADOW]-value-[NO] 1292 | No 1293 | [GCC_WARN_SHADOW]-value-[YES] 1294 | Yes 1295 | [GCC_WARN_SIGN_COMPARE]-description 1296 | Warn when a comparison between signed and unsigned values could produce an incorrect result when the signed value is converted to unsigned. 1297 | [GCC_WARN_SIGN_COMPARE]-name 1298 | Sign Comparison 1299 | [GCC_WARN_SIGN_COMPARE]-value-[NO] 1300 | No 1301 | [GCC_WARN_SIGN_COMPARE]-value-[YES] 1302 | Yes 1303 | [GCC_WARN_STRICT_SELECTOR_MATCH]-description 1304 | Warn if multiple methods with differing argument and/or return types are found for a given selector when attempting to send a message using this selector to a receiver of type `id` or `Class`. When this setting is disabled, the compiler will omit such warnings if any differences found are confined to types that share the same size and alignment. 1305 | [GCC_WARN_STRICT_SELECTOR_MATCH]-name 1306 | Strict Selector Matching 1307 | [GCC_WARN_TYPECHECK_CALLS_TO_PRINTF]-description 1308 | Check calls to `printf` and `scanf` to make sure that the arguments supplied have types appropriate to the format string specified, and that the conversions specified in the format string make sense. 1309 | [GCC_WARN_TYPECHECK_CALLS_TO_PRINTF]-name 1310 | Typecheck Calls to printf/scanf 1311 | [GCC_WARN_TYPECHECK_CALLS_TO_PRINTF]-value-[NO] 1312 | No 1313 | [GCC_WARN_TYPECHECK_CALLS_TO_PRINTF]-value-[YES] 1314 | Yes 1315 | [GCC_WARN_UNDECLARED_SELECTOR]-description 1316 | Warn if a `@selector(...)` expression referring to an undeclared selector is found. A selector is considered undeclared if no method with that name has been declared before the `@selector(...)` expression, either explicitly in an `@interface` or `@protocol` declaration, or implicitly in an `@implementation` section. This option always performs its checks as soon as a `@selector(...)` expression is found, while `-Wselector` only performs its checks in the final stage of compilation. This also enforces the coding style convention that methods and selectors must be declared before being used. 1317 | [GCC_WARN_UNDECLARED_SELECTOR]-name 1318 | Undeclared Selector 1319 | [GCC_WARN_UNINITIALIZED_AUTOS]-description 1320 | Warn if a variable might be clobbered by a `setjmp` call or if an automatic variable is used without prior initialization. 1321 | 1322 | The compiler may not detect all cases where an automatic variable is initialized or all usage patterns that may lead to use prior to initialization. You can toggle between the normal uninitialized value checking or the more aggressive (conservative) checking, which finds more issues but the checking is much stricter. 1323 | [GCC_WARN_UNINITIALIZED_AUTOS]-name 1324 | Uninitialized Variables 1325 | [GCC_WARN_UNINITIALIZED_AUTOS]-value-[NO] 1326 | No 1327 | [GCC_WARN_UNINITIALIZED_AUTOS]-value-[YES] 1328 | Yes 1329 | [GCC_WARN_UNINITIALIZED_AUTOS]-value-[YES_AGGRESSIVE] 1330 | Yes (Aggressive) 1331 | [GCC_WARN_UNKNOWN_PRAGMAS]-description 1332 | Warn when a `#pragma` directive is encountered that is not understood by GCC. If this command line option is used, warnings will even be issued for unknown pragmas in system header files. This is not the case if the warnings were only enabled by the `-Wall` command-line option. 1333 | [GCC_WARN_UNKNOWN_PRAGMAS]-name 1334 | Unknown Pragma 1335 | [GCC_WARN_UNKNOWN_PRAGMAS]-value-[NO] 1336 | No 1337 | [GCC_WARN_UNKNOWN_PRAGMAS]-value-[YES] 1338 | Yes 1339 | [GCC_WARN_UNUSED_FUNCTION]-description 1340 | Warn whenever a static function is declared but not defined or a noninline static function is unused. 1341 | [GCC_WARN_UNUSED_FUNCTION]-name 1342 | Unused Functions 1343 | [GCC_WARN_UNUSED_FUNCTION]-value-[NO] 1344 | No 1345 | [GCC_WARN_UNUSED_FUNCTION]-value-[YES] 1346 | Yes 1347 | [GCC_WARN_UNUSED_LABEL]-description 1348 | Warn whenever a label is declared but not used. 1349 | [GCC_WARN_UNUSED_LABEL]-name 1350 | Unused Labels 1351 | [GCC_WARN_UNUSED_LABEL]-value-[NO] 1352 | No 1353 | [GCC_WARN_UNUSED_LABEL]-value-[YES] 1354 | Yes 1355 | [GCC_WARN_UNUSED_PARAMETER]-description 1356 | Warn whenever a function parameter is unused aside from its declaration. 1357 | [GCC_WARN_UNUSED_PARAMETER]-name 1358 | Unused Parameters 1359 | [GCC_WARN_UNUSED_PARAMETER]-value-[NO] 1360 | No 1361 | [GCC_WARN_UNUSED_PARAMETER]-value-[YES] 1362 | Yes 1363 | [GCC_WARN_UNUSED_VALUE]-description 1364 | Warn whenever a statement computes a result that is explicitly not used. 1365 | [GCC_WARN_UNUSED_VALUE]-name 1366 | Unused Values 1367 | [GCC_WARN_UNUSED_VALUE]-value-[NO] 1368 | No 1369 | [GCC_WARN_UNUSED_VALUE]-value-[YES] 1370 | Yes 1371 | [GCC_WARN_UNUSED_VARIABLE]-description 1372 | Warn whenever a local variable or nonconstant static variable is unused aside from its declaration. 1373 | [GCC_WARN_UNUSED_VARIABLE]-name 1374 | Unused Variables 1375 | [GCC_WARN_UNUSED_VARIABLE]-value-[NO] 1376 | No 1377 | [GCC_WARN_UNUSED_VARIABLE]-value-[YES] 1378 | Yes 1379 | [LLVM_LTO]-description 1380 | Enabling this setting allows optimization across file boundaries during linking. 1381 | 1382 | * *No:* Disabled. Do not use link-time optimization. 1383 | * *Monolithic Link-Time Optimization:* This mode performs monolithic link-time optimization of binaries, combining all executable code into a single unit and running aggressive compiler optimizations. 1384 | * *Incremental Link-Time Optimization:* This mode performs partitioned link-time optimization of binaries, inlining between compilation units and running aggressive compiler optimizations on each unit in parallel. This enables fast incremental builds and uses less memory than Monolithic LTO. 1385 | [LLVM_LTO]-name 1386 | Link-Time Optimization 1387 | [LLVM_LTO]-value-[NO] 1388 | No 1389 | [LLVM_LTO]-value-[YES] 1390 | Monolithic 1391 | [LLVM_LTO]-value-[YES_THIN] 1392 | Incremental 1393 | [LanguageCXX]-category 1394 | Language - C++ 1395 | [LanguageModules]-category 1396 | Language - Modules 1397 | [LanguageObjC]-category 1398 | Language - Objective C 1399 | [Language]-category 1400 | Language 1401 | [OTHER_CFLAGS]-description 1402 | Space-separated list of additional flags to pass to the compiler for C and Objective-C files. Be sure to backslash-escape any arguments that contain spaces or special characters, such as path names that may contain spaces. Use this setting if Xcode does not already provide UI for a particular C or Objective-C compiler flag. 1403 | [OTHER_CFLAGS]-name 1404 | Other C Flags 1405 | [OTHER_CPLUSPLUSFLAGS]-description 1406 | Space-separated list of additional flags to pass to the compiler for C++ and Objective-C++ files. Be sure to backslash-escape any arguments that contain spaces or special characters, such as path names that may contain spaces. Use this setting if Xcode does not already provide UI for a C++ or Objective-C++ compiler flag. 1407 | [OTHER_CPLUSPLUSFLAGS]-name 1408 | Other C++ Flags 1409 | [Preprocessing]-category 1410 | Preprocessing 1411 | [RUN_CLANG_STATIC_ANALYZER]-description 1412 | Activating this setting will cause Xcode to run the `Clang` static analysis tool on qualifying source files during every build. 1413 | [RUN_CLANG_STATIC_ANALYZER]-name 1414 | Analyze During 'Build' 1415 | [SAAppleAPICheckers]-category 1416 | Issues - Apple APIs 1417 | [SACheckers]-category 1418 | Generic Issues 1419 | [SAObjCCheckers]-category 1420 | Issues - Objective-C 1421 | [SAPolicy]-category 1422 | Analysis Policy 1423 | [SASecurityCheckers]-category 1424 | Issues - Security 1425 | [UBSANPolicy]-category 1426 | Undefined Behavior Sanitizer 1427 | [WARNING_CFLAGS]-description 1428 | Space-separated list of additional warning flags to pass to the compiler. Use this setting if Xcode does not already provide UI for a particular compiler warning flag. 1429 | [WARNING_CFLAGS]-name 1430 | Other Warning Flags 1431 | [WarningsCXX]-category 1432 | Warnings - C++ 1433 | [WarningsObjCARC]-category 1434 | Warnings - Objective C and ARC 1435 | [WarningsObjC]-category 1436 | Warnings - Objective C 1437 | [WarningsPolicy]-category 1438 | Warning Policies 1439 | [Warnings]-category 1440 | Warnings - All languages 1441 | 1442 | 1443 | -------------------------------------------------------------------------------- /Obfuscator.xcplugin/Contents/Resources/Obfuscator.xcspec: -------------------------------------------------------------------------------- 1 | // 2 | // LLVM 9.0 compiler build task 3 | // Copyright (c) 2000-2016 Apple Inc. All rights reserved. 4 | // 5 | ( 6 | { 7 | Identifier = "com.apple.compilers.llvm.obfuscator.4_0"; 8 | Type = Compiler; 9 | Class = "XCCompilerSpecificationClang"; 10 | Name = "Obfuscator 4.0"; 11 | Description = "Obfuscator 4.0 compiler"; 12 | Vendor = HEIG-VD; 13 | Version = "4.0"; 14 | IsAbstract = NO; 15 | ShowInCompilerSelectionPopup = YES; 16 | FileTypes = ( 17 | "sourcecode.c.c", 18 | "sourcecode.c.objc", 19 | "sourcecode.cpp.cpp", 20 | "sourcecode.cpp.objcpp", 21 | "sourcecode.asm", 22 | ); 23 | OptionConditionFlavors = ( 24 | arch, 25 | sdk, 26 | ); 27 | BuiltinJambaseRuleName = ProcessC; 28 | ExecPath = "/Users/obaby/Soft/obfuscator/build/bin/clang"; 29 | ExecDescription = "Compile $(InputFile)"; 30 | ProgressDescription = "Compiling $(CommandProgressByType) source files"; 31 | ExecDescriptionForPrecompile = "Precompile $(InputFile)"; 32 | ProgressDescriptionForPrecompile = "Precompiling $(CommandProgressByType) prefix headers"; 33 | UseCPlusPlusCompilerDriverWhenBundlizing = Yes; 34 | CommandOutputParser = "XCSimpleBufferedCommandOutputParser"; 35 | SupportsHeadermaps = Yes; 36 | DashIFlagAcceptsHeadermaps = Yes; 37 | SupportsIsysroot = Yes; 38 | SupportsPredictiveCompilation = No; 39 | SupportsSeparateUserHeaderPaths = Yes; 40 | SupportsMacOSXDeploymentTarget = Yes; 41 | SupportsMacOSXMinVersionFlag = Yes; 42 | PatternsOfFlagsNotAffectingPrecomps = ( 43 | "-v", 44 | "-###", 45 | "-H", 46 | "-time", 47 | "-save-temps", 48 | "-W*", 49 | "-w", 50 | "-fdiagnostics-show-note-include-stack", 51 | "-fmacro-backtrace-limit*", 52 | "-fmessage-length*", 53 | "-fcolor-diagnostics", 54 | "-fvectorize", 55 | "-flto", 56 | "-fstrict-aliasing", 57 | "-fno-strict-aliasing", 58 | "-fmodules-autolink", 59 | "-fmodules-prune-interval*", 60 | "-fmodules-prune-after*", 61 | "-fbuild-session-timestamp*", 62 | "-fmodules-validate-once-per-build-session", 63 | ); 64 | MessageCategoryInfoOptions = ( "--print-diagnostic-categories" ); 65 | Options = ( 66 | { 67 | Name = arch; 68 | Type = String; 69 | CommandLineArgs = { 70 | "<>" = ( 71 | "-arch", 72 | "$(value)", 73 | ); 74 | }; 75 | }, 76 | { 77 | Name = "diagnostic_message_length"; 78 | Type = String; 79 | DefaultValue = 0; 80 | CommandLinePrefixFlag = "-fmessage-length="; 81 | }, 82 | { 83 | Name = "print_note_include_stack"; 84 | Type = Boolean; 85 | DefaultValue = YES; 86 | CommandLineArgs = { 87 | YES = ("-fdiagnostics-show-note-include-stack"); 88 | NO = (); 89 | }; 90 | }, 91 | { 92 | Name = "CLANG_MACRO_BACKTRACE_LIMIT"; 93 | Type = String; 94 | DefaultValue = 0; 95 | CommandLinePrefixFlag = "-fmacro-backtrace-limit="; 96 | }, 97 | { 98 | // Note: this flag impacts PCH. 99 | Name = "CLANG_RETAIN_COMMENTS_FROM_SYSTEM_HEADERS"; 100 | Type = Boolean; 101 | DefaultValue = NO; 102 | CommandLineArgs = { 103 | YES = ("-fretain-comments-from-system-headers"); 104 | NO = (); 105 | }; 106 | }, 107 | { 108 | // Note: this flag does NOT impact PCH or compilation. 109 | // The build system makes special efforts to ignore 110 | // -fcolor-diagnostics for dependency tracking. 111 | Name = "CLANG_COLOR_DIAGNOSTICS"; 112 | Type = Boolean; 113 | DefaultValue = "$(COLOR_DIAGNOSTICS)"; 114 | CommandLineArgs = { 115 | YES = ("-fcolor-diagnostics"); 116 | NO = (); 117 | }; 118 | }, 119 | { 120 | Name = "GCC_INPUT_FILETYPE"; 121 | Type = Enumeration; 122 | Values = ( 123 | automatic, 124 | "sourcecode.c.c", 125 | "sourcecode.c.objc", 126 | "sourcecode.cpp.cpp", 127 | "sourcecode.cpp.objcpp", 128 | ); 129 | DefaultValue = automatic; 130 | Category = Language; 131 | }, 132 | { 133 | Name = "GCC_OPERATION"; 134 | Type = Enumeration; 135 | Values = ( 136 | compile, 137 | "generate-preprocessed", 138 | "generate-assembler", 139 | precompile, 140 | "separate-symbols", 141 | ); 142 | DefaultValue = compile; 143 | }, 144 | { 145 | Name = "GCC_USE_STANDARD_INCLUDE_SEARCHING"; 146 | Type = Boolean; 147 | DefaultValue = YES; 148 | CommandLineArgs = { 149 | YES = (); 150 | NO = ( 151 | "-nostdinc", 152 | ); 153 | }; 154 | Category = Language; 155 | }, 156 | { 157 | Name = "GCC_C_LANGUAGE_STANDARD"; 158 | Type = Enumeration; 159 | Values = ( 160 | ansi, 161 | c89, 162 | gnu89, 163 | c99, 164 | gnu99, 165 | c11, 166 | gnu11, 167 | "compiler-default", 168 | ); 169 | DefaultValue = "compiler-default"; 170 | CommandLineArgs = { 171 | ansi = ( 172 | "-ansi", 173 | ); 174 | "compiler-default" = (); 175 | "<>" = ( 176 | "-std=$(value)", 177 | ); 178 | }; 179 | FileTypes = ( 180 | "sourcecode.c.c", 181 | "sourcecode.c.objc", 182 | ); 183 | Category = Language; 184 | }, 185 | { 186 | Name = "CLANG_CXX_LANGUAGE_STANDARD"; 187 | Type = Enumeration; 188 | Values = ( 189 | "c++98", 190 | "gnu++98", 191 | "c++0x", 192 | "gnu++0x", 193 | "c++14", 194 | "gnu++14", 195 | "c++17", 196 | "gnu++17", 197 | "compiler-default", 198 | ); 199 | DefaultValue = "compiler-default"; 200 | CommandLineArgs = { 201 | "compiler-default" = (); 202 | // We need these two entries that reference c++0x to 203 | // maintain compatibility of old build settings. 204 | "c++0x" = ( "-std=c++11" ); 205 | "gnu++0x" = ( "-std=gnu++11" ); 206 | // C++17 is not ratified yet. 207 | // Map to current compiler flag. 208 | "c++17" = ( "-std=c++1z" ); 209 | "gnu++17" = ( "-std=gnu++1z" ); 210 | // Default for everything else. 211 | "<>" = ( 212 | "-std=$(value)", 213 | ); 214 | }; 215 | FileTypes = ( 216 | "sourcecode.cpp.cpp", 217 | "sourcecode.cpp.objcpp", 218 | ); 219 | Category = LanguageCXX; 220 | }, 221 | { 222 | Name = "CLANG_CXX_LIBRARY"; 223 | Type = Enumeration; 224 | Values = ( 225 | "libstdc++", 226 | "libc++", 227 | "compiler-default", 228 | ); 229 | DefaultValue = "compiler-default"; 230 | FileTypes = ( 231 | "sourcecode.cpp.cpp", 232 | "sourcecode.cpp.objcpp", 233 | ); 234 | CommandLineArgs = { 235 | "compiler-default" = (); 236 | "<>" = ( "-stdlib=$(value)" ); 237 | }; 238 | AdditionalLinkerArgs = { 239 | "compiler-default" = (); 240 | "<>" = ( "-stdlib=$(value)" ); 241 | }; 242 | AppearsAfter = "CLANG_CXX_LANGUAGE_STANDARD"; 243 | Category = LanguageCXX; 244 | }, 245 | { 246 | Name = "CLANG_ENABLE_OBJC_ARC"; 247 | Type = Boolean; 248 | DefaultValue = NO; 249 | CommandLineArgs = { 250 | YES = ( 251 | "-fobjc-arc", 252 | ); 253 | NO = (); 254 | }; 255 | AdditionalLinkerArgs = { 256 | YES = ( 257 | "-fobjc-arc", 258 | ); 259 | NO = (); 260 | }; 261 | FileTypes = ( 262 | "sourcecode.c.objc", 263 | "sourcecode.cpp.objcpp", 264 | ); 265 | Category = LanguageObjC; 266 | }, 267 | { 268 | Name = "CLANG_ENABLE_OBJC_WEAK"; 269 | Type = Boolean; 270 | DefaultValue = NO; 271 | CommandLineArgs = { 272 | YES = ( 273 | "-fobjc-weak", 274 | ); 275 | NO = (); 276 | }; 277 | FileTypes = ( 278 | "sourcecode.c.objc", 279 | "sourcecode.cpp.objcpp", 280 | ); 281 | Category = LanguageObjC; 282 | }, 283 | { 284 | Name = "CLANG_LINK_OBJC_RUNTIME"; 285 | Type = Boolean; 286 | DefaultValue = YES; 287 | CommandLineArgs = { 288 | YES = (); 289 | NO = (); 290 | }; 291 | // This option is passed for linking to inform the compiler 292 | // that the ObjC runtime must be linked in (with possible 293 | // backwards compatibility libraries linked in). 294 | AdditionalLinkerArgs = { 295 | YES = ( "-fobjc-link-runtime" ); 296 | NO = (); 297 | }; 298 | FileTypes = ( 299 | "sourcecode.c.objc", 300 | "sourcecode.cpp.objcpp", 301 | ); 302 | Category = LanguageObjC; 303 | }, 304 | { 305 | Name = "CLANG_ENABLE_MODULES"; 306 | Type = Boolean; 307 | DefaultValue = NO; 308 | CommandLineArgs = { 309 | YES = ( "-fmodules" ); 310 | NO = (); 311 | }; 312 | Category = LanguageModules; 313 | }, 314 | { 315 | Name = "CLANG_ENABLE_MODULE_DEBUGGING"; 316 | Type = Boolean; 317 | DefaultValue = YES; 318 | Category = LanguageModules; 319 | DisplayName = "Enable Clang Module Debugging"; 320 | Description = "When this setting is enabled, `clang` will use the shared debug info available in `clang` modules and precompiled headers. This results in smaller build artifacts, faster compile times, and more complete debug info. This setting should only be disabled when building static libraries with debug info for distribution."; 321 | }, 322 | { 323 | Name = "CLANG_DEBUG_MODULES"; 324 | Type = Boolean; 325 | DefaultValue = "$(CLANG_ENABLE_MODULE_DEBUGGING)"; 326 | CommandLineArgs = { 327 | YES = ( "-gmodules" ); 328 | NO = (); 329 | }; 330 | Condition = "$(GCC_GENERATE_DEBUGGING_SYMBOLS) == YES && ( $(CLANG_ENABLE_MODULES) == YES || ( $(GCC_PREFIX_HEADER) != '' && $(GCC_PRECOMPILE_PREFIX_HEADER) == YES ) )"; 331 | SupportedVersionRanges = ( "800.0.0" ); 332 | // Hidden. 333 | }, 334 | { 335 | Name = "CLANG_MODULE_CACHE_PATH"; 336 | Type = String; 337 | DefaultValue = "$(MODULE_CACHE_DIR)"; 338 | CommandLineArgs = { 339 | "" = (); 340 | "<>" = ( "-fmodules-cache-path=$(CLANG_MODULE_CACHE_PATH)" ); 341 | }; 342 | Condition = "$(CLANG_ENABLE_MODULES) == YES"; 343 | // Intentionally hidden. 344 | }, 345 | { 346 | Name = "CLANG_MODULES_AUTOLINK"; 347 | Type = Boolean; 348 | DefaultValue = YES; 349 | CommandLineArgs = { 350 | YES = (); 351 | NO = ("-fno-autolink"); 352 | }; 353 | Condition = "$(CLANG_ENABLE_MODULES) == YES"; 354 | Category = LanguageModules; 355 | }, 356 | { 357 | Name = "CLANG_MODULES_PRUNE_INTERVAL"; 358 | Type = String; 359 | DefaultValue = "86400"; 360 | CommandLineArgs = { 361 | "" = (); 362 | "<>" = ( 363 | "-fmodules-prune-interval=$(value)", 364 | ); 365 | }; 366 | Condition = "$(CLANG_ENABLE_MODULES) == YES"; 367 | // Hidden. 368 | }, 369 | { 370 | Name = "CLANG_MODULES_PRUNE_AFTER"; 371 | Type = String; 372 | DefaultValue = "345600"; 373 | CommandLineArgs = { 374 | "" = (); 375 | "<>" = ( 376 | "-fmodules-prune-after=$(value)", 377 | ); 378 | }; 379 | Condition = "$(CLANG_ENABLE_MODULES) == YES"; 380 | // Hidden. 381 | }, 382 | { 383 | Name = "CLANG_MODULES_IGNORE_MACROS"; 384 | Type = StringList; 385 | DefaultValue = "$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)"; 386 | CommandLineArgs = ( 387 | "-fmodules-ignore-macro=$(value)", 388 | ); 389 | Condition = "$(CLANG_ENABLE_MODULES) == YES"; 390 | // Intentionally hidden; part of CLANG_ENABLE_MODULES. 391 | }, 392 | { 393 | Name = "CLANG_MODULES_VALIDATE_SYSTEM_HEADERS"; 394 | Type = Boolean; 395 | DefaultValue = NO; 396 | CommandLineArgs = { 397 | YES = ("-fmodules-validate-system-headers",); 398 | NO = (); 399 | }; 400 | Condition = "$(CLANG_ENABLE_MODULES) == YES"; 401 | // Hidden. 402 | }, 403 | { 404 | Name = "CLANG_MODULES_BUILD_SESSION_FILE"; 405 | Type = String; 406 | DefaultValue = ""; 407 | CommandLineArgs = { 408 | "" = (); 409 | "<>" = ( 410 | "-fbuild-session-file=$(value)", 411 | "-fmodules-validate-once-per-build-session", 412 | ); 413 | }; 414 | Condition = "$(CLANG_ENABLE_MODULES) == YES"; 415 | SupportedVersionRanges = ( "602.0.0" ); 416 | }, 417 | { 418 | Name = "CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES"; 419 | Type = Boolean; 420 | DefaultValue = NO; 421 | CommandLineArgs = { 422 | YES = (); 423 | NO = ("-Wnon-modular-include-in-framework-module", 424 | "-Werror=non-modular-include-in-framework-module"); 425 | }; 426 | Condition = "$(CLANG_ENABLE_MODULES) == YES"; 427 | Category = LanguageModules; 428 | DisplayName = "Allow Non-modular Includes In Framework Modules"; 429 | Description = "Enabling this setting allows non-modular includes to be used from within framework modules. This is inherently unsafe, as such headers might cause duplicate definitions when used by any client that imports both the framework and the non-modular includes."; 430 | }, 431 | { 432 | Name = "CLANG_ENABLE_MODULE_IMPLEMENTATION_OF"; 433 | Type = Boolean; 434 | DefaultValue = YES; 435 | CommandLineArgs = { 436 | NO = (); 437 | YES = ("-fmodule-name=$(PRODUCT_MODULE_NAME)"); 438 | }; 439 | Condition = "$(CLANG_ENABLE_MODULES) == YES && $(DEFINES_MODULE) == YES"; 440 | }, 441 | { 442 | Name = "CLANG_ENABLE_APP_EXTENSION"; 443 | Type = Boolean; 444 | DefaultValue = "$(APPLICATION_EXTENSION_API_ONLY)"; 445 | CommandLineArgs = { 446 | YES = ( "-fapplication-extension" ); 447 | NO = (); 448 | }; 449 | AdditionalLinkerArgs = { 450 | YES = ( "-fapplication-extension" ); 451 | NO = (); 452 | }; 453 | }, 454 | { 455 | Name = "GCC_CHAR_IS_UNSIGNED_CHAR"; 456 | Type = Boolean; 457 | DefaultValue = NO; 458 | CommandLineArgs = { 459 | YES = ( 460 | "-funsigned-char", 461 | ); 462 | NO = (); 463 | }; 464 | Category = Language; 465 | }, 466 | { 467 | Name = "GCC_ENABLE_ASM_KEYWORD"; 468 | Type = Boolean; 469 | DefaultValue = YES; 470 | CommandLineArgs = { 471 | YES = (); 472 | NO = ( 473 | "-fno-asm", 474 | ); 475 | }; 476 | Category = Language; 477 | }, 478 | { 479 | Name = "GCC_ENABLE_BUILTIN_FUNCTIONS"; 480 | Type = Boolean; 481 | DefaultValue = YES; 482 | CommandLineArgs = { 483 | YES = (); 484 | NO = ( 485 | "-fno-builtin", 486 | ); 487 | }; 488 | Category = Language; 489 | }, 490 | { 491 | Name = "GCC_ENABLE_TRIGRAPHS"; 492 | Type = Boolean; 493 | DefaultValue = NO; 494 | CommandLineArgs = { 495 | YES = ( 496 | "-trigraphs", 497 | ); 498 | NO = ( 499 | "-Wno-trigraphs", 500 | ); 501 | }; 502 | Category = Language; 503 | }, 504 | { 505 | Name = "GCC_ENABLE_CPP_EXCEPTIONS"; 506 | Type = Boolean; 507 | DefaultValue = YES; 508 | CommandLineArgs = { 509 | YES = (); 510 | NO = ( 511 | "-fno-exceptions", 512 | ); 513 | }; 514 | FileTypes = ( 515 | "sourcecode.cpp.cpp", 516 | "sourcecode.cpp.objcpp", 517 | ); 518 | Category = LanguageCXX; 519 | }, 520 | { 521 | Name = "GCC_ENABLE_CPP_RTTI"; 522 | Type = Boolean; 523 | DefaultValue = YES; 524 | CommandLineArgs = { 525 | YES = (); 526 | NO = ( 527 | "-fno-rtti", 528 | "-fno-sanitize=vptr", 529 | ); 530 | }; 531 | FileTypes = ( 532 | "sourcecode.cpp.cpp", 533 | "sourcecode.cpp.objcpp", 534 | ); 535 | Category = LanguageCXX; 536 | }, 537 | { 538 | Name = "GCC_ENABLE_PASCAL_STRINGS"; 539 | Type = Boolean; 540 | DefaultValue = YES; 541 | CommandLineArgs = { 542 | YES = ( 543 | "-fpascal-strings", 544 | ); 545 | NO = (); 546 | }; 547 | Category = Language; 548 | }, 549 | { 550 | Name = "GCC_SHORT_ENUMS"; 551 | Type = Boolean; 552 | DefaultValue = NO; 553 | CommandLineArgs = { 554 | YES = ( 555 | "-fshort-enums", 556 | ); 557 | NO = (); 558 | }; 559 | Category = Language; 560 | }, 561 | { 562 | Name = "GCC_LINK_WITH_DYNAMIC_LIBRARIES"; 563 | Type = Boolean; 564 | DefaultValue = YES; 565 | CommandLineArgs = { 566 | YES = (); 567 | NO = ( 568 | "-static", 569 | ); 570 | }; 571 | Category = Language; 572 | }, 573 | { 574 | Name = "GCC_ENABLE_FLOATING_POINT_LIBRARY_CALLS"; 575 | Type = Boolean; 576 | DefaultValue = NO; 577 | CommandLineArgs = { 578 | YES = ( 579 | "-msoft-float", 580 | ); 581 | NO = (); 582 | }; 583 | Category = Language; 584 | }, 585 | { 586 | Name = "GCC_PREFIX_HEADER"; 587 | Type = String; 588 | DefaultValue = ""; 589 | Category = Language; 590 | ConditionFlavors = (); 591 | }, 592 | { 593 | Name = "GCC_PRECOMPILE_PREFIX_HEADER"; 594 | Type = Boolean; 595 | DefaultValue = NO; 596 | Category = Language; 597 | ConditionFlavors = (); 598 | }, 599 | { 600 | Name = "GCC_INCREASE_PRECOMPILED_HEADER_SHARING"; 601 | Type = Boolean; 602 | DefaultValue = NO; 603 | Category = Language; 604 | ConditionFlavors = (); 605 | }, 606 | { 607 | Name = "OTHER_CFLAGS"; 608 | Type = StringList; 609 | FileTypes = ( 610 | "sourcecode.c.c", 611 | "sourcecode.c.objc", 612 | ); 613 | Category = CustomFlags; 614 | }, 615 | { 616 | Name = "OTHER_CPLUSPLUSFLAGS"; 617 | Type = StringList; 618 | FileTypes = ( 619 | "sourcecode.cpp.cpp", 620 | "sourcecode.cpp.objcpp", 621 | ); 622 | Category = CustomFlags; 623 | }, 624 | { 625 | Name = "GCC_GENERATE_DEBUGGING_SYMBOLS"; 626 | Type = Boolean; 627 | DefaultValue = YES; 628 | Category = CodeGeneration; 629 | }, 630 | { 631 | Name = "GCC_OPTIMIZATION_LEVEL"; 632 | Type = Enumeration; 633 | // NOTE: Updating these values requires updating LLVM_OPTIMIZATION_LEVEL_VAL_X. 634 | Values = ( 635 | 0, 636 | 1, 637 | 2, 638 | 3, 639 | s, 640 | fast, 641 | ); 642 | DefaultValue = s; 643 | CommandLineArgs = ( 644 | "-O$(value)", 645 | ); 646 | Category = CodeGeneration; 647 | }, 648 | { 649 | Name = "LLVM_OPTIMIZATION_LEVEL_VAL_0"; 650 | Type = Boolean; 651 | DefaultValue = NO; 652 | // Hidden 653 | }, 654 | { 655 | Name = "LLVM_OPTIMIZATION_LEVEL_VAL_1"; 656 | Type = Boolean; 657 | DefaultValue = NO; 658 | // Hidden 659 | }, 660 | { 661 | Name = "LLVM_OPTIMIZATION_LEVEL_VAL_2"; 662 | Type = Boolean; 663 | DefaultValue = NO; 664 | // Hidden 665 | }, 666 | { 667 | Name = "LLVM_OPTIMIZATION_LEVEL_VAL_3"; 668 | Type = Boolean; 669 | DefaultValue = NO; 670 | // Hidden 671 | }, 672 | { 673 | Name = "LLVM_OPTIMIZATION_LEVEL_VAL_s"; 674 | Type = Boolean; 675 | DefaultValue = NO; 676 | // Hidden 677 | }, 678 | { 679 | Name = "LLVM_OPTIMIZATION_LEVEL_VAL_fast"; 680 | Type = Boolean; 681 | DefaultValue = YES; 682 | // Hidden 683 | }, 684 | { 685 | Name = "LLVM_IMPLICIT_AGGRESSIVE_OPTIMIZATIONS"; 686 | Type = Boolean; 687 | DefaultValue = "$(LLVM_OPTIMIZATION_LEVEL_VAL_$(GCC_OPTIMIZATION_LEVEL))"; 688 | // Hidden 689 | }, 690 | { 691 | Name = "LLVM_LTO"; 692 | Type = Enumeration; 693 | Values = ( 694 | YES, 695 | YES_THIN, 696 | NO, 697 | ); 698 | DefaultValue = NO; 699 | CommandLineArgs = { 700 | YES = ( "-flto" ); 701 | YES_THIN = ( "-flto=thin" ); 702 | NO = (); 703 | }; 704 | AdditionalLinkerArgs = { 705 | YES_THIN = ( "-flto=thin", "-Xlinker", "-cache_path_lto", "-Xlinker", "$(OBJROOT)/LTOCache" ); 706 | NO = (); 707 | }; 708 | Category = CodeGeneration; 709 | }, 710 | { 711 | Name = "GCC_NO_COMMON_BLOCKS"; 712 | Type = Boolean; 713 | DefaultValue = NO; 714 | CommandLineArgs = { 715 | YES = ( 716 | "-fno-common", 717 | ); 718 | NO = (); 719 | }; 720 | Category = CodeGeneration; 721 | }, 722 | { 723 | Name = "GCC_REUSE_STRINGS"; 724 | Type = Boolean; 725 | DefaultValue = YES; 726 | CommandLineArgs = { 727 | YES = (); 728 | NO = ( 729 | "-fwritable-strings", 730 | ); 731 | }; 732 | Category = CodeGeneration; 733 | }, 734 | { 735 | Name = "GCC_DYNAMIC_NO_PIC"; 736 | Type = Boolean; 737 | DefaultValue = NO; 738 | CommandLineArgs = { 739 | YES = ( 740 | "-mdynamic-no-pic", 741 | ); 742 | NO = (); 743 | }; 744 | Category = CodeGeneration; 745 | }, 746 | { 747 | Name = "GCC_ENABLE_KERNEL_DEVELOPMENT"; 748 | Type = Boolean; 749 | DefaultValue = NO; 750 | CommandLineArgs = { 751 | YES = ( 752 | "-mkernel", 753 | ); 754 | NO = (); 755 | }; 756 | Category = CodeGeneration; 757 | }, 758 | { 759 | Name = "GCC_TREAT_WARNINGS_AS_ERRORS"; 760 | Type = Boolean; 761 | DefaultValue = NO; 762 | CommandLineArgs = { 763 | YES = ( 764 | "-Werror", 765 | ); 766 | NO = (); 767 | }; 768 | Category = WarningsPolicy; 769 | }, 770 | { 771 | Name = "GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS"; 772 | Type = Boolean; 773 | DefaultValue = NO; 774 | CommandLineArgs = { 775 | YES = ( 776 | "-Werror=implicit-function-declaration", 777 | ); 778 | NO = (); 779 | }; 780 | FileTypes = ( 781 | "sourcecode.c.c", 782 | "sourcecode.c.objc", 783 | ); 784 | Category = Warnings; 785 | AppearsAfter = "GCC_TREAT_WARNINGS_AS_ERRORS"; 786 | }, 787 | { 788 | Name = "GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS"; 789 | Type = Boolean; 790 | DefaultValue = NO; 791 | CommandLineArgs = { 792 | YES = ( 793 | "-Werror=incompatible-pointer-types", 794 | ); 795 | NO = (); 796 | }; 797 | Category = Warnings; 798 | AppearsAfter = "GCC_TREAT_WARNINGS_AS_ERRORS"; 799 | }, 800 | { 801 | Name = "GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS"; 802 | Type = Boolean; 803 | DefaultValue = NO; 804 | CommandLineArgs = { 805 | YES = ( 806 | "-Wmissing-field-initializers", 807 | ); 808 | NO = ( 809 | "-Wno-missing-field-initializers", 810 | ); 811 | }; 812 | Category = Warnings; 813 | }, 814 | { 815 | Name = "GCC_WARN_ABOUT_MISSING_PROTOTYPES"; 816 | Type = Boolean; 817 | DefaultValue = NO; 818 | CommandLineArgs = { 819 | YES = ( 820 | "-Wmissing-prototypes", 821 | ); 822 | NO = ( 823 | "-Wno-missing-prototypes", 824 | ); 825 | }; 826 | Category = Warnings; 827 | }, 828 | { 829 | Name = "GCC_WARN_ABOUT_RETURN_TYPE"; 830 | Type = Enumeration; 831 | Values = ( 832 | YES, NO, YES_ERROR 833 | ); 834 | DefaultValue = NO; 835 | CommandLineArgs = { 836 | YES = (); 837 | YES_ERROR = ( "-Werror=return-type" ); 838 | NO = ( "-Wno-return-type" ); 839 | }; 840 | Category = Warnings; 841 | }, 842 | { 843 | Name = "CLANG_WARN_DOCUMENTATION_COMMENTS"; 844 | Type = Boolean; 845 | DefaultValue = NO; 846 | CommandLineArgs = { 847 | YES = ( "-Wdocumentation" ); 848 | NO = (); 849 | }; 850 | Category = Warnings; 851 | }, 852 | { 853 | Name = "CLANG_WARN_UNREACHABLE_CODE"; 854 | Type = Enumeration; 855 | Values = ( 856 | YES, 857 | YES_AGGRESSIVE, 858 | NO, 859 | ); 860 | DefaultValue = NO; 861 | CommandLineArgs = { 862 | YES = ( "-Wunreachable-code" ); 863 | YES_AGGRESSIVE = ( "-Wunreachable-code-aggressive" ); 864 | NO = (); 865 | }; 866 | Category = Warnings; 867 | }, 868 | // Compiler warning for when nullable is converted to nonnull. 869 | // Not visible in build settings. 870 | { 871 | Name = "CLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION"; 872 | Type = Boolean; 873 | DefaultValue = NO; 874 | CommandLineArgs = { 875 | YES = ( "-Wnullable-to-nonnull-conversion" ); 876 | NO = (); 877 | }; 878 | }, 879 | { 880 | Name = "CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES"; 881 | Type = Boolean; 882 | DefaultValue = NO; 883 | CommandLineArgs = { 884 | YES = ( 885 | "-Wimplicit-atomic-properties" 886 | ); 887 | NO = ( 888 | "-Wno-implicit-atomic-properties" 889 | ); 890 | }; 891 | FileTypes = ( 892 | "sourcecode.c.objc", 893 | "sourcecode.cpp.objcpp", 894 | ); 895 | Category = WarningsObjC; 896 | }, 897 | { 898 | Name = "CLANG_WARN_DIRECT_OBJC_ISA_USAGE"; 899 | Type = Enumeration; 900 | Values = ( 901 | YES, NO, YES_ERROR 902 | ); 903 | DefaultValue = YES; 904 | CommandLineArgs = { 905 | YES = (); 906 | YES_ERROR = ( "-Werror=deprecated-objc-isa-usage" ); 907 | NO = ( "-Wno-deprecated-objc-isa-usage"); 908 | }; 909 | Category = WarningsObjC; 910 | }, 911 | { 912 | Name = "CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS"; 913 | Type = Boolean; 914 | DefaultValue = NO; 915 | CommandLineArgs = { 916 | YES = ( "-Wobjc-missing-property-synthesis" ); 917 | NO = (); 918 | }; 919 | FileTypes = ( 920 | "sourcecode.c.objc", 921 | "sourcecode.cpp.objcpp", 922 | ); 923 | Category = WarningsObjC; 924 | }, 925 | { 926 | Name = "CLANG_WARN_OBJC_ROOT_CLASS"; 927 | Type = Enumeration; 928 | Values = ( 929 | YES, NO, YES_ERROR 930 | ); 931 | DefaultValue = YES; 932 | CommandLineArgs = { 933 | YES = ( /* On by default */ ); 934 | NO = ( "-Wno-objc-root-class" ); 935 | YES_ERROR = ( "-Werror=objc-root-class" ); 936 | }; 937 | Category = WarningsObjC; 938 | }, 939 | { 940 | Name = "CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK"; 941 | Type = Enumeration; 942 | Values = ( YES, NO, YES_AGGRESSIVE ); 943 | DefaultValue = NO; 944 | CommandLineArgs = { 945 | NO = ( "-Wno-arc-repeated-use-of-weak" ); 946 | YES = ( 947 | "-Warc-repeated-use-of-weak", 948 | "-Wno-arc-maybe-repeated-use-of-weak" 949 | ); 950 | YES_AGGRESSIVE = ( 951 | "-Warc-repeated-use-of-weak", 952 | "-Warc-maybe-repeated-use-of-weak" 953 | ); 954 | }; 955 | FileTypes = ( 956 | "sourcecode.c.objc", 957 | "sourcecode.cpp.objcpp", 958 | ); 959 | Category = WarningsObjCARC; 960 | }, 961 | { 962 | Name = "CLANG_WARN_OBJC_EXPLICIT_OWNERSHIP_TYPE"; 963 | Type = Boolean; 964 | DefaultValue = NO; 965 | CommandLineArgs = { 966 | YES = ( "-Wexplicit-ownership-type" ); 967 | NO = (); 968 | }; 969 | FileTypes = ( 970 | "sourcecode.c.objc", 971 | "sourcecode.cpp.objcpp", 972 | ); 973 | Category = WarningsObjCARC; 974 | }, 975 | { 976 | Name = "CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF"; 977 | Type = Boolean; 978 | DefaultValue = NO; 979 | CommandLineArgs = { 980 | YES = ( "-Wimplicit-retain-self" ); 981 | NO = (); 982 | }; 983 | FileTypes = ( 984 | "sourcecode.c.objc", 985 | "sourcecode.cpp.objcpp", 986 | ); 987 | Category = WarningsObjCARC; 988 | }, 989 | { 990 | Name = "GCC_WARN_NON_VIRTUAL_DESTRUCTOR"; 991 | Type = Boolean; 992 | DefaultValue = NO; 993 | CommandLineArgs = { 994 | YES = ( 995 | "-Wnon-virtual-dtor", 996 | ); 997 | NO = ( 998 | "-Wno-non-virtual-dtor", 999 | ); 1000 | }; 1001 | FileTypes = ( 1002 | "sourcecode.cpp.cpp", 1003 | "sourcecode.cpp.objcpp", 1004 | ); 1005 | Category = WarningsCXX; 1006 | }, 1007 | { 1008 | Name = "GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS"; 1009 | Type = Boolean; 1010 | DefaultValue = NO; 1011 | CommandLineArgs = { 1012 | YES = ( 1013 | "-Woverloaded-virtual", 1014 | ); 1015 | NO = ( 1016 | "-Wno-overloaded-virtual", 1017 | ); 1018 | }; 1019 | FileTypes = ( 1020 | "sourcecode.cpp.cpp", 1021 | "sourcecode.cpp.objcpp", 1022 | ); 1023 | Category = WarningsCXX; 1024 | }, 1025 | { 1026 | // The "__" is intentional. 1027 | Name = "CLANG_WARN__EXIT_TIME_DESTRUCTORS"; 1028 | Type = Boolean; 1029 | DefaultValue = NO; 1030 | CommandLineArgs = { 1031 | YES = ("-Wexit-time-destructors"); 1032 | NO = ("-Wno-exit-time-destructors"); 1033 | }; 1034 | FileTypes = ( 1035 | "sourcecode.cpp.cpp", 1036 | "sourcecode.cpp.objcpp", 1037 | ); 1038 | Category = WarningsCXX; 1039 | }, 1040 | { 1041 | // The "__" is intentional. 1042 | Name = "CLANG_WARN__ARC_BRIDGE_CAST_NONARC"; 1043 | Type = Boolean; 1044 | DefaultValue = YES; 1045 | CommandLineArgs = { 1046 | YES = (); 1047 | NO = ("-Wno-arc-bridge-casts-disallowed-in-nonarc"); 1048 | }; 1049 | FileTypes = ( 1050 | "sourcecode.c.objc", 1051 | "sourcecode.cpp.objcpp", 1052 | ); 1053 | Category = WarningsObjCARC; 1054 | }, 1055 | { 1056 | // The "__" is intentional. 1057 | Name = "CLANG_WARN__DUPLICATE_METHOD_MATCH"; 1058 | Type = Boolean; 1059 | DefaultValue = NO; 1060 | CommandLineArgs = { 1061 | YES = ("-Wduplicate-method-match"); 1062 | NO = (); 1063 | }; 1064 | FileTypes = ( 1065 | "sourcecode.c.objc", 1066 | "sourcecode.cpp.objcpp", 1067 | ); 1068 | Category = WarningsObjC; 1069 | }, 1070 | { 1071 | Name = "GCC_WARN_TYPECHECK_CALLS_TO_PRINTF"; 1072 | Type = Boolean; 1073 | DefaultValue = YES; 1074 | CommandLineArgs = { 1075 | YES = ( /* Enabled by default */ ); 1076 | NO = ( "-Wno-format" ); 1077 | }; 1078 | Category = Warnings; 1079 | }, 1080 | { 1081 | Name = "GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED"; 1082 | Type = Boolean; 1083 | DefaultValue = NO; 1084 | CommandLineArgs = { 1085 | YES = ( 1086 | "-Wmissing-braces", 1087 | ); 1088 | NO = ( 1089 | "-Wno-missing-braces", 1090 | ); 1091 | }; 1092 | Category = Warnings; 1093 | }, 1094 | { 1095 | Name = "GCC_WARN_MISSING_PARENTHESES"; 1096 | Type = Boolean; 1097 | DefaultValue = YES; 1098 | CommandLineArgs = { 1099 | YES = ( 1100 | "-Wparentheses", 1101 | ); 1102 | NO = ( 1103 | "-Wno-parentheses", 1104 | ); 1105 | }; 1106 | Category = Warnings; 1107 | }, 1108 | { 1109 | Name = "GCC_WARN_CHECK_SWITCH_STATEMENTS"; 1110 | Type = Boolean; 1111 | DefaultValue = YES; 1112 | CommandLineArgs = { 1113 | YES = ( 1114 | "-Wswitch", 1115 | ); 1116 | NO = ( 1117 | "-Wno-switch", 1118 | ); 1119 | }; 1120 | Category = Warnings; 1121 | }, 1122 | { 1123 | Name = "GCC_WARN_UNUSED_FUNCTION"; 1124 | Type = Boolean; 1125 | DefaultValue = NO; 1126 | CommandLineArgs = { 1127 | YES = ( 1128 | "-Wunused-function", 1129 | ); 1130 | NO = ( 1131 | "-Wno-unused-function", 1132 | ); 1133 | }; 1134 | Category = Warnings; 1135 | }, 1136 | { 1137 | Name = "GCC_WARN_UNUSED_LABEL"; 1138 | Type = Boolean; 1139 | DefaultValue = NO; 1140 | CommandLineArgs = { 1141 | YES = ( 1142 | "-Wunused-label", 1143 | ); 1144 | NO = ( 1145 | "-Wno-unused-label", 1146 | ); 1147 | }; 1148 | Category = Warnings; 1149 | }, 1150 | { 1151 | Name = "CLANG_WARN_EMPTY_BODY"; 1152 | Type = Boolean; 1153 | DefaultValue = NO; 1154 | CommandLineArgs = { 1155 | YES = ( "-Wempty-body" ); 1156 | NO = ( "-Wno-empty-body" ); 1157 | }; 1158 | Category = Warnings; 1159 | }, 1160 | { 1161 | Name = "GCC_WARN_UNINITIALIZED_AUTOS"; 1162 | Type = Enumeration; 1163 | Values = ( 1164 | YES, 1165 | YES_AGGRESSIVE, 1166 | NO, 1167 | ); 1168 | DefaultValue = NO; 1169 | CommandLineArgs = { 1170 | YES = ( 1171 | "-Wuninitialized", 1172 | ); 1173 | YES_AGGRESSIVE = ( 1174 | "-Wuninitialized", 1175 | "-Wconditional-uninitialized", 1176 | ); 1177 | NO = ( 1178 | "-Wno-uninitialized", 1179 | ); 1180 | }; 1181 | Category = Warnings; 1182 | }, 1183 | { 1184 | Name = "GCC_WARN_UNKNOWN_PRAGMAS"; 1185 | Type = Boolean; 1186 | DefaultValue = NO; 1187 | CommandLineArgs = { 1188 | YES = ( 1189 | "-Wunknown-pragmas", 1190 | ); 1191 | NO = ( 1192 | "-Wno-unknown-pragmas", 1193 | ); 1194 | }; 1195 | Category = Warnings; 1196 | }, 1197 | { 1198 | Name = "GCC_WARN_INHIBIT_ALL_WARNINGS"; 1199 | Type = Boolean; 1200 | DefaultValue = NO; 1201 | CommandLineArgs = { 1202 | YES = ( 1203 | "-w", 1204 | ); 1205 | NO = (); 1206 | }; 1207 | Category = WarningsPolicy; 1208 | }, 1209 | { 1210 | Name = "GCC_WARN_PEDANTIC"; 1211 | Type = Boolean; 1212 | DefaultValue = NO; 1213 | CommandLineArgs = { 1214 | YES = ( 1215 | "-pedantic", 1216 | ); 1217 | NO = (); 1218 | }; 1219 | Category = WarningsPolicy; 1220 | }, 1221 | { 1222 | Name = "GCC_WARN_SHADOW"; 1223 | Type = Boolean; 1224 | DefaultValue = NO; 1225 | CommandLineArgs = { 1226 | YES = ( 1227 | "-Wshadow", 1228 | ); 1229 | NO = ( 1230 | "-Wno-shadow", 1231 | ); 1232 | }; 1233 | Category = Warnings; 1234 | }, 1235 | { 1236 | Name = "GCC_WARN_FOUR_CHARACTER_CONSTANTS"; 1237 | Type = Boolean; 1238 | DefaultValue = NO; 1239 | CommandLineArgs = { 1240 | YES = ( 1241 | "-Wfour-char-constants", 1242 | ); 1243 | NO = ( 1244 | "-Wno-four-char-constants", 1245 | ); 1246 | }; 1247 | Category = Warnings; 1248 | }, 1249 | // This needs to appear in the xcspec before GCC_WARN_64_TO_32_BIT_CONVERSION. 1250 | // This is because -Wno-conversion would turn that warning off. By having 1251 | // GCC_WARN_64_TO_32_BIT_CONVERSION appear later, it generates a 1252 | // compiler flag later in the command line, and the compiler 1253 | // honors the last flag last. We need explicit -Wno-XXX for 1254 | // each warning to have it work with -Weverything. 1255 | { 1256 | Name = "CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION"; 1257 | Type = Enumeration; 1258 | DefaultValue = NO; 1259 | Values = ( YES, YES_ERROR, NO ); 1260 | CommandLineArgs = { 1261 | YES = ( 1262 | "-Wconversion", 1263 | ); 1264 | YES_ERROR = ( "-Werror=conversion" ); 1265 | NO = ( 1266 | // This cannot be removed until we have a solution 1267 | // for . 1268 | "-Wno-conversion", 1269 | ); 1270 | }; 1271 | CommonOption = NO; 1272 | Category = Warnings; 1273 | }, 1274 | // This must appear after CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION 1275 | { 1276 | Name = "CLANG_WARN_CONSTANT_CONVERSION"; 1277 | Type = Enumeration; 1278 | Values = ( YES, YES_ERROR, NO ); 1279 | DefaultValue = "$(CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION)"; 1280 | CommandLineArgs = { 1281 | YES = ( "-Wconstant-conversion" ); 1282 | YES_ERROR = ( "-Werror=constant-conversion" ); 1283 | NO = ( "-Wno-constant-conversion" ); 1284 | }; 1285 | Category = Warnings; 1286 | }, 1287 | // This must appear after CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION. 1288 | { 1289 | Name = "CLANG_WARN_INT_CONVERSION"; 1290 | Type = Enumeration; 1291 | Values = ( YES, YES_ERROR, NO ); 1292 | DefaultValue = "$(CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION)"; 1293 | CommandLineArgs = { 1294 | YES = ( 1295 | "-Wint-conversion" 1296 | ); 1297 | YES_ERROR = ( "-Werror=int-conversion" ); 1298 | NO = ( 1299 | "-Wno-int-conversion" 1300 | ); 1301 | }; 1302 | Category = Warnings; 1303 | }, 1304 | // This must appear after CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION. 1305 | { 1306 | Name = "CLANG_WARN_BOOL_CONVERSION"; 1307 | Type = Enumeration; 1308 | Values = ( YES, YES_ERROR, NO ); 1309 | DefaultValue = "$(CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION)"; 1310 | CommandLineArgs = { 1311 | YES = ( 1312 | "-Wbool-conversion" 1313 | ); 1314 | YES_ERROR = ( "-Werror=bool-conversion" ); 1315 | NO = ( 1316 | "-Wno-bool-conversion" 1317 | ); 1318 | }; 1319 | Category = Warnings; 1320 | }, 1321 | // This must appear after CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION. 1322 | { 1323 | Name = "CLANG_WARN_ENUM_CONVERSION"; 1324 | Type = Enumeration; 1325 | Values = ( YES, YES_ERROR, NO ); 1326 | DefaultValue = "$(CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION)"; 1327 | CommandLineArgs = { 1328 | YES = ( 1329 | "-Wenum-conversion" 1330 | ); 1331 | YES_ERROR = ( "-Werror=enum-conversion" ); 1332 | NO = ( 1333 | "-Wno-enum-conversion" 1334 | ); 1335 | }; 1336 | Category = Warnings; 1337 | }, 1338 | // This must appear after CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION. 1339 | { 1340 | Name = "CLANG_WARN_FLOAT_CONVERSION"; 1341 | Type = Enumeration; 1342 | Values = ( YES, YES_ERROR, NO ); 1343 | DefaultValue = "$(CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION)"; 1344 | CommandLineArgs = { 1345 | YES = ( "-Wfloat-conversion" ); 1346 | YES_ERROR = ( "-Werror=float-conversion" ); 1347 | NO = ( "-Wno-float-conversion" ); 1348 | }; 1349 | Category = Warnings; 1350 | }, 1351 | // This must appear after CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION. 1352 | { 1353 | Name = "CLANG_WARN_NON_LITERAL_NULL_CONVERSION"; 1354 | Type = Enumeration; 1355 | Values = ( YES, YES_ERROR, NO ); 1356 | DefaultValue = "$(CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION)"; 1357 | CommandLineArgs = { 1358 | YES = ( "-Wnon-literal-null-conversion" ); 1359 | YES_ERROR = ( "-Werror=non-literal-null-conversion" ); 1360 | NO = ( "-Wno-non-literal-null-conversion" ); 1361 | }; 1362 | Category = Warnings; 1363 | }, 1364 | // This must appear after CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION. 1365 | { 1366 | Name = "CLANG_WARN_OBJC_LITERAL_CONVERSION"; 1367 | Type = Enumeration; 1368 | Values = ( YES, YES_ERROR, NO ); 1369 | DefaultValue = "$(CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION)"; 1370 | CommandLineArgs = { 1371 | YES = ( 1372 | "-Wobjc-literal-conversion" 1373 | ); 1374 | YES_ERROR = ( 1375 | "-Werror=objc-literal-conversion" 1376 | ); 1377 | NO = ( 1378 | "-Wno-objc-literal-conversion" 1379 | ); 1380 | }; 1381 | Category = WarningsObjC; 1382 | }, 1383 | { 1384 | Name = "CLANG_WARN_ASSIGN_ENUM"; 1385 | Type = Boolean; 1386 | DefaultValue = "NO"; 1387 | CommandLineArgs = { 1388 | YES = ( "-Wassign-enum" ); 1389 | NO = (); 1390 | }; 1391 | Category = Warnings; 1392 | }, 1393 | { 1394 | Name = "GCC_WARN_SIGN_COMPARE"; 1395 | Type = Boolean; 1396 | DefaultValue = NO; 1397 | CommandLineArgs = { 1398 | YES = ( 1399 | "-Wsign-compare", 1400 | ); 1401 | NO = (); 1402 | }; 1403 | Category = Warnings; 1404 | }, 1405 | { 1406 | Name = "GCC_WARN_MULTIPLE_DEFINITION_TYPES_FOR_SELECTOR"; 1407 | Type = Boolean; 1408 | DefaultValue = NO; 1409 | CommandLineArgs = { 1410 | YES = ( 1411 | "-Wselector", 1412 | ); 1413 | NO = ( 1414 | "-Wno-selector", 1415 | ); 1416 | }; 1417 | FileTypes = ( 1418 | "sourcecode.c.objc", 1419 | "sourcecode.cpp.objcpp", 1420 | ); 1421 | }, 1422 | { 1423 | Name = "GCC_WARN_STRICT_SELECTOR_MATCH"; 1424 | Type = Boolean; 1425 | DefaultValue = NO; 1426 | CommandLineArgs = { 1427 | YES = ( 1428 | "-Wstrict-selector-match", 1429 | ); 1430 | NO = ( 1431 | "-Wno-strict-selector-match", 1432 | ); 1433 | }; 1434 | FileTypes = ( 1435 | "sourcecode.c.objc", 1436 | "sourcecode.cpp.objcpp", 1437 | ); 1438 | Category = WarningsObjC; 1439 | }, 1440 | { 1441 | Name = "GCC_WARN_UNDECLARED_SELECTOR"; 1442 | Type = Boolean; 1443 | DefaultValue = NO; 1444 | CommandLineArgs = { 1445 | YES = ( 1446 | "-Wundeclared-selector", 1447 | ); 1448 | NO = ( 1449 | "-Wno-undeclared-selector", 1450 | ); 1451 | }; 1452 | FileTypes = ( 1453 | "sourcecode.c.objc", 1454 | "sourcecode.cpp.objcpp", 1455 | ); 1456 | Category = WarningsObjC; 1457 | }, 1458 | { 1459 | Name = "CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS"; 1460 | Type = Boolean; 1461 | DefaultValue = NO; 1462 | CommandLineArgs = { 1463 | YES = ( 1464 | "-Wdeprecated-implementations", 1465 | ); 1466 | NO = ( 1467 | "-Wno-deprecated-implementations", 1468 | ); 1469 | }; 1470 | FileTypes = ( 1471 | "sourcecode.c.objc", 1472 | "sourcecode.cpp.objcpp", 1473 | ); 1474 | Category = WarningsObjC; 1475 | }, 1476 | { 1477 | Name = "CLANG_WARN_CXX0X_EXTENSIONS"; 1478 | Type = Boolean; 1479 | DefaultValue = NO; 1480 | CommandLineArgs = { 1481 | YES = ( "-Wc++11-extensions" ); 1482 | // We need to explicitly pass -Wno, since parts of this 1483 | // warning are on by default. 1484 | NO = ( "-Wno-c++11-extensions" ) ; 1485 | }; 1486 | FileTypes = ( 1487 | "sourcecode.cpp.cpp", 1488 | "sourcecode.cpp.objcpp", 1489 | ); 1490 | Category = WarningsCXX; 1491 | }, 1492 | { 1493 | Name = "WARNING_CFLAGS"; 1494 | Type = StringList; 1495 | DefaultValue = ""; 1496 | Category = CustomFlags; 1497 | }, 1498 | { 1499 | Name = "GCC_PREPROCESSOR_DEFINITIONS"; 1500 | Type = StringList; 1501 | DefaultValue = ""; 1502 | CommandLineArgs = ( 1503 | "-D$(value)", 1504 | ); 1505 | Category = Preprocessing; 1506 | }, 1507 | { 1508 | Name = "GCC_PRODUCT_TYPE_PREPROCESSOR_DEFINITIONS"; 1509 | Type = StringList; 1510 | DefaultValue = ""; 1511 | CommandLineArgs = ( 1512 | "-D$(value)", 1513 | ); 1514 | }, 1515 | { 1516 | Name = "GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS"; 1517 | Type = StringList; 1518 | DefaultValue = ""; 1519 | Category = Preprocessing; 1520 | }, 1521 | { 1522 | Name = "ENABLE_NS_ASSERTIONS"; 1523 | Type = Boolean; 1524 | DefaultValue = YES; 1525 | CommandLineArgs = { 1526 | YES = (); 1527 | NO = ("-DNS_BLOCK_ASSERTIONS=1"); 1528 | }; 1529 | FileTypes = ( 1530 | "sourcecode.c.objc", 1531 | "sourcecode.cpp.objcpp", 1532 | ); 1533 | Category = Preprocessing; 1534 | }, 1535 | { 1536 | Name = "ENABLE_STRICT_OBJC_MSGSEND"; 1537 | Type = Boolean; 1538 | DefaultValue = NO; 1539 | CommandLineArgs = { 1540 | NO = (); 1541 | YES = ("-DOBJC_OLD_DISPATCH_PROTOTYPES=0"); 1542 | }; 1543 | FileTypes = ( 1544 | "sourcecode.c.objc", 1545 | "sourcecode.cpp.objcpp", 1546 | ); 1547 | Category = Preprocessing; 1548 | }, 1549 | { 1550 | Name = "USE_HEADERMAP"; 1551 | Type = Boolean; 1552 | DefaultValue = YES; 1553 | }, 1554 | { 1555 | Name = "HEADERMAP_FILE_FORMAT"; 1556 | Type = Enumeration; 1557 | Values = ( 1558 | traditional, 1559 | ); 1560 | DefaultValue = traditional; 1561 | }, 1562 | { 1563 | Name = "CPP_HEADERMAP_FILE"; 1564 | Type = Path; 1565 | DefaultValue = "$(TEMP_DIR)/$(PRODUCT_NAME).hmap"; 1566 | }, 1567 | { 1568 | Name = "CPP_HEADERMAP_FILE_FOR_GENERATED_FILES"; 1569 | Type = Path; 1570 | DefaultValue = "$(TEMP_DIR)/$(PRODUCT_NAME)-generated-files.hmap"; 1571 | }, 1572 | { 1573 | Name = "CPP_HEADERMAP_FILE_FOR_OWN_TARGET_HEADERS"; 1574 | Type = Path; 1575 | DefaultValue = "$(TEMP_DIR)/$(PRODUCT_NAME)-own-target-headers.hmap"; 1576 | }, 1577 | { 1578 | Name = "CPP_HEADERMAP_FILE_FOR_ALL_TARGET_HEADERS"; 1579 | Type = Path; 1580 | DefaultValue = "$(TEMP_DIR)/$(PRODUCT_NAME)-all-target-headers.hmap"; 1581 | }, 1582 | { 1583 | Name = "CPP_HEADERMAP_FILE_FOR_ALL_NON_FRAMEWORK_TARGET_HEADERS"; 1584 | Type = Path; 1585 | DefaultValue = "$(TEMP_DIR)/$(PRODUCT_NAME)-all-non-framework-target-headers.hmap"; 1586 | }, 1587 | { 1588 | Name = "CPP_HEADERMAP_FILE_FOR_PROJECT_FILES"; 1589 | Type = Path; 1590 | DefaultValue = "$(TEMP_DIR)/$(PRODUCT_NAME)-project-headers.hmap"; 1591 | }, 1592 | { 1593 | Name = "CPP_HEADERMAP_PRODUCT_HEADERS_VFS_FILE"; 1594 | Type = Path; 1595 | DefaultValue = "$(PROJECT_TEMP_DIR)/all-product-headers.yaml"; 1596 | }, 1597 | { 1598 | Name = "USE_HEADER_SYMLINKS"; 1599 | Type = Boolean; 1600 | DefaultValue = NO; 1601 | }, 1602 | { 1603 | Name = "CPP_HEADER_SYMLINKS_DIR"; 1604 | Type = Path; 1605 | DefaultValue = "$(TEMP_DIR)/$(PRODUCT_NAME).hdrs"; 1606 | }, 1607 | { 1608 | Name = SDKROOT; 1609 | Type = Path; 1610 | CommandLineFlag = "-isysroot"; 1611 | }, 1612 | { 1613 | Name = "GCC_USE_GCC3_PFE_SUPPORT"; 1614 | Type = Boolean; 1615 | DefaultValue = YES; 1616 | }, 1617 | { 1618 | Name = "GCC_PFE_FILE_C_DIALECTS"; 1619 | Type = StringList; 1620 | DefaultValue = "c objective-c c++ objective-c++"; 1621 | }, 1622 | { 1623 | Name = "ENABLE_APPLE_KEXT_CODE_GENERATION"; 1624 | Type = Boolean; 1625 | DefaultValue = NO; 1626 | CommandLineArgs = { 1627 | YES = ( 1628 | "-fapple-kext", 1629 | ); 1630 | NO = (); 1631 | }; 1632 | FileTypes = ( 1633 | "sourcecode.cpp.cpp", 1634 | "sourcecode.cpp.objcpp", 1635 | ); 1636 | }, 1637 | { 1638 | Name = "GCC_WARN_UNUSED_PARAMETER"; 1639 | Type = Boolean; 1640 | DefaultValue = NO; 1641 | CommandLineArgs = { 1642 | YES = ( 1643 | "-Wunused-parameter", 1644 | ); 1645 | NO = ( 1646 | "-Wno-unused-parameter", 1647 | ); 1648 | }; 1649 | AppearsAfter = "GCC_WARN_UNUSED_LABEL"; 1650 | Category = Warnings; 1651 | }, 1652 | { 1653 | Name = "GCC_WARN_UNUSED_VARIABLE"; 1654 | Type = Boolean; 1655 | DefaultValue = NO; 1656 | CommandLineArgs = { 1657 | YES = ( 1658 | "-Wunused-variable", 1659 | ); 1660 | NO = ( 1661 | "-Wno-unused-variable", 1662 | ); 1663 | }; 1664 | AppearsAfter = "GCC_WARN_UNUSED_PARAMETER"; 1665 | Category = Warnings; 1666 | }, 1667 | { 1668 | Name = "GCC_WARN_UNUSED_VALUE"; 1669 | Type = Boolean; 1670 | DefaultValue = YES; 1671 | CommandLineArgs = { 1672 | YES = ( 1673 | "-Wunused-value", 1674 | ); 1675 | NO = ( 1676 | "-Wno-unused-value", 1677 | ); 1678 | }; 1679 | AppearsAfter = "GCC_WARN_UNUSED_VARIABLE"; 1680 | Category = Warnings; 1681 | }, 1682 | { 1683 | Name = "GCC_ENABLE_EXCEPTIONS"; 1684 | Type = Boolean; 1685 | DefaultValue = NO; 1686 | CommandLineFlag = "-fexceptions"; 1687 | }, 1688 | { 1689 | Name = "GCC_ENABLE_OBJC_EXCEPTIONS"; 1690 | Type = Boolean; 1691 | DefaultValue = YES; 1692 | CommandLineArgs = { 1693 | YES = (); 1694 | NO = ( 1695 | "-fno-objc-exceptions", 1696 | ); 1697 | }; 1698 | FileTypes = ( 1699 | "sourcecode.c.objc", 1700 | "sourcecode.cpp.objcpp", 1701 | ); 1702 | Category = LanguageObjC; 1703 | }, 1704 | { 1705 | Name = "GCC_CW_ASM_SYNTAX"; 1706 | Type = Boolean; 1707 | DefaultValue = YES; 1708 | CommandLineArgs = { 1709 | YES = ( 1710 | "-fasm-blocks", 1711 | ); 1712 | NO = (); 1713 | }; 1714 | Architectures = (i386, x86_64); 1715 | Category = Language; 1716 | }, 1717 | { 1718 | Name = "GCC_UNROLL_LOOPS"; 1719 | Type = Boolean; 1720 | DefaultValue = NO; 1721 | CommandLineArgs = { 1722 | YES = ( 1723 | "-funroll-loops", 1724 | ); 1725 | NO = (); 1726 | }; 1727 | Category = CodeGeneration; 1728 | }, 1729 | { 1730 | Name = "GCC_FAST_MATH"; 1731 | Type = Boolean; 1732 | DefaultValue = NO; 1733 | CommandLineArgs = { 1734 | YES = ( 1735 | "-ffast-math", 1736 | ); 1737 | NO = (); 1738 | }; 1739 | Condition = "$(LLVM_IMPLICIT_AGGRESSIVE_OPTIMIZATIONS) == NO"; 1740 | Category = CodeGeneration; 1741 | }, 1742 | { 1743 | Name = "GCC_STRICT_ALIASING"; 1744 | Type = Boolean; 1745 | DefaultValue = YES; 1746 | CommandLineArgs = { 1747 | YES = ( "-fstrict-aliasing" ); 1748 | NO = ( "-fno-strict-aliasing" ); 1749 | }; 1750 | Category = CodeGeneration; 1751 | }, 1752 | { 1753 | Name = "GCC_INSTRUMENT_PROGRAM_FLOW_ARCS"; 1754 | Type = Boolean; 1755 | DefaultValue = NO; 1756 | CommandLineArgs = { 1757 | YES = ( 1758 | "-fprofile-arcs", 1759 | ); 1760 | NO = (); 1761 | }; 1762 | AdditionalLinkerArgs = { 1763 | YES = ( 1764 | "-fprofile-arcs", 1765 | ); 1766 | NO = (); 1767 | }; 1768 | Category = CodeGeneration; 1769 | }, 1770 | { 1771 | Name = "GCC_GENERATE_TEST_COVERAGE_FILES"; 1772 | Type = Boolean; 1773 | DefaultValue = NO; 1774 | CommandLineArgs = { 1775 | YES = ( 1776 | "-ftest-coverage", 1777 | ); 1778 | NO = (); 1779 | }; 1780 | AdditionalLinkerArgs = { 1781 | YES = ( 1782 | "-ftest-coverage", 1783 | ); 1784 | NO = (); 1785 | }; 1786 | Category = CodeGeneration; 1787 | }, 1788 | { 1789 | Name = "GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL"; 1790 | Type = Boolean; 1791 | DefaultValue = YES; 1792 | CommandLineArgs = { 1793 | YES = ( 1794 | "-Wprotocol", 1795 | ); 1796 | NO = ( 1797 | "-Wno-protocol", 1798 | ); 1799 | }; 1800 | FileTypes = ( 1801 | "sourcecode.c.objc", 1802 | "sourcecode.cpp.objcpp", 1803 | ); 1804 | Category = WarningsObjC; 1805 | }, 1806 | { 1807 | Name = "GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS"; 1808 | Type = Boolean; 1809 | DefaultValue = YES; 1810 | CommandLineArgs = { 1811 | YES = ( 1812 | "-Wdeprecated-declarations", 1813 | ); 1814 | NO = ( 1815 | "-Wno-deprecated-declarations", 1816 | ); 1817 | }; 1818 | Category = Warnings; 1819 | }, 1820 | { 1821 | Name = "GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO"; 1822 | Type = Boolean; 1823 | DefaultValue = YES; 1824 | FileTypes = ( 1825 | "sourcecode.cpp.cpp", 1826 | "sourcecode.cpp.objcpp", 1827 | ); 1828 | CommandLineArgs = { 1829 | YES = ( 1830 | "-Winvalid-offsetof", 1831 | ); 1832 | NO = ( 1833 | "-Wno-invalid-offsetof", 1834 | ); 1835 | }; 1836 | Category = WarningsCXX; 1837 | }, 1838 | { 1839 | Name = "GCC_MACOSX_VERSION_MIN"; 1840 | Type = String; 1841 | DefaultValue = "$($(DEPLOYMENT_TARGET_SETTING_NAME))"; 1842 | CommandLineArgs = { 1843 | "" = (); 1844 | "<>" = ( 1845 | "-$(DEPLOYMENT_TARGET_CLANG_FLAG_NAME)=$(value)", 1846 | ); 1847 | }; 1848 | }, 1849 | { 1850 | Name = "GCC_DEBUG_INFORMATION_FORMAT"; 1851 | Type = Enumeration; 1852 | Values = ( 1853 | dwarf, 1854 | "dwarf-with-dsym", 1855 | ); 1856 | CommandLineArgs = { 1857 | dwarf = ( 1858 | "-g", 1859 | ); 1860 | "dwarf-with-dsym" = ( 1861 | "-g", 1862 | ); 1863 | "<>" = (); 1864 | }; 1865 | DefaultValue = "$(DEBUG_INFORMATION_FORMAT)"; 1866 | Condition = "$(GCC_GENERATE_DEBUGGING_SYMBOLS)"; 1867 | CommonOption = NO; 1868 | }, 1869 | { 1870 | Name = "CLANG_DEBUG_INFORMATION_LEVEL"; 1871 | Type = Enumeration; 1872 | Values = ( 1873 | default, 1874 | "line-tables-only", 1875 | ); 1876 | DefaultValue = default; 1877 | CommandLineArgs = { 1878 | default = (); 1879 | "line-tables-only" = ( "-gline-tables-only" ); 1880 | }; 1881 | Condition = "$(GCC_GENERATE_DEBUGGING_SYMBOLS)"; 1882 | CommonOption = NO; 1883 | Category = CodeGeneration; 1884 | }, 1885 | { 1886 | // Old build setting. Kept around for old project compatibility. Forwards to CLANG_X86_VECTOR_INSTRUCTIONS. 1887 | Name = "GCC_ENABLE_SSE3_EXTENSIONS"; 1888 | Type = Boolean; 1889 | DefaultValue = NO; 1890 | CommandLineArgs = { YES = (); NO = (); }; 1891 | Architectures = ( i386, "x86_64", ); 1892 | DisplayName = "Enable SSE3 Extensions"; 1893 | Description = "Specifies whether the binary uses the builtin functions that provide access to the SSE3 extensions to the IA-32 architecture."; 1894 | }, 1895 | { 1896 | // Old build setting. Kept around for old project compatibility. Forwards to CLANG_X86_VECTOR_INSTRUCTIONS. 1897 | Name = "GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS"; 1898 | Type = Boolean; 1899 | DefaultValue = NO; 1900 | CommandLineArgs = { YES = (); NO = (); }; 1901 | Architectures = ( i386, "x86_64", ); 1902 | }, 1903 | { 1904 | // Old build setting. Kept around for old project compatibility. Forwards to CLANG_X86_VECTOR_INSTRUCTIONS. 1905 | Name = "GCC_ENABLE_SSE41_EXTENSIONS"; 1906 | Type = Boolean; 1907 | DefaultValue = NO; 1908 | CommandLineArgs = { YES = (); NO = (); }; 1909 | Architectures = ( i386, "x86_64", ); 1910 | DisplayName = "Enable SSE4.1 Extensions"; 1911 | Description = "Specifies whether the binary uses the builtin functions that provide access to the SSE4.1 extensions to the IA-32 architecture."; 1912 | }, 1913 | { 1914 | // Old build setting. Kept around for old project compatibility. Forwards to CLANG_X86_VECTOR_INSTRUCTIONS. 1915 | Name = "GCC_ENABLE_SSE42_EXTENSIONS"; 1916 | Type = Boolean; 1917 | DefaultValue = NO; 1918 | CommandLineArgs = { YES = (); NO = (); }; 1919 | Architectures = ( i386, "x86_64", ); 1920 | DisplayName = "Enable SSE4.2 Extensions"; 1921 | Description = "Specifies whether the binary uses the builtin functions that provide access to the SSE4.2 extensions to the IA-32 architecture."; 1922 | }, 1923 | { 1924 | Name = DEFAULT_SSE_LEVEL_3_YES; 1925 | Type = String; 1926 | DefaultValue = "sse3"; 1927 | }, 1928 | { 1929 | Name = DEFAULT_SSE_LEVEL_3_NO; 1930 | Type = String; 1931 | DefaultValue = "default"; 1932 | }, 1933 | { 1934 | Name = DEFAULT_SSE_LEVEL_3_SUPPLEMENTAL_YES; 1935 | Type = String; 1936 | DefaultValue = "ssse3"; 1937 | }, 1938 | { 1939 | Name = DEFAULT_SSE_LEVEL_3_SUPPLEMENTAL_NO; 1940 | Type = String; 1941 | DefaultValue = "$(DEFAULT_SSE_LEVEL_3_$(GCC_ENABLE_SSE3_EXTENSIONS))"; 1942 | }, 1943 | { 1944 | // Forwards old build settings to CLANG_X86_VECTOR_INSTRUCTIONS. 1945 | Name = DEFAULT_SSE_LEVEL_4_1_YES; 1946 | Type = String; 1947 | DefaultValue = "sse4.1"; 1948 | }, 1949 | { 1950 | // Forwards old build settings to CLANG_X86_VECTOR_INSTRUCTIONS. 1951 | Name = DEFAULT_SSE_LEVEL_4_1_NO; 1952 | Type = String; 1953 | DefaultValue = "$(DEFAULT_SSE_LEVEL_3_SUPPLEMENTAL_$(GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS))"; 1954 | }, 1955 | { 1956 | // Forwards old build settings to CLANG_X86_VECTOR_INSTRUCTIONS. 1957 | Name = DEFAULT_SSE_LEVEL_4_2_YES; 1958 | Type = String; 1959 | DefaultValue = "sse4.2"; 1960 | }, 1961 | { 1962 | // Forwards old build settings to CLANG_X86_VECTOR_INSTRUCTIONS. 1963 | Name = DEFAULT_SSE_LEVEL_4_2_NO; 1964 | Type = String; 1965 | DefaultValue = "$(DEFAULT_SSE_LEVEL_4_1_$(GCC_ENABLE_SSE41_EXTENSIONS))"; 1966 | }, 1967 | { 1968 | Name = "CLANG_X86_VECTOR_INSTRUCTIONS"; 1969 | Type = Enumeration; 1970 | Values = (default, "sse3", "ssse3", "sse4.1", "sse4.2", "avx", "avx2" ); 1971 | AvoidMacroDefinition = YES; 1972 | DisplayName = "Enable Additional Vector Extensions"; 1973 | DefaultValue = "$(DEFAULT_SSE_LEVEL_4_2_$(GCC_ENABLE_SSE42_EXTENSIONS))"; 1974 | CommandLineArgs = { 1975 | default = (); 1976 | "<>" = ( "-m$(value)" ); 1977 | }; 1978 | Architectures = ( 1979 | i386, 1980 | "x86_64", 1981 | ); 1982 | Category = CodeGeneration; 1983 | Description = "Enables the use of extended vector instructions. Only used when targeting Intel architectures."; 1984 | }, 1985 | { 1986 | Name = "GCC_SYMBOLS_PRIVATE_EXTERN"; 1987 | Type = Boolean; 1988 | DefaultValue = NO; 1989 | CommandLineArgs = { 1990 | YES = ( 1991 | "-fvisibility=hidden", 1992 | ); 1993 | NO = (); 1994 | }; 1995 | AppearsAfter = "GCC_FEEDBACK_DIRECTED_OPTIMIZATION"; 1996 | Category = CodeGeneration; 1997 | }, 1998 | { 1999 | Name = "GCC_INLINES_ARE_PRIVATE_EXTERN"; 2000 | Type = Boolean; 2001 | DefaultValue = NO; 2002 | CommandLineArgs = { 2003 | YES = ( 2004 | "-fvisibility-inlines-hidden", 2005 | ); 2006 | NO = (); 2007 | }; 2008 | AppearsAfter = "GCC_SYMBOLS_PRIVATE_EXTERN"; 2009 | Category = CodeGeneration; 2010 | FileTypes = ( 2011 | "sourcecode.cpp.cpp", 2012 | "sourcecode.cpp.objcpp", 2013 | ); 2014 | DisplayName = "Inline Methods Hidden"; 2015 | Description = "When enabled, out-of-line copies of inline methods are declared `private extern`."; 2016 | }, 2017 | { 2018 | Name = "GCC_THREADSAFE_STATICS"; 2019 | Type = Boolean; 2020 | DefaultValue = YES; 2021 | CommandLineArgs = { 2022 | YES = (); 2023 | NO = ( 2024 | "-fno-threadsafe-statics", 2025 | ); 2026 | }; 2027 | AppearsAfter = "GCC_INLINES_ARE_PRIVATE_EXTERN"; 2028 | Category = CodeGeneration; 2029 | FileTypes = ( 2030 | "sourcecode.cpp.cpp", 2031 | "sourcecode.cpp.objcpp", 2032 | ); 2033 | DisplayName = "Statics are Thread-Safe"; 2034 | Description = "Emits extra code to use the routines specified in the C++ ABI for thread-safe initialization of local statics. You can disable this option to reduce code size slightly in code that doesn't need to be thread-safe."; 2035 | }, 2036 | { 2037 | Name = "GCC_WARN_ABOUT_POINTER_SIGNEDNESS"; 2038 | Type = Boolean; 2039 | DefaultValue = YES; 2040 | CommandLineArgs = { 2041 | YES = ( 2042 | "-Wpointer-sign", 2043 | ); 2044 | NO = ( 2045 | "-Wno-pointer-sign", 2046 | ); 2047 | }; 2048 | FileTypes = ( 2049 | "sourcecode.c.c", 2050 | "sourcecode.c.objc", 2051 | ); 2052 | AppearsAfter = "GCC_WARN_SIGN_COMPARE"; 2053 | Category = Warnings; 2054 | CommonOption = YES; 2055 | DisplayName = "Pointer Sign Comparison"; 2056 | Description = "Warn when pointers passed via arguments or assigned to a variable differ in sign."; 2057 | }, 2058 | { 2059 | Name = "GCC_WARN_ABOUT_MISSING_NEWLINE"; 2060 | Type = Boolean; 2061 | DefaultValue = NO; 2062 | CommandLineArgs = { 2063 | YES = ( 2064 | "-Wnewline-eof", 2065 | ); 2066 | NO = ( 2067 | "-Wno-newline-eof", 2068 | ); 2069 | }; 2070 | AppearsAfter = "GCC_WARN_ABOUT_POINTER_SIGNEDNESS"; 2071 | Category = Warnings; 2072 | CommonOption = NO; 2073 | DisplayName = "Missing Newline At End Of File"; 2074 | Description = "Warn when a source file does not end with a newline."; 2075 | }, 2076 | // NOTE: This must appear *after* CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION 2077 | // as -Wsign-conversion is a subgroup of -Wconversion, and users 2078 | // expect to be able to activate one build setting and disable the other 2079 | // and get the expected result. 2080 | { 2081 | Name = "CLANG_WARN_IMPLICIT_SIGN_CONVERSION"; 2082 | Type = Enumeration; 2083 | Values = ( YES, YES_ERROR, NO ); 2084 | DefaultValue = NO; 2085 | CommandLineArgs = { 2086 | YES = ( 2087 | "-Wsign-conversion", 2088 | ); 2089 | YES_ERROR = ( "-Werror=sign-conversion" ); 2090 | NO = ( 2091 | "-Wno-sign-conversion", 2092 | ); 2093 | }; 2094 | CommonOption = NO; 2095 | Category = Warnings; 2096 | }, 2097 | { 2098 | Name = "GCC_WARN_64_TO_32_BIT_CONVERSION"; 2099 | Type = Enumeration; 2100 | Values = ( YES, YES_ERROR, NO ); 2101 | DefaultValue = NO; 2102 | CommandLineArgs = { 2103 | YES = ( 2104 | "-Wshorten-64-to-32", 2105 | ); 2106 | YES_ERROR = ( "-Werror=shorten-64-to-32" ); 2107 | NO = ( 2108 | "-Wno-shorten-64-to-32" 2109 | ); 2110 | }; 2111 | AppearsAfter = "GCC_WARN_SIGN_COMPARE"; 2112 | Category = Warnings; 2113 | CommonOption = NO; 2114 | DisplayName = "Implicit Conversion to 32 Bit Type"; 2115 | }, 2116 | { 2117 | Name = "CLANG_WARN_INFINITE_RECURSION"; 2118 | Type = Boolean; 2119 | DefaultValue = NO; 2120 | CommandLineArgs = { 2121 | YES = ( 2122 | "-Winfinite-recursion", 2123 | ); 2124 | NO = ( 2125 | "-Wno-infinite-recursion", 2126 | ); 2127 | }; 2128 | Category = Warnings; 2129 | CommonOption = NO; 2130 | }, 2131 | { 2132 | Name = "CLANG_WARN_SUSPICIOUS_MOVE"; 2133 | Type = Boolean; 2134 | DefaultValue = NO; 2135 | CommandLineArgs = { 2136 | YES = ( 2137 | "-Wmove", 2138 | ); 2139 | NO = ( 2140 | "-Wno-move", 2141 | ); 2142 | }; 2143 | FileTypes = ( 2144 | "sourcecode.cpp.cpp", 2145 | "sourcecode.cpp.objcpp", 2146 | ); 2147 | Category = WarningsCXX; 2148 | CommonOption = NO; 2149 | }, 2150 | { 2151 | Name = "CLANG_WARN_COMMA"; 2152 | Type = Enumeration; 2153 | Values = ( YES, NO, YES_ERROR ); 2154 | DefaultValue = NO; 2155 | CommandLineArgs = { 2156 | YES_ERROR = ("-Werror=comma"); 2157 | YES = ("-Wcomma"); 2158 | NO = ("-Wno-comma"); 2159 | }; 2160 | Category = Warnings; 2161 | CommonOption = NO; 2162 | SupportedVersionRanges = ( "900.0.0" ); 2163 | }, 2164 | { 2165 | Name = "CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING"; 2166 | Type = Enumeration; 2167 | Values = ( YES, NO, YES_ERROR ); 2168 | DefaultValue = NO; 2169 | CommandLineArgs = { 2170 | YES_ERROR = ("-Werror=block-capture-autoreleasing"); 2171 | YES = ("-Wblock-capture-autoreleasing"); 2172 | NO = ("-Wno-block-capture-autoreleasing"); 2173 | }; 2174 | Category = Warnings; 2175 | CommonOption = NO; 2176 | SupportedVersionRanges = ( "900.0.0" ); 2177 | }, 2178 | { 2179 | Name = "CLANG_WARN_STRICT_PROTOTYPES"; 2180 | Type = Enumeration; 2181 | Values = ( YES, NO, YES_ERROR ); 2182 | DefaultValue = NO; 2183 | CommandLineArgs = { 2184 | YES_ERROR = ("-Werror=strict-prototypes"); 2185 | YES = ("-Wstrict-prototypes"); 2186 | NO = ("-Wno-strict-prototypes"); 2187 | }; 2188 | Category = Warnings; 2189 | CommonOption = NO; 2190 | SupportedVersionRanges = ( "900.0.0" ); 2191 | }, 2192 | { 2193 | Name = "CLANG_WARN_RANGE_LOOP_ANALYSIS"; 2194 | Type = Boolean; 2195 | DefaultValue = NO; 2196 | CommandLineArgs = { 2197 | YES = ( 2198 | "-Wrange-loop-analysis", 2199 | ); 2200 | NO = ( 2201 | "-Wno-range-loop-analysis", 2202 | ); 2203 | }; 2204 | FileTypes = ( 2205 | "sourcecode.cpp.cpp", 2206 | "sourcecode.cpp.objcpp", 2207 | ); 2208 | Category = WarningsCXX; 2209 | CommonOption = NO; 2210 | }, 2211 | { 2212 | Name = "CLANG_WARN_UNGUARDED_AVAILABILITY"; 2213 | Type = Enumeration; 2214 | Values = ( 2215 | YES, 2216 | YES_AGGRESSIVE, 2217 | NO, 2218 | ); 2219 | DefaultValue = YES; 2220 | CommandLineArgs = { 2221 | YES = (); 2222 | YES_AGGRESSIVE = ( 2223 | "-Wunguarded-availability", 2224 | ); 2225 | NO = ( 2226 | "-Wno-unguarded-availability", 2227 | ); 2228 | }; 2229 | Category = Warnings; 2230 | SupportedVersionRanges = ( "900.0.0" ); 2231 | }, 2232 | { 2233 | Name = "GCC_OBJC_ABI_VERSION"; 2234 | Type = Enumeration; 2235 | Values = ( 2236 | 1, 2237 | 2, 2238 | ); 2239 | DefaultValue = "$(OBJC_ABI_VERSION)"; 2240 | CommandLineArgs = { 2241 | "" = (); 2242 | "<>" = ( 2243 | "-fobjc-abi-version=$(value)" 2244 | ); 2245 | }; 2246 | FileTypes = ( 2247 | sourcecode.c.objc, 2248 | sourcecode.cpp.objcpp, 2249 | ); 2250 | // Category is hidden -- used by iPhoneSimulator to match runtime OS setup; 2251 | }, 2252 | { 2253 | Name = "GCC_OBJC_LEGACY_DISPATCH"; 2254 | Type = Boolean; 2255 | DefaultValue = NO; 2256 | CommandLineArgs = { 2257 | YES = ( 2258 | "-fobjc-legacy-dispatch", 2259 | ); 2260 | NO = (); 2261 | }; 2262 | FileTypes = ( 2263 | sourcecode.c.objc, 2264 | sourcecode.cpp.objcpp, 2265 | ); 2266 | // Category is hidden -- used by iPhoneSimulator to match runtime OS setup; 2267 | }, 2268 | 2269 | { 2270 | Name = "CLANG_INSTRUMENT_FOR_OPTIMIZATION_PROFILING"; 2271 | Type = Boolean; 2272 | DefaultValue = NO; 2273 | CommandLineArgs = { 2274 | YES = ( 2275 | "-fprofile-instr-generate", 2276 | ); 2277 | NO = (); 2278 | }; 2279 | AdditionalLinkerArgs = { 2280 | YES = ( 2281 | "-fprofile-instr-generate", 2282 | ); 2283 | NO = (); 2284 | }; 2285 | }, 2286 | { 2287 | Name = "CLANG_OPTIMIZATION_PROFILE_FILE"; 2288 | Type = Path; 2289 | DefaultValue = "$(SRCROOT)/OptimizationProfiles/$(PROJECT_NAME).profdata"; 2290 | Category = CodeGeneration; 2291 | }, 2292 | { 2293 | Name = "CLANG_USE_OPTIMIZATION_PROFILE"; 2294 | Type = Boolean; 2295 | DefaultValue = NO; 2296 | Category = CodeGeneration; 2297 | Condition = "! $(CLANG_INSTRUMENT_FOR_OPTIMIZATION_PROFILING) && ! $(CLANG_COVERAGE_MAPPING)"; 2298 | CommandLineArgs = { 2299 | YES = ( 2300 | "-fprofile-instr-use=$(CLANG_OPTIMIZATION_PROFILE_FILE)", 2301 | ); 2302 | NO = (); 2303 | }; 2304 | }, 2305 | 2306 | // Code coverage settings. 2307 | { 2308 | Name = "CLANG_ENABLE_CODE_COVERAGE"; 2309 | Type = Boolean; 2310 | DefaultValue = YES; 2311 | Category = CodeGeneration; 2312 | DisplayName = "Enable Code Coverage Support"; 2313 | Description = "Enables building with code coverage instrumentation. This is only used when the build has code coverage enabled, which is typically done via the Xcode scheme settings."; 2314 | }, 2315 | { 2316 | Name = "CLANG_COVERAGE_MAPPING"; 2317 | Type = Boolean; 2318 | DefaultValue = NO; 2319 | Condition = "$(CLANG_ENABLE_CODE_COVERAGE)"; 2320 | CommandLineArgs = { 2321 | YES = ( 2322 | "-fprofile-instr-generate", 2323 | "-fcoverage-mapping", 2324 | ); 2325 | NO = (); 2326 | }; 2327 | }, 2328 | // Extend the linker arguments when code coverage is enabled. We use a separate setting here to do this so that the extra linker flags will always be passed when code coverage is enabled, even if this specific target disables code coverage instrumentation via CLANG_ENABLE_COVERAGE_MAPPING. 2329 | { 2330 | Name = "CLANG_COVERAGE_MAPPING_LINKER_ARGS"; 2331 | Type = Boolean; 2332 | DefaultValue = "$(CLANG_COVERAGE_MAPPING)"; 2333 | AdditionalLinkerArgs = { 2334 | NO = (); 2335 | YES = ( 2336 | "-fprofile-instr-generate", 2337 | ); 2338 | }; 2339 | }, 2340 | 2341 | // Generate bitcode options - not visible in the build settings. 2342 | { 2343 | Name = "CLANG_BITCODE_GENERATION_MODE"; 2344 | Type = Enumeration; 2345 | Values = ( 2346 | none, 2347 | marker, 2348 | bitcode, 2349 | ); 2350 | DefaultValue = "$(BITCODE_GENERATION_MODE)"; 2351 | Architectures = ( arm64, armv7, armv7s, armv7k ); 2352 | Condition = "$(ENABLE_BITCODE) == YES"; 2353 | CommandLineArgs = { 2354 | marker = ( 2355 | "-fembed-bitcode-marker", 2356 | ); 2357 | bitcode = ( 2358 | "-fembed-bitcode", 2359 | ); 2360 | }; 2361 | }, 2362 | 2363 | // Address Sanitizer options. 2364 | { 2365 | Name = "CLANG_ADDRESS_SANITIZER"; 2366 | Type = Boolean; 2367 | DefaultValue = "$(ENABLE_ADDRESS_SANITIZER)"; 2368 | CommandLineArgs = { 2369 | YES = ( 2370 | "-fsanitize=address", 2371 | ); 2372 | NO = (); 2373 | }; 2374 | AdditionalLinkerArgs = { 2375 | YES = ( 2376 | "-fsanitize=address", 2377 | ); 2378 | NO = (); 2379 | }; 2380 | // Not visible in the build settings editor 2381 | }, 2382 | { 2383 | Name = "CLANG_ADDRESS_SANITIZER_CONTAINER_OVERFLOW"; 2384 | Type = Boolean; 2385 | Category = ASANPolicy; 2386 | DefaultValue = NO; 2387 | CommandLineArgs = { 2388 | YES = (); 2389 | NO = ( 2390 | "-D_LIBCPP_HAS_NO_ASAN", 2391 | ); 2392 | }; 2393 | Condition = "$(CLANG_ADDRESS_SANITIZER) == YES"; 2394 | }, 2395 | { 2396 | Name = "CLANG_ADDRESS_SANITIZER_USE_AFTER_SCOPE"; 2397 | Type = Boolean; 2398 | DefaultValue = NO; 2399 | CommandLineArgs = { 2400 | YES = ( 2401 | "-fsanitize-address-use-after-scope", 2402 | ); 2403 | NO = (); 2404 | }; 2405 | Condition = "$(CLANG_ADDRESS_SANITIZER) == YES"; 2406 | // Not visible in the build settings editor 2407 | }, 2408 | 2409 | // Undefined Behavior Sanitizer options. 2410 | { 2411 | Name = "CLANG_UNDEFINED_BEHAVIOR_SANITIZER"; 2412 | Type = Boolean; 2413 | DefaultValue = "$(ENABLE_UNDEFINED_BEHAVIOR_SANITIZER)"; 2414 | CommandLineArgs = { 2415 | YES = ( 2416 | "-fsanitize=undefined", 2417 | "-fno-sanitize=enum,return,float-divide-by-zero" 2418 | ); 2419 | NO = (); 2420 | }; 2421 | AdditionalLinkerArgs = { 2422 | YES = ( 2423 | "-fsanitize=undefined", 2424 | ); 2425 | NO = (); 2426 | }; 2427 | // Not visible in the build settings editor 2428 | }, 2429 | { 2430 | Name = "CLANG_UNDEFINED_BEHAVIOR_SANITIZER_INTEGER"; 2431 | Type = Boolean; 2432 | Category = UBSANPolicy; 2433 | DefaultValue = NO; 2434 | CommandLineArgs = { 2435 | YES = ( 2436 | "-fsanitize=integer" 2437 | ); 2438 | NO = (); 2439 | }; 2440 | Condition = "$(CLANG_UNDEFINED_BEHAVIOR_SANITIZER) == YES"; 2441 | }, 2442 | { 2443 | Name = "CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY"; 2444 | Type = Boolean; 2445 | Category = UBSANPolicy; 2446 | DefaultValue = NO; 2447 | CommandLineArgs = { 2448 | YES = ( 2449 | "-fsanitize=nullability" 2450 | ); 2451 | NO = (); 2452 | }; 2453 | Condition = "$(CLANG_UNDEFINED_BEHAVIOR_SANITIZER) == YES"; 2454 | }, 2455 | 2456 | // Index-while-building options, not visible in build settings. 2457 | { 2458 | Name = "CLANG_INDEX_STORE_PATH"; 2459 | Type = Path; 2460 | DefaultValue = "$(INDEX_DATA_STORE_DIR)"; 2461 | }, 2462 | { 2463 | Name = "CLANG_INDEX_STORE_ENABLE"; 2464 | Type = Boolean; 2465 | DefaultValue = "$(INDEX_ENABLE_DATA_STORE)"; 2466 | Condition = "$(COMPILER_INDEX_STORE_ENABLE) == YES || ( $(COMPILER_INDEX_STORE_ENABLE) == Default && $(GCC_OPTIMIZATION_LEVEL) == 0 )"; 2467 | CommandLineArgs = { 2468 | YES = ( 2469 | "-index-store-path", 2470 | "$(CLANG_INDEX_STORE_PATH)", 2471 | ); 2472 | NO = (); 2473 | }; 2474 | }, 2475 | 2476 | // Thread Sanitizer options. 2477 | { 2478 | Name = "CLANG_THREAD_SANITIZER"; 2479 | Type = Boolean; 2480 | DefaultValue = "$(ENABLE_THREAD_SANITIZER)"; 2481 | Architectures = ( 2482 | x86_64, 2483 | arm64, 2484 | ); 2485 | CommandLineArgs = { 2486 | YES = ( 2487 | "-fsanitize=thread", 2488 | ); 2489 | NO = (); 2490 | }; 2491 | // Not visible in the build settings editor 2492 | }, 2493 | 2494 | // These 4 settings are used by Xcode's migration tool. 2495 | // They should not be removed. 2496 | // They do not show up in the user visible build settings. 2497 | { 2498 | Name = "CLANG_ARC_MIGRATE_PRECHECK"; 2499 | Type = Enumeration; 2500 | Values = ( 2501 | donothing, 2502 | precheck, 2503 | ); 2504 | DefaultValue = donothing; 2505 | CommandLineArgs = { 2506 | donothing = (); 2507 | precheck = ( 2508 | "-ccc-arcmt-check", 2509 | ); 2510 | }; 2511 | }, 2512 | { 2513 | Name = "CLANG_ARC_MIGRATE_DIR"; 2514 | Type = Path; 2515 | CommandLineFlag = "-ccc-arcmt-migrate"; 2516 | // Category is hidden. 2517 | }, 2518 | { 2519 | Name = "CLANG_OBJC_MIGRATE_DIR"; 2520 | Type = Path; 2521 | CommandLineFlag = "-ccc-objcmt-migrate"; 2522 | }, 2523 | { 2524 | Name = "CLANG_ARC_MIGRATE_EMIT_ERROR"; 2525 | Type = Boolean; 2526 | DefaultValue = NO; 2527 | CommandLineArgs = { 2528 | YES = ( 2529 | "-arcmt-migrate-emit-errors", 2530 | ); 2531 | NO = (); 2532 | }; 2533 | // Category is hidden. 2534 | }, 2535 | { 2536 | Name = "CLANG_ARC_MIGRATE_REPORT_OUTPUT"; 2537 | Type = Path; 2538 | CommandLineFlag = "-arcmt-migrate-report-output"; 2539 | // Category is hidden. 2540 | }, 2541 | ); 2542 | }, 2543 | { 2544 | Identifier = "com.apple.compilers.llvm.clang.1_0.compiler"; 2545 | Type = Compiler; 2546 | BasedOn = "com.apple.compilers.llvm.clang.1_0"; 2547 | Name = "Apple LLVM 9.0"; 2548 | Description = "Obfuscator 4.0 compiler"; 2549 | IsAbstract = YES; 2550 | ShowInCompilerSelectionPopup = NO; 2551 | Architectures = ( 2552 | i386, 2553 | "x86_64", 2554 | armv6, 2555 | armv7, 2556 | arm64, 2557 | armv7k 2558 | ); 2559 | "OptionConditionFlavors" = ( 2560 | arch, 2561 | sdk, 2562 | ); 2563 | FallbackTools = ( 2564 | "com.apple.compilers.llvmgcc42", 2565 | ); 2566 | ExecCPlusPlusLinkerPath = "clang++"; 2567 | SupportsGeneratePreprocessedFile = YES; 2568 | SupportsGenerateAssemblyFile = YES; 2569 | CommandResultsPostprocessor = "XCClangResultsPostprocessor"; 2570 | DependencyInfoFile = "$(OutputDir)/$(OutputFileBase).d"; 2571 | DependencyInfoArgs = ("-MMD", "-MT", "dependencies", "-MF", "$(DependencyInfoFile)"); 2572 | }, 2573 | { 2574 | Identifier = "com.apple.compilers.llvm.clang.1_0.analyzer"; 2575 | Type = Compiler; 2576 | BasedOn = "com.apple.compilers.llvm.clang.1_0"; 2577 | Name = "Static Analyzer"; 2578 | Description = "Apple Clang Static Analyzer"; 2579 | Architectures = ( 2580 | i386, 2581 | "x86_64", 2582 | armv6, 2583 | armv7, 2584 | arm64, 2585 | armv7k 2586 | ); 2587 | // This is a workaround so that the analyzer ALWAYS uses the clang in the default toolchain. 2588 | ExecPath = "$(CLANG_ANALYZER_EXEC)"; 2589 | RuleName = "Analyze$(CLANG_STATIC_ANALYZER_MODE_ACTION_$(CLANG_STATIC_ANALYZER_MODE)) $(InputFile)"; 2590 | ExecDescription = "Analyze$(StaticAnalyzerModeNameDescription) $(InputFile)"; 2591 | ProgressDescription = "Analyzing$(StaticAnalyzerModeNameDescription) $(CommandProgressByType) source files"; 2592 | OutputDir = "$(CLANG_ANALYZER_OUTPUT_DIR)/StaticAnalyzer/$(PROJECT_NAME)/$(TARGET_NAME)/$(CURRENT_VARIANT)/$(CURRENT_ARCH)"; 2593 | OutputFileExtension = plist; 2594 | OutputsAreProducts = YES; 2595 | IsAbstract = YES; 2596 | ShowInCompilerSelectionPopup = NO; 2597 | ShowOnlySelfDefinedProperties = YES; 2598 | SupportsAnalyzeFile = YES; 2599 | CommandOutputParser = ( 2600 | ("^([^:]*):([0-9]*):[0-9]*: [^:]*error: (.*)$", "emit-analyzer-warning"), 2601 | ("^([^:]*):() [^:]*error: (.*)$", "emit-analyzer-warning"), 2602 | ("^()()error: (.*)$", "emit-analyzer-warning"), 2603 | ); 2604 | CommandResultsPostprocessor = "XCStaticAnalyzerResultsPostprocessor"; 2605 | DependencyInfoFile = "$(OutputDir)/$(OutputFileBase).d"; 2606 | DependencyInfoArgs = ("-MMD", "-MT", "dependencies", "-MF", "$(DependencyInfoFile)"); 2607 | SourceFileOption = "--analyze"; 2608 | FileTypes = ( 2609 | "sourcecode.c.c", 2610 | "sourcecode.c.objc", 2611 | "sourcecode.cpp.cpp", 2612 | "sourcecode.cpp.objcpp", 2613 | ); 2614 | Options = ( 2615 | { 2616 | Name = CLANG_ANALYZER_EXEC; 2617 | Type = Path; 2618 | DefaultValue = "clang"; 2619 | }, 2620 | // Disable the index-while-building flag for the analyzer build. 2621 | { 2622 | Name = "CLANG_INDEX_STORE_ENABLE"; 2623 | Type = Boolean; 2624 | CommandLineArgs = (); 2625 | }, 2626 | { 2627 | Name = CLANG_ANALYZER_DEFINES; 2628 | Type = String; 2629 | DefaultValue = "-D__clang_analyzer__"; 2630 | CommandLineArgs = ("$(value)"); 2631 | // Category is hidden. 2632 | }, 2633 | { 2634 | Name = CLANG_ANALYZER_OUTPUT_DIR; 2635 | Type = Path; 2636 | DefaultValue = "$(TEMP_DIR)"; 2637 | }, 2638 | { 2639 | Name = "CLANG_ANALYZER_OUTPUT"; 2640 | Type = Enumeration; 2641 | Values = ( 2642 | default, 2643 | "plist-multi-file", 2644 | ); 2645 | DefaultValue = "plist-multi-file"; 2646 | CommandLineArgs = { 2647 | default = (); 2648 | "<>" = ( "-Xclang", "-analyzer-output=$(value)", ); 2649 | }; 2650 | // Category is hidden. 2651 | }, 2652 | { 2653 | Name = "CLANG_ANALYZER_ALTERNATE_EDGES"; 2654 | Type = Boolean; 2655 | DefaultValue = YES; 2656 | CommandLineArgs = { 2657 | NO = ( "-Xclang", "-analyzer-config", "-Xclang", "path-diagnostics-alternate=false", ); 2658 | YES = ( "-Xclang", "-analyzer-config", "-Xclang", "path-diagnostics-alternate=true", ); 2659 | }; 2660 | // Category is hidden. 2661 | }, 2662 | { 2663 | Name = "CLANG_ANALYZER_REPORT_MAIN_SOURCE_FILE"; 2664 | Type = Boolean; 2665 | DefaultValue = YES; 2666 | CommandLineArgs = { 2667 | NO = (); 2668 | YES = ( "-Xclang", "-analyzer-config", "-Xclang", "report-in-main-source-file=true", ); 2669 | }; 2670 | // Category is hidden. 2671 | }, 2672 | { Name = RUN_CLANG_STATIC_ANALYZER; 2673 | Type = Boolean; 2674 | DefaultValue = NO; 2675 | Category = "SAPolicy"; 2676 | }, 2677 | // This entry exists for string expansion in 'RuleName'. 2678 | { 2679 | Name = CLANG_STATIC_ANALYZER_MODE_ACTION_shallow; 2680 | Type = String; 2681 | DefaultValue = "Shallow"; 2682 | }, 2683 | // This entry exists for string expansion in 'RuleName'. 2684 | { 2685 | Name = CLANG_STATIC_ANALYZER_MODE_ACTION_deep; 2686 | Type = String; 2687 | DefaultValue = ""; 2688 | }, 2689 | { 2690 | Name = CLANG_STATIC_ANALYZER_MODE; 2691 | Type = Enumeration; 2692 | Values = ( 2693 | shallow, 2694 | deep 2695 | ); 2696 | DefaultValue = shallow; 2697 | CommandLineArgs = { 2698 | shallow = ( 2699 | "-Xclang", 2700 | "-analyzer-config", 2701 | "-Xclang", 2702 | "mode=shallow", 2703 | ); 2704 | deep = (); 2705 | }; 2706 | AppearsAfter = RUN_CLANG_STATIC_ANALYZER; 2707 | Category = SAPolicy; 2708 | }, 2709 | { 2710 | Name = CLANG_STATIC_ANALYZER_MODE_ON_ANALYZE_ACTION; 2711 | Type = Enumeration; 2712 | Values = ( 2713 | shallow, 2714 | deep, 2715 | ); 2716 | DefaultValue = deep; 2717 | AppearsAfter = CLANG_STATIC_ANALYZER_MODE; 2718 | Category = SAPolicy; 2719 | }, 2720 | { 2721 | Name = "CLANG_ANALYZER_DEADCODE_DEADSTORES"; 2722 | Type = Boolean; 2723 | DefaultValue = YES; 2724 | CommandLineArgs = { 2725 | YES = (); 2726 | NO = ( 2727 | "-Xclang", "-analyzer-disable-checker", 2728 | "-Xclang", "deadcode.DeadStores" 2729 | ); 2730 | }; 2731 | Category = SACheckers; 2732 | }, 2733 | { 2734 | Name = "CLANG_ANALYZER_OBJC_COLLECTIONS"; 2735 | Type = Boolean; 2736 | DefaultValue = YES; 2737 | CommandLineArgs = { 2738 | YES = (); 2739 | NO = ( 2740 | "-Xclang", "-analyzer-disable-checker", 2741 | "-Xclang", "osx.coreFoundation.containers.PointerSizedValues", 2742 | "-Xclang", "-analyzer-disable-checker", 2743 | "-Xclang", "osx.cocoa.VariadicMethodTypes", 2744 | "-Xclang", "-analyzer-disable-checker", 2745 | "-Xclang", "osx.cocoa.NilArg", 2746 | ); 2747 | }; 2748 | Category = SAAppleAPICheckers; 2749 | }, 2750 | { 2751 | Name = "CLANG_ANALYZER_OBJC_NSCFERROR"; 2752 | Type = Boolean; 2753 | DefaultValue = YES; 2754 | CommandLineArgs = { 2755 | YES = (); 2756 | NO = ( 2757 | "-Xclang", "-analyzer-disable-checker", 2758 | "-Xclang", "osx.coreFoundation.CFError", 2759 | "-Xclang", "-analyzer-disable-checker", 2760 | "-Xclang", "osx.cocoa.NSError" 2761 | ); 2762 | }; 2763 | Category = SAAppleAPICheckers; 2764 | }, 2765 | { 2766 | Name = "CLANG_ANALYZER_OBJC_INCOMP_METHOD_TYPES"; 2767 | Type = Boolean; 2768 | DefaultValue = YES; 2769 | CommandLineArgs = { 2770 | YES = (); 2771 | NO = ( 2772 | "-Xclang", "-analyzer-disable-checker", 2773 | "-Xclang", "osx.cocoa.IncompatibleMethodTypes" 2774 | ); 2775 | }; 2776 | Category = SAObjCCheckers; 2777 | }, 2778 | { 2779 | Name = "CLANG_ANALYZER_OBJC_UNUSED_IVARS"; 2780 | Type = Boolean; 2781 | DefaultValue = YES; 2782 | CommandLineArgs = { 2783 | YES = (); 2784 | NO = ( 2785 | "-Xclang", "-analyzer-disable-checker", 2786 | "-Xclang", "osx.cocoa.UnusedIvars" 2787 | ); 2788 | }; 2789 | Category = SAObjCCheckers; 2790 | }, 2791 | { 2792 | Name = "CLANG_ANALYZER_OBJC_GENERICS"; 2793 | Type = Boolean; 2794 | DefaultValue = YES; 2795 | CommandLineArgs = { 2796 | YES = (); 2797 | NO = ( 2798 | "-Xclang", "-analyzer-disable-checker", 2799 | "-Xclang", "osx.cocoa.ObjCGenerics" 2800 | ); 2801 | }; 2802 | Category = SAObjCCheckers; 2803 | }, 2804 | { 2805 | Name = "CLANG_ANALYZER_MALLOC"; 2806 | Type = Boolean; 2807 | DefaultValue = YES; 2808 | // Hidden. 2809 | }, 2810 | { 2811 | Name = "CLANG_ANALYZER_MEMORY_MANAGEMENT"; 2812 | Type = Boolean; 2813 | // Inherit CLANG_ANALYZER_MALLOC, which was the old name. 2814 | DefaultValue = "$(CLANG_ANALYZER_MALLOC)"; 2815 | CommandLineArgs = { 2816 | YES = (); 2817 | NO = ( 2818 | "-Xclang", "-analyzer-disable-checker", 2819 | "-Xclang", "unix.Malloc", 2820 | "-Xclang", "-analyzer-disable-checker", 2821 | "-Xclang", "unix.MallocSizeof", 2822 | "-Xclang", "-analyzer-disable-checker", 2823 | "-Xclang", "unix.MismatchedDeallocator", 2824 | "-Xclang", "-analyzer-disable-checker", 2825 | "-Xclang", "cplusplus.NewDelete" 2826 | ); 2827 | }; 2828 | Category = SACheckers; 2829 | }, 2830 | { 2831 | Name = "CLANG_ANALYZER_OBJC_RETAIN_COUNT"; 2832 | Type = Boolean; 2833 | DefaultValue = YES; 2834 | CommandLineArgs = { 2835 | YES = (); 2836 | NO = ( 2837 | "-Xclang", "-analyzer-disable-checker", 2838 | "-Xclang", "osx.cocoa.RetainCount", 2839 | "-Xclang", "-analyzer-disable-checker", 2840 | "-Xclang", "osx.cocoa.ClassRelease" 2841 | ); 2842 | }; 2843 | Category = SAObjCCheckers; 2844 | }, 2845 | { 2846 | Name = "CLANG_ANALYZER_OBJC_ATSYNC"; 2847 | Type = Boolean; 2848 | DefaultValue = YES; 2849 | CommandLineArgs = { 2850 | YES = (); 2851 | NO = ( 2852 | "-Xclang", "-analyzer-disable-checker", 2853 | "-Xclang", "osx.cocoa.AtSync" 2854 | ); 2855 | }; 2856 | Category = SAObjCCheckers; 2857 | }, 2858 | { 2859 | Name = "CLANG_ANALYZER_OBJC_DEALLOC"; 2860 | Type = Boolean; 2861 | DefaultValue = YES; 2862 | CommandLineArgs = { 2863 | YES = (); 2864 | NO = ( 2865 | "-Xclang", "-analyzer-disable-checker", 2866 | "-Xclang", "osx.cocoa.Dealloc" 2867 | ); 2868 | }; 2869 | Category = SAObjCCheckers; 2870 | }, 2871 | { 2872 | Name = "CLANG_ANALYZER_GCD"; 2873 | Type = Boolean; 2874 | DefaultValue = YES; 2875 | CommandLineArgs = { 2876 | YES = (); 2877 | NO = ( 2878 | "-Xclang", "-analyzer-disable-checker", 2879 | "-Xclang", "osx.API" 2880 | ); 2881 | }; 2882 | Category = SAAppleAPICheckers; 2883 | }, 2884 | { 2885 | Name = "CLANG_ANALYZER_NONNULL"; 2886 | Type = Enumeration; 2887 | DefaultValue = YES_NONAGGRESSIVE; 2888 | Values = ( 2889 | YES, 2890 | YES_NONAGGRESSIVE, 2891 | NO 2892 | ); 2893 | CommandLineArgs = { 2894 | YES = (); 2895 | YES_NONAGGRESSIVE = ( 2896 | "-Xclang", "-analyzer-config", 2897 | "-Xclang", "nullability:NoDiagnoseCallsToSystemHeaders=true" 2898 | ); 2899 | NO = ( 2900 | "-Xclang", "-analyzer-disable-checker", 2901 | "-Xclang", "nullability" 2902 | ); 2903 | }; 2904 | Category = SACheckers; 2905 | }, 2906 | { 2907 | Name = "CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION"; 2908 | Type = Enumeration; 2909 | DefaultValue = YES; 2910 | Values = ( 2911 | YES_AGGRESSIVE, 2912 | YES, 2913 | NO 2914 | ); 2915 | CommandLineArgs = { 2916 | YES_AGGRESSIVE = ( 2917 | "-Xclang", "-analyzer-config", 2918 | "-Xclang", "osx.NumberObjectConversion:Pedantic=true" 2919 | ); 2920 | YES = (); 2921 | NO = ( 2922 | "-Xclang", "-analyzer-disable-checker", 2923 | "-Xclang", "osx.NumberObjectConversion" 2924 | ); 2925 | }; 2926 | SupportedVersionRanges = ( "802.0.0" ); 2927 | Category = SAAppleAPICheckers; 2928 | }, 2929 | { 2930 | Name = "CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED"; 2931 | Type = Enumeration; 2932 | DefaultValue = NO; 2933 | Values = ( 2934 | YES, 2935 | NO 2936 | ); 2937 | CommandLineArgs = { 2938 | YES = ( 2939 | "-Xclang", "-analyzer-checker", 2940 | "-Xclang", "optin.osx.cocoa.localizability.NonLocalizedStringChecker" 2941 | ); 2942 | NO = (); 2943 | }; 2944 | Category = SAAppleAPICheckers; 2945 | }, 2946 | { 2947 | Name = "CLANG_ANALYZER_LOCALIZABILITY_EMPTY_CONTEXT"; 2948 | Type = Enumeration; 2949 | DefaultValue = NO; 2950 | Values = ( 2951 | YES, 2952 | NO 2953 | ); 2954 | CommandLineArgs = { 2955 | YES = ( 2956 | "-Xclang", "-analyzer-checker", 2957 | "-Xclang", "optin.osx.cocoa.localizability.EmptyLocalizationContextChecker" 2958 | ); 2959 | NO = (); 2960 | }; 2961 | Category = SAAppleAPICheckers; 2962 | }, 2963 | { 2964 | Name = "CLANG_ANALYZER_OBJC_SELF_INIT"; 2965 | Type = Boolean; 2966 | DefaultValue = YES; 2967 | CommandLineArgs = { 2968 | YES = (); 2969 | NO = ( "-Xclang", "-analyzer-disable-checker", 2970 | "-Xclang", "osx.cocoa.SelfInit" ); 2971 | }; 2972 | FileTypes = ( 2973 | "sourcecode.c.objc", 2974 | "sourcecode.cpp.objcpp", 2975 | ); 2976 | Category = SAObjCCheckers; 2977 | }, 2978 | { 2979 | Name = "CLANG_ANALYZER_SECURITY_KEYCHAIN_API"; 2980 | Type = Boolean; 2981 | DefaultValue = YES; 2982 | CommandLineArgs = { 2983 | YES = (); 2984 | NO = ( "-Xclang", "-analyzer-disable-checker", 2985 | "-Xclang", "osx.SecKeychainAPI" ); 2986 | }; 2987 | FileTypes = ( 2988 | "sourcecode.c.objc", 2989 | "sourcecode.cpp.objcpp", 2990 | ); 2991 | Category = SASecurityCheckers; 2992 | }, 2993 | { 2994 | Name = "CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER"; 2995 | Type = Boolean; 2996 | DefaultValue = NO; 2997 | CommandLineArgs = { 2998 | YES = ( "-Xclang", "-analyzer-checker", 2999 | "-Xclang", "security.FloatLoopCounter" ); 3000 | NO = (); 3001 | }; 3002 | Category = SASecurityCheckers; 3003 | }, 3004 | { 3005 | Name = "CLANG_ANALYZER_SECURITY_INSECUREAPI_UNCHECKEDRETURN"; 3006 | Type = Boolean; 3007 | DefaultValue = YES; 3008 | CommandLineArgs = { 3009 | YES = ( "-Xclang", "-analyzer-checker", 3010 | "-Xclang", "security.insecureAPI.UncheckedReturn" ); 3011 | NO = ( "-Xclang", "-analyzer-disable-checker", 3012 | "-Xclang", "security.insecureAPI.UncheckedReturn" ); 3013 | }; 3014 | Category = SASecurityCheckers; 3015 | }, 3016 | { 3017 | Name = "CLANG_ANALYZER_SECURITY_INSECUREAPI_GETPW_GETS"; 3018 | Type = Boolean; 3019 | DefaultValue = YES; 3020 | CommandLineArgs = { 3021 | YES = ( "-Xclang", "-analyzer-checker", 3022 | "-Xclang", "security.insecureAPI.getpw", 3023 | "-Xclang", "-analyzer-checker", 3024 | "-Xclang", "security.insecureAPI.gets" ); 3025 | NO = ( "-Xclang", "-analyzer-disable-checker", 3026 | "-Xclang", "security.insecureAPI.getpw", 3027 | "-Xclang", "-analyzer-disable-checker", 3028 | "-Xclang", "security.insecureAPI.gets" ); 3029 | }; 3030 | Category = SASecurityCheckers; 3031 | }, 3032 | { 3033 | Name = "CLANG_ANALYZER_SECURITY_INSECUREAPI_MKSTEMP"; 3034 | Type = Boolean; 3035 | DefaultValue = YES; 3036 | CommandLineArgs = { 3037 | YES = ( "-Xclang", "-analyzer-checker", 3038 | "-Xclang", "security.insecureAPI.mkstemp", 3039 | "-Xclang", "-analyzer-checker", 3040 | "-Xclang", "security.insecureAPI.mktemp" ); 3041 | NO = ( "-Xclang", "-analyzer-disable-checker", 3042 | "-Xclang", "security.insecureAPI.mkstemp", 3043 | "-Xclang", "-analyzer-disable-checker", 3044 | "-Xclang", "security.insecureAPI.mktemp" ); 3045 | }; 3046 | Category = SASecurityCheckers; 3047 | }, 3048 | { 3049 | Name = "CLANG_ANALYZER_SECURITY_INSECUREAPI_RAND"; 3050 | Type = Boolean; 3051 | DefaultValue = NO; 3052 | CommandLineArgs = { 3053 | YES = ( "-Xclang", "-analyzer-checker", 3054 | "-Xclang", "security.insecureAPI.rand" ); 3055 | NO = ( "-Xclang", "-analyzer-disable-checker", 3056 | "-Xclang", "security.insecureAPI.rand" ); 3057 | }; 3058 | Category = SASecurityCheckers; 3059 | }, 3060 | { 3061 | Name = "CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY"; 3062 | Type = Boolean; 3063 | DefaultValue = NO; 3064 | CommandLineArgs = { 3065 | YES = ( "-Xclang", "-analyzer-checker", 3066 | "-Xclang", "security.insecureAPI.strcpy" ); 3067 | NO = ( "-Xclang", "-analyzer-disable-checker", 3068 | "-Xclang", "security.insecureAPI.strcpy" ); 3069 | }; 3070 | Category = SASecurityCheckers; 3071 | }, 3072 | { 3073 | Name = "CLANG_ANALYZER_SECURITY_INSECUREAPI_VFORK"; 3074 | Type = Boolean; 3075 | DefaultValue = YES; 3076 | CommandLineArgs = { 3077 | YES = ( "-Xclang", "-analyzer-checker", 3078 | "-Xclang", "security.insecureAPI.vfork" ); 3079 | NO = ( "-Xclang", "-analyzer-disable-checker", 3080 | "-Xclang", "security.insecureAPI.vfork" ); 3081 | }; 3082 | Category = SASecurityCheckers; 3083 | }, 3084 | { 3085 | Name = "CLANG_ANALYZER_SECURITY_BUFFER_OVERFLOW_EXPERIMENTAL"; 3086 | Type = Boolean; 3087 | DefaultValue = NO; 3088 | CommandLineArgs = { 3089 | YES = ( 3090 | "-Xclang", "-analyzer-checker", 3091 | "-Xclang", "core.experimental.Overflow", 3092 | "-Xclang", "-analyzer-checker", 3093 | "-Xclang", "security.experimental.ArrayBoundV2", 3094 | "-Xclang", "-analyzer-max-loop", 3095 | "-Xclang", "100" 3096 | ); 3097 | NO = (); 3098 | }; 3099 | // Category is hidden. 3100 | }, 3101 | // This is intentionally the second to last option so that the build 3102 | // system places its arguments last on the command line. 3103 | { 3104 | Name = "CLANG_ANALYZER_OTHER_CHECKERS"; 3105 | Type = StringList; 3106 | FileTypes = ( 3107 | "sourcecode.c.c", 3108 | "sourcecode.c.objc", 3109 | "sourcecode.cpp.cpp", 3110 | "sourcecode.cpp.objcpp", 3111 | ); 3112 | CommandLineArgs = ( 3113 | "-Xclang", "-analyzer-checker", "-Xclang", "$(value)", 3114 | ); 3115 | }, 3116 | // This is intentionally the last option so that the build 3117 | // system places its arguments last on the command line. 3118 | { 3119 | Name = "CLANG_ANALYZER_OTHER_FLAGS"; 3120 | Type = StringList; 3121 | FileTypes = ( 3122 | "sourcecode.c.c", 3123 | "sourcecode.c.objc", 3124 | "sourcecode.cpp.cpp", 3125 | "sourcecode.cpp.objcpp", 3126 | ); 3127 | CommandLineArgs = ( 3128 | "-Xclang", "$(value)", 3129 | ); 3130 | }, 3131 | ); 3132 | }, 3133 | { 3134 | Identifier = "com.apple.compilers.llvm.clang.1_0.migrator"; 3135 | Type = Compiler; 3136 | BasedOn = "com.apple.compilers.llvm.clang.1_0"; 3137 | Name = "ObjC Migrator"; 3138 | Description = "Apple Clang ObjC Migrator"; 3139 | Architectures = ( 3140 | i386, 3141 | "x86_64", 3142 | armv6, 3143 | armv7, 3144 | ); 3145 | ExecPath = "$(CLANG)"; 3146 | OutputDir = "$(TEMP_DIR)/Migrator"; 3147 | OutputFileExtension = remap; 3148 | OutputsAreProducts = YES; 3149 | IsAbstract = YES; 3150 | CommandResultsPostprocessor = "XCClangResultsPostprocessor"; 3151 | "ShowInCompilerSelectionPopup" = NO; 3152 | "ShowOnlySelfDefinedProperties" = YES; 3153 | SourceFileOption = "--migrate"; 3154 | FileTypes = ( 3155 | "sourcecode.c.objc", 3156 | "sourcecode.cpp.objcpp", 3157 | ); 3158 | Options = ( 3159 | { 3160 | Name = CLANG; 3161 | Type = Path; 3162 | DefaultValue = clang; 3163 | }, 3164 | // Disable the index-while-building flag for the migrator build. 3165 | { 3166 | Name = "CLANG_INDEX_STORE_ENABLE"; 3167 | Type = Boolean; 3168 | CommandLineArgs = (); 3169 | }, 3170 | { 3171 | Name = "CLANG_MIGRATOR_READWRITE_PROPERTY"; 3172 | DisplayName = "Infer readwrite properties"; 3173 | Description = "Infer readwrite properties from a getter and setter method."; 3174 | Type = Boolean; 3175 | DefaultValue = YES; 3176 | CommandLineArgs = { 3177 | YES = ( "-objcmt-migrate-readwrite-property" ); 3178 | NO = (); 3179 | }; 3180 | Category = "Modernizer"; 3181 | }, 3182 | { 3183 | Name = "CLANG_MIGRATOR_READONLY_PROPERTY"; 3184 | DisplayName = "Infer readonly properties"; 3185 | Description = "Infer readonly properties from getter methods."; 3186 | Type = Boolean; 3187 | DefaultValue = YES; 3188 | CommandLineArgs = { 3189 | YES = ( "-objcmt-migrate-readonly-property" ); 3190 | NO = (); 3191 | }; 3192 | Category = "Modernizer"; 3193 | }, 3194 | { 3195 | Name = "CLANG_MIGRATOR_ANNOTATIONS"; 3196 | DisplayName = "Add attribute annotations"; 3197 | Description = "Add attribute annotations to properties and methods."; 3198 | Type = Boolean; 3199 | DefaultValue = YES; 3200 | CommandLineArgs = { 3201 | YES = ( "-objcmt-migrate-annotation" ); 3202 | NO = (); 3203 | }; 3204 | Category = "Modernizer"; 3205 | }, 3206 | { 3207 | Name = "CLANG_MIGRATOR_INSTANCE_TYPE"; 3208 | DisplayName = "Infer instancetype for method result type"; 3209 | Description = "Infer `instancetype` for method result type instead of `id`."; 3210 | Type = Boolean; 3211 | DefaultValue = YES; 3212 | CommandLineArgs = { 3213 | YES = ( "-objcmt-migrate-instancetype" ); 3214 | NO = (); 3215 | }; 3216 | Category = "Modernizer"; 3217 | }, 3218 | { 3219 | Name = "CLANG_MIGRATOR_NSENUM_MACROS"; 3220 | DisplayName = "Use NS_ENUM/NS_OPTIONS macros"; 3221 | Description = "Use `NS_ENUM`/`NS_OPTIONS` macros for enumerators."; 3222 | Type = Boolean; 3223 | DefaultValue = YES; 3224 | CommandLineArgs = { 3225 | YES = ( "-objcmt-migrate-ns-macros" ); 3226 | NO = (); 3227 | }; 3228 | Category = "Modernizer"; 3229 | }, 3230 | { 3231 | Name = "CLANG_MIGRATOR_PROTOCOL_CONFORMANCE"; 3232 | DisplayName = "Infer protocol conformance"; 3233 | Description = "Infer protocol conformance from the interface methods."; 3234 | Type = Boolean; 3235 | DefaultValue = NO; 3236 | CommandLineArgs = { 3237 | YES = ( "-objcmt-migrate-protocol-conformance" ); 3238 | NO = (); 3239 | }; 3240 | Category = "Modernizer"; 3241 | }, 3242 | { 3243 | Name = "CLANG_MIGRATOR_PROPERTY_ATOMICITY"; 3244 | DisplayName = "Atomicity of inferred properties"; 3245 | Description = "Choose the atomicity of the inferred properties."; 3246 | Type = Enumeration; 3247 | Values = ( 3248 | nonatomic, 3249 | atomic, 3250 | NS_NONATOMIC_IOSONLY, 3251 | ); 3252 | DefaultValue = NS_NONATOMIC_IOSONLY; 3253 | CommandLineArgs = { 3254 | nonatomic = (); 3255 | atomic = ( "-objcmt-atomic-property" ); 3256 | NS_NONATOMIC_IOSONLY = ( "-objcmt-ns-nonatomic-iosonly" ); 3257 | }; 3258 | Category = "Modernizer"; 3259 | }, 3260 | { 3261 | Name = "CLANG_MIGRATOR_PUBLIC_HEADERS_ONLY"; 3262 | DisplayName = "Only modify public headers"; 3263 | Description = "Only modify public headers of a target."; 3264 | Type = Boolean; 3265 | DefaultValue = YES; 3266 | CommandLineArgs = { 3267 | YES = ( "-objcmt-white-list-dir-path=$(TARGET_BUILD_DIR)/$(PUBLIC_HEADERS_FOLDER_PATH)" ); 3268 | NO = (); 3269 | }; 3270 | Category = "Modernizer"; 3271 | }, 3272 | { 3273 | Name = "CLANG_MIGRATOR_OBJC_LITERALS"; 3274 | DisplayName = "ObjC literals"; 3275 | Description = "Enable migration to modern ObjC literals syntax."; 3276 | Type = Boolean; 3277 | DefaultValue = YES; 3278 | CommandLineArgs = { 3279 | YES = ( "-objcmt-migrate-literals", "-Qunused-arguments" ); 3280 | NO = (); 3281 | }; 3282 | Category = "Modernizer"; 3283 | }, 3284 | { 3285 | Name = "CLANG_MIGRATOR_PROPERTY_DOT_SYNTAX"; 3286 | DisplayName = "ObjC property-dot syntax"; 3287 | Description = "Enable migration of setter/getter messages to property-dot syntax."; 3288 | Type = Boolean; 3289 | DefaultValue = YES; 3290 | CommandLineArgs = { 3291 | YES = ( "-objcmt-migrate-property-dot-syntax" ); 3292 | NO = (); 3293 | }; 3294 | Category = "Modernizer"; 3295 | }, 3296 | { 3297 | Name = "CLANG_MIGRATOR_OBJC_SUBSCRIPTING"; 3298 | DisplayName = "ObjC subscripting"; 3299 | Description = "Enable migration to modern ObjC subscripting syntax."; 3300 | Type = Boolean; 3301 | DefaultValue = YES; 3302 | CommandLineArgs = { 3303 | YES = ( "-objcmt-migrate-subscripting", "-Qunused-arguments" ); 3304 | NO = (); 3305 | }; 3306 | Category = "Modernizer"; 3307 | }, 3308 | { 3309 | Name = "CLANG_MIGRATOR_OBJC_DESIGNATED_INIT"; 3310 | DisplayName = "Infer designated initializer methods"; 3311 | Description = "Infer `NS_DESIGNATED_INITIALIZER` for designated initializer methods."; 3312 | Type = Boolean; 3313 | DefaultValue = YES; 3314 | CommandLineArgs = { 3315 | YES = ( "-objcmt-migrate-designated-init", "-Qunused-arguments" ); 3316 | NO = (); 3317 | }; 3318 | Category = "Modernizer"; 3319 | }, 3320 | ); 3321 | }, 3322 | { 3323 | Identifier = "com.apple.compilers.llvm.clang.1_0.migrator.xctest"; 3324 | Type = Compiler; 3325 | BasedOn = "com.apple.compilers.llvm.clang.1_0"; 3326 | Name = "XCTest Migrator"; 3327 | Description = "Apple Clang XCTest Migrator"; 3328 | Architectures = ( 3329 | i386, 3330 | "x86_64", 3331 | armv6, 3332 | armv7, 3333 | ); 3334 | ExecPath = "$(CLANG)"; 3335 | OutputDir = "$(TEMP_DIR)/Migrator"; 3336 | OutputFileExtension = remap; 3337 | OutputsAreProducts = YES; 3338 | IsAbstract = YES; 3339 | CommandResultsPostprocessor = "XCClangResultsPostprocessor"; 3340 | "ShowInCompilerSelectionPopup" = NO; 3341 | "ShowOnlySelfDefinedProperties" = YES; 3342 | SourceFileOption = "--migrate-xct"; 3343 | FileTypes = ( 3344 | "sourcecode.c.objc", 3345 | "sourcecode.cpp.objcpp", 3346 | ); 3347 | Options = ( 3348 | { 3349 | Name = CLANG; 3350 | Type = Path; 3351 | DefaultValue = clang; 3352 | }, 3353 | // Disable the index-while-building flag for the migrator build. 3354 | { 3355 | Name = "CLANG_INDEX_STORE_ENABLE"; 3356 | Type = Boolean; 3357 | CommandLineArgs = (); 3358 | }, 3359 | ); 3360 | }, 3361 | { 3362 | Identifier = "com.apple.compilers.llvm.clang.1_0.astbuilder"; 3363 | Type = Compiler; 3364 | BasedOn = "com.apple.compilers.llvm.clang.1_0"; 3365 | Name = "AST Builder"; 3366 | Description = "Apple Clang AST Builder 9.0"; 3367 | FileTypes = ( 3368 | "sourcecode.c.c", 3369 | "sourcecode.c.objc", 3370 | "sourcecode.cpp.cpp", 3371 | "sourcecode.cpp.objcpp", 3372 | ); 3373 | SourceFileOption = "-fsyntax-only"; 3374 | OverridingProperties = { 3375 | "ENABLE_HEADER_DEPENDENCIES" = YES; 3376 | "SHARED_PRECOMPS_DIR" = "$(INDEX_PRECOMPS_DIR)"; 3377 | "CLEAN_PRECOMPS" = NO; 3378 | "CLANG_RETAIN_COMMENTS_FROM_SYSTEM_HEADERS" = YES; 3379 | }; 3380 | RuleName = "Build AST from $(InputFile)"; 3381 | OutputFileExtension = ast; 3382 | IsAbstract = YES; 3383 | ShowInCompilerSelectionPopup = NO; 3384 | PrunePrecompiledHeaderCache = NO; 3385 | }, 3386 | ) 3387 | -------------------------------------------------------------------------------- /Obfuscator.xcplugin/Contents/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | Resources/Clang LLVM 1.0.xcspec 8 | 9 | Ces49cxGiffR/GlX8d4BFvRRrgw= 10 | 11 | Resources/Default Compiler.xcspec 12 | 13 | 06q/PFx4DaerpAf3vgDs0+l9S9o= 14 | 15 | Resources/English.lproj/Apple LLVM 9.0.strings 16 | 17 | hash 18 | 19 | wu90IPK7CICqXnxVrmNV6p10hC8= 20 | 21 | optional 22 | 23 | 24 | Resources/English.lproj/Default Compiler.strings 25 | 26 | hash 27 | 28 | aptnqDaY3B1jtclu4RjE+SCM1Ls= 29 | 30 | optional 31 | 32 | 33 | version.plist 34 | 35 | 1viXfyesViVVXN4kBtsBmAk9o4s= 36 | 37 | 38 | files2 39 | 40 | Resources/Clang LLVM 1.0.xcspec 41 | 42 | hash2 43 | 44 | iVywY0+xRLG8/gCaPrNOQ/TX/Gbjfn3J4PYGNB5qgLg= 45 | 46 | 47 | Resources/Default Compiler.xcspec 48 | 49 | hash2 50 | 51 | g8npL2U07qDDvWvvnHr/284MYbSG5GuOdXRSWdCjFjE= 52 | 53 | 54 | Resources/English.lproj/Apple LLVM 9.0.strings 55 | 56 | hash2 57 | 58 | UON5R2fH7s0LaG6NvJroiFfUF0KWS2RwDWSZvoG2/e0= 59 | 60 | optional 61 | 62 | 63 | Resources/English.lproj/Default Compiler.strings 64 | 65 | hash2 66 | 67 | IcN1UKjJ0fmFu7+pFKVLYknPPesJFGn7TwgoBy8Nlhw= 68 | 69 | optional 70 | 71 | 72 | version.plist 73 | 74 | hash2 75 | 76 | 4uM0qUW2rj5NdNYW1Fgaiv5yYDRCchcZmWlzuLbsVk4= 77 | 78 | 79 | 80 | rules 81 | 82 | ^Resources/ 83 | 84 | ^Resources/.*\.lproj/ 85 | 86 | optional 87 | 88 | weight 89 | 1000 90 | 91 | ^Resources/.*\.lproj/locversion.plist$ 92 | 93 | omit 94 | 95 | weight 96 | 1100 97 | 98 | ^Resources/Base\.lproj/ 99 | 100 | weight 101 | 1010 102 | 103 | ^version.plist$ 104 | 105 | 106 | rules2 107 | 108 | .*\.dSYM($|/) 109 | 110 | weight 111 | 11 112 | 113 | ^(.*/)?\.DS_Store$ 114 | 115 | omit 116 | 117 | weight 118 | 2000 119 | 120 | ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ 121 | 122 | nested 123 | 124 | weight 125 | 10 126 | 127 | ^.* 128 | 129 | ^Info\.plist$ 130 | 131 | omit 132 | 133 | weight 134 | 20 135 | 136 | ^PkgInfo$ 137 | 138 | omit 139 | 140 | weight 141 | 20 142 | 143 | ^Resources/ 144 | 145 | weight 146 | 20 147 | 148 | ^Resources/.*\.lproj/ 149 | 150 | optional 151 | 152 | weight 153 | 1000 154 | 155 | ^Resources/.*\.lproj/locversion.plist$ 156 | 157 | omit 158 | 159 | weight 160 | 1100 161 | 162 | ^Resources/Base\.lproj/ 163 | 164 | weight 165 | 1010 166 | 167 | ^[^/]+$ 168 | 169 | nested 170 | 171 | weight 172 | 10 173 | 174 | ^embedded\.provisionprofile$ 175 | 176 | weight 177 | 20 178 | 179 | ^version\.plist$ 180 | 181 | weight 182 | 20 183 | 184 | 185 | 186 | 187 | -------------------------------------------------------------------------------- /Obfuscator.xcplugin/Contents/version.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildAliasOf 6 | IDEXcode3ProjectSupport 7 | BuildVersion 8 | 24 9 | CFBundleShortVersionString 10 | 11.2 11 | CFBundleVersion 12 | 13756 13 | ProjectName 14 | IDEXcode3ProjectSupport 15 | SourceVersion 16 | 13756000000000000 17 | 18 | 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | Xcode obfuscator-llvm plugin 3 | ================== 4 | 5 | 6 | 7 | > Obfuscator-LLVM is a project initiated in June 2010 by the information security group of the University of Applied Sciences and Arts Western Switzerland of Yverdon-les-Bains (HEIG-VD). 8 | 9 | >The aim of this project is to provide an open-source fork of the LLVM compilation suite able to provide increased software security through code obfuscation and tamper-proofing. As we currently mostly work at the Intermediate Representation (IR) level, our tool is compatible with all programming languages (C, C++, Objective-C, Ada and Fortran) and target platforms (x86, x86-64, PowerPC, PowerPC-64, ARM, Thumb, SPARC, Alpha, CellSPU, MIPS, MSP430, SystemZ, and XCore) currently supported by LLVM. 10 | 11 | 12 | Xcode ollvm 插件,安装前请修改下面的clang路径为你自己的ollvm clang路径。 13 | 14 | 15 | BuiltinJambaseRuleName = ProcessC; 16 | ExecPath = "/Users/obaby/Soft/obfuscator/build/bin/clang"; 17 | 18 | 修改完成后将整个Obfuscator.xcplugin 复制到 /Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins/ 目录下然后重启Xcode即可。 19 | 20 | 如果出现clang-4.0: error: cannot specify -o when generating multiple output files 21 | 22 | 禁用Enable Indexing while building即可 23 | 24 | 已知问题,xcode9.2 无法编译iOS项目。目前还没找到解决方案 25 | 26 | 更多信息: [http://www.h4ck.org.cn/2018/01/xcode-9-2-集成obfuscator-llvm/]( http://www.h4ck.org.cn/2018/01/xcode-9-2-集成obfuscator-llvm/) 27 | --------------------------------------------------------------------------------