# -*- makefile -*- mode for emacs
# @(#) $Id: Makefile,v 1.16 1997/06/09 23:06:09 leavens Exp $
#
# Developer's Makefile for Larch/C++ exercises
#

#########################################################################
# Macro Definition
#########################################################################

# Directories
#
LARCHDIR	= $(HOME)/larch
LCPP_ROOT       = $(LARCHDIR)/lc++
EXERCISE_DIR	= $(LCPP_ROOT)/exercises
DIST_ROOT	= $(LCPP_ROOT)/distrib
DIST_LCPP       = $(DIST_ROOT)/LCPP
DIST_EXERCISE_DIR = $(DIST_LCPP)/exercises
WWW_DIR		= /home/bambam/leavens/WWW/larchc++exercises

LCPPFLAGS = -ansi
# LCPPFLAGS = -ansi --no-LSL
LSLFLAGS =

# Removing, copying, etc.
#
RM = rm -f
# RM = del	# DOS
CP = cp -p
# CP = copy	# DOS
MV = mv -f
# MV = move	# DOS
CHMOD = chmod
CHGRP = chgrp

# Documentation files to be distributed
#
DIST_EXERCISES	= `make -f Makefile.dist dist-subdirs`

#########################################################################
# Target Definitions
#########################################################################

all: install

install	:
	make MAKEFLAGS=$(MAKEFLAGS) DIST_EXERCISE_DIR="$(WWW_DIR)" distrib

distrib	: $(DIST_EXERCISE_DIR)
	for d in $(DIST_EXERCISES) ; \
	    do if test ! -d $(DIST_EXERCISE_DIR)/$$d ; \
	    then mkdir $(DIST_EXERCISE_DIR)/$$d ; \
	    fi ; \
	    $(RM) -r $(DIST_EXERCISE_DIR)/$$d/* ; \
	    cd $$d; \
	    $(CP) *.txt $(DIST_EXERCISE_DIR)/$$d ; \
	    for f in *.lsl ; \
	    do test -f $$f && $(CP) $$f $(DIST_EXERCISE_DIR)/$$d ; \
	    done ;\
	    for f in *.h ; \
	    do test -f $$f && $(CP) $$f $(DIST_EXERCISE_DIR)/$$d ; \
	    done ;\
	    $(CHGRP) lc++ $(DIST_EXERCISE_DIR)/$$d/*; \
	    $(CHMOD) ug+w $(DIST_EXERCISE_DIR)/$$d/*; \
	    $(CHMOD) o+r $(DIST_EXERCISE_DIR)/$$d/*; \
	    cd .. ; \
	done
	$(CP) README COPYRIGHT $(DIST_EXERCISE_DIR)
	$(CP) Makefile.dist $(DIST_EXERCISE_DIR)/Makefile
	$(CP) Makefile.dist $(DIST_EXERCISE_DIR)/Makefile.dist
	$(CP) Makefile $(DIST_EXERCISE_DIR)/Makefile.dev
	cd $(DIST_EXERCISE_DIR) ; \
	$(CHGRP) lc++ $(DIST_EXERCISE_DIR)/*; \
	$(CHMOD) ug+w $(DIST_EXERCISE_DIR)/*; \
	$(CHMOD) o+r $(DIST_EXERCISE_DIR)/*

$(DIST_EXERCISE_DIR) :
	mkdir $(DIST_EXERCISE_DIR)
	$(CHGRP) lc++ $(DIST_EXERCISE_DIR)
	$(CHMOD) g+w $(DIST_EXERCISE_DIR)
	$(CHMOD) o+r $(DIST_EXERCISE_DIR)

check: checkallspecs checkalltraits

checkallspecs :
	make -f Makefile.dist MAKEFLAGS=$(MAKEFLAGS) \
		LCPPFLAGS='$(LCPPFLAGS)' checkallspecs

checkalltraits :
	make -f Makefile.dist MAKEFLAGS=$(MAKEFLAGS) \
		LCPPFLAGS='$(LSLFLAGS)' checkalltraits

clean :
	make -f Makefile.dist MAKEFLAGS=$(MAKEFLAGS) \
		RM='$(RM)' clean

cleanall :
	make -f Makefile.dist MAKEFLAGS=$(MAKEFLAGS) \
		RM='$(RM)' cleanall
