mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2025-01-31 00:23:56 +00:00
33a6cdd7ec
Now that we are using defconfig files, the samples do not contain the full configuration, so we can not simply parse them to show their content. Instead, we must fake recalling a sample, and parse the generated .config file. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
194 lines
7.9 KiB
Bash
Executable File
194 lines
7.9 KiB
Bash
Executable File
#!/bin/sh
|
|
# Yes, this is supposed to be a POSIX-compliant shell script.
|
|
|
|
# Parses all samples on the command line, and for each of them, prints
|
|
# the versions of the main tools
|
|
|
|
# Use tools discovered by ./configure
|
|
. "${CT_LIB_DIR}/paths.sh"
|
|
|
|
[ "$1" = "-v" ] && opt="$1" && shift
|
|
[ "$1" = "-w" ] && opt="$1" && shift
|
|
|
|
# GREP_OPTIONS screws things up.
|
|
export GREP_OPTIONS=
|
|
|
|
# Dump a single sample
|
|
# Note: we use the specific .config.sample config file
|
|
dump_single_sample() {
|
|
local verbose=0
|
|
local complibs
|
|
[ "$1" = "-v" ] && verbose=1 && shift
|
|
[ "$1" = "-w" ] && wiki=1 && shift
|
|
local width="$1"
|
|
local sample="$2"
|
|
case "${sample}" in
|
|
current)
|
|
sample_type="l"
|
|
sample="$( ${CT_NG} show-tuple )"
|
|
width="${#sample}"
|
|
;;
|
|
*) if [ -f "${CT_TOP_DIR}/samples/${sample}/crosstool.config" ]; then
|
|
sample_top="${CT_TOP_DIR}"
|
|
sample_type="L"
|
|
else
|
|
sample_top="${CT_LIB_DIR}"
|
|
sample_type="G"
|
|
fi
|
|
;;
|
|
esac
|
|
. $(pwd)/.config.sample
|
|
if [ -z "${wiki}" ]; then
|
|
t_width=14
|
|
printf "%-*s [%s" ${width} "${sample}" "${sample_type}"
|
|
[ -f "${sample_top}/samples/${sample}/broken" ] && printf "B" || printf " "
|
|
[ "${CT_EXPERIMENTAL}" = "y" ] && printf "X" || printf " "
|
|
echo "]"
|
|
if [ ${verbose} -ne 0 ]; then
|
|
case "${CT_TOOLCHAIN_TYPE}" in
|
|
cross) ;;
|
|
canadian)
|
|
printf " %-*s : %s\n" ${t_width} "Host" "${CT_HOST}"
|
|
;;
|
|
esac
|
|
printf " %-*s : %s\n" ${t_width} "OS" "${CT_KERNEL}${CT_KERNEL_VERSION:+-}${CT_KERNEL_VERSION}"
|
|
if [ -n "${CT_GMP}" \
|
|
-o -n "${CT_MPFR}" \
|
|
-o -n "${CT_PPL}" \
|
|
-o -n "${CT_CLOOG}" \
|
|
-o -n "${CT_MPC}" \
|
|
-o -n "${CT_LIBELF}" \
|
|
-o -n "${CT_GMP_TARGET}" \
|
|
-o -n "${CT_MPFR_TARGET}" \
|
|
-o -n "${CT_PPL_TARGET}" \
|
|
-o -n "${CT_CLOOG_TARGET}" \
|
|
-o -n "${CT_MPC_TARGET}" \
|
|
-o -n "${CT_LIBELF_TARGET}" \
|
|
]; then
|
|
printf " %-*s :" ${t_width} "Companion libs"
|
|
complibs=1
|
|
fi
|
|
[ -z "${CT_GMP}" -a -z "${CT_GMP_TARGET}" ] || printf " gmp-%s" "${CT_GMP_VERSION}"
|
|
[ -z "${CT_MPFR}" -a -z "${CT_MPFR_TARGET}" ] || printf " mpfr-%s" "${CT_MPFR_VERSION}"
|
|
[ -z "${CT_PPL}" -a -z "${CT_PPL_TARGET}" ] || printf " ppl-%s" "${CT_PPL_VERSION}"
|
|
[ -z "${CT_CLOOG}" -a -z "${CT_CLOOG_TARGET}" ] || printf " cloog-ppl-%s" "${CT_CLOOG_VERSION}"
|
|
[ -z "${CT_MPC}" -a -z "${CT_MPC_TARGET}" ] || printf " mpc-%s" "${CT_MPC_VERSION}"
|
|
[ -z "${CT_LIBELF}" -a -z "${CT_LIBELF_TARGET}" ] || printf " libelf-%s" "${CT_LIBELF_VERSION}"
|
|
[ -z "${complibs}" ] || printf "\n"
|
|
printf " %-*s : %s\n" ${t_width} "binutils" "binutils-${CT_BINUTILS_VERSION}"
|
|
printf " %-*s : %s" ${t_width} "C compiler" "${CT_CC}-${CT_CC_VERSION} (C"
|
|
[ "${CT_CC_LANG_CXX}" = "y" ] && printf ",C++"
|
|
[ "${CT_CC_LANG_FORTRAN}" = "y" ] && printf ",Fortran"
|
|
[ "${CT_CC_LANG_JAVA}" = "y" ] && printf ",Java"
|
|
[ "${CT_CC_LANG_ADA}" = "y" ] && printf ",ADA"
|
|
[ "${CT_CC_LANG_OBJC}" = "y" ] && printf ",Objective-C"
|
|
[ "${CT_CC_LANG_OBJCXX}" = "y" ] && printf ",Objective-C++"
|
|
[ -n "${CT_CC_LANG_OTHERS}" ] && printf ",${CT_CC_LANG_OTHERS}"
|
|
printf ")\n"
|
|
printf " %-*s : %s\n" ${t_width} "C library" "${CT_LIBC}${CT_LIBC_VERSION:+-}${CT_LIBC_VERSION}"
|
|
printf " %-*s :" ${t_width} "Tools"
|
|
[ "${CT_TOOL_sstrip}" ] && printf " sstrip"
|
|
[ "${CT_DEBUG_dmalloc}" ] && printf " dmalloc-${CT_DMALLOC_VERSION}"
|
|
[ "${CT_DEBUG_duma}" ] && printf " duma-${CT_DUMA_VERSION}"
|
|
[ "${CT_DEBUG_gdb}" ] && printf " gdb-${CT_GDB_VERSION}"
|
|
[ "${CT_DEBUG_ltrace}" ] && printf " ltrace-${CT_LTRACE_VERSION}"
|
|
[ "${CT_DEBUG_strace}" ] && printf " strace-${CT_STRACE_VERSION}"
|
|
printf "\n"
|
|
fi
|
|
else
|
|
case "${CT_TOOLCHAIN_TYPE}" in
|
|
cross)
|
|
printf "| ''${sample}'' | "
|
|
;;
|
|
canadian)
|
|
printf "| ''"
|
|
printf "${sample}" |sed -r -e 's/.*,//'
|
|
printf "'' | ${CT_HOST} "
|
|
;;
|
|
*) ;;
|
|
esac
|
|
printf "| "
|
|
[ "${CT_EXPERIMENTAL}" = "y" ] && printf "**X**"
|
|
[ -f "${sample_top}/samples/${sample}/broken" ] && printf "**B**"
|
|
printf " | ''${CT_KERNEL}'' |"
|
|
if [ "${CT_KERNEL}" != "bare-metal" ];then
|
|
if [ "${CT_KERNEL_LINUX_HEADERS_USE_CUSTOM_DIR}" = "y" ]; then
|
|
printf " //custom// "
|
|
else
|
|
printf " ${CT_KERNEL_VERSION} "
|
|
fi
|
|
fi
|
|
printf "| ${CT_BINUTILS_VERSION} "
|
|
printf "| ''${CT_CC}'' "
|
|
printf "| ${CT_CC_VERSION} "
|
|
printf "| ''${CT_LIBC}'' |"
|
|
if [ "${CT_LIBC}" != "none" ]; then
|
|
printf " ${CT_LIBC_VERSION} "
|
|
fi
|
|
printf "| ${CT_THREADS:-none} "
|
|
printf "| ${CT_ARCH_FLOAT} "
|
|
printf "| C"
|
|
[ "${CT_CC_LANG_CXX}" = "y" ] && printf ", C++"
|
|
[ "${CT_CC_LANG_FORTRAN}" = "y" ] && printf ", Fortran"
|
|
[ "${CT_CC_LANG_JAVA}" = "y" ] && printf ", Java"
|
|
[ "${CT_CC_LANG_ADA}" = "y" ] && printf ", ADA"
|
|
[ "${CT_CC_LANG_OBJC}" = "y" ] && printf ", Objective-C"
|
|
[ "${CT_CC_LANG_OBJCXX}" = "y" ] && printf ", Objective-C++"
|
|
[ -n "${CT_CC_LANG_OTHERS}" ] && printf "\\\\\\\\ Others: ${CT_CC_LANG_OTHERS}"
|
|
printf " "
|
|
( . "${sample_top}/samples/${sample}/reported.by"
|
|
if [ -n "${reporter_name}" ]; then
|
|
if [ -n "${reporter_url}" ]; then
|
|
printf "| [[${reporter_url}|${reporter_name}]] "
|
|
else
|
|
printf "| ${reporter_name} "
|
|
fi
|
|
else
|
|
printf "| (//unknown//) "
|
|
fi
|
|
)
|
|
sample_updated="$( hg log -l 1 --template '{date|shortdate}' "${sample_top}/samples/${sample}" )"
|
|
printf "| ${sample_updated} "
|
|
echo "|"
|
|
fi
|
|
}
|
|
|
|
# Get largest sample width
|
|
width=0
|
|
for sample in "${@}"; do
|
|
[ ${#sample} -gt ${width} ] && width=${#sample}
|
|
done
|
|
|
|
if [ "${opt}" = -w ]; then
|
|
printf "^ %s |||||||||||||||\n" "$( date "+%Y%m%d.%H%M %z" )"
|
|
printf "^ Target "
|
|
printf "^ Host "
|
|
printf "^ Status "
|
|
printf "^ Kernel headers\\\\\\\\ version ^"
|
|
printf "^ binutils\\\\\\\\ version "
|
|
printf "^ C compiler\\\\\\\\ version ^"
|
|
printf "^ C library\\\\\\\\ version ^"
|
|
printf "^ Threading\\\\\\\\ model "
|
|
printf "^ Floating point\\\\\\\\ support "
|
|
printf "^ Languages "
|
|
printf "^ Initially\\\\\\\\ reported by "
|
|
printf "^ Last\\\\\\\\ updated "
|
|
echo "^"
|
|
elif [ -z "${opt}" ]; then
|
|
printf "%-*s Status\n" ${width} "Sample name"
|
|
fi
|
|
|
|
for sample in "${@}"; do
|
|
( dump_single_sample ${opt} ${width} "${sample}" )
|
|
done
|
|
|
|
if [ "${opt}" = -w ]; then
|
|
printf "^ Total: ${#@} samples || **X**: sample uses features marked as being EXPERIMENTAL.\\\\\\\\ **B**: sample is currently BROKEN. |||||||||||||"
|
|
echo ""
|
|
elif [ -z "${opt}" ]; then
|
|
echo ' L (Local) : sample was found in current directory'
|
|
echo ' G (Global) : sample was installed with crosstool-NG'
|
|
echo ' X (EXPERIMENTAL): sample may use EXPERIMENTAL features'
|
|
echo ' B (BROKEN) : sample is currently broken'
|
|
fi
|