TboxMake 3.85 KB
Newer Older
Stewart Brodie's avatar
Stewart Brodie committed
1 2 3 4 5
# Common Makefile fragment for toolbox object modules
#
# $Id$
#

6 7 8 9 10
#
# Our aim if not known
#
TARGET ?= ${COMPONENT}

Stewart Brodie's avatar
Stewart Brodie committed
11 12 13
#
# Export Paths for Messages module
#
14
RESDIR = <resource$dir>.Resources2.${TARGET}
Stewart Brodie's avatar
Stewart Brodie committed
15 16 17 18 19 20 21 22 23 24 25

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

#
# Build options
#
26
CFLAGS    += -zm -zps1 -ffah -D${SYSTEM}
27
CINCLUDES += ${TBOXINTHDR} -Itbox: -IC:
28 29
CDFLAGS   += -Ddebugging=1
ASDFLAGS  += -PD "debugging SETA 1"
Stewart Brodie's avatar
Stewart Brodie committed
30 31 32 33 34

#
# Libraries
#
include Makefiles:ModuleLibs
35 36
RAM_LIBS = ${TBOXINTLIB} ${EXTRARAMLIBS}
ROM_LIBS = ${TBOXINTLIB} ${EXTRAROMLIBS}
Stewart Brodie's avatar
Stewart Brodie committed
37 38 39 40 41

#
# Find the rest of the Makefile fragments for C modules
#
include Makefiles:StdTools
42
include Makefiles:DbgRules
Stewart Brodie's avatar
Stewart Brodie committed
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
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

#
72
# RAM builds require the resources in a ResourceFS registerable area
Stewart Brodie's avatar
Stewart Brodie committed
73 74 75 76 77 78 79
#
${RAMMESSAGES}: LocalRes:Messages
	resgen messages_file $@ LocalRes:Messages Resources.${COMPONENT}.Messages

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

80 81 82
${RAMBOTH}: LocalRes:Messages LocalRes:Res
	resgen messages_file $@ \
        LocalRes:Messages Resources.${COMPONENT}.Messages \
Stewart Brodie's avatar
Stewart Brodie committed
83 84 85 86 87 88 89
        LocalRes:Res Resources.${COMPONENT}.Res

#
# The clean rules are relatively similar too:
#
toolbox-clean:
	${WIPE} o.* ${WFLAGS}
90
	${WIPE} od ${WFLAGS}
Stewart Brodie's avatar
Stewart Brodie committed
91 92 93 94 95 96 97 98 99 100 101 102 103
	${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

104
#
105
# Builds of modules
106
#
107
DBG_MODULE .= rm.D${TARGET}
108
DBG_OBJS   .= ${RAM_OBJS}
109 110 111 112 113
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
114

115
${DBG_MODULE}: ${DBG_OBJS} ${DBG_LIBS} ${CLIB} ${RAM_DEPEND} ${DIRS}
116 117
	${LD} ${LDFLAGS} ${LDRAMFLAGS} -o $@ -rmf ${DBG_OBJS} ${DBG_LIBS} ${CLIB}

118 119 120
${RAM_MODULE}: ${RAM_OBJS} ${RAM_LIBS} ${CLIB} ${RAM_DEPEND} ${DIRS}
	${LD} ${LDFLAGS} ${LDRAMFLAGS} -o $@ -rmf ${RAM_OBJS} ${ROM_LIBS} ${CLIB}

121
${ROM_MODULE}: ${ROM_OBJS} ${ROM_LIBS} ${ROM_DEPEND} ${DIRS}
122 123 124
	${LD} ${LDFLAGS} ${LDLINKFLAGS} -o $@ -aof ${ROM_OBJS} ${ROM_LIBS} ${ROMCSTUBS}

trace: ${DBG_MODULE} ${DIRS}
125 126
	@echo ${COMPONENT}: debug module built

127 128 129 130 131
install: ${RAM_MODULE} ${DIRS}
	${MKDIR} ${INSTDIR}
	${CP} ${RAM_MODULE} ${INSTDIR}.${TARGET} ${CPFLAGS}
	@${ECHO} ${COMPONENT}: ram module installed

132 133
all: ${RAM_MODULE} ${DIRS}
	@${ECHO} ${COMPONENT}: ram module built
134

135 136
rom: ${ROM_MODULE} ${DIRS}
	@${ECHO} ${COMPONENT}: rom module built
137

138
rom_link: ${DIRS} ${ROM_MODULE} ${C_ABSSYM}
139
	${LD} ${LDFLAGS} ${LDLINKFLAGS} -o ${ABS_MODULE} -rmf -base ${ADDRESS} ${ROM_MODULE} ${C_ABSSYM} -Symbols ${ABS_MODULE}_sym
140
	${CP} ${ABS_MODULE} ${LINKDIR}.${TARGET} ${CPFLAGS}
141
	${CP} ${ABS_MODULE}_sym ${LINKDIR}.${TARGET}_sym ${CPFLAGS}
142
	@${ECHO} ${COMPONENT}: rom_link complete
143

144 145 146 147 148 149 150
${DIRS}:
	${MKDIR} od
	${MKDIR} o
	${MKDIR} rm
	${MKDIR} linked
	${MKDIR} aof
	${TOUCH} $@
151

Stewart Brodie's avatar
Stewart Brodie committed
152 153
EOFTboxMakefile=Common.TboxMake
# EOF