# Copyright 1995 Michael Chastain
# Licensed under the Gnu Public License, Version 2
# 
# File: makefile
#   Makefile.
# 
# File Created:		16 Apr 1995		Michael Chastain
# Last Edited:		19 Nov 1995		Michael Chastain



# Library source files.

FILE_CC_LIB_COM	 = CxFetch.cc CxStore.cc
FILE_CC_LIB_COM	+= ErAbort.cc ErFatal.cc ErMem.cc ErPtr.cc ErRange.cc ErUser.cc
FILE_CC_LIB_COM	+= EvBase.cc EvExec.cc EvExit.cc EvFirst.cc EvLog.cc EvSci.cc
FILE_CC_LIB_COM	+= EvSco.cc EvSignal.cc EvType.cc
FILE_CC_LIB_COM	+= MmArea.cc MmDs.cc MmSeg.cc
FILE_CC_LIB_COM	+= MsLine.cc
FILE_CC_LIB_COM	+= PrBpt.cc PrDir.cc PrMap.cc PrProc.cc PrSd.cc PrSl.cc
FILE_CC_LIB_COM	+= ScLine.cc
FILE_CC_LIB_COM	+= TiLapArea.cc TiLapDs.cc TiLapEvent.cc TiLapSeg.cc
FILE_CC_LIB_COM	+= TiLapStore.cc TiLapString.cc
FILE_CC_LIB_COM	+= TiListAddr.cc TiListChar.cc TiListCris.cc TiListInsn.cc
FILE_CC_LIB_COM	+= TiListInt.cc TiListWord.cc
FILE_CC_LIB_COM	+= WhFileOut.cc WhFlatIn.cc WhFlatOut.cc WhImage.cc WhString.cc

FILE_CC_LIB_LIX	 = $(FILE_CC_LIB_COM)
FILE_CC_LIB_LIX	+= ExeLix.cc MmInsnLix.cc MmScrLix.cc RiLineLix.cc ScLineLix.cc
FILE_CC_LIB_LIX	+= TySegLix.cc

FILE_CC_LIB_SUN	 = $(FILE_CC_LIB_COM)
FILE_CC_LIB_SUN	+= ExeSun.cc MmInsnSun.cc MmScrSun.cc RiLineSun.cc ScLineSun.cc
FILE_CC_LIB_SUN	+= TySegSun.cc



# Application source files.

FILE_CC_APP_COM	+= ControlArg.cc ControlMain.cc ControlReplay.cc ControlWait.cc
FILE_CC_APP_COM	+= ExecMain.cc ListArg.cc ListMain.cc RillMain.cc
FILE_CC_APP_COM	+= TraceArg.cc TraceMain.cc

FILE_CC_APP_LIX  = $(FILE_CC_APP_COM)
FILE_CC_APP_LIX	+= ControlExecerLix.cc ControlViewerLix.cc

FILE_CC_APP_SUN  = $(FILE_CC_APP_COM)
FILE_CC_APP_SUN	+= ControlExecerSun.cc ControlViewerSun.cc



# All source files.

FILE_CC_LIX	 = $(FILE_CC_LIB_LIX) $(FILE_CC_APP_LIX)
FILE_CC_SUN	 = $(FILE_CC_LIB_SUN) $(FILE_CC_APP_SUN)



# Object files.

FILE_OBJ_LIB_LIX = $(FILE_CC_LIB_LIX:%.cc=obj.lix/%.o)
FILE_OBJ_APP_LIX = $(FILE_CC_APP_LIX:%.cc=obj.lix/%.o)
FILE_OBJ_LIB_SUN = $(FILE_CC_LIB_SUN:%.cc=obj.sun/%.o)
FILE_OBJ_APP_SUN = $(FILE_CC_APP_SUN:%.cc=obj.sun/%.o)



# Libraries.

FILE_LIB_LIX	 = lib.lix/libMec.a
FILE_LIB_SUN	 = lib.sun/libMec.a



# Executable files.

FILE_EXE_COM    = mec-control mec-exec mec-list mec-rill mec-trace

FILE_EXE_LIX    = $(FILE_EXE_COM:%=exe.lix/%)
FILE_EXE_SUN    = $(FILE_EXE_COM:%=exe.sun/%)



# Compile flags.

FLAG_CC_LIX	 = -I.
FLAG_CC_SUN	 = -I.



# Link flags.

FLAG_LINK_LIX	 = 
FILE_LIB_LIX	 = lib.lix/libMec.a

FLAG_LINK_SUN	 =
FILE_LIB_SUN	 = lib.sun/libMec.a



# Targets.

.PHONY: default

default: $(FILE_LIB_LIX) $(FILE_EXE_LIX)



# Object modules.

obj.lix/%.o: %.cc
	mec-cc-lix $(FLAG_CC_LIX) $<

obj.sun/%.o: %.cc
	mec-cc-sun $(FLAG_CC_SUN) $<



# Libraries.

$(FILE_LIB_LIX):: $(FILE_OBJ_LIB_LIX)
	@if [ ! -d lib.lix ] ; then mkdir lib.lix ; fi
	ar rus $@ $?
	ls -l $@

$(FILE_LIB_SUN):: $(FILE_OBJ_LIB_SUN)
	@if [ ! -d lib.sun ] ; then mkdir lib.sun ; fi
	ar rus $@ $?
	ls -l $@



# Executable files.

exe.lix/mec-control: obj.lix/ControlArg.o obj.lix/ControlMain.o obj.lix/ControlReplay.o obj.lix/ControlWait.o obj.lix/ControlExecerLix.o obj.lix/ControlViewerLix.o $(FILE_LIB_LIX)
	@if [ ! -d exe.lix ] ; then mkdir exe.lix ; fi
	/bin/rm -f $@
	mec-link-lix $(FLAG_LINK_LIX) -o $@ $^

exe.lix/mec-exec: obj.lix/ExecMain.o $(FILE_LIB_LIX)
	@if [ ! -d exe.lix ] ; then mkdir exe.lix ; fi
	/bin/rm -f $@
	mec-link-lix $(FLAG_LINK_LIX) -o $@ $^

exe.lix/mec-rill: obj.lix/RillMain.o $(FILE_LIB_LIX)
	@if [ ! -d exe.lix ] ; then mkdir exe.lix ; fi
	/bin/rm -f $@
	mec-link-lix $(FLAG_LINK_LIX) -o $@ $^

exe.lix/mec-list: obj.lix/ListArg.o obj.lix/ListMain.o $(FILE_LIB_LIX)
	@if [ ! -d exe.lix ] ; then mkdir exe.lix ; fi
	/bin/rm -f $@
	mec-link-lix $(FLAG_LINK_LIX) -o $@ $^

exe.lix/mec-trace: obj.lix/TraceArg.o obj.lix/TraceMain.o $(FILE_LIB_LIX)
	@if [ ! -d exe.lix ] ; then mkdir exe.lix ; fi
	/bin/rm -f $@
	mec-link-lix $(FLAG_LINK_LIX) -o $@ $^

exe.sun/mec-control: obj.sun/ControlArg.o obj.sun/ControlMain.o obj.sun/ControlReplay.o obj.sun/ControlWait.o obj.sun/ControlExecerSun.o obj.sun/ControlViewerSun.o $(FILE_LIB_SUN)
	@if [ ! -d exe.sun ] ; then mkdir exe.sun ; fi
	/bin/rm -f $@
	mec-link-sun $(FLAG_LINK_SUN) -o $@ $^

exe.sun/mec-exec: obj.sun/ExecMain.o $(FILE_LIB_SUN)
	@if [ ! -d exe.sun ] ; then mkdir exe.sun ; fi
	/bin/rm -f $@
	mec-link-sun $(FLAG_LINK_SUN) -o $@ $^

exe.sun/mec-rill: obj.sun/RillMain.o $(FILE_LIB_SUN)
	@if [ ! -d exe.sun ] ; then mkdir exe.sun ; fi
	/bin/rm -f $@
	mec-link-sun $(FLAG_LINK_SUN) -o $@ $^

exe.sun/mec-list: obj.sun/ListArg.o obj.sun/ListMain.o $(FILE_LIB_SUN)
	@if [ ! -d exe.sun ] ; then mkdir exe.sun ; fi
	/bin/rm -f $@
	mec-link-sun $(FLAG_LINK_SUN) -o $@ $^

exe.sun/mec-trace: obj.sun/TraceArg.o obj.sun/TraceMain.o $(FILE_LIB_SUN)
	@if [ ! -d exe.sun ] ; then mkdir exe.sun ; fi
	/bin/rm -f $@
	mec-link-sun $(FLAG_LINK_SUN) -o $@ $^



# Clean.

.PHONY: clean

clean:
	/bin/rm -rf gmon.out exe.lix lib.lix obj.lix
	/bin/rm -rf gmon.out exe.sun lib.sun obj.sun
