yann@1225: # This file contains crosstool-NG internal steps yann@1225: yann@1225: # This step is called once all components were built, to remove yann@1225: # un-wanted files, to add tuple aliases, and to add the final yann@1225: # crosstool-NG-provided files. yann@1225: do_finish() { yann@1401: local _t yann@2213: local _type titus@2089: local strip_args yann@2301: local gcc_version yann@1401: yann@1225: CT_DoStep INFO "Cleaning-up the toolchain's directory" yann@1225: linux@2060: if [ "${CT_STRIP_ALL_TOOLCHAIN_EXECUTABLES}" = "y" ]; then titus@2089: case "$CT_HOST" in titus@2089: *darwin*) titus@2089: strip_args="" titus@2089: ;; titus@2089: *) titus@2089: strip_args="--strip-all -v" titus@2089: ;; titus@2089: esac linux@2060: CT_DoLog INFO "Stripping all toolchain executables" linux@2060: CT_Pushd "${CT_PREFIX_DIR}" zhenqiang@3044: zhenqiang@3044: # Strip gdbserver zhenqiang@3044: if [ "${CT_GDB_GDBSERVER}" = "y" ]; then zhenqiang@3044: CT_DoExecLog ALL bin/${CT_TARGET}-strip ${strip_args} \ zhenqiang@3044: ${CT_TARGET}/debug-root/usr/bin/gdbserver zhenqiang@3044: fi yann@2430: # We can not use the version in CT_CC_VERSION because yann@2430: # of the Linaro stuff. So, harvest the version string yann@2430: # directly from the gcc sources... yann@2430: # All gcc 4.x seem to have the version in gcc/BASE-VER yann@2430: # while version prior to 4.x have the version in gcc/version.c yann@2430: # Of course, here is not the better place to do that... yann@2430: if [ -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ]; then yann@2430: gcc_version=$( cat "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ) yann@2430: else yann@2430: gcc_version=$( sed -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \ yann@2430: "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/version.c" \ yann@2430: ) yann@2430: fi yann@2301: for _t in "bin/${CT_TARGET}-"* \ yann@2301: "${CT_TARGET}/bin/"* \ yann@2301: "libexec/gcc/${CT_TARGET}/${gcc_version}/"* \ yann@2301: "libexec/gcc/${CT_TARGET}/${gcc_version}/install-tools/"* \ yann@2213: ; do yann@2213: _type="$( file "${_t}" |cut -d ' ' -f 2- )" yann@2213: case "${_type}" in yann@2357: *script*executable*) yann@2213: ;; yann@2213: *executable*) yann@2213: CT_DoExecLog ALL ${CT_HOST}-strip ${strip_args} "${_t}" yann@2213: ;; yann@2213: esac linux@2060: done linux@2060: CT_Popd linux@2060: fi linux@2060: yann@1225: if [ "${CT_BARE_METAL}" != "y" ]; then yann@1225: CT_DoLog EXTRA "Installing the populate helper" yann@1225: sed -r -e 's|@@CT_TARGET@@|'"${CT_TARGET}"'|g;' \ yann@1225: -e 's|@@CT_install@@|'"${install}"'|g;' \ yann@1225: -e 's|@@CT_bash@@|'"${bash}"'|g;' \ yann@1225: -e 's|@@CT_grep@@|'"${grep}"'|g;' \ yann@1225: -e 's|@@CT_make@@|'"${make}"'|g;' \ yann@1225: -e 's|@@CT_sed@@|'"${sed}"'|g;' \ yann@1225: "${CT_LIB_DIR}/scripts/populate.in" \ yann@1225: >"${CT_PREFIX_DIR}/bin/${CT_TARGET}-populate" yann@1225: CT_DoExecLog ALL chmod 755 "${CT_PREFIX_DIR}/bin/${CT_TARGET}-populate" yann@1225: fi yann@1225: yann@2034: if [ "${CT_LIBC_XLDD}" = "y" ]; then yann@2034: CT_DoLog EXTRA "Installing a cross-ldd helper" yann@2184: sed -r -e 's|@@CT_VERSION@@|'"${CT_VERSION}"'|g;' \ yann@2185: -e 's|@@CT_TARGET@@|'"${CT_TARGET}"'|g;' \ yann@2187: -e 's|@@CT_BITS@@|'"${CT_ARCH_BITNESS}"'|g;' \ yann@2185: -e 's|@@CT_install@@|'"${install}"'|g;' \ yann@2185: -e 's|@@CT_bash@@|'"${bash}"'|g;' \ yann@2185: -e 's|@@CT_grep@@|'"${grep}"'|g;' \ yann@2185: -e 's|@@CT_make@@|'"${make}"'|g;' \ yann@2185: -e 's|@@CT_sed@@|'"${sed}"'|g;' \ yann@2185: "${CT_LIB_DIR}/scripts/xldd.in" \ yann@2034: >"${CT_PREFIX_DIR}/bin/${CT_TARGET}-ldd" yann@2034: CT_DoExecLog ALL chmod 755 "${CT_PREFIX_DIR}/bin/${CT_TARGET}-ldd" yann@2034: fi yann@2034: yann@1225: # Create the aliases to the target tools yann@1225: CT_DoLog EXTRA "Creating toolchain aliases" yann@1225: CT_Pushd "${CT_PREFIX_DIR}/bin" yann@1225: for t in "${CT_TARGET}-"*; do yann@1225: if [ -n "${CT_TARGET_ALIAS}" ]; then yann@1225: _t=$(echo "$t" |sed -r -e 's/^'"${CT_TARGET}"'-/'"${CT_TARGET_ALIAS}"'-/;') yann@2550: CT_DoExecLog ALL ln -sfv "${t}" "${_t}" yann@1225: fi yann@1225: if [ -n "${CT_TARGET_ALIAS_SED_EXPR}" ]; then yann@1225: _t=$(echo "$t" |sed -r -e "${CT_TARGET_ALIAS_SED_EXPR}") yann@2004: if [ "${_t}" = "${t}" ]; then yann@2004: CT_DoLog WARN "The sed expression '${CT_TARGET_ALIAS_SED_EXPR}' has no effect on '${t}'" yann@2004: else yann@2550: CT_DoExecLog ALL ln -sfv "${t}" "${_t}" yann@2004: fi yann@1225: fi yann@1225: done yann@1225: CT_Popd yann@1225: yann@1518: CT_DoLog EXTRA "Removing access to the build system tools" yann@1518: CT_DoExecLog DEBUG rm -rf "${CT_PREFIX_DIR}/buildtools" yann@1518: yann@1225: # Remove the generated documentation files yann@1225: if [ "${CT_REMOVE_DOCS}" = "y" ]; then yann@1225: CT_DoLog EXTRA "Removing installed documentation" yann@2236: CT_DoForceRmdir "${CT_PREFIX_DIR}/"{,usr/}{,share/}{man,info} yann@2236: CT_DoForceRmdir "${CT_SYSROOT_DIR}/"{,usr/}{,share/}{man,info} yann@2236: CT_DoForceRmdir "${CT_DEBUGROOT_DIR}/"{,usr/}{,share/}{man,info} yann@1225: fi yann@1225: yann@2117: # Remove the lib* symlinks, now: yann@2117: # The symlinks are needed only during the build process. yann@2117: # The final gcc will still search those dirs, but will also search yann@2117: # the standard lib/ dirs, so we can get rid of the symlinks yann@2544: CT_DoExecLog ALL rm -f "${CT_PREFIX_DIR}/lib32" yann@2544: CT_DoExecLog ALL rm -f "${CT_PREFIX_DIR}/lib64" yann@2117: yann@1225: CT_EndStep yann@1225: }