# Makefile for kernel sampling algorithm

CC=gcc
#CFLAGS= -g -Wall
CFLAGS= -O3 -fomit-frame-pointer -ffast-math
LD=gcc
#LDFLAGS= -g
LDFLAGS= -O3
# 32 bit linux
#MOSEK_H= /your_mosek_directory/mosek/5/tools/platform/linux32x86/h/
#MSKLINKFLAGS= -lirc -lguide -limf -lsvml -lmosek -lpthread -lc -ldl -lm
#MSKLIBPATH= /your_mosek_directory/mosek/5/tools/platform/linux32x86/bin/
# 64 bit linux
MOSEK_H= /your_mosek_directory/mosek/5/tools/platform/linux64x86/h/
MSKLINKFLAGS= -lirc -lguide -limf -lsvml -lunwind -lmosek64 -lpthread -lc -ldl -lm
MSKLIBPATH= /your_mosek_directory/mosek/5/tools/platform/linux64x86/bin/

SFMTPATH= ./SFMT-src-1.3.3

all: svm_uniform_sampling svm_importance_sampling

clean: 
	rm -f *.o
	rm -f svm_uniform_sampling svm_importance_sampling

svm_uniform_sampling: svm_uniform_sampling.o svm_common.o mosek_qp_optimize.o SFMT.o
	$(LD) $(LDFLAGS) svm_uniform_sampling.o svm_common.o mosek_qp_optimize.o SFMT.o -o svm_uniform_sampling -L $(MSKLIBPATH) $(MSKLINKFLAGS)

svm_uniform_sampling.o:
	$(CC) -c $(CFLAGS) svm_uniform_sampling.c -o svm_uniform_sampling.o

svm_importance_sampling: svm_importance_sampling.o svm_common.o mosek_qp_optimize.o SFMT.o
	$(LD) $(LDFLAGS) svm_importance_sampling.o svm_common.o mosek_qp_optimize.o SFMT.o -o svm_importance_sampling -L $(MSKLIBPATH) $(MSKLINKFLAGS)

svm_importance_sampling.o:
	$(CC) -c $(CFLAGS) svm_importance_sampling.c -o svm_importance_sampling.o

svm_common.o: svm_common.c svm_common.h kernel.h
	$(CC) -c $(CFLAGS) svm_common.c -o svm_common.o

mosek_qp_optimize.o: mosek_qp_optimize.c
	$(CC) -c $(CFLAGS) mosek_qp_optimize.c -o mosek_qp_optimize.o -I $(MOSEK_H)

SFMT.o: 
	$(CC) -c -DMEXP=607 $(SFMTPATH)/SFMT.c -o SFMT.o
