#-----------------------------------------------------------------
# Makefile for TestGlut on Mac OS X
#
# date : 2012-01-04
#
#-----------------------------------------------------------------
# change per project & source
PROGRAM     = ../GridSynth
OBJECT_PATH = Release
OBJS_MAIN   = main.o graphic_main.o sound_main.o
OBJS_S      = RtStk.o Arpeggiator.o Metro.o Mixer.o Sequence.o SequenceManage.o \
			  SortMessager.o SoundUtil.o Stki.o Synth.o SynthFactory.o SynthManager.o
OBJS_G      = GlutMain.o UnitForm.o AppForm.o \
			  AppGridSynth.o GridEventDrawer.o GridPosCtrl.o InputEventToSeqMessage.o Layout.o MouseEventDrawer.o SeqAreaCtrl.o SeqTrajectory.o SequenceArea.o StepPattern.o StepPatternDraw.o StepPatternInstance.o StepPatternListDraw.o StepPatternSelector.o SynthSelectLabel.o \
			  CtrlD.o CtrlMovingRubber.o CtrlV.o Param.o ParamMonitor.o ShapeVector.o \
			  GirdPositioner.o GridEventView.o GridFigure.o GridMaster.o GridSheet.o InputEvents.o ListCtrl.o ListItem.o MousePick.o VstiParamList.o DeadListener.o DeadNotifier.o AppMng.o FocusChangedShowLabel.o FocusMng.o KeyMng.o MouseMng.o UnitMng.o UpdaterMng.o WindowMng.o Colorful.o ColorPort.o GrPort.o Positionable.o PositionPort.o Resizable.o SizePort.o Circle.o Connection.o Line.o opengl-func.o Point.o Rect.o RectTile.o Ring.o Shape.o ShapeFactory.o SinTable.o ftbuffer.o ftcursor.o ftdraw.o FTFontBuilder.o ftglfont.o ftlabel.o FTLabelFactory.o meta-string.o Updater.o UpdaterFactory.o UpdaterGrPort.o UpdaterKillUnit.o
OBJS        = $(OBJS_MAIN) $(OBJS_S) $(OBJS_G)
SRC_DIR     = ./ app/grid ctrl common sound \
			graphic graphic/comp graphic/mng graphic/port \
			graphic/primitive graphic/text graphic/updater

# common definition & rule for mac os x C++ Development 
# CC 		    = cc -arch x86_64
CC 		    = g++ -arch i386
CFLAGS      = -g -Wall -D__OS_MACOSX__ -D_FTGL_ENABLE_
LDFLAGS     = -L/usr/local/lib
LIBS        = -lpthread -lm -lstdc++
FRAMEWORK   = -framework CoreFoundation
OBJS_LINK   = $(addprefix ./$(OBJECT_PATH)/,$(OBJS))
#INCLUDES    = $(addprefix -I./,$(SRC_DIR))
INCLUDES    = -I. -Icommon -Isound -Igraphic

vpath %.o   $(OBJECT_PATH)
vpath %.cpp $(SRC_DIR)

# external library (STK) setting
STK         = ../stk-4.4.3
LDFLAGS    += -L$(STK)/
#LIBS       += -lstk
LIBS       += -lstk_i386
FRAMEWORK  += -framework CoreAudio -framework CoreMidi
INCLUDES   += -I$(STK)/include

# Framework Dirctory (OpenGL, GLUT)
GLUT_DIR    = /Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/GLUT.framework/
OPENGL_DIR  = /Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/OpenGL.framework/
FRAMEWORK  += -framework GLUT -framework OpenGL

# FTGL Library
LDFLAGS    += -L/opt/local/lib
LIBS       += -lftgl
INCLUDES   += -I/usr/local/include -I/opt/local/include/freetype2 -I/usr/local/include/FTGL

# suffix rule
.SUFFIXES: .c .cpp .o

# compile
%.o : %.cpp
	if [ ! -d $(OBJECT_PATH) ]; then mkdir $(OBJECT_PATH); fi
	$(CC) $(CFLAGS) $(INCLUDES) -c $(<) -o $(OBJECT_PATH)/$@

# link
$(PROGRAM):		GTAG $(OBJS) 
				$(CC) $(OBJS_LINK) $(FRAMEWORK) $(LDFLAGS) $(LIBS) -o $(PROGRAM)

# target
all:			$(PROGRAM)

GTAG:
				/usr/local/bin/gtags

# make precompile header for ac-mode 
pch:
				clang -cc1 -x c-header $(GLUT_DIR)/Headers/*.h $(OPENGL_DIR)/Headers/*.h -emit-pch -o stdafx.pch

clean:;			rm -f *.o $(OBJECT_PATH)/*.o *~ $(PROGRAM)

