X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=Makefile;h=0f5b82e396d3e55fad9d5ef610dc41125da0833b;hb=0021679b0dc5767e0c023b28b36eeb1476dc2364;hp=ddf356f1922a3d02c75cf03db928bfed89f56431;hpb=96bcfd346b436aef16b29d9157b80fd4148b1421;p=oweals%2Fbusybox.git diff --git a/Makefile b/Makefile index ddf356f19..0f5b82e39 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,8 @@ # Makefile for busybox # +# Copyright (C) 1999-2000 Erik Andersen +# Copyright (C) 2000 Karl M. Hegbloom +# # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or @@ -15,74 +18,136 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +PROG := busybox +VERSION := 0.44 +BUILDTIME := $(shell TZ=UTC date --utc "+%Y.%m.%d-%H:%M%z") +export VERSION + +# Set the following to `true' to make a debuggable build. +# Leave this set to `false' for production use. +# eg: `make DODEBUG=true tests' +DODEBUG = false + +# If you want a static binary, turn this on. +DOSTATIC = false + +# To compile vs an alternative libc, you may need to use/adjust +# the following lines to meet your needs. This is how I did it... +#CFLAGS+=-nostdinc -I/home/andersen/CVS/uC-libc/include -I/usr/include/linux +#LDFLAGS+=-nostdlib +#LIBRARIES = /home/andersen/CVS/uC-libc/libc.a + -PROG=busybox -VERSION=0.35 -BUILDTIME=$(shell date "+%Y%m%d-%H%M") +CC = gcc -# Comment out the following to make a debuggable build -# Leave this off for production use. -DODEBUG=false -# If you want a static binary, turn this on. I can't think -# of many situations where anybody would ever want it static, -# but... -DOSTATIC=false +# use '-Os' optimization if available, else use -O2 +OPTIMIZATION = $(shell if $(CC) -Os -S -o /dev/null -xc /dev/null >/dev/null 2>&1; \ + then echo "-Os"; else echo "-O2" ; fi) -#This will choke on a non-debian system -ARCH=`uname -m | sed -e 's/i.86/i386/' | sed -e 's/sparc.*/sparc/'` +# Allow alternative stripping tools to be used... +ifndef $(STRIPTOOL) + STRIPTOOL = strip +endif # -D_GNU_SOURCE is needed because environ is used in init.c ifeq ($(DODEBUG),true) - CFLAGS=-Wall -g -D_GNU_SOURCE -DDEBUG_INIT - STRIP= - LDFLAGS= + CFLAGS += -Wall -g -fno-builtin -D_GNU_SOURCE + LDFLAGS += + STRIP = else - CFLAGS=-Wall -Os -fomit-frame-pointer -fno-builtin -D_GNU_SOURCE - LDFLAGS= -s - STRIP= strip --remove-section=.note --remove-section=.comment $(PROG) + CFLAGS += -Wall $(OPTIMIZATION) -fomit-frame-pointer -fno-builtin -D_GNU_SOURCE + LDFLAGS += -s + STRIP = $(STRIPTOOL) --remove-section=.note --remove-section=.comment $(PROG) #Only staticly link when _not_ debugging ifeq ($(DOSTATIC),true) - LDFLAGS+= --static + LDFLAGS += --static + # + #use '-ffunction-sections -fdata-sections' and '--gc-sections' if they work + #to try and strip out any unused junk. Doesn't do much for me, but you may + #want to give it a shot... + # + #ifeq ($(shell $(CC) -ffunction-sections -fdata-sections -S \ + # -o /dev/null -xc /dev/null 2>/dev/null && $(LD) --gc-sections -v >/dev/null && echo 1),1) + # CFLAGS += -ffunction-sections -fdata-sections + # LDFLAGS += --gc-sections + #endif endif - endif -ifndef $(prefix) - prefix=`pwd` +ifndef $(PREFIX) + PREFIX = `pwd`/_install endif -BINDIR=$(prefix) -LIBRARIES= -OBJECTS=$(shell ./busybox.sh) -CFLAGS+= -DBB_VER='"$(VERSION)"' -CFLAGS+= -DBB_BT='"$(BUILDTIME)"' -all: busybox busybox.links +OBJECTS = $(shell ./busybox.sh) busybox.o messages.o utility.o +CFLAGS += -DBB_VER='"$(VERSION)"' +CFLAGS += -DBB_BT='"$(BUILDTIME)"' +ifdef BB_INIT_SCRIPT + CFLAGS += -DINIT_SCRIPT='"$(BB_INIT_SCRIPT)"' +endif -busybox: $(OBJECTS) - $(CC) $(LDFLAGS) -o $(PROG) $(OBJECTS) $(LIBRARIES) - $(STRIP) +all: busybox busybox.links doc -busybox.links: - - ./busybox.mkll | sort >$@ - -clean: - - rm -f $(PROG) busybox.links *~ *.o core +doc: docs/BusyBox.txt docs/BusyBox.1 docs/BusyBox.html -distclean: clean - - rm -f $(PROG) +docs/BusyBox.txt: docs/busybox.pod + @echo + @echo BusyBox Documentation + @echo + - pod2text docs/busybox.pod > docs/BusyBox.txt + +docs/BusyBox.1: docs/busybox.pod + - pod2man --center=BusyBox --release="version $(VERSION)" docs/busybox.pod > docs/BusyBox.1 + +docs/BusyBox.html: docs/busybox.lineo.com/BusyBox.html + - rm -f docs/BusyBox.html + - ln -s busybox.lineo.com/BusyBox.html docs/BusyBox.html + +docs/busybox.lineo.com/BusyBox.html: docs/busybox.pod + - pod2html docs/busybox.pod > docs/busybox.lineo.com/BusyBox.html + - rm -f pod2html* -force: +busybox: $(OBJECTS) + $(CC) $(LDFLAGS) -o $@ $^ $(LIBRARIES) + $(STRIP) -$(OBJECTS): busybox.def.h internal.h Makefile +busybox.links: busybox.def.h + - ./busybox.mkll | sort >$@ -install: $(PROG) - install.sh $(BINDIR) +regexp.o nfsmount.o cmdedit.o: %.o: %.h +$(OBJECTS): %.o: busybox.def.h internal.h %.c Makefile -whichversion: - @echo $(VERSION) +test tests: + cd tests && $(MAKE) all -release: distclean - (cd .. ; cp -a busybox busybox-$(VERSION); tar -cvzf busybox-$(VERSION).tar.gz busybox-$(VERSION)) +clean: + - rm -f busybox.links *~ *.o core + - rm -rf _install + - cd tests && $(MAKE) clean + - rm -f docs/BusyBox.html docs/busybox.lineo.com/BusyBox.html \ + docs/BusyBox.1 docs/BusyBox.txt pod2html* +distclean: clean + - rm -f busybox + - cd tests && $(MAKE) distclean + +install: busybox busybox.links + ./install.sh $(PREFIX) + +dist release: distclean doc + cd ..; \ + rm -rf busybox-$(VERSION); \ + cp -a busybox busybox-$(VERSION); \ + \ + find busybox-$(VERSION)/ -type d \ + -name CVS \ + -print \ + | xargs rm -rf; \ + \ + find busybox-$(VERSION)/ -type f \ + -name .cvsignore \ + -print \ + | xargs rm -f; \ + \ + tar -cvzf busybox-$(VERSION).tar.gz busybox-$(VERSION)/;