6 # Debug mode (spam/verbose)
12 # command used to get root (needed for tarball creation)
15 # We use fixed addresses to avoid overlap when relocating
16 # and other trouble with initrd
18 # Load the bootstrap at 1Mb
22 # Load kernel and ramdisk at as low as possible
23 KERNELADDR = 0x00000000
25 # Set this to the prefix of your cross-compiler, if you have one.
26 # Else leave it empty.
33 OBJCOPY := $(CROSS)objcopy
35 # The flags for the yaboot binary.
37 YBCFLAGS = -Os -m32 $(CFLAGS) -nostdinc -Wall -isystem `$(CC) -m32 -print-file-name=include` -fsigned-char
38 YBCFLAGS += -DVERSION="\"${VERSION}${VERSIONEXTRA}\""
39 YBCFLAGS += -DTEXTADDR=$(TEXTADDR) -DDEBUG=$(DEBUG)
40 YBCFLAGS += -DMALLOCADDR=$(MALLOCADDR) -DMALLOCSIZE=$(MALLOCSIZE)
41 YBCFLAGS += -DKERNELADDR=$(KERNELADDR)
42 YBCFLAGS += -Werror -fdiagnostics-show-option
43 YBCFLAGS += -I ./include
45 ifeq ($(CONFIG_COLOR_TEXT),y)
46 YBCFLAGS += -DCONFIG_COLOR_TEXT
49 ifeq ($(CONFIG_SET_COLORMAP),y)
50 YBCFLAGS += -DCONFIG_SET_COLORMAP
53 ifeq ($(USE_MD5_PASSWORDS),y)
54 YBCFLAGS += -DUSE_MD5_PASSWORDS
57 ifeq ($(CONFIG_FS_XFS),y)
58 YBCFLAGS += -DCONFIG_FS_XFS
61 ifeq ($(CONFIG_FS_REISERFS),y)
62 YBCFLAGS += -DCONFIG_FS_REISERFS
67 LFLAGS = -Ttext $(TEXTADDR) -Bstatic -melf32ppclinux
73 # For compiling userland utils
75 UCFLAGS = -Os $(CFLAGS) -Wall -I/usr/include
76 UCFLAGS += -Werror -fdiagnostics-show-option
78 # For compiling build-tools that run on the host.
81 HOSTCFLAGS = -O2 $(CFLAGS) -Wall -I/usr/include
83 ## End of configuration section
85 OBJS = second/crt0.o second/yaboot.o second/cache.o second/prom.o second/file.o \
86 second/partition.o second/fs.o second/cfg.o second/setjmp.o second/cmdline.o \
87 second/fs_of.o second/fs_ext2.o second/fs_iso.o second/fs_swap.o \
90 lib/nosys.o lib/string.o lib/strtol.o lib/vsprintf.o lib/ctype.o lib/malloc.o lib/strstr.o
92 ifeq ($(USE_MD5_PASSWORDS),y)
96 ifeq ($(CONFIG_FS_XFS),y)
97 OBJS += second/fs_xfs.o
100 ifeq ($(CONFIG_FS_REISERFS),y)
101 OBJS += second/fs_reiserfs.o
105 lgcc = `$(CC) -m32 -print-libgcc-file-name`
107 all: yaboot addnote mkofboot
110 $(LD) $(LFLAGS) $(OBJS) $(LLIBS) $(lgcc) -o second/$@
111 chmod -x second/yaboot
114 $(CC) $(UCFLAGS) -o util/addnote util/addnote.c
117 $(CC) $(UCFLAGS) -o util/elfextract util/elfextract.c
120 ln -sf ybin ybin/mkofboot
121 @if [ $$(grep '^VERSION=' ybin/ybin | cut -f2 -d=) != ${VERSION} ] ; then \
122 echo "ybin/ybin: warning: VERSION mismatch"; \
127 $(CC) $(YBCFLAGS) -c -o $@ $<
130 $(CC) $(YBCFLAGS) -D__ASSEMBLY__ -c -o $@ $<
133 makedepend -Iinclude *.c lib/*.c util/*.c gui/*.c
139 mkdir ../yaboot-binary-${VERSION}
140 $(GETROOT) make ROOT=../yaboot-binary-${VERSION} install
141 mkdir -p -m 755 ../yaboot-binary-${VERSION}/usr/local/share/doc/yaboot
142 cp -a COPYING ../yaboot-binary-${VERSION}/usr/local/share/doc/yaboot/COPYING
143 cp -a README ../yaboot-binary-${VERSION}/usr/local/share/doc/yaboot/README
144 cp -a doc/README.rs6000 ../yaboot-binary-${VERSION}/usr/local/share/doc/yaboot/README.rs6000
145 cp -a doc/yaboot-howto.html ../yaboot-binary-${VERSION}/usr/local/share/doc/yaboot/yaboot-howto.html
146 cp -a doc/yaboot-howto.sgml ../yaboot-binary-${VERSION}/usr/local/share/doc/yaboot/yaboot-howto.sgml
147 mv ../yaboot-binary-${VERSION}/etc/yaboot.conf ../yaboot-binary-${VERSION}/usr/local/share/doc/yaboot/
148 rmdir ../yaboot-binary-${VERSION}/etc
149 $(GETROOT) tar -C ../yaboot-binary-${VERSION} -zcvpf ../yaboot-binary-${VERSION}.tar.gz .
150 rm -rf ../yaboot-binary-${VERSION}
153 rm -f second/yaboot util/addnote util/elfextract $(OBJS)
154 find . -not -path './\{arch\}*' -name '#*' | xargs rm -f
155 find . -not -path './\{arch\}*' -name '.#*' | xargs rm -f
156 find . -not -path './\{arch\}*' -name '*~' | xargs rm -f
157 find . -not -path './\{arch\}*' -name '*.swp' | xargs rm -f
158 find . -not -path './\{arch\}*' -name ',,*' | xargs rm -rf
165 ## removes arch revision control crap, only to be called for making
166 ## release tarballs. arch should have a export command like cvs...
170 find . -type d -name .arch-ids | xargs rm -rf
171 rm -f 0arch-timestamps0
173 maintclean: clean cleandocs
175 release: docs bindist clean
179 strip --remove-section=.comment second/yaboot
181 strip --remove-section=.comment --remove-section=.note util/addnote
184 install -d -o root -g root -m 0755 ${ROOT}/etc/
185 install -d -o root -g root -m 0755 ${ROOT}/${PREFIX}/sbin/
186 install -d -o root -g root -m 0755 ${ROOT}/${PREFIX}/lib
187 install -d -o root -g root -m 0755 ${ROOT}/${PREFIX}/lib/yaboot
188 install -d -o root -g root -m 0755 ${ROOT}/${PREFIX}/${MANDIR}/man5/
189 install -d -o root -g root -m 0755 ${ROOT}/${PREFIX}/${MANDIR}/man8/
190 install -o root -g root -m 0644 second/yaboot ${ROOT}/$(PREFIX)/lib/yaboot
191 install -o root -g root -m 0755 util/addnote ${ROOT}/${PREFIX}/lib/yaboot/addnote
192 install -o root -g root -m 0644 first/ofboot ${ROOT}/${PREFIX}/lib/yaboot/ofboot
193 install -o root -g root -m 0755 ybin/ofpath ${ROOT}/${PREFIX}/sbin/ofpath
194 install -o root -g root -m 0755 ybin/ybin ${ROOT}/${PREFIX}/sbin/ybin
195 install -o root -g root -m 0755 ybin/yabootconfig ${ROOT}/${PREFIX}/sbin/yabootconfig
196 rm -f ${ROOT}/${PREFIX}/sbin/mkofboot
197 ln -s ybin ${ROOT}/${PREFIX}/sbin/mkofboot
199 install -o root -g root -m 0644 man/bootstrap.8.gz ${ROOT}/${PREFIX}/${MANDIR}/man8/bootstrap.8.gz
200 install -o root -g root -m 0644 man/mkofboot.8.gz ${ROOT}/${PREFIX}/${MANDIR}/man8/mkofboot.8.gz
201 install -o root -g root -m 0644 man/ofpath.8.gz ${ROOT}/${PREFIX}/${MANDIR}/man8/ofpath.8.gz
202 install -o root -g root -m 0644 man/yaboot.8.gz ${ROOT}/${PREFIX}/${MANDIR}/man8/yaboot.8.gz
203 install -o root -g root -m 0644 man/yabootconfig.8.gz ${ROOT}/${PREFIX}/${MANDIR}/man8/yabootconfig.8.gz
204 install -o root -g root -m 0644 man/ybin.8.gz ${ROOT}/${PREFIX}/${MANDIR}/man8/ybin.8.gz
205 install -o root -g root -m 0644 man/yaboot.conf.5.gz ${ROOT}/${PREFIX}/${MANDIR}/man5/yaboot.conf.5.gz
207 @if [ ! -e ${ROOT}/etc/yaboot.conf ] ; then \
208 echo "install -o root -g root -m 0644 etc/yaboot.conf ${ROOT}/etc/yaboot.conf"; \
209 install -o root -g root -m 0644 etc/yaboot.conf ${ROOT}/etc/yaboot.conf; \
211 echo "/etc/yaboot.conf already exists, leaving it alone"; \
214 @echo "Installation successful."
216 @echo "An example /etc/yaboot.conf has been installed (unless /etc/yaboot.conf already existed)"
217 @echo "You may either alter that file to match your system, or alternatively run yabootconfig"
218 @echo "yabootconfig will generate a simple and valid /etc/yaboot.conf for your system"
222 rm -f ${ROOT}/${PREFIX}/sbin/ofpath
223 rm -f ${ROOT}/${PREFIX}/sbin/ybin
224 rm -f ${ROOT}/${PREFIX}/sbin/yabootconfig
225 rm -f ${ROOT}/${PREFIX}/sbin/mkofboot
226 rm -f ${ROOT}/${PREFIX}/lib/yaboot/yaboot
227 rm -f ${ROOT}/${PREFIX}/lib/yaboot/ofboot
228 rm -f ${ROOT}/${PREFIX}/lib/yaboot/addnote
229 @rmdir ${ROOT}/${PREFIX}/lib/yaboot || true
230 rm -f ${ROOT}/${PREFIX}/${MANDIR}/man8/bootstrap.8.gz
231 rm -f ${ROOT}/${PREFIX}/${MANDIR}/man8/mkofboot.8.gz
232 rm -f ${ROOT}/${PREFIX}/${MANDIR}/man8/ofpath.8.gz
233 rm -f ${ROOT}/${PREFIX}/${MANDIR}/man8/yaboot.8.gz
234 rm -f ${ROOT}/${PREFIX}/${MANDIR}/man8/yabootconfig.8.gz
235 rm -f ${ROOT}/${PREFIX}/${MANDIR}/man8/ybin.8.gz
236 rm -f ${ROOT}/${PREFIX}/${MANDIR}/man5/yaboot.conf.5.gz
237 @if [ -L ${ROOT}/boot/yaboot -a ! -e ${ROOT}/boot/yaboot ] ; then rm -f ${ROOT}/boot/yaboot ; fi
238 @if [ -L ${ROOT}/boot/ofboot.b -a ! -e ${ROOT}/boot/ofboot.b ] ; then rm -f ${ROOT}/boot/ofboot.b ; fi
240 @echo "Deinstall successful."
241 @echo "${ROOT}/etc/yaboot.conf has not been removed, you may remove it yourself if you wish."