Files
Arquivotheca.SunOS-4.1.4/sys/boot/bootblk/Makefile
seta75D ff309bfe1c Init
2021-10-11 18:37:13 -03:00

207 lines
6.1 KiB
Makefile

#
# @(#)Makefile 1.1 94/10/31 SMI
#
MACH= `mach`
ARCH= `arch`
CC= /bin/cc -${ARCH}
AS= as -${MACH}
RM= rm -f
DESTDIR=
SYSDIR= ../..
LIBDIR= ../lib
MONDIR= ../mon
LIBXX= libxx.a
BBSU= ../${ARCH}/srt0xx.o
BBSU1= ../${ARCH}/srt0.o
LINTOBJ= ${LIBDIR}/llib-lsa.ln
ARCHDEST= ${LIBDIR}/${ARCH}
BOOTDEFS= "-Dprintf=(*romp->v_printf)" "-Dputchar=(*romp->v_putchar)"
CPPDEFS= -D${ARCH}
COPTS= -O -Qoption as -O
CFLAGS= ${COPTS} ${BOOTDEFS}
LDFLAGS= -N -e _start
LDIR= /usr/lib/lint
LINT1= ${LDIR}/lint1
LCOPTS= -C -Dlint ${CPPOPTS} -DLOAD=0x${LOAD}
LOPTS= -hxb -n
LTAIL= egrep -v 'struct/union .* never defined' | \
egrep -v 'possible pointer alignment problem' ; true
# BRELOC is text segment start for final stage (2nd or 3rd stage) boots
# Note that this must be higher than the kernel's edata and should be
# higher than the kernel's bss so the bss can be cleared
BRELOC= 240000
# LOAD is text segment start for booted user programs
LOAD= 4000
PROGS= bootxy bootsd installboot
SUN2BB= sun2.bb
SUN2PROGS= ${PROGS} ${SUN2BB}
SUN3PROGS= ${PROGS}
SUN4PROGS= ${PROGS}
ALL= archdep
all: ${ALL}
archdep:
@case ${ARCH} in \
sun2) ${MAKE} -e ${MFLAGS} ${SUN2PROGS};;\
sun3) ${MAKE} -e ${MFLAGS} ${SUN3PROGS};;\
sun4) ${MAKE} -e ${MFLAGS} ${SUN4PROGS};;\
esac
#
# The sun2 tftp boot block
# NOTE: The sun2/50 prom ethernet driver seems to be writing to location
# a0400 when it gets opened, so we change the relocation value to a
# slightly lower value to avoid getting our program overwritten.
#
SUN2BBRELOC= 9e000
SUN2BBSRCS= bootnd.c udp.c tftp.c
SUN2BBFILES= ${SUN2BBSRCS:.c=.o}
${SUN2BB}: ${BBSU1} ${SUN2BBFILES} ${LIBXX} sizecheck
ld ${LDFLAGS} -T ${SUN2BBRELOC} ${BBSU1} ${SUN2BBFILES} \
${ARCHDEST}/${LIBXX} -lc
sizecheck
cp a.out b.out;strip b.out;dd if=b.out of=$@ ibs=32 skip=1
# this little piece of chicanery gets the right version of bootsd made...
# the first time thru, a recursive make is done;
# the second time thru, BOOTSD is resolved to the arch-dependent filename
#
BOOTSD=FRC
bootsd: ${BOOTSD}
@if [ ${BOOTSD} = FRC ]; then \
case ${ARCH} in \
sun2) ${MAKE} -e ${MFLAGS} $@ BOOTSD=big.bootsd ;;\
sun3) ${MAKE} -e ${MFLAGS} $@ BOOTSD=bootpr ;;\
sun4) ${MAKE} -e ${MFLAGS} $@ BOOTSD=bootpr ;;\
esac \
else \
cp ${ARCHDEST}/${BOOTSD} ${ARCHDEST}/$@; \
fi
# We need to search libc.a to complete this load since the C
# compiler generates calls to ulmult.
#
bootxy: ${BBSU1} bootblk.o confxy.o ${LIBXX} sizecheck
ld ${LDFLAGS} -T ${BRELOC} -o ${ARCHDEST}/$@ ${BBSU1} ${ARCHDEST}/bootblk.o \
${ARCHDEST}/confxy.o ${ARCHDEST}/${LIBXX} -lc
sizecheck ${ARCHDEST}/$@
big.bootsd: ${BBSU1} bootblk.o confsd.o ${LIBXX} sizecheck
ld ${LDFLAGS} -T ${BRELOC} -o ${ARCHDEST}/$@ ${BBSU1} ${ARCHDEST}/bootblk.o \
${ARCHDEST}/confsd.o ${ARCHDEST}/${LIBXX} -lc
sizecheck ${ARCHDEST}/$@
bootpr: ${BBSU1} bootblk.o confpr.o ${LIBXX} sizecheck
ld ${LDFLAGS} -T ${BRELOC} -o ${ARCHDEST}/$@ ${BBSU1} ${ARCHDEST}/bootblk.o \
${ARCHDEST}/confpr.o ${ARCHDEST}/${LIBXX} -lc
sizecheck ${ARCHDEST}/$@
bootxd: ${BBSU1} bootblk.o confxd.o ${LIBXX} sizecheck
ld ${LDFLAGS} -T ${BRELOC} -o ${ARCHDEST}/$@ ${BBSU1} ${ARCHDEST}/bootblk.o \
${ARCHDEST}/confxd.o ${ARCHDEST}/${LIBXX} -lc
sizecheck ${ARCHDEST}/$@
# FRC ensures we just do it once.
bootblk.o: FRC
${MAKE} ARCH=${ARCH} ${ARCHDEST}/bootblk.o
${ARCHDEST}/bootblk.o: ../boot/bootblk.c
${CC} -c ${CFLAGS} -DLOAD=0x${LOAD} -D${ARCH} -DBRELOC=0x${BRELOC} -o ${ARCHDEST}/bootblk.o ../boot/bootblk.c
installboot: ../boot/installboot.c
${CC} ${COPTS} -o ${ARCHDEST}/installboot ../boot/installboot.c
# FRC ensures we just do it once.
confxy.o: FRC
${MAKE} ARCH=${ARCH} ${ARCHDEST}/confxy.o
${ARCHDEST}/confxy.o: ../boot/confxx.c
cd ../boot; $(MAKE) $(MFLAGS) confxy.o
# FRC ensures we just do it once.
confxd.o: FRC
${MAKE} ARCH=${ARCH} ${ARCHDEST}/confxd.o
${ARCHDEST}/confxd.o: ../boot/confxx.c
cd ../boot; $(MAKE) $(MFLAGS) confxd.o
# FRC ensures we just do it once.
confsd.o: FRC
${MAKE} ARCH=${ARCH} ${ARCHDEST}/confsd.o
${ARCHDEST}/confsd.o: ../boot/confxx.c
cd ../boot; $(MAKE) $(MFLAGS) confsd.o
# FRC ensures we just do it once.
confpr.o: FRC
${MAKE} ARCH=${ARCH} ${ARCHDEST}/confpr.o
${ARCHDEST}/confpr.o: ../boot/confpr.c
cd ../boot; $(MAKE) $(MFLAGS) confpr.o
# FRC ensures we just do it once.
# This version gets built to include the block list used by installboot.
${BBSU}: FRC
cd ../${ARCH}; ${MAKE} -e $(@F)
# This version gets built without the block list used by installboot.
${BBSU1}: FRC
cd ../${ARCH}; ${MAKE} -e $(@F)
${LIBXX}: FRC
cd ../lib; $(MAKE) ARCH=${ARCH} ${LIBXX}
sizecheck: ../bootblk/sizecheck.sh
cp ../bootblk/sizecheck.sh sizecheck
chmod a+xw sizecheck
rawboot:
cd ../boot; $(MAKE) boot
cp ../boot/boot .; strip boot
dd if=boot of=rawboot bs=64 skip=1;
clean:
${RM} ${LIBDIR}/sun2/bootxy ${LIBDIR}/sun2/bootsd ${LIBDIR}/sun2/installboot ${LIBDIR}/sun2/rawboot
${RM} ${LIBDIR}/sun2/*.o ${LIBDIR}/sun2/core ${LIBDIR}/sun2/a.out
${RM} ${LIBDIR}/sun3/bootxy ${LIBDIR}/sun3/bootsd ${LIBDIR}/sun3/installboot ${LIBDIR}/sun3/rawboot
${RM} ${LIBDIR}/sun3/*.o ${LIBDIR}/sun3/core ${LIBDIR}/sun3/a.out
${RM} ${LIBDIR}/sun4/bootxy ${LIBDIR}/sun4/bootsd ${LIBDIR}/sun4/installboot ${LIBDIR}/sun4/rawboot
${RM} ${LIBDIR}/sun4/*.o ${LIBDIR}/sun4/core ${LIBDIR}/sun4/a.out
${LINTOBJ}:
cd ${LIBDIR}; ${MAKE} -e ${MFLAGS} lint
lint: ${LINTOBJ} boot.c readfile.c
@${RM} lint.ln
@-(for i in readfile.c ; do \
${CC} -E ${LCOPTS} $$i | \
${LINT1} ${LOPTS} >> lint.ln; done ) 2>&1 | ${LTAIL}
lint -Dlint ${CPPOPTS} ${LOPTS} boot.c lint.ln ${LINTOBJ} | ${LTAIL}
@${RM} lint.ln
depend:
install_h:
FRC:
install: ${ALL}
-mkdir ${DESTDIR}/tftpboot && \
chown bin ${DESTDIR}/tftpboot && \
chmod 755 ${DESTDIR}/tftpboot
if [ ${ARCH} = sun2 ]; then \
install ${SUN2BB} ${DESTDIR}/tftpboot; \
fi
-mkdir ${DESTDIR}/usr/mdec && \
chown bin ${DESTDIR}/usr/mdec && \
chmod 755 ${DESTDIR}/usr/mdec
install -c ${ARCHDEST}/bootxy ${DESTDIR}/usr/mdec/bootxy
install -c ${ARCHDEST}/bootsd ${DESTDIR}/usr/mdec/bootsd
install -c ${ARCHDEST}/bootsd ${DESTDIR}/usr/mdec/rawboot
install -c -m 755 ${ARCHDEST}/installboot ${DESTDIR}/usr/mdec/installboot