--- /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