dpdk/devtools/build-tags.sh
<<
>>
Prefs
   1#!/bin/sh -e
   2# SPDX-License-Identifier: BSD-3-Clause
   3# Copyright(c) 2017 Cavium, Inc
   4#
   5
   6#
   7# Generate tags or gtags or cscope or etags files
   8#
   9
  10verbose=false
  11linux=true
  12bsd=true
  13x86_32=true
  14x86_64=true
  15ppc_64=true
  16arm_32=true
  17arm_64=true
  18
  19print_usage()
  20{
  21        echo "Usage: $(basename $0) [-h] [-v] tags|cscope|gtags|etags [config]"
  22        echo "Examples of valid configs are: "
  23        echo "x86_64-bsd, arm64-linux, ppc_64-linux"
  24}
  25
  26# Move to the root of the git tree
  27cd $(dirname $0)/..
  28
  29while getopts hv ARG ; do
  30        case $ARG in
  31                v ) verbose=true ;;
  32                h ) print_usage; exit 0 ;;
  33                ? ) print_usage; exit 1 ;;
  34        esac
  35done
  36shift $(($OPTIND - 1))
  37
  38#ignore version control files
  39ignore="( -name .svn -o -name CVS -o -name .hg -o -name .git ) -prune -o"
  40
  41source_dirs="app buildtools drivers examples lib"
  42
  43skip_bsd="( -name freebsd ) -prune -o"
  44skip_linux="( -name linux ) -prune -o"
  45skip_arch="( -name arch ) -prune -o"
  46skip_sse="( -name *_sse*.[chS] ) -prune -o"
  47skip_avx="( -name *_avx*.[chS] ) -prune -o"
  48skip_neon="( -name *_neon*.[chS] ) -prune -o"
  49skip_altivec="( -name *_altivec*.[chS] ) -prune -o"
  50skip_arm64="( -name *arm64*.[chS] ) -prune -o"
  51skip_x86="( -name *x86*.[chS] ) -prune -o"
  52skip_32b_files="( -name *_32.h ) -prune -o"
  53skip_64b_files="( -name *_64.h ) -prune -o"
  54
  55skiplist="$skip_bsd $skip_linux $skip_arch $skip_sse $skip_avx \
  56                 $skip_neon $skip_altivec $skip_x86 $skip_arm64"
  57
  58find_sources()
  59{
  60        find $1 $ignore $3 -name $2 -not -type l -print
  61}
  62
  63common_sources()
  64{
  65        find_sources "$source_dirs" '*.[chS]' "$skiplist"
  66}
  67
  68linux_sources()
  69{
  70        find_sources "lib/eal/linux" '*.[chS]'
  71        find_sources "kernel/linux" '*.[chS]'
  72}
  73
  74bsd_sources()
  75{
  76        find_sources "lib/eal/freebsd" '*.[chS]'
  77        find_sources "kernel/freebsd" '*.[chS]'
  78}
  79
  80arm_common()
  81{
  82        find_sources "$source_dirs" '*neon*.[chS]'
  83}
  84
  85arm_32_sources()
  86{
  87        arm_common
  88        find_sources "lib/eal/arm" '*.[chS]' \
  89                                        "$skip_64b_files"
  90}
  91
  92arm_64_sources()
  93{
  94        arm_common
  95        find_sources "lib/eal/arm" '*.[chS]' \
  96                                         "$skip_32b_files"
  97        find_sources "$source_dirs" '*arm64.[chS]'
  98}
  99
 100x86_common()
 101{
 102        find_sources "$source_dirs" '*_sse*.[chS]'
 103        find_sources "$source_dirs" '*_avx*.[chS]'
 104        find_sources "$source_dirs" '*x86.[chS]'
 105}
 106
 107x86_32_sources()
 108{
 109        x86_common
 110        find_sources "lib/eal/x86" '*.[chS]' \
 111                                        "$skip_64b_files"
 112}
 113
 114x86_64_sources()
 115{
 116        x86_common
 117        find_sources "lib/eal/x86" '*.[chS]' \
 118                                        "$skip_32b_files"
 119}
 120
 121ppc_64_sources()
 122{
 123        find_sources "lib/eal/ppc" '*.[chS]'
 124        find_sources "$source_dirs" '*altivec*.[chS]'
 125}
 126
 127if [ -n "$2" ]; then
 128        echo $2 | grep -q "linux" || linux=false
 129        echo $2 | grep -q "bsd" || bsd=false
 130        echo $2 | grep -q "x86_64-" || x86_64=false
 131        echo $2 | grep -q "arm-" || arm_32=false
 132        echo $2 | grep -q "arm64-" || arm_64=false
 133        echo $2 | grep -q "ppc_64-" || ppc_64=false
 134        echo $2 | grep -q -e "i686-" -e "x32-" || x86_32=false
 135fi
 136
 137all_sources()
 138{
 139        common_sources
 140        if $linux ; then linux_sources ; fi
 141        if $bsd ; then bsd_sources ; fi
 142        if $x86_64 ; then x86_64_sources ; fi
 143        if $x86_32 ; then x86_32_sources ; fi
 144        if $ppc_64 ; then ppc_64_sources ; fi
 145        if $arm_32 ; then arm_32_sources ; fi
 146        if $arm_64 ; then arm_64_sources ; fi
 147}
 148
 149show_flags()
 150{
 151        if $verbose ; then
 152                echo "mode:     $1"
 153                echo "config:   $2"
 154                echo "linux:    $linux"
 155                echo "bsd:      $bsd"
 156                echo "x86_32:   $x86_32"
 157                echo "x86_64:   $x86_64"
 158                echo "ppc_64:   $ppc_64"
 159                echo "arm_32:   $arm_32"
 160                echo "arm_64:   $arm_64"
 161        fi
 162}
 163
 164case "$1" in
 165        "cscope")
 166                show_flags $1 $2
 167                all_sources > cscope.files
 168                cscope -q -b -f cscope.out
 169                ;;
 170        "gtags")
 171                show_flags $1 $2
 172                all_sources | gtags -i -f -
 173                ;;
 174        "tags")
 175                show_flags $1 $2
 176                rm -f tags
 177                all_sources | xargs ctags -a
 178                ;;
 179        "etags")
 180                show_flags $1 $2
 181                rm -f TAGS
 182                all_sources | xargs etags -a
 183                ;;
 184        *)
 185                echo "Invalid mode: $1"
 186                print_usage
 187                ;;
 188esac
 189