# Common Makefile fragment for toolbox object modules
#
# $Id$
#

#
# Export Paths for Messages module
#
RESDIR = <resource$dir>.Resources2.${COMPONENT}

#
# Standard internal toolbox library and headers
#
TBOXINTLIBDIR = C:tboxlibint
TBOXINTLIB    = ${TBOXINTLIBDIR}.o.tboxlibm
TBOXINTHDR    = -I${TBOXINTLIBDIR}

#
# Build options
#
CFLAGS = -zm -zps1 -ffah -D${SYSTEM}
CINCLUDES = ${TBOXINTHDR} -Itbox: -IC:

#
# Libraries
#
include Makefiles:ModuleLibs
RAM_LIBS = ${TBOXINTLIB}
ROM_LIBS = ${TBOXINTLIB}

#
# Find the rest of the Makefile fragments for C modules
#
include Makefiles:StdTools
include Makefiles:ModStdRule
include Makefiles:ROMCModule
include Makefiles:RAMCModule

#
# Toolbox modules hold just a Messages file, just a Res file or both.
# Thus we provide three rules, and the including makefile simply selects one
# or other of the rules as appropriate.
#
resources-messages: LocalRes:Messages
	${MKDIR} ${RESDIR}
	${CP} LocalRes:Messages ${RESDIR}.Messages ${CPFLAGS}

resources-res: LocalRes:Res
	${MKDIR} ${RESDIR}
	${CP} LocalRes:Res ${RESDIR}.Res ${CPFLAGS}

resources-both: LocalRes:Messages LocalRes:Res
	${MKDIR} ${RESDIR}
	${CP} LocalRes:Messages ${RESDIR}.Messages ${CPFLAGS}
	${CP} LocalRes:Res      ${RESDIR}.Res      ${CPFLAGS}


#
# Provide defaults so that the rules below are valid
#
RAMMESSAGES .= unused.ram.messages
RAMRES      .= unused.ram.resources
RAMBOTH     .= unused.ram.both

#
# RAM builds require the resources to be packaged up into a ResourceFS
# registerable area.
#

${RAMMESSAGES}: LocalRes:Messages
	resgen messages_file $@ LocalRes:Messages Resources.${COMPONENT}.Messages

${RAMRES}: LocalRes:Res
	resgen res_file $@ LocalRes:Res Resources.${COMPONENT}.Res

${RAMBOTH}: LocalRes:Message LocalRes:Res
	resgen messages_file $@\
        LocalRes:Messages Resources.${COMPONENT}.Messages\
        LocalRes:Res Resources.${COMPONENT}.Res

#
# The clean rules are relatively similar too:
#
toolbox-clean:
	${WIPE} o.* ${WFLAGS}
	${WIPE} aof ${WFLAGS}
	${WIPE} rm ${WFLAGS}
	${WIPE} linked ${WFLAGS}
	${WIPE} map ${WFLAGS}

#
# Typically, the ROM and RAM modules will be identical except for main.c
# which will switch on the ROM symbol to not register resources.  We provide
# this rule generically here.
#
o.mainROM: main.c
	$(CC) ${CFLAGS} -DROM -o $@ main.c

EOFTboxMakefile=Common.TboxMake
# EOF