#!/bin/sh # Shave and a Haircut # (c) 2019 Epic Games # US Patent 6720962 returnVersion=n returnDTS=n vray= while [ "$1" != "" ]; do if [ "$1" = "-v" ]; then returnVersion=y elif [ "$1" == "-dts" ]; then returnDTS=y else vray=$1 fi shift done if [ "${vray}" = "" ]; then echo "Usage: $0 vrayVersion" >&2 echo "Where vrayVersion is 31, 36, 40, etc" echo "" exit fi gpp= utilsDir=`dirname $0` os=`${utilsDir}/getos.sh` if [ "${os/.*/}" = "ce6" ]; then isCentOS6=y else isCentOS6=n fi case ${os} in ce*|deb*|fc*|rh*) gppVerNeeded= case $vray in 30|31|36) if [ "${returnDTS}" = "y" ]; then echo n exit fi gppVerNeeded=4.4.7 ;; 40) # On CentOS 6 we need to use DTS for gcc 4.8.2 builds. if [ "${returnDTS}" = "y" ]; then echo ${isCentOS6} exit fi if [ ${isCentOS6} = y ]; then source /opt/rh/devtoolset-2/enable fi gppVerNeeded=4.8.2 ;; esac if [ "${gppVerNeeded}" != "" ]; then if [ "${returnVersion}" = "y" ]; then echo ${gppVerNeeded} exit fi # Does the native g++ command give us the correct version? nativeVer=`g++ -v 2>&1 | grep "gcc version" | sed 's/^[^0-9]*\([0-9.]*\).*$/\1/'` if [ "${nativeVer}" = "${gppVerNeeded}" ]; then gpp=g++ else # Check to see if there is a directory in /opt containing the # compiler we want. compressedVer=`echo ${gppVerNeeded} | sed 's/\.//g'` shortVer=`echo ${gppVerNeeded} | cut -d. -f-2` if [ -x /opt/gcc${compressedVer}/bin/g++ ]; then gpp="/opt/gcc${compressedVer}/bin/g++" elif [ -x /opt/gcc${compressedVer}/bin/g++${compressedVer} ]; then gpp="/opt/gcc${compressedVer}/bin/g++${compressedVer}" elif [ -x /usr/bin/g++-${shortVer} ]; then gpp="/usr/bin/g++-${shortVer}" fi fi fi ;; osx*) if [ "${returnDTS}" = "y" ]; then echo n exit fi # getosxvars.sh sets environment variables which control where we find # the compiler, so we can just use 'g++' in all cases. gpp=g++ ;; esac echo ${gpp}