header_paths = [
    '../CoreFoundation/src',
    '../CFNetwork/private_include',
    '../v/src',
]

defines = {
    'NSBUILDINGFOUNDATION' : 1,
    'INCLUDE_OBJC' : 1,
}

flags = [
    '-include', 'CoreFoundation_Prefix.h',

    '-Werror=all',

    '-Werror-enum-conversion',
    '-Werror-extra-semi',
    '-Werror-format-non-iso',
    '-Werror-incompatible-pointer-types',
    '-Werror-language-extension-token',
    '-Werror-method-signatures',
    '-Werror-mismatched-parameter-types',
    '-Werror-missing-declarations',
    '-Werror-missing-prototypes',
    '-Werror-non-literal-null-conversion',
    '-Werror-objc-protocol-method-implementation',
    '-Werror-pointer-arith',
    '-Werror-semicolon-before-method-body',
    '-Werror-shadow',
    '-Werror-shadow-ivar',
    '-Werror-undeclared-selector',
    '-Werror-unreachable-code',

    '-Wno-variadic-macros',
]

libs = [
    'z',
    'cxx',
    'v',
    'System',
    'icu',
    'CoreFoundation',
    'CFNetwork',
    'xml2',
]

deps = [
    'v',
    'cxx',
    'System',
    'icu',
    'xml2',
    'CoreFoundation',
    'CFNetwork',
    'Security',
]

sources = [
    'src/NSAddressCheckingResult.m',
    'src/NSAggregateExpression.m',
    'src/NSAnyKeyExpression.m',
    'src/NSArchiver.m',
    'src/NSArray.m',
    'src/NSAttributedString.m',
    'src/NSAutoreleasePool.m',
    'src/NSBOMEncoding.m',
    'src/NSBetweenPredicateOperator.m',
    'src/NSBlockExpression.m',
    'src/NSBlockPredicate.m',
    'src/NSBundle.m',
    'src/NSByteCountFormatter.m',
    'src/NSCalendar.m',
    'src/NSCoder.m',
    'src/NSComparisonPredicate.m',
    'src/NSComparisonPredicateOperator.m',
    'src/NSCompoundPredicate.m',
    'src/NSCompoundPredicateOperator.m',
    'src/NSConstantValueExpression.m',
    'src/NSCustomPredicateOperator.m',
    'src/NSData.m',
    'src/NSDataDetector.m',
    'src/NSDate.m',
    'src/NSDateCheckingResult.m',
    'src/NSDateFormatter.m',
    'src/NSDecimal.m',
    'src/NSDecimalNumber.m',
    'src/NSDictionary.m',
    'src/NSDirectoryEnumerator.m',
    'src/NSEqualityPredicateOperator.m',
    'src/NSException.m',
    'src/NSExpression.m',
    'src/NSExternals.m',
    'src/NSFalsePredicate.m',
    'src/NSFileAttributes.m',
    'src/NSFileCoordinator.m',
    'src/NSFileHandle.m',
    'src/NSFileManager.m',
    'src/NSFilesystemItemRemoveOperation.m',
    'src/NSFormatter.m',
    'src/NSFunctionExpression.m',
    'src/NSGrammarCheckingResult.m',
    'src/NSHTTPCookie.m',
    'src/NSHTTPCookieStorage.m',
    'src/NSHashTable.m',
    'src/NSInPredicateOperator.m',
    'src/NSIndexPath.m',
    'src/NSIndexSet.m',
    'src/NSJSONSerialization.m',
    'src/NSKeyPathExpression.m',
    'src/NSKeyPathSpecifierExpression.m',
    'src/NSKeyValueAccessor.m',
    'src/NSKeyValueChangeDictionary.m',
    'src/NSKeyValueCoding.m',
    'src/NSKeyValueCodingInternal.m',
    'src/NSKeyValueCollectionProxies.m',
    'src/NSKeyValueComputedProperty.m',
    'src/NSKeyValueContainerClass.m',
    'src/NSKeyValueNestedProperty.m',
    'src/NSKeyValueObservance.m',
    'src/NSKeyValueObservationInfo.m',
    'src/NSKeyValueObserving.m',
    'src/NSKeyValueProperty.m',
    'src/NSKeyValueUnnestedProperty.m',
    'src/NSKeyedArchiver.m',
    'src/NSKeyedUnarchiver.m',
    'src/NSLikePredicateOperator.m',
    'src/NSLinkCheckingResult.m',
    'src/NSLocale.m',
    'src/NSLocalizableString.m',
    'src/NSLock.m',
    'src/NSLog.m',
    'src/NSMapTable.m',
    'src/NSMatchingPredicateOperator.m',
    'src/NSNestedDictionary.m',
    'src/NSNetServices.m',
    'src/NSNotification.m',
    'src/NSNotificationCenter.m',
    'src/NSNotificationQueue.m',
    'src/NSNumber.m',
    'src/NSNumberFormatter.m',
    'src/NSObjCRuntime.m',
    'src/NSOperation.m',
    'src/NSOrthographyCheckingResult.m',
    'src/NSPathStore.m',
    'src/NSPathUtilities.m',
    'src/NSPhoneNumberCheckingResult.m',
    'src/NSPlatform.m',
    'src/NSPointerArray.m',
    'src/NSPointerFunctions.m',
    'src/NSPort.m',
    'src/NSPredicate.m',
    'src/NSPredicateLexer.m',
    'src/NSPredicateOperator.m',
    { 'source': 'src/NSPredicateParser.tab.c', 'language': 'objc' },
    'src/NSProcessInfo.m',
    'src/NSProgress.m',
    'src/NSProxy.m',
    'src/NSRange.m',
    'src/NSRegularExpression.m',
    'src/NSRegularExpressionCheckingResult.m',
    'src/NSRunLoop.m',
    'src/NSRunLoopModes.m',
    'src/NSScanner.m',
    'src/NSSelfExpression.m',
    'src/NSSet.m',
    'src/NSSetExpression.m',
    'src/NSSortDescriptor.m',
    'src/NSSpellCheckingResult.m',
    'src/NSString.m',
    'src/NSStringPredicateOperator.m',
    'src/NSSubqueryExpression.m',
    'src/NSSubstitutionCheckingResult.m',
    'src/NSSubstringPredicateOperator.m',
    'src/NSSymbolicExpression.m',
    'src/NSTernaryExpression.m',
    'src/NSTextCheckingResult.m',
    'src/NSThread.m',
    'src/NSTimeZone.m',
    'src/NSTimer.m',
    'src/NSTokenMatchingPredicateOperator.m',
    'src/NSTransitInformationCheckingResult.m',
    'src/NSTruePredicate.m',
    'src/NSURL.m',
    'src/NSURLAuthenticationChallenge.m',
    'src/NSURLCache.m',
    'src/NSURLConnection.m',
    'src/NSURLCredential.m',
    'src/NSURLCredentialStorage.m',
    'src/NSURLError.m',
    'src/NSURLProtectionSpace.m',
    'src/NSURLProtocol.m',
    'src/NSURLRequest.m',
    'src/NSURLResponse.m',
    'src/NSUUID.m',
    'src/NSUbiquitousKeyValueStore.m',
    'src/NSUserDefaults.m',
    'src/NSValue.m',
    'src/NSValueTransformer.m',
    'src/NSVariableAssignmentExpression.m',
    'src/NSVariableExpression.m',
    'src/NSXMLParser.m',
    'src/NSXPCCoder.m',
    'src/NSZone.m',
    'src/_NSFileIO.m',
    'src/_NSKeyedCoderOldStyleArray.m',
    'src/_NSPredicateOperatorUtilities.m',
    'src/_NSPredicateUtilities.m',
    'src/_DebugUtils.m',
    'src/NSObjectInternal.m',
]

Import('env')
env.BuildFramework('Foundation', sources, header_paths, static=False, flags=flags, defines=defines, deps=deps, libs=libs)
