kconfig/Makefile
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Jan 14 18:22:06 2012 +0100 (2012-01-14)
changeset 2835 0a2fa748727e
parent 2650 kconfig/kconfig.mk@4d299836e994
child 2836 1c4f3be68a6d
permissions -rw-r--r--
kconfig: install compiled frontends

The kconfig frontends are currently instaleld as source files. This is
a remnant of the early times, when I wanted a single installation of
crosstool-NG to be shared across multiple machines, potentially of
different architectures.

This does not really make sense, and it's been a long time since it
was las tpossible in practice.

So, just build the kconfig frontends at make-time, and install them
as we do for all other crosstool-NG dependent files.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
yann@926
     1
#-----------------------------------------------------------
yann@940
     2
# Hmmm! Cheesy build!
yann@940
     3
# Or: where I can unveil my make-fu... :-]
yann@1
     4
yann@2835
     5
all: conf mconf nconf
yann@2835
     6
	@true   # Just be silent, you fscking son of a fscking beach...
yann@959
     7
yann@959
     8
# Build flags
yann@2835
     9
CFLAGS = -DCONFIG_=\"CT_\" -DPACKAGE="\"crosstool-NG $(VERSION)\""
yann@959
    10
LDFLAGS =
yann@182
    11
yann@943
    12
# Compiler flags to use gettext
yann@2835
    13
ifeq ($(gettext),)
yann@2835
    14
INTL_CFLAGS = -DKBUILD_NO_NLS
yann@2835
    15
endif
yann@943
    16
yann@940
    17
# Compiler and linker flags to use ncurses
yann@2835
    18
NCURSES_CFLAGS = -DCURSES_LOC="\"$(curses_hdr)\""
yann@2835
    19
NCURSES_LDFLAGS = $(LIBS)
yann@182
    20
yann@959
    21
# Common source files
yann@2835
    22
COMMON_SRC = zconf.tab.c
yann@959
    23
COMMON_OBJ = $(patsubst %.c,%.o,$(COMMON_SRC))
yann@959
    24
COMMON_DEP = $(patsubst %.o,%.dep,$(COMMON_OBJ))
yann@959
    25
$(COMMON_OBJ) $(COMMON_DEP): CFLAGS += $(INTL_CFLAGS)
yann@959
    26
yann@959
    27
# lxdialog source files
yann@2835
    28
LX_SRC = $(wildcard lxdialog/*.c)
yann@959
    29
LX_OBJ = $(patsubst %.c,%.o,$(LX_SRC))
yann@959
    30
LX_DEP = $(patsubst %.o,%.dep,$(LX_OBJ))
yann@959
    31
$(LX_OBJ) $(LX_DEP): CFLAGS += $(NCURSES_CFLAGS) $(INTL_CFLAGS)
yann@816
    32
yann@940
    33
# What's needed to build 'conf'
yann@2835
    34
conf_SRC = conf.c
yann@959
    35
conf_OBJ = $(patsubst %.c,%.o,$(conf_SRC))
yann@959
    36
conf_DEP = $(patsubst %.o,%.dep,$(conf_OBJ))
yann@959
    37
$(conf_OBJ) $(conf_DEP): CFLAGS += $(INTL_CFLAGS)
yann@816
    38
yann@940
    39
# What's needed to build 'mconf'
yann@2835
    40
mconf_SRC = mconf.c
yann@940
    41
mconf_OBJ = $(patsubst %.c,%.o,$(mconf_SRC))
yann@959
    42
mconf_DEP = $(patsubst %.c,%.dep,$(mconf_SRC))
yann@959
    43
$(mconf_OBJ) $(mconf_DEP): CFLAGS += $(NCURSES_CFLAGS) $(INTL_CFLAGS)
yann@2835
    44
mconf: LDFLAGS += $(NCURSES_LDFLAGS)
yann@2454
    45
yann@2454
    46
# What's needed to build 'nconf'
yann@2835
    47
nconf_SRC = nconf.c nconf.gui.c
yann@2454
    48
nconf_OBJ = $(patsubst %.c,%.o,$(nconf_SRC))
yann@2454
    49
nconf_DEP = $(patsubst %.c,%.dep,$(nconf_SRC))
yann@2454
    50
$(nconf_OBJ) $(nconf_DEP): CFLAGS += $(INTL_CFLAGS)
yann@2835
    51
nconf: LDFLAGS += -lmenu -lpanel -lncurses
yann@2454
    52
yann@2454
    53
# Under Cygwin, we need to auto-import some libs (which ones, exactly?)
yann@2454
    54
# for mconf and nconf to lin properly.
yann@1087
    55
ifeq ($(shell uname -o 2>/dev/null || echo unknown),Cygwin)
yann@2835
    56
mconf: LDFLAGS += -Wl,--enable-auto-import
yann@2835
    57
nconf: LDFLAGS += -Wl,--enable-auto-import
yann@1087
    58
endif
yann@959
    59
yann@959
    60
# These are generated files:
yann@2454
    61
ALL_OBJS = $(sort $(COMMON_OBJ) $(LX_OBJ) $(conf_OBJ) $(mconf_OBJ) $(nconf_OBJ))
yann@2454
    62
ALL_DEPS = $(sort $(COMMON_DEP) $(LX_DEP) $(conf_DEP) $(mconf_DEP) $(nconf_DEP))
yann@1
    63
yann@940
    64
# Cheesy auto-dependencies
yann@959
    65
DEPS = $(COMMON_DEP)
yann@959
    66
DEPS += $(conf_DEP)
yann@959
    67
DEPS += $(mconf_DEP) $(LX_DEP)
yann@2454
    68
DEPS += $(nconf_DEP)
yann@945
    69
-include $(DEPS)
yann@940
    70
yann@959
    71
# Build the dependency for C files
yann@2835
    72
%.dep: %.c
yann@2835
    73
	@echo "  DEP    '$@'"
yann@2835
    74
	@$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -MM $< |$(sed) -r -e 's|([^:]+.o)( *:+)|$(<:.c=.o) $@\2|;' >$@
yann@940
    75
yann@959
    76
# Build C files
yann@2835
    77
%.o: %.c
yann@2835
    78
	@echo "  CC     '$@'"
yann@2835
    79
	@$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -o $@ -c $<
yann@940
    80
yann@959
    81
# Actual link
yann@2835
    82
mconf: $(COMMON_OBJ) $(LX_OBJ) $(mconf_OBJ)
yann@2835
    83
	@echo "  LD     '$@'"
yann@2835
    84
	@$(CC) -o $@ $^ $(LDFLAGS) $(EXTRA_LDFLAGS)
yann@940
    85
yann@2835
    86
nconf: $(COMMON_OBJ) $(nconf_OBJ)
yann@2835
    87
	@echo "  LD     '$@'"
yann@2835
    88
	@$(CC) -o $@ $^ $(LDFLAGS) $(EXTRA_LDFLAGS)
yann@2454
    89
yann@2835
    90
conf: $(COMMON_OBJ) $(conf_OBJ)
yann@2835
    91
	@echo "  LD     '$@'"
yann@2835
    92
	@$(CC) -o $@ $^ $(LDFLAGS) $(EXTRA_LDFLAGS)
yann@1
    93
yann@926
    94
#-----------------------------------------------------------
yann@926
    95
# Cleaning up the mess...
yann@926
    96
yann@2835
    97
clean:
yann@2835
    98
	@echo "  RM     'kconfig'"
yann@2835
    99
	@rm -f conf mconf nconf $(ALL_OBJS) $(ALL_DEPS)