CC       = gcc -c
OLDCC    = gcc
LD       = gcc
CFLAGS   = -g -Wall
CFLAGS  += #-Wno-implicit-int
LIBDIRS  = -L./ -L/usr/lib
INCDIRS  = -I./ -I../
LIBS     = -lmmgutil -lgsl -lgslcblas -lm -lgdbm

OPS = $(shell ls op/reg*.c)
BIN = $(OPS:op/%.c=%)
EVALBIN = evalp evalp-fix
SCRIPTS = splitp.pl showp.pl select.pl functions


#t: t.c libmmgutil.a op/dna-er-sor-preform-bndseg-bndwild.o
#	$(LD) $(CFLAGS) t.c op/dna-er-sor-preform-bndseg-bndwild.o -o $@ \
#		$(INCDIRS) $(LIBDIRS) $(LIBS)

current: clean all

all: $(BIN) countstr


$(BIN): mmg.c libmmgutil.a
	make op/$@.o
	$(LD) $(CFLAGS) mmg.c op/$@.o -o $@ $(INCDIRS) $(LIBDIRS) $(LIBS)


countstr: countstr.c
	$(OLDCC) $(CFLAGS) countstr.c -o $@ 

alleval: $(EVALBIN)

evalp: eval_pat.c op/reg.o libmmgutil.a
	$(LD) $(CFLAGS) eval_pat.c op/reg.o -o $@ \
		$(INCDIRS) $(LIBDIRS) $(LIBS)

evalp-fix: eval_pat.c op/reg-fix.o libmmgutil.a
	$(LD) $(CFLAGS) eval_pat.c op/reg-fix.o -o $@ \
		$(INCDIRS) $(LIBDIRS) $(LIBS)

p2re: p2re.c op/reg.o libmmgutil.a
	$(LD) $(CFLAGS) p2re.c op/reg.o -o $@ \
		$(INCDIRS) $(LIBDIRS) $(LIBS)
	

strtest: strtest.c libmmgutil.a op/reg-fix.o
	$(LD) $(CFLAGS) strtest.c op/reg-fix.o -o $@ \
		$(INCDIRS) $(LIBDIRS) $(LIBS)


%.o: %.c
	$(CC) $(CFLAGS) $< -o $@ $(INCDIRS)

libmmgutil.a: strutil.o random.o ordset.o pattern.o prob.o list.o log.o \
fa.o op/letter/longstore.o op/letter/alphabet.o op/letter/stdvar.o op/stdop.o \
op/patutil.o prompt.o
	ar rcs $@ $^

install: $(BIN) $(EVALBIN) p2re countstr
	cp $(BIN) $(EVALBIN) p2re countstr $(SCRIPTS) /usr/local/bin/

clean:
	rm *.o op/*.o op/letter/*.o $(OBJS) $(BIN) $(GENBIN) $(EVALBIN) \
         libmmgutil.a a.out *.exe *.stackdump strtest countstr p2re; :
	chmod 644 *.c *.h
