X-Git-Url: http://git.ozlabs.org/?p=yaboot.git;a=blobdiff_plain;f=Makefile;h=65ef0ab72315e4a0c863b9e56b8efff08396baaa;hp=94ce349fa135672a1b974800fea54fabf6abc9a0;hb=08532f2d438e244fb1d84dfa2c507ede37262162;hpb=f4ebbd9f7ea23e3f0fcbe098754580c220894628 diff --git a/Makefile b/Makefile index 94ce349..65ef0ab 100644 --- a/Makefile +++ b/Makefile @@ -1,22 +1,17 @@ -## Configuration section +## Setup -VERSION = 1.3 -# Debug mode (verbose) +include Config + +VERSION = 1.3.10 +# 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 @@ -33,29 +28,33 @@ KERNELADDR = 0x01400000 # CROSS = -# 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 `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) -CFLAGS += -DCONFIG_COLOR_TEXT +YBCFLAGS += -DCONFIG_COLOR_TEXT endif ifeq ($(CONFIG_SET_COLORMAP),y) -CFLAGS += -DCONFIG_SET_COLORMAP +YBCFLAGS += -DCONFIG_SET_COLORMAP +endif + +ifeq ($(USE_MD5_PASSWORDS),y) +YBCFLAGS += -DUSE_MD5_PASSWORDS endif -ifeq ($(CONFIG_SPLASH_SCREEN),y) -CFLAGS += -DCONFIG_SPLASH_SCREEN +ifeq ($(CONFIG_FS_XFS),y) +YBCFLAGS += -DCONFIG_FS_XFS endif -ifeq ($(USE_MD5_PASSWORDS),y) -CFLAGS += -DUSE_MD5_PASSWORDS +ifeq ($(CONFIG_FS_REISERFS),y) +YBCFLAGS += -DCONFIG_FS_REISERFS endif # Link flags @@ -65,83 +64,120 @@ LFLAGS = -Ttext $(TEXTADDR) -Bstatic # Libraries # LLIBS = lib/libext2fs.a -#LLIBS = -l ext2fs + +# 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/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 + +# 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: - $(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 - ${GETROOT} tar -C ../yaboot-binary-${VERSION} -zcvpf ../yaboot-binary-${VERSION}.tar.gz . + 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 . -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 - -install: all - @strip second/yaboot - @strip --remove-section=.comment second/yaboot - @strip util/addnote - @strip --remove-section=.comment --remove-section=.note util/addnote + +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 + 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 @@ -165,11 +201,16 @@ install: all 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 - @[ ! -e ${ROOT}/etc/yaboot.conf ] && install -o root -g root -m 0644 etc/yaboot.conf ${ROOT}/etc/yaboot.conf + @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 "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