make/toolchain.sh

changeset 815
b0c4750cecd8
parent 753
24dc84788dee
     1.1 --- a/make/toolchain.sh	Wed Jan 17 21:01:50 2024 +0100
     1.2 +++ b/make/toolchain.sh	Sat Jan 20 16:02:04 2024 +0100
     1.3 @@ -3,64 +3,74 @@
     1.4  # toolchain detection
     1.5  #
     1.6  
     1.7 -C_COMPILERS="gcc clang suncc cc"
     1.8 -CPP_COMPILERS="g++ clang++ sunCC CC"
     1.9 +if isplatform "bsd" && notisplatform "openbsd"; then
    1.10 +  C_COMPILERS="clang gcc cc"
    1.11 +  CPP_COMPILERS="clang++ g++ CC"
    1.12 +else
    1.13 +  C_COMPILERS="gcc clang suncc cc"
    1.14 +  CPP_COMPILERS="g++ clang++ sunCC CC"
    1.15 +fi
    1.16 +unset TOOLCHAIN
    1.17  unset TOOLCHAIN_NAME
    1.18  unset TOOLCHAIN_CC
    1.19  unset TOOLCHAIN_CXX
    1.20  
    1.21  check_c_compiler()
    1.22  {
    1.23 -	cat > "$TEMP_DIR/test.c" << __EOF__
    1.24 +  cat > "$TEMP_DIR/test.c" << __EOF__
    1.25  /* test file */
    1.26  #include <stdio.h>
    1.27  int main(int argc, char **argv) {
    1.28 -#if defined(__clang__)
    1.29 -	printf("clang\n");
    1.30 +#if defined(_MSC_VER)
    1.31 +  printf("msc\n");
    1.32 +#elif defined(__clang__)
    1.33 +  printf("clang gnuc\n");
    1.34  #elif defined(__GNUC__)
    1.35 -	printf("gcc\n");
    1.36 +  printf("gcc gnuc\n");
    1.37  #elif defined(__sun)
    1.38 -	printf("suncc\n");
    1.39 +  printf("suncc\n");
    1.40  #else
    1.41 -	printf("unknown\n");
    1.42 +  printf("unknown\n");
    1.43  #endif
    1.44 -	return 0;
    1.45 +  return 0;
    1.46  }
    1.47  __EOF__
    1.48 -	rm -f "$TEMP_DIR/checkcc"
    1.49 -	$1 -o "$TEMP_DIR/checkcc" $CFLAGS $LDFLAGS "$TEMP_DIR/test.c" 2> /dev/null
    1.50 +  rm -f "$TEMP_DIR/checkcc"
    1.51 +  $1 -o "$TEMP_DIR/checkcc" $CFLAGS $LDFLAGS "$TEMP_DIR/test.c" 2> /dev/null
    1.52  }
    1.53  
    1.54  check_cpp_compiler()
    1.55  {
    1.56 -	cat > "$TEMP_DIR/test.cpp" << __EOF__
    1.57 +  cat > "$TEMP_DIR/test.cpp" << __EOF__
    1.58  /* test file */
    1.59  #include <iostream>
    1.60  int main(int argc, char **argv) {
    1.61 -#if defined(__clang__)
    1.62 -	std::cout << "clang" << std::endl;
    1.63 +#if defined(_MSC_VER)
    1.64 +  std::cout << "msc" << std::endl;
    1.65 +#elif defined(__clang__)
    1.66 +  std::cout << "clang gnuc" << std::endl;
    1.67  #elif defined(__GNUC__)
    1.68 -	std::cout << "gcc" << std::endl;
    1.69 +  std::cout << "gcc gnuc" << std::endl;
    1.70  #elif defined(__sun)
    1.71 -	std::cout << "suncc" << std::endl;
    1.72 +  std::cout << "suncc" << std::endl;
    1.73  #else
    1.74 -	std::cout << "cc" << std::endl;
    1.75 +  std::cout << "cc" << std::endl;
    1.76  #endif
    1.77 -	return 0;
    1.78 +  return 0;
    1.79  }
    1.80  __EOF__
    1.81 -	rm -f "$TEMP_DIR/checkcc"
    1.82 -	$1 -o "$TEMP_DIR/checkcc" $CXXFLAGS $LDFLAGS "$TEMP_DIR/test.cpp" 2> /dev/null
    1.83 +  rm -f "$TEMP_DIR/checkcc"
    1.84 +  $1 -o "$TEMP_DIR/checkcc" $CXXFLAGS $LDFLAGS "$TEMP_DIR/test.cpp" 2> /dev/null
    1.85  }
    1.86  
    1.87  create_libtest_source()
    1.88  {
    1.89    # $1: filename
    1.90    # $2: optional include
    1.91 -	cat > "$TEMP_DIR/$1" << __EOF__
    1.92 +  cat > "$TEMP_DIR/$1" << __EOF__
    1.93  /* libtest file */
    1.94  int main(int argc, char **argv) {
    1.95 -	return 0;
    1.96 +  return 0;
    1.97  }
    1.98  __EOF__
    1.99    if [ -n "$2" ]; then
   1.100 @@ -77,7 +87,7 @@
   1.101    fi
   1.102    create_libtest_source "test.c" "$2"
   1.103    rm -f "$TEMP_DIR/checklib"
   1.104 -	$TOOLCHAIN_CC -o "$TEMP_DIR/checklib" $CFLAGS $LDFLAGS "-l$1" "$TEMP_DIR/test.c" 2> /dev/null
   1.105 +  $TOOLCHAIN_CC -o "$TEMP_DIR/checklib" $CFLAGS $LDFLAGS "-l$1" "$TEMP_DIR/test.c" 2> /dev/null
   1.106  }
   1.107  
   1.108  check_cpp_lib()
   1.109 @@ -87,20 +97,20 @@
   1.110    if [ -z "$TOOLCHAIN_CXX" ]; then
   1.111      return 1
   1.112    fi
   1.113 -	create_libtest_source "test.cpp" "$2"
   1.114 +  create_libtest_source "test.cpp" "$2"
   1.115    rm -f "$TEMP_DIR/checklib"
   1.116 -	$TOOLCHAIN_CXX -o "$TEMP_DIR/checklib" $CXXFLAGS $LDFLAGS "-l$1" "$TEMP_DIR/test.cpp" 2> /dev/null
   1.117 +  $TOOLCHAIN_CXX -o "$TEMP_DIR/checklib" $CXXFLAGS $LDFLAGS "-l$1" "$TEMP_DIR/test.cpp" 2> /dev/null
   1.118  }
   1.119  
   1.120  check_lib()
   1.121  {
   1.122    # $1: libname
   1.123    # $2: optional include
   1.124 -	if [ -n "$TOOLCHAIN_CC" ]; then
   1.125 -		check_c_lib "$1" "$2"
   1.126 -	elif  [ -n "$TOOLCHAIN_CXX" ]; then
   1.127 -	  check_cpp_lib "$1" "$2"
   1.128 -	fi
   1.129 +  if [ -n "$TOOLCHAIN_CC" ]; then
   1.130 +    check_c_lib "$1" "$2"
   1.131 +  elif  [ -n "$TOOLCHAIN_CXX" ]; then
   1.132 +    check_cpp_lib "$1" "$2"
   1.133 +  fi
   1.134  }
   1.135  
   1.136  detect_c_compiler()
   1.137 @@ -112,7 +122,8 @@
   1.138    if [ -n "$CC" ]; then
   1.139      if check_c_compiler "$CC"; then
   1.140        TOOLCHAIN_CC=$CC
   1.141 -      TOOLCHAIN_NAME=`"$TEMP_DIR/checkcc"`
   1.142 +      TOOLCHAIN=`"$TEMP_DIR/checkcc"`
   1.143 +      TOOLCHAIN_NAME=`echo "$TOOLCHAIN" | cut -f1 -d' ' -`
   1.144        echo "$CC"
   1.145        return 0
   1.146      else
   1.147 @@ -124,7 +135,8 @@
   1.148      do
   1.149        if check_c_compiler "$COMP"; then
   1.150          TOOLCHAIN_CC=$COMP
   1.151 -        TOOLCHAIN_NAME=`"$TEMP_DIR/checkcc"`
   1.152 +        TOOLCHAIN=`"$TEMP_DIR/checkcc"`
   1.153 +        TOOLCHAIN_NAME=`echo "$TOOLCHAIN" | cut -f1 -d' ' -`
   1.154          echo "$COMP"
   1.155          return 0
   1.156        fi
   1.157 @@ -144,7 +156,8 @@
   1.158    if [ -n "$CXX" ]; then
   1.159      if check_cpp_compiler "$CXX"; then
   1.160        TOOLCHAIN_CXX=$CXX
   1.161 -      TOOLCHAIN_NAME=`"$TEMP_DIR/checkcc"`
   1.162 +      TOOLCHAIN=`"$TEMP_DIR/checkcc"`
   1.163 +      TOOLCHAIN_NAME=`echo "$TOOLCHAIN" | cut -f1 -d' ' -`
   1.164        echo "$CXX"
   1.165        return 0
   1.166      else
   1.167 @@ -156,7 +169,8 @@
   1.168      do
   1.169        if check_cpp_compiler "$COMP"; then
   1.170          TOOLCHAIN_CXX=$COMP
   1.171 -        TOOLCHAIN_NAME=`"$TEMP_DIR/checkcc"`
   1.172 +        TOOLCHAIN=`"$TEMP_DIR/checkcc"`
   1.173 +        TOOLCHAIN_NAME=`echo "$TOOLCHAIN" | cut -f1 -d' ' -`
   1.174          echo "$COMP"
   1.175          return 0
   1.176        fi

mercurial