#-
# ==========================================================================
#+
PROJECT_NAME := NvParticlesForMaya
TARGET_NAME := linux64_gcc4.1

CXX ?= g++-4.1
LINK  ?= g++-4.1 -fPIC 
CC  ?= gcc-4.1

SRCDIR := ../src/

OBJDIR := ../__build/$(PROJECT_NAME)/$(TARGET_NAME)

INCLUDES := \
    -I../../../base/src \
    -I../../../base/third/include \
    -I../../../library/src \
    -I../../../solvers/wcsph \
    -I$(MAYA_LOCATION)/include \
    -I$(CUDA_INSTALL_PATH)/include

LIBS := -L$(MAYA_LOCATION)/lib -lOpenMayaFX -lOpenMayaUI -lOpenMaya -lOpenMayaRender -lOpenMayaAnim -lFoundation \
            -L../../../dist/linux64_gcc4.1 -lGLEW -lglut \
			-L$(CUDA_LIB_PATH) -lcudart \
              -L../../../solvers/__build/NvParticlesSolverWcsph/$(TARGET_NAME) -lNvParticlesSolverWcsph_x86_64 \
              -L../../../library/__build/NvParticles/$(TARGET_NAME) -lNvParticles_x86_64 \
              -L../../../base/__build/NvParticlesBase/$(TARGET_NAME) -lNvParticlesBase_x86_64
            
TARGET := $(OBJDIR)/lib$(PROJECT_NAME)-$(TARGET_NAME).so
  
# Warning flags
CXXWARN_FLAGS := \
	-W \
	-Wimplicit \
	-Wswitch \
	-Wformat \
	-Wchar-subscripts \
	-Wparentheses \
	-Wmultichar \
	-Wtrigraphs \
	-Wpointer-arith \
	-Wcast-align \
	-Wreturn-type \
	-Wno-unused-function \
	$(SPACE)

CWARN_FLAGS := $(CXXWARN_FLAGS) \
	-Wstrict-prototypes \
	-Wmissing-prototypes \
	-Wmissing-declarations \
	-Wnested-externs \
	-Wmain \

C++FLAGS = -DREQUIRE_IOSTREAM -D_BOOL -DLINUX -DNDEBUG -DBits64_ -DEASY_USE_PROFILER -fPIC

CCFILES := \
		NvParticlesParticleShape.cpp \
		NvParticlesParticleShapeUI.cpp \
		NvParticlesPrimitiveShape.cpp \
		plugin.cpp \
		nvParticles_init.cpp

OBJS +=  $(patsubst %.cpp,$(OBJDIR)/%.cpp.o,$(notdir $(CCFILES)))
OBJS +=  $(patsubst %.c,$(OBJDIR)/%.c.o,$(notdir $(CFILES)))

# check if verbose 
ifeq ($(verbose), 1)
	VERBOSE :=
else
	VERBOSE := @
endif

.SUFFIXES: .cpp .cc .o .so .c .bundle 

$(OBJDIR)/%.c.o: $(SRCDIR)%.c
	$(VERBOSE)mkdir -p $(OBJDIR)
	$(CC) $(INCLUDES) $(CFLAGS) $(CWARN_FLAGS) -o $@ -c $<
	
$(OBJDIR)/%.cc.o: $(SRCDIR)%.cc
	$(VERBOSE)mkdir -p $(OBJDIR)
	$(CXX) $(INCLUDES) $(C++FLAGS) $(CXXWARN_FLAGS) -o $@ -c $<

$(OBJDIR)/%.cpp.o: $(SRCDIR)%.cpp
	$(VERBOSE)mkdir -p $(OBJDIR)
	$(CXX) $(INCLUDES) $(C++FLAGS) $(CXXWARN_FLAGS) -o $@ -c $<

$(TARGET): $(OBJS)
	$(VERBOSE)rm -f $@
	$(VERBOSE)mkdir -p $(OBJDIR)
	$(VERBOSE)$(LINK) -shared -s -o $@ $? $(LIBS)

clean:
	$(VERBOSE)rm -f $(OBJS)


