# Common Makefile fragment for toolbox object modules # # $Id$ # # # Our aim if not known # TARGET ?= ${COMPONENT} # # Export Paths for Messages module # RESDIR = <resource$dir>.Resources2.${TARGET} # # 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: CDFLAGS += -Ddebugging=1 ASDFLAGS += -PD "debugging SETA 1" # # Libraries # include Makefiles:ModuleLibs RAM_LIBS = ${TBOXINTLIB} ${EXTRARAMLIBS} ROM_LIBS = ${TBOXINTLIB} ${EXTRAROMLIBS} # # Find the rest of the Makefile fragments for C modules # include Makefiles:StdTools include Makefiles:DbgRules include Makefiles:ModStdRule # # 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 in 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:Messages 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} od ${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 # # Builds of modules # DBG_MODULE .= rm.D${TARGET} DBG_OBJS .= ${RAM_OBJS} DBG_LIBS .= ${RAM_LIBS} C:tboxlibint.o.debuglibm ${DEBUGLIBS} ${NET4LIBS} ROM_MODULE .= aof.${TARGET} ABS_MODULE .= linked.${TARGET} RAM_MODULE .= rm.${TARGET} DIRS .= o._dirs ${DBG_MODULE}: ${DBG_OBJS} ${DBG_LIBS} ${CLIB} ${RAM_DEPEND} ${DIRS} ${LD} ${LDFLAGS} ${LDRAMFLAGS} -o $@ -rmf ${DBG_OBJS} ${DBG_LIBS} ${CLIB} ${RAM_MODULE}: ${RAM_OBJS} ${RAM_LIBS} ${CLIB} ${RAM_DEPEND} ${DIRS} ${LD} ${LDFLAGS} ${LDRAMFLAGS} -o $@ -rmf ${RAM_OBJS} ${ROM_LIBS} ${CLIB} ${ROM_MODULE}: ${ROM_OBJS} ${ROM_LIBS} ${ROM_DEPEND} ${DIRS} ${LD} ${LDFLAGS} ${LDLINKFLAGS} -o $@ -aof ${ROM_OBJS} ${ROM_LIBS} ${ROMCSTUBS} trace: ${DBG_MODULE} ${DIRS} @echo ${COMPONENT}: debug module built install: ${RAM_MODULE} ${DIRS} ${MKDIR} ${INSTDIR} ${CP} ${RAM_MODULE} ${INSTDIR}.${TARGET} ${CPFLAGS} @${ECHO} ${COMPONENT}: ram module installed all: ${RAM_MODULE} ${DIRS} @${ECHO} ${COMPONENT}: ram module built rom: ${ROM_MODULE} ${DIRS} @${ECHO} ${COMPONENT}: rom module built rom_link: ${DIRS} ${ROM_MODULE} ${C_ABSSYM} ${LD} ${LDFLAGS} ${LDLINKFLAGS} -o ${ABS_MODULE} -rmf -base ${ADDRESS} ${ROM_MODULE} ${C_ABSSYM} -Symbols ${ABS_MODULE}_sym ${CP} ${ABS_MODULE} ${LINKDIR}.${TARGET} ${CPFLAGS} ${CP} ${ABS_MODULE}_sym ${LINKDIR}.${TARGET}_sym ${CPFLAGS} @${ECHO} ${COMPONENT}: rom_link complete ${DIRS}: ${MKDIR} od ${MKDIR} o ${MKDIR} rm ${MKDIR} linked ${MKDIR} aof ${TOUCH} $@ EOFTboxMakefile=Common.TboxMake # EOF