419 lines
14 KiB
Makefile
419 lines
14 KiB
Makefile
#
|
|
# Makefile for standalone version of ide
|
|
#
|
|
#ident "stand/arcs/ide/Makefile: $Revision: 1.4 $"
|
|
|
|
DIAGDEPTH=.
|
|
LLIBDEPTH=../
|
|
include Makedefs
|
|
include ${ENDIANDEFS}
|
|
|
|
DEFAULT_SCRIPT= shell_
|
|
FIELD_SCRIPT= field_
|
|
RELEASEIDE=field.ide
|
|
|
|
IP20MFGIDE=ip20.ide
|
|
IP22MFGIDE=ip22.ide oven.ide final.ide
|
|
IP26MFGIDE=ip26.ide
|
|
IP28MFGIDE=ip28.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}
|
|
CFILES= $(GEN_CFILES)
|
|
|
|
LLDIRT= $(GEN_CFILES) $(TARGETDIR)/*.map $(TARGETDIR)/*.nm \
|
|
${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 = \#
|
|
|
|
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
|
|
$(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
|
|
$(IP22_X)IDE_POSTOP=
|
|
$(IP22_X)POSTLDOP =$(ELFTOCOFF)
|
|
$(IP22_X)USEELFTOCOFF=yes
|
|
$(IP22_X)NOSTRIP = nostrip
|
|
|
|
$(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
|
|
$(IP26_X)RELEASEIDE=field.ide.stripped
|
|
|
|
# ldram depends on ide being in 8-11MB range
|
|
$(IP28_X)TEXTSTART= 9800000008800000
|
|
$(IP28_X)LOADADDR = 9000000008800000
|
|
$(IP28_X)DATASTART= 9000000008933000
|
|
$(IP28_X)TOPCHECK = 9000000008B00000
|
|
$(IP28_X)IDE_POSTOP=
|
|
$(IP28_X)POSTLDOP = cp $$@ $$@.stripped; \
|
|
$(STRIP) -s $@.stripped 2>1 > /dev/null || true
|
|
$(IP28_X)ARCHDIR = fforward 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=
|
|
|
|
$(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)
|
|
|
|
# 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/mgras_diagcmds IP22/vid_diagcmds IP22/mgv_diagcmds
|
|
$(IP22_X)FIELD_AUXCMDS=IP22/gr2_diagcmds IP22/mgras_diagcmds IP22/a2_field_diagcmds IP22/ng1_diagcmds IP22/comp_diagcmds IP22/vid_diagcmds
|
|
|
|
$(IP26_X)AUXCMDS= IP26/gr2_diagcmds IP26/vid_diagcmds
|
|
$(IP26_X)FIELD_AUXCMDS= IP26/gr2_diagcmds
|
|
|
|
$(IP28_X)AUXCMDS= IP28/gr2_diagcmds IP28/vid_diagcmds
|
|
$(IP28_X)FIELD_AUXCMDS= IP28/gr2_diagcmds
|
|
|
|
$(IP30_X)AUXCMDS= IP30/cpu_diagcmds
|
|
$(IP30_X)FIELD_AUXCMDS=
|
|
|
|
$(IP19_X)MFGSCRIPT= xxx
|
|
$(IP20_X)MFGSCRIPT= ip20_
|
|
$(IP21_X)MFGSCRIPT= xxx
|
|
$(IP25_X)MFGSCRIPT= xxx
|
|
$(IP22_X)MFGSCRIPT= ip22_ oven_ final_ ip24_ ip24asrs_ mgvshell_
|
|
$(IP26_X)MFGSCRIPT= ip26_ ip26config_ ip26asrs_ ip26final_
|
|
$(IP28_X)MFGSCRIPT= ip28_ ip28config_ ip28asrs_ ip28final_
|
|
$(IP30_X)MFGSCRIPT= 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=
|
|
|
|
$(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
|
|
|
|
$(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
|
|
|
|
# need to run 'size' on elf version
|
|
SHELL_IDE=shell.ide.elf
|
|
FIELD_IDE=field.ide.elf
|
|
MGVSHELL_IDE=mgvshell.ide.elf
|
|
$(USEELFTOCOFF)SHELL_IDE=shell.ide
|
|
$(USEELFTOCOFF)FIELD_IDE=field.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 /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 /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}
|
|
nawk -F' ' -f builtins.awk TBL=diagcmds \
|
|
${MFG_CPUCMDS} ${AUXCMDS} > C$$$$.o && mv C$$$$.o $@
|
|
|
|
${CPUBOARD}_field_diags.c: ${FIELD_CPUCMDS} ${FIELD_AUXCMDS}
|
|
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 > $@
|
|
ip22.ide.IP22.c: IP22/ip22
|
|
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
|
|
ip26.ide.IP26.c: IP26/ip26
|
|
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
|
|
ip26final.ide.IP26.c: IP26/ip26final
|
|
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
|
|
ip26asrs.ide.IP26.c: IP26/ip26asrs
|
|
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
|
|
ip26config.ide.IP26.c: IP26/ip26config
|
|
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
|
|
ip28.ide.IP28.c: IP28/ip28
|
|
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
|
|
ip28final.ide.IP28.c: IP28/ip28final
|
|
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
|
|
ip28asrs.ide.IP28.c: IP28/ip28asrs
|
|
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 > $@
|
|
mgvshell.ide.${CPUBOARD}.c: ${CPUBOARD}/mgvshell
|
|
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
|
|
|
|
mfgstuff: ${MFGSCRIPT:_=.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)
|
|
|
|
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} ${MGVSHELL_IDE} | ${GET_TEXT}; \
|
|
echo 16i ${LOADADDR} + ${DATASTART} - p q ) | dc`; \
|
|
if [ "$$left" -gt 0 ]; \
|
|
then \
|
|
echo mgvshell.ide.LARGE for ${CPUBOARD} text/data overlap by $$left; \
|
|
mv mgvmgvshell.ide shell.ide.LARGE; \
|
|
exit 1; \
|
|
fi
|
|
|
|
chkshellbss:
|
|
@cd ${TARGETDIR}; left=`( ${SIZE_CMD} ${MGVSHELL_IDE} | ${GET_SIZE}; \
|
|
echo 16i ${TOPCHECK} ${LOADADDR} - - p q ) | dc`; \
|
|
if [ "$$left" -gt 0 ]; \
|
|
then \
|
|
echo mgvshell.ide.LARGE for ${CPUBOARD} is too large by $$left; \
|
|
mv mgvmgvshell.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
|