C_COMPILER = gcc
GAMBIT_GSC = gsc
GAMBIT_INC_DIR = /usr/local/Gambit-C/include/
INC_DIR = .
GAMBIT_LIB_DIR = /usr/local/Gambit-C/lib/
PYTHON = python
PYTHON_INC =  /opt/local/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7
PYTHON_LIB1 = /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib
PYTHON_LIB2 = /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config

all: extension standalone gsc 

gsc:
	$(GAMBIT_GSC) -link server.scm
	$(C_COMPILER) -I$(GAMBIT_INC_DIR) -I$(INC_DIR) -Wno-unused -O1 -fno-math-errno -fschedule-insns2 -fno-trapping-math -fno-strict-aliasing -fwrapv -fomit-frame-pointer -fPIC -fno-common -mieee-fp -c -o client.o  client.c
	$(C_COMPILER) -I$(GAMBIT_INC_DIR) -I$(INC_DIR) -Wno-unused -O1 -fno-math-errno -fschedule-insns2 -fno-trapping-math -fno-strict-aliasing -fwrapv -fomit-frame-pointer -fPIC -fno-common -mieee-fp  -c -o server.o  server.c -D___LIBRARY
	$(C_COMPILER) -I$(GAMBIT_INC_DIR) -I$(INC_DIR) -Wno-unused -O1 -fno-math-errno -fschedule-insns2 -fno-trapping-math -fno-strict-aliasing -fwrapv -fomit-frame-pointer -fPIC -fno-common -mieee-fp  -c -o server_.o  server_.c -D___LIBRARY
	$(C_COMPILER) -shared -I$(GAMBIT_INC_DIR) -I$(INC_DIR) -L$(GAMBIT_LIB_DIR) -lgambc -Wno-unused -O1 -fno-math-errno -fschedule-insns2 -fno-trapping-math -fno-strict-aliasing -fwrapv -fomit-frame-pointer -fno-common -mieee-fp -o libclient.so  client.o server.o server_.o
	
extension: gsc
	# ======= Cython extension:
	$(PYTHON) server_setup.py build_ext --inplace
	
standalone: gsc
	# ======= Cython standalone:
	$(PYTHON) /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Cython-0.14-py2.7-macosx-10.6-x86_64.egg/cython.py --embed server_setup.pyx
	$(C_COMPILER) -c server_setup.c -I$(PYTHON_INC) -I$(GAMBIT_INC_DIR) -I$(INC_DIR)
	$(C_COMPILER) -o server_setup server_setup.o client.o server.o server_.o -L$(GAMBIT_LIB_DIR) -lgambc -L$(PYTHON_LIB1) -L$(PYTHON_LIB2) -lpython2.7 -ldl  -framework CoreFoundation

clean:
	rm -rf gambit.so libclient.so *.o server.c server_.c server_setup.c server_setup.o server_setup build/
