# $Id: Makefile,v 1.13 2002/09/02 17:16:42 joe Exp $

MAIN = lspm

##########################################################################

GHC = ghc-5.04

TAR = tar

TARFLAGS = cfvz

FLAGS += -Wall -cpp \
        -fglasgow-exts  -fallow-overlapping-instances \
        -fallow-undecidable-instances 

PROF = -prof -auto-all

LIBS = -syslib net -syslib concurrent -syslib data -syslib posix 

OPT = -O -fvia-C


##########################################################################

# default target (for the entry)
# creates statically linked executable named `lspm'
# that can be called from the shell script `runme'

all : 
	make opt

##########################################################################


# for development (dynamically linked, no-opts, no-profs)

$(MAIN) : 
	$(GHC) --make $(FLAGS) $(EXTRAFLAGS) \
		Main -o $(MAIN)  $(LIBS) $(EXTRALIBS) $(INCS)

prof : 
	$(GHC) --make -recomp $(PROF) $(FLAGS)  $(EXTRAFLAGS) \
		Main -o $(MAIN)  $(LIBS) $(EXTRALIBS) $(INCS)

opt : 
	$(GHC) --make -recomp $(OPT) $(FLAGS)  $(EXTRAFLAGS) \
		Main -o $(MAIN)  $(LIBS) $(EXTRALIBS) $(INCS)

# statically, optimized

static : 
	$(GHC) --make -optl-static -recomp $(OPT) $(FLAGS)  $(EXTRAFLAGS) \
		Main -o $(MAIN)  $(LIBS) $(EXTRALIBS) $(INCS) 


%.o : %.hs
	$(GHC) --make $(FLAGS) $(EXTRAFLAGS) $(LIBS) $(INCS) $<


.PHONY : $(MAIN) 


##########################################################################

objclean :
	find . \( -name "*.o" -o -name "*.hi" \) -exec rm {} \;

backclean :
	find . \( -name "*~" \) -exec rm {} \;

clean : objclean backclean
	- rm $(MAIN)


#########################################################################

pack : 
	make objclean 
	make static
	make objclean 
	cd ..; $(TAR) $(TARFLAGS) $(MAIN).tar.gz $(MAIN)
