# Makefile for libs/tools/sh2writer
# Satofumi KAMIMURA
# $Id$

# Compile options
CC = ${CXX}
CXXFLAGS = -g -O0 -Wall -Werror ${INCLUDES} `sdl-config --cflags` -DMONITOR
INCLUDES = -I../../common -I../../simulator -I../../connection -I../../monitor
LDFLAGS =
LDLIBS = `sdl-config --libs` -lSDL_net -lboost_regex

SH_ARC = sh-coff
SH_INCLUDES = -I../../sh7045

# Target
TARGET = \
	sh2writer \
	srec2data \

all : ${TARGET}

clean :
	${RM} *.o ${TARGET} wctrl.mot tcpipLog_send.txt tcpipLog_recv.txt errors.txt *.dis sh2writer.tag
	${RM} -rf doxygen_html/

depend :
	makedepend -Y -- ${INCLUDES} -- ${wildcard *.h *.c *.cpp}

.PHONY : all clean depend
######################################################################
REQUIRE_LIBS = ../../connection/connection.a ../../common/common.a
${REQUIRE_LIBS} :
	cd ${@D}/ && ${MAKE} ${@F}
OBJS = SFormatHandler.o FZtatHandler.o mFZtatHandler.o WriteTargetSimulator.o write_rom_host.o

wctrl_data.h : wctrl.mot srec2data
	./srec2data wctrl.mot > wctrl_data.h || ${RM} wctrl_data.h

write_rom_host.o : write_rom.c
	${CC} ${CXXFLAGS} -c $< -o $@

FZtatHandler.cpp : wctrl_data.h
sh2writer : ${OBJS} ${REQUIRE_LIBS}
srec2data : SFormatHandler.o

wctrl.o : wctrl.c
	${SH_ARC}-gcc -O2 -m2 -Wall -Werror ${SH_INCLUDES} -c $<
write_rom.o : write_rom.c
	${SH_ARC}-gcc -O2 -m2 -Wall -Werror ${SH_INCLUDES} -c $<
tiny_sci.o : tiny_sci.c
	${SH_ARC}-gcc -O2 -m2 -Wall -Werror ${SH_INCLUDES} -c $<

SH_OBJS = wctrl.o write_rom.o tiny_sci.o
wctrl.mot : ${SH_OBJS}
	${SH_ARC}-gcc -nostartfiles crt0_min.S -T sh45low.x -O2 -m2 -Wall -Werror ${SH_INCLUDES} $^ -o $@.tmp
	${SH_ARC}-objcopy --adjust-vma=0 --srec-forceS3 -O srec $@.tmp $@
	@${RM} $@.tmp
	@chmod a-x $@

wctrl.dis : ${SH_OBJS}
	${SH_ARC}-gcc -nostartfiles crt0_min.S -T sh45low.x -O2 -m2 -Wall -Werror ${SH_INCLUDES} $^ -o $@.tmp
	${SH_ARC}-objdump -D --disassemble-zeroes $@.tmp > $@ || ${RM} $@
	@${RM} $@.tmp
	@chmod a-x $@

# DO NOT DELETE

WriteTargetSimulator.o: ../../simulator/SimulatorInterface.h
tiny_sci.o: tiny_sci.h
wctrl.o: wctrl.h tiny_sci.h write_rom.h
write_rom.o: write_rom.h tiny_sci.h
FZtatHandler.o: FZtatHandler.h SFormatHandler.h ../../connection/SerialCtrl.h
FZtatHandler.o: ../../connection/ConnectionInterface.h wctrl_data.h
SFormatHandler.o: SFormatHandler.h
WriteTargetSimulator.o: WriteTargetSimulator.h
WriteTargetSimulator.o: ../../simulator/SimulatorInterface.h
WriteTargetSimulator.o: ../../connection/TcpipAccept.h
WriteTargetSimulator.o: ../../common/ThreadCreator.h TargetSimulatorPort.h
WriteTargetSimulator.o: ../../connection/TcpipCtrl.h
WriteTargetSimulator.o: ../../connection/ConnectionInterface.h write_rom.h
mFZtatHandler.o: mFZtatHandler.h FZtatHandler.h WriteTargetSimulator.h
mFZtatHandler.o: ../../simulator/SimulatorInterface.h
mFZtatHandler.o: ../../connection/TcpipCtrl.h
mFZtatHandler.o: ../../connection/ConnectionInterface.h TargetSimulatorPort.h
mFZtatHandler.o: ../../connection/ConnectionLogger.h
sh2writer.o: SFormatHandler.h FZtatHandler.h ../../common/DetectOS.h
sh2writer.o: ../../common/FileToArgs.h ../../common/SearchFilePath.h
srec2data.o: SFormatHandler.h
