config/config.mk
author "Yann E. MORIN" <yann.morin.1998@free.fr>
Tue Jul 31 22:27:29 2012 +0200 (2012-07-31)
changeset 3018 7776e8369284
parent 2537 95d470b5a6a9
child 3123 6a5946fbc728
permissions -rw-r--r--
complibs/cloog: create missing m4 dir

Because we now patch configure.in and configure, the Makefile quicks
in a re-build rule as the source files are now more recent than the
bundled generated files, and that fails because the m4 directory
is missing, although on some systems where aclocal is not installed,
the re-build rule does nothing (except a warning).

Always create tht directory.

Reported-by: Per Arnold Blaasmo <per-arnold.blaasmo@atmel.com>
[Also thanks to Thomas De Schampheleire <patrickdepinguin@gmail.com>
for some digging works on this issue]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
yann@1
     1
# ===========================================================================
yann@945
     2
# crosstool-NG genererated config files
yann@1
     3
# These targets are used from top-level makefile
yann@1
     4
yann@926
     5
#-----------------------------------------------------------
yann@1001
     6
# List all config files, wether sourced or generated
yann@97
     7
yann@945
     8
# The top-level config file to be used be configurators
yann@2981
     9
# We need it to savedefconfig in scripts/saveSample.sh
yann@2981
    10
export KCONFIG_TOP = config/config.in
yann@945
    11
yann@926
    12
# Build the list of all source config files
yann@1976
    13
STATIC_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(shell find $(CT_LIB_DIR)/config -type f \( -name '*.in' -o -name '*.in.2' \) 2>/dev/null))
yann@926
    14
# ... and how to access them:
yann@926
    15
$(STATIC_CONFIG_FILES): config
yann@88
    16
yann@926
    17
# Build a list of per-component-type source config files
yann@1976
    18
ARCH_CONFIG_FILES     = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/arch/*.in))
yann@1976
    19
ARCH_CONFIG_FILES_2   = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/arch/*.in.2))
yann@1976
    20
KERNEL_CONFIG_FILES   = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/kernel/*.in))
yann@1976
    21
KERNEL_CONFIG_FILES_2 = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/kernel/*.in.2))
yann@1976
    22
CC_CONFIG_FILES       = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/cc/*.in))
yann@1976
    23
CC_CONFIG_FILES_2     = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/cc/*.in.2))
yann@1976
    24
LIBC_CONFIG_FILES     = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/libc/*.in))
yann@1976
    25
LIBC_CONFIG_FILES_2   = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/libc/*.in.2))
yann@1976
    26
DEBUG_CONFIG_FILES    = $(patsubst $(CT_LIB_DIR)/%,%,$(wildcard $(CT_LIB_DIR)/config/debug/*.in))
yann@182
    27
yann@926
    28
# Build the list of generated config files
yann@926
    29
GEN_CONFIG_FILES = config.gen/arch.in     \
yann@926
    30
                   config.gen/kernel.in   \
yann@926
    31
                   config.gen/cc.in       \
yann@926
    32
                   config.gen/libc.in     \
yann@926
    33
                   config.gen/debug.in
yann@926
    34
# ... and how to access them:
yann@2537
    35
# Generated files depends on the gen_in_frags script because it has the
yann@2537
    36
# functions needed to build the genrated files, and thus they might need
yann@2537
    37
# re-generation if it changes.
yann@2537
    38
# They also depends on config.mk (this file) because it has the dependency
yann@2537
    39
# rules, and thus they might need re-generation if the deps change.
yann@2537
    40
$(GEN_CONFIG_FILES): config.gen                             \
yann@2537
    41
                     $(CT_LIB_DIR)/scripts/gen_in_frags.sh  \
yann@945
    42
                     $(CT_LIB_DIR)/config/config.mk
yann@182
    43
yann@945
    44
# Helper entry for the configurators
yann@945
    45
PHONY += config_files
yann@945
    46
config_files: $(STATIC_CONFIG_FILES) $(GEN_CONFIG_FILES)
yann@182
    47
yann@926
    48
# Where to access to the source config files from
yann@926
    49
config:
yann@940
    50
	@$(ECHO) "  LN    config"
yann@940
    51
	$(SILENT)ln -s $(CT_LIB_DIR)/config config
yann@926
    52
yann@926
    53
# Where to store the generated config files into
yann@926
    54
config.gen:
yann@940
    55
	@$(ECHO) "  MKDIR config.gen"
yann@940
    56
	$(SILENT)mkdir -p config.gen
yann@926
    57
yann@926
    58
#-----------------------------------------------------------
yann@926
    59
# Build list of per-component-type items to easily build generated files
yann@926
    60
yann@926
    61
ARCHS   = $(patsubst config/arch/%.in,%,$(ARCH_CONFIG_FILES))
yann@926
    62
KERNELS = $(patsubst config/kernel/%.in,%,$(KERNEL_CONFIG_FILES))
yann@926
    63
CCS     = $(patsubst config/cc/%.in,%,$(CC_CONFIG_FILES))
yann@926
    64
LIBCS   = $(patsubst config/libc/%.in,%,$(LIBC_CONFIG_FILES))
yann@926
    65
DEBUGS  = $(patsubst config/debug/%.in,%,$(DEBUG_CONFIG_FILES))
yann@926
    66
yann@926
    67
#-----------------------------------------------------------
yann@926
    68
# The rules for the generated config files
yann@916
    69
yann@1976
    70
# WARNING! If a .in file disapears between two runs, that will NOT be detected!
yann@1976
    71
yann@1976
    72
config.gen/arch.in: $(ARCH_CONFIG_FILES) $(ARCH_CONFIG_FILES_2)
yann@2537
    73
	@$(ECHO) '  IN    $(@)'
yann@2537
    74
	$(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh choice "$@" "Target Architecture" "ARCH" "config/arch" "Y" $(ARCHS)
yann@861
    75
yann@1976
    76
config.gen/kernel.in: $(KERNEL_CONFIG_FILES) $(KERNEL_CONFIG_FILES_2)
yann@2537
    77
	@$(ECHO) '  IN    $(@)'
yann@2537
    78
	$(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh choice "$@" "Target OS" "KERNEL" "config/kernel" "Y" $(KERNELS)
yann@182
    79
yann@1976
    80
config.gen/cc.in: $(CC_CONFIG_FILES) $(CC_CONFIG_FILES_2)
yann@2537
    81
	@$(ECHO) '  IN    $(@)'
yann@2537
    82
	$(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh choice "$@" "C compiler" "CC" "config/cc" "N" $(CCS)
yann@926
    83
yann@1976
    84
config.gen/libc.in: $(LIBC_CONFIG_FILES) $(LIBC_CONFIG_FILES_2)
yann@2537
    85
	@$(ECHO) '  IN    $(@)'
yann@2537
    86
	$(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh choice "$@" "C library" "LIBC" "config/libc" "Y" $(LIBCS)
yann@926
    87
yann@926
    88
config.gen/debug.in: $(DEBUG_CONFIG_FILES)
yann@2537
    89
	@$(ECHO) '  IN    $(@)'
yann@2537
    90
	$(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh menu "$@" "Debug facilities" "DEBUG" "config/debug" $(DEBUGS)
yann@926
    91
yann@926
    92
#-----------------------------------------------------------
yann@926
    93
# Cleaning up the mess...
yann@926
    94
yann@1
    95
clean::
yann@940
    96
	@$(ECHO) "  CLEAN config"
yann@940
    97
	$(SILENT)rm -f config 2>/dev/null || true
yann@940
    98
	@$(ECHO) "  CLEAN config.gen"
yann@940
    99
	$(SILENT)rm -rf config.gen