X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=Makefile;h=0f5b82e396d3e55fad9d5ef610dc41125da0833b;hb=0021679b0dc5767e0c023b28b36eeb1476dc2364;hp=bef25a3ae160d5542758a93e5409bce718761049;hpb=cc8ed39b240180b58810784f844e253263594ac3;p=oweals%2Fbusybox.git diff --git a/Makefile b/Makefile index bef25a3ae..0f5b82e39 100644 --- a/Makefile +++ b/Makefile @@ -1,38 +1,153 @@ +# 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 +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# -VERSION=0.29alpha1 -BUILDTIME=$(shell date "+%Y%m%d-%H%M") +PROG := busybox +VERSION := 0.44 +BUILDTIME := $(shell TZ=UTC date --utc "+%Y.%m.%d-%H:%M%z") +export VERSION -#This will choke on a non-debian system -ARCH=`uname -m | sed -e 's/i.86/i386/' | sed -e 's/sparc.*/sparc/'` +# 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 -STRIP= strip --remove-section=.note --remove-section=.comment busybox -LDFLAGS= -s +# 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 + + +CC = gcc + +# 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) + + +# Allow alternative stripping tools to be used... +ifndef $(STRIPTOOL) + STRIPTOOL = strip +endif # -D_GNU_SOURCE is needed because environ is used in init.c -CFLAGS=-Wall -O2 -fomit-frame-pointer -fno-builtin -D_GNU_SOURCE -# For debugging only -#CFLAGS=-Wall -g -D_GNU_SOURCE -LIBRARIES=-lc -OBJECTS=$(shell ./busybox.obj) utility.o +ifeq ($(DODEBUG),true) + CFLAGS += -Wall -g -fno-builtin -D_GNU_SOURCE + LDFLAGS += + STRIP = +else + 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 + # + #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`/_install +endif + + +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 -CFLAGS+= -DBB_VER='"$(VERSION)"' -CFLAGS+= -DBB_BT='"$(BUILDTIME)"' +all: busybox busybox.links doc -#all: busybox links -all: busybox +doc: docs/BusyBox.txt docs/BusyBox.1 docs/BusyBox.html + +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* busybox: $(OBJECTS) - $(CC) $(CFLAGS) $(LDFLAGS) -o busybox $(OBJECTS) $(LIBRARIES) - #$(STRIP) + $(CC) $(LDFLAGS) -o $@ $^ $(LIBRARIES) + $(STRIP) + +busybox.links: busybox.def.h + - ./busybox.mkll | sort >$@ + +regexp.o nfsmount.o cmdedit.o: %.o: %.h +$(OBJECTS): %.o: busybox.def.h internal.h %.c Makefile + +test tests: + cd tests && $(MAKE) all -links: - - ./busybox.mkll | sort >busybox.links - clean: - - rm -f busybox busybox.links *~ *.o + - 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) -force: +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)/;