make/toolchain.sh

changeset 156
62f1a55535e7
child 158
4bde241c49b1
equal deleted inserted replaced
155:b907d8059290 156:62f1a55535e7
1 #!/bin/sh
2 #
3 # toolchain detection
4 #
5
6 COMPILERS="cc gcc clang suncc"
7 unset CC_ARG_CHECKED
8 unset TOOLCHAIN_DETECTION_ERROR
9 unset TOOLCHAIN_NAME
10
11 check_compiler()
12 {
13 cat > $TEMP_DIR/test.c << __EOF__
14 /* test file */
15 #include <stdio.h>
16 int main(int argc, char **argv) {
17 #if defined(__GNUC__)
18 printf("gcc\n");
19 #elif defined(__clang__)
20 printf("clang\n");
21 #elif defined(__sun)
22 printf("suncc\n");
23 #else
24 printf("unknown\n");
25 #endif
26 return 0;
27 }
28 __EOF__
29 rm -f $TEMP_DIR/checkcc
30 $1 -o $TEMP_DIR/checkcc $CFLAGS $LDFLAGS $TEMP_DIR/test.c
31
32 if [ $? -ne 0 ]; then
33 return 1
34 fi
35 return 0
36 }
37
38 printf "detect toolchain... "
39
40 for COMP in $COMPILERS
41 do
42 check_compiler $COMP
43 if [ $? -ne 0 ]; then
44 if [ $COMP = $CC ]; then
45 echo "$CC is not a working C Compiler"
46 TOOLCHAIN_DETECTION_ERROR="error"
47 break
48 fi
49 else
50 TOOLCHAIN_NAME=`$TEMP_DIR/checkcc`
51 TOOLCHAIN_CC=$COMP
52 echo $TOOLCHAIN_NAME
53 break
54 fi
55 done
56
57 TOOLCHAIN_LD=$TOOLCHAIN_CC
58
59 if [ -z TOOLCHAIN_NAME ]; then
60 TOOLCHAIN_DETECTION_ERROR="error"
61 else
62 echo "CC = ${TOOLCHAIN_CC}" >> $TEMP_DIR/config.mk
63 echo "LD = ${TOOLCHAIN_LD}" >> $TEMP_DIR/config.mk
64
65 if [ -e "make/${TOOLCHAIN_NAME}.mk" ]; then
66 echo "include \$(BUILD_ROOT)make/${TOOLCHAIN_NAME}.mk" >> $TEMP_DIR/config.mk
67 fi
68 fi

mercurial