LIBRARY_SRC=Library/
TARGET_SRC=ConformalizedMCF/

TARGET=ConformalizedMCF
SOURCE=$(LIBRARY_SRC)CmdLineParser.cpp $(LIBRARY_SRC)Geometry.cpp $(LIBRARY_SRC)PlyFile.cpp $(LIBRARY_SRC)Util.cpp $(TARGET_SRC)ConformalizedMCF.cpp

CFLAGS += -fpermissive -fopenmp -Wno-deprecated
LFLAGS += -lgomp /usr/lib64/libcholmod.so.1.7.3

CFLAGS_DEBUG = -DDEBUG -g3
LFLAGS_DEBUG =

CFLAGS_RELEASE = -O3 -DRELEASE -funroll-loops -ffast-math
LFLAGS_RELEASE = -O3

BIN = Bin/Linux/
INCLUDE = -ILibrary/ -ICholmod/include/ -I/usr/include/

CC=gcc
CXX=g++

#OBJECTS=$(addprefix $(BIN), $(addsuffix .o, $(basename $(SOURCE))))
OBJECTS=$(addprefix $(BIN), $(addsuffix .o, $(basename $(notdir $(SOURCE)))))

all: CFLAGS += $(CFLAGS_DEBUG)
all: LFLAGS += $(LFLAGS_DEBUG)
all: $(BIN)$(TARGET)

release: CFLAGS += $(CFLAGS_RELEASE)
release: LFLAGS += $(LFLAGS_RELEASE)
release: $(BIN)$(TARGET)

clean:
	rm -f $(BIN)$(TARGET)
	rm -f $(OBJECTS)

$(BIN)$(TARGET): $(OBJECTS)
	$(CXX) -o $@ $(OBJECTS) $(LFLAGS)

$(BIN)%.o: $(LIBRARY_SRC)%.c
	$(CC) -c -o $@ $(CFLAGS) $(INCLUDE) $<
$(BIN)%.o: $(TARGET_SRC)%.c
	$(CC) -c -o $@ $(CFLAGS) $(INCLUDE) $<

$(BIN)%.o: $(LIBRARY_SRC)%.cpp
	$(CC) -c -o $@ $(CFLAGS) $(INCLUDE) $<
$(BIN)%.o: $(TARGET_SRC)%.cpp
	$(CXX) -c -o $@ $(CFLAGS) $(INCLUDE) $<

