forked from ithewei/libhv
-
Notifications
You must be signed in to change notification settings - Fork 0
/
configure
executable file
·133 lines (110 loc) · 2.53 KB
/
configure
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#!/bin/bash
confile=hconfig.h
# start confile
cat << END > $confile
#ifndef HV_CONFIG_H_
#define HV_CONFIG_H_
END
# Checks for compiler
echo "checking for compiler..."
if [ $CROSS_COMPILE ]; then
CC=${CROSS_COMPILE}gcc
CXX=${CROSS_COMPILE}g++
fi
if [ ! $CC ]; then
CC=gcc
CXX=g++
fi
CC_VERSION=`$CC --version 2>&1 | head -n 1`
echo "CC = $CC"
echo "CXX = $CXX"
echo "$CC_VERSION"
# shell functions
write_define() {
cat << END >> hconfig.h
#ifndef $macro
#define $macro $value
#endif
END
}
mkdir tmp 2>/dev/null
check_header() {
echo -n "checking for $header... "
rm tmp/check 2>/dev/null
cat << END > tmp/check.c
#include <$header>
int main() {
return 0;
}
END
$CC -o tmp/check tmp/check.c 2>/dev/null
if [ -x tmp/check ]; then
value=1
echo "yes"
else
value=0
echo "no"
fi
macro=HAVE_$(echo $header | tr a-z./ A-Z__)
write_define
}
check_funtion() {
echo -n "checking for $function... "
rm tmp/check 2>/dev/null
cat << END > tmp/check.c
#include <$header>
int $function(void** pp) {return 0;}
int main() {
void* p;
return $function(&p);
}
END
$CC -o tmp/check tmp/check.c 2>/dev/null
if [ -x tmp/check ]; then
value=0
echo "no"
else
value=1
echo "yes"
fi
macro=HAVE_$(echo $function | tr a-z A-Z)
write_define
}
# Checks for os
echo "checking for os..."
HOST_OS=`uname -s`
HOST_ARCH=`uname -m`
TARGET_PLATFORM=`$CC -v 2>&1 | grep Target | sed 's/Target: //'`
TARGET_ARCH=`echo $TARGET_PLATFORM | awk -F'-' '{print $1}'`
case $TARGET_PLATFORM in
*mingw*) TARGET_OS=Windows ;;
*android*) TARGET_OS=Android ;;
*) TARGET_OS=Linux ;;
esac
echo "HOST_OS = $HOST_OS"
echo "HOST_ARCH = $HOST_ARCH"
echo "TARGET_PLATFORM = $TARGET_PLATFORM"
echo "TARGET_OS = $TARGET_OS"
echo "TARGET_ARCH = $TARGET_ARCH"
# Checks for programs
# Checks for libraries
# Checks for header files
header=stdint.h && check_header
header=stdbool.h && check_header
header=sys/types.h && check_header
header=sys/stat.h && check_header
header=sys/time.h && check_header
header=fcntl.h && check_header
header=pthread.h && check_header
# Checks for functions
function=strlcpy && header=string.h && check_funtion
function=strlcat && header=string.h && check_funtion
function=clock_gettime && header=time.h && check_funtion
function=gettimeofday && header=sys/time.h && check_funtion
function=pthread_spin_lock && header=pthread.h && check_funtion
function=pthread_mutex_timedlock && header=pthread.h && check_funtion
# end confile
cat << END >> $confile
#endif // HV_CONFIG_H_
END
echo "configure done."