execfile("PyMakefile.settings")

PROFILE = ""
PURIFY = ""

if OSTYPE == "BSD":
    pass
    # PURIFY = "/NFS/ai-contrib1/src/purify-3.2/purify-3.2-sunos4/purify"
    # PROFILE = "-pg"
else:
    pass
    # PURIFY = "/NFS/ai-contrib1/src/purify-3.2/purify-3.2-solaris2/purify"
    # PROFILE = "-pg -ldl"

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"]

if USE_FLAT_DB == 1:
    DB_OBJ.append("logger_flat.o")
    CFLAGS = CFLAGS + " -DFLAT_DB"

LIBRARIES = ["liblogger.%(LIBTYPE)"]

ALLPROGRAMS = PROGRAMS + LIBRARIES

BINDINGS = []

CFLAGS = CFLAGS + " -I."

if MAKE_JAVA == 1:
  BINDINGS.append("java")

if MAKE_TCL == 1:
  BINDINGS.append("tcl")

if MAKE_PYTHON == 1:
  BINDINGS.append("python")

VERSIONSED = 'sed -e "s!MF_VERSION!%(VERSION)!"'

# Main rules.

def all(comm):
    com = []
    for subdir in BINDINGS:
	com.append("cd %s; %%(MAKE) %s" % (subdir, comm))
    return com

MFRule("all", ["logger_version.h"] + ALLPROGRAMS, all("all"))

MFRule("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"])

MFRule("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. 

MFRule("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)"] + \
       all("install"))

# Rules for C.

MFRule("logger.o", ["logger.c", "logger.h", "logger_int.h", "logger_version.h"],
       "%(FULLCC) %(LIBCFLAGS) %(CFLAGS) -c logger.c")

MFRule("logger_db.o", ["logger_db.c", "logger_db.h"],
       "%(FULLCC) %(LIBCFLAGS) %(CFLAGS) -c logger_db.c")

if USE_MSQL_DB == 1:
    MFRule("logger_msql.o", ["logger_msql.c", "logger_db.h"],
	   "%(FULLCC) %(LIBCFLAGS) %(CFLAGS) -c logger_msql.c")

if USE_FLAT_DB == 1:
    MFRule("logger_flat.o", ["logger_flat.c", "logger_db.h"],
	   "%(FULLCC) %(LIBCFLAGS) %(CFLAGS) -c logger_flat.c")

MFRule("liblogger.a", DB_OBJ,
	["ar r liblogger.a %(DB_OBJ)",
	 "%(RANLIB) liblogger.a"])

MFRule("liblogger.so", DB_OBJ,
       "%(LD) %(DB_OBJ) -o liblogger.so")

MFRule("mlogger", ["mlogger.c", "liblogger.%(LIBTYPE)", "logger_version.h"],
       "%(FULLCC) %(CFLAGS) -o mlogger mlogger.c -L. -llogger  %(LINKLIBS)")

MFRule("test", ["test.c", "liblogger.%(LIBTYPE)", "logger_version.h", "liblogger.%(LIBTYPE)"],
       "%(FULLCC) %(CFLAGS) -o test test.c -L. -llogger  %(LINKLIBS)")
	
MFRule("testlogger", ["liblogger.%(LIBTYPE)", "testlogger.c", "logger_version.h"],
	"%(FULLCC) %(CFLAGS) -o testlogger testlogger.c -L. -llogger  %(LINKLIBS)")

MFRule("logger_version.h", ["logger_version.h.in"],
       "cat logger_version.h.in | %(VERSIONSED) > logger_version.h")
