-## Configuration section
+## Setup
-VERSION = 1.3.2
-# Debug mode (verbose)
+include Config
+
+VERSION = 1.3.16
+# 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
-# Enable text colors
-CONFIG_COLOR_TEXT = y
-# Enable colormap setup
-CONFIG_SET_COLORMAP = y
-# Enable splash screen
-CONFIG_SPLASH_SCREEN = n
-# Enable md5 passwords
-USE_MD5_PASSWORDS = y
-
# We use fixed addresses to avoid overlap when relocating
# and other trouble with initrd
# Malloc block at 3Mb -> 4Mb
MALLOCADDR = 0x300000
MALLOCSIZE = 0x100000
-# Load kernel at 20Mb and ramdisk just after
-KERNELADDR = 0x01400000
+# Load kernel and ramdisk at real-base. If there is overlap, will retry until find open space
+KERNELADDR = 0x00C00000
# Set this to the prefix of your cross-compiler, if you have one.
# Else leave it empty.
#
-CROSS =
+CROSS =
+
+CC := $(CROSS)gcc
+LD := $(CROSS)ld
+AS := $(CROSS)as
+OBJCOPY := $(CROSS)objcopy
-# The flags for the target compiler.
+# The flags for the yaboot binary.
#
-CFLAGS = -Os -nostdinc -Wall -isystem `gcc -print-file-name=include` -fsigned-char
-CFLAGS += -DVERSION=\"${VERSION}\" #"
-CFLAGS += -DTEXTADDR=$(TEXTADDR) -DDEBUG=$(DEBUG)
-CFLAGS += -DMALLOCADDR=$(MALLOCADDR) -DMALLOCSIZE=$(MALLOCSIZE)
-CFLAGS += -DKERNELADDR=$(KERNELADDR)
-CFLAGS += -I ./include
+YBCFLAGS = -Os $(CFLAGS) -nostdinc -Wall -isystem `$(CC) -m32 -print-file-name=include` -fsigned-char
+YBCFLAGS += -DVERSION=\"${VERSION}${VERSIONEXTRA}\" #"
+YBCFLAGS += -DTEXTADDR=$(TEXTADDR) -DDEBUG=$(DEBUG)
+YBCFLAGS += -DMALLOCADDR=$(MALLOCADDR) -DMALLOCSIZE=$(MALLOCSIZE)
+YBCFLAGS += -DKERNELADDR=$(KERNELADDR)
+YBCFLAGS += -I ./include
ifeq ($(CONFIG_COLOR_TEXT),y)
-CFLAGS += -DCONFIG_COLOR_TEXT
+YBCFLAGS += -DCONFIG_COLOR_TEXT
endif
ifeq ($(CONFIG_SET_COLORMAP),y)
-CFLAGS += -DCONFIG_SET_COLORMAP
+YBCFLAGS += -DCONFIG_SET_COLORMAP
endif
-ifeq ($(CONFIG_SPLASH_SCREEN),y)
-CFLAGS += -DCONFIG_SPLASH_SCREEN
+ifeq ($(USE_MD5_PASSWORDS),y)
+YBCFLAGS += -DUSE_MD5_PASSWORDS
endif
-ifeq ($(USE_MD5_PASSWORDS),y)
-CFLAGS += -DUSE_MD5_PASSWORDS
+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
+LFLAGS = -Ttext $(TEXTADDR) -Bstatic -melf32ppclinux
# Libraries
#
-LLIBS = lib/libext2fs.a
-#LLIBS = -l ext2fs
+LLIBS = -lext2fs
+
+# For compiling userland utils
+#
+UCFLAGS = -Os $(CFLAGS) -Wall -I/usr/include
# For compiling build-tools that run on the host.
#
HOSTCC = gcc
-HOSTCFLAGS = -I/usr/include $(CFLAGS)
+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_reiserfs.o second/fs_iso.o second/iso_util.o \
+ second/fs_of.o second/fs_ext2.o second/fs_iso.o second/fs_swap.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 ($(CONFIG_SPLASH_SCREEN),y)
-OBJS += second/gui/effects.o second/gui/colormap.o second/gui/video.o second/gui/pcx.o
-endif
-
ifeq ($(USE_MD5_PASSWORDS),y)
OBJS += second/md5.o
endif
-CC = $(CROSS)gcc
-LD = $(CROSS)ld
-AS = $(CROSS)as
-OBJCOPY = $(CROSS)objcopy
+ifeq ($(CONFIG_FS_XFS),y)
+OBJS += second/fs_xfs.o
+endif
-all: yaboot addnote mkofboot
+ifeq ($(CONFIG_FS_REISERFS),y)
+OBJS += second/fs_reiserfs.o
+endif
-lgcc = `$(CC) -print-libgcc-file-name`
+# compilation
+lgcc = `$(CC) -m32 -print-libgcc-file-name`
+
+all: yaboot addnote mkofboot
yaboot: $(OBJS)
$(LD) $(LFLAGS) $(OBJS) $(LLIBS) $(lgcc) -o second/$@
chmod -x second/yaboot
addnote:
- $(HOSTCC) $(HOSTCFLAGS) -o util/addnote util/addnote.c
+ $(CC) $(UCFLAGS) -o util/addnote util/addnote.c
elfextract:
- $(HOSTCC) $(HOSTCFLAGS) -o util/elfextract util/elfextract.c
+ $(CC) $(UCFLAGS) -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) $(CFLAGS) -c -o $@ $<
+ $(CC) $(YBCFLAGS) -c -o $@ $<
%.o: %.S
- $(CC) $(CFLAGS) -D__ASSEMBLY__ -c -o $@ $<
+ $(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
+ $(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
- mv ../yaboot-binary-${VERSION}/etc/yaboot.conf ../yaboot-binary-${VERSION}/usr/local/share/doc/
+ 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 .
+ $(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 . -not -path './\{arch\}*' -name '#*' | xargs rm -f
+ find . -not -path './\{arch\}*' -name '.#*' | xargs rm -f
+ find . -not -path './\{arch\}*' -name '*~' | xargs rm -f
+ find . -not -path './\{arch\}*' -name '*.swp' | xargs rm -f
+ find . -not -path './\{arch\}*' -name ',,*' | xargs rm -rf
-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
+
+## removes arch revision control crap, only to be called for making
+## release tarballs. arch should have a export command like cvs...
+
+archclean:
+ rm -rf '{arch}'
+ find . -type d -name .arch-ids | xargs rm -rf
+ rm -f 0arch-timestamps0
+
+maintclean: clean cleandocs
+
+release: docs bindist clean
strip: all
strip second/yaboot
@echo
@echo "Installation successful."
@echo
- @echo "An example /etc/yaboot.conf has been installed (unless /etc/yaboot.conf already existed"
+ @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