Makefile   [plain text]


CC := gcc
override CFLAGS :=

MAINPROG_CFLAGS := -arch $(ARCH) -g -mfix-and-continue

MAINPROG_LDFLAGS := -arch $(ARCH) -framework Foundation \
     -L/System/Library/PrivateFrameworks/ZeroLink.framework/Versions/A/Resources

FIX_CFLAGS := -arch $(ARCH) $(MAINPROG_CFLAGS) -mno-dynamic-no-pic -freplace-objc-classes

MAKE_A_BUNDLE_FLAGS := -arch $(ARCH) -bundle -flat_namespace -undefined suppress

all: stage1 stage2

# It has yet to be decided if all fixing of an object file must have object
# file unique names, or if they can all have the same name.  The settings
# below make it easy to experiment.

B1SUFFIX=1
B2SUFFIX=2
B3SUFFIX=3
B4SUFFIX=4

# Build the main application
stage1:
	$(CC) -v
	$(CC) $(MAINPROG_CFLAGS) -c main.m
	cp class-v1.m class.m
	$(CC) $(MAINPROG_CFLAGS) -c class.m
	$(CC) $(MAINPROG_LDFLAGS) -o a.out main.o class.o

# First rebuild of class.o
stage2:
	$(CC) -v
	cp class-v2.m class.m
	$(CC) $(FIX_CFLAGS) -o class-v2.o -c class.m
	$(CC) $(MAKE_A_BUNDLE_FLAGS) -o class-bundlized.o$(B2SUFFIX) class-v2.o

# Second rebuild of class.o
stage3:
	$(CC) -v
	cp class-v3.m class.m
	$(CC) $(FIX_CFLAGS) -o class-v3.o -c class.m
	$(CC) $(MAKE_A_BUNDLE_FLAGS) -o class-bundlized.o$(B3SUFFIX) class-v3.o

# Third rebuild of class.o
stage4:
	$(CC) -v
	cp class-v4.m class.m
	$(CC) $(FIX_CFLAGS) -o class-v4.o -c class.m
	$(CC) $(MAKE_A_BUNDLE_FLAGS) -o class-bundlized.o$(B4SUFFIX) class-v4.o

clean:
	rm -f a.out a.o b.o b-v1.o b-v2.o b-v3.o b.o.[0-9]*
	rm -f class-v2.o class-v3.o class-v4.o
	rm -f class.o main.o
	rm -f class-bundlized.o class-bundlized.o.[0-9]* class-bundlized.o[0-9]*
	rm -f b-bundlized.o.[0-9]* b-bundlized.o b-bundlized.o[0-9]*
	rm -f reload-stub.o