📄 makefile
字号:
## @(#)Makefile 1.1 92/07/30 SMI#MACH= `mach`ARCH= `arch`CC= /bin/cc -${ARCH}AS= as -${MACH}RM= rm -fDESTDIR= SYSDIR= ../..LIBDIR= ../libMONDIR= ../monLIBXX= libxx.aBBSU= ../${ARCH}/srt0xx.oBBSU1= ../${ARCH}/srt0.oLINTOBJ= ${LIBDIR}/llib-lsa.lnARCHDEST= ${LIBDIR}/${ARCH}BOOTDEFS= "-Dprintf=(*romp->v_printf)" "-Dputchar=(*romp->v_putchar)"CPPDEFS= -D${ARCH}COPTS= -O -Qoption as -OCFLAGS= ${COPTS} ${BOOTDEFS}LDFLAGS= -N -e _startLDIR= /usr/lib/lintLINT1= ${LDIR}/lint1LCOPTS= -C -Dlint ${CPPOPTS} -DLOAD=0x${LOAD} LOPTS= -hxb -nLTAIL= 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 clearedBRELOC= 240000# LOAD is text segment start for booted user programsLOAD= 4000PROGS= bootxy bootsd installbootSUN2BB= sun2.bbSUN2PROGS= ${PROGS} ${SUN2BB}SUN3PROGS= ${PROGS}SUN4PROGS= ${PROGS}ALL= archdepall: ${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= 9e000SUN2BBSRCS= bootnd.c udp.c tftp.cSUN2BBFILES= ${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=FRCbootsd: ${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.cinstallboot: ../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 sizecheckrawboot: 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} lintlint: ${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.lndepend: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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -