src/main/resources/make/toolchain.sh

changeset 100
bc1ee09417aa
parent 90
a13789dd1cfb
child 101
7f40964bf1e9
equal deleted inserted replaced
99:bc40111b8acb 100:bc1ee09417aa
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

mercurial