]> git.proxmox.com Git - ceph.git/blob - ceph/src/spdk/scripts/detect_cc.sh
update sources to ceph Nautilus 14.2.1
[ceph.git] / ceph / src / spdk / scripts / detect_cc.sh
1 #!/usr/bin/env bash
2
3 set -e
4
5 function err()
6 {
7 echo "$@" >&2
8 }
9
10 function usage()
11 {
12 err "Detect compiler and linker versions, generate mk/cc.mk"
13 err ""
14 err "Usage: ./detect_cc.sh [OPTION]..."
15 err ""
16 err "Defaults for the options are specified in brackets."
17 err ""
18 err "General:"
19 err " -h, --help Display this help and exit"
20 err " --cc=path C compiler to use"
21 err " --cxx=path C++ compiler to use"
22 err " --lto=[y|n] Attempt to configure for LTO"
23
24 }
25
26 CC=cc
27 CXX=c++
28 LTO=n
29
30 for i in "$@"; do
31 case "$i" in
32 -h|--help)
33 usage
34 exit 0
35 ;;
36 --cc=*)
37 CC="${i#*=}"
38 ;;
39 --cxx=*)
40 CXX="${i#*=}"
41 ;;
42 --lto=*)
43 LTO="${i#*=}"
44 ;;
45 --)
46 break
47 ;;
48 *)
49 err "Unrecognized option $i"
50 usage
51 exit 1
52 esac
53 done
54
55 CC_TYPE=$($CC -v 2>&1 | grep -o -E '\w+ version' | head -1 | awk '{ print $1 }')
56 CXX_TYPE=$($CXX -v 2>&1 | grep -o -E '\w+ version' | head -1 | awk '{ print $1 }')
57 LD_TYPE=$(ld -v 2>&1 | awk '{print $2}')
58
59 if [ "$CC_TYPE" != "$CXX_TYPE" ]; then
60 err "C compiler is $CC_TYPE but C++ compiler is $CXX_TYPE"
61 err "This may result in errors"
62 fi
63
64 CCAR="ar"
65 if [ "$LTO" = "y" ]; then
66 if [ "$CC_TYPE" = "clang" ]; then
67 if [ "$LD_TYPE" != "gold" ]; then
68 err "Using LTO with clang requires the gold linker."
69 exit 1
70 fi
71 CCAR="llvm-ar"
72 else
73 CCAR="gcc-ar"
74 fi
75 fi
76
77 echo "CC?=$CC"
78 echo "CXX?=$CXX"
79 echo "CCAR=$CCAR"
80 echo "CC_TYPE=$CC_TYPE"