mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2024-12-23 14:42:26 +00:00
d2bc2be8db
On OS X, Apple supply an old gperf (3.0.3) with xcode and xcode commandline tools which causes build failures: ./zconf.hash.c:183:17: error: expected expression {offsetof(struct kconf_id_strings_t, kconf_id_strings_str2), .. upgrading to gperf 3.0.4 was sufficient to fix this, so this option allows the user to specify the gperf program that they wish to use. To install gperf 3.0.4 from homebrew, I did: brew tap homebrew/dupes brew install homebrew/dupes/gperf .. then passed --with-gperf=$BREWFIX/Cellar/gperf/3.0.4/bin/gperf to configure Signed-off-by: Ray Donnelly <mingw.android@gmail.com> Message-Id: <CAOYw7dtCmcJ9WiqmQ81MmZeRPcV-tDOqe9=kRDW4uQGuZNd2Ng@mail.gmail.com> Patchwork-Id: 274892
118 lines
3.4 KiB
Makefile
118 lines
3.4 KiB
Makefile
#-----------------------------------------------------------
|
|
# Hmmm! Cheesy build!
|
|
# Or: where I can unveil my make-fu... :-]
|
|
|
|
all: conf mconf nconf
|
|
@true # Just be silent, you fscking son of a fscking beach...
|
|
|
|
# Build flags
|
|
CFLAGS = -DCONFIG_=\"CT_\" -DPACKAGE="\"crosstool-NG $(VERSION)\""
|
|
LDFLAGS =
|
|
|
|
# Compiler flags to use gettext
|
|
ifeq ($(gettext),)
|
|
INTL_CFLAGS = -DKBUILD_NO_NLS
|
|
endif
|
|
|
|
# Compiler and linker flags to use ncurses
|
|
NCURSES_CFLAGS = -DCURSES_LOC="\"$(curses_hdr)\""
|
|
NCURSES_LDFLAGS = $(LIBS)
|
|
|
|
# Common source files
|
|
COMMON_SRC = zconf.tab.c
|
|
COMMON_OBJ = $(patsubst %.c,%.o,$(COMMON_SRC))
|
|
COMMON_DEP = $(patsubst %.o,%.dep,$(COMMON_OBJ))
|
|
$(COMMON_OBJ) $(COMMON_DEP): CFLAGS += $(INTL_CFLAGS) -I.
|
|
|
|
# lxdialog source files
|
|
LX_SRC = $(wildcard lxdialog/*.c)
|
|
LX_OBJ = $(patsubst %.c,%.o,$(LX_SRC))
|
|
LX_DEP = $(patsubst %.o,%.dep,$(LX_OBJ))
|
|
$(LX_OBJ) $(LX_DEP): CFLAGS += $(NCURSES_CFLAGS) $(INTL_CFLAGS)
|
|
|
|
# What's needed to build 'conf'
|
|
conf_SRC = conf.c
|
|
conf_OBJ = $(patsubst %.c,%.o,$(conf_SRC))
|
|
conf_DEP = $(patsubst %.o,%.dep,$(conf_OBJ))
|
|
$(conf_OBJ) $(conf_DEP): CFLAGS += $(INTL_CFLAGS)
|
|
|
|
# What's needed to build 'mconf'
|
|
mconf_SRC = mconf.c
|
|
mconf_OBJ = $(patsubst %.c,%.o,$(mconf_SRC))
|
|
mconf_DEP = $(patsubst %.c,%.dep,$(mconf_SRC))
|
|
$(mconf_OBJ) $(mconf_DEP): CFLAGS += $(NCURSES_CFLAGS) $(INTL_CFLAGS)
|
|
mconf: LDFLAGS += $(NCURSES_LDFLAGS)
|
|
|
|
# What's needed to build 'nconf'
|
|
nconf_SRC = nconf.c nconf.gui.c
|
|
nconf_OBJ = $(patsubst %.c,%.o,$(nconf_SRC))
|
|
nconf_DEP = $(patsubst %.c,%.dep,$(nconf_SRC))
|
|
$(nconf_OBJ) $(nconf_DEP): CFLAGS += $(INTL_CFLAGS) -I/usr/include/ncurses
|
|
nconf: LDFLAGS += -lmenu -lpanel -lncurses
|
|
|
|
# Under Cygwin, we need to auto-import some libs (which ones, exactly?)
|
|
# for mconf and nconf to lin properly.
|
|
ifeq ($(shell uname -o 2>/dev/null || echo unknown),Cygwin)
|
|
mconf: LDFLAGS += -Wl,--enable-auto-import
|
|
nconf: LDFLAGS += -Wl,--enable-auto-import
|
|
endif
|
|
|
|
# These are generated files:
|
|
ALL_OBJS = $(sort $(COMMON_OBJ) $(LX_OBJ) $(conf_OBJ) $(mconf_OBJ) $(nconf_OBJ))
|
|
ALL_DEPS = $(sort $(COMMON_DEP) $(LX_DEP) $(conf_DEP) $(mconf_DEP) $(nconf_DEP))
|
|
|
|
# Cheesy auto-dependencies
|
|
DEPS = $(COMMON_DEP)
|
|
DEPS += $(conf_DEP)
|
|
DEPS += $(mconf_DEP) $(LX_DEP)
|
|
DEPS += $(nconf_DEP)
|
|
-include $(DEPS)
|
|
|
|
# Build the dependency for C files
|
|
%.dep: %.c
|
|
@echo " DEP '$@'"
|
|
@$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -MM $< |$(sed) -r -e 's|([^:]+.o)( *:+)|$(<:.c=.o) $@\2|;' >$@
|
|
|
|
# Generate the grammar parser
|
|
zconf.tab.o: zconf.tab.c zconf.hash.c lex.zconf.c
|
|
zconf.tab.dep: zconf.tab.c zconf.hash.c lex.zconf.c
|
|
|
|
.PRECIOUS: zconf.tab.c
|
|
zconf.tab.c: zconf.y
|
|
@echo " BISON '$@'"
|
|
@bison -l -b zconf -p zconf $<
|
|
|
|
zconf.hash.c: zconf.gperf
|
|
@echo " GPERF '$@'"
|
|
@$(gperf) < $< > $@
|
|
|
|
lex.zconf.c: zconf.l
|
|
@echo " LEX '$@'"
|
|
@flex -L -Pzconf -o$@ $<
|
|
|
|
# Build C files
|
|
%.o: %.c
|
|
@echo " CC '$@'"
|
|
@$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -o $@ -c $<
|
|
|
|
# Actual link
|
|
mconf: $(COMMON_OBJ) $(LX_OBJ) $(mconf_OBJ)
|
|
@echo " LD '$@'"
|
|
@$(CC) -o $@ $^ $(LDFLAGS) $(EXTRA_LDFLAGS)
|
|
|
|
nconf: $(COMMON_OBJ) $(nconf_OBJ)
|
|
@echo " LD '$@'"
|
|
@$(CC) -o $@ $^ $(LDFLAGS) $(EXTRA_LDFLAGS)
|
|
|
|
conf: $(COMMON_OBJ) $(conf_OBJ)
|
|
@echo " LD '$@'"
|
|
@$(CC) -o $@ $^ $(LDFLAGS) $(EXTRA_LDFLAGS)
|
|
|
|
#-----------------------------------------------------------
|
|
# Cleaning up the mess...
|
|
|
|
clean:
|
|
@echo " RM 'kconfig'"
|
|
@rm -f conf mconf nconf $(ALL_OBJS) $(ALL_DEPS)
|
|
@rm -f rm -f zconf.tab.c zconf.hash.c lex.zconf.c lex.backup
|