| Commit | Line | Data |
|---|---|---|
| 423d6aa0 MD |
1 | # Works like the normal loader except the kernel, modules, and other loader |
| 2 | # files are loaded via TFTP instead of NFS. | |
| 423d6aa0 MD |
3 | |
| 4 | PROG= loader_tftp | |
| 5 | STRIP= | |
| 6 | NEWVERSWHAT= "bootstrap loader" i386 | |
| 7 | BINDIR?= /boot | |
| 8 | INSTALLFLAGS= -b | |
| 9 | ||
| 10 | # Notes: the 'loader' client is brought in with a virtual base of (typically) | |
| 11 | # 0xa000 and a code offset of 0x0. The btxldr is loaded at 0x200000 (?). | |
| 12 | # | |
| 13 | # MEM_BTX_USR_ARG is not used in the boot2->loader stage, only in the | |
| 14 | # boot1->boot2 stage (XXX what about the use in cdboot and pxeboot?) | |
| 15 | # | |
| 423d6aa0 MD |
16 | |
| 17 | .PATH: ${.CURDIR}/../loader | |
| 18 | # architecture-specific loader code | |
| 19 | SRCS= main.c conf.c | |
| 20 | ||
| 423d6aa0 MD |
21 | CFLAGS+= -DLOADER_TFTP_SUPPORT |
| 22 | #CFLAGS+= -DLOADER_NFS_SUPPORT | |
| 23 | ||
| 24 | # Enable PnP and ISA-PnP code. | |
| 25 | HAVE_PNP= yes | |
| 26 | HAVE_ISABUS= yes | |
| 27 | ||
| 116b7e3c MD |
28 | BOOT_DLOADER= yes |
| 29 | CFLAGS+= -I${.CURDIR}/../../dloader -I${.CURDIR}/../../dloader/i386 | |
| 30 | .if exists(${.OBJDIR}/../../dloader/libdloader.a) | |
| 31 | LIBDLOADER= ${.OBJDIR}/../../dloader/libdloader.a | |
| 423d6aa0 | 32 | .else |
| 116b7e3c | 33 | LIBDLOADER= ${.CURDIR}/../../dloader/libdloader.a |
| 423d6aa0 | 34 | .endif |
| 423d6aa0 MD |
35 | |
| 36 | .if defined(LOADER_BZIP2_SUPPORT) | |
| 37 | CFLAGS+= -DLOADER_BZIP2_SUPPORT | |
| 38 | .endif | |
| 39 | .if !defined(LOADER_NO_GZIP_SUPPORT) | |
| 40 | CFLAGS+= -DLOADER_GZIP_SUPPORT | |
| 41 | .endif | |
| 42 | ||
| 43 | # Always add MI sources | |
| 44 | .PATH: ${.CURDIR}/../../common | |
| 45 | .include <${.CURDIR}/../../common/Makefile.inc> | |
| 46 | CFLAGS+= -I${.CURDIR}/../../common | |
| 47 | CFLAGS+= -I${.CURDIR}/../../.. -I. | |
| 48 | ||
| 49 | CLEANFILES+= vers.c vers.o ${PROG}.list ${PROG}.bin ${PROG}.sym ${PROG}.help | |
| 50 | ||
| 4849597a | 51 | CFLAGS+= -Wall |
| 208fbaaf JM |
52 | COMPILER_LDFLAGS= -nostdlib -static |
| 53 | COMPILER_LDFLAGS+= -Wl,--script,${.CURDIR}/../loader/loader.ldscript | |
| 423d6aa0 MD |
54 | |
| 55 | # i386 standalone support library | |
| 56 | LIBI386= ${.OBJDIR}/../libi386/libi386.a | |
| 57 | CFLAGS+= -I${.CURDIR}/.. | |
| 58 | ||
| 59 | # where to get libstand from | |
| 60 | #XXX need a better way to do this | |
| 61 | LIBSTAND= ${.CURDIR}/../../../../lib/libstand/libstand.a | |
| 62 | .if !exists(${LIBSTAND}) | |
| 63 | LIBSTAND= ${.OBJDIR}/../../../../lib/libstand/libstand.a | |
| 64 | .if !exists(${LIBSTAND}) | |
| 65 | LIBSTAND= -lstand | |
| 66 | .endif | |
| 67 | .endif | |
| 68 | CFLAGS+= -I${.CURDIR}/../../../../lib/libstand/ | |
| 69 | ||
| 70 | # BTX components | |
| 71 | .if exists(${.OBJDIR}/../btx) | |
| 72 | BTXDIR= ${.OBJDIR}/../btx | |
| 73 | .else | |
| 74 | BTXDIR= ${.CURDIR}/../btx | |
| 75 | .endif | |
| 76 | BTXLDR= ${BTXDIR}/btxldr/btxldr | |
| 77 | BTXKERN= ${BTXDIR}/btx/btx | |
| 78 | BTXCRT= ${BTXDIR}/lib/crt0.o | |
| 79 | CFLAGS+= -I${.CURDIR}/../btx/lib | |
| 80 | ||
| 423d6aa0 MD |
81 | # Debug me! |
| 82 | #CFLAGS+= -g | |
| 423d6aa0 | 83 | |
| a8a5ffd4 | 84 | vers.c: ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version |
| 423d6aa0 | 85 | sh ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version ${NEWVERSWHAT} |
| a8a5ffd4 JM |
86 | |
| 87 | vers.o: vers.c | |
| 423d6aa0 MD |
88 | ${CC} ${CFLAGS} -c vers.c |
| 89 | ||
| 90 | ${PROG}: ${PROG}.bin ${BTXLDR} ${BTXKERN} ${BTXCRT} | |
| 91 | btxld -v -f aout -e ${LOADER_ADDRESS} -o ${.TARGET} -l ${BTXLDR} \ | |
| 92 | -b ${BTXKERN} ${PROG}.bin | |
| 423d6aa0 MD |
93 | |
| 94 | ${PROG}.bin: ${PROG}.sym | |
| 95 | cp ${.ALLSRC} ${.TARGET} | |
| 208fbaaf | 96 | strip -R .comment -R .note -R .note.gnu.gold-version ${.TARGET} |
| 423d6aa0 MD |
97 | |
| 98 | ${PROG}.help: help.common help.i386 | |
| 99 | cat ${.ALLSRC} | awk -f ${.CURDIR}/../../common/merge_help.awk > ${.TARGET} | |
| 100 | ||
| 116b7e3c MD |
101 | .PATH: ${.CURDIR}/../../dloader |
| 102 | FILES= ${PROG}.help loader.conf loader-bootp.conf | |
| 423d6aa0 MD |
103 | FILESDIR_loader.conf= /boot/defaults |
| 104 | FILESDIR_loader-bootp.conf= /boot/defaults | |
| 105 | ||
| 116b7e3c MD |
106 | .if !exists(${DESTDIR}/boot/dloader.rc) |
| 107 | FILES+= ${.CURDIR}/../loader/dloader.rc | |
| 423d6aa0 MD |
108 | .endif |
| 109 | ||
| 110 | .include "../Makefile.inc" | |
| 111 | ||
| 112 | # Cannot use ${OBJS} above this line | |
| 113 | .include <bsd.prog.mk> | |
| 114 | ||
| 116b7e3c | 115 | ${PROG}.sym: ${OBJS} ${LIBI386} ${LIBSTAND} ${LIBDLOADER} vers.o |
| 4849597a | 116 | ${CC} ${COMPILER_LDFLAGS} -o ${.TARGET} ${BTXCRT} ${OBJS} vers.o \ |
| 116b7e3c | 117 | ${LIBDLOADER} ${LIBI386} ${LIBSTAND} |
| 423d6aa0 MD |
118 | |
| 119 | # If it's not there, don't consider it a target | |
| 120 | .if exists(${.CURDIR}/../../../i386/include) | |
| 121 | beforedepend ${OBJS}: machine | |
| 122 | ||
| 123 | machine: | |
| 124 | ${LN} -sf ${.CURDIR}/../../../i386/include machine | |
| 125 | ||
| 126 | .endif | |
| 127 | ||
| 128 | CLEANFILES+= machine |