ci: Recognize more CI_ variables for better cross-platform verification

For ci_autotools.sh, customize CPP, CPPFLAGS, AR, RANLIB, LD, LDFLAGS
via CI_CPP, CI_CPP_FLAGS, CI_AR, CI_RANLIB, CI_LD, CI_LD_FLAGS.

For ci_cmake.sh and ci_legacy.sh, customize AR, AR_RC and RANLIB via
CI_AR and CI_RANLIB.

Rewrite portions of ci_legacy.sh to match the style of ci_cmake.sh.
diff --git a/ci/ci_autotools.sh b/ci/ci_autotools.sh
index 14108da..6f4dc13 100755
--- a/ci/ci_autotools.sh
+++ b/ci/ci_autotools.sh
@@ -45,6 +45,12 @@
     ci_info "environment option: \$CI_MAKE_FLAGS='$CI_MAKE_FLAGS'"
     ci_info "environment option: \$CI_CC='$CI_CC'"
     ci_info "environment option: \$CI_CC_FLAGS='$CI_CC_FLAGS'"
+    ci_info "environment option: \$CI_CPP='$CI_CPP'"
+    ci_info "environment option: \$CI_CPP_FLAGS='$CI_CPP_FLAGS'"
+    ci_info "environment option: \$CI_AR='$CI_AR'"
+    ci_info "environment option: \$CI_RANLIB='$CI_RANLIB'"
+    ci_info "environment option: \$CI_LD='$CI_LD'"
+    ci_info "environment option: \$CI_LD_FLAGS='$CI_LD_FLAGS'"
     ci_info "environment option: \$CI_SANITIZERS='$CI_SANITIZERS'"
     ci_info "environment option: \$CI_NO_TEST='$CI_NO_TEST'"
     ci_info "environment option: \$CI_NO_INSTALL='$CI_NO_INSTALL'"
@@ -58,7 +64,16 @@
     # Export the configure build environment.
     [[ $CI_CC ]] && ci_spawn export CC="$CI_CC"
     [[ $CI_CC_FLAGS ]] && ci_spawn export CFLAGS="$CI_CC_FLAGS"
-    [[ $CI_SANITIZERS ]] && ci_spawn export CFLAGS="-fsanitize=$CI_SANITIZERS -O2 $CFLAGS"
+    [[ $CI_CPP ]] && ci_spawn export CPP="$CI_CPP"
+    [[ $CI_CPP_FLAGS ]] && ci_spawn export CPPFLAGS="$CI_CPP_FLAGS"
+    [[ $CI_AR ]] && ci_spawn export AR="$CI_AR"
+    [[ $CI_RANLIB ]] && ci_spawn export RANLIB="$CI_RANLIB"
+    [[ $CI_LD ]] && ci_spawn export CPP="$CI_LD"
+    [[ $CI_LD_FLAGS ]] && ci_spawn export LDFLAGS="$CI_LD_FLAGS"
+    [[ $CI_SANITIZERS ]] && {
+        ci_spawn export CFLAGS="-fsanitize=$CI_SANITIZERS -O2 $CFLAGS"
+        ci_spawn export LDFLAGS="-fsanitize=$CI_SANITIZERS $LDFLAGS"
+    }
     # Build and install.
     ci_spawn rm -fr "$CI_BUILDDIR" "$CI_INSTALLDIR"
     ci_spawn mkdir -p "$CI_BUILDDIR"
diff --git a/ci/ci_cmake.sh b/ci/ci_cmake.sh
index 0fec460..3e6c42e 100755
--- a/ci/ci_cmake.sh
+++ b/ci/ci_cmake.sh
@@ -52,6 +52,8 @@
     ci_info "environment option: \$CI_CTEST_FLAGS='$CI_CTEST_FLAGS'"
     ci_info "environment option: \$CI_CC='$CI_CC'"
     ci_info "environment option: \$CI_CC_FLAGS='$CI_CC_FLAGS'"
+    ci_info "environment option: \$CI_AR='$CI_AR'"
+    ci_info "environment option: \$CI_RANLIB='$CI_RANLIB'"
     ci_info "environment option: \$CI_SANITIZERS='$CI_SANITIZERS'"
     ci_info "environment option: \$CI_NO_TEST='$CI_NO_TEST'"
     ci_info "environment option: \$CI_NO_INSTALL='$CI_NO_INSTALL'"
@@ -69,6 +71,8 @@
     local -a ALL_CMAKE_VARS=()
     [[ $CI_CC ]] && ALL_CMAKE_VARS+=(-DCMAKE_C_COMPILER="$CI_CC")
     [[ $ALL_CC_FLAGS ]] && ALL_CMAKE_VARS+=(-DCMAKE_C_FLAGS="$ALL_CC_FLAGS")
+    [[ $CI_AR ]] && ALL_CMAKE_VARS+=(-DCMAKE_AR="$CI_AR")
+    [[ $CI_RANLIB ]] && ALL_CMAKE_VARS+=(-DCMAKE_RANLIB="$CI_RANLIB")
     ALL_CMAKE_VARS+=(-DCMAKE_BUILD_TYPE="$CI_CMAKE_BUILD_TYPE")
     ALL_CMAKE_VARS+=(-DCMAKE_INSTALL_PREFIX="$CI_INSTALLDIR")
     ALL_CMAKE_VARS+=(-DCMAKE_VERBOSE_MAKEFILE=ON)
diff --git a/ci/ci_legacy.sh b/ci/ci_legacy.sh
index a933894..58a8005 100755
--- a/ci/ci_legacy.sh
+++ b/ci/ci_legacy.sh
@@ -51,6 +51,8 @@
     ci_info "environment option: \$CI_CC_FLAGS='$CI_CC_FLAGS'"
     ci_info "environment option: \$CI_CPP='$CI_CPP'"
     ci_info "environment option: \$CI_CPP_FLAGS='$CI_CPP_FLAGS'"
+    ci_info "environment option: \$CI_AR='$CI_AR'"
+    ci_info "environment option: \$CI_RANLIB='$CI_RANLIB'"
     ci_info "environment option: \$CI_LD='$CI_LD'"
     ci_info "environment option: \$CI_LD_FLAGS='$CI_LD_FLAGS'"
     ci_info "environment option: \$CI_LIBS='$CI_LIBS'"
@@ -67,27 +69,41 @@
         ALL_CC_FLAGS="-fsanitize=$CI_SANITIZERS -O2 $ALL_CC_FLAGS"
         ALL_LD_FLAGS="-fsanitize=$CI_SANITIZERS $ALL_LD_FLAGS"
     }
-    # Initialize ALL_MAKE_ARGS as an array;
-    # expand CI_MAKE_FLAGS at the beginning and CI_MAKE_VARS at the end.
-    local -a ALL_MAKE_ARGS=()
-    ALL_MAKE_ARGS+=($CI_MAKE_FLAGS)
-    [[ $CI_CC ]] && ALL_MAKE_ARGS+=("CC=$CI_CC")
-    [[ $ALL_CC_FLAGS ]] && ALL_MAKE_ARGS+=("CFLAGS=$ALL_CC_FLAGS")
-    [[ $CI_CPP ]] && ALL_MAKE_ARGS+=("CPP=$CI_CPP")
-    [[ $CI_CPP_FLAGS ]] && ALL_MAKE_ARGS+=("CPPFLAGS=$CI_CPP_FLAGS")
-    [[ $CI_LD ]] && ALL_MAKE_ARGS+=("LD=$CI_LD")
-    [[ $ALL_LD_FLAGS ]] && ALL_MAKE_ARGS+=("LDFLAGS=$ALL_LD_FLAGS")
-    ALL_MAKE_ARGS+=("LIBS=$CI_LIBS")
-    ALL_MAKE_ARGS+=($CI_MAKE_VARS)
+    # Initialize ALL_MAKE_FLAGS and ALL_MAKE_VARS as arrays.
+    local -a ALL_MAKE_FLAGS=($CI_MAKE_FLAGS)
+    local -a ALL_MAKE_VARS=()
+    [[ $CI_CC ]] && ALL_MAKE_VARS+=(CC="$CI_CC")
+    [[ $ALL_CC_FLAGS ]] && ALL_MAKE_VARS+=(CFLAGS="$ALL_CC_FLAGS")
+    [[ $CI_CPP ]] && ALL_MAKE_VARS+=(CPP="$CI_CPP")
+    [[ $CI_CPP_FLAGS ]] && ALL_MAKE_VARS+=(CPPFLAGS="$CI_CPP_FLAGS")
+    [[ $CI_AR ]] && ALL_MAKE_VARS+=(
+        AR="${CI_AR:-ar}"
+        AR_RC="${CI_AR:-ar} rc"
+    )
+    [[ $CI_RANLIB ]] && ALL_MAKE_VARS+=(RANLIB="$CI_RANLIB")
+    [[ $CI_LD ]] && ALL_MAKE_VARS+=(LD="$CI_LD")
+    [[ $ALL_LD_FLAGS ]] && ALL_MAKE_VARS+=(LDFLAGS="$ALL_LD_FLAGS")
+    ALL_MAKE_VARS+=(LIBS="$CI_LIBS")
+    ALL_MAKE_VARS+=($CI_MAKE_VARS)
     # Build!
     ci_spawn cd "$CI_SRCDIR"
     local MY_MAKEFILE
     for MY_MAKEFILE in $CI_LEGACY_MAKEFILES
     do
         ci_info "using makefile: $MY_MAKEFILE"
-        ci_spawn "$CI_MAKE" "${ALL_MAKE_ARGS[@]}" -f $MY_MAKEFILE
-        [[ $CI_NO_TEST ]] || ci_spawn "$CI_MAKE" "${ALL_MAKE_ARGS[@]}" -f $MY_MAKEFILE test
-        [[ $CI_NO_CLEAN ]] || ci_spawn "$CI_MAKE" "${ALL_MAKE_ARGS[@]}" -f $MY_MAKEFILE clean
+        ci_spawn "$CI_MAKE" -f "$MY_MAKEFILE" \
+                            "${ALL_MAKE_FLAGS[@]}" \
+                            "${ALL_MAKE_VARS[@]}"
+        [[ $CI_NO_TEST ]] ||
+            ci_spawn "$CI_MAKE" -f "$MY_MAKEFILE" \
+                                "${ALL_MAKE_FLAGS[@]}" \
+                                "${ALL_MAKE_VARS[@]}" \
+                                test
+        [[ $CI_NO_CLEAN ]] ||
+            ci_spawn "$CI_MAKE" -f "$MY_MAKEFILE" \
+                                "${ALL_MAKE_FLAGS[@]}" \
+                                "${ALL_MAKE_VARS[@]}" \
+                                clean
     done
     ci_info "success!"
 }