# When the Hol98 system is installed (via <holdir>/bin/install), the file
# GNUmakefile in this directory is generated automatically from
# the file GNUmakefile.src (also in this directory).

MOSMLHOME:=/local/scratch/kxs/143
HOLDIR:=/local/scratch/kxs/foo/export
MOSMLBIN:=$(MOSMLHOME)/bin
MOSMLRUNTIME:=$(MOSMLHOME)/src/runtime
MOSMLTOOLS:=$(MOSMLBIN)/camlrunm $(MOSMLHOME)/tools
MOSMLC:=$(MOSMLBIN)/mosmlc -c -I ${HOLDIR}/sigobj
MOSMLL:=$(MOSMLBIN)/mosmlc 
MOSMLLEX:=$(MOSMLBIN)/mosmllex
MOSMLYACC:=$(MOSMLBIN)/mosmlyac

OPTS:=-fPIC
CINCLUDE:= -I$(MOSMLRUNTIME) -I./C/bdd11/src
CFLAGS= -Dunix -O3 -rdynamic $(OPTS) $(CINCLUDE)
LIBS:=-L./C/bdd11/src -lbdd

CFILES:=$(wildcard *.c)
COBJS:=$(CFILES:.c=.o)
DLLIB:=mlrobdd.so


SMLLS:=$(wildcard *.sml)
SIGLS:=$(wildcard *.sig)

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

SMLOBJ:=$(SMLSRC:.sml=.uo)
SIGOBJ:=$(SIGSRC:.sig=.ui)

.PRECIOUS: %.ui %.uo %.o %.sig %.sml
.PHONY: all depend clean

all: $(SMLOBJ) $(SIGOBJ) $(DLLIB)

$(DLLIB): $(COBJS)
	gcc -shared -Wl,-soname,$@ -o $@  $^ $(LIBS)

%.ui: %.sig
	$(MOSMLC) $<

%.uo: %.sml
	$(MOSMLC) $<

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

clean:
	rm -f *.u? 
	rm -f *.o *.so
	rm -f  GNUmakefile.bak

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


### EVERYTHING THAT GOES BEYOND THIS COMMENT WILL BE ERASED WITHOUT WARNING
### DO NOT DELETE THIS LINE
mlrobdd.o: mlrobdd.c
robddLib.ui: Robdd.ui 
Robdd.uo: Robdd.ui 
robddLib.uo: robddLib.ui Robdd.ui 
