1
0
Files
irix-657m-src/stand/arcs/ide/Makefile.exp
2022-09-29 17:59:04 +03:00

500 lines
17 KiB
Makefile

#
# Makefile for standalone version of ide
#
#ident "stand/arcs/ide/Makefile: $Revision: 1.3 $"
DIAGDEPTH=.
LLIBDEPTH=../
include Makedefs
include ${ENDIANDEFS}
DEFAULT_SCRIPT= shell_
FIELD_SCRIPT= field_
RELEASEIDE=field.ide
OPTIONIDE=ip22option.ide
IP20MFGIDE=ip20.ide
IP22MFGIDE=ip22exp.ide ip22option.ide
IP26MFGIDE=ip26exp.ide ip26asrs.ide
IP28MFGIDE=ip28exp.ide
GEN_CFILES= ide_builtins.c
SHELL_CFILES= ${CPUBOARD}_diags.c
SHELL_OBJECTS= ${SHELL_CFILES:.c=.o}
FIELD_CFILES= ${CPUBOARD}_field_diags.c
FIELD_OBJECTS= ${FIELD_CFILES:.c=.o}
OPT_CFILES= ${CPUBOARD}_opt_diags.c
OPT_OBJECTS= ${OPT_CFILES:.c=.o}
CFILES= $(GEN_CFILES)
LLDIRT= $(GEN_CFILES) $(TARGETDIR)/*.map $(TARGETDIR)/*.nm \
${OPT_CFILES} ${SHELL_CFILES} ${FIELD_CFILES} \
*.ide.*.c
LTARGETS= ${DEFAULT_SCRIPT:_=.ide}
LLDLIBS=libidecmn.a libide.a $(LIBSK)
LDEPLIB= $(TARGETDIR)/libidecmn.a $(TARGETDIR)/libide.a $(DLIBSK)
ELFTOCOFF=echo "\telf2coff $$@" && ../../tools/elf2coff/elf2coff $$@ $$@.coff &&mv $$@ $$@.elf && mv $$@.coff $$@
LDCOFF=mv $$@ $$@.elf && ${LD} -32 -coff -N -non_shared -G 0 $(TLOADADDR) $$@.elf -o $$@
CPUS=IP19 IP21 IP25 IP20 IP22 IP26 IP28 IP30
IP19_X = \#
IP20_X = \#
IP21_X = \#
IP25_X = \#
IP22_X = \#
IP26_X = \#
IP28_X = \#
IP30_X = \#
IP32_X = \#
IP22_64Y = \#
$(CPUBOARD)_X=
$(CPUBOARD)_$(COMPILATION_MODEL)Y=
# Let LDADDRS
TLOADADDR=-T $(TEXTSTART) -D $(DATASTART)
LDADDRS=$(TLOADADDR)
LDRELOC=-non_shared
MFGSCRIPT= xxx
# make sure there is no text/data overlap and bss does not overflow
$(IP19_X)TEXTSTART= A0100000
$(IP19_X)LOADADDR = A0100000
$(IP19_X)DATASTART= A0200000
$(IP19_X)TOPCHECK = AFFFFFFF
$(IP19_X)ARCHDIR =
$(IP19_X)IDE_POSTOP=
$(IP20_X)TEXTSTART= 88500000
$(IP20_X)LOADADDR = A8500000
$(IP20_X)DATASTART= A85A5000
$(IP20_X)TOPCHECK = A8740000
$(IP20_X)ARCHDIR = fforward isddevices
$(IP20_X)IDE_POSTOP=
$(IP20_X)POSTLDOP =$(ELFTOCOFF)
$(IP20_X)USEELFTOCOFF=yes
$(IP20_X)NOSTRIP = nostrip
$(IP21_X)TEXTSTART= a800000002000000
$(IP21_X)LOADADDR = 9000000002000000
$(IP21_X)DATASTART= 9800000002403000
$(IP21_X)TOPCHECK = 9800000002740000
$(IP21_X)ARCHDIR =
$(IP21_X)IDE_POSTOP=
$(IP21_X)POSTLDOP = cp $$@ $$@.stripped; \
$(STRIP) -s $@.stripped 2>1 > /dev/null || true
$(IP21_X)RELEASEIDE=field.ide.stripped
$(IP22_X)TEXTSTART= 88400000
$(IP22_X)LOADADDR = A8400000
$(IP22_X)DATASTART= A8560000
$(IP22_X)TOPCHECK = A8740000
$(IP22_X)ARCHDIR = fforward isddevices
$(IP22_X)IDE_POSTOP=
$(IP22_X)POSTLDOP =$(ELFTOCOFF)
$(IP22_X)USEELFTOCOFF=yes
$(IP22_X)NOSTRIP = nostrip
$(IP22_X)TLOADADDR=-elspec ../elspec32.IP22
$(IP22_X)ELSPECDEP=elspec32.IP22
$(IP25_X)TEXTSTART= a800000002000000
$(IP25_X)LOADADDR = 9000000002000000
$(IP25_X)DATASTART= 9800000002403000
$(IP25_X)TOPCHECK = 9800000002740000
$(IP25_X)ARCHDIR =
$(IP25_X)IDE_POSTOP=
$(IP25_X)POSTLDOP = cp $$@ $$@.stripped; \
$(STRIP) -s $@.stripped 2>1 > /dev/null || true
$(IP25_X)RELEASEIDE=field.ide.stripped
# ldram depends on ide being in 8-11MB range
$(IP26_X)TEXTSTART= A800000008800000
$(IP26_X)LOADADDR = 9000000008800000
$(IP26_X)DATASTART= 9000000008933000
$(IP26_X)TOPCHECK = 9000000008B00000
$(IP26_X)IDE_POSTOP=
$(IP26_X)POSTLDOP = cp $$@ $$@.stripped; \
$(STRIP) -s $@.stripped 2>1 > /dev/null || true
$(IP26_X)ARCHDIR = fforward isddevices
$(IP26_X)RELEASEIDE=field.ide.stripped
# ldram depends on ide being in 8-11MB range
$(IP28_X)TEXTSTART= 9800000020800000
$(IP28_X)LOADADDR = 9000000020800000
$(IP28_X)DATASTART= 9000000020940000
$(IP28_X)TOPCHECK = 9000000020C00000
$(IP28_X)IDE_POSTOP=
$(IP28_X)POSTLDOP = cp $$@ $$@.stripped; \
$(STRIP) -s $@.stripped 2>1 > /dev/null || true
$(IP28_X)ARCHDIR = fforward isddevices IP26/ecc
$(IP28_X)RELEASEIDE=field.ide.stripped
$(IP30_X)TEXTSTART= A800000020800000
$(IP30_X)LOADADDR = 9000000020800000
$(IP30_X)DATASTART= 9000000020980000
$(IP30_X)TOPCHECK = 9000000020C00000
$(IP30_X)IDE_POSTOP=
$(IP30_X)POSTLDOP =
$(IP30_X)ARCHDIR = godzilla
$(IP30_X)RELEASEIDE=
$(IP32_X)TEXTSTART= 80020000
$(IP32_X)LOADADDR = A0020000
$(IP32_X)DATASTART= A0120000
$(IP32_X)TOPCHECK = A0300000
$(IP32_X)IDE_POSTOP=
$(IP32_X)POSTLDOP =
$(IP32_X)ARCHDIR =
$(IP32_X)RELEASEIDE=
$(IP19_X)LLDOPTS=$(CPUARCH_MI_LDOPTS) -e start -m $(LDADDRS)
$(IP20_X)LLDOPTS=$(CPUARCH_MI_LDOPTS) -e start -m $(LDADDRS)
$(IP21_X)LLDOPTS=$(CPUARCH_MI_LDOPTS) -e start -m $(LDADDRS)
$(IP25_X)LLDOPTS=$(CPUARCH_MI_LDOPTS) -e start -m $(LDADDRS)
$(IP22_X)LLDOPTS=$(CPUARCH_MI_LDOPTS) -e start -m $(LDADDRS)
$(IP26_X)LLDOPTS=$(CPUARCH_MI_LDOPTS) -e start -m $(LDADDRS)
$(IP28_X)LLDOPTS=$(CPUARCH_MI_LDOPTS) -e start -m $(LDADDRS)
$(IP30_X)LLDOPTS=$(CPUARCH_MI_LDOPTS) -e start -m $(LDADDRS)
$(IP32_X)LLDOPTS=$(CPUARCH_MI_LDOPTS) -y_ip32_ser0_tx_cntrl -U -e start -m $(LDADDRS)
# additional commands for various cpus
$(IP20_X)AUXCMDS=IP20/gr2_diagcmds IP20/lg1_diagcmds IP20/vid_diagcmds
$(IP20_X)FIELD_AUXCMDS=IP20/gr2_field_diagcmds IP20/lg1_field_diagcmds IP20/vid_diagcmds
$(IP22_X)AUXCMDS=IP22/gr2_diagcmds IP22/a2_diagcmds IP22/ng1_diagcmds IP22/ng1_mfg_diagcmds
$(IP22_X)FIELD_AUXCMDS=IP22/gr2_diagcmds IP22/mgras_field_diagcmds IP22/a2_field_diagcmds IP22/ng1_diagcmds IP22/comp_diagcmds
$(IP22_X)OPT_AUXCMDS=IP22/gr2_diagcmds IP22/mgras_diagcmds IP22/a2_diagcmds IP22/ng1_diagcmds IP22/ng1_mfg_diagcmds IP22/mco_diagcmds IP22/mgv_diagcmds IP22/comp_diagcmds IP22/cosmo2_diagcmds IP22/vid_diagcmds IP22/vino_diagcmds
$(IP26_X)AUXCMDS= IP26/gr2_diagcmds IP26/a2_diagcmds
$(IP26_X)FIELD_AUXCMDS= IP26/gr2_diagcmds
$(IP28_X)AUXCMDS= IP28/gr2_diagcmds IP28/a2_diagcmds
$(IP28_X)FIELD_AUXCMDS= IP28/gr2_diagcmds IP28/mgras_field_diagcmds IP28/a2_field_diagcmds
$(IP30_X)AUXCMDS= IP30/cpu_diagcmds
$(IP30_X)FIELD_AUXCMDS=
$(IP32_X)AUXCMDS=
$(IP32_X)FIELD_AUXCMDS=
$(IP19_X)MFGSCRIPT= xxx
$(IP20_X)MFGSCRIPT= ip20_
$(IP21_X)MFGSCRIPT= xxx
$(IP25_X)MFGSCRIPT= xxx
$(IP22_X)MFGSCRIPT= ip22exp_ ip24_ ip24asrs_
$(IP26_X)MFGSCRIPT= ip26exp_ ip26asrs_
$(IP28_X)MFGSCRIPT= ip28exp_
$(IP30_X)MFGSCRIPT= xxx
$(IP32_X)MFGSCRIPT= xxx
$(IP19_X)OPT_SCRIPT= xxx
$(IP25_X)OPT_SCRIPT= xxx
$(IP20_X)OPT_SCRIPT= xxx
$(IP21_X)OPT_SCRIPT= xxx
$(IP22_X)OPT_SCRIPT= ip22option_
$(IP26_X)OPT_SCRIPT= xxx
$(IP28_X)OPT_SCRIPT= xxx
$(IP30_X)OPT_SCRIPT= xxx
$(IP32_X)OPT_SCRIPT= xxx
$(IP19_X)EXTRATARGETS=
$(IP20_X)EXTRATARGETS= mfgstuff
$(IP21_X)EXTRATARGETS=
$(IP25_X)EXTRATARGETS=
$(IP22_X)EXTRATARGETS= mfgstuff
$(IP26_X)EXTRATARGETS= mfgstuff
$(IP28_X)EXTRATARGETS= mfgstuff
$(IP30_X)EXTRATARGETS=
$(IP32_X)EXTRATARGETS=
$(IP19_X)FIELD_CPUCMDS = ${CPUBOARD}/cpu_diagcmds
$(IP20_X)FIELD_CPUCMDS = ${CPUBOARD}/cpu_field_diagcmds
$(IP21_X)FIELD_CPUCMDS = ${CPUBOARD}/ide_diagcmds
$(IP25_X)FIELD_CPUCMDS = ${CPUBOARD}/ide_diagcmds
$(IP22_X)FIELD_CPUCMDS = ${CPUBOARD}/cpu_field_diagcmds
$(IP26_X)FIELD_CPUCMDS = ${CPUBOARD}/cpu_field_diagcmds
$(IP28_X)FIELD_CPUCMDS = ${CPUBOARD}/cpu_field_diagcmds
$(IP30_X)FIELD_CPUCMDS = ${CPUBOARD}/cpu_diagcmds
$(IP32_X)FIELD_CPUCMDS = ${CPUBOARD}/cpu_diagcmds
$(IP19_X)MFG_CPUCMDS = ${CPUBOARD}/cpu_diagcmds
$(IP20_X)MFG_CPUCMDS = ${CPUBOARD}/cpu_field_diagcmds
$(IP21_X)MFG_CPUCMDS = ${CPUBOARD}/ide_diagcmds
$(IP25_X)MFG_CPUCMDS = ${CPUBOARD}/ide_diagcmds
$(IP22_X)MFG_CPUCMDS = ${CPUBOARD}/cpu_diagcmds
$(IP26_X)MFG_CPUCMDS = ${CPUBOARD}/cpu_diagcmds
$(IP28_X)MFG_CPUCMDS = ${CPUBOARD}/cpu_diagcmds
$(IP30_X)MFG_CPUCMDS = ${CPUBOARD}/cpu_diagcmds
$(IP32_X)MFG_CPUCMDS = ${CPUBOARD}/cpu_diagcmds
$(IP22_X)MFG_OPTCMDS = ${CPUBOARD}/opt_diagcmds
# $(IP26_X)MFG_OPTCMDS = ${CPUBOARD}/opt_diagcmds
# $(IP28_X)MFG_OPTCMDS = ${CPUBOARD}/opt_diagcmds
# $(IP30_X)MFG_OPTCMDS = ${CPUBOARD}/opt_diagcmds
# need to run 'size' on elf version
SHELL_IDE=shell.ide.elf
FIELD_IDE=field.ide.elf
OPT_IDE=ip22option.ide.elf
$(USEELFTOCOFF)SHELL_IDE=shell.ide
$(USEELFTOCOFF)FIELD_IDE=field.ide
$(USEELFTOCOFF)OPT_IDE=ip22option.ide
SETSYM =$(TOOLROOT)/usr/sbin/setsym
IDBG_OBJ= ${DEPTH}/lib/libsc/$(ENDIANND)$(CPUARCH_PFIX).O/idbg.o
# Macro for 32/64-bit differentiation.
64_Q=\#
${CPUARCH_PFIX}_Q=
# we want the default rule from Makerules
COMMONPREF=ide
default: makelink common ${CPUBOARD} ${ARCHDIR} $(COMMONPREF)default ides chksize
ides: ${DEFAULT_SCRIPT:_=.ide} ${FIELD_SCRIPT:_=.ide}
makelink:
@for i in $(CPUS); do \
(case $$i { \
IP19) if [ ! -l IP19 ] ; then ln -sf EVEREST IP19 ; fi ;;\
IP21) if [ ! -l IP21 ] ; then ln -sf EVEREST IP21 ; fi ;;\
IP25) if [ ! -l IP25 ] ; then ln -sf EVEREST IP25 ; fi ;;\
*) ;; }; ); \
done
.PATH: $(TARGETDIR)
include Makerules
MKDEPRULE= $(EVERYPRODUCT_MKDEPRULE)
$(COMMONTARGS): $(COMMONPREF)$$@
install: default $(EXTRATARGETS)
cd ${TARGETDIR}; \
${INSTALL} -idb 'std.sw.unix diag.sw.diag mach(CPUBOARD=${CPUBOARD}) ${IDE_POSTOP} $(NOSTRIP)' \
-src $(RELEASEIDE) -F /usr/stand ide; \
${INSTALL} -idb 'DSKLESS_CLT mach(CPUBOARD=${CPUBOARD}) $(NOSTRIP)' -src $(RELEASEIDE) -F /sbin/stand ide.$(CPUBOARD); \
${INSTALL} -idb 'DSKLESS_CLT mach(CPUBOARD=${CPUBOARD}) $(NOSTRIP)' -F /usr/stand -lns ../sbin/stand/ide.$(CPUBOARD) ide; \
${INSTALL} -idb "sa $(NOSTRIP)" -src $(RELEASEIDE) -F / 40ide.$(CPUBOARD)
ide_builtins.c: builtins.awk builtins
nawk -F' ' -f builtins.awk TBL=builtins \
builtins > B$$$$.o && mv B$$$$.o $@
${CPUBOARD}_diags.c: ${MFG_CPUCMDS} ${AUXCMDS} Makefile
nawk -F' ' -f builtins.awk TBL=diagcmds \
${MFG_CPUCMDS} ${AUXCMDS} > C$$$$.o && mv C$$$$.o $@
${CPUBOARD}_opt_diags.c: ${MFG_OPTCMDS} ${OPT_AUXCMDS} Makefile
nawk -F' ' -f builtins.awk TBL=diagcmds \
${CPUBOARD}/opt_diagcmds ${OPT_AUXCMDS} > C$$$$.o && mv C$$$$.o $@
${CPUBOARD}_field_diags.c: ${FIELD_CPUCMDS} ${FIELD_AUXCMDS} Makefile
nawk -F' ' -f builtins.awk TBL=diagcmds \
${FIELD_CPUCMDS} ${FIELD_AUXCMDS} > C$$$$.o && mv C$$$$.o $@
# for directories w/o specific
${CPUBOARD}/field.${CPUBOARD}:
(cd ${CPUBOARD}; ln -s field field.${CPUBOARD})
${CPUBOARD}/shell.${CPUBOARD}:
(cd ${CPUBOARD}; ln -s shell shell.${CPUBOARD})
# because of the dependencies, and the awk scripts having no suffix,
# these can't use ${DEFAULT_SCRIPT}
field.ide.${CPUBOARD}.c: ${CPUBOARD}/field.${CPUBOARD}
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
shell.ide.${CPUBOARD}.c: ${CPUBOARD}/shell.${CPUBOARD}
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
ip20.ide.IP20.c: IP20/ip20
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
ip22config.ide.IP22.c: IP22/ip22config
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
ip22exp.ide.IP22.c: IP22/ip22exp
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
ip22option.ide.IP22.c: IP22/ip22option
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
ip26exp.ide.IP26.c: IP26/ip26
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
ip26config.ide.IP26.c: IP26/ip26config
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
ip26asrs.ide.IP26.c: IP26/ip26asrs
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
ip28exp.ide.IP28.c: IP28/ip28exp
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
ip28config.ide.IP28.c: IP28/ip28config
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
gfx.ide.${CPUBOARD}.c: ${CPUBOARD}/gfx
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
oven.ide.${CPUBOARD}.c: ${CPUBOARD}/oven
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
final.ide.${CPUBOARD}.c: ${CPUBOARD}/final
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
ip24.ide.${CPUBOARD}.c: ${CPUBOARD}/ip24
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
ip24asrs.ide.${CPUBOARD}.c: ${CPUBOARD}/ip24asrs
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
mfgstuff: ${MFGSCRIPT:_=.ide}
mfgoptstuff: ${OPT_SCRIPT:_=.ide}
${DEFAULT_SCRIPT:_=.ide}: $(TARGETDIR) ${OBJECTS} ${SHELL_OBJECTS} ${DEFCFG} \
${DEPLIB} ${TARGETDIR}/ide_gram.h $$@.${CPUBOARD}.o
${CCF} -DMFG_USED -c ./common/ide_alloc.c -o $(TARGETDIR)/ide_alloc.o
${NEWVERS} ide ${RELEASE} "${CPUBOARD} IDE $(@:.ide=)" > $(@:.ide=v.c)
${CCF} -c $(@:.ide=v.c) -o $(TARGETDIR)/$(@:.ide=v.o)
rm -f $(@:.ide=v.c)
cd ${TARGETDIR}; ${LD} ${LDRELOC} -o $(@) ${LDOPTS} ${OBJECTS} ${SHELL_OBJECTS} ../${DEFCFG} \
${@:.ide=v.o} $@.${CPUBOARD}.o ${LDLIBS} ${ENDIAN} > ${@):.ide=.map}; \
${NM} -Bn $@ > ${@:.ide=.nm}; $(POSTLDOP)
${FIELD_SCRIPT:_=.ide}: $(TARGETDIR) ${OBJECTS} ${FIELD_OBJECTS} ${DEFCFG} \
${DEPLIB} ${TARGETDIR}/ide_gram.h $$@.${CPUBOARD}.o
${NEWVERS} ide ${RELEASE} "${CPUBOARD} IDE $(@:.ide=)" > $(@:.ide=v.c)
${CCF} -c $(@:.ide=v.c) -o $(TARGETDIR)/$(@:.ide=v.o)
rm -f $(@:.ide=v.c)
cd ${TARGETDIR}; ${LD} ${LDRELOC} -o $(@) ${LDOPTS} ${OBJECTS} ${FIELD_OBJECTS} ../${DEFCFG} \
${@:.ide=v.o} $@.${CPUBOARD}.o ${LDLIBS} ${ENDIAN} > ${@):.ide=.map}; \
${NM} -Bn $@ > ${@:.ide=.nm}; $(POSTLDOP)
shell.ide.DBG: ${DEFAULT_SCRIPT:_=.ide}
cd ${TARGETDIR}; ${LD} ${LDRELOC} -o $@ ${LDOPTS} ${OBJECTS} ${SHELL_OBJECTS} ../${DEFCFG} ../$(IDBG_OBJ) \
shellv.o shell.ide.${CPUBOARD}.o ${LDLIBS} ${ENDIAN} > shell.DBG.map; \
${SETSYM} $@
field.ide.DBG: ${FIELD_SCRIPT:_=.ide}
cd ${TARGETDIR}; ${LD} ${LDRELOC} -o $@ ${LDOPTS} ${OBJECTS} ${FIELD_OBJECTS} ../${DEFCFG} ../$(IDBG_OBJ) \
fieldv.o field.ide.${CPUBOARD}.o ${LDLIBS} ${ENDIAN} > field.DBG.map; \
${SETSYM} $@
${MFGSCRIPT:_=.ide}: $(TARGETDIR) ${OBJECTS} ${SHELL_OBJECTS} ${DEFCFG} \
${DEPLIB} ${TARGETDIR}/ide_gram.h $$@.${CPUBOARD}.o
${NEWVERS} ide ${RELEASE} "${CPUBOARD} IDE $(@:.ide=)" > $(@:.ide=v.c)
${CCF} -c $(@:.ide=v.c) -o $(TARGETDIR)/$(@:.ide=v.o)
rm -f $(@:.ide=v.c)
cd ${TARGETDIR}; ${LD} ${LDRELOC} -o $(@) ${LDOPTS} ${OBJECTS} ${SHELL_OBJECTS} ../${DEFCFG} \
${@:.ide=v.o} $@.${CPUBOARD}.o ${LDLIBS} ${ENDIAN} > ${@):.ide=.map}; \
${NM} -Bn $@ > ${@:.ide=.nm}; $(POSTLDOP)
${OPT_SCRIPT:_=.ide}: $(TARGETDIR) ${OBJECTS} ${OPT_OBJECTS} ${DEFCFG} \
${DEPLIB} ${TARGETDIR}/ide_gram.h $$@.${CPUBOARD}.o
${CCF} -DMFG_USED -c ./common/ide_alloc.c -o $(TARGETDIR)/ide_alloc.o
${NEWVERS} ide ${RELEASE} "${CPUBOARD} IDE $(@:.ide=)" > $(@:.ide=v.c)
${CCF} -c $(@:.ide=v.c) -o $(TARGETDIR)/$(@:.ide=v.o)
rm -f $(@:.ide=v.c)
cd ${TARGETDIR}; ${LD} ${LDRELOC} -o $(@) ${LDOPTS} ${OBJECTS} ${OPT_OBJECTS} ../${DEFCFG} \
${@:.ide=v.o} $@.${CPUBOARD}.o ${LDLIBS} ${ENDIAN} > ${@):.ide=.map}; \
${NM} -Bn $@ > ${@:.ide=.nm}; $(POSTLDOP)
# elspec rules.
elspec32.$(CPUBOARD): Makefile elspec32.template
LC_TEXTSTART=`echo ${TEXTSTART} | tr '[A-F]' '[a-f]'`; \
LC_DATASTART=`echo ${DATASTART} | tr '[A-F]' '[a-f]'`; \
sed -e "s/TEXTADDR/0x$$LC_TEXTSTART/" \
-e "s/DATAADDR/0x$$LC_DATASTART/" elspec32.template > $@
common $(CPUBOARD) cpuboard $(ARCHDIR): ${_FORCE}
@echo "=====\tcd $@; ${MAKE} default"; \
( cd $@; ${MAKE} default );
dprom prom: ${_FORCE}
@for i in $(CPUBOARD) $(ARCHDIR); do \
echo "=====\tcd $$i; $(MAKE) $@"; \
( cd $$i; $(MAKE) $@ ); \
done
tags:
@for i in common $(CPUS) $(ARCHDIR); do \
echo "=====\tcd $$i; $(MAKE) $@"; \
( cd $$i; $(MAKE) $@ ); \
done
$(COMMONPREF)rmtargets: $(COMMONPREF)lrmtargets
# local rmtargets rule needed to remove the targets in the PRODUCT dir
# descend and do clobber so that non-object files get cleaned up.
$(COMMONPREF)lrmtargets:
rm -f $(CPUBOARD)_diags.c; \
rm -rf $(PRODUCT).O $(PRODUCT)p.O; \
for i in common $(CPUBOARD) $(ARCHDIR); do \
echo "====\tcd $$i; make clobber";\
(cd $$i;$(MAKE) clobber);\
done;\
# make sure ide fits the memory map:
chksize: chkshelltext chkshellbss chkfieldtext chkfieldbss
#SIZE_CMD=${SIZE} -B
#GET_TEXT=sed -e 1d | awk '{print $$1}'
#GET_SIZE= sed -e 1d -e 's/^[0-9]*[ ][0-9]*[ ][0-9]*[^ ]//' -e 's/[ ].*$$//'
SIZE_CMD=${SIZE} -B
GET_TEXT=awk '{print $$1}'
GET_SIZE=awk '{print $$NF}'
chkshelltext:
@cd ${TARGETDIR}; left=`( ${SIZE_CMD} ${SHELL_IDE} | ${GET_TEXT}; \
echo 16i ${LOADADDR} + ${DATASTART} - p q ) | dc`; \
if [ "$$left" -gt 0 ]; \
then \
echo shell.ide.LARGE for ${CPUBOARD} text/data overlap by $$left; \
mv shell.ide shell.ide.LARGE; \
exit 1; \
fi
chkshellbss:
@cd ${TARGETDIR}; left=`( ${SIZE_CMD} ${SHELL_IDE} | ${GET_SIZE}; \
echo 16i ${TOPCHECK} ${LOADADDR} - - p q ) | dc`; \
if [ "$$left" -gt 0 ]; \
then \
echo shell.ide.LARGE for ${CPUBOARD} is too large by $$left; \
mv shell.ide shell.ide.LARGE; \
exit 1; \
fi
chkfieldtext:
@cd ${TARGETDIR}; left=`( ${SIZE_CMD} $(FIELD_IDE) | ${GET_TEXT}; \
echo 16i ${LOADADDR} + ${DATASTART} - p q ) | dc`; \
if [ "$$left" -gt 0 ]; \
then \
echo field.ide.LARGE for ${CPUBOARD} text/data overlap by $$left; \
mv field.ide field.ide.LARGE; \
exit 1; \
fi
chkfieldbss:
@cd ${TARGETDIR}; left=`( ${SIZE_CMD} $(FIELD_IDE) | ${GET_SIZE}; \
echo 16i ${TOPCHECK} ${LOADADDR} - - p q ) | dc`; \
if [ "$$left" -gt 0 ]; \
then \
echo field.ide.LARGE for ${CPUBOARD} is too large by $$left; \
mv field.ide field.ide.LARGE; \
exit 1; \
fi
chkopttext:
@cd ${TARGETDIR}; left=`( ${SIZE_CMD} ${OPT_IDE} | ${GET_TEXT}; \
echo 16i ${LOADADDR} + ${DATASTART} - p q ) | dc`; \
if [ "$$left" -gt 0 ]; \
then \
echo ip22option.ide.LARGE for ${CPUBOARD} text/data overlap by $$left; \
mv ip22option.ide ip22option.ide.LARGE; \
exit 1; \
fi
chkoptbss:
@cd ${TARGETDIR}; left=`( ${SIZE_CMD} ${OPT_IDE} | ${GET_SIZE}; \
echo 16i ${TOPCHECK} ${LOADADDR} - - p q ) | dc`; \
if [ "$$left" -gt 0 ]; \
then \
echo ip22option.ide.LARGE for ${CPUBOARD} is too large by $$left; \
mv ip22option.ide ip22option.ide.LARGE; \
exit 1; \
fi