25 #endif |
26 #endif |
26 return 0; |
27 return 0; |
27 } |
28 } |
28 __EOF__ |
29 __EOF__ |
29 rm -f $TEMP_DIR/checkcc |
30 rm -f $TEMP_DIR/checkcc |
30 $1 -o $TEMP_DIR/checkcc $CFLAGS $LDFLAGS $TEMP_DIR/test.c |
31 $1 -o $TEMP_DIR/checkcc $CFLAGS $LDFLAGS $TEMP_DIR/test.c 2> /dev/null |
|
32 |
|
33 if [ $? -ne 0 ]; then |
|
34 return 1 |
|
35 fi |
|
36 return 0 |
|
37 } |
|
38 |
|
39 check_cpp_compiler() |
|
40 { |
|
41 cat > $TEMP_DIR/test.cpp << __EOF__ |
|
42 /* test file */ |
|
43 #include <iostream> |
|
44 int main(int argc, char **argv) { |
|
45 #if defined(__GNUC__) |
|
46 std::cout << "gcc" << std::endl; |
|
47 #elif defined(__clang__) |
|
48 std::cout << "clang" << std::endl; |
|
49 #elif defined(__sun) |
|
50 std::cout << "suncc" << std::endl; |
|
51 #else |
|
52 std::cout << "unknown" << std::endl; |
|
53 #endif |
|
54 return 0; |
|
55 } |
|
56 __EOF__ |
|
57 rm -f $TEMP_DIR/checkcc |
|
58 $1 -o $TEMP_DIR/checkcc $CXXFLAGS $LDFLAGS $TEMP_DIR/test.cpp 2> /dev/null |
31 |
59 |
32 if [ $? -ne 0 ]; then |
60 if [ $? -ne 0 ]; then |
33 return 1 |
61 return 1 |
34 fi |
62 fi |
35 return 0 |
63 return 0 |
36 } |
64 } |
37 |
65 |
38 printf "detect toolchain... " |
66 printf "detect toolchain... " |
39 |
67 |
40 for COMP in $COMPILERS |
68 for COMP in $C_COMPILERS |
41 do |
69 do |
42 check_compiler $COMP |
70 check_c_compiler $COMP |
43 if [ $? -ne 0 ]; then |
71 if [ $? -ne 0 ]; then |
44 if [ $COMP = $CC ]; then |
72 if [[ ! -z $CC ]]; then |
45 echo "$CC is not a working C Compiler" |
73 if [ $COMP = $CC ]; then |
46 TOOLCHAIN_DETECTION_ERROR="error" |
74 echo "$CC is not a working C Compiler" |
47 break |
75 TOOLCHAIN_DETECTION_ERROR="error" |
48 fi |
76 break |
|
77 fi |
|
78 fi |
49 else |
79 else |
50 TOOLCHAIN_NAME=`$TEMP_DIR/checkcc` |
80 TOOLCHAIN_NAME=`$TEMP_DIR/checkcc` |
|
81 if [ $COMP = "cc" ]; then |
|
82 # we have found a working compiler, but in case |
|
83 # the compiler is gcc or clang, we try to use |
|
84 # these commands and not 'cc' |
|
85 TOOLCHAIN_NAME=`$TEMP_DIR/checkcc` |
|
86 if [ $TOOLCHAIN_NAME = "gcc" ]; then |
|
87 check_c_compiler "gcc" |
|
88 if [ $? -eq 0 ]; then |
|
89 COMP=gcc |
|
90 fi |
|
91 fi |
|
92 if [ $TOOLCHAIN_NAME = "clang" ]; then |
|
93 check_c_compiler "clang" |
|
94 if [ $? -eq 0 ]; then |
|
95 COMP=clang |
|
96 fi |
|
97 fi |
|
98 fi |
|
99 |
|
100 TOOLCHAIN_NAME=`$TEMP_DIR/checkcc` |
51 TOOLCHAIN_CC=$COMP |
101 TOOLCHAIN_CC=$COMP |
52 echo $TOOLCHAIN_NAME |
102 echo $TOOLCHAIN_NAME |
53 break |
103 break |
54 fi |
104 fi |
55 done |
105 done |
|
106 if [ -z $TOOLCHAIN_CC ]; then |
|
107 echo "not found" |
|
108 fi |
|
109 |
|
110 printf "detect C++ compiler... " |
|
111 |
|
112 for COMP in $CPP_COMPILERS |
|
113 do |
|
114 check_cpp_compiler $COMP |
|
115 if [ $? -ne 0 ]; then |
|
116 if [[ ! -z $CXX ]]; then |
|
117 if [ $COMP = $CXX ]; then |
|
118 echo "$CC is not a working C++ Compiler" |
|
119 TOOLCHAIN_DETECTION_ERROR="error" |
|
120 break |
|
121 fi |
|
122 fi |
|
123 else |
|
124 if [ $COMP = "CC" ]; then |
|
125 # we have found a working compiler, but in case |
|
126 # the compiler is gcc or clang, we try to use |
|
127 # these commands and not 'cc' |
|
128 TOOLCHAIN_NAME=`$TEMP_DIR/checkcc` |
|
129 if [ $TOOLCHAIN_NAME = "gcc" ]; then |
|
130 check_c_compiler "gcc" |
|
131 if [ $? -eq 0 ]; then |
|
132 COMP=gcc |
|
133 fi |
|
134 fi |
|
135 if [ $TOOLCHAIN_NAME = "clang" ]; then |
|
136 check_c_compiler "clang" |
|
137 if [ $? -eq 0 ]; then |
|
138 COMP=clang |
|
139 fi |
|
140 fi |
|
141 fi |
|
142 |
|
143 TOOLCHAIN_NAME=`$TEMP_DIR/checkcc` |
|
144 TOOLCHAIN_CXX=$COMP |
|
145 echo $TOOLCHAIN_NAME |
|
146 break |
|
147 fi |
|
148 done |
|
149 if [ -z $TOOLCHAIN_CXX ]; then |
|
150 echo "not found" |
|
151 fi |
56 |
152 |
57 TOOLCHAIN_LD=$TOOLCHAIN_CC |
153 TOOLCHAIN_LD=$TOOLCHAIN_CC |
58 |
154 |
59 if [ -z TOOLCHAIN_NAME ]; then |
155 if [ -z TOOLCHAIN_NAME ]; then |
60 TOOLCHAIN_DETECTION_ERROR="error" |
156 TOOLCHAIN_DETECTION_ERROR="error" |
61 else |
157 else |
62 cat >> $TEMP_DIR/config.mk << __EOF__ |
158 cat >> $TEMP_DIR/config.mk << __EOF__ |
63 # toolchain |
159 # toolchain |
64 __EOF__ |
160 __EOF__ |
65 echo "CC = ${TOOLCHAIN_CC}" >> $TEMP_DIR/config.mk |
161 echo "CC = ${TOOLCHAIN_CC}" >> $TEMP_DIR/config.mk |
|
162 if [[ ! -z $TOOLCHAIN_CXX ]]; then |
|
163 echo "CXX = ${TOOLCHAIN_CXX}" >> $TEMP_DIR/config.mk |
|
164 fi |
66 echo "LD = ${TOOLCHAIN_LD}" >> $TEMP_DIR/config.mk |
165 echo "LD = ${TOOLCHAIN_LD}" >> $TEMP_DIR/config.mk |
67 |
166 |
68 if [ -e "make/${TOOLCHAIN_NAME}.mk" ]; then |
167 if [ -e "make/${TOOLCHAIN_NAME}.mk" ]; then |
69 echo "include \$(BUILD_ROOT)make/${TOOLCHAIN_NAME}.mk" >> $TEMP_DIR/config.mk |
168 echo "include \$(BUILD_ROOT)/make/${TOOLCHAIN_NAME}.mk" >> $TEMP_DIR/config.mk |
70 fi |
169 fi |
71 fi |
170 fi |