CC=g++
DEBUG=
#DEBUG= -g
COPT= $(DEBUG) -c -DNO_FINALLY -DEUC_JP -DOSX -DAQUA
LINKOPT= $(DEBUG) -framework Foundation -framework AppKit
YTAB_C=ytab.cpp
YTAB_OBJ=ytab.o
YACC=kmyacc

OBJ= ../../Object.o ../../Char.o ../../String.o ../../Tuple.o ../../List.o \
     ../../NameSpace.o ../../Symbol.o ../../SjisRW.o ../../Assign.o \
     ../../SendMsg.o ../../Nil.o ../../Bool.o ../../Int.o ../../Real.o \
     ../../Handler.o ../../Prim.o ../../Closure.o ../../Expr.o \
     ../../Func.o ../../Load.o ../../$(YTAB_OBJ) ../../Lexer.o \
     ../../If.o ../../Loop.o ../../Array.o ../../Datatype.o ../../Except.o \
     ../../File.o ../../RW.o ../../EucJPRW.o ../../Dir.o \
     ../../Byte.o ../../Word.o

SOOPYG_OBJ = $(OBJ) Window.o


SUFFIXES= .cpp .o .m .mm

.cpp.o:
	$(CC) $(COPT) $<

.m.o:
	$(CC) $(COPT) $<

.mm.o:
	$(CC) $(COPT) $<

all: soopyg

soopyg: soopyg.o $(SOOPYG_OBJ)
	$(CC) $(LINKOPT) -o soopyg soopyg.o $(SOOPYG_OBJ)

soopyg.h: ../../soopy.h
	touch soopyg.h

soopyg.o: soopyg.mm soopyg.h
	$(CC) $(COPT) -c soopyg.mm

Window.o: Window.mm soopyg.h
	$(CC) $(COPT) -c $<

Object.o: ../../Object.cpp ../../soopy.h
Char.o: ../../Char.cpp ../../soopy.h
String.o: ../../String.cpp ../../soopy.h
Tuple.o: ../../Tuple.cpp ../../soopy.h
List.o: ../../List.cpp ../../soopy.h
NameSpace.o: ../../NameSpace.cpp ../../soopy.h
Symbol.o: ../../Symbol.cpp ../../soopy.h
SjisRW.o: ../../SjisRW.cpp ../../soopy.h
Lexer.o: ../../Lexer.cpp ../../soopy.h $(YTAB_OBJ)
	$(CC) $(COPT) ../../Lexer.cpp

$(YTAB_C): ../../parser.y ../../soopy.h
	$(YACC) -d ../../parser.y
	mv y.tab.c ytab.cpp
	mv y.tab.h ytab.h

$(YTAB_OBJ): ../../$(YTAB_C)
Assign.o: ../../Assign.cpp ../../soopy.h
SendMsg.o: ../../SendMsg.cpp ../../soopy.h
Nil.o: ../../Nil.cpp ../../soopy.h
Bool.o: ../../Bool.cpp ../../soopy.h
Int.o: ../../Int.cpp ../../soopy.h
Real.o: ../../Real.cpp ../../soopy.h
Handler.o: ../../Handler.cpp ../../soopy.h
Prim.o: ../../Prim.cpp ../../soopy.h
Closure.o: ../../Closure.cpp ../../soopy.h
Expr.o: ../../Expr.cpp ../../soopy.h
Func.o: ../../Func.cpp ../../soopy.h
If.o: ../../If.cpp ../../soopy.h
Loop.o: ../../Loop.cpp ../../soopy.h
Load.o: ../../Load.cpp ../../soopy.h
Array.o: ../../Array.cpp ../../soopy.h
Datatype.o: ../../Datatype.cpp ../../soopy.h
Except.o: ../../Except.cpp ../../soopy.h
File.o: ../../File.cpp ../../soopy.h
RW.o: ../../RW.cpp ../../soopy.h
EucJPRW.o: ../../EucJPRW.cpp ../../soopy.h
Dir.o: ../../Dir.cpp ../../soopy.h
Byte.o: ../../Byte.cpp ../../soopy.h
Word.o: ../../Word.cpp ../../soopy.h



