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

611 lines
21 KiB
Makefile

#
# Makefile for standalone version of ide
#
#ident "stand/arcs/ide/Makefile: $Revision: 1.1 $"
DIAGDEPTH=.
LLIBDEPTH=../
include Makedefs
include ${ENDIANDEFS}
DEFAULT_SCRIPT= shell_
FIELD_SCRIPT= field_
RELEASEIDE=field.ide
OPTIONIDE=ip22impoption.ide
IP20MFGIDE=ip20.ide
IP22MFGIDE=ip22config.ide ip22imp.ide ip22impoption.ide
IP26MFGIDE=
IP28MFGIDE=ip28config.ide ip28imp.ide ip28impoption.ide
IP30MFGIDE=ip30impcached.ide ip30impoptioncached.ide ip30debugcached.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}
DEBUG_CFILES= ${CPUBOARD}_debug_diags.c
DEBUG_OBJECTS= ${DEBUG_CFILES:.c=.o}
CORE_CFILES= ${CPUBOARD}_core_diags.c
CORE_OBJECTS= ${CORE_CFILES:.c=.o}
CFILES= $(GEN_CFILES)
LLDIRT= $(GEN_CFILES) $(TARGETDIR)/*.map $(TARGETDIR)/*.nm \
${OPT_CFILES} ${DEBUG_CFILES} ${SHELL_CFILES} ${FIELD_CFILES} \
${CORE_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 = \#
# To activate Modular IDE builds, "setenv IDE_TYPE MODULAR" before make ...
IP22_MODULAR_Z = \#
$(CPUBOARD)_X=
$(CPUBOARD)_$(COMPILATION_MODEL)Y=
$(CPUBOARD)_$(IDE_TYPE)_Z=
# 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
$(IP22_MODULAR_Z)TEXTSTART= 88800000
$(IP22_MODULAR_Z)DATASTART= 88A00000
$(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= a800000020800000
$(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
$(IP28_X)LIBSC=$(CPULIBSC)
$(IP28_X)DLIBSC=$(DCPULIBSC)
$(IP30_X)TEXTSTART= A800000020800000
$(IP30_X)LOADADDR = A800000020800000
$(IP30_X)DATASTART= A800000020A00000
$(IP30_X)TOPCHECK = A800000020C00000
$(IP30_X)IDE_POSTOP=
$(IP30_X)POSTLDOP = cp $$@ $$@.stripped; \
$(STRIP) -s $@.stripped 2>1 > /dev/null || true
$(IP30_X)ARCHDIR = godzilla
$(IP30_X)RELEASEIDE=field.ide.stripped
$(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/mgras_diagcmds IP22/a2_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/mgras_optdiagcmds IP22/mgv_diagcmds IP22/cosmo2_diagcmds
$(IP26_X)AUXCMDS= IP26/gr2_diagcmds IP26/a2_diagcmds
$(IP26_X)FIELD_AUXCMDS= IP26/gr2_diagcmds
$(IP28_X)AUXCMDS= IP28/mgras_diagcmds IP28/a2_diagcmds
$(IP28_X)FIELD_AUXCMDS= IP28/gr2_diagcmds IP28/mgras_field_diagcmds IP28/a2_field_diagcmds
$(IP28_X)OPT_AUXCMDS=IP22/mgras_optdiagcmds
$(IP30_X)AUXCMDS= IP30/mgras_diagcmds
$(IP30_X)FIELD_AUXCMDS=
$(IP30_X)OPT_AUXCMDS=IP30/mgras_optdiagcmds
$(IP30_X)DEBUG_AUXCMDS=
$(IP32_X)AUXCMDS=
$(IP32_X)FIELD_AUXCMDS=
OPT_SCRIPT=xxx
DEBUG_SCRIPT=xxx
$(IP19_X)MFGSCRIPT= xxx
$(IP20_X)MFGSCRIPT= ip20_
$(IP21_X)MFGSCRIPT= xxx
$(IP25_X)MFGSCRIPT= xxx
$(IP22_X)MFGSCRIPT= ip22config_ ip22imp_ ip24_ ip24asrs_
$(IP26_X)MFGSCRIPT= xxx
$(IP28_X)MFGSCRIPT= ip28config_ ip28imp_
$(IP30_X)MFGSCRIPT= ip30impcached_
$(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= ip22impoption_
$(IP26_X)OPT_SCRIPT= xxx
$(IP28_X)OPT_SCRIPT= ip28impoption_
$(IP30_X)OPT_SCRIPT= ip30impoptioncached_
$(IP32_X)OPT_SCRIPT= xxx
$(IP19_X)DEBUG_SCRIPT= xxx
$(IP25_X)DEBUG_SCRIPT= xxx
$(IP20_X)DEBUG_SCRIPT= xxx
$(IP21_X)DEBUG_SCRIPT= xxx
$(IP22_X)DEBUG_SCRIPT= xxx
$(IP26_X)DEBUG_SCRIPT= xxx
$(IP28_X)DEBUG_SCRIPT= xxx
$(IP30_X)DEBUG_SCRIPT= ip30debug_
$(IP32_X)DEBUG_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= mfgstuff
$(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
$(IP30_X)MFG_DEBUGCMDS = ${CPUBOARD}/cpu_debug_diagcmds
# need to run 'size' on elf version
SHELL_IDE=shell.ide.elf
FIELD_IDE=field.ide.elf
OPT_IDE=ip22impoption.ide.elf
$(USEELFTOCOFF)SHELL_IDE=shell.ide
$(USEELFTOCOFF)FIELD_IDE=field.ide
$(USEELFTOCOFF)OPT_IDE=ip22impoption.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}
# Modular IDE
modular: core modules
# core parts of Modular IDE
core: common elf core_cpuboard core_archdir core.ide
core_cpuboard:
@echo "=====\tcd ${CPUBOARD}; ${MAKE} core"; \
( cd ${CPUBOARD}; ${MAKE} core );
core_archdir:
@echo "=====\tcd ${ARCHDIR}; ${MAKE} core"; \
( cd ${ARCHDIR}; ${MAKE} core );
# module pieces of Modular IDE
modules: module module_archdir
@echo "=====\tcd ${CPUBOARD}/$@; ${MAKE} default"; \
( cd ${CPUBOARD}/$@; ${MAKE} default );
module_archdir:
@echo "=====\tcd ${ARCHDIR}; ${MAKE} module"; \
( cd ${ARCHDIR}; ${MAKE} module );
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}_debug_diags.c: ${MFG_CPUCMDS} ${MFG_DEBUGCMDS} ${DEBUG_AUXCMDS} Makefile
nawk -F' ' -f builtins.awk TBL=diagcmds \
${MFG_CPUCMDS} ${CPUBOARD}/cpu_debug_diagcmds ${DEBUG_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 $@
${CPUBOARD}_core_diags.c: ${CORE_CMDS}
nawk -F' ' -f builtins.awk TBL=diagcmds \
${CORE_CMDS} > 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 > $@
core.ide.${CPUBOARD}.c: ${CPUBOARD}/core.${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 > $@
ip22imp.ide.IP22.c: IP22/ip22imp
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
ip22impoption.ide.IP22.c: IP22/ip22impoption
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
ip26config.ide.IP26.c: IP26/ip26config
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
ip28imp.ide.IP28.c: IP28/ip28imp
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
ip28impoption.ide.IP28.c: IP28/ip28impoption
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 > $@
ip30impcached.ide.IP30.c: IP30/ip30imp
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
ip30impoptioncached.ide.IP30.c: IP30/ip30impoption
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
ip30debugcached.ide.IP30.c: IP30/ip30debug
sed 's/"/\\"/g' $? | sed '/^#/d' | awk -f startup.awk > $@
mfgstuff: ${MFGSCRIPT:_=.ide}
mfgoptstuff: ${OPT_SCRIPT:_=.ide}
mfgdebugstuff: ${DEBUG_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)
${DEBUG_SCRIPT:_=.ide}: $(TARGETDIR) ${OBJECTS} ${DEBUG_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} ${DEBUG_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 > $@
# core.ide rule
CORELIBS= libidecmn.a libidecore.a $(LIBSK) $(LIBSC) libideelf.a
CORE_DEPLIB= $(TARGETDIR)/libidecmn.a $(TARGETDIR)/libidecore.a \
$(DLIBSK) $(DLIBSC) $(TARGETDIR)/libideelf.a
CORE_LDOPTS= -all -woff 15
CORE_UNDEFINED= -U
core.ide: $(TARGETDIR) ${OBJECTS} $(CORE_OBJECTS) $(CORE_OBJECTS_MISC) \
${DEFCFG} ${CORE_DEPLIB} $$@.${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} ${CORE_LDOPTS} $(CORE_UNDEFINED) \
${OBJECTS} $(CORE_OBJECTS) $(CORE_OBJECTS_MISC) \
../${DEFCFG} ${@:.ide=v.o} $@.${CPUBOARD}.o ${CORELIBS} \
${ENDIAN} > ${@):.ide=.map}; \
${NM} -Bn $@ > ${@:.ide=.nm}
# the elf dir is needed for core
elf: ${_FORCE}
@echo "=====\tcd $@; ${MAKE} default"; \
( cd $@; ${MAKE} default );
# common module pieces
module: ${_FORCE}
@echo "=====\tcd $@; ${MAKE} default"; \
( cd $@; ${MAKE} default );
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 ip22impoption.ide.LARGE for ${CPUBOARD} text/data overlap by $$left; \
mv ip22impoption.ide ip22impoption.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 ip22impoption.ide.LARGE for ${CPUBOARD} is too large by $$left; \
mv ip22impoption.ide ip22impoption.ide.LARGE; \
exit 1; \
fi