When referencing `NSObject`, it's enough to import `objc/NSObject.h`. Importing `Foundation` is unnecessary in these cases.
Differential Revision: https://reviews.llvm.org/D99867
OBJC_SOURCES := main.m
-LD_EXTRAS := -framework Foundation
+LD_EXTRAS := -lobjc
+
include Makefile.rules
-#import <Foundation/Foundation.h>
+#import <objc/NSObject.h>
@interface ObjcClass : NSObject {
int field;
-#import <Foundation/Foundation.h>
+#import <objc/NSObject.h>
@interface Util : NSObject
+ (void)debugPrintErrorStatic;
- (void)debugPrintError;
OBJC_SOURCES := main.m
-
CFLAGS_EXTRAS := -g0 # No debug info.
MAKE_DSYM := NO
-
-
-LD_EXTRAS := -framework Foundation
include Makefile.rules
-#import <Foundation/Foundation.h>
+#import <stdio.h>
void foo(int a, int b)
{
OBJCXX_SOURCES := main.mm
-
CFLAGS_EXTRAS := -w
+LD_EXTRAS := -lobjc
-
-
-LD_EXTRAS := -framework Foundation
include Makefile.rules
-#import <Foundation/Foundation.h>
+#import <objc/NSObject.h>
class MyCPPClass {
public:
OBJC_SOURCES := main.m
-LD_EXTRAS = -framework Foundation
+LD_EXTRAS = -lobjc
include Makefile.rules
-#import <Foundation/Foundation.h>
+#import <objc/NSObject.h>
typedef struct {
unsigned char fieldOne : 1;
OBJC_SOURCES := ivars-in-blocks.m main.m
-LD_EXTRAS := -lobjc -framework Foundation
+LD_EXTRAS := -lobjc
include Makefile.rules
-#import <Foundation/Foundation.h>
+#import <objc/NSObject.h>
@interface IAmBlocky : NSObject
{
#import "ivars-in-blocks.h"
+#import <stdio.h>
typedef int (^my_block_ptr_type) (int);
-#import <Foundation/Foundation.h>
#import <Test/Foo.h>
+#import <objc/NSObject.h>
@interface Test : NSObject {
@public
-#import <Foundation/Foundation.h>
+#import <objc/NSObject.h>
@class ForwardDeclaredClass;
DYLIB_NAME := Container
DYLIB_OBJC_SOURCES := Container.m
OBJC_SOURCES := main.m
+LD_EXTRAS := -lobjc
-
-
-LD_EXTRAS := -framework Foundation
include Makefile.rules
-#import <Foundation/Foundation.h>
+#import <objc/NSObject.h>
#import "Container.h"
+#import <stdio.h>
int main(int argc, const char * argv[])
{
-#import <Foundation/Foundation.h>
+#import <objc/NSObject.h>
#import "my-base.h"
@implementation MyBase
#if __OBJC2__
-#import <Foundation/Foundation.h>
+#import <objc/NSObject.h>
#import <stdint.h>
@interface InternalDefiner : NSObject {
OBJC_SOURCES := myclass.m repro.m
-LD_EXTRAS := -framework Foundation
+LD_EXTRAS := -lobjc
include Makefile.rules
-#import <Foundation/Foundation.h>
+#import <objc/NSObject.h>
@interface MyClass : NSObject
{}
-#import <Foundation/Foundation.h>
+#import <objc/NSObject.h>
#import "myclass.h"
@implementation MyClass
-#import <Foundation/Foundation.h>
+#import <objc/NSObject.h>
#import "myclass.h"
int main() {
-@import Foundation;
+@import ObjectiveC;
@import myModule;
int main() {
#ifndef MYMODULE
#define MYMODULE
-@import Foundation;
+@import ObjectiveC;
@interface MyClass : NSObject
- (int) propConflict;
OBJC_SOURCES := objc-ivar-offsets.m main.m
-LD_EXTRAS := -lobjc -framework Foundation
+LD_EXTRAS := -lobjc
include Makefile.rules
-#import <Foundation/Foundation.h>
+#import <objc/NSObject.h>
+#import <stdint.h>
@interface BaseClass : NSObject
{
OBJC_SOURCES := class.m
-LD_EXTRAS := -lobjc -framework Foundation
+LD_EXTRAS := -lobjc
include Makefile.rules
-#import <Foundation/Foundation.h>
+#import <objc/NSObject.h>
@interface Foo : NSObject {
}
-#import <Foundation/Foundation.h>
+#import <objc/NSObject.h>
@interface MyObject : NSObject
@end
-#import <Foundation/Foundation.h>
+#import <objc/NSObject.h>
class Base {
public:
OBJC_SOURCES := main.m
-
CFLAGS_EXTRAS := -w
+LD_EXTRAS := -lobjc
-
-
-LD_EXTRAS := -framework Foundation
include Makefile.rules
-#import <Foundation/Foundation.h>
+#import <objc/NSObject.h>
@interface Foo: NSObject
{}