setup_env.sh 10.1 KB
Newer Older
W
q  
wenliang 已提交
1 2
#!/bin/bash

wenliang999's avatar
wenliang999 已提交
3 4 5 6 7 8 9 10 11

# ----------------------------------------------------------------------------------------------------
if [ "$0" == "${BASH_SOURCE[0]}" ] ; then
	echo -e "\033[1;31m[ERROR](${SCRIPT_NAME}) Using the shell \"source\" command to this script.\033[0m \033[0;33msource ${BASH_SOURCE[0]}\033[0m";
fi


# ----------------------------------------------------------------------------------------------------
SCRIPT_NAME_BAK=${SCRIPT_NAME};SCRIPT_PATH_BAK=${SCRIPT_PATH}
12 13 14 15 16 17
SCRIPT_NAME=${BASH_SOURCE[0]##*/}
SCRIPT_PATH=$(if [ -n "${BASH_SOURCE[0]%${SCRIPT_NAME}}" ]; then cd ${BASH_SOURCE[0]%${SCRIPT_NAME}}; fi; pwd)
#echo "BASH_SOURCE[0]=${BASH_SOURCE[0]}"
#echo "SCRIPT_FILE=${SCRIPT_FILE}"
#echo "SCRIPT_NAME=${SCRIPT_NAME}"
#echo "SCRIPT_PATH=${SCRIPT_PATH}"
W
q  
wenliang 已提交
18

19

wenliang999's avatar
wenliang999 已提交
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
# ----------------------------------------------------------------------------------------------------
toolchain_echo_quiet_state=0;   for argv in $*; do	if [ "$argv" == "info" ]; then  toolchain_echo_quiet_state=1;  fi   done
function toolchain_echo()   {   if [ "$toolchain_echo_quiet_state" == "1" ]; then  echo "$*";  fi   }
function toolchain_echo_yellow(){ echo -e "\033[0;33m$*\033[0m"; }
function toolchain_echo_var()
{
	var_name_len_max=16;   if [ -n "$2" ]; then   var_name_len_max=$2;   fi
	var_name=$1
	var_data=$(eval echo \${${var_name}})
	var_name_len=${#var_name}
	for((i=${var_name_len};i<${var_name_len_max};i++)); do
		var_name="${var_name} "
	done	
	toolchain_echo "${var_name} : ${var_data}"
}
function toolchain_echo_var_yellow()
{
	var_name_len_max=16;   if [ -n "$2" ]; then   var_name_len_max=$2;   fi
	var_name=$1
	var_data=$(eval echo \${${var_name}})
	var_name_len=${#var_name}
	for((i=${var_name_len};i<${var_name_len_max};i++)); do
		var_name="${var_name} "
	done	
	toolchain_echo "${var_name} : ${var_data}"
}
# ----------------------------------------------------------------------------------------------------
47 48 49 50 51 52 53
function find_aarch64-linux-gnu-gcc() {
	
	if [ -n "$FINDED_COMPILER" ]; then
		return 
	fi
	
	if [ ! -n "$FINDED_COMPILER" ]; then
54
	    FINDED_COMPILER=$(find -L ${SEARCH_PATH} -name aarch64-linux-gnu-g++ -type f)
55 56 57 58
		TOOLCHAIN_CMAKE="-DCMAKE_SYSTEM_PROCESSOR=aarch64 -DCMAKE_CXX_COMPILER=${FINDED_COMPILER}"
	fi

	if [ ! -n "$FINDED_COMPILER" ]; then
59
	    FINDED_COMPILER=$(find -L ${SEARCH_PATH} -name aarch64-linux-gnu-gcc -type f)
60 61 62 63 64 65
		TOOLCHAIN_CMAKE="-DCMAKE_SYSTEM_PROCESSOR=aarch64 -DCMAKE_C_COMPILER=${FINDED_COMPILER}"
	fi
	
	if [ -n "$FINDED_COMPILER" ]; then
		TOOLCHAIN_PATH=${FINDED_COMPILER%/*/*}
		GCC_INCLUDE_PATH=${TOOLCHAIN_PATH}/aarch64-linux-gnu/include
wenliang999's avatar
wenliang999 已提交
66
		#GCC_VERSION=$(ls ${TOOLCHAIN_PATH}/lib/gcc/*-* | head -n 1)
67 68 69 70 71 72 73 74 75
		
		PATH=${TOOLCHAIN_PATH}/bin:$PATH
		PATH=${TOOLCHAIN_PATH}/sbin:$PATH
		PATH=${TOOLCHAIN_PATH}/bin/aarch64-linux-gnu:$PATH
		PATH=${TOOLCHAIN_PATH}/bin/aarch64-linux-gnu-uclibc:$PATH
		PATH=${TOOLCHAIN_PATH}/bin/aarch64-linux-gnu-musl:$PATH

		CCACHE_PATH=${TOOLCHAIN_PATH}/bin:${TOOLCHAIN_PATH}/bin/../aarch64-linux-gnu/bin:${TOOLCHAIN_PATH}/bin/aarch64-linux-gnu:${TOOLCHAIN_PATH}/bin/aarch64-linux-gnu-uclibc:${TOOLCHAIN_PATH}/bin/aarch64-linux-gnu-musl:$CCACHE_PATH

wenliang999's avatar
wenliang999 已提交
76 77
		export GCC_PATH=${TOOLCHAIN_PATH}
		export GCC_PREFIX="aarch64-linux-gnu-"
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94

		C_INCLUDE_PATH=${GCC_INCLUDE_PATH}:${TOOLCHAIN_PATH}/aarch64-linux-gnu/libc/usr/include:${C_INCLUDE_PATH}
		CPLUS_INCLUDE_PATH=${GCC_INCLUDE_PATH}:${TOOLCHAIN_PATH}/aarch64-linux-gnu/libc/usr/include:${CPLUS_INCLUDE_PATH}
		LD_LIBRARY_PATH=${TOOLCHAIN_PATH}/aarch64-linux-gnu/libc/usr/lib:${LD_LIBRARY_PATH}
		
		export PATH
	fi
	return
}

function find_aarch64-qnx-gnu-gcc() {
	
	if [ -n "$FINDED_COMPILER" ]; then
		return 
	fi
	
	if [ ! -n "$FINDED_COMPILER" ]; then
95
	    FINDED_COMPILER=$(find -L ${SEARCH_PATH} -name ntoaarch64-g++)
96 97 98 99
		TOOLCHAIN_CMAKE="-DCMAKE_SYSTEM_PROCESSOR=aarch64 -DCMAKE_CXX_COMPILER=${FINDED_COMPILER}"
	fi

	if [ ! -n "$FINDED_COMPILER" ]; then
100
	    FINDED_COMPILER=$(find -L ${SEARCH_PATH} -name ntoaarch64-gcc)
101 102 103 104 105 106
		TOOLCHAIN_CMAKE="-DCMAKE_SYSTEM_PROCESSOR=aarch64 -DCMAKE_C_COMPILER=${FINDED_COMPILER}"
	fi
	
	if [ -n "$FINDED_COMPILER" ]; then
		TOOLCHAIN_PATH=${FINDED_COMPILER%/*/*}
		GCC_INCLUDE_PATH=${TOOLCHAIN_PATH}/ntoaarch64/include
wenliang999's avatar
wenliang999 已提交
107
		#GCC_VERSION=$(ls ${TOOLCHAIN_PATH}/lib/gcc/*-* | head -n 1)
108 109 110 111 112 113 114 115 116
		
		PATH=${TOOLCHAIN_PATH}/bin:$PATH
		PATH=${TOOLCHAIN_PATH}/sbin:$PATH
		PATH=${TOOLCHAIN_PATH}/bin/ntoaarch64:$PATH
		PATH=${TOOLCHAIN_PATH}/bin/ntoaarch64-uclibc:$PATH
		PATH=${TOOLCHAIN_PATH}/bin/ntoaarch64-musl:$PATH

		CCACHE_PATH=${TOOLCHAIN_PATH}/bin:${TOOLCHAIN_PATH}/bin/../ntoaarch64/bin:${TOOLCHAIN_PATH}/bin/ntoaarch64:${TOOLCHAIN_PATH}/bin/ntoaarch64-uclibc:${TOOLCHAIN_PATH}/bin/ntoaarch64-musl:$CCACHE_PATH

wenliang999's avatar
wenliang999 已提交
117 118
		export GCC_PATH=${TOOLCHAIN_PATH}
		export GCC_PREFIX="ntoaarch64-"
119 120 121 122 123 124 125 126 127 128 129 130 131 132

		C_INCLUDE_PATH=${GCC_INCLUDE_PATH}:${TOOLCHAIN_PATH}/ntoaarch64/libc/usr/include:${C_INCLUDE_PATH}
		CPLUS_INCLUDE_PATH=${GCC_INCLUDE_PATH}:${TOOLCHAIN_PATH}/ntoaarch64/libc/usr/include:${CPLUS_INCLUDE_PATH}
		LD_LIBRARY_PATH=${TOOLCHAIN_PATH}/ntoaarch64/libc/usr/lib:${LD_LIBRARY_PATH}	
				
		QNX_BASE=${TOOLCHAIN_PATH%/*/*/*/*}
		QNX_TARGET=$QNX_BASE/target/qnx7
		QNX_HOST=$QNX_BASE/host/linux/x86_64
		QNX_CONFIGURATION=$HOME/.qnx
		MAKEFLAGS=-I$QNX_BASE/target/qnx7/usr/include
		PATH=$QNX_HOST/usr/bin:$QNX_CONFIGURATION/bin:$QNX_BASE/jre/bin:$PATH

		export QNX_TARGET QNX_HOST QNX_CONFIGURATION MAKEFLAGS PATH
		unset PYTHONPATH		
wenliang999's avatar
wenliang999 已提交
133 134 135
		
		toolchain_echo_var_yellow QNX_HOST
		toolchain_echo_var_yellow QNX_TARGET
wenliang999's avatar
wenliang999 已提交
136 137
		
		CXX_OPTIONS_0="-D__EXT"
138 139 140 141
	fi
	return
}

wenliang999's avatar
wenliang999 已提交
142 143 144
function toolchain_info()
{
		toolchain_echo "-----------------: --------- --------- --------- --------- --------- --------- --------- --------- --------- ---------";
wenliang999's avatar
wenliang999 已提交
145 146 147 148 149 150 151 152 153 154
		toolchain_echo_var_yellow SCRIPT_NAME
		toolchain_echo_var_yellow SCRIPT_PATH
		toolchain_echo_var_yellow GCC_PATH
		toolchain_echo_var_yellow GCC_PREFIX
		toolchain_echo_var_yellow GCC_VERSION
		toolchain_echo_var_yellow GCC_TARGET
		toolchain_echo_var_yellow GCC_TARGET_TAG
		toolchain_echo_var_yellow GCC_INCLUDE_PATH
		toolchain_echo_var_yellow TOOLCHAIN_CMAKE
		toolchain_echo "                 :";
W
wenliang 已提交
155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
#		toolchain_echo_var_yellow CC
#		toolchain_echo_var_yellow CXX
#		toolchain_echo_var_yellow CPP
#		toolchain_echo_var_yellow AS
#		toolchain_echo_var_yellow LD
#		toolchain_echo_var_yellow GDB
#		toolchain_echo_var_yellow STRIP
#		toolchain_echo_var_yellow RANLIB
#		toolchain_echo_var_yellow OBJCOPY
#		toolchain_echo_var_yellow OBJDUMP
#		toolchain_echo_var_yellow READELF
#		toolchain_echo_var_yellow AR
#		toolchain_echo_var_yellow NM
		toolchain_echo_var_yellow ADDR2LINE
		toolchain_echo_var_yellow AR
wenliang999's avatar
wenliang999 已提交
170
		toolchain_echo_var_yellow AS
W
wenliang 已提交
171 172 173 174 175 176 177 178 179 180 181 182 183 184
		#toolchain_echo_var_yellow C++
		toolchain_echo_var_yellow CXX_FILT
		toolchain_echo_var_yellow CPP
		toolchain_echo_var_yellow DWP
		toolchain_echo_var_yellow ELFEDIT
		toolchain_echo_var_yellow CXX
		toolchain_echo_var_yellow CC
		#toolchain_echo_var_yellow CC-8.3.0
		toolchain_echo_var_yellow GCC_AR
		toolchain_echo_var_yellow GCC_NM
		toolchain_echo_var_yellow GCC_RANLIB
		toolchain_echo_var_yellow GCOV
		toolchain_echo_var_yellow GCOV_DUMP
		toolchain_echo_var_yellow GCOV_TOOL
wenliang999's avatar
wenliang999 已提交
185
		toolchain_echo_var_yellow GDB
W
wenliang 已提交
186 187 188 189 190 191 192
		toolchain_echo_var_yellow GDB_ADD_INDEX
		toolchain_echo_var_yellow GFORTRAN
		toolchain_echo_var_yellow GPROF
		toolchain_echo_var_yellow LD
		toolchain_echo_var_yellow LD_BFD
		toolchain_echo_var_yellow LD_GOLD
		toolchain_echo_var_yellow NM
wenliang999's avatar
wenliang999 已提交
193 194
		toolchain_echo_var_yellow OBJCOPY
		toolchain_echo_var_yellow OBJDUMP
W
wenliang 已提交
195
		toolchain_echo_var_yellow RANLIB
wenliang999's avatar
wenliang999 已提交
196
		toolchain_echo_var_yellow READELF
W
wenliang 已提交
197 198 199 200
		toolchain_echo_var_yellow SIZE
		toolchain_echo_var_yellow STRINGS
		toolchain_echo_var_yellow STRIP

wenliang999's avatar
wenliang999 已提交
201
		toolchain_echo "-----------------: --------- --------- --------- --------- --------- --------- --------- --------- --------- ---------";
wenliang999's avatar
wenliang999 已提交
202 203 204 205 206 207 208
}
if [ "$0" != "${BASH_SOURCE[0]}" ] ; then
	SEARCH_PATH=${SCRIPT_PATH%/*}
	unset FINDED_COMPILER
	unset TOOLCHAIN_CMAKE
	
	unset find_info
wenliang999's avatar
wenliang999 已提交
209
	unset CXX_OPTIONS_0
wenliang999's avatar
wenliang999 已提交
210 211 212 213 214
	find_aarch64-linux-gnu-gcc
	find_aarch64-qnx-gnu-gcc

	if [ -n "$FINDED_COMPILER" ]; then
	
W
wenliang 已提交
215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247
		export ADDR2LINE="${GCC_PREFIX}addr2line"
		export AR="${GCC_PREFIX}ar"
		export AS="${GCC_PREFIX}as"
		#export C++="${GCC_PREFIX}c++"
		export CXX_FILT="${GCC_PREFIX}c++filt"
		export CPP="${GCC_PREFIX}cpp"
		export DWP="${GCC_PREFIX}dwp"
		export ELFEDIT="${GCC_PREFIX}elfedit"
		export CXX="${GCC_PREFIX}g++"
		export CC="${GCC_PREFIX}gcc"
		#export CC-8.3.0="${GCC_PREFIX}gcc-8.3.0"
		export GCC_AR="${GCC_PREFIX}gcc-ar"
		export GCC_NM="${GCC_PREFIX}gcc-nm"
		export GCC_RANLIB="${GCC_PREFIX}gcc-ranlib"
		export GCOV="${GCC_PREFIX}gcov"
		export GCOV_DUMP="${GCC_PREFIX}gcov-dump"
		export GCOV_TOOL="${GCC_PREFIX}gcov-tool"
		export GDB="${GCC_PREFIX}gdb"
		export GDB_ADD_INDEX="${GCC_PREFIX}gdb-add-index"
		export GFORTRAN="${GCC_PREFIX}gfortran"
		export GPROF="${GCC_PREFIX}gprof"
		export LD="${GCC_PREFIX}ld"
		export LD_BFD="${GCC_PREFIX}ld.bfd"
		export LD_GOLD="${GCC_PREFIX}ld.gold"
		export NM="${GCC_PREFIX}nm"
		export OBJCOPY="${GCC_PREFIX}objcopy"
		export OBJDUMP="${GCC_PREFIX}objdump"
		export RANLIB="${GCC_PREFIX}ranlib"
		export READELF="${GCC_PREFIX}readelf"
		export SIZE="${GCC_PREFIX}size"
		export STRINGS="${GCC_PREFIX}strings"
		export STRIP="${GCC_PREFIX}strip"
	
wenliang999's avatar
wenliang999 已提交
248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265
		export CC="${GCC_PREFIX}gcc"
		export CXX="${GCC_PREFIX}g++"
		export CPP="${GCC_PREFIX}cpp"
		export AS="${GCC_PREFIX}as"
		export LD="${GCC_PREFIX}ld"
		export GDB="${GCC_PREFIX}gdb"
		export STRIP="${GCC_PREFIX}strip"
		export RANLIB="${GCC_PREFIX}ranlib"
		export OBJCOPY="${GCC_PREFIX}objcopy"
		export OBJDUMP="${GCC_PREFIX}objdump"
		export READELF="${GCC_PREFIX}readelf"
		export AR="${GCC_PREFIX}ar"
		export NM="${GCC_PREFIX}nm"
	
		gcc_target=$(${CC} -v 2>&1 | grep Target | cut -d " " -f 2 | sed 's/linux-gnu/linux/g' | sed 's/unknown-nto-qnx/qnx/g')
		gcc_version=$(${CC} -v 2>&1 | grep "gcc version" | cut -d " " -f 3)
		gcc_target_tag=${gcc_target}-${gcc_version}	
		
266 267 268
		export GCC_TARGET=${gcc_target}
		export GCC_VERSION=${gcc_version}
		export GCC_TARGET_TAG=${gcc_target_tag}
wenliang999's avatar
wenliang999 已提交
269 270
		
		export CXX="${GCC_PREFIX}g++ ${CXX_OPTIONS_0}"
wenliang999's avatar
wenliang999 已提交
271 272 273
	
		toolchain_info

274 275 276 277
	else
		echo -e "\033[1;31m[ERROR](${SCRIPT_NAME}) Toolchain was not found.\033[0m";		
	fi
fi
wenliang999's avatar
wenliang999 已提交
278 279 280 281


# ----------------------------------------------------------------------------------------------------
SCRIPT_NAME=${SCRIPT_NAME_BAK};SCRIPT_PATH=${SCRIPT_PATH_BAK}