# ------------------------------------------------------------------------
# Makefile: rules to compile the entire source tree of the SCRC
# ------------------------------------------------------------------------
#
# Modifications: (most recent first)
#
# RD 11/15/01	switched order of src/bit and src/Global due to dependency
# RD 05/24/01	reduced contents to SCRC requirements
# ------------------------------------------------------------------------

include ../Makefile.macros


# --- files (from this subdirectory) to be included in the distribution

DIST	=	.purify		\
		Makefile

# --- manually created files (from this subdirectory)

ORIG	=	.purify		\
		Makefile


# --- rules


all:
	cd $(SPECC_SRC)/longlong	; $(MAKE) all
	cd $(SPECC_SRC)/Global		; $(MAKE) all
	cd $(SPECC_SRC)/bit		; $(MAKE) all
	cd $(SPECC_SRC)/sim		; $(MAKE) all
	cd $(SPECC_SRC)/CcDriver	; $(MAKE) all
	cd $(SPECC_SRC)/IntRep		; $(MAKE) all
	cd $(SPECC_SRC)/Parser		; $(MAKE) all
	cd $(SPECC_SRC)/Compiler	; $(MAKE) all


clean:
	-$(RM) core *.bak *.BAK *~
	-$(RM) .*.bak
	cd $(SPECC_SRC)/longlong	; $(MAKE) clean
	cd $(SPECC_SRC)/Global		; $(MAKE) clean
	cd $(SPECC_SRC)/bit		; $(MAKE) clean
	cd $(SPECC_SRC)/sim		; $(MAKE) clean
	cd $(SPECC_SRC)/CcDriver	; $(MAKE) clean
	cd $(SPECC_SRC)/IntRep		; $(MAKE) clean
	cd $(SPECC_SRC)/Parser		; $(MAKE) clean
	cd $(SPECC_SRC)/Compiler	; $(MAKE) clean


dist:
	for file in $(DIST); do echo $(DISTPREFIX)/$$file >>$(DISTLIST); done
	cd $(SPECC_SRC)/longlong	; \
		$(MAKE) DISTPREFIX=$(DISTPREFIX)/longlong	\
		DISTLIST=$(DISTLIST) dist
	cd $(SPECC_SRC)/Global		; \
		$(MAKE) DISTPREFIX=$(DISTPREFIX)/Global		\
		DISTLIST=$(DISTLIST) dist
	cd $(SPECC_SRC)/bit		; \
		$(MAKE) DISTPREFIX=$(DISTPREFIX)/bit		\
		DISTLIST=$(DISTLIST) dist
	cd $(SPECC_SRC)/sim		; \
		$(MAKE) DISTPREFIX=$(DISTPREFIX)/sim		\
		DISTLIST=$(DISTLIST) dist
	cd $(SPECC_SRC)/CcDriver	; \
		$(MAKE) DISTPREFIX=$(DISTPREFIX)/CcDriver	\
		DISTLIST=$(DISTLIST) dist
	cd $(SPECC_SRC)/IntRep		; \
		$(MAKE) DISTPREFIX=$(DISTPREFIX)/IntRep		\
		DISTLIST=$(DISTLIST) dist
	cd $(SPECC_SRC)/Parser		; \
		$(MAKE) DISTPREFIX=$(DISTPREFIX)/Parser		\
		DISTLIST=$(DISTLIST) dist
	cd $(SPECC_SRC)/Compiler	; \
		$(MAKE) DISTPREFIX=$(DISTPREFIX)/Compiler	\
		DISTLIST=$(DISTLIST) dist

orig:
	for file in $(ORIG); do echo $(ORIGPREFIX)/$$file >>$(ORIGLIST); done
	cd $(SPECC_SRC)/longlong	; \
		$(MAKE) ORIGPREFIX=$(ORIGPREFIX)/longlong	\
		ORIGLIST=$(ORIGLIST) orig
	cd $(SPECC_SRC)/Global		; \
		$(MAKE) ORIGPREFIX=$(ORIGPREFIX)/Global		\
		ORIGLIST=$(ORIGLIST) orig
	cd $(SPECC_SRC)/bit		; \
		$(MAKE) ORIGPREFIX=$(ORIGPREFIX)/bit		\
		ORIGLIST=$(ORIGLIST) orig
	cd $(SPECC_SRC)/sim		; \
		$(MAKE) ORIGPREFIX=$(ORIGPREFIX)/sim		\
		ORIGLIST=$(ORIGLIST) orig
	cd $(SPECC_SRC)/CcDriver	; \
		$(MAKE) ORIGPREFIX=$(ORIGPREFIX)/CcDriver	\
		ORIGLIST=$(ORIGLIST) orig
	cd $(SPECC_SRC)/IntRep		; \
		$(MAKE) ORIGPREFIX=$(ORIGPREFIX)/IntRep		\
		ORIGLIST=$(ORIGLIST) orig
	cd $(SPECC_SRC)/Parser		; \
		$(MAKE) ORIGPREFIX=$(ORIGPREFIX)/Parser		\
		ORIGLIST=$(ORIGLIST) orig
	cd $(SPECC_SRC)/Compiler	; \
		$(MAKE) ORIGPREFIX=$(ORIGPREFIX)/Compiler	\
		ORIGLIST=$(ORIGLIST) orig


test:
	cd longlong	; $(MAKE) test
	cd Global	; $(MAKE) test
	cd bit		; $(MAKE) test
	cd CcDriver	; $(MAKE) test
	cd IntRep	; $(MAKE) test
	cd Parser	; $(MAKE) test
	cd Compiler	; $(MAKE) test
	cd sim		; $(MAKE) test

puretest:
	cd longlong	; $(MAKE) puretest
	cd Global	; $(MAKE) puretest
	cd bit		; $(MAKE) puretest
	cd CcDriver	; $(MAKE) puretest
	cd IntRep	; $(MAKE) puretest
	cd Parser	; $(MAKE) puretest
	cd Compiler	; $(MAKE) puretest
	cd sim		; $(MAKE) puretest
	
	
liblonglong:
	cd $(SPECC_SRC/longlong		; $(MAKE) all
	
libbit:
	cd $(SPECC_SRC)/bit		; $(MAKE) all

scrc:		liblonglong libbit
	cd $(SPECC_SRC)/Global		; $(MAKE) all
	cd $(SPECC_SRC)/CcDriver	; $(MAKE) all
	cd $(SPECC_SRC)/IntRep		; $(MAKE) all
	cd $(SPECC_SRC)/Parser		; $(MAKE) all
	cd $(SPECC_SRC)/Compiler	; $(MAKE) all

libsim:
	cd $(SPECC_SRC)/sim		; $(MAKE) all


# --- EOF Makefile
