new file mode 100644
@@ -0,0 +1,20 @@
+# xtensa specific configuration file
+
+## select ARCH_SUPPORTS_32
+## select ARCH_SUPPORTS_BOTH_MMU
+## select ARCH_DEFAULT_HAS_MMU
+##
+## help The xtensa architecture
+## help
+## help Xtensa is a configurable and extensible processor architecture.
+## help Supporting a specific configuration typically requires minor
+## help modifications to a small set of configuration files in various
+## help development tools. This process is automated and only requires
+## help a configuration specific 'overlay' file.
+## help
+## help For a custom configuration, select the XTENSA_CUSTOM option and
+## help provide the name of the overlay file through the
+## help CT_ARCH_XTENSA_CUSTOM_OVERLAY_FILE option.
+## help
+## help The default option (ARCH_xtensa_fsf) uses a built-in configuration,
+## help which may or may not work for a particular Xtensa processor.
new file mode 100644
@@ -0,0 +1,30 @@
+choice
+ prompt "Target Architecture Variant"
+ default ARCH_xtensa_fsf
+config XTENSA_CUSTOM
+ bool "Custom Xtensa processor configuration"
+
+config ARCH_xtensa_fsf
+ bool "fsf - Default configuration"
+
+endchoice
+
+config ARCH_XTENSA_CUSTOM_OVERLAY_FILE
+ string "Custom Xtensa process configuration file name"
+ depends on XTENSA_CUSTOM
+ default ""
+ help
+ Enter the name of the custom processor configuration
+ overlay file or leave blank to use the default 'xtensa-overlay.tar'.
+ For more information about this option, please also consult
+ the 'help' section of the 'Target Architecture Variant'
+ option above.
+
+config ARCH_XTENSA_CUSTOM_OVERLAY_LOCATION
+ string "Full path to custom Xtensa processor configurations"
+ depends on XTENSA_CUSTOM
+ default ""
+ help
+ Enter the path to the directory for the custom processor
+ configuration file or leave blank to use the default location:
+ CT_CUSTOM_LOCATION_ROOT_DIR
new file mode 100644
@@ -0,0 +1,51 @@
+CT_DoArchTupleValues() {
+ :
+}
+
+# This function updates the specified component (binutils, gcc, gdb, etc.)
+# with the processor specific configuration.
+CT_ConfigureXtensa() {
+ local component="${1}"
+ local version="${2}"
+ local custom_config="${CT_ARCH_XTENSA_CUSTOM_OVERLAY_FILE}"
+ local custom_location="${CT_ARCH_XTENSA_CUSTOM_OVERLAY_LOCATION}"
+
+ local full_file="${CT_TARBALLS_DIR}/${custom_config}"
+ local basename="${component}-${version}"
+
+ CT_TestAndAbort "${custom_config}: CT_CUSTOM_LOCATION_ROOT_DIR or CT_ARCH_XTENSA_CUSTOM_OVERLAY_LOCATION must be set." \
+ -z "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${custom_location}"
+
+ if [ -n "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${custom_location}" ]; then
+ custom_location="${CT_CUSTOM_LOCATION_ROOT_DIR}"
+ fi
+
+ if [ -e "${CT_SRC_DIR}/.${basename}.configuring" ]; then
+ CT_DoLog ERROR "The '${basename}' source were partially configured."
+ CT_DoLog ERROR "Please remove first:"
+ CT_DoLog ERROR " - the source dir for '${basename}', in '${CT_SRC_DIR}'"
+ CT_DoLog ERROR " - the file '${CT_SRC_DIR}/.${basename}.extracted'"
+ CT_DoLog ERROR " - the file '${CT_SRC_DIR}/.${basename}.patch'"
+ CT_DoLog ERROR " - the file '${CT_SRC_DIR}/.${basename}.configuring'"
+ CT_Abort
+ fi
+
+ CT_DoLog DEBUG "Using '${custom_config}' from ${custom_location}"
+ CT_DoExecLog INFO ln -sf "${custom_location}/${custom_config}" \
+ "${CT_TARBALLS_DIR}/${custom_config}"
+
+ CT_DoExecLog DEBUG touch "${CT_SRC_DIR}/.${basename}.configuring"
+
+ CT_Pushd "${CT_SRC_DIR}/${basename}"
+
+ tar_opts=( "--strip-components=1" )
+ tar_opts+=( "-xv" )
+
+ CT_DoLog DEBUG "Extracting ${full_file} for ${component}"
+ CT_DoExecLog FILE tar "${tar_opts[@]}" -f "${full_file}" "${component}"
+
+ CT_DoExecLog DEBUG touch "${CT_SRC_DIR}/.${basename}.configured"
+ CT_DoExecLog DEBUG rm -f "${CT_SRC_DIR}/.${basename}.configuring"
+
+ CT_Popd
+}
@@ -39,6 +39,10 @@ do_binutils_extract() {
CT_Patch "elf2flt" "${CT_ELF2FLT_GIT_CSET}"
fi
fi
+
+ if [ -n "${CT_ARCH_XTENSA_CUSTOM_OVERLAY_FILE}" ]; then
+ CT_ConfigureXtensa "binutils" "${CT_BINUTILS_VERSION}"
+ fi
}
# Build binutils for build -> target
@@ -60,6 +60,10 @@ do_cc_extract() {
]; then
CT_DoExecLog ALL cp -v "${CT_TARBALLS_DIR}/ecj-latest.jar" "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/ecj.jar"
fi
+
+ if [ -n "${CT_ARCH_XTENSA_CUSTOM_OVERLAY_FILE}" ]; then
+ CT_ConfigureXtensa "gcc" "${CT_CC_VERSION}"
+ fi
}
#------------------------------------------------------------------------------
@@ -97,6 +97,10 @@ do_debug_gdb_extract() {
CT_Extract "expat-${CT_DEBUG_GDB_EXPAT_VERSION}"
CT_Patch "expat" "${CT_DEBUG_GDB_EXPAT_VERSION}"
fi
+
+ if [ -n "${CT_ARCH_XTENSA_CUSTOM_OVERLAY_FILE}" ]; then
+ CT_ConfigureXtensa "gdb" "${CT_GDB_VERSION}"
+ fi
}
do_debug_gdb_build() {