aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Makefile25
-rw-r--r--src/main.m45
3 files changed, 71 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..5761abc
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+*.o
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..9101cc4
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,25 @@
+SOURCES := $(shell find src -name '*.m')
+OBJECTS := $(SOURCES:%.m=%.o)
+
+PRODUCT := Application
+
+
+.PHONY: all
+all: $(PRODUCT)
+
+%.o: %.m
+ $(CC) \
+ -x objective-c \
+ -c \
+ $< \
+ -o $@
+
+$(PRODUCT): $(OBJECTS)
+ $(CC) \
+ -framework Cocoa \
+ -o $@ \
+ $^
+
+.PHONY: clean
+clean:
+ rm $(OBJECTS)
diff --git a/src/main.m b/src/main.m
new file mode 100644
index 0000000..bc5e385
--- /dev/null
+++ b/src/main.m
@@ -0,0 +1,45 @@
+#include <stdlib.h>
+
+#import <Cocoa/Cocoa.h>
+
+int main() {
+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+
+ NSApplication *application = [NSApplication sharedApplication];
+ [application setActivationPolicy:NSApplicationActivationPolicyRegular];
+
+ NSMenu *menubar = [[NSMenu alloc] init];
+ NSMenuItem *application_menu_item = [[NSMenuItem alloc] init];
+ [menubar addItem:application_menu_item];
+
+ NSMenu *application_menu = [[NSMenu alloc] init];
+ NSMenuItem *quit_menu_item = [[NSMenuItem alloc]
+ initWithTitle:@"Quit"
+ action:@selector(terminate:)
+ keyEquivalent:@"q"];
+ [application_menu addItem:quit_menu_item];
+ [application_menu_item setSubmenu:application_menu];
+
+ [application setMainMenu:menubar];
+
+ NSWindow *window = [[NSWindow alloc]
+ initWithContentRect:NSMakeRect(0, 0, 400, 400)
+ styleMask:NSWindowStyleMaskTitled
+ backing:NSBackingStoreBuffered
+ defer:NO];
+
+ [window setTitle:@"Application"];
+ [window cascadeTopLeftFromPoint:NSMakePoint(100, 100)];
+ [window makeKeyAndOrderFront:nil];
+
+ [application run];
+
+ [window release];
+ [quit_menu_item release];
+ [application_menu release];
+ [application_menu_item release];
+ [menubar release];
+ [pool drain];
+
+ return EXIT_SUCCESS;
+}