scripts/showSamples.sh
author Cody Schafer <dev@codyps.com>
Fri May 09 19:13:49 2014 -0700 (2014-05-09)
changeset 3312 4876ff97e039
parent 3022 8c8041e70203
permissions -rwxr-xr-x
cc/gcc: allow CC_EXTRA_CONFIG_ARRAY on baremetal

The final bare-metal compiler is built using the core backend.
Currently the core uses the CC_CORE_EXTRA_CONFIG_ARRAY variable.

While this works as supposed to, this can leave the user puzzled
in the menuconfig, since all he can see is the core options, not
the final options.

Only show the core options if any of the core passes are needed,
and use the final options in the core-backend if we're issuing
the bare-metal compiler.

Signed-off-by: Cody P Schafer <dev@codyps.com>
[yann.morin.1998@free.fr: hide core options if no core pass needed;
use final option in core backend if issuing the bare-metal compiler]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Message-Id: <22181e546ba746202489.1399688067@localhost>
Patchwork-Id: 347586
     1 #!/bin/sh
     2 # Yes, this is supposed to be a POSIX-compliant shell script.
     3 
     4 # Parses all samples on the command line, and for each of them, prints
     5 # the versions of the main tools
     6 
     7 # Use tools discovered by ./configure
     8 . "${CT_LIB_DIR}/paths.sh"
     9 
    10 [ "$1" = "-v" ] && opt="$1" && shift
    11 [ "$1" = "-w" ] && opt="$1" && shift
    12 [ "$1" = "-W" ] && opt="$1" && shift
    13 
    14 # GREP_OPTIONS screws things up.
    15 export GREP_OPTIONS=
    16 
    17 # Dump a single sample
    18 # Note: we use the specific .config.sample config file
    19 dump_single_sample() {
    20     local verbose=0
    21     local wiki=0
    22     local complibs
    23     [ "$1" = "-v" ] && verbose=1 && shift
    24     [ "$1" = "-w" ] && wiki=1 && shift
    25     local sample="$1"
    26     case "${sample}" in
    27         current)
    28             sample_type="l"
    29             sample="$( ${CT_NG} show-tuple )"
    30             ;;
    31         *)  if [ -f "${CT_TOP_DIR}/samples/${sample}/crosstool.config" ]; then
    32                 sample_top="${CT_TOP_DIR}"
    33                 sample_type="L"
    34             else
    35                 sample_top="${CT_LIB_DIR}"
    36                 sample_type="G"
    37             fi
    38             ;;
    39     esac
    40     . $(pwd)/.config.sample
    41     if [ ${wiki} -eq 0 ]; then
    42         width=14
    43         printf "[%s" "${sample_type}"
    44         [ -f "${sample_top}/samples/${sample}/broken" ] && printf "B" || printf "."
    45         [ "${CT_EXPERIMENTAL}" = "y" ] && printf "X" || printf "."
    46         printf "]   %s\n" "${sample}"
    47         if [ ${verbose} -ne 0 ]; then
    48             case "${CT_TOOLCHAIN_TYPE}" in
    49                 cross)  ;;
    50                 canadian)
    51                     printf "    %-*s : %s\n" ${width} "Host" "${CT_HOST}"
    52                     ;;
    53             esac
    54             printf "    %-*s : %s\n" ${width} "OS" "${CT_KERNEL}${CT_KERNEL_VERSION:+-}${CT_KERNEL_VERSION}"
    55             if [    -n "${CT_GMP}"              \
    56                  -o -n "${CT_MPFR}"             \
    57                  -o -n "${CT_PPL}"              \
    58                  -o -n "${CT_CLOOG}"            \
    59                  -o -n "${CT_MPC}"              \
    60                  -o -n "${CT_LIBELF}"           \
    61                  -o -n "${CT_GMP_TARGET}"       \
    62                  -o -n "${CT_MPFR_TARGET}"      \
    63                  -o -n "${CT_PPL_TARGET}"       \
    64                  -o -n "${CT_CLOOG_TARGET}"     \
    65                  -o -n "${CT_MPC_TARGET}"       \
    66                  -o -n "${CT_LIBELF_TARGET}"    \
    67                ]; then
    68                 printf "    %-*s :" ${width} "Companion libs"
    69                 complibs=1
    70             fi
    71             [ -z "${CT_GMP}"    -a -z "${CT_GMP_TARGET}"    ] || printf " gmp-%s"       "${CT_GMP_VERSION}"
    72             [ -z "${CT_MPFR}"   -a -z "${CT_MPFR_TARGET}"   ] || printf " mpfr-%s"      "${CT_MPFR_VERSION}"
    73             [ -z "${CT_PPL}"    -a -z "${CT_PPL_TARGET}"    ] || printf " ppl-%s"       "${CT_PPL_VERSION}"
    74             [ -z "${CT_CLOOG}"  -a -z "${CT_CLOOG_TARGET}"  ] || printf " cloog-ppl-%s" "${CT_CLOOG_VERSION}"
    75             [ -z "${CT_MPC}"    -a -z "${CT_MPC_TARGET}"    ] || printf " mpc-%s"       "${CT_MPC_VERSION}"
    76             [ -z "${CT_LIBELF}" -a -z "${CT_LIBELF_TARGET}" ] || printf " libelf-%s"    "${CT_LIBELF_VERSION}"
    77             [ -z "${complibs}"  ] || printf "\n"
    78             printf  "    %-*s : %s\n" ${width} "binutils" "binutils-${CT_BINUTILS_VERSION}"
    79             printf  "    %-*s : %s" ${width} "C compiler" "${CT_CC}-${CT_CC_VERSION} (C"
    80             [ "${CT_CC_LANG_CXX}" = "y"     ] && printf ",C++"
    81             [ "${CT_CC_LANG_FORTRAN}" = "y" ] && printf ",Fortran"
    82             [ "${CT_CC_LANG_JAVA}" = "y"    ] && printf ",Java"
    83             [ "${CT_CC_LANG_ADA}" = "y"     ] && printf ",ADA"
    84             [ "${CT_CC_LANG_OBJC}" = "y"    ] && printf ",Objective-C"
    85             [ "${CT_CC_LANG_OBJCXX}" = "y"  ] && printf ",Objective-C++"
    86             [ "${CT_CC_LANG_GOLANG}" = "y"  ] && printf ",Go"
    87             [ -n "${CT_CC_LANG_OTHERS}"     ] && printf ",${CT_CC_LANG_OTHERS}"
    88             printf ")\n"
    89             printf  "    %-*s : %s (threads: %s)\n" ${width} "C library" "${CT_LIBC}${CT_LIBC_VERSION:+-}${CT_LIBC_VERSION}" "${CT_THREADS}"
    90             printf  "    %-*s :" ${width} "Tools"
    91             [ "${CT_TOOL_sstrip}"   ] && printf " sstrip"
    92             [ "${CT_DEBUG_dmalloc}" ] && printf " dmalloc-${CT_DMALLOC_VERSION}"
    93             [ "${CT_DEBUG_duma}"    ] && printf " duma-${CT_DUMA_VERSION}"
    94             [ "${CT_DEBUG_gdb}"     ] && printf " gdb-${CT_GDB_VERSION}"
    95             [ "${CT_DEBUG_ltrace}"  ] && printf " ltrace-${CT_LTRACE_VERSION}"
    96             [ "${CT_DEBUG_strace}"  ] && printf " strace-${CT_STRACE_VERSION}"
    97             printf "\n"
    98         fi
    99     else
   100         case "${CT_TOOLCHAIN_TYPE}" in
   101             cross)
   102                 printf "| ''${sample}''  | "
   103                 ;;
   104             canadian)
   105                 printf "| ''"
   106                 printf "${sample}" |sed -r -e 's/.*,//'
   107                 printf "''  | ${CT_HOST}  "
   108                 ;;
   109             *)          ;;
   110         esac
   111         printf "|  "
   112         [ "${CT_EXPERIMENTAL}" = "y" ] && printf "**X**"
   113         [ -f "${sample_top}/samples/${sample}/broken" ] && printf "**B**"
   114         printf "  |  ''${CT_KERNEL}''  |"
   115         if [ "${CT_KERNEL}" != "bare-metal" ];then
   116             if [ "${CT_KERNEL_LINUX_HEADERS_USE_CUSTOM_DIR}" = "y" ]; then
   117                 printf "  //custom//  "
   118             else
   119                 printf "  ${CT_KERNEL_VERSION}  "
   120             fi
   121         fi
   122         printf "|  ${CT_BINUTILS_VERSION}  "
   123         printf "|  ''${CT_CC}''  "
   124         printf "|  ${CT_CC_VERSION}  "
   125         printf "|  ''${CT_LIBC}''  |"
   126         if [ "${CT_LIBC}" != "none" ]; then
   127             printf "  ${CT_LIBC_VERSION}  "
   128         fi
   129         printf "|  ${CT_THREADS:-none}  "
   130         printf "|  ${CT_ARCH_FLOAT}  "
   131         printf "|  C"
   132         [ "${CT_CC_LANG_CXX}" = "y"     ] && printf ", C++"
   133         [ "${CT_CC_LANG_FORTRAN}" = "y" ] && printf ", Fortran"
   134         [ "${CT_CC_LANG_JAVA}" = "y"    ] && printf ", Java"
   135         [ "${CT_CC_LANG_ADA}" = "y"     ] && printf ", ADA"
   136         [ "${CT_CC_LANG_OBJC}" = "y"    ] && printf ", Objective-C"
   137         [ "${CT_CC_LANG_OBJCXX}" = "y"  ] && printf ", Objective-C++"
   138         [ -n "${CT_CC_LANG_OTHERS}"     ] && printf "\\\\\\\\ Others: ${CT_CC_LANG_OTHERS}"
   139         printf "  "
   140         ( . "${sample_top}/samples/${sample}/reported.by"
   141           if [ -n "${reporter_name}" ]; then
   142               if [ -n "${reporter_url}" ]; then
   143                   printf "|  [[${reporter_url}|${reporter_name}]]  "
   144               else
   145                   printf "|  ${reporter_name}  "
   146               fi
   147           else
   148               printf "|  (//unknown//)  "
   149           fi
   150         )
   151         sample_updated="$( hg log -l 1 --template '{date|shortdate}' "${sample_top}/samples/${sample}" )"
   152         printf "|  ${sample_updated}  "
   153         echo "|"
   154     fi
   155 }
   156 
   157 if [ "${opt}" = "-w" -a ${#} -eq 0 ]; then
   158     printf "^ %s  |||||||||||||||\n" "$( date "+%Y%m%d.%H%M %z" )"
   159     printf "^ Target  "
   160     printf "^ Host  "
   161     printf "^  Status  "
   162     printf "^  Kernel headers\\\\\\\\ version  ^"
   163     printf "^  binutils\\\\\\\\ version  "
   164     printf "^  C compiler\\\\\\\\ version  ^"
   165     printf "^  C library\\\\\\\\ version  ^"
   166     printf "^  Threading\\\\\\\\ model  "
   167     printf "^  Floating point\\\\\\\\ support  "
   168     printf "^  Languages  "
   169     printf "^  Initially\\\\\\\\ reported by  "
   170     printf "^  Last\\\\\\\\ updated  "
   171     echo   "^"
   172     exit 0
   173 elif [ "${opt}" = "-W" ]; then
   174     printf "^ Total: ${#} samples  || **X**: sample uses features marked as being EXPERIMENTAL.\\\\\\\\ **B**: sample is currently BROKEN. |||||||||||||"
   175     echo   ""
   176     exit 0
   177 fi
   178 
   179 for sample in "${@}"; do
   180     ( dump_single_sample ${opt} "${sample}" )
   181 done