tools/corrosion/.github/scripts/determine_compiler.sh
branchtransitional_engine
changeset 16021 6a3dc15b78b9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/corrosion/.github/scripts/determine_compiler.sh	Wed Aug 28 15:31:51 2024 +0200
@@ -0,0 +1,59 @@
+#!/usr/bin/env bash
+
+compiler_kind="$1"
+runner_os="$2"
+target_abi="$3"
+target_system_name="$4"
+target_arch="$5"
+
+set -e
+
+if [[ -z "$GITHUB_OUTPUT" ]]; then
+  echo "Error: This script should only be run in github actions environment"
+  exit 1
+fi
+if [[ -z "${runner_os}" || -z "${target_abi}" || -z  "${target_arch}" ]]; then
+  echo "Error: Not all required parameters where set"
+  exit 1
+fi
+if [[ -z "${compiler_kind}" || "${compiler_kind}" == "default" ]]; then
+  echo "compiler option was not set. Determining default compiler."
+  if [[ "${runner_os}" == "Windows" ]]; then
+    if [[ "${target_abi}" == "msvc" ]]; then
+      compiler_kind=msvc
+    elif [[ "${target_abi}" == "gnu" ]]; then
+      compiler_kind=gcc
+    else
+      echo "Unknown abi for Windows: ${target_abi}"
+      exit 1
+    fi
+  elif [[ "${runner_os}" == "macOS" ]]; then
+    compiler_kind="clang"
+  elif [[ "${runner_os}" == "Linux" ]]; then
+    compiler_kind="gcc"
+  else
+    echo "Unknown Runner OS: ${runner_os}"
+    exit 1
+  fi
+fi
+echo "Compiler Family: '${compiler_kind}'"
+
+if [[ "${compiler_kind}" == "clang" ]]; then
+  c_compiler="clang"
+  cxx_compiler="clang++"
+elif [[ "${compiler_kind}" == "msvc" ]]; then
+  c_compiler="cl"
+  cxx_compiler="cl"
+elif [[ "${compiler_kind}" == "gcc" ]]; then
+  if [[ -z "${target_system_name}" ]]; then
+    c_compiler="gcc"
+    cxx_compiler="g++"
+  else
+    c_compiler="${target_arch}-linux-gnu-gcc"
+    cxx_compiler="${target_arch}-linux-gnu-g++"
+  fi
+fi
+echo "Chose C compiler: '${c_compiler}'"
+echo "Chose C++ compiler: '${cxx_compiler}'"
+echo "c_compiler=-DCMAKE_C_COMPILER=${c_compiler}" >> $GITHUB_OUTPUT
+echo "cxx_compiler=-DCMAKE_CXX_COMPILER=${cxx_compiler}" >> $GITHUB_OUTPUT