7daa076d3e
Hi! I've created a patch to busybox' build system to allow building it in separate tree in a manner similar to kbuild from kernel version 2.6. That is, one runs command like 'make O=/build/some/where/for/specific/target/and/options' and everything is built in this exact directory, provided that it exists. I understand that applyingc such invasive changes during 'release candidates' stage of development is at best unwise. So, i'm currently asking for comments about this patch, starting from whether such thing is needed at all to whether it coded properly. 'make check' should work now, and one make creates Makefile in build directory, so one can run 'make' in build directory after that. One possible caveat is that if we build in some directory other than source one, the source directory should be 'distclean'ed first. egor
112 lines
3.1 KiB
Makefile
112 lines
3.1 KiB
Makefile
# Makefile for BusyBox
|
|
#
|
|
# Copyright (C) 2002 Erik Andersen <andersen@codepoet.org>
|
|
|
|
top_srcdir=../..
|
|
top_builddir=../..
|
|
srcdir=$(top_srcdir)/scripts/config
|
|
include $(top_builddir)/Rules.mak
|
|
|
|
all: ncurses conf mconf
|
|
|
|
LIBS = -lncurses
|
|
ifeq (/usr/include/ncurses/ncurses.h, $(wildcard /usr/include/ncurses/ncurses.h))
|
|
HOSTNCURSES += -I/usr/include/ncurses -DCURSES_LOC="<ncurses.h>"
|
|
else
|
|
ifeq (/usr/include/ncurses/curses.h, $(wildcard /usr/include/ncurses/curses.h))
|
|
HOSTNCURSES += -I/usr/include/ncurses -DCURSES_LOC="<ncurses/curses.h>"
|
|
else
|
|
ifeq (/usr/local/include/ncurses/ncurses.h, $(wildcard /usr/local/include/ncurses/ncurses.h))
|
|
HOSTCFLAGS += -I/usr/local/include/ncurses -DCURSES_LOC="<ncurses.h>"
|
|
else
|
|
ifeq (/usr/local/include/ncurses/curses.h, $(wildcard /usr/local/include/ncurses/curses.h))
|
|
HOSTCFLAGS += -I/usr/local/include/ncurses -DCURSES_LOC="<ncurses/curses.h>"
|
|
else
|
|
ifeq (/usr/include/ncurses.h, $(wildcard /usr/include/ncurses.h))
|
|
HOSTNCURSES += -DCURSES_LOC="<ncurses.h>"
|
|
else
|
|
HOSTNCURSES += -DCURSES_LOC="<curses.h>"
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
CONF_SRC =conf.c
|
|
MCONF_SRC =mconf.c checklist.c menubox.c textbox.c yesno.c inputbox.c util.c msgbox.c
|
|
SHARED_SRC=zconf.tab.c
|
|
SHARED_DEPS:=$(srcdir)/lkc.h $(srcdir)/lkc_proto.h \
|
|
lkc_defs.h $(srcdir)/expr.h zconf.tab.h
|
|
CONF_OBJS =$(patsubst %.c,%.o, $(CONF_SRC))
|
|
MCONF_OBJS=$(patsubst %.c,%.o, $(MCONF_SRC))
|
|
SHARED_OBJS=$(patsubst %.c,%.o, $(SHARED_SRC))
|
|
|
|
conf: $(CONF_OBJS) $(SHARED_OBJS)
|
|
$(HOSTCC) $(NATIVE_LDFLAGS) $^ -o $@
|
|
|
|
mconf: $(MCONF_OBJS) $(SHARED_OBJS)
|
|
$(HOSTCC) $(NATIVE_LDFLAGS) $^ -o $@ $(LIBS)
|
|
|
|
$(CONF_OBJS): %.o : $(srcdir)/%.c $(SHARED_DEPS)
|
|
$(HOSTCC) $(HOSTCFLAGS) -I. -c $< -o $@
|
|
|
|
$(MCONF_OBJS): %.o : $(srcdir)/%.c $(SHARED_DEPS)
|
|
$(HOSTCC) $(HOSTCFLAGS) $(HOSTNCURSES) -I. -c $< -o $@
|
|
|
|
lkc_defs.h: $(srcdir)/lkc_proto.h
|
|
@sed < $< > $@ 's/P(\([^,]*\),.*/#define \1 (\*\1_p)/'
|
|
|
|
###
|
|
# The following requires flex/bison
|
|
# By default we use the _shipped versions, uncomment the
|
|
# following line if you are modifying the flex/bison src.
|
|
#LKC_GENPARSER := 1
|
|
|
|
ifdef LKC_GENPARSER
|
|
|
|
%.tab.c %.tab.h: $(srcdir)/%.y
|
|
bison -t -d -v -b $* -p $(notdir $*) $<
|
|
|
|
lex.%.c: $(srcdir)/%.l
|
|
flex -P$(notdir $*) -o$@ $<
|
|
else
|
|
|
|
lex.zconf.o: lex.zconf.c $(SHARED_DEPS)
|
|
$(HOSTCC) $(HOSTCFLAGS) -I$(srcdir) -c $< -o $@
|
|
|
|
lex.zconf.c: $(srcdir)/lex.zconf.c_shipped
|
|
cp $< $@
|
|
|
|
zconf.tab.c: $(srcdir)/zconf.tab.c_shipped
|
|
cp $< $@
|
|
|
|
zconf.tab.h: $(srcdir)/zconf.tab.h_shipped
|
|
cp $< $@
|
|
endif
|
|
|
|
zconf.tab.o: zconf.tab.c lex.zconf.c $(srcdir)/confdata.c $(srcdir)/expr.c \
|
|
$(srcdir)/symbol.c $(srcdir)/menu.c $(SHARED_DEPS)
|
|
$(HOSTCC) $(HOSTCFLAGS) -I$(srcdir) -I. -c $< -o $@
|
|
|
|
.PHONY: ncurses
|
|
|
|
ncurses:
|
|
@echo "main() {}" > lxtemp.c
|
|
@if $(HOSTCC) lxtemp.c $(LIBS) ; then \
|
|
rm -f lxtemp.c a.out; \
|
|
else \
|
|
rm -f lxtemp.c; \
|
|
echo -e "\007" ;\
|
|
echo ">> Unable to find the Ncurses libraries." ;\
|
|
echo ">>" ;\
|
|
echo ">> You must have Ncurses installed in order" ;\
|
|
echo ">> to use 'make menuconfig'" ;\
|
|
echo ;\
|
|
exit 1 ;\
|
|
fi
|
|
|
|
clean:
|
|
rm -f *.o *~ core $(TARGETS) $(MCONF_OBJS) $(CONF_OBJS) \
|
|
conf mconf zconf.tab.c zconf.tab.h lex.zconf.c lkc_defs.h
|
|
|