all: metacyc-ontology-loader
db := none
utilsdir := ../../utils/src/c
VPATH = $(utilsdir)

## If we don't specify a $(db), make sure both mysql and oracle files are clean'ed
OBJS = wh_oracle.o wh_oracle_util.o wh_mysql.o wh_mysql_util.o

ifeq ($(db),oracle)
	##
	## Include Oracle make rules
	##
	include $(ORACLE_HOME)/precomp/lib/env_precomp.mk
	MODE=oracle
	HDRS = wh_oracle.h wh_oracle_util.h
        OBJS = wh_oracle.o wh_oracle_util.o
        LIBS = $(LDPATHFLAG)$(LIBHOME) $(PROLDLIBS)
        OUTPUT = oracle-metacyc-ontology-loader
        CFLAGS += -I$(utilsdir)
endif
ifeq ($(db), mysql)
        HDRS = wh_mysql.h
        OBJS = wh_mysql.o wh_mysql_util.o
        LIBS = -L/usr/lib -lmysqlclient -lz -lm -lcrypt -lpthread -ldl
        OUTPUT = mysql-metacyc-ontology-loader
        CFLAGS += -I/usr/include/mysql -I$(utilsdir)
endif

CC=gcc
HDRS +=main.h db.h string-util.h widtable.h wh.h 
OBJS +=main.o string-util.o widtable.o db.o wh.o\
	classes.tab.o classes-load.o

## For gdb 
CFLAGS+= -g

metacyc-ontology-loader: $(OBJS) $(HDRS)
	$(CC) -O3 -g -o $(OUTPUT) $(OBJS) -ll $(LIBS) ## -lefence
	rm -f metacyc-ontology-loader
	ln -s $(OUTPUT) metacyc-ontology-loader

##
## Classes
##
classes.tab.c:	classes.y lex.classes.c
	bison -v -p classes classes.y

lex.classes.c: classes.l
	flex -Pclasses -s classes.l

classes.tab.o: lex.classes.c $(HDRS)
classes-load.o: classes-parse.h

##
## Supporting Rules
##
.PHONY: clean 

clean:
	rm -f $(utilsdir)/*.lis $(utilsdir)/wh_oracle_util.c $(OBJS) wh_oracle.o wh_oracle_util.o wh_mysql.o wh_mysql_util.o classes-load.c metacyc-ontology-loader lex.*.c *.tab.c

##
## Compilation rules for esql programs
##
ifeq ($(db), oracle)
.SUFFIXES: .pc
.pc.c:
	$(PROC) DEFINE=ORACLE INCLUDE=$(utilsdir) $(PROCFLAGS) iname=$<
.c.o:
	$(CC) -DORACLE $(CFLAGS) -c $<
endif
ifeq ($(db), mysql)
%.c:%.pc
	cp $*.pc $*.c
%.o:%.c
	$(CC) -DDEF_MYSQL $(CFLAGS) -c $<
endif
