@@ -48,140 +48,92 @@ if [[ $SRS_OSX == YES ]]; then
4848 echo " Please install brew at https://brew.sh/" ; exit $ret ;
4949 fi
5050fi
51- # Check perl, which is depended by automake for building libopus etc.
52- perl --version > /dev/null 2> /dev/null; ret=$? ; if [[ 0 -ne $ret ]]; then
53- if [[ $OS_IS_CENTOS == YES ]]; then
54- echo " Please install perl by:"
55- echo " yum install -y perl"
56- elif [[ $OS_IS_UBUNTU == YES ]]; then
57- echo " Please install perl by:"
58- echo " apt install -y perl"
59- else
60- echo " Please install perl"
61- fi
62- exit $ret ;
63- fi
64- gcc --version > /dev/null 2> /dev/null; ret=$? ; if [[ 0 -ne $ret ]]; then
65- if [[ $OS_IS_CENTOS == YES ]]; then
66- echo " Please install gcc by:"
67- echo " yum install -y gcc"
68- elif [[ $OS_IS_UBUNTU == YES ]]; then
69- echo " Please install gcc by:"
70- echo " apt install -y gcc"
71- else
72- echo " Please install gcc"
73- fi
74- exit $ret ;
75- fi
76- g++ --version > /dev/null 2> /dev/null; ret=$? ; if [[ 0 -ne $ret ]]; then
77- if [[ $OS_IS_CENTOS == YES ]]; then
78- echo " Please install g++ by:"
79- echo " yum install -y gcc-c++"
80- elif [[ $OS_IS_UBUNTU == YES ]]; then
81- echo " Please install g++ by:"
82- echo " apt install -y g++"
83- else
84- echo " Please install gcc-c++"
85- fi
86- exit $ret ;
87- fi
88- make --version > /dev/null 2> /dev/null; ret=$? ; if [[ 0 -ne $ret ]]; then
89- if [[ $OS_IS_CENTOS == YES ]]; then
90- echo " Please install make by:"
91- echo " yum install -y make"
92- elif [[ $OS_IS_UBUNTU == YES ]]; then
93- echo " Please install make by:"
94- echo " apt install -y make"
95- else
96- echo " Please install make"
97- fi
98- exit $ret ;
99- fi
100- patch --version > /dev/null 2> /dev/null; ret=$? ; if [[ 0 -ne $ret ]]; then
101- if [[ $OS_IS_CENTOS == YES ]]; then
102- echo " Please install patch by:"
103- echo " yum install -y patch"
104- elif [[ $OS_IS_UBUNTU == YES ]]; then
105- echo " Please install patch by:"
106- echo " apt install -y patch"
107- else
108- echo " Please install patch"
109- fi
110- exit $ret ;
111- fi
112- unzip -v > /dev/null 2> /dev/null; ret=$? ; if [[ 0 -ne $ret ]]; then
113- if [[ $OS_IS_CENTOS == YES ]]; then
114- echo " Please install unzip by:"
115- echo " yum install -y unzip"
116- elif [[ $OS_IS_UBUNTU == YES ]]; then
117- echo " Please install unzip by:"
118- echo " apt install -y unzip"
119- else
120- echo " Please install unzip"
121- fi
122- exit $ret ;
123- fi
124- automake --version > /dev/null 2> /dev/null; ret=$? ; if [[ 0 -ne $ret ]]; then
125- if [[ $OS_IS_CENTOS == YES ]]; then
126- echo " Please install automake by:"
127- echo " yum install -y automake"
128- elif [[ $OS_IS_UBUNTU == YES ]]; then
129- echo " Please install automake by:"
130- echo " apt install -y automake"
131- else
132- echo " Please install automake"
51+
52+ # Arrays to track missing dependencies
53+ MISSING_DEPS=()
54+ MISSING_DEPS_UBUNTU=()
55+ MISSING_DEPS_CENTOS=()
56+ MISSING_DEPS_OSX=()
57+
58+ # Helper function to check if a command exists
59+ check_command () {
60+ local cmd=$1
61+ local cmd_name=$2
62+ local ubuntu_pkg=$3
63+ local centos_pkg=$4
64+ local osx_pkg=$5
65+
66+ $cmd > /dev/null 2> /dev/null
67+ if [[ $? -ne 0 ]]; then
68+ MISSING_DEPS+=(" $cmd_name " )
69+ if [[ ! -z " $ubuntu_pkg " ]]; then
70+ MISSING_DEPS_UBUNTU+=(" $ubuntu_pkg " )
71+ fi
72+ if [[ ! -z " $centos_pkg " ]]; then
73+ MISSING_DEPS_CENTOS+=(" $centos_pkg " )
74+ fi
75+ if [[ ! -z " $osx_pkg " ]]; then
76+ MISSING_DEPS_OSX+=(" $osx_pkg " )
77+ fi
78+ return 1
13379 fi
134- exit $ret ;
135- fi
80+ return 0
81+ }
82+
83+ # Check required tools
84+ echo " Checking required tools: perl gcc g++ make patch unzip automake pkg-config which"
85+ check_command " perl --version" " perl" " perl" " perl" " perl"
86+ check_command " gcc --version" " gcc" " gcc" " gcc" " gcc"
87+ check_command " g++ --version" " g++" " g++" " gcc-c++" " gcc"
88+ check_command " make --version" " make" " make" " make" " make"
89+ check_command " patch --version" " patch" " patch" " patch" " gpatch"
90+ check_command " unzip -v" " unzip" " unzip" " unzip" " unzip"
91+ check_command " automake --version" " automake" " automake" " automake" " automake"
92+ check_command " pkg-config --version" " pkg-config" " pkg-config" " pkgconfig" " pkg-config"
93+ check_command " which ls" " which" " which" " which" " which"
94+
95+ # Check optional tools for valgrind
13696if [[ $SRS_VALGRIND == YES ]]; then
137- valgrind --version > /dev/null 2> /dev/null; ret=$? ; if [[ 0 -ne $ret ]]; then
138- echo " Please install valgrind" ; exit $ret ;
139- fi
97+ check_command " valgrind --version" " valgrind" " valgrind" " valgrind" " valgrind"
14098 if [[ ! -f /usr/include/valgrind/valgrind.h ]]; then
141- echo " Please install valgrind-dev" ; exit $ret ;
99+ MISSING_DEPS+=(" valgrind-dev" )
100+ MISSING_DEPS_UBUNTU+=(" valgrind" )
101+ MISSING_DEPS_CENTOS+=(" valgrind-devel" )
102+ MISSING_DEPS_OSX+=(" valgrind" )
142103 fi
143104fi
144- # Check tclsh, which is depended by SRT.
105+
106+ # Check optional tools for SRT
145107if [[ $SRS_SRT == YES ]]; then
146- tclsh <<< " exit" > /dev/null 2>&1 ; ret=$? ; if [[ 0 -ne $ret ]]; then
147- if [[ $OS_IS_CENTOS == YES ]]; then
148- echo " Please install tclsh by:"
149- echo " yum install -y tcl"
150- elif [[ $OS_IS_UBUNTU == YES ]]; then
151- echo " Please install tclsh by:"
152- echo " apt install -y tclsh"
153- else
154- echo " Please install tclsh"
155- fi
156- exit $ret ;
157- fi
158- cmake --version > /dev/null 2> /dev/null; ret=$? ; if [[ 0 -ne $ret ]]; then
159- if [[ $OS_IS_CENTOS == YES ]]; then
160- echo " Please install cmake by:"
161- echo " yum install -y cmake"
162- elif [[ $OS_IS_UBUNTU == YES ]]; then
163- echo " Please install cmake by:"
164- echo " apt install -y cmake"
165- else
166- echo " Please install cmake"
167- fi
168- exit $ret ;
169- fi
170- fi
171- pkg-config --version > /dev/null 2> /dev/null; ret=$? ; if [[ 0 -ne $ret ]]; then
172- echo " Please install pkg-config" ; exit $ret ;
173- fi
174- which ls > /dev/null 2> /dev/null; ret=$? ; if [[ 0 -ne $ret ]]; then
175- if [[ $OS_IS_CENTOS == YES ]]; then
176- echo " Please install which by:"
177- echo " yum install -y which"
178- elif [[ $OS_IS_UBUNTU == YES ]]; then
179- echo " Please install which by:"
180- echo " apt install -y which"
108+ echo " Checking optional tools for SRT: tclsh cmake"
109+ # Special check for tclsh
110+ tclsh <<< " exit" > /dev/null 2>&1
111+ if [[ $? -ne 0 ]]; then
112+ MISSING_DEPS+=(" tclsh" )
113+ MISSING_DEPS_UBUNTU+=(" tclsh" )
114+ MISSING_DEPS_CENTOS+=(" tcl" )
115+ MISSING_DEPS_OSX+=(" tcl-tk" )
116+ fi
117+ check_command " cmake --version" " cmake" " cmake" " cmake" " cmake"
118+ fi
119+
120+ # Report all missing dependencies at once
121+ if [[ ${# MISSING_DEPS[@]} -gt 0 ]]; then
122+ echo " "
123+ echo -e " Missing dependencies (${# MISSING_DEPS[@]} ): ${RED}${MISSING_DEPS[@]}${BLACK} "
124+
125+ if [[ $OS_IS_UBUNTU == YES && ${# MISSING_DEPS_UBUNTU[@]} -gt 0 ]]; then
126+ echo -e " Please install missing dependencies by: ${GREEN} sudo apt install -y ${MISSING_DEPS_UBUNTU[@]}${BLACK} "
127+ elif [[ $OS_IS_CENTOS == YES && ${# MISSING_DEPS_CENTOS[@]} -gt 0 ]]; then
128+ echo -e " Please install missing dependencies by: ${GREEN} sudo yum install -y ${MISSING_DEPS_CENTOS[@]}${BLACK} "
129+ elif [[ $SRS_OSX == YES && ${# MISSING_DEPS_OSX[@]} -gt 0 ]]; then
130+ echo -e " Please install missing dependencies by: ${GREEN} brew install ${MISSING_DEPS_OSX[@]}${BLACK} "
181131 else
182- echo " Please install which "
132+ echo " Please install the missing dependencies above. "
183133 fi
184- exit $ret ;
134+
135+ echo " Please install the missing dependencies above and rerun configure."
136+ exit 1
185137fi
186138
187139# ####################################################################################
0 commit comments