### USE OF THIS MAKEFILE IS NOT RECOMMENDED.
### It is no longer maintained. Use CMAKE instead.

# Makefile for Open Asset Import Library (GNU-make)
# aramis_acg@users.sourceforge.net

#
# Usage: make <target> <macros>

# TARGETS:
#   all                  Build a shared so from the whole library
#   clean                Cleanup object files, prepare for rebuild
#   static               Build a static library (*.a)
#   install              SDK will be installed to /usr/bin/assimp

# MACROS: (make clean before you change one)
#   NOBOOST=1            Build against boost workaround
#   SINGLETHREADED=1     Build single-threaded library
#   DEBUG=1              Build debug build of library

# C++ object files
OBJECTS   := $(patsubst %.cpp,%.o,  $(wildcard *.cpp)) 
OBJECTS   += $(patsubst %.cpp,%.o,  $(wildcard extra/*.cpp)) 
OBJECTS   += $(patsubst %.cpp,%.o,  $(wildcard ./../contrib/irrXML/*.cpp)) 

# C object files
OBJECTSC  := $(patsubst %.c,%.oc,   $(wildcard ./../contrib/zlib/*.c))
OBJECTSC  += $(patsubst %.c,%.oc,   $(wildcard ./../contrib/ConvertUTF/*.c))
OBJECTSC  += $(patsubst %.c,%.oc,   $(wildcard ./../contrib/unzip/*.c))

# Directory for install
INSTALLDIR = /usr/bin/assimp

# Include flags for gcc
INCLUDEFLAGS =

# Preprocessor defines for gcc
DEFINEFLAGS = 

# Suffix for the output binary, represents build type
NAMESUFFIX = 

# Output path for binaries
BINPATH = ../bin/gcc
INCPATH = ../include

# GCC compiler flags 
CPPFLAGS=-Wall 

# Setup environment for noboost build
ifeq ($(NOBOOST),1)
	SINGLETHREADED = 1
	INCLUDEFLAGS  += -IBoostWorkaround/
	DEFINEFLAGS   += -DASSIMP_BUILD_BOOST_WORKAROUND 
#	NAMESUFFIX    += -noboost
# else
#	INCLUDEFLAGS  += -I"C:/Program Files/boost/boost_1_35_0"
endif

# Setup environment for st build
ifeq ($(SINGLETHREADED),1)
	DEFINEFLAGS   += -DASSIMP_BUILD_SINGLETHREADED
#	NAMESUFFIX    += -st
endif

# Setup environment for debug build
ifeq ($(DEBUG),1)
	DEFINEFLAGS   += -D_DEBUG -DDEBUG
#	NAMESUFFIX    += -debug
else
	CPPFLAGS      += -O3
	DEFINEFLAGS   += -DNDEBUG -D_NDEBUG
endif

OUTPUT_NAME = dummy

# Output name of shared library
SHARED_TARGET = $(BINPATH)/libassimp$(NAMESUFFIX).so

# Output name of static library
STATIC = $(BINPATH)/libassimp$(NAMESUFFIX).a

# target: all
# usage : build a shared library (*.so)
all:	$(SHARED_TARGET) 

$(SHARED_TARGET):  $(OBJECTS)  $(OBJECTSC)
	gcc -o $@ $(OBJECTS) $(OBJECTSC) -shared -lstdc++ 
%.o:%.cpp
	$(CXX) -g -c  $(CPPFLAGS) $? -o $@ $(INCLUDEFLAGS) $(DEFINEFLAGS) -fPIC
%.oc:%.c
	$(CXX) -x c -g -c -ansi $(CPPFLAGS) $? -o $@ -fPIC

# target: clean
# usage : cleanup all object files, prepare for a rebuild
.PHONY: clean
clean:
	-rm -f $(OBJECTS) $(OBJECTSC) $(TARGET)

# target: static
# usage : build a static library (*.a)
static:    $(STATIC)
$(STATIC):    $(OBJECTS) $(OBJECTSC)
	ar rcs $@ $(OBJECTS) $(OBJECTSC)

install:
	mkdir -p $(INSTALLDIR)
	mkdir -p $(INSTALLDIR)/include
	mkdir -p $(INSTALLDIR)/lib
	cp $(BINPATH)/libassimp$(NAMESUFFIX).* $(INSTALLDIR)/lib
	cp $(INCPATH)/* $(INSTALLDIR)/include