3 # Copyright (C) 2002 Erik Andersen <andersen@codepoet.org>
7 srcdir=$(top_srcdir)/scripts/config
8 include $(top_srcdir)/Rules.mak
10 all: ncurses conf mconf
12 ifeq ($(shell uname),SunOS)
17 ifeq (/usr/include/ncurses/ncurses.h, $(wildcard /usr/include/ncurses/ncurses.h))
18 HOSTNCURSES += -I/usr/include/ncurses -DCURSES_LOC="<ncurses.h>"
20 ifeq (/usr/include/ncurses/curses.h, $(wildcard /usr/include/ncurses/curses.h))
21 HOSTNCURSES += -I/usr/include/ncurses -DCURSES_LOC="<ncurses/curses.h>"
23 ifeq (/usr/local/include/ncurses/ncurses.h, $(wildcard /usr/local/include/ncurses/ncurses.h))
24 HOSTCFLAGS += -I/usr/local/include/ncurses -DCURSES_LOC="<ncurses.h>"
26 ifeq (/usr/local/include/ncurses/curses.h, $(wildcard /usr/local/include/ncurses/curses.h))
27 HOSTCFLAGS += -I/usr/local/include/ncurses -DCURSES_LOC="<ncurses/curses.h>"
29 ifeq (/usr/include/ncurses.h, $(wildcard /usr/include/ncurses.h))
30 HOSTNCURSES += -DCURSES_LOC="<ncurses.h>"
32 HOSTNCURSES += -DCURSES_LOC="<curses.h>"
41 LXD_SRC = lxdialog/checklist.c lxdialog/menubox.c lxdialog/textbox.c \
42 lxdialog/yesno.c lxdialog/inputbox.c lxdialog/util.c \
45 SHARED_SRC = zconf.tab.c
46 SHARED_DEPS := $(srcdir)/lkc.h $(srcdir)/lkc_proto.h \
47 lkc_defs.h $(srcdir)/expr.h zconf.tab.h
48 CONF_OBJS = $(patsubst %.c,%.o, $(CONF_SRC))
49 MCONF_OBJS = $(patsubst %.c,%.o, $(MCONF_SRC) $(LXD_SRC))
50 SHARED_OBJS = $(patsubst %.c,%.o, $(SHARED_SRC))
52 conf: $(CONF_OBJS) $(SHARED_OBJS)
53 $(HOSTCC) $(NATIVE_LDFLAGS) $^ -o $@
55 mconf: $(MCONF_OBJS) $(SHARED_OBJS)
56 $(HOSTCC) $(NATIVE_LDFLAGS) $^ -o $@ $(LIBS)
58 $(CONF_OBJS): %.o : $(srcdir)/%.c $(SHARED_DEPS)
59 $(HOSTCC) $(HOSTCFLAGS) -I. -c $< -o $@
61 $(MCONF_OBJS): %.o : $(srcdir)/%.c $(SHARED_DEPS)
62 @[ -d $(@D) ] || mkdir -v $(@D)
63 $(HOSTCC) $(HOSTCFLAGS) $(HOSTNCURSES) -I. -c $< -o $@
65 lkc_defs.h: $(srcdir)/lkc_proto.h
66 @sed < $< > $@ 's/P(\([^,]*\),.*/#define \1 (\*\1_p)/'
69 # The following requires flex/bison
70 # By default we use the _shipped versions, uncomment the
71 # following line if you are modifying the flex/bison src.
76 %.tab.c %.tab.h: $(srcdir)/%.y
77 bison -t -d -v -b $* -p $(notdir $*) $<
79 lex.%.c: $(srcdir)/%.l
80 flex -P$(notdir $*) -o$@ $<
83 lex.zconf.o: lex.zconf.c $(SHARED_DEPS)
84 $(HOSTCC) $(HOSTCFLAGS) -I$(srcdir) -c $< -o $@
86 lex.zconf.c: $(srcdir)/lex.zconf.c_shipped
89 zconf.tab.c: $(srcdir)/zconf.tab.c_shipped
92 zconf.tab.h: $(srcdir)/zconf.tab.h_shipped
96 zconf.tab.o: zconf.tab.c lex.zconf.c $(srcdir)/confdata.c $(srcdir)/expr.c \
97 $(srcdir)/symbol.c $(srcdir)/menu.c $(SHARED_DEPS)
98 $(HOSTCC) $(HOSTCFLAGS) -I$(srcdir) -I. -c $< -o $@
103 @echo "main() {}" > lxtemp.c
104 @if $(HOSTCC) lxtemp.c $(LIBS) ; then \
105 rm -f lxtemp.c a.out; \
109 echo ">> Unable to find the Ncurses libraries." ;\
111 echo ">> You must have Ncurses installed in order" ;\
112 echo ">> to use 'make menuconfig'" ;\
118 rm -f *.o *~ core $(TARGETS) $(MCONF_OBJS) $(CONF_OBJS) \
119 conf mconf zconf.tab.c zconf.tab.h lex.zconf.c lkc_defs.h