1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234
|
## Setup
include Config
VERSION = 1.3.6
# Debug mode (spam/verbose)
DEBUG = 0
# make install vars
ROOT =
PREFIX = usr/local
MANDIR = man
# command used to get root (needed for tarball creation)
GETROOT = fakeroot
# We use fixed addresses to avoid overlap when relocating
# and other trouble with initrd
# Load the bootstrap at 2Mb
TEXTADDR = 0x200000
# Malloc block at 3Mb -> 4Mb
MALLOCADDR = 0x300000
MALLOCSIZE = 0x100000
# Load kernel at 20Mb and ramdisk just after
KERNELADDR = 0x01400000
# Set this to the prefix of your cross-compiler, if you have one.
# Else leave it empty.
#
CROSS =
# The flags for the yaboot binary.
#
YBCFLAGS = -Os $(CFLAGS) -nostdinc -Wall -isystem `gcc -print-file-name=include` -fsigned-char
YBCFLAGS += -DVERSION=\"${VERSION}\" #"
YBCFLAGS += -DTEXTADDR=$(TEXTADDR) -DDEBUG=$(DEBUG)
YBCFLAGS += -DMALLOCADDR=$(MALLOCADDR) -DMALLOCSIZE=$(MALLOCSIZE)
YBCFLAGS += -DKERNELADDR=$(KERNELADDR)
YBCFLAGS += -I ./include
ifeq ($(CONFIG_COLOR_TEXT),y)
YBCFLAGS += -DCONFIG_COLOR_TEXT
endif
ifeq ($(CONFIG_SET_COLORMAP),y)
YBCFLAGS += -DCONFIG_SET_COLORMAP
endif
ifeq ($(USE_MD5_PASSWORDS),y)
YBCFLAGS += -DUSE_MD5_PASSWORDS
endif
ifeq ($(CONFIG_FS_XFS),y)
YBCFLAGS += -DCONFIG_FS_XFS
endif
ifeq ($(CONFIG_FS_REISERFS),y)
YBCFLAGS += -DCONFIG_FS_REISERFS
endif
# Link flags
#
LFLAGS = -Ttext $(TEXTADDR) -Bstatic
# Libraries
#
LLIBS = lib/libext2fs.a
# For compiling userland utils
#
UCFLAGS = -Os $(CFLAGS) -Wall -I/usr/include
# For compiling build-tools that run on the host.
#
HOSTCC = gcc
HOSTCFLAGS = -O2 $(CFLAGS) -Wall -I/usr/include
## End of configuration section
OBJS = second/crt0.o second/yaboot.o second/cache.o second/prom.o second/file.o \
second/partition.o second/fs.o second/cfg.o second/setjmp.o second/cmdline.o \
second/fs_of.o second/fs_ext2.o second/fs_iso.o second/iso_util.o \
lib/nosys.o lib/string.o lib/strtol.o lib/vsprintf.o lib/ctype.o lib/malloc.o lib/strstr.o
ifeq ($(USE_MD5_PASSWORDS),y)
OBJS += second/md5.o
endif
ifeq ($(CONFIG_FS_XFS),y)
OBJS += second/fs_xfs.o
endif
ifeq ($(CONFIG_FS_REISERFS),y)
OBJS += second/fs_reiserfs.o
endif
# compilation
CC := $(CROSS)gcc
LD := $(CROSS)ld
AS := $(CROSS)as
OBJCOPY := $(CROSS)objcopy
lgcc = `$(CC) -print-libgcc-file-name`
all: yaboot addnote mkofboot
yaboot: $(OBJS)
$(LD) $(LFLAGS) $(OBJS) $(LLIBS) $(lgcc) -o second/$@
chmod -x second/yaboot
addnote:
$(CC) $(UCFLAGS) -o util/addnote util/addnote.c
elfextract:
$(HOSTCC) $(HOSTCFLAGS) -o util/elfextract util/elfextract.c
mkofboot:
ln -sf ybin ybin/mkofboot
@if [ $$(grep '^VERSION=' ybin/ybin | cut -f2 -d=) != ${VERSION} ] ; then \
echo "ybin/ybin: warning: VERSION mismatch"; \
false; \
fi
%.o: %.c
$(CC) $(YBCFLAGS) -c -o $@ $<
%.o: %.S
$(CC) $(YBCFLAGS) -D__ASSEMBLY__ -c -o $@ $<
dep:
makedepend -Iinclude *.c lib/*.c util/*.c gui/*.c
docs:
make -C doc all
bindist: all
mkdir ../yaboot-binary-${VERSION}
$(GETROOT) make ROOT=../yaboot-binary-${VERSION} install
mkdir -p -m 755 ../yaboot-binary-${VERSION}/usr/local/share/doc/yaboot
cp -a COPYING ../yaboot-binary-${VERSION}/usr/local/share/doc/yaboot/COPYING
cp -a README ../yaboot-binary-${VERSION}/usr/local/share/doc/yaboot/README
cp -a doc/README.rs6000 ../yaboot-binary-${VERSION}/usr/local/share/doc/yaboot/README.rs6000
cp -a doc/yaboot-howto.html ../yaboot-binary-${VERSION}/usr/local/share/doc/yaboot/yaboot-howto.html
cp -a doc/yaboot-howto.sgml ../yaboot-binary-${VERSION}/usr/local/share/doc/yaboot/yaboot-howto.sgml
mv ../yaboot-binary-${VERSION}/etc/yaboot.conf ../yaboot-binary-${VERSION}/usr/local/share/doc/yaboot/
rmdir ../yaboot-binary-${VERSION}/etc
$(GETROOT) tar -C ../yaboot-binary-${VERSION} -zcvpf ../yaboot-binary-${VERSION}.tar.gz .
rm -rf ../yaboot-binary-${VERSION}
clean:
rm -f second/yaboot util/addnote util/elfextract $(OBJS)
find . -name '#*' | xargs rm -f
find . -name '.#*' | xargs rm -f
find . -name '*~' | xargs rm -f
find . -name '*.swp' | xargs rm -f
-gunzip man/*.gz
rm -rf man.deb
chmod 755 ybin/ybin ybin/ofpath ybin/yabootconfig
chmod -R u+rwX,go=rX .
chmod a-w COPYING
cleandocs:
make -C doc clean
maintclean: clean cleandocs
release: docs bindist clean
strip: all
strip second/yaboot
strip --remove-section=.comment second/yaboot
strip util/addnote
strip --remove-section=.comment --remove-section=.note util/addnote
install: all strip
install -d -o root -g root -m 0755 ${ROOT}/etc/
install -d -o root -g root -m 0755 ${ROOT}/${PREFIX}/sbin/
install -d -o root -g root -m 0755 ${ROOT}/${PREFIX}/lib
install -d -o root -g root -m 0755 ${ROOT}/${PREFIX}/lib/yaboot
install -d -o root -g root -m 0755 ${ROOT}/${PREFIX}/${MANDIR}/man5/
install -d -o root -g root -m 0755 ${ROOT}/${PREFIX}/${MANDIR}/man8/
install -o root -g root -m 0644 second/yaboot ${ROOT}/$(PREFIX)/lib/yaboot
install -o root -g root -m 0755 util/addnote ${ROOT}/${PREFIX}/lib/yaboot/addnote
install -o root -g root -m 0644 first/ofboot ${ROOT}/${PREFIX}/lib/yaboot/ofboot
install -o root -g root -m 0755 ybin/ofpath ${ROOT}/${PREFIX}/sbin/ofpath
install -o root -g root -m 0755 ybin/ybin ${ROOT}/${PREFIX}/sbin/ybin
install -o root -g root -m 0755 ybin/yabootconfig ${ROOT}/${PREFIX}/sbin/yabootconfig
rm -f ${ROOT}/${PREFIX}/sbin/mkofboot
ln -s ybin ${ROOT}/${PREFIX}/sbin/mkofboot
@gzip -9 man/*.[58]
install -o root -g root -m 0644 man/bootstrap.8.gz ${ROOT}/${PREFIX}/${MANDIR}/man8/bootstrap.8.gz
install -o root -g root -m 0644 man/mkofboot.8.gz ${ROOT}/${PREFIX}/${MANDIR}/man8/mkofboot.8.gz
install -o root -g root -m 0644 man/ofpath.8.gz ${ROOT}/${PREFIX}/${MANDIR}/man8/ofpath.8.gz
install -o root -g root -m 0644 man/yaboot.8.gz ${ROOT}/${PREFIX}/${MANDIR}/man8/yaboot.8.gz
install -o root -g root -m 0644 man/yabootconfig.8.gz ${ROOT}/${PREFIX}/${MANDIR}/man8/yabootconfig.8.gz
install -o root -g root -m 0644 man/ybin.8.gz ${ROOT}/${PREFIX}/${MANDIR}/man8/ybin.8.gz
install -o root -g root -m 0644 man/yaboot.conf.5.gz ${ROOT}/${PREFIX}/${MANDIR}/man5/yaboot.conf.5.gz
@gunzip man/*.gz
@if [ ! -e ${ROOT}/etc/yaboot.conf ] ; then \
echo "install -o root -g root -m 0644 etc/yaboot.conf ${ROOT}/etc/yaboot.conf"; \
install -o root -g root -m 0644 etc/yaboot.conf ${ROOT}/etc/yaboot.conf; \
else \
echo "/etc/yaboot.conf already exists, leaving it alone"; \
fi
@echo
@echo "Installation successful."
@echo
@echo "An example /etc/yaboot.conf has been installed (unless /etc/yaboot.conf already existed"
@echo "You may either alter that file to match your system, or alternatively run yabootconfig"
@echo "yabootconfig will generate a simple and valid /etc/yaboot.conf for your system"
@echo
deinstall:
rm -f ${ROOT}/${PREFIX}/sbin/ofpath
rm -f ${ROOT}/${PREFIX}/sbin/ybin
rm -f ${ROOT}/${PREFIX}/sbin/yabootconfig
rm -f ${ROOT}/${PREFIX}/sbin/mkofboot
rm -f ${ROOT}/${PREFIX}/lib/yaboot/yaboot
rm -f ${ROOT}/${PREFIX}/lib/yaboot/ofboot
rm -f ${ROOT}/${PREFIX}/lib/yaboot/addnote
@rmdir ${ROOT}/${PREFIX}/lib/yaboot || true
rm -f ${ROOT}/${PREFIX}/${MANDIR}/man8/bootstrap.8.gz
rm -f ${ROOT}/${PREFIX}/${MANDIR}/man8/mkofboot.8.gz
rm -f ${ROOT}/${PREFIX}/${MANDIR}/man8/ofpath.8.gz
rm -f ${ROOT}/${PREFIX}/${MANDIR}/man8/yaboot.8.gz
rm -f ${ROOT}/${PREFIX}/${MANDIR}/man8/yabootconfig.8.gz
rm -f ${ROOT}/${PREFIX}/${MANDIR}/man8/ybin.8.gz
rm -f ${ROOT}/${PREFIX}/${MANDIR}/man5/yaboot.conf.5.gz
@if [ -L ${ROOT}/boot/yaboot -a ! -e ${ROOT}/boot/yaboot ] ; then rm -f ${ROOT}/boot/yaboot ; fi
@if [ -L ${ROOT}/boot/ofboot.b -a ! -e ${ROOT}/boot/ofboot.b ] ; then rm -f ${ROOT}/boot/ofboot.b ; fi
@echo
@echo "Deinstall successful."
@echo "${ROOT}/etc/yaboot.conf has not been removed, you may remove it yourself if you wish."
uninstall: deinstall
|