 configure.ac | 56 ++++++++++++++++++++++++++++----------------------------
 1 file changed, 28 insertions(+), 28 deletions(-)

diff --git a/configure.ac b/configure.ac
index 9e917dd..033621f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -194,7 +194,7 @@ AC_ARG_WITH(sparse_list,
 )
 AC_MSG_RESULT([$sparse_list])
 if test "$sparse_set" = "yes" ; then
-	if test "$sparse_list" == "yes" ; then
+	if test "$sparse_list" = "yes" ; then
 		AC_MSG_ERROR([cannot --with both sparse_set and sparse_list])
 	fi
 	AC_SUBST(cppad_internal_sparse_set, sparse_set)
@@ -374,7 +374,7 @@ AC_SUBST(cppad_max_num_threads, [$max_num_threads])
 dnl type used for addresses in AD tapes [ default = unsigned int ] -----------
 AC_MSG_CHECKING([TAPE_ADDR_TYPE])
 AC_ARG_VAR(TAPE_ADDR_TYPE, [type used for addresses in AD tapes])
-if test "$TAPE_ADDR_TYPE" == "" ; then
+if test "$TAPE_ADDR_TYPE" = "" ; then
 	addr_t="unsigned int"
 else
 	addr_t="$TAPE_ADDR_TYPE"
@@ -382,22 +382,22 @@ fi
 AC_SUBST(cppad_tape_addr_type, [$addr_t])
 AC_MSG_RESULT([$addr_t])
 ok="no"
-if test "$addr_t" == "size_t" ; then
+if test "$addr_t" = "size_t" ; then
 	ok="yes"
 fi
-if test "$addr_t" == "int" ; then
+if test "$addr_t" = "int" ; then
 	AC_MSG_WARN(
 		[TAPE_ADDR_TYPE=int is for CppAD developers (not users)]
 	)
 	ok="yes"
 fi
-if test "$addr_t" == "unsigned int" ; then
+if test "$addr_t" = "unsigned int" ; then
 	ok="yes"
 fi
-if test "$addr_t" == "unsigned short int" ; then
+if test "$addr_t" = "unsigned short int" ; then
 	ok="yes"
 fi
-if test "$ok" == "no" ; then
+if test "$ok" = "no" ; then
   	AC_MSG_ERROR(
 		[$addr_t is not a valid choice for TAPE_ADDR_TYPE]
 	)
@@ -406,7 +406,7 @@ fi
 dnl type used for tape identifier [ default = unsigned int ] -----------
 AC_MSG_CHECKING([TAPE_ID_TYPE])
 AC_ARG_VAR(TAPE_ID_TYPE, [type used for addresses in AD tapes])
-if test "$TAPE_ID_TYPE" == "" ; then
+if test "$TAPE_ID_TYPE" = "" ; then
 	tape_id_t="unsigned int"
 else
 	tape_id_t="$TAPE_ID_TYPE"
@@ -414,22 +414,22 @@ fi
 AC_SUBST(cppad_tape_id_type, [$tape_id_t])
 AC_MSG_RESULT([$tape_id_t])
 ok="no"
-if test "$tape_id_t" == "size_t" ; then
+if test "$tape_id_t" = "size_t" ; then
 	ok="yes"
 fi
-if test "$tape_id_t" == "int" ; then
+if test "$tape_id_t" = "int" ; then
 	AC_MSG_WARN(
 		[TAPE_ID_TYPE=int is for CppAD developers (not users)]
 	)
 	ok="yes"
 fi
-if test "$tape_id_t" == "unsigned int" ; then
+if test "$tape_id_t" = "unsigned int" ; then
 	ok="yes"
 fi
-if test "$tape_id_t" == "unsigned short int" ; then
+if test "$tape_id_t" = "unsigned short int" ; then
 	ok="yes"
 fi
-if test "$ok" == "no" ; then
+if test "$ok" = "no" ; then
   	AC_MSG_ERROR(
 		[$tape_id_t is not a valid choice for TAPE_ID_TYPE]
 	)
@@ -447,7 +447,7 @@ AC_SUBST(cppad_has_rvalue, 0)
 dnl Determine if size_t has same size as unsigned int 
 AC_CHECK_SIZEOF([size_t])
 AC_CHECK_SIZEOF([unsigned int])
-if test "$ac_cv_size_t" == "$ac_cv_unsigned_int" ; then
+if test "$ac_cv_size_t" = "$ac_cv_unsigned_int" ; then
 	AC_SUBST(cppad_size_t_same_unsigned_int, 1)
 else
 	AC_SUBST(cppad_size_t_same_unsigned_int, 0)
@@ -485,8 +485,8 @@ AC_PROG_RANLIB
 dnl AC_PROG_CXX([compiler-search-list]) outputs CXX as C++ compiler to use
 AC_PROG_CXX
 AC_MSG_CHECKING([whether using Microsoft C++ compiler])
-AM_CONDITIONAL(CppAD_MS_COMPILER, test "$CXX" == "cl" || test "$CXX" == "icl")
-if test "$CXX" == "cl" || test "$CXX" == "icl"; then
+AM_CONDITIONAL(CppAD_MS_COMPILER, test "$CXX" = "cl" || test "$CXX" = "icl")
+if test "$CXX" = "cl" || test "$CXX" = "icl"; then
 	AC_MSG_RESULT([yes])
 else
 	AC_MSG_RESULT([no])
@@ -531,7 +531,7 @@ AC_CHECK_LIB(
 	[pthread="no"]
 )
 AM_CONDITIONAL(CppAD_PTHREAD, test "$pthread" = "yes")
-if test "$pthread" == "yes" ; then
+if test "$pthread" = "yes" ; then
 	AC_SUBST(PTHREAD_LIB,"-lpthread")
 else
 	AC_SUBST(PTHREAD_LIB,"")
@@ -554,7 +554,7 @@ boost_thread_found='no'
 if test "$BOOST_DIR" != '' ; then
 	CXXFLAGS="-I$BOOST_DIR/include $CXXFLAGS"
 fi
-if test "$BOOST_DIR" == '' && test "$boost_thread_found" == 'no' ; then
+if test "$BOOST_DIR" = '' && test "$boost_thread_found" = 'no' ; then
 	bthread_lib='-lboost_thread-mt'
 	LDFLAGS="$LDFLAGS_save $bthread_lib"
 	AC_LINK_IFELSE(
@@ -566,7 +566,7 @@ if test "$BOOST_DIR" == '' && test "$boost_thread_found" == 'no' ; then
 		[boost_thread_found='no']
 	)
 fi
-if test "$BOOST_DIR" != '' && test "$boost_thread_found" == 'no' ; then
+if test "$BOOST_DIR" != '' && test "$boost_thread_found" = 'no' ; then
 	bthread_lib="$BOOST_DIR/lib/libboost_thread-mt.so"
 	LDFLAGS="$LDFLAGS_save $bthread_lib"
 	AC_LINK_IFELSE(
@@ -578,7 +578,7 @@ if test "$BOOST_DIR" != '' && test "$boost_thread_found" == 'no' ; then
 		[boost_thread_found='no']
 	)
 fi
-if test "$BOOST_DIR" != '' && test "$boost_thread_found" == 'no' ; then
+if test "$BOOST_DIR" != '' && test "$boost_thread_found" = 'no' ; then
 	bthread_lib="$BOOST_DIR/lib/libboost_thread-mt.a"
 	LDFLAGS="$LDFLAGS_save $bthread_lib"
 	AC_LINK_IFELSE(
@@ -590,7 +590,7 @@ if test "$BOOST_DIR" != '' && test "$boost_thread_found" == 'no' ; then
 		[boost_thread_found='no']
 	)
 fi
-if test "$BOOST_DIR" == '' && test "$boost_thread_found" == 'no' ; then
+if test "$BOOST_DIR" = '' && test "$boost_thread_found" = 'no' ; then
 	bthread_lib='-lboost_thread'
 	LDFLAGS="$LDFLAGS_save $bthread_lib"
 	AC_LINK_IFELSE(
@@ -602,7 +602,7 @@ if test "$BOOST_DIR" == '' && test "$boost_thread_found" == 'no' ; then
 		[boost_thread_found='no']
 	)
 fi
-if test "$BOOST_DIR" != '' && test "$boost_thread_found" == 'no' ; then
+if test "$BOOST_DIR" != '' && test "$boost_thread_found" = 'no' ; then
 	bthread_lib="$BOOST_DIR/lib/libboost_thread.so"
 	LDFLAGS="$LDFLAGS_save $bthread_lib"
 	AC_LINK_IFELSE(
@@ -614,7 +614,7 @@ if test "$BOOST_DIR" != '' && test "$boost_thread_found" == 'no' ; then
 		[boost_thread_found='no']
 	)
 fi
-if test "$BOOST_DIR" != '' && test "$boost_thread_found" == 'no' ; then
+if test "$BOOST_DIR" != '' && test "$boost_thread_found" = 'no' ; then
 	bthread_lib="$BOOST_DIR/lib/libboost_thread.a"
 	LDFLAGS="$LDFLAGS_save $bthread_lib"
 	AC_LINK_IFELSE(
@@ -627,7 +627,7 @@ if test "$BOOST_DIR" != '' && test "$boost_thread_found" == 'no' ; then
 	)
 fi
 AM_CONDITIONAL(CppAD_BTHREAD, test "$boost_thread_found" = 'yes')
-if test "$boost_thread_found" == 'yes' ; then
+if test "$boost_thread_found" = 'yes' ; then
 	AC_SUBST(BTHREAD_LIB,"$bthread_lib")
 	AC_MSG_RESULT([boost::thread library... yes])
 else
@@ -650,12 +650,12 @@ fi
 AC_SUBST(CPPAD_IPOPT_LD_PATH, "$IPOPT_LD_PATH")
 #
 AC_SUBST(CPPAD_IPOPT_LIBS, "$IPOPT_LIBS -lipopt")
-if test "$have_pkg_config" == "yes"; then
+if test "$have_pkg_config" = "yes"; then
 	dnl set CPPAD_IPOPT_LIBS
 	PKG_CONFIG_PATH="$IPOPT_DIR/lib/pkgconfig:$IPOPT_DIR/share/pkgconfig"
 	PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$IPOPT_DIR/lib64/pkgconfig"
 	export PKG_CONFIG_PATH
-	if pkg-config --libs ipopt >& /dev/null ; then
+	if pkg-config --libs ipopt > /dev/null 2>&1 ; then
 		CPPAD_IPOPT_LIBS=`pkg-config --libs ipopt`
 	else
 		dnl check for blas library
@@ -696,7 +696,7 @@ dnl
 AC_SUBST(cppad_description, "Differentiation of C++ Algorithms")
 AC_SUBST(cppad_version, ${PACKAGE_VERSION} )
 AC_SUBST(cppad_url, "http://www.coin-or.org/CppAD")
-if test "$prefix" == "NONE" ; then
+if test "$prefix" = "NONE" ; then
 	cppad_cflags_value="-I$HOME/include"
 	cppad_libs_value="-L$HOME/lib"
 else
@@ -707,7 +707,7 @@ if test "$POSTFIX_DIR" != "" ; then
 	cppad_cflags_value="$cppad_cflags_value/$POSTFIX_DIR"
 	cppad_libs_value="$cppad_libs_value/$POSTFIX_DIR"
 fi
-if test "$IPOPT_DIR" == "" ; then
+if test "$IPOPT_DIR" = "" ; then
 	cppad_libs_value=""
 	cppad_requires_value=""
 else
