Add a suffix rule for compiling objc++ files and a sample directory under test/lang/objcxx.

llvm-svn: 155501
This commit is contained in:
Johnny Chen 2012-04-24 23:05:07 +00:00
parent c24c66f21c
commit 8da4ddf990
3 changed files with 84 additions and 2 deletions

View File

@ -0,0 +1,6 @@
LEVEL = ../../../make
OBJCXX_SOURCES := main.mm
LDFLAGS = $(CFLAGS) -lobjc -framework Foundation
include $(LEVEL)/Makefile.rules

View File

@ -0,0 +1,71 @@
#import <Foundation/Foundation.h>
#include <iostream>
@interface MyString : NSObject {
NSString *_string;
NSDate *_date;
}
- (id)initWithNSString:(NSString *)string;
@property (copy) NSString *string;
@property (readonly,getter=getTheDate) NSDate *date;
- (NSDate *) getTheDate;
@end
@implementation MyString
@synthesize string = _string;
@synthesize date = _date;
- (id)initWithNSString:(NSString *)string
{
if (self = [super init])
{
_string = [NSString stringWithString:string];
_date = [NSDate date];
}
return self;
}
- (void) dealloc
{
[_date release];
[_string release];
[super dealloc];
}
- (NSDate *) getTheDate
{
return _date;
}
- (NSString *)description
{
return [_string stringByAppendingFormat:@" with timestamp: %@", _date];
}
@end
int main (int argc, char const *argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
static NSString *g_global_nsstr = @"Howdy";
MyString *myStr = [[MyString alloc] initWithNSString: [NSString stringWithFormat:@"string %i", 1]];
NSString *str1 = myStr.string;
NSString *str2 = [NSString stringWithFormat:@"string %i", 2];
NSString *str3 = [NSString stringWithFormat:@"string %i", 3];
NSArray *array = [NSArray arrayWithObjects: str1, str2, str3, nil];
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
str1, @"1",
str2, @"2",
str3, @"3",
myStr.date, @"date",
nil];
id str_id = str1;
SEL sel = @selector(length);
[pool release];
std::cout << "Hello, objc++!\n";
return 0;
}

View File

@ -136,7 +136,7 @@ ifneq "$(strip $(OBJCXX_SOURCES))" ""
OBJECTS +=$(strip $(OBJCXX_SOURCES:.mm=.o))
CXX = $(call cxx_compiler,$(CC))
LD = $(call cxx_linker,$(CC))
ifeq $(findstring lobjc,$(LDFLAGS)) ""
ifeq "$(findstring lobjc,$(LDFLAGS))" ""
LDFLAGS +=-lobjc
endif
endif
@ -172,7 +172,7 @@ ifneq "$(strip $(ARCHIVE_OBJCXX_SOURCES))" ""
ARCHIVE_OBJECTS +=$(strip $(ARCHIVE_OBJCXX_SOURCES:.mm=.o))
CXX = $(call cxx_compiler,$(CC))
LD = $(call cxx_linker,$(CC))
ifeq $(findstring lobjc,$(LDFLAGS)) ""
ifeq "$(findstring lobjc,$(LDFLAGS))" ""
LDFLAGS +=-lobjc
endif
endif
@ -283,6 +283,11 @@ ifneq "$(DYLIB_NAME)" ""
sinclude $(DYLIB_PREREQS)
endif
# Define a suffix rule for .mm -> .o
.SUFFIXES: .mm .o
.mm.o:
$(CXX) $(CXXFLAGS) -c $<
.PHONY: clean
dsym: $(DSYM)
all: $(EXE) $(DSYM)