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

211 lines
8.0 KiB
Makefile

#
# Makefile to build the complete standalone system for a particular product,
# which currently means a particular cpu board.
#
# $Revision: 1.125 $
# $Date: 1999/11/01 21:35:24 $
#
DEPTH=.
CTAGFILES = -name '*.[chsy]'
include commondefs
include $(PRODUCTDEFS)
DEF_CSTYLE=
# Allow additional directories to be built based on current product.
#
4D40_X=\#
4D40_O32_X=\#
4DACE1_X=\#
4DACE1_O32_X=\#
4DACE1_64_X=\#
4DMH_X=\#
4DMH_O32_X=\#
EVEREST_X=\#
EVEREST32_X=\#
BB_EVEREST_X=\#
TETON_X=\#
T5_EVEREST_X=\#
RACER_X=\#
RACER_RPROM_X=\#
SN0_X=\#
SN0XXL_X=\#
SN0PROM_X=\#
SN0XXLPROM_X=\#
SN01_X=\#
SN0S_X=\#
T5I2_X=\#
$(PRODUCT)_X=
DEFDIRS_NOSYMMON= include lib sash ide
DEFDIRS= $(DEFDIRS_NOSYMMON) symmon
ELFTOCOFF= tools/elf2coff
$(EVEREST32_X)DIRS= tools lib sash ide IO4prom
$(EVEREST_X)DIRS= lib symmon
$(BB_EVEREST_X)DIRS= tools $(DEFDIRS) IO4prom
$(T5_EVEREST_X)DIRS= tools include lib sash symmon ide IO4prom
$(4D40_X)DIRS= $(ELFTOCOFF) lib symmon
$(4D40_O32_X)DIRS= $(ELFTOCOFF) $(DEFDIRS_NOSYMMON)
$(TETON_X)DIRS= $(DEFDIRS)
$(T5I2_X)DIRS= $(DEFDIRS)
$(4DACE1_X)DIRS= $(ELFTOCOFF) lib symmon
$(4DACE1_O32_X)DIRS= $(ELFTOCOFF) $(DEFDIRS_NOSYMMON)
$(4DACE1_64_X)DIRS= $(ELFTOCOFF) include lib symmon
$(RACER_X)DIRS= tools/convert $(DEFDIRS) IP30prom/Released
$(RACER_RPROM_X)DIRS= tools/convert include lib ide
$(SN0_X)DIRS= lib lib/libkl tools IO6prom IP27prom symmon
$(SN0XXL_X)DIRS= lib lib/libkl tools IO6prom IP27prom symmon
$(SN0PROM_X)DIRS= lib lib/libkl tools IO6prom
$(SN0XXLPROM_X)DIRS= lib lib/libkl tools IO6prom
$(SN01_X)DIRS= lib lib/libkl symmon
$(SN0S_X)DIRS= lib lib/libkl tools symmon IO6prom
$(4DMH_X)DIRS= $(ELFTOCOFF) lib symmon IP32prom
$(4DMH_O32_X)DIRS= $(DEFDIRS_NOSYMMON)
# This is used in the recursive make rules.
PRODDIRS = IP19* IP20* IP21* IP22* IP25* IP26* IP27* IP30* IP32*
EXPORTS_SUBDIRS=lib include
COMMONPREF=stand
# this allows a developer to specify a different default,
# which is useful if you are working on proms, for example
sinclude localdefault
# targets hit by build group--use only EVERYPRODUCT
default install .DEFAULT:
@if [ -z "$$PRODUCT" ] ; then for prod in $(EVERYPRODUCT); \
do PRODUCT=$$prod; export PRODUCT; $(MAKE) $@; done; \
else DIRS=" ${DIRS}"; \
for d in $$DIRS; do \
echo "====\tcd $$d; $(MAKE) $@"; \
( cd $$d; ${MAKE} $@ ); \
done; fi
$(INSTALL) -idb STANDFRIEND -F /usr/include/make -m 444 -src commondefs commondefs.standarcs
$(INSTALL) -idb STANDFRIEND -F /usr/include/make -m 444 -src commonrules commonrules.standarcs
$(INSTALL) -idb STANDFRIEND -F /usr/include/make -m 444 ENDIANdefs MIdefs R4000defs R400064defs R4000N32defs TFP64defs R1000064defs MIPS64defs MIPSN32defs
# other things that can get EXTRAPRODUCT w/o harm
clean rmtargets clobber tags fluff:
@if [ -z "$$PRODUCT" ] ; then for prod in $(EVERYPRODUCT) $(EXTRAPRODUCT); \
do PRODUCT=$$prod; export PRODUCT; $(MAKE) $@; done; \
else DIRS="${DIRS} ${OPTDIRS}"; \
for d in $$DIRS; do \
echo "====\tcd $$d"; \
( cd $$d; ${MAKE} $@ ); \
done; fi
include $(COMMONRULES)
$(COMMONTARGS): $(COMMONPREF)$$@
$(COMMONPREF)clobber: lclobber
# the second line is so that all the product subdirs get clobbered,
# not just the one that $PRODUCT uses
# the 'machine independent' (actually multiple product) dirs are
# handled directly from the clobber rule.
# note that for some of the dirs, PRODUCT gets set 'wrong', but this will
# have to be handled individually in those dirs.
lclobber:
for d in $(EVERYPRODUCT) ; do rm -rf $$d.O $${d}p.O $${d}cp.O; done
@set +e; for d in $(PRODDIRS); do \
(cd $$d && echo ==== $$d clobber && \
case $$d { \
IP19*) PRODUCT=EVEREST;;\
IP20*) PRODUCT=4D40;;\
IP21*) PRODUCT=BB_EVEREST;;\
IP22*) PRODUCT=4DACE1;;\
IP26*) PRODUCT=TETON;;\
IP27XXL) PRODUCT=SN0XXL;;\
IP27*) PRODUCT=SN0;;\
IP28*) PRODUCT=T5I2;;\
IP25*) PRODUCT=T5_EVEREST;;\
IP30*) PRODUCT=RACER;;\
IP32*) PRODUCT=4DMH;;\
} && export PRODUCT && $(MAKE) clobber); done
# descend into the subdirs where prom libs are made, and make the
# pseudo targets that make the libs; then make the prom.
dprom prom fprom.bin:
@echo "====\tcd tools/convert"; (cd tools/convert; $(MAKE)) ;
@echo "====\tcd lib"; (cd lib; $(MAKE)) ;
@echo "====\tcd ide"; (cd ide; $(MAKE) prom);
@echo "====\tcd $(CPUBOARD)prom"; (cd $(CPUBOARD)prom; $(MAKE) $@);
# make all IP27prom targets
# The IP27prom contains an embedded copy of the IO6prom - this is because
# the O200's (SN00) have only one physical prom - no separate physical
# IO6prom part. In order for the IP27prom image to fit on the flash part,
# some graphics libraries must be left out of the IO6prom during
# compilation. However, bigger SN0's (i.e. Onyx2's) need those graphics
# libraries in the IO6prom they use.
#
# We solve this by having 2 separate PRODUCTs - when the IO6prom is built
# with product SN0, graphics libraries are not included. When compiled
# with product SN0PROM, graphics libraries _are_ included. It is critical
# that the IO6prom images which are checked in are built with product
# SN0PROM, _but_ that the IP27prom images are built with product SN0 so
# they get the stripped-down version of the IO6prom. (Note that this
# means that the IO6prom directory must be built with both products - one
# for the IO6prom images, and one for inclusion in the IP27prom images).
#
# For the 256+p proms, SN0XXL corresponds to SN0 and SN0XXLPROM
# corresponds to SN0PROM.
IP27proms:
@for prod in SN0 SN0PROM SN0XXL SN0XXLPROM; do \
echo "====\tcd lib for product $$prod"; \
(cd lib; $(MAKE) PRODUCT=$$prod) ; \
echo "====\tcd IO6prom for product $$prod"; \
(cd IO6prom; $(MAKE) PRODUCT=$$prod) ; \
done
@for prod in SN0 SN0XXL; do \
echo "====\tcd IP27prom for product $$prod"; \
(cd IP27prom; $(MAKE) PRODUCT=$$prod) ; \
done
# make the IP27prom binary images
IP27binaries: IP27proms
@echo "====\tcd IO6prom; p_modify SN0*.uunc; make uunc"; \
(cd IO6prom; p_modify SN0*.uunc; $(MAKE) PRODUCT=SN0PROM uunc; $(MAKE) PRODUCT=SN0XXLPROM uunc);
@echo "====\tcd IP27prom; p_modify SN0*.uunc; make uunc"; \
(cd IP27prom; p_modify SN0*.uunc; $(MAKE) PRODUCT=SN0 uunc; $(MAKE) PRODUCT=SN0XXL uunc);
@echo "Binary images created. To check images into the tree,"
@echo "first edit the include/release.mk file as described in the"
@echo "file. Then do a p_integrate and p_finalize."
# make all IP30prom targets
IP30proms:
@echo "====\tcd tools/convert"; (cd tools/convert; $(MAKE)) ;
@echo "====\tcd lib"; (cd lib; $(MAKE)) ;
@echo "====\tcd ide"; (cd ide; $(MAKE) prom);
@echo "====\tcd $(CPUBOARD)prom"; (cd $(CPUBOARD)prom; $(MAKE));
@echo "====\tcd lib; make PRODUCT=RACER_RPROM"; (cd lib; $(MAKE) PRODUCT=RACER_RPROM);
@echo "====\tcd ide; make PRODUCT=RACER_RPROM prom"; (cd ide; $(MAKE) PRODUCT=RACER_RPROM prom);
@echo "====\tcd $(CPUBOARD)prom; make PRODUCT=RACER_RPROM rprom"; (cd $(CPUBOARD)prom; $(MAKE) PRODUCT=RACER_RPROM rprom);
@echo "====\tcd $(CPUBOARD)prom; make IP30prom.bin"; (cd $(CPUBOARD)prom; $(MAKE) IP30prom.bin);
# exports no longer a nop, because we now export the libraries
# needed to build fx, so fx moves completely over to the irix
# ism, to avoid cross ism symlinks. If PRODUCT is not set, do
# all, else do just the one for PRODUCT.
# can't use $(EXPORTS_SUBDIRS_MAKERULE), because it has a leading @...
# this is somewhat overkill, since all arcs will make is a single
# library for all products at the moment, but it is worthwhile
# preparing for the future, and all the lib stuff has to built
# at some point anyway...
# note that R[34]000defs in arcs are a superset of those in
# classic, so we install just the arcs versions
exports:
if [ -z "$(PRODUCT)" ]; then for prod in $(EVERYPRODUCT); do \
(PRODUCT=$$prod; export PRODUCT; \
for d in $(EXPORTS_SUBDIRS); do $(SUBDIR_MAKERULE); done ) ; \
done; else for d in $(EXPORTS_SUBDIRS); do $(SUBDIR_MAKERULE); done ; fi
$(INSTALL) -F /usr/include/make -m 444 -src commondefs commondefs.standarcs
$(INSTALL) -F /usr/include/make -m 444 -src commonrules commonrules.standarcs
$(INSTALL) -F /usr/include/make -m 444 ENDIANdefs MIdefs R4000defs R400064defs R4000N32defs TFP64defs R1000064defs MIPS64defs MIPSN32defs
TAGS: $(COMMONPREF)TAGS