211 lines
8.0 KiB
Makefile
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
|