samples/samples.mk
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Jul 13 10:32:38 2008 +0000 (2008-07-13)
changeset 645 8e58024f8e37
parent 560 0ca969b84057
child 822 04a1937d5f0b
permissions -rw-r--r--
Ioannis E. VENETIS <venetis@mail.capsl.udel.edu> pointed out that GMP and MPFR were not used by gcc.
Turned out that none could use GMP and MPFR as the config option changed its name, but the change was not propagated to all users.

/trunk/scripts/build/binutils.sh | 2 1 1 0 +-
/trunk/scripts/build/debug/300-gdb.sh | 2 1 1 0 +-
/trunk/scripts/build/cc_gcc.sh | 6 3 3 0 +++---
3 files changed, 5 insertions(+), 5 deletions(-)
yann@166
     1
# Makefile to manage samples
yann@63
     2
yann@166
     3
# Build the list of available samples
yann@182
     4
CT_TOP_SAMPLES := $(patsubst $(CT_TOP_DIR)/samples/%/crosstool.config,%,$(wildcard $(CT_TOP_DIR)/samples/*/crosstool.config))
yann@182
     5
CT_LIB_SAMPLES := $(filter-out $(CT_TOP_SAMPLES),$(patsubst $(CT_LIB_DIR)/samples/%/crosstool.config,%,$(wildcard $(CT_LIB_DIR)/samples/*/crosstool.config)))
yann@182
     6
yann@605
     7
CT_SAMPLES := $(sort $(CT_TOP_SAMPLES) $(CT_LIB_SAMPLES))
yann@63
     8
yann@176
     9
help-config::
yann@333
    10
	@echo  '  saveconfig         - Save current config as a preconfigured target'
yann@176
    11
yann@176
    12
help-samples::
yann@544
    13
	@echo  '  list-samples       - prints the list of all samples (for scripting)'
yann@544
    14
	@echo  '  show-<sample>      - show a brief overview of <sample> (list below)'
yann@544
    15
	@echo  '  <sample>           - preconfigure crosstool-NG with <sample> (list below)'
yann@182
    16
	@$(CT_LIB_DIR)/scripts/showSamples.sh $(CT_SAMPLES)
yann@176
    17
yann@176
    18
help-build::
yann@333
    19
	@echo  '  regtest[.#]        - Regtest-build all samples'
yann@333
    20
	@echo  '  regtest-local[.#]  - Regtest-build all local samples'
yann@333
    21
	@echo  '  regtest-global[.#] - Regtest-build all global samples'
yann@63
    22
yann@560
    23
help-distrib::
yann@560
    24
	@echo  '  wiki-samples       - Print a DokuWiki table of samples'
yann@560
    25
yann@539
    26
$(patsubst %,show-%,$(CT_SAMPLES)):
yann@539
    27
	@$(CT_LIB_DIR)/scripts/showSamples.sh -v $(patsubst show-%,%,$(@))
yann@539
    28
yann@544
    29
PHONY += list-samples
yann@544
    30
list-samples: .FORCE
yann@539
    31
	@echo $(CT_SAMPLES) |sed -r -e 's/ /\n/g;' |sort
yann@474
    32
yann@166
    33
# How we do build one sample
yann@182
    34
PHONY += $(CT_SAMPLES)
yann@166
    35
$(CT_SAMPLES):
yann@286
    36
	@echo  'Configuring for "$@"'
yann@230
    37
	@$(CT_NG) $(patsubst %,copy_config_%,$(@)) oldconfig
yann@286
    38
	@echo  'Execute "$(CT_NG) build" to build your toolchain'
yann@182
    39
yann@230
    40
$(patsubst %,copy_config_%,$(CT_SAMPLES)):
yann@230
    41
	@if [ -f $(CT_TOP_DIR)/samples/$(patsubst copy_config_%,%,$(@))/crosstool.config ]; then                    \
yann@230
    42
	      cp "$(CT_TOP_DIR)/samples/$(patsubst copy_config_%,%,$(@))/crosstool.config" "$(CT_TOP_DIR)/.config"; \
yann@182
    43
	 else                                                                                                       \
yann@230
    44
	      cp "$(CT_LIB_DIR)/samples/$(patsubst copy_config_%,%,$(@))/crosstool.config" "$(CT_TOP_DIR)/.config"; \
yann@182
    45
	 fi
yann@166
    46
yann@166
    47
# And now for building all samples one after the other
yann@230
    48
PHONY += regtest regtest_local regtest_global
yann@230
    49
regtest: regtest-local regtest-global
yann@230
    50
yann@230
    51
regtest-local: $(patsubst %,regtest_%,$(CT_TOP_SAMPLES))
yann@230
    52
yann@230
    53
regtest-global: $(patsubst %,regtest_%,$(CT_LIB_SAMPLES))
yann@230
    54
yann@333
    55
regtest.% regtest-local.% regtest-global.%:
yann@333
    56
	@$(CT_NG) $(shell echo "$(@)" |sed -r -e 's|^([^.]+)\.([[:digit:]]+)$$|\1 CT_JOBS=\2|;')
yann@333
    57
yann@230
    58
# One regtest per sample
yann@166
    59
# We could use a simple rule like: 'regtest: $(CT_SAMPLES)', but that doesn't
yann@166
    60
# work because we want to save the samples as well.
yann@166
    61
# Also, we don't want to see anylog at all, save for the elapsed time, and we
yann@166
    62
# want to save the log file in a specific place
yann@166
    63
# Furthermore, force the location where the toolchain will be installed.
yann@166
    64
# Finaly, we can't use 'make sample-name' as we need to provide default values
yann@166
    65
# if the options set has changed, but oldconfig does not like when stdin is
yann@166
    66
# not a terminal (eg. it is a pipe).
yann@230
    67
$(patsubst %,regtest_%,$(CT_SAMPLES)):
yann@230
    68
	@samp=$(patsubst regtest_%,%,$@)                                                                ;   \
yann@230
    69
	 echo -e "\rBuilding sample \"$${samp}\""                                                       &&  \
yann@230
    70
	 $(CT_NG) copy_config_$${samp}                                                                  &&  \
yann@230
    71
	 yes "" |$(CT_NG) defoldconfig >/dev/null 2>&1                                                  &&  \
yann@230
    72
	 sed -i -r -e 's:^(CT_PREFIX_DIR=).*$$:\1"$${CT_TOP_DIR}/targets/tst/$${CT_TARGET}":;' .config  &&  \
yann@230
    73
	 sed -i -r -e 's:^.*(CT_LOG_(WARN|INFO|EXTRA|DEBUG|ALL)).*$$:# \1 is not set:;' .config         &&  \
yann@230
    74
	 sed -i -r -e 's:^.*(CT_LOG_ERROR).*$$:\1=y:;' .config                                          &&  \
yann@230
    75
	 sed -i -r -e 's:^(CT_LOG_LEVEL_MAX)=.*$$:\1="ERROR":;' .config                                 &&  \
yann@230
    76
	 sed -i -r -e 's:^.*(CT_LOG_TO_FILE).*$$:\1=y:;' .config                                        &&  \
yann@230
    77
	 sed -i -r -e 's:^.*(CT_LOG_PROGRESS_BAR).*$$:\1=y:;' .config                                   &&  \
yann@230
    78
	 yes "" |$(CT_NG) defoldconfig >/dev/null 2>&1                                                  &&  \
yann@230
    79
	 $(CT_NG) build                                                                                 &&  \
yann@230
    80
	 echo -e "\rSuccessfully built sample \"$${samp}\""                                             &&  \
yann@230
    81
	 echo -e "\rMaking tarball for sample \"$${samp}\""                                             &&  \
yann@230
    82
	 $(CT_NG) tarball                                                                               &&  \
yann@230
    83
	 echo -e "\rSuccessfully built tarball for sample \"$${samp}\""                                 ;   \
yann@230
    84
	 echo -e "\rCleaning sample \"$${samp}\""                                                       ;   \
yann@230
    85
	 $(CT_NG) distclean                                                                             ;   \
yann@230
    86
	 echo -e "\r"
yann@166
    87
yann@63
    88
saveconfig:
yann@189
    89
	@$(CT_LIB_DIR)/scripts/saveSample.sh
yann@560
    90
yann@560
    91
wiki-samples:
yann@560
    92
	@$(CT_LIB_DIR)/scripts/showSamples.sh -w $(CT_SAMPLES)