9 unset TOOLCHAIN_CC |
9 unset TOOLCHAIN_CC |
10 unset TOOLCHAIN_CXX |
10 unset TOOLCHAIN_CXX |
11 |
11 |
12 check_c_compiler() |
12 check_c_compiler() |
13 { |
13 { |
14 cat > "$TEMP_DIR/test.c" << __EOF__ |
14 cat > "$TEMP_DIR/test.c" << __EOF__ |
15 /* test file */ |
15 /* test file */ |
16 #include <stdio.h> |
16 #include <stdio.h> |
17 int main(int argc, char **argv) { |
17 int main(int argc, char **argv) { |
18 #if defined(__clang__) |
18 #if defined(__clang__) |
19 printf("clang\n"); |
19 printf("clang\n"); |
20 #elif defined(__GNUC__) |
20 #elif defined(__GNUC__) |
21 printf("gcc\n"); |
21 printf("gcc\n"); |
22 #elif defined(__sun) |
22 #elif defined(__sun) |
23 printf("suncc\n"); |
23 printf("suncc\n"); |
24 #else |
24 #else |
25 printf("unknown\n"); |
25 printf("unknown\n"); |
26 #endif |
26 #endif |
27 return 0; |
27 return 0; |
28 } |
28 } |
29 __EOF__ |
29 __EOF__ |
30 rm -f "$TEMP_DIR/checkcc" |
30 rm -f "$TEMP_DIR/checkcc" |
31 $1 -o "$TEMP_DIR/checkcc" $CFLAGS $LDFLAGS "$TEMP_DIR/test.c" 2> /dev/null |
31 $1 -o "$TEMP_DIR/checkcc" $CFLAGS $LDFLAGS "$TEMP_DIR/test.c" 2> /dev/null |
32 } |
32 } |
33 |
33 |
34 check_cpp_compiler() |
34 check_cpp_compiler() |
35 { |
35 { |
36 cat > "$TEMP_DIR/test.cpp" << __EOF__ |
36 cat > "$TEMP_DIR/test.cpp" << __EOF__ |
37 /* test file */ |
37 /* test file */ |
38 #include <iostream> |
38 #include <iostream> |
39 int main(int argc, char **argv) { |
39 int main(int argc, char **argv) { |
40 #if defined(__clang__) |
40 #if defined(__clang__) |
41 std::cout << "clang" << std::endl; |
41 std::cout << "clang" << std::endl; |
42 #elif defined(__GNUC__) |
42 #elif defined(__GNUC__) |
43 std::cout << "gcc" << std::endl; |
43 std::cout << "gcc" << std::endl; |
44 #elif defined(__sun) |
44 #elif defined(__sun) |
45 std::cout << "suncc" << std::endl; |
45 std::cout << "suncc" << std::endl; |
46 #else |
46 #else |
47 std::cout << "cc" << std::endl; |
47 std::cout << "cc" << std::endl; |
48 #endif |
48 #endif |
49 return 0; |
49 return 0; |
50 } |
50 } |
51 __EOF__ |
51 __EOF__ |
52 rm -f "$TEMP_DIR/checkcc" |
52 rm -f "$TEMP_DIR/checkcc" |
53 $1 -o "$TEMP_DIR/checkcc" $CXXFLAGS $LDFLAGS "$TEMP_DIR/test.cpp" 2> /dev/null |
53 $1 -o "$TEMP_DIR/checkcc" $CXXFLAGS $LDFLAGS "$TEMP_DIR/test.cpp" 2> /dev/null |
54 } |
54 } |
55 |
55 |
56 create_libtest_source() |
56 create_libtest_source() |
57 { |
57 { |
58 # $1: filename |
58 # $1: filename |
59 # $2: optional include |
59 # $2: optional include |
60 cat > "$TEMP_DIR/$1" << __EOF__ |
60 cat > "$TEMP_DIR/$1" << __EOF__ |
61 /* libtest file */ |
61 /* libtest file */ |
62 int main(int argc, char **argv) { |
62 int main(int argc, char **argv) { |
63 return 0; |
63 return 0; |
64 } |
64 } |
65 __EOF__ |
65 __EOF__ |
66 if [ -n "$2" ]; then |
66 if [ -n "$2" ]; then |
67 echo "#include <$2>" >> "$TEMP_DIR/$1" |
67 echo "#include <$2>" >> "$TEMP_DIR/$1" |
68 fi |
68 fi |
75 if [ -z "$TOOLCHAIN_CC" ]; then |
75 if [ -z "$TOOLCHAIN_CC" ]; then |
76 return 1 |
76 return 1 |
77 fi |
77 fi |
78 create_libtest_source "test.c" "$2" |
78 create_libtest_source "test.c" "$2" |
79 rm -f "$TEMP_DIR/checklib" |
79 rm -f "$TEMP_DIR/checklib" |
80 $TOOLCHAIN_CC -o "$TEMP_DIR/checklib" $CFLAGS $LDFLAGS "-l$1" "$TEMP_DIR/test.c" 2> /dev/null |
80 $TOOLCHAIN_CC -o "$TEMP_DIR/checklib" $CFLAGS $LDFLAGS "-l$1" "$TEMP_DIR/test.c" 2> /dev/null |
81 } |
81 } |
82 |
82 |
83 check_cpp_lib() |
83 check_cpp_lib() |
84 { |
84 { |
85 # $1: libname |
85 # $1: libname |
86 # $2: optional include |
86 # $2: optional include |
87 if [ -z "$TOOLCHAIN_CXX" ]; then |
87 if [ -z "$TOOLCHAIN_CXX" ]; then |
88 return 1 |
88 return 1 |
89 fi |
89 fi |
90 create_libtest_source "test.cpp" "$2" |
90 create_libtest_source "test.cpp" "$2" |
91 rm -f "$TEMP_DIR/checklib" |
91 rm -f "$TEMP_DIR/checklib" |
92 $TOOLCHAIN_CXX -o "$TEMP_DIR/checklib" $CXXFLAGS $LDFLAGS "-l$1" "$TEMP_DIR/test.cpp" 2> /dev/null |
92 $TOOLCHAIN_CXX -o "$TEMP_DIR/checklib" $CXXFLAGS $LDFLAGS "-l$1" "$TEMP_DIR/test.cpp" 2> /dev/null |
93 } |
93 } |
94 |
94 |
95 check_lib() |
95 check_lib() |
96 { |
96 { |
97 # $1: libname |
97 # $1: libname |
98 # $2: optional include |
98 # $2: optional include |
99 if [ -n "$TOOLCHAIN_CC" ]; then |
99 if [ -n "$TOOLCHAIN_CC" ]; then |
100 check_c_lib "$1" "$2" |
100 check_c_lib "$1" "$2" |
101 elif [ -n "$TOOLCHAIN_CXX" ]; then |
101 elif [ -n "$TOOLCHAIN_CXX" ]; then |
102 check_cpp_lib "$1" "$2" |
102 check_cpp_lib "$1" "$2" |
103 fi |
103 fi |
104 } |
104 } |
105 |
105 |
106 detect_c_compiler() |
106 detect_c_compiler() |
107 { |
107 { |
108 if [ -n "$TOOLCHAIN_CC" ]; then |
108 if [ -n "$TOOLCHAIN_CC" ]; then |