diff options
author | Bryan Hundven <bryanhundven@gmail.com> | 2015-11-13 01:47:08 -0800 |
---|---|---|
committer | Bryan Hundven <bryanhundven@gmail.com> | 2015-11-13 01:47:08 -0800 |
commit | e78251b75158689ace2194e8c87aa7b7bb5ec951 (patch) | |
tree | 6cabb898a31c4b9f5a6a1e02a2a04ead624873f6 /scripts | |
parent | c96d5df1866ca7d2898cf4877d8efbaed1751616 (diff) | |
parent | d1578acf3cd00754f560e0bbfc3fc5f957f940f1 (diff) | |
download | crosstool-ng-e78251b75158689ace2194e8c87aa7b7bb5ec951.tar.gz crosstool-ng-e78251b75158689ace2194e8c87aa7b7bb5ec951.tar.bz2 crosstool-ng-e78251b75158689ace2194e8c87aa7b7bb5ec951.zip |
Merge pull request #253 from jcmvbkbc/xtensa-for-mainline-20151113
Add support for Xtensa architecture
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/build/arch/xtensa.sh | 78 | ||||
-rw-r--r-- | scripts/build/binutils/binutils.sh | 4 | ||||
-rw-r--r-- | scripts/build/cc/100-gcc.sh | 4 | ||||
-rw-r--r-- | scripts/build/debug/300-gdb.sh | 4 | ||||
-rw-r--r-- | scripts/build/libc/newlib.sh | 9 |
5 files changed, 99 insertions, 0 deletions
diff --git a/scripts/build/arch/xtensa.sh b/scripts/build/arch/xtensa.sh new file mode 100644 index 00000000..7e493127 --- /dev/null +++ b/scripts/build/arch/xtensa.sh @@ -0,0 +1,78 @@ +# Compute Xtensa-specific values + +CT_DoArchTupleValues() { + # The architecture part of the tuple: + CT_TARGET_ARCH="${CT_ARCH}${CT_ARCH_SUFFIX}" + # The system part of the tuple: + case "${CT_LIBC}" in + *glibc) CT_TARGET_SYS=gnu;; + uClibc) CT_TARGET_SYS=uclibc;; + esac +} + +# 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_overlay="xtensa_${CT_ARCH_XTENSA_CUSTOM_NAME}.tar" + local custom_location="${CT_ARCH_XTENSA_CUSTOM_OVERLAY_LOCATION}" + + if [ -z "${CT_ARCH_XTENSA_CUSTOM_NAME}" ]; then + custom_overlay="xtensa-overlay.tar" + fi + + if [ -n "${CT_CUSTOM_LOCATION_ROOT_DIR}" \ + -a -z "${custom_location}" ]; then + custom_location="${CT_CUSTOM_LOCATION_ROOT_DIR}" + fi + + CT_TestAndAbort "${custom_overlay}: 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}" + + local full_file="${custom_location}/${custom_overlay}" + local basename="${component}-${version}" + local ext + + ext=${full_file/*./.} + + if [ -z "${ext}" ] ; then + CT_DoLog WARN "'${full_file}' not found" + return 1 + 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 EXTRA "Using '${custom_overlay}' from ${custom_location}" + CT_DoExecLog DEBUG ln -sf "${custom_location}/${custom_overlay}" \ + "${CT_TARBALLS_DIR}/${custom_overlay}" + + CT_DoExecLog DEBUG touch "${CT_SRC_DIR}/.${basename}.configuring" + + CT_Pushd "${CT_SRC_DIR}/${basename}" + + tar_opts=( "--strip-components=1" ) + tar_opts+=( "-xv" ) + + case "${ext}" in + .tar) CT_DoExecLog FILE tar "${tar_opts[@]}" -f "${full_file}" "${component}";; + .gz|.tgz) gzip -dc "${full_file}" | CT_DoExecLog FILE tar "${tar_opts[@]}" -f - "${component}";; + .bz2) bzip2 -dc "${full_file}" | CT_DoExecLog FILE tar "${tar_opts[@]}" -f - "${component}";; + *) CT_DoLog WARN "Don't know how to handle '${basename}${ext}': unknown extension" + return 1 + ;; + esac + + CT_DoExecLog DEBUG touch "${CT_SRC_DIR}/.${basename}.configured" + CT_DoExecLog DEBUG rm -f "${CT_SRC_DIR}/.${basename}.configuring" + + CT_Popd +} diff --git a/scripts/build/binutils/binutils.sh b/scripts/build/binutils/binutils.sh index a23b94a0..dcaf37da 100644 --- a/scripts/build/binutils/binutils.sh +++ b/scripts/build/binutils/binutils.sh @@ -46,6 +46,10 @@ do_binutils_extract() { CT_Patch "elf2flt" "${CT_ELF2FLT_GIT_CSET}" fi fi + + if [ -n "${CT_ARCH_XTENSA_CUSTOM_NAME}" ]; then + CT_ConfigureXtensa "binutils" "${CT_BINUTILS_VERSION}" + fi } # Build binutils for build -> target diff --git a/scripts/build/cc/100-gcc.sh b/scripts/build/cc/100-gcc.sh index 6515f96c..2e824d98 100644 --- a/scripts/build/cc/100-gcc.sh +++ b/scripts/build/cc/100-gcc.sh @@ -63,6 +63,10 @@ do_gcc_extract() { ]; then CT_DoExecLog ALL cp -v "${CT_TARBALLS_DIR}/ecj-latest.jar" "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/ecj.jar" fi + + if [ -n "${CT_ARCH_XTENSA_CUSTOM_NAME}" ]; then + CT_ConfigureXtensa "gcc" "${CT_CC_GCC_VERSION}" + fi } #------------------------------------------------------------------------------ diff --git a/scripts/build/debug/300-gdb.sh b/scripts/build/debug/300-gdb.sh index 93086b97..984aea31 100644 --- a/scripts/build/debug/300-gdb.sh +++ b/scripts/build/debug/300-gdb.sh @@ -100,6 +100,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_NAME}" ]; then + CT_ConfigureXtensa "gdb" "${CT_GDB_VERSION}" + fi } do_debug_gdb_build() { diff --git a/scripts/build/libc/newlib.sh b/scripts/build/libc/newlib.sh index ba3d9699..4c395d0d 100644 --- a/scripts/build/libc/newlib.sh +++ b/scripts/build/libc/newlib.sh @@ -38,6 +38,10 @@ do_libc_extract() { CT_Extract "newlib-${CT_LIBC_VERSION}" CT_Patch "newlib" "${CT_LIBC_VERSION}" + + if [ -n "${CT_ARCH_XTENSA_CUSTOM_NAME}" ]; then + CT_ConfigureXtensa "newlib" "${CT_LIBC_VERSION}" + fi } do_libc_check_config() { @@ -48,6 +52,11 @@ do_libc_start_files() { CT_DoStep INFO "Installing C library headers & start files" CT_DoExecLog ALL cp -a "${CT_SRC_DIR}/newlib-${CT_LIBC_VERSION}/newlib/libc/include/." \ "${CT_HEADERS_DIR}" + if [ "${CT_ARCH_xtensa}" = "y" ]; then + CT_DoLog EXTRA "Installing Xtensa headers" + CT_DoExecLog ALL cp -r "${CT_SRC_DIR}/newlib-${CT_LIBC_VERSION}/newlib/libc/sys/xtensa/include/." \ + "${CT_HEADERS_DIR}" + fi CT_EndStep } |