# Makefile for MuDDy

# Point this to where you unpacked mosml
# MOSMLHOME=$(HOME)/mosml
# The 2.0 Moscow ML rpm:
# MOSMLHOME=/opt/mosml
# The 2.01 standard install:
#   MOSMLHOME=/usr/lib/mosml

# Your C compiler
CC=gcc

LD=gcc -rdynamic
DYNLD=gcc -shared

BUDDYDIR=buddy
OPTS=-Wall -O3
CINCLUDE=-I$(MOSMLRUNTIME) -I./$(BUDDYDIR)/src
CFLAGS= -Dunix $(OPTS) $(CINCLUDE)
LIBS=-L./$(BUDDYDIR)/src -lbdd

MOSMLBIN=$(MOSMLHOME)/bin
#MOSMLRUNTIME=$(MOSMLHOME)/src/runtime
MOSMLRUNTIME=$(MOSMLHOME)/include
MOSMLTOOLS=$(MOSMLBIN)/camlrunm $(MOSMLHOME)/tools
MOSMLC=$(MOSMLBIN)/mosmlc -c
MOSMLL=$(MOSMLBIN)/mosmlc 
MOSMLLEX=$(MOSMLBIN)/mosmllex
MOSMLYACC=$(MOSMLBIN)/mosmlyac

CFILES=muddy.c
COBJS=muddy.o

BUDDYLIB=./$(BUDDYDIR)/src/libbdd.a

SMLS=MuddyCore.sml bdd.sml bvec.sml fdd.sml
SIGS=bdd.sig  bvec.sig  fdd.sig

SMLSRC=$(SMLLS)
SIGSRC=$(SIGLS)

SMLOBJ=MuddyCore.uo bdd.uo bvec.uo fdd.uo
SIGOBJ=bdd.ui  bvec.ui  fdd.ui

.SUFFIXES :
.SUFFIXES : .sml .sig .ui .uo .c .o

all: $(SMLOBJ) $(SIGOBJ) muddy.so

muddy.so: $(COBJS) $(BUDDYLIB)
	$(DYNLD) -o $@ $(COBJS) $(LIBS)

$(BUDDYLIB):
	cd $(BUDDYDIR); make

.sig.ui:
	$(MOSMLC) $<

.sml.uo:
	$(MOSMLC) $<

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

clean:
	rm -f *.u? 
	rm -f *.o *.so
	rm -f Makefile.bak
	cd $(BUDDYDIR); make clean

depend : 
	mv Makefile Makefile.bak
	(sed -n -e '1,/^### DO NOT DELETE THIS LINE/p' Makefile.bak;	 \
         gcc -MM $(CINCLUDE) $(OPTS) *.c) > Makefile
	$(MOSMLTOOLS)/mosmldep >> Makefile

pack:
	tar czC .. --exclude CVS --exclude .cvsignore -f ../muddy.tgz muddy


### EVERYTHING THAT GOES BEYOND THIS COMMENT WILL BE ERASED WITHOUT WARNING
### DO NOT DELETE THIS LINE
muddy.o: muddy.c
fdd.uo: fdd.ui bdd.ui MuddyCore.uo 
fdd.ui: bdd.ui 
bvec.uo: bvec.ui bdd.ui fdd.ui MuddyCore.uo 
bvec.ui: bdd.ui fdd.ui 
bdd.uo: bdd.ui MuddyCore.uo 
