make/toolchain.sh

changeset 87
a53fa82bbdcf
parent 72
b533da8e7411
--- a/make/toolchain.sh	Sat Feb 15 22:56:16 2025 +0100
+++ b/make/toolchain.sh	Sat Feb 15 23:21:29 2025 +0100
@@ -3,64 +3,74 @@
 # toolchain detection
 #
 
-C_COMPILERS="gcc clang suncc cc"
-CPP_COMPILERS="g++ clang++ sunCC CC"
+if isplatform "bsd" && notisplatform "openbsd"; then
+  C_COMPILERS="clang gcc cc"
+  CPP_COMPILERS="clang++ g++ CC"
+else
+  C_COMPILERS="gcc clang suncc cc"
+  CPP_COMPILERS="g++ clang++ sunCC CC"
+fi
+unset TOOLCHAIN
 unset TOOLCHAIN_NAME
 unset TOOLCHAIN_CC
 unset TOOLCHAIN_CXX
 
 check_c_compiler()
 {
-	cat > "$TEMP_DIR/test.c" << __EOF__
+  cat > "$TEMP_DIR/test.c" << __EOF__
 /* test file */
 #include <stdio.h>
 int main(int argc, char **argv) {
-#if defined(__clang__)
-	printf("clang\n");
+#if defined(_MSC_VER)
+  printf("msc\n");
+#elif defined(__clang__)
+  printf("clang gnuc\n");
 #elif defined(__GNUC__)
-	printf("gcc\n");
+  printf("gcc gnuc\n");
 #elif defined(__sun)
-	printf("suncc\n");
+  printf("suncc\n");
 #else
-	printf("unknown\n");
+  printf("unknown\n");
 #endif
-	return 0;
+  return 0;
 }
 __EOF__
-	rm -f "$TEMP_DIR/checkcc"
-	$1 -o "$TEMP_DIR/checkcc" $CFLAGS $LDFLAGS "$TEMP_DIR/test.c" 2> /dev/null
+  rm -f "$TEMP_DIR/checkcc"
+  $1 -o "$TEMP_DIR/checkcc" $CFLAGS $LDFLAGS "$TEMP_DIR/test.c" 2> /dev/null
 }
 
 check_cpp_compiler()
 {
-	cat > "$TEMP_DIR/test.cpp" << __EOF__
+  cat > "$TEMP_DIR/test.cpp" << __EOF__
 /* test file */
 #include <iostream>
 int main(int argc, char **argv) {
-#if defined(__clang__)
-	std::cout << "clang" << std::endl;
+#if defined(_MSC_VER)
+  std::cout << "msc" << std::endl;
+#elif defined(__clang__)
+  std::cout << "clang gnuc" << std::endl;
 #elif defined(__GNUC__)
-	std::cout << "gcc" << std::endl;
+  std::cout << "gcc gnuc" << std::endl;
 #elif defined(__sun)
-	std::cout << "suncc" << std::endl;
+  std::cout << "suncc" << std::endl;
 #else
-	std::cout << "cc" << std::endl;
+  std::cout << "cc" << std::endl;
 #endif
-	return 0;
+  return 0;
 }
 __EOF__
-	rm -f "$TEMP_DIR/checkcc"
-	$1 -o "$TEMP_DIR/checkcc" $CXXFLAGS $LDFLAGS "$TEMP_DIR/test.cpp" 2> /dev/null
+  rm -f "$TEMP_DIR/checkcc"
+  $1 -o "$TEMP_DIR/checkcc" $CXXFLAGS $LDFLAGS "$TEMP_DIR/test.cpp" 2> /dev/null
 }
 
 create_libtest_source()
 {
   # $1: filename
   # $2: optional include
-	cat > "$TEMP_DIR/$1" << __EOF__
+  cat > "$TEMP_DIR/$1" << __EOF__
 /* libtest file */
 int main(int argc, char **argv) {
-	return 0;
+  return 0;
 }
 __EOF__
   if [ -n "$2" ]; then
@@ -77,7 +87,7 @@
   fi
   create_libtest_source "test.c" "$2"
   rm -f "$TEMP_DIR/checklib"
-	$TOOLCHAIN_CC -o "$TEMP_DIR/checklib" $CFLAGS $LDFLAGS "-l$1" "$TEMP_DIR/test.c" 2> /dev/null
+  $TOOLCHAIN_CC -o "$TEMP_DIR/checklib" $CFLAGS $LDFLAGS "-l$1" "$TEMP_DIR/test.c" 2> /dev/null
 }
 
 check_cpp_lib()
@@ -87,20 +97,20 @@
   if [ -z "$TOOLCHAIN_CXX" ]; then
     return 1
   fi
-	create_libtest_source "test.cpp" "$2"
+  create_libtest_source "test.cpp" "$2"
   rm -f "$TEMP_DIR/checklib"
-	$TOOLCHAIN_CXX -o "$TEMP_DIR/checklib" $CXXFLAGS $LDFLAGS "-l$1" "$TEMP_DIR/test.cpp" 2> /dev/null
+  $TOOLCHAIN_CXX -o "$TEMP_DIR/checklib" $CXXFLAGS $LDFLAGS "-l$1" "$TEMP_DIR/test.cpp" 2> /dev/null
 }
 
 check_lib()
 {
   # $1: libname
   # $2: optional include
-	if [ -n "$TOOLCHAIN_CC" ]; then
-		check_c_lib "$1" "$2"
-	elif  [ -n "$TOOLCHAIN_CXX" ]; then
-	  check_cpp_lib "$1" "$2"
-	fi
+  if [ -n "$TOOLCHAIN_CC" ]; then
+    check_c_lib "$1" "$2"
+  elif  [ -n "$TOOLCHAIN_CXX" ]; then
+    check_cpp_lib "$1" "$2"
+  fi
 }
 
 detect_c_compiler()
@@ -112,7 +122,8 @@
   if [ -n "$CC" ]; then
     if check_c_compiler "$CC"; then
       TOOLCHAIN_CC=$CC
-      TOOLCHAIN_NAME=`"$TEMP_DIR/checkcc"`
+      TOOLCHAIN=`"$TEMP_DIR/checkcc"`
+      TOOLCHAIN_NAME=`echo "$TOOLCHAIN" | cut -f1 -d' ' -`
       echo "$CC"
       return 0
     else
@@ -124,7 +135,8 @@
     do
       if check_c_compiler "$COMP"; then
         TOOLCHAIN_CC=$COMP
-        TOOLCHAIN_NAME=`"$TEMP_DIR/checkcc"`
+        TOOLCHAIN=`"$TEMP_DIR/checkcc"`
+        TOOLCHAIN_NAME=`echo "$TOOLCHAIN" | cut -f1 -d' ' -`
         echo "$COMP"
         return 0
       fi
@@ -144,7 +156,8 @@
   if [ -n "$CXX" ]; then
     if check_cpp_compiler "$CXX"; then
       TOOLCHAIN_CXX=$CXX
-      TOOLCHAIN_NAME=`"$TEMP_DIR/checkcc"`
+      TOOLCHAIN=`"$TEMP_DIR/checkcc"`
+      TOOLCHAIN_NAME=`echo "$TOOLCHAIN" | cut -f1 -d' ' -`
       echo "$CXX"
       return 0
     else
@@ -156,7 +169,8 @@
     do
       if check_cpp_compiler "$COMP"; then
         TOOLCHAIN_CXX=$COMP
-        TOOLCHAIN_NAME=`"$TEMP_DIR/checkcc"`
+        TOOLCHAIN=`"$TEMP_DIR/checkcc"`
+        TOOLCHAIN_NAME=`echo "$TOOLCHAIN" | cut -f1 -d' ' -`
         echo "$COMP"
         return 0
       fi

mercurial