util: Add a README file for the m5 utility.
[gem5.git] / util / compiler-tests.sh
index c586c273e226f341472cf706f89a82938000f3df..f8d4f5d0dc36a5da14c5531ff694e64f39f73f92 100755 (executable)
@@ -8,7 +8,6 @@
 dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
 gem5_root="${dir}/.."
 build_dir="${gem5_root}/build"
-num_cores=`nproc`
 
 # All Docker images in the gem5 testing GCR which we want to compile with.
 images=("gcc-version-10"
@@ -17,7 +16,6 @@ images=("gcc-version-10"
         "gcc-version-7"
         "gcc-version-6"
         "gcc-version-5"
-        "gcc-version-4.8"
         "clang-version-9"
         "clang-version-8"
         "clang-version-7"
@@ -61,7 +59,7 @@ builds_per_compiler=1
 base_url="gcr.io/gem5-test"
 
 # Arguments passed into scons on every build target test.
-build_args="-j ${num_cores}"
+build_args="$@"
 
 # Testing directory variables
 mkdir -p "${build_dir}" # Create the build directory if it doesn't exist.
@@ -76,6 +74,8 @@ mkdir "${test_dir}"
 touch "${exits}"
 echo "compiler,build_target,exit_code" >> "${exits}"
 
+exit_code=0 # We return a non-zero exit code if any of the compilations fail.
+
 for compiler in ${images[@]}; do
     echo "Starting build tests with '${compiler}'..."
     # Generate a randomized list of build targets
@@ -102,8 +102,8 @@ for compiler in ${images[@]}; do
         for build_opt in ${opts[@]}; do
             build="${builds[$build_index]}"
             build_out="build/$build/gem5$build_opt"
-            build_stdout="${test_dir}/${compiler}/${build}${build_opt}.stdout"
-            build_stderr="${test_dir}/${compiler}/${build}${build_opt}.stderr"
+            build_stdout="${test_dir}/${compiler}/${build}${build_opt}.stdout.txt"
+            build_stderr="${test_dir}/${compiler}/${build}${build_opt}.stderr.txt"
 
             # Clean the build
             rm -rf "${build_dir}"
@@ -116,13 +116,15 @@ for compiler in ${images[@]}; do
             # Build with container
             {
                 docker run --rm -v "${gem5_root}":"/gem5" -u $UID:$GID \
-                    -w /gem5 $repo_name scons "${build_out}" "${build_args}"
+                    -w /gem5 $repo_name /usr/bin/env python3 /usr/bin/scons \
+                    "${build_out}" "${build_args}"
             }>"${build_stdout}" 2>"${build_stderr}"
             result=$?
 
             echo "${compiler},${build}/gem5${build_opt},${result}" >>"${exits}"
 
             if [ ${result} -ne 0 ]; then
+                exit_code=1
                 echo "  ! Failed with exit code ${result}."
             else
                 echo "    Done."
@@ -132,3 +134,5 @@ for compiler in ${images[@]}; do
 done
 
 mv "${test_dir}" "${test_dir_final}"
+
+exit ${exit_code}