############            Makefile.in            ############
include ../../Makefile.in

############            files            ############
########        list of source files        ########
FUNCTIONS_SRC= Model.cc ModelLayer.cc ModelParam.cc ModelParamSet.cc ModelSpecular.cc \
               ModelParticle.cc ModelDistribution.cc ModelParticleType.cc ModelSmallAngle.cc \
               ModelSpecularMul.cc

########        list of header files        ########
FUNCTIONS_HDS=${FUNCTIONS_SRC:.cc=.hh}

########        list of object files        ########
FUNCTIONS_OBJ=${FUNCTIONS_SRC:.cc=.o}

LIB_OBJ=${FUNCTIONS_OBJ}

########        library        ########
####    stem && library file    ####
STEM=ModelFunc
SHARED_LIB=lib${STEM}.so
STATIC_LIB=lib${STEM}.a

############            compileer options            ############
#LDFLAGS += -L${LOCAL_LIB_DIR}
BUILD_IN_FUNC_LIB=-l${STEM}
HELPERS_LIB=-lHelpers

############            targets            ############
lib : ${LOCAL_LIB_DIR}/${SHARED_LIB} ${LOCAL_LIB_DIR}/${STATIC_LIB}

########        c++ library        ########
${LOCAL_LIB_DIR}/${SHARED_LIB} : ${SHARED_LIB}
	mv $^ ${LOCAL_LIB_DIR}

${LOCAL_LIB_DIR}/${STATIC_LIB} : ${STATIC_LIB}
	mv $^ ${LOCAL_LIB_DIR}

${SHARED_LIB} : ${LIB_OBJ}
	${CXX} -shared -o $@ $^ ${LIB_DIR}

${STATIC_LIB} : ${LIB_OBJ}
	${AR} ${AR_FLAGS} $@ $^
	${RANLIB} ${RANLIB_FLAGS} $@

########        object files       ########
.o : .cc
	${CXX} ${CXXFLAGS} -o $@ -c $^

############            cleaning            ############
clean:
	${RM} ${RM_FLAGS} *.o
	${RM} ${RM_FLAGS} ${SHARED_LIB} ${STATIC_LIB}
	${RM} ${RM_FLAGS} ${TEST_EXEC_LIST}

allclean: clean
	${RM} ${RM_FLAGS} ${LOCAL_LIB_DIR}/${SHARED_LIB} ${LOCAL_LIB_DIR}/${STATIC_LIB}
	${RM} ${RM_FLAGS} ${LOCAL_LIB_DIR}/${STEM}.py
	${RM} ${RM_FLAGS} ./${STEM}_wrap.cxx

#------------------------------------------

_${STEM}.so : ${STEM}_wrap.o ${LOCAL_LIB_DIR}/${Shared_lib} ${LOCAL_LIB_DIR}/libHelpers.so
	${CXX} ${WARNING} -shared -o $@ $< ${LDFLAGS} ${BUILD_IN_FUNC_LIB} ${HELPERS_LIB} ${MANYO_LIB}
	${MV} $@ ${LOCAL_LIB_DIR}

${STEM}_wrap.o : ${STEM}_wrap.cxx
	${CXX} ${CXXFLAGS} -o $@ -c $^

${STEM}_wrap.cxx ${STEM}.py : ${STEM}.i
	${SWIG} ${SWIG_FLAGS} $^
	${MV} ${STEM}.py ${LOCAL_LIB_DIR}

