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



# Library source files.

FILE_CC_LIB_COM  = EvBase.cc EvBlank.cc EvEvent.cc EvExec.cc EvFirst.cc
FILE_CC_LIB_COM += EvHistory.cc EvSci.cc EvSco.cc
FILE_CC_LIB_COM	+= MmArea.cc MmFlat.cc MmMap.cc MmRet.cc MmSeg.cc
FILE_CC_LIB_COM	+= MsLine.cc
FILE_CC_LIB_COM	+= PrProc.cc PrTime.cc
FILE_CC_LIB_COM	+= ScLine.cc
FILE_CC_LIB_COM	+= TiListArea.cc TiListCcs.cc TiListChar.cc TiListCris.cc
FILE_CC_LIB_COM	+= TiListEvent.cc TiListFlat.cc TiListProcStar.cc TiListSeg.cc
FILE_CC_LIB_COM	+= TiListWord.cc
FILE_CC_LIB_COM	+= WhAbort.cc WhFile.cc WhList.cc WhString.cc

FILE_CC_LIB_LIX	 = $(FILE_CC_LIB_COM)
FILE_CC_LIB_LIX	+= ExeLix.cc PrScrLix.cc RiLineLix.cc ScLineLix.cc
FILE_CC_LIB_LIX	+= TySegEnumLix.cc

FILE_CC_LIB_SUN	 = $(FILE_CC_LIB_COM)
FILE_CC_LIB_SUN	+= ExeSun.cc PrScrSun.cc RiLineSun.cc ScLineSun.cc
FILE_CC_LIB_SUN	+= TySegEnumSun.cc



# Application source files.

FILE_CC_APP_COM	+= ControlArg.cc ControlMain.cc ReplayArg.cc ReplayMain.cc
FILE_CC_APP_COM	+= RillMain.cc TraceArg.cc TraceMain.cc

FILE_CC_APP_LIX  = $(FILE_CC_APP_COM)
FILE_CC_APP_SUN  = $(FILE_CC_APP_COM)



# 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-replay mec-rill mec-trace

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



# Compile flags.
#   g++ 2.6.3: -O0 needed to avoid inline failures.

FLAG_CC_LIX	 = -I. -O0
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 $(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-replay: obj.lix/ReplayArg.o obj.lix/ReplayMain.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-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 $(FILE_LIB_SUN)
	@if [ ! -d exe.sun ] ; then mkdir exe.sun ; fi
	/bin/rm -f $@
	mec-link-sun $(FLAG_LINK_LIX) -o $@ $^

exe.sun/mec-replay: obj.sun/ReplayArg.o obj.sun/ReplayMain.o $(FILE_LIB_SUN)
	@if [ ! -d exe.sun ] ; then mkdir exe.sun ; fi
	/bin/rm -f $@
	mec-link-sun $(FLAG_LINK_LIX) -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_LIX) -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_LIX) -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
