make/toolchain.sh

Mon, 04 Feb 2019 17:49:50 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Mon, 04 Feb 2019 17:49:50 +0100
changeset 157
0b33b9396851
parent 156
62f1a55535e7
child 158
4bde241c49b1
permissions
-rw-r--r--

ucx update

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

mercurial