yann@926: #----------------------------------------------------------- yann@940: # Hmmm! Cheesy build! yann@940: # Or: where I can unveil my make-fu... :-] yann@1: yann@2835: all: conf mconf nconf yann@2835: @true # Just be silent, you fscking son of a fscking beach... yann@959: yann@959: # Build flags yann@2835: CFLAGS = -DCONFIG_=\"CT_\" -DPACKAGE="\"crosstool-NG $(VERSION)\"" yann@959: LDFLAGS = yann@182: yann@943: # Compiler flags to use gettext yann@2835: ifeq ($(gettext),) yann@2835: INTL_CFLAGS = -DKBUILD_NO_NLS yann@2835: endif yann@943: yann@940: # Compiler and linker flags to use ncurses yann@2835: NCURSES_CFLAGS = -DCURSES_LOC="\"$(curses_hdr)\"" yann@2835: NCURSES_LDFLAGS = $(LIBS) yann@182: yann@959: # Common source files yann@2835: COMMON_SRC = zconf.tab.c yann@959: COMMON_OBJ = $(patsubst %.c,%.o,$(COMMON_SRC)) yann@959: COMMON_DEP = $(patsubst %.o,%.dep,$(COMMON_OBJ)) yann@2836: $(COMMON_OBJ) $(COMMON_DEP): CFLAGS += $(INTL_CFLAGS) -I. yann@959: yann@959: # lxdialog source files yann@2835: LX_SRC = $(wildcard lxdialog/*.c) yann@959: LX_OBJ = $(patsubst %.c,%.o,$(LX_SRC)) yann@959: LX_DEP = $(patsubst %.o,%.dep,$(LX_OBJ)) yann@959: $(LX_OBJ) $(LX_DEP): CFLAGS += $(NCURSES_CFLAGS) $(INTL_CFLAGS) yann@816: yann@940: # What's needed to build 'conf' yann@2835: conf_SRC = conf.c yann@959: conf_OBJ = $(patsubst %.c,%.o,$(conf_SRC)) yann@959: conf_DEP = $(patsubst %.o,%.dep,$(conf_OBJ)) yann@959: $(conf_OBJ) $(conf_DEP): CFLAGS += $(INTL_CFLAGS) yann@816: yann@940: # What's needed to build 'mconf' yann@2835: mconf_SRC = mconf.c yann@940: mconf_OBJ = $(patsubst %.c,%.o,$(mconf_SRC)) yann@959: mconf_DEP = $(patsubst %.c,%.dep,$(mconf_SRC)) yann@959: $(mconf_OBJ) $(mconf_DEP): CFLAGS += $(NCURSES_CFLAGS) $(INTL_CFLAGS) yann@2835: mconf: LDFLAGS += $(NCURSES_LDFLAGS) yann@2454: yann@2454: # What's needed to build 'nconf' yann@2835: nconf_SRC = nconf.c nconf.gui.c yann@2454: nconf_OBJ = $(patsubst %.c,%.o,$(nconf_SRC)) yann@2454: nconf_DEP = $(patsubst %.c,%.dep,$(nconf_SRC)) yann@2454: $(nconf_OBJ) $(nconf_DEP): CFLAGS += $(INTL_CFLAGS) yann@2835: nconf: LDFLAGS += -lmenu -lpanel -lncurses yann@2454: yann@2454: # Under Cygwin, we need to auto-import some libs (which ones, exactly?) yann@2454: # for mconf and nconf to lin properly. yann@1087: ifeq ($(shell uname -o 2>/dev/null || echo unknown),Cygwin) yann@2835: mconf: LDFLAGS += -Wl,--enable-auto-import yann@2835: nconf: LDFLAGS += -Wl,--enable-auto-import yann@1087: endif yann@959: yann@959: # These are generated files: yann@2454: ALL_OBJS = $(sort $(COMMON_OBJ) $(LX_OBJ) $(conf_OBJ) $(mconf_OBJ) $(nconf_OBJ)) yann@2454: ALL_DEPS = $(sort $(COMMON_DEP) $(LX_DEP) $(conf_DEP) $(mconf_DEP) $(nconf_DEP)) yann@1: yann@940: # Cheesy auto-dependencies yann@959: DEPS = $(COMMON_DEP) yann@959: DEPS += $(conf_DEP) yann@959: DEPS += $(mconf_DEP) $(LX_DEP) yann@2454: DEPS += $(nconf_DEP) yann@945: -include $(DEPS) yann@940: yann@959: # Build the dependency for C files yann@2835: %.dep: %.c yann@2835: @echo " DEP '$@'" yann@2835: @$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -MM $< |$(sed) -r -e 's|([^:]+.o)( *:+)|$(<:.c=.o) $@\2|;' >$@ yann@940: yann@2836: # Generate the grammar parser yann@2836: zconf.tab.o: zconf.tab.c zconf.hash.c lex.zconf.c yann@2836: zconf.tab.dep: zconf.tab.c zconf.hash.c lex.zconf.c yann@2836: yann@2836: .PRECIOUS: zconf.tab.c yann@2836: zconf.tab.c: zconf.y yann@2836: @echo " BISON '$@'" yann@2836: @bison -l -b zconf -p zconf $< yann@2836: yann@2836: zconf.hash.c: zconf.gperf yann@2836: @echo " GPERF '$@'" yann@2836: @gperf < $< > $@ yann@2836: yann@2836: lex.zconf.c: zconf.l yann@2836: @echo " LEX '$@'" yann@2836: @flex -L -P zconf -o $@ $< yann@2836: yann@959: # Build C files yann@2835: %.o: %.c yann@2835: @echo " CC '$@'" yann@2835: @$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -o $@ -c $< yann@940: yann@959: # Actual link yann@2835: mconf: $(COMMON_OBJ) $(LX_OBJ) $(mconf_OBJ) yann@2835: @echo " LD '$@'" yann@2835: @$(CC) -o $@ $^ $(LDFLAGS) $(EXTRA_LDFLAGS) yann@940: yann@2835: nconf: $(COMMON_OBJ) $(nconf_OBJ) yann@2835: @echo " LD '$@'" yann@2835: @$(CC) -o $@ $^ $(LDFLAGS) $(EXTRA_LDFLAGS) yann@2454: yann@2835: conf: $(COMMON_OBJ) $(conf_OBJ) yann@2835: @echo " LD '$@'" yann@2835: @$(CC) -o $@ $^ $(LDFLAGS) $(EXTRA_LDFLAGS) yann@1: yann@926: #----------------------------------------------------------- yann@926: # Cleaning up the mess... yann@926: yann@2835: clean: yann@2835: @echo " RM 'kconfig'" yann@2835: @rm -f conf mconf nconf $(ALL_OBJS) $(ALL_DEPS) yann@2836: @rm -f rm -f zconf.tab.c zconf.hash.c lex.zconf.c lex.backup