make/toolchain.sh

changeset 1492
cc83ce484bf7
parent 1470
c1a144db699f
equal deleted inserted replaced
1491:b529528b8f0a 1492:cc83ce484bf7
1 #!/bin/sh 1 #!/bin/sh
2 # 2 #
3 # toolchain detection 3 # toolchain detection
4 # 4 #
5 5
6 TAIL=tail 6 TAIL="tail"
7 if isplatform "bsd" && notisplatform "openbsd"; then 7 if isplatform "bsd" && notisplatform "openbsd"; then
8 C_COMPILERS="clang gcc cc" 8 C_COMPILERS="clang gcc cc"
9 CPP_COMPILERS="clang++ g++ CC" 9 CPP_COMPILERS="clang++ g++ CC"
10 elif isplatform "solaris"; then 10 elif isplatform "solaris"; then
11 C_COMPILERS="cc suncc gcc clang" 11 C_COMPILERS="cc suncc gcc clang"
22 unset TOOLCHAIN_CC 22 unset TOOLCHAIN_CC
23 unset TOOLCHAIN_CXX 23 unset TOOLCHAIN_CXX
24 24
25 check_c_compiler() 25 check_c_compiler()
26 { 26 {
27 command -v $1 2>&1 >/dev/null 27 if ! command -v "$1" >/dev/null 2>&1 ; then
28 if [ $? -ne 0 ]; then
29 return 1 28 return 1
30 fi 29 fi
31 cat > "$TEMP_DIR/test.c" << __EOF__ 30 cat > "$TEMP_DIR/test.c" << __EOF__
32 /* test file */ 31 /* test file */
33 #include <stdio.h> 32 #include <stdio.h>
34 int main(int argc, char **argv) { 33 int main(void) {
35 #if defined(_MSC_VER) 34 #if defined(_MSC_VER)
36 printf("toolchain:msc\n"); 35 printf("toolchain:msc\n");
37 #elif defined(__clang__) 36 #elif defined(__clang__)
38 printf("toolchain:clang gnuc\n"); 37 printf("toolchain:clang gnuc\n");
39 #elif defined(__GNUC__) 38 #elif defined(__GNUC__)
43 #else 42 #else
44 printf("toolchain:unknown\n"); 43 printf("toolchain:unknown\n");
45 #endif 44 #endif
46 printf("wsize:%d\n", (int)sizeof(void*)*8); 45 printf("wsize:%d\n", (int)sizeof(void*)*8);
47 #ifdef __STDC_VERSION__ 46 #ifdef __STDC_VERSION__
48 printf("stdcversion:%d\n", __STDC_VERSION__); 47 printf("stdcversion:%ld\n", (long int)__STDC_VERSION__);
49 #endif 48 #endif
50 return 0; 49 return 0;
51 } 50 }
52 __EOF__ 51 __EOF__
53 rm -f "$TEMP_DIR/checkcc" 52 rm -f "$TEMP_DIR/checkcc"
54 $1 -o "$TEMP_DIR/checkcc" $CFLAGS $LDFLAGS "$TEMP_DIR/test.c" 2> /dev/null 53 $1 -o "$TEMP_DIR/checkcc" $CFLAGS $LDFLAGS "$TEMP_DIR/test.c" 2> /dev/null
55 } 54 }
56 55
57 check_cpp_compiler() 56 check_cpp_compiler()
58 { 57 {
59 command -v $1 2>&1 >/dev/null 58 if ! command -v "$1" >/dev/null 2>&1 ; then
60 if [ $? -ne 0 ]; then
61 return 1 59 return 1
62 fi 60 fi
63 cat > "$TEMP_DIR/test.cpp" << __EOF__ 61 cat > "$TEMP_DIR/test.cpp" << __EOF__
64 /* test file */ 62 /* test file */
65 #include <iostream> 63 #include <iostream>
66 int main(int argc, char **argv) { 64 int main(void) {
67 #if defined(_MSC_VER) 65 #if defined(_MSC_VER)
68 std::cout << "toolchain:msc" << std::endl; 66 std::cout << "toolchain:msc" << std::endl;
69 #elif defined(__clang__) 67 #elif defined(__clang__)
70 std::cout << "toolchain:clang gnuc" << std::endl; 68 std::cout << "toolchain:clang gnuc" << std::endl;
71 #elif defined(__GNUC__) 69 #elif defined(__GNUC__)
79 return 0; 77 return 0;
80 } 78 }
81 __EOF__ 79 __EOF__
82 rm -f "$TEMP_DIR/checkcc" 80 rm -f "$TEMP_DIR/checkcc"
83 $1 -o "$TEMP_DIR/checkcc" $CXXFLAGS $LDFLAGS "$TEMP_DIR/test.cpp" 2> /dev/null 81 $1 -o "$TEMP_DIR/checkcc" $CXXFLAGS $LDFLAGS "$TEMP_DIR/test.cpp" 2> /dev/null
84 }
85
86 create_libtest_source()
87 {
88 # $1: filename
89 # $2: optional include
90 cat > "$TEMP_DIR/$1" << __EOF__
91 /* libtest file */
92 int main(int argc, char **argv) {
93 return 0;
94 }
95 __EOF__
96 if [ -n "$2" ]; then
97 echo "#include <$2>" >> "$TEMP_DIR/$1"
98 fi
99 } 82 }
100 83
101 parse_toolchain_properties() 84 parse_toolchain_properties()
102 { 85 {
103 info_file="$1" 86 info_file="$1"

mercurial