include Makefile.settings

ifeq ($(OSTYPE), BSD)
  PURIFY =
# PURIFY=/NFS/ai-contrib1/src/purify-3.2/purify-3.2-sunos4/purify
# PROFILE = -pg
else
  PURIFY =
# PURIFY=/NFS/ai-contrib1/src/purify-3.2/purify-3.2-solaris2/purify
# PROFILE = -pg -ldl
endif

ALLSOURCE = LICENSE Makefile Makefile.settings.in README \
	    logger.c logger.h logger_db.c logger_db.h logger_flat.c \
	    logger_int.h logger_version.h.in mlogger.c testlogger.c

FULLCC = ${PURIFY} ${CC} ${PROFILE}

DB_OBJ = logger.o logger_db.o

PROGRAMS = mlogger testlogger

ifeq (${USE_FLAT_DB}, 1)
  DB_OBJ += logger_flat.o
  CFLAGS += -DFLAT_DB
endif

LIBRARIES = liblogger.${LIBTYPE}

ALLPROGRAMS = ${PROGRAMS} ${LIBRARIES}

BINDINGS =

CFLAGS += -I.

ifeq (${MAKE_JAVA}, 1)  
  BINDINGS += java
endif

ifeq (${MAKE_TCL}, 1)
  BINDINGS += tcl
endif

ifeq (${MAKE_PYTHON}, 1)
  BINDINGS += python
endif

VERSIONSED = sed -e "s!MF_VERSION!`echo $$VERSION`!"

export VERSION

# Main rules.

all: logger_version.h ${ALLPROGRAMS}
	if [ -n "${BINDINGS}" ] ; then \
	  for subdir in `echo ${BINDINGS}`; do \
            (cd $$subdir; ${MAKE} all); \
          done \
	fi

clean: 
	rm -f *.o ${ALLPROGRAMS} *~ core logger_version.h liblogger.a liblogger.so
	cd java; ${MAKE} clean
	cd tcl; ${MAKE} clean
	cd python; ${MAKE} clean
	cd html; ${MAKE} clean
	cd examples; ${MAKE} clean

tar:
	/bin/rm -rf ${TARDIR}
	mkdir -p ${TARDIR}
	cp ${ALLSOURCE} ${TARDIR}
	cd java; ${MAKE} tar
	cd tcl; ${MAKE} tar
	cd python; ${MAKE} tar
	cd html; ${MAKE} tar
	cd examples; ${MAKE} tar
	cd ${TARDIR}; cd ..; tar cvf ${ROOTDIR}/logger.tar ${TARNAME}
	/bin/rm -rf ${TARDIR}

# For the installation, of course, we need to redo the
# scripts, because they need to point to the installed
# versions. 

install:
	mkdir -p ${INSTALLDIR}
	mkdir -p ${BINDIR}
	mkdir -p ${LIBDIR}
	mkdir -p ${INCLUDEDIR}
	mkdir -p ${HTMLDIR}
	cp ${LIBRARIES} ${LIBDIR}
	cp ${PROGRAMS} ${BINDIR}
	cd html; ${MAKE} install
	cp logger.h logger_version.h ${INCLUDEDIR}
	if [ -n "${BINDINGS}" ] ; then \
	  for subdir in `echo ${BINDINGS}`; do \
            (cd $$subdir; ${MAKE} install); \
          done \
	fi

# Rules for C.

logger.o: logger.c logger.h logger_int.h logger_version.h
	${FULLCC} ${LIBCFLAGS} ${CFLAGS} -c logger.c

logger_db.o: logger_db.c logger_db.h
	${FULLCC} ${LIBCFLAGS} ${CFLAGS} -c logger_db.c

ifeq (${USE_MSQL_DB}, 1)
logger_msql.o: logger_msql.c logger_db.h
	${FULLCC} ${LIBCFLAGS} ${CFLAGS} -c logger_msql.c
endif

ifeq (${USE_FLAT_DB}, 1)
logger_flat.o: logger_flat.c logger_db.h
	${FULLCC} ${LIBCFLAGS} ${CFLAGS} -c logger_flat.c
endif

liblogger.a: ${DB_OBJ}
	ar r liblogger.a ${DB_OBJ}
	${RANLIB} liblogger.a

liblogger.so: ${DB_OBJ}
	$(LD) ${DB_OBJ} -o liblogger.so 
 
mlogger: mlogger.c liblogger.${LIBTYPE} logger_version.h liblogger.${LIBTYPE}
	$(FULLCC) ${CFLAGS} -o mlogger mlogger.c -L. -llogger  ${LINKLIBS}

test: test.c liblogger.${LIBTYPE} logger_version.h liblogger.${LIBTYPE}
	$(FULLCC) ${CFLAGS} -o test test.c -L. -llogger  ${LINKLIBS}

testlogger: liblogger.${LIBTYPE} testlogger.c logger_version.h liblogger.${LIBTYPE}
	$(FULLCC) ${CFLAGS} -o testlogger testlogger.c -L. -llogger  ${LINKLIBS}

logger_version.h: logger_version.h.in
	cat logger_version.h.in | ${VERSIONSED} > logger_version.h
