mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2024-12-20 05:17:54 +00:00
Merge pull request #697 from stilor/makefile-enhancements-orig
Makefile enhancements
This commit is contained in:
commit
88fdbac425
2
.gitignore
vendored
2
.gitignore
vendored
@ -9,7 +9,7 @@ config.status
|
||||
!ct-ng.in
|
||||
paths.*
|
||||
!paths.in
|
||||
config.gen/
|
||||
config/gen/
|
||||
.config
|
||||
|
||||
# Temporaries
|
||||
|
144
Makefile.in
144
Makefile.in
@ -35,6 +35,12 @@ endif # No rR
|
||||
endif # No -Rr
|
||||
endif # No Rr
|
||||
|
||||
# Helper: print abbreviation of the command by default, or full command
|
||||
# if doing 'make V=1'.
|
||||
__silent = $(if $(V),,@printf ' %-7s %s\n' '$1' '$(if $2,$2,$(strip $<))' && )
|
||||
__silent_rm = $(call __silent,RM,$1)rm -f $1
|
||||
__silent_rmdir = $(call __silent,RMDIR,$1)rm -rf $1
|
||||
|
||||
# Remove any suffix rules
|
||||
.SUFFIXES:
|
||||
|
||||
@ -83,9 +89,6 @@ export curses_hdr := @ac_ct_curses_hdr@
|
||||
export gettext := @gettext@
|
||||
export CPU_COUNT := @CPU_COUNT@
|
||||
|
||||
# config options to push down to kconfig
|
||||
KCONFIG:= @kconfig_options@
|
||||
|
||||
###############################################################################
|
||||
# Non-configure variables
|
||||
MAN_SECTION := 1
|
||||
@ -98,7 +101,7 @@ PROG_NAME := $(shell echo 'ct-ng' |$(sed) -r -e '$(PROG_SED)' )
|
||||
|
||||
# Check if Makefile is up to date:
|
||||
Makefile: Makefile.in
|
||||
@echo "$< did changed: you must re-run './configure'"
|
||||
@echo "$< changed: you must re-run './configure'"
|
||||
@false
|
||||
|
||||
# If installing with DESTDIR, check it's an absolute path
|
||||
@ -142,12 +145,11 @@ install: build real-install
|
||||
clean: $(patsubst %,clean-%,$(TARGETS))
|
||||
|
||||
distclean: clean
|
||||
@echo " RM 'Makefile'"
|
||||
@rm -f Makefile
|
||||
$(call __silent_rm,Makefile)
|
||||
|
||||
mrproper: distclean
|
||||
@echo " RM 'autostuff'"
|
||||
@ rm -rf autom4te.cache config.log config.status configure
|
||||
$(call __silent_rmdir,autom4te.cache)
|
||||
$(call __silent_rm,config.log config.status configure)
|
||||
|
||||
uninstall: real-uninstall
|
||||
|
||||
@ -162,26 +164,25 @@ build-bin: $(PROG_NAME) \
|
||||
scripts/crosstool-NG.sh \
|
||||
scripts/saveSample.sh \
|
||||
scripts/showConfig.sh
|
||||
@chmod 755 $^
|
||||
$(call __silent,CHMOD,$^)chmod 755 $^
|
||||
|
||||
build-lib: config/configure.in \
|
||||
paths.mk \
|
||||
build-lib: paths.mk \
|
||||
paths.sh
|
||||
|
||||
build-lib-kconfig:
|
||||
@$(MAKE) -C kconfig
|
||||
$(call __silent,ENTER,kconfig)$(MAKE) -C kconfig
|
||||
$(call __silent,LEAVE,kconfig):
|
||||
|
||||
build-doc:
|
||||
|
||||
build-man: docs/$(PROG_NAME).1.gz
|
||||
|
||||
docs/$(PROG_NAME).1.gz: docs/$(PROG_NAME).1
|
||||
@echo " GZIP '$@'"
|
||||
@gzip -c9 $< >$@
|
||||
$(call __silent,GZIP)gzip -c9 $< >$@
|
||||
|
||||
define sed_it
|
||||
@echo " SED '$@'"
|
||||
@$(sed) -r -e 's,@@CT_BINDIR@@,$(bindir),g;' \
|
||||
$(call __silent,SED,$@)$(sed) -r \
|
||||
-e 's,@@CT_BINDIR@@,$(bindir),g;' \
|
||||
-e 's,@@CT_LIBDIR@@,$(libdir),g;' \
|
||||
-e 's,@@CT_DOCDIR@@,$(docdir),g;' \
|
||||
-e 's,@@CT_MANDIR@@,$(mandir),g;' \
|
||||
@ -212,27 +213,10 @@ __paths_vars = install bash awk grep make sed libtool \
|
||||
# We create a script fragment that is parseable from inside a Makefile,
|
||||
# and one from inside a shell script.
|
||||
paths.mk: FORCE
|
||||
@echo " GEN '$@'"
|
||||
@{ $(foreach w,$(__paths_vars),$(if $($w),echo 'export $w=$(subst ','\'',$($w))';)) :; } >$@
|
||||
$(call __silent,GEN,$@){ $(foreach w,$(__paths_vars),$(if $($w),echo 'export $w=$(subst ','\'',$($w))';)) :; } >$@
|
||||
|
||||
paths.sh: FORCE
|
||||
@echo " GEN '$@'"
|
||||
@{ $(foreach w,$(__paths_vars),$(if $($w),echo 'export $w="$(subst ','\'',$($w))"';)) :; } >$@
|
||||
|
||||
config/configure.in: FORCE
|
||||
@echo " GEN '$@'"
|
||||
@{ printf "# Generated file, do not edit\n"; \
|
||||
printf "# Default values as found by ./configure\n"; \
|
||||
for var in $(KCONFIG); do \
|
||||
printf "\n"; \
|
||||
printf "config CONFIGURE_$${var%%=*}\n"; \
|
||||
if [ "$${var#*=}" = "y" ]; then \
|
||||
printf " def_bool y\n"; \
|
||||
else \
|
||||
printf " bool\n"; \
|
||||
fi; \
|
||||
done; \
|
||||
} >$@
|
||||
$(call __silent,GEN,$@){ $(foreach w,$(__paths_vars),$(if $($w),echo 'export $w="$(subst ','\'',$($w))"';)) :; } >$@
|
||||
|
||||
FORCE:
|
||||
|
||||
@ -240,33 +224,24 @@ FORCE:
|
||||
# Clean rules
|
||||
|
||||
clean-bin:
|
||||
@echo " RM '$(PROG_NAME)'"
|
||||
@rm -f $(PROG_NAME)
|
||||
@echo " RM 'scripts/scripts.mk'"
|
||||
@rm -f scripts/scripts.mk
|
||||
@echo " RM 'scripts/crosstool-NG.sh'"
|
||||
@rm -f scripts/crosstool-NG.sh
|
||||
@echo " RM 'scripts/saveSample.sh'"
|
||||
@rm -f scripts/saveSample.sh
|
||||
@echo " RM 'scripts/showConfig.sh'"
|
||||
@rm -f scripts/showConfig.sh
|
||||
$(call __silent_rm,$(PROG_NAME))
|
||||
$(call __silent_rm,scripts/scripts.mk)
|
||||
$(call __silent_rm,scripts/crosstool-NG.sh)
|
||||
$(call __silent_rm,scripts/scripts/saveSample.sh)
|
||||
$(call __silent_rm,scripts/scripts/showConfig.sh)
|
||||
|
||||
clean-lib:
|
||||
@echo " RM 'paths'"
|
||||
@rm -f paths.mk paths.sh
|
||||
@echo " RM 'config/configure.in'"
|
||||
@rm -f config/configure.in
|
||||
$(call __silent_rm,paths.mk paths.sh)
|
||||
|
||||
clean-lib-kconfig:
|
||||
@$(MAKE) -C kconfig clean
|
||||
$(call __silent,ENTER,kconfig)$(MAKE) -C kconfig clean
|
||||
$(call __silent,LEAVE,kconfig):
|
||||
|
||||
clean-doc:
|
||||
|
||||
clean-man:
|
||||
@echo " RM 'docs/$(PROG_NAME).1'"
|
||||
@rm -f docs/$(PROG_NAME).1
|
||||
@echo " RM 'docs/$(PROG_NAME).1.gz'"
|
||||
@rm -f docs/$(PROG_NAME).1.gz
|
||||
$(call __silent_rm,docs/$(PROG_NAME).1)
|
||||
$(call __silent_rm,docs/$(PROG_NAME).1.gz)
|
||||
|
||||
#--------------------------------------
|
||||
# Check for --local setup
|
||||
@ -287,8 +262,7 @@ else
|
||||
real-install: $(patsubst %,install-%,$(TARGETS)) install-post
|
||||
|
||||
install-bin: $(DESTDIR)$(bindir)
|
||||
@echo " INST '$(PROG_NAME)'"
|
||||
@$(install) -m 755 $(PROG_NAME) "$(DESTDIR)$(bindir)/$(PROG_NAME)"
|
||||
$(call __silent,INST,$(PROG_NAME))$(install) -m 755 $(PROG_NAME) "$(DESTDIR)$(bindir)/$(PROG_NAME)"
|
||||
|
||||
# If one is hacking crosstool-NG, the patch set might change between any two
|
||||
# installations of the same VERSION, thus the patches must be removed prior
|
||||
@ -299,30 +273,22 @@ install-lib: $(DESTDIR)$(libdir) \
|
||||
install-lib-samples
|
||||
|
||||
LIB_SUB_DIR := config contrib patches scripts
|
||||
$(patsubst %,install-lib-%-copy,$(LIB_SUB_DIR)): $(DESTDIR)$(libdir)
|
||||
@echo " INSTDIR '$(patsubst install-lib-%-copy,%,$(@))/'"
|
||||
@tar cf - --exclude='*.sh.in' $(patsubst install-lib-%-copy,%,$(@)) \
|
||||
$(patsubst %,install-lib-%-copy,$(LIB_SUB_DIR)): install-lib-%-copy: $(DESTDIR)$(libdir)
|
||||
$(call __silent,INSTDIR,$*)tar cf - --exclude='*.sh.in' --exclude='*.in.in' $* \
|
||||
|(cd "$(DESTDIR)$(libdir)"; tar xf -)
|
||||
|
||||
# We need at least one command to make this rule kick-in.
|
||||
install-lib-%: install-lib-%-copy
|
||||
@true
|
||||
|
||||
install-lib-scripts: install-lib-scripts-copy
|
||||
@chmod a+x $(DESTDIR)$(libdir)/scripts/crosstool-NG.sh
|
||||
@chmod a+x $(DESTDIR)$(libdir)/scripts/saveSample.sh
|
||||
# Dependency-only by default.
|
||||
$(patsubst %,install-lib-%,$(LIB_SUB_DIR)): install-lib-%: install-lib-%-copy
|
||||
|
||||
install-lib-main: $(DESTDIR)$(libdir) $(patsubst %,install-lib-%,$(LIB_SUB_DIR))
|
||||
@echo " INST 'steps.mk'"
|
||||
@$(install) -m 644 steps.mk "$(DESTDIR)$(libdir)/steps.mk"
|
||||
@echo " INST 'paths'"
|
||||
@$(install) -m 644 paths.mk paths.sh "$(DESTDIR)$(libdir)"
|
||||
$(call __silent,INST,steps.mk)$(install) -m 644 steps.mk "$(DESTDIR)$(libdir)"
|
||||
$(call __silent,INST,paths.mk)$(install) -m 644 paths.mk "$(DESTDIR)$(libdir)"
|
||||
$(call __silent,INST,paths.sh)$(install) -m 644 paths.sh "$(DESTDIR)$(libdir)"
|
||||
|
||||
# Samples need a little love:
|
||||
# - change every occurrence of CT_TOP_DIR to CT_LIB_DIR
|
||||
install-lib-samples: $(DESTDIR)$(libdir) install-lib-main
|
||||
@echo " INSTDIR 'samples/'"
|
||||
@for samp_dir in samples/*/; do \
|
||||
$(call __silent,INSTDIR,samples)for samp_dir in samples/*/; do \
|
||||
mkdir -p "$(DESTDIR)$(libdir)/$${samp_dir}"; \
|
||||
$(sed) -r -e 's:\$$\{CT_TOP_DIR\}:\$$\{CT_LIB_DIR\}:;' \
|
||||
-e 's:^(CT_WORK_DIR)=.*:\1="\$${CT_TOP_DIR}/.build":;' \
|
||||
@ -341,13 +307,11 @@ install-lib-samples: $(DESTDIR)$(libdir) install-lib-main
|
||||
done
|
||||
@$(install) -m 644 samples/samples.mk "$(DESTDIR)$(libdir)/samples/samples.mk"
|
||||
|
||||
KCONFIG_FILES := conf mconf nconf kconfig.mk
|
||||
install-lib-kconfig: $(DESTDIR)$(libdir) install-lib-main
|
||||
@echo " INST 'kconfig/'"
|
||||
@mkdir -p "$(DESTDIR)$(libdir)/kconfig"
|
||||
@for f in $(KCONFIG_FILES); do \
|
||||
install "kconfig/$${f}" "$(DESTDIR)$(libdir)/kconfig/$${f}"; \
|
||||
done
|
||||
$(call __silent,MKDIR,$@)$(install) -m 755 -d "$(libdir)/kconfig"
|
||||
$(call __silent,ENTER,kconfig)$(MAKE) -C kconfig install \
|
||||
DESTDIR=$(DESTDIR)$(libdir)/kconfig
|
||||
$(call __silent,LEAVE,kconfig):
|
||||
|
||||
install-doc: install-doc-$(if $(wildcard docs/MANUAL_ONLINE),message,real)
|
||||
|
||||
@ -358,20 +322,16 @@ install-doc-message:
|
||||
@echo " http://crosstool-ng.github.io/docs"
|
||||
@echo "********************************************************************"
|
||||
|
||||
|
||||
install-doc-real: $(DESTDIR)$(docdir)
|
||||
@echo " INST 'docs/manual/*.md'"
|
||||
@for doc_file in docs/manual/*.md; do \
|
||||
$(call __silent,INST,docs)for doc_file in docs/manual/*.md; do \
|
||||
$(install) -m 644 "$${doc_file}" "$(DESTDIR)$(docdir)"; \
|
||||
done
|
||||
done
|
||||
|
||||
install-man: $(DESTDIR)$(mandir)$(MAN_SUBDIR)
|
||||
@echo " INST '$(PROG_NAME).1.gz'"
|
||||
@$(install) -m 644 docs/$(PROG_NAME).1.gz "$(DESTDIR)$(mandir)$(MAN_SUBDIR)"
|
||||
$(call __silent,INST,$(PROG_NAME).1.gz)$(install) -m 644 docs/$(PROG_NAME).1.gz "$(DESTDIR)$(mandir)$(MAN_SUBDIR)"
|
||||
|
||||
$(sort $(DESTDIR)$(bindir) $(DESTDIR)$(libdir) $(DESTDIR)$(docdir) $(DESTDIR)$(mandir)$(MAN_SUBDIR)):
|
||||
@echo " MKDIR '$@/'"
|
||||
@$(install) -m 755 -d "$@"
|
||||
$(call __silent,MKDIR,$@)$(install) -m 755 -d "$@"
|
||||
|
||||
install-post:
|
||||
@echo
|
||||
@ -384,20 +344,16 @@ install-post:
|
||||
real-uninstall: $(patsubst %,uninstall-%,$(filter-out lib-kconfig,$(TARGETS)))
|
||||
|
||||
uninstall-bin:
|
||||
@echo " RM '$(DESTDIR)$(bindir)/$(PROG_NAME)'"
|
||||
@rm -f "$(DESTDIR)$(bindir)/$(PROG_NAME)"
|
||||
$(call __silent_rm,$(DESTDIR)$(bindir)/$(PROG_NAME))
|
||||
|
||||
uninstall-lib:
|
||||
@echo " RMDIR '$(DESTDIR)$(libdir)/'"
|
||||
@rm -rf "$(DESTDIR)$(libdir)"
|
||||
$(call __silent_rmdir,$(DESTDIR)$(libdir))
|
||||
|
||||
uninstall-doc:
|
||||
@echo " RMDIR '$(DESTDIR)$(docdir)/'"
|
||||
@rm -rf "$(DESTDIR)$(docdir)"
|
||||
$(call __silent_rmdir,$(DESTDIR)$(docdir))
|
||||
|
||||
uninstall-man:
|
||||
@echo " RM '$(DESTDIR)$(mandir)$(MAN_SUBDIR)/$(PROG_NAME).1.gz'"
|
||||
@rm -f "$(DESTDIR)$(mandir)$(MAN_SUBDIR)/$(PROG_NAME).1"{,.gz}
|
||||
$(call __silent_rm,$(DESTDIR)$(mandir)$(MAN_SUBDIR)/$(PROG_NAME).1.gz)
|
||||
|
||||
endif # Not --local
|
||||
|
||||
|
1
TODO
1
TODO
@ -46,7 +46,6 @@ A (slightly) ordered set of tasks for crosstool-NG. Written in a cryptic languag
|
||||
[ ] add passthrough to configure, for host/target
|
||||
[ ] Read/spellcheck configs & scripts
|
||||
[ ] 'ct-ng olddefconfig'
|
||||
[ ] Install config.gen so that it is not rebuilt in the installed configurations
|
||||
[ ] Install a "trap" C++ compiler as ${CT_TARGET}-g++ during pass-1/pass-2 to trap attempts to compile target code with g++ (currently glibc detects host g++ and warns that it uses g++ w/o target triplet)
|
||||
[ ] Somehow it needs to be functional during the configure step - export env var while running in CT_DoExecLog with CFG level, and forward it to host compiler?
|
||||
[ ] elf2flt not compatible with multiple linkers enabled in binutils (ld.bfd + ld.gold) - fix upstream?
|
||||
|
@ -4,4 +4,7 @@ set -e
|
||||
printf "Running autoconf...\n"
|
||||
autoconf -Wall --force
|
||||
|
||||
printf "Generating kconfig files...\n"
|
||||
./maintainer/gen-kconfig.sh
|
||||
|
||||
printf "Done. You may now run:\n ./configure\n"
|
||||
|
@ -1,26 +0,0 @@
|
||||
# Options specific to crosstool-NG acting as a backend
|
||||
|
||||
config IS_A_BACKEND
|
||||
string
|
||||
option env="CT_IS_A_BACKEND"
|
||||
|
||||
config BACKEND
|
||||
bool
|
||||
depends on OBSOLETE
|
||||
default y if IS_A_BACKEND = "y" || IS_A_BACKEND = "Y"
|
||||
|
||||
if BACKEND
|
||||
|
||||
config BACKEND_ARCH
|
||||
string
|
||||
option env="CT_BACKEND_ARCH"
|
||||
|
||||
config BACKEND_KERNEL
|
||||
string
|
||||
option env="CT_BACKEND_KERNEL"
|
||||
|
||||
config BACKEND_LIBC
|
||||
string
|
||||
option env="CT_BACKEND_LIBC"
|
||||
|
||||
endif #if BACKEND
|
@ -36,7 +36,7 @@ endchoice
|
||||
config BINUTILS
|
||||
string
|
||||
|
||||
source "config.gen/binutils.in"
|
||||
source "config.gen/binutils.in.2"
|
||||
source "config/gen/binutils.in"
|
||||
source "config/gen/binutils.in.2"
|
||||
|
||||
endmenu
|
||||
|
@ -314,7 +314,6 @@ config BINUTILS_FOR_TARGET
|
||||
bool
|
||||
prompt "binutils libraries for the target"
|
||||
depends on ! BARE_METAL
|
||||
depends on ! BACKEND
|
||||
help
|
||||
Some utilities may need binutils libraries to be available on
|
||||
the target, eg. oprofile.
|
||||
|
@ -20,7 +20,7 @@ config CC_CORE_PASS_1_NEEDED
|
||||
config CC_CORE_PASS_2_NEEDED
|
||||
bool
|
||||
|
||||
source "config.gen/cc.in"
|
||||
source "config/gen/cc.in"
|
||||
|
||||
config CC_SUPPORT_CXX
|
||||
bool
|
||||
|
@ -10,6 +10,6 @@ config COMP_TOOLS_FOR_HOST
|
||||
tools into the final toolchain (rather than just using them
|
||||
to build it).
|
||||
|
||||
source "config.gen/companion_tools.in"
|
||||
source "config/gen/companion_tools.in"
|
||||
|
||||
endmenu
|
||||
|
@ -1,5 +1,4 @@
|
||||
source "config/configure.in"
|
||||
source "config/backend.in"
|
||||
source "config/global.in"
|
||||
source "config/target.in"
|
||||
source "config/toolchain.in"
|
||||
|
114
config/config.mk
114
config/config.mk
@ -1,114 +0,0 @@
|
||||
# ===========================================================================
|
||||
# crosstool-NG genererated config files
|
||||
# These targets are used from top-level makefile
|
||||
|
||||
#-----------------------------------------------------------
|
||||
# List all config files, wether sourced or generated
|
||||
|
||||
# The top-level config file to be used be configurators
|
||||
# We need it to savedefconfig in scripts/saveSample.sh
|
||||
export KCONFIG_TOP = config/config.in
|
||||
|
||||
# Build the list of all source config files
|
||||
STATIC_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(shell find $(CT_LIB_DIR)/config -type f \( -name '*.in' -o -name '*.in.2' \) 2>/dev/null))
|
||||
# ... and how to access them:
|
||||
$(STATIC_CONFIG_FILES): config
|
||||
|
||||
# Build a list of per-component-type source config files
|
||||
ARCH_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/arch/*.in)))
|
||||
ARCH_CONFIG_FILES_2 = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/arch/*.in.2)))
|
||||
KERNEL_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/kernel/*.in)))
|
||||
KERNEL_CONFIG_FILES_2 = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/kernel/*.in.2)))
|
||||
CC_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/cc/*.in)))
|
||||
CC_CONFIG_FILES_2 = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/cc/*.in.2)))
|
||||
BINUTILS_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/binutils/*.in)))
|
||||
BINUTILS_CONFIG_FILES_2 = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/binutils/*.in.2)))
|
||||
LIBC_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/libc/*.in)))
|
||||
LIBC_CONFIG_FILES_2 = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/libc/*.in.2)))
|
||||
DEBUG_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/debug/*.in)))
|
||||
COMP_TOOLS_CONFIG_FILES = $(patsubst $(CT_LIB_DIR)/%,%,$(sort $(wildcard $(CT_LIB_DIR)/config/companion_tools/*.in)))
|
||||
|
||||
# Build the list of generated config files
|
||||
GEN_CONFIG_FILES = config.gen/arch.in \
|
||||
config.gen/kernel.in \
|
||||
config.gen/cc.in \
|
||||
config.gen/binutils.in \
|
||||
config.gen/libc.in \
|
||||
config.gen/debug.in \
|
||||
config.gen/companion_tools.in
|
||||
# ... and how to access them:
|
||||
# Generated files depends on the gen_in_frags script because it has the
|
||||
# functions needed to build the genrated files, and thus they might need
|
||||
# re-generation if it changes.
|
||||
# They also depends on config.mk (this file) because it has the dependency
|
||||
# rules, and thus they might need re-generation if the deps change.
|
||||
$(GEN_CONFIG_FILES): config.gen \
|
||||
$(CT_LIB_DIR)/scripts/gen_in_frags.sh \
|
||||
$(CT_LIB_DIR)/config/config.mk
|
||||
|
||||
# Helper entry for the configurators
|
||||
PHONY += config_files
|
||||
config_files: $(STATIC_CONFIG_FILES) $(GEN_CONFIG_FILES)
|
||||
|
||||
# Where to access to the source config files from
|
||||
config:
|
||||
@$(CT_ECHO) " LN config"
|
||||
$(SILENT)ln -s $(CT_LIB_DIR)/config config
|
||||
|
||||
# Where to store the generated config files into
|
||||
config.gen:
|
||||
@$(CT_ECHO) " MKDIR config.gen"
|
||||
$(SILENT)mkdir -p config.gen
|
||||
|
||||
#-----------------------------------------------------------
|
||||
# Build list of per-component-type items to easily build generated files
|
||||
|
||||
ARCHS = $(patsubst config/arch/%.in,%,$(ARCH_CONFIG_FILES))
|
||||
KERNELS = $(patsubst config/kernel/%.in,%,$(KERNEL_CONFIG_FILES))
|
||||
CCS = $(patsubst config/cc/%.in,%,$(CC_CONFIG_FILES))
|
||||
BINUTILSS = $(patsubst config/binutils/%.in,%,$(BINUTILS_CONFIG_FILES))
|
||||
LIBCS = $(patsubst config/libc/%.in,%,$(LIBC_CONFIG_FILES))
|
||||
DEBUGS = $(patsubst config/debug/%.in,%,$(DEBUG_CONFIG_FILES))
|
||||
COMP_TOOLS= $(patsubst config/companion_tools/%.in,%,$(COMP_TOOLS_CONFIG_FILES))
|
||||
|
||||
#-----------------------------------------------------------
|
||||
# The rules for the generated config files
|
||||
|
||||
# WARNING! If a .in file disapears between two runs, that will NOT be detected!
|
||||
|
||||
config.gen/arch.in: $(ARCH_CONFIG_FILES) $(ARCH_CONFIG_FILES_2)
|
||||
@$(CT_ECHO) ' IN $(@)'
|
||||
$(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh choice "$@" "Target Architecture" "ARCH" "config/arch" "Y" $(ARCHS)
|
||||
|
||||
config.gen/kernel.in: $(KERNEL_CONFIG_FILES) $(KERNEL_CONFIG_FILES_2)
|
||||
@$(CT_ECHO) ' IN $(@)'
|
||||
$(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh choice "$@" "Target OS" "KERNEL" "config/kernel" "Y" $(KERNELS)
|
||||
|
||||
config.gen/cc.in: $(CC_CONFIG_FILES) $(CC_CONFIG_FILES_2)
|
||||
@$(CT_ECHO) ' IN $(@)'
|
||||
$(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh choice "$@" "C compiler" "CC" "config/cc" "N" $(CCS)
|
||||
|
||||
config.gen/binutils.in: $(CC_BINUTILS_FILES) $(CC_BINUTILS_FILES_2)
|
||||
@$(CT_ECHO) ' IN $(@)'
|
||||
$(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh choice "$@" "Binutils" "BINUTILS" "config/binutils" "N" $(BINUTILSS)
|
||||
|
||||
config.gen/libc.in: $(LIBC_CONFIG_FILES) $(LIBC_CONFIG_FILES_2)
|
||||
@$(CT_ECHO) ' IN $(@)'
|
||||
$(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh choice "$@" "C library" "LIBC" "config/libc" "Y" $(LIBCS)
|
||||
|
||||
config.gen/debug.in: $(DEBUG_CONFIG_FILES)
|
||||
@$(CT_ECHO) ' IN $(@)'
|
||||
$(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh menu "$@" "Debug facilities" "DEBUG" "config/debug" $(DEBUGS)
|
||||
|
||||
config.gen/companion_tools.in: $(COMP_TOOLS_CONFIG_FILES)
|
||||
@$(CT_ECHO) ' IN $(@)'
|
||||
$(SILENT)$(CT_LIB_DIR)/scripts/gen_in_frags.sh menu "$@" "Companion tools" "COMP_TOOLS" "config/companion_tools" $(COMP_TOOLS)
|
||||
|
||||
#-----------------------------------------------------------
|
||||
# Cleaning up the mess...
|
||||
|
||||
clean::
|
||||
@$(CT_ECHO) " CLEAN config"
|
||||
$(SILENT)rm -f config 2>/dev/null || true
|
||||
@$(CT_ECHO) " CLEAN config.gen"
|
||||
$(SILENT)rm -rf config.gen
|
46
config/configure.in.in
Normal file
46
config/configure.in.in
Normal file
@ -0,0 +1,46 @@
|
||||
# Default values as found by ./configure
|
||||
|
||||
config CONFIGURE_has_static_link
|
||||
@KCONFIG_static_link@
|
||||
|
||||
config CONFIGURE_has_wget
|
||||
@KCONFIG_wget@
|
||||
|
||||
config CONFIGURE_has_curl
|
||||
@KCONFIG_curl@
|
||||
|
||||
config CONFIGURE_has_stat_flavor_BSD
|
||||
@KCONFIG_stat_flavor_BSD@
|
||||
|
||||
config CONFIGURE_has_stat_flavor_GNU
|
||||
@KCONFIG_stat_flavor_GNU@
|
||||
|
||||
config CONFIGURE_has_make_3_81_or_newer
|
||||
@KCONFIG_make_3_81_or_newer@
|
||||
|
||||
config CONFIGURE_has_libtool_2_4_or_newer
|
||||
@KCONFIG_libtool_2_4_or_newer@
|
||||
|
||||
config CONFIGURE_has_libtoolize_2_4_or_newer
|
||||
@KCONFIG_libtoolize_2_4_or_newer@
|
||||
|
||||
config CONFIGURE_has_autoconf_2_63_or_newer
|
||||
@KCONFIG_autoconf_2_63_or_newer@
|
||||
|
||||
config CONFIGURE_has_autoreconf_2_63_or_newer
|
||||
@KCONFIG_autoreconf_2_63_or_newer@
|
||||
|
||||
config CONFIGURE_has_automake_1_15_or_newer
|
||||
@KCONFIG_automake_1_15_or_newer@
|
||||
|
||||
config CONFIGURE_has_gnu_m4_1_4_12_or_newer
|
||||
@KCONFIG_gnu_m4_1_4_12_or_newer@
|
||||
|
||||
config CONFIGURE_has_cvs
|
||||
@KCONFIG_cvs@
|
||||
|
||||
config CONFIGURE_has_svn
|
||||
@KCONFIG_svn@
|
||||
|
||||
config CONFIGURE_has_git
|
||||
@KCONFIG_git@
|
@ -1,3 +1,3 @@
|
||||
menu "Debug facilities"
|
||||
source "config.gen/debug.in"
|
||||
source "config/gen/debug.in"
|
||||
endmenu
|
||||
|
@ -1,6 +1,5 @@
|
||||
# D.U.M.A. - Detect Unintended Memory Access - Memory checker
|
||||
|
||||
## depends on ! BACKEND
|
||||
## depends on ! BARE_METAL
|
||||
|
||||
## help D.U.M.A. - Detect Unintended Memory Access
|
||||
|
@ -4,7 +4,6 @@ config GDB_NATIVE
|
||||
bool
|
||||
prompt "Native gdb"
|
||||
depends on ! BARE_METAL
|
||||
depends on ! BACKEND
|
||||
select EXPAT_TARGET
|
||||
select NCURSES_TARGET
|
||||
help
|
||||
|
@ -1,7 +1,5 @@
|
||||
# ltrace
|
||||
|
||||
## depends on ! BACKEND
|
||||
##
|
||||
## select LIBELF_TARGET
|
||||
##
|
||||
## help ltrace is a program that simply runs the specified command until it exits.
|
||||
|
@ -1,7 +1,5 @@
|
||||
# strace
|
||||
|
||||
## depends on ! BACKEND
|
||||
|
||||
choice
|
||||
bool
|
||||
prompt "strace version"
|
||||
|
@ -2,12 +2,9 @@
|
||||
|
||||
comment "Build behavior"
|
||||
|
||||
comment "Build options hiden"
|
||||
depends on BACKEND
|
||||
|
||||
config PARALLEL_JOBS
|
||||
int
|
||||
prompt "Number of parallel jobs" if ! BACKEND
|
||||
prompt "Number of parallel jobs"
|
||||
default 0
|
||||
help
|
||||
Number of jobs make will be allowed to run concurently.
|
||||
@ -20,7 +17,7 @@ config PARALLEL_JOBS
|
||||
|
||||
config LOAD
|
||||
string
|
||||
prompt "Maximum allowed load" if ! BACKEND
|
||||
prompt "Maximum allowed load"
|
||||
default ""
|
||||
help
|
||||
Specifies that no new jobs should be started if there are others jobs
|
||||
@ -33,7 +30,7 @@ config LOAD
|
||||
|
||||
config USE_PIPES
|
||||
bool
|
||||
prompt "Use -pipe" if ! BACKEND
|
||||
prompt "Use -pipe"
|
||||
default y
|
||||
help
|
||||
Use gcc's option -pipe to use pipes rather than temp files when building
|
||||
@ -83,7 +80,6 @@ choice
|
||||
bool
|
||||
prompt "Shell to use as CONFIG_SHELL"
|
||||
default CONFIG_SHELL_BASH
|
||||
depends on ! BACKEND
|
||||
|
||||
config CONFIG_SHELL_SH
|
||||
bool
|
||||
@ -141,13 +137,10 @@ config CONFIG_SHELL_CUSTOM
|
||||
|
||||
endchoice
|
||||
|
||||
# Do not put this into the choice above, because the choice
|
||||
# is not available in BACKEND-mode, while we do want this to
|
||||
# be set even in BACKEND-mode.
|
||||
config CONFIG_SHELL_CUSTOM_PATH
|
||||
string
|
||||
prompt "Path to custom shell" if ! BACKEND
|
||||
depends on CONFIG_SHELL_CUSTOM || BACKEND
|
||||
prompt "Path to custom shell"
|
||||
depends on CONFIG_SHELL_CUSTOM
|
||||
default "/bin/sh"
|
||||
|
||||
# Ditto.
|
||||
@ -157,4 +150,4 @@ config CONFIG_SHELL
|
||||
default "/bin/sh" if CONFIG_SHELL_SH
|
||||
default "/bin/ash" if CONFIG_SHELL_ASH
|
||||
default "${bash}" if CONFIG_SHELL_BASH
|
||||
default CONFIG_SHELL_CUSTOM_PATH if CONFIG_SHELL_CUSTOM || BACKEND
|
||||
default CONFIG_SHELL_CUSTOM_PATH if CONFIG_SHELL_CUSTOM
|
||||
|
@ -63,7 +63,6 @@ config ALLOW_BUILD_AS_ROOT_SURE
|
||||
config DEBUG_CT
|
||||
bool
|
||||
prompt "Debug crosstool-NG"
|
||||
depends on ! BACKEND
|
||||
help
|
||||
Say 'y' here to get some options regarding debugging crosstool-NG.
|
||||
|
||||
|
@ -4,7 +4,7 @@ comment "Paths"
|
||||
|
||||
config LOCAL_TARBALLS_DIR
|
||||
string
|
||||
prompt "Local tarballs directory" if ! BACKEND
|
||||
prompt "Local tarballs directory"
|
||||
default "${HOME}/src"
|
||||
help
|
||||
If you have previously downloaded the tarballs, enter the PATH where
|
||||
@ -12,8 +12,8 @@ config LOCAL_TARBALLS_DIR
|
||||
|
||||
config SAVE_TARBALLS
|
||||
bool
|
||||
prompt "Save new tarballs" if ! BACKEND
|
||||
depends on LOCAL_TARBALLS_DIR != "" || BACKEND
|
||||
prompt "Save new tarballs"
|
||||
depends on LOCAL_TARBALLS_DIR != ""
|
||||
default y
|
||||
help
|
||||
If you say 'y' here, new downloaded tarballs will be saved in the
|
||||
@ -21,7 +21,7 @@ config SAVE_TARBALLS
|
||||
|
||||
config WORK_DIR
|
||||
string
|
||||
prompt "Working directory" if ! BACKEND
|
||||
prompt "Working directory"
|
||||
default "${CT_TOP_DIR}/.build"
|
||||
help
|
||||
Set this to the directory where all build actions will be done.
|
||||
@ -46,7 +46,7 @@ config BUILD_TOP_DIR
|
||||
|
||||
config PREFIX_DIR
|
||||
string
|
||||
prompt "Prefix directory" if ! BACKEND
|
||||
prompt "Prefix directory"
|
||||
default "${CT_PREFIX:-${HOME}/x-tools}/${CT_HOST:+HOST-${CT_HOST}/}${CT_TARGET}"
|
||||
help
|
||||
This is the path the toolchain will run from.
|
||||
@ -55,7 +55,6 @@ config RM_RF_PREFIX_DIR
|
||||
bool
|
||||
prompt "| Remove the prefix dir prior to building"
|
||||
default y
|
||||
depends on !BACKEND
|
||||
help
|
||||
If you say 'y' here, then PREFIX_DIR (above) will be eradicated
|
||||
prior to the toolchain is built.
|
||||
@ -69,9 +68,6 @@ config RM_RF_PREFIX_DIR
|
||||
it into a directory with pre-install, unrelated programs, it would be
|
||||
damageable to remove that directory. In this case, you may want to
|
||||
say 'n' here.
|
||||
|
||||
Note that when acting as a backend, this option is not available, and
|
||||
is forced to 'n'.
|
||||
|
||||
config REMOVE_DOCS
|
||||
bool
|
||||
|
@ -22,7 +22,7 @@ config KERNEL
|
||||
config KERNEL_VERSION
|
||||
string
|
||||
|
||||
source "config.gen/kernel.in"
|
||||
source "config/gen/kernel.in"
|
||||
|
||||
comment "Common kernel options"
|
||||
|
||||
@ -37,6 +37,6 @@ config SHARED_LIBS
|
||||
You might not want shared libraries if you're building for a target that
|
||||
don't support it (maybe some nommu targets, for example, or bare metal).
|
||||
|
||||
source "config.gen/kernel.in.2"
|
||||
source "config/gen/kernel.in.2"
|
||||
|
||||
endmenu
|
||||
|
@ -19,7 +19,7 @@ config LIBC_VERSION
|
||||
So if you want to be able to re-build your toolchain later, you will
|
||||
have to save your C library tarball by yourself.
|
||||
|
||||
source "config.gen/libc.in"
|
||||
source "config/gen/libc.in"
|
||||
|
||||
config LIBC_SUPPORT_THREADS_ANY
|
||||
bool
|
||||
@ -123,7 +123,7 @@ config LIBC_XLDD
|
||||
for the native ldd. Please see the help, by running it
|
||||
with '--help' for more explanations.
|
||||
|
||||
source "config.gen/libc.in.2"
|
||||
source "config/gen/libc.in.2"
|
||||
|
||||
endif # ! LIBC_none
|
||||
|
||||
|
@ -5,7 +5,7 @@ menu "Target options"
|
||||
config ARCH
|
||||
string
|
||||
|
||||
source "config.gen/arch.in"
|
||||
source "config/gen/arch.in"
|
||||
|
||||
config ARCH_SUFFIX
|
||||
string
|
||||
@ -392,6 +392,6 @@ config ARCH_FLOAT
|
||||
default "soft" if ARCH_FLOAT_SW
|
||||
default "softfp" if ARCH_FLOAT_SOFTFP
|
||||
|
||||
source "config.gen/arch.in.2"
|
||||
source "config/gen/arch.in.2"
|
||||
|
||||
endmenu
|
||||
|
@ -20,7 +20,7 @@ config USE_SYSROOT
|
||||
|
||||
config SYSROOT_NAME
|
||||
string
|
||||
prompt "sysroot directory name" if ! BACKEND
|
||||
prompt "sysroot directory name"
|
||||
depends on USE_SYSROOT
|
||||
default "sysroot"
|
||||
help
|
||||
@ -33,7 +33,7 @@ config SYSROOT_NAME
|
||||
|
||||
config SYSROOT_DIR_PREFIX
|
||||
string
|
||||
prompt "sysroot prefix dir (READ HELP)" if ! BACKEND
|
||||
prompt "sysroot prefix dir (READ HELP)"
|
||||
depends on USE_SYSROOT
|
||||
default ""
|
||||
help
|
||||
|
@ -65,10 +65,9 @@ AC_DEFUN(
|
||||
AC_DEFUN(
|
||||
[ACX_SET_KCONFIG_OPTION],
|
||||
[AS_IF(
|
||||
[test -n "$$1"],
|
||||
[kconfig_options="$kconfig_options has_$1=y"],
|
||||
[kconfig_options="$kconfig_options has_$1"])
|
||||
])
|
||||
[test -n "$$1"],
|
||||
[AC_SUBST([KCONFIG_$1], ["def_bool y"])],
|
||||
[AC_SUBST([KCONFIG_$1], ["bool"])])])
|
||||
|
||||
# Check if a given program is available with a particular version.
|
||||
# ACX_PROG_VERSION(VAR, HELP, PROG, SRCH, VERSION_CHECK[, CONFIG_OPT])
|
||||
@ -466,5 +465,5 @@ AS_IF(
|
||||
#--------------------------------------------------------------------
|
||||
# Finally, generate the output file(s)
|
||||
#--------------------------------------------------------------------
|
||||
AC_CONFIG_FILES([Makefile])
|
||||
AC_CONFIG_FILES([Makefile config/configure.in])
|
||||
AC_OUTPUT
|
||||
|
1
ct-ng.in
1
ct-ng.in
@ -111,7 +111,6 @@ help-clean::
|
||||
@echo ' clean - Remove generated files'
|
||||
@echo ' distclean - Remove generated files, configuration and build directories'
|
||||
|
||||
include $(CT_LIB_DIR)/config/config.mk
|
||||
include $(CT_LIB_DIR)/kconfig/kconfig.mk
|
||||
include $(CT_LIB_DIR)/steps.mk
|
||||
include $(CT_LIB_DIR)/samples/samples.mk
|
||||
|
@ -2,7 +2,12 @@
|
||||
# Hmmm! Cheesy build!
|
||||
# Or: where I can unveil my make-fu... :-]
|
||||
|
||||
all: conf mconf nconf
|
||||
__silent = $(if $(V),,@printf ' %-7s %s\n' '$1' '$(if $2,$2,$(strip $<))' && )
|
||||
__silent_rm = $(call __silent,RM,$1)rm -f $1
|
||||
|
||||
PROGS = conf mconf nconf
|
||||
|
||||
all: $(PROGS)
|
||||
@true # Just be silent, you fscking son of a fscking beach...
|
||||
|
||||
# Build flags
|
||||
@ -64,8 +69,7 @@ DEPS += $(nconf_DEP)
|
||||
|
||||
# Build the dependency for C files
|
||||
%.dep: %.c
|
||||
@echo " DEP '$@'"
|
||||
@$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -MM $< |$(sed) -r -e 's|([^:]+.o)( *:+)|$(<:.c=.o) $@\2|;' >$@
|
||||
$(call __silent,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 zconf.lex.c
|
||||
@ -73,39 +77,39 @@ zconf.tab.dep: zconf.tab.c zconf.hash.c zconf.lex.c
|
||||
|
||||
.PRECIOUS: zconf.tab.c
|
||||
zconf.tab.c: zconf.y
|
||||
@echo " BISON '$@'"
|
||||
@bison -l -b zconf -p zconf $<
|
||||
$(call __silent,BISON)bison -l -b zconf -p zconf $<
|
||||
|
||||
zconf.hash.c: zconf.gperf
|
||||
@echo " GPERF '$@'"
|
||||
@$(gperf) -C < $< > $@
|
||||
$(call __silent,GPERF)$(gperf) -C < $< > $@
|
||||
|
||||
zconf.lex.c: zconf.l
|
||||
@echo " LEX '$@'"
|
||||
@flex -L -Pzconf -o$@ $<
|
||||
$(call __silent,LEX)flex -L -Pzconf -o$@ $<
|
||||
|
||||
# Build C files
|
||||
%.o: %.c
|
||||
@echo " CC '$@'"
|
||||
@$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -o $@ -c $<
|
||||
$(call __silent,CC)$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -o $@ -c $<
|
||||
|
||||
# Actual link
|
||||
mconf: $(COMMON_OBJ) $(LX_OBJ) $(mconf_OBJ)
|
||||
@echo " LD '$@'"
|
||||
@$(CC) -o $@ $^ $(LDFLAGS) $(EXTRA_LDFLAGS)
|
||||
$(call __silent,LD,$@)$(CC) -o $@ $^ $(LDFLAGS) $(EXTRA_LDFLAGS)
|
||||
|
||||
nconf: $(COMMON_OBJ) $(nconf_OBJ)
|
||||
@echo " LD '$@'"
|
||||
@$(CC) -o $@ $^ $(LDFLAGS) $(EXTRA_LDFLAGS)
|
||||
$(call __silent,LD,$@)$(CC) -o $@ $^ $(LDFLAGS) $(EXTRA_LDFLAGS)
|
||||
|
||||
conf: $(COMMON_OBJ) $(conf_OBJ)
|
||||
@echo " LD '$@'"
|
||||
@$(CC) -o $@ $^ $(LDFLAGS) $(EXTRA_LDFLAGS)
|
||||
$(call __silent,LD,$@)$(CC) -o $@ $^ $(LDFLAGS) $(EXTRA_LDFLAGS)
|
||||
|
||||
#-----------------------------------------------------------
|
||||
# Installation
|
||||
install: $(patsubst %,install-%,$(PROGS)) install-kconfig.mk
|
||||
|
||||
install-%: %
|
||||
$(call __silent,INSTALL,$<)install $< $(DESTDIR)/$<
|
||||
|
||||
#-----------------------------------------------------------
|
||||
# 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 zconf.lex.c lex.backup
|
||||
$(call __silent,RM,objs)rm -f $(ALL_OBJS) $(ALL_DEPS)
|
||||
$(call __silent_rm,$(PROGS))
|
||||
$(call __silent_rm,zconf.tab.c zconf.hash.c zconf.lex.c lex.backup)
|
||||
|
@ -5,31 +5,27 @@
|
||||
#-----------------------------------------------------------
|
||||
# The configurators rules
|
||||
|
||||
configurators = menuconfig nconfig oldconfig savedefconfig defconfig
|
||||
PHONY += $(configurators)
|
||||
|
||||
$(configurators): config_files
|
||||
|
||||
export CT_IS_A_BACKEND:=$(CT_IS_A_BACKEND)
|
||||
export CT_BACKEND_ARCH:=$(CT_BACKEND_ARCH)
|
||||
export CT_BACKEND_KERNEL:=$(CT_BACKEND_KERNEL)
|
||||
export CT_BACKEND_LIBC:=$(CT_BACKEND_LIBC)
|
||||
# Top file of crosstool-NG configuration
|
||||
export KCONFIG_TOP = $(CT_LIB_DIR)/config/config.in
|
||||
|
||||
# We need CONF for savedefconfig in scripts/saveSample.sh
|
||||
export CONF := $(CT_LIB_DIR)/kconfig/conf
|
||||
MCONF := $(CT_LIB_DIR)/kconfig/mconf
|
||||
NCONF := $(CT_LIB_DIR)/kconfig/nconf
|
||||
|
||||
# Used by conf/mconf/nconf to find the .in files
|
||||
export srctree=$(CT_LIB_DIR)
|
||||
|
||||
menuconfig:
|
||||
@$(CT_ECHO) " CONF $(KCONFIG_TOP)"
|
||||
@$(CT_ECHO) " CONF $@"
|
||||
$(SILENT)$(MCONF) $(KCONFIG_TOP)
|
||||
|
||||
nconfig:
|
||||
@$(CT_ECHO) " CONF $(KCONFIG_TOP)"
|
||||
@$(CT_ECHO) " CONF $@"
|
||||
$(SILENT)$(NCONF) $(KCONFIG_TOP)
|
||||
|
||||
oldconfig: .config
|
||||
@$(CT_ECHO) " CONF $(KCONFIG_TOP)"
|
||||
@$(CT_ECHO) " CONF $@"
|
||||
$(SILENT)$(CONF) --silent$@ $(KCONFIG_TOP)
|
||||
|
||||
savedefconfig: .config
|
||||
|
@ -1,15 +1,19 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
# This scripts generates either a choice or a menuconfig
|
||||
# with the specified entries.
|
||||
# Accept overrides from command line if needed
|
||||
sed=${SED:-sed}
|
||||
grep=${GREP:-grep}
|
||||
|
||||
# Generate either a choice or a menuconfig with the specified entries.
|
||||
#
|
||||
# Usage:
|
||||
# generate a choice:
|
||||
# gen_in_frags.sh choice <out-file> <label> <config-prefix> <base-dir> <conditionals> entry [entry...]
|
||||
# gen_choice <out-file> <label> <config-prefix> <base-dir>
|
||||
#
|
||||
# generate a menuconfig:
|
||||
# gen_in_frags.sh menu <out-file> <label> <config-prefix> <base-dir> entry [entry...]
|
||||
# gen_menu <out-file> <label> <config-prefix> <base-dir>
|
||||
#
|
||||
# where:
|
||||
# out-file
|
||||
@ -29,19 +33,17 @@ set -e
|
||||
# base directory containing config files
|
||||
# eg. config/arch, config/kernel...
|
||||
#
|
||||
# conditionals (valid only for choice)
|
||||
# generate backend conditionals if Y/y, don't if anything else
|
||||
# if 'Y' (or 'y'), a dependency on the backen mode will be added
|
||||
# to each entry
|
||||
#
|
||||
# entry [entry...]
|
||||
# a list of entry/ies toadd to the choice/menuconfig
|
||||
# eg.:
|
||||
# arm mips sh x86...
|
||||
# linux cygwin mingw32 solaris...
|
||||
# ...
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Helper: find the base names of all *.in files in a given directory
|
||||
get_components() {
|
||||
local dir="${1}"
|
||||
local f b
|
||||
|
||||
for f in ${dir}/*.in; do
|
||||
b=${f#${dir}/}
|
||||
echo ${b%.in}
|
||||
done
|
||||
}
|
||||
|
||||
# Generate a choice
|
||||
# See above for usage
|
||||
@ -50,8 +52,6 @@ gen_choice() {
|
||||
local label="${2}"
|
||||
local cfg_prefix="${3}"
|
||||
local base_dir="${4}"
|
||||
local cond="${5}"
|
||||
shift 5
|
||||
local file entry _entry
|
||||
|
||||
# Generate the part-1
|
||||
@ -63,15 +63,12 @@ gen_choice() {
|
||||
printf ' bool\n'
|
||||
printf ' prompt "%s"\n' "${label}"
|
||||
printf '\n'
|
||||
for entry in "${@}"; do
|
||||
for entry in `get_components ${base_dir}`; do
|
||||
file="${base_dir}/${entry}.in"
|
||||
_entry=$(printf '%s\n' "${entry}" |"${sed}" -r -s -e 's/[-.+]/_/g;')
|
||||
printf 'config %s_%s\n' "${cfg_prefix}" "${_entry}"
|
||||
printf ' bool\n'
|
||||
printf ' prompt "%s"\n' "${entry}"
|
||||
if [ "${cond}" = "Y" -o "${cond}" = "y" ]; then
|
||||
printf ' depends on %s_%s_AVAILABLE\n' "${cfg_prefix}" "${_entry}"
|
||||
fi
|
||||
"${sed}" -r -e '/^## depends on /!d; s/^## / /;' ${file} 2>/dev/null
|
||||
"${sed}" -r -e '/^## select /!d; s/^## / /;' ${file} 2>/dev/null
|
||||
if "${grep}" -E '^## help' ${file} >/dev/null 2>&1; then
|
||||
@ -82,21 +79,19 @@ gen_choice() {
|
||||
done
|
||||
printf 'endchoice\n'
|
||||
|
||||
for entry in "${@}"; do
|
||||
printf '\n'
|
||||
printf 'config %s\n' "${cfg_prefix}"
|
||||
for entry in `get_components ${base_dir}`; do
|
||||
file="${base_dir}/${entry}.in"
|
||||
_entry=$(printf '%s\n' "${entry}" |"${sed}" -r -s -e 's/[-.+]/_/g;')
|
||||
printf '\n'
|
||||
if [ "${cond}" = "Y" -o "${cond}" = "y" ]; then
|
||||
printf 'config %s_%s_AVAILABLE\n' "${cfg_prefix}" "${_entry}"
|
||||
printf ' bool\n'
|
||||
printf ' default y if'
|
||||
printf ' BACKEND_%s = "%s"' "${cfg_prefix}" "${entry}"
|
||||
printf ' || BACKEND_%s = ""' "${cfg_prefix}"
|
||||
printf ' || ! BACKEND\n'
|
||||
fi
|
||||
printf 'if %s_%s\n' "${cfg_prefix}" "${_entry}"
|
||||
printf 'config %s\n' "${cfg_prefix}"
|
||||
printf ' default "%s" if %s_%s\n' "${entry}" "${cfg_prefix}" "${_entry}"
|
||||
done
|
||||
|
||||
printf '\n'
|
||||
for entry in `get_components ${base_dir}`; do
|
||||
file="${base_dir}/${entry}.in"
|
||||
_entry=$(printf '%s\n' "${entry}" |"${sed}" -r -s -e 's/[-.+]/_/g;')
|
||||
printf 'if %s_%s\n' "${cfg_prefix}" "${_entry}"
|
||||
printf 'source "%s"\n' "${file}"
|
||||
printf 'endif\n'
|
||||
done
|
||||
@ -105,7 +100,7 @@ gen_choice() {
|
||||
exec >"${out_file}.2"
|
||||
printf '# %s second part options\n' "${label}"
|
||||
printf '# Generated file, do not edit!!!\n'
|
||||
for entry in "${@}"; do
|
||||
for entry in `get_components ${base_dir}`; do
|
||||
file="${base_dir}/${entry}.in"
|
||||
_entry=$(printf '%s\n' "${entry}" |"${sed}" -r -s -e 's/[-.+]/_/g;')
|
||||
if [ -f "${file}.2" ]; then
|
||||
@ -125,7 +120,6 @@ gen_menu() {
|
||||
local label="${2}"
|
||||
local cfg_prefix="${3}"
|
||||
local base_dir="${4}"
|
||||
shift 4
|
||||
local file entry _entry
|
||||
|
||||
# Generate the menuconfig
|
||||
@ -133,7 +127,7 @@ gen_menu() {
|
||||
printf '# %s menu\n' "${label}"
|
||||
printf '# Generated file, do not edit!!!\n'
|
||||
printf '\n'
|
||||
for entry in "${@}"; do
|
||||
for entry in `get_components ${base_dir}`; do
|
||||
file="${base_dir}/${entry}.in"
|
||||
_entry=$(printf '%s\n' "${entry}" |"${sed}" -r -s -e 's/[-.+]/_/g;')
|
||||
printf 'menuconfig %s_%s\n' "${cfg_prefix}" "${_entry}"
|
||||
@ -156,6 +150,11 @@ gen_menu() {
|
||||
done
|
||||
}
|
||||
|
||||
type="${1}"
|
||||
shift
|
||||
"gen_${type}" "${@}"
|
||||
mkdir -p config/gen
|
||||
gen_choice config/gen/arch.in "Target Architecture" "ARCH" "config/arch"
|
||||
gen_choice config/gen/kernel.in "Target OS" "KERNEL" "config/kernel"
|
||||
gen_choice config/gen/cc.in "Compiler" "CC" "config/cc"
|
||||
gen_choice config/gen/binutils.in "Binutils" "BINUTILS" "config/binutils"
|
||||
gen_choice config/gen/libc.in "C library" "LIBC" "config/libc"
|
||||
gen_menu config/gen/debug.in "Debug facilities" "DEBUG" "config/debug"
|
||||
gen_menu config/gen/companion_tools.in "Companion tools" "COMP_TOOLS" "config/companion_tools"
|
@ -48,7 +48,7 @@ show-config: .config
|
||||
|
||||
# Prints the details of a sample
|
||||
PHONY += $(patsubst %,show-%,$(CT_SAMPLES))
|
||||
$(patsubst %,show-%,$(CT_SAMPLES)): show-%: config_files
|
||||
$(patsubst %,show-%,$(CT_SAMPLES)): show-%:
|
||||
@KCONFIG_CONFIG=$$(pwd)/.config.sample \
|
||||
$(CONF) --defconfig=$(call sample_dir,$*)/crosstool.config \
|
||||
$(KCONFIG_TOP) >/dev/null
|
||||
@ -72,7 +72,7 @@ list-samples-pre: FORCE
|
||||
@echo 'Status Sample name'
|
||||
|
||||
PHONY += $(patsubst %,list-%,$(CT_SAMPLES))
|
||||
$(patsubst %,list-%,$(CT_SAMPLES)): list-%: config_files
|
||||
$(patsubst %,list-%,$(CT_SAMPLES)): list-%:
|
||||
@KCONFIG_CONFIG=$$(pwd)/.config.sample \
|
||||
$(CONF) --defconfig=$(call sample_dir,$*)/crosstool.config \
|
||||
$(KCONFIG_TOP) >/dev/null
|
||||
@ -87,7 +87,7 @@ list-samples-short: FORCE
|
||||
|
||||
# Check one sample
|
||||
PHONY += $(patsubst %,check-%,$(CT_SAMPLES))
|
||||
$(patsubst %,check-%,$(CT_SAMPLES)): check-%: config_files
|
||||
$(patsubst %,check-%,$(CT_SAMPLES)): check-%:
|
||||
@export KCONFIG_CONFIG=$$(pwd)/.config.sample; \
|
||||
CT_NG_SAMPLE=$(call sample_dir,$*)/crosstool.config; \
|
||||
$(CONF) -s --defconfig=$${CT_NG_SAMPLE} $(KCONFIG_TOP) &>/dev/null; \
|
||||
@ -119,7 +119,7 @@ wiki-samples-pre: FORCE
|
||||
wiki-samples-post: FORCE
|
||||
$(SILENT)$(CT_LIB_DIR)/scripts/showSamples.sh -W $(CT_SAMPLES)
|
||||
|
||||
$(patsubst %,wiki-%,$(CT_SAMPLES)): wiki-%: config_files
|
||||
$(patsubst %,wiki-%,$(CT_SAMPLES)): wiki-%:
|
||||
$(SILENT)KCONFIG_CONFIG=$$(pwd)/.config.sample \
|
||||
$(CONF) --defconfig=$(call sample_dir,$*)/crosstool.config \
|
||||
$(KCONFIG_TOP) >/dev/null
|
||||
@ -146,8 +146,8 @@ endef
|
||||
|
||||
# How we do recall one sample
|
||||
PHONY += $(CT_SAMPLES)
|
||||
$(CT_SAMPLES): config_files
|
||||
@$(CT_ECHO) " CONF $(KCONFIG_TOP)"
|
||||
$(CT_SAMPLES):
|
||||
@$(CT_ECHO) " CONF $@"
|
||||
$(SILENT)$(CONF) --defconfig=$(call sample_dir,$@)/crosstool.config $(KCONFIG_TOP)
|
||||
@echo
|
||||
@echo '***********************************************************'
|
||||
@ -225,7 +225,7 @@ endif # MAKECMDGOALS contains a build sample rule
|
||||
endif # MAKECMDGOALS != ""
|
||||
|
||||
# Build a single sample
|
||||
$(patsubst %,build-%,$(CT_SAMPLES)): build-%: config_files
|
||||
$(patsubst %,build-%,$(CT_SAMPLES)): build-%:
|
||||
$(call build_sample,$*)
|
||||
|
||||
# Cross samples (build==host)
|
||||
|
@ -86,7 +86,7 @@ fi
|
||||
|
||||
# Now, actually save the defconfig
|
||||
export KCONFIG_CONFIG="$(pwd)/.defconfig"
|
||||
${CONF} --savedefconfig="${samp_dir}/crosstool.config" "${KCONFIG_TOP}"
|
||||
srctree="${CT_LIB_DIR}" ${CONF} --savedefconfig="${samp_dir}/crosstool.config" "${KCONFIG_TOP}"
|
||||
rm -f .defconfig
|
||||
|
||||
# Fill-in the reported-by info
|
||||
|
Loading…
Reference in New Issue
Block a user