# --------------------------------------------------------------------------
# Copyright 1992 by Forschungszentrum Informatik (FZI)
#
# You can use and distribute this software under the terms of the license
# version 1 you should have received along with this software.
# If not or if you want additional information, write to
# Forschungszentrum Informatik, "OBST Projekt", Haid-und-Neu-Strasse 10-14,
# D-76131 Karlsruhe, Germany.
# --------------------------------------------------------------------------
default: all

include ../tut_common.mk

EXAMPLES=$(SAMPLE)

UF=$(EXAMPLES)/UnixFile
TF=$(EXAMPLES)/TextFile
CP=$(EXAMPLES)/Compiler
SS=$(EXAMPLES)/Shellscript

INCLUDES=$(OBST_INCLUDES) -I$(UF) -I$(TF) -I$(CP) -I$(SS)


# ~~~~~~~~~~~~~~~~
# Shellscript example
# ~~~~~~~~~~~~~~~~

all: USED_MODULES $(SS)/Shellscript

clean:
	rm -f $(SS)/*.o $(SS)/Shellscript

realclean: clean
	rm -f $(SS)/*_obst.[Cch] $(SS)/*_use.h $(SS)/*_scp.C
	touch $(SS)/*.obst


# ~~~~~~~~~~~~~~~~
# used modules
# ~~~~~~~~~~~~~~~~
# Shellscript uses Compiler uses TextFile uses UnixFile

CP_OBJS = $(CP)/Compiler.o $(CP)/Compiler_obst.o
TF_OBJS = $(TF)/TextFile.o $(TF)/TextFile_obst.o
UF_OBJS = $(UF)/UnixFile.o $(UF)/UnixFile_obst.o

USED_MODULES:
	cd $(CP); make ALL_MODULES


# ~~~~~~~~~~~~~~~~~~~
# module: Shellscript
# ~~~~~~~~~~~~~~~~~~~

SS_OBJS = $(SS_MODULES) $(SS_MAIN)

SS_MAIN = $(SS)/Shellscript_main.o

SS_MODULES = $(SS)/Shellscript_obst.o $(SS)/Shellscript.o

ALL_MODULES: USED_MODULES $(SS_MODULES) 


$(SS)/Shellscript_obst.h $(SS)/Shellscript_use.h $(SS)/Shellscript_obst.C: \
	   $(SS)/Shellscript.obst
	$(OBST.CMP) Shellscript

$(SS)/Shellscript_obst.o: $(SS)/Shellscript_obst.C $(SS)/Shellscript_obst.h
	$(OBST.GEN.CC) $(SS)/Shellscript_obst.C

$(SS)/Shellscript.o: $(SS)/Shellscript_obst.h $(SS)/Shellscript.C 
	$(OBST.CC) $(SS)/Shellscript.C


$(SS)/Shellscript_main.o: $(SS)/Shellscript_use.h $(SS)/Shellscript_main.C
	$(COMP.CC) $(SS)/Shellscript_main.C 

$(SS)/Shellscript: ALL_MODULES $(SS_MAIN) $(OBSTLIB)/libOBST*
	$(LINK.CC) $(UF_OBJS) $(TF_OBJS) $(CP_OBJS) $(SS_OBJS)	\
		   $(libOBST) $(LDFLAGS)
