-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathbuild-native.sh
More file actions
executable file
·137 lines (124 loc) · 2.85 KB
/
build-native.sh
File metadata and controls
executable file
·137 lines (124 loc) · 2.85 KB
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
134
135
136
137
#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'
SCRIPT_ROOT=$(cd "$(dirname "$0")"; pwd -P)
REPO_ROOT="$SCRIPT_ROOT"
SOURCE_ROOT="$REPO_ROOT/src"
BINARY_ROOT="$REPO_ROOT/bin"
OBJECT_ROOT="$REPO_ROOT/obj"
SUBMODULE_ROOT="$REPO_ROOT/src/libuv"
BUILD_TYPE=Debug
TARGET_ARCH=x64
HOST_OS=Linux
FILE_EXTENSION=".so"
case $(uname -s) in
Darwin)
HOST_OS="OSX"
FILE_EXTENSION=".dylib"
;;
Linux)
HOST_OS="Linux"
FILE_EXTENSION=".so"
;;
*)
echo "Unknown OS: '$(uname -s)'"
exit 1
;;
esac
TARGET_OS="$HOST_OS"
while :; do
if [ $# -le 0 ]; then
break
fi
case $(echo $1 | awk '{print tolower($0)}') in
--configuration)
shift
case $(echo $1 | awk '{print tolower($0)}') in
release)
BUILD_TYPE=Release
;;
debug)
BUILD_TYPE=Debug
;;
*)
echo "Unknown Configuration '$1'"
exit 1
;;
esac
;;
--platform)
shift
case $(echo $1 | awk '{print tolower($0)}') in
x64)
TARGET_ARCH=x64
;;
arm)
TARGET_ARCH=arm
;;
*)
echo "Unknown Platform '$1'"
exit 1
;;
esac
;;
*)
echo "Unknown Argument '$1'"
exit 1
;;
esac
shift
done
BINARY_DIR="$BINARY_ROOT/$TARGET_OS.$TARGET_ARCH.$BUILD_TYPE"
OBJECT_DIR="$OBJECT_ROOT/$TARGET_OS.$TARGET_ARCH.$BUILD_TYPE"
git submodule init
git submodule update
mkdir -p $BINARY_DIR
mkdir -p $OBJECT_DIR
pushd "$OBJECT_DIR" > /dev/null 2>&1
# Since it's possible that cmake or make could fail for a "real" reason,
# let's disable set -e so we can popd out of the object directory if they fail.
set +e
#Call libuv build commands
echo "Commencing build of native compenents"
echo .
echo $SUBMODULE_ROOT
pushd $SUBMODULE_ROOT
echo "Building with autotools"
(set -x; sh autogen.sh)
if [ $? -ne 0 ]; then
echo "ERROR: Build failed."
popd > /dev/null 2>&1
exit 1
fi
(sh configure --prefix=$BINARY_DIR)
(set x; make -j)
if [ $? -ne 0 ]; then
echo "ERROR: Build failed."
popd > /dev/null 2>&1
exit 1
fi
(set x; make install -j)
if [ $? -ne 0 ]; then
echo "ERROR: Build failed."
popd > /dev/null 2>&1
exit 1
fi
popd
pushd $BINARY_DIR/lib
for n in *;
do
echo "$n"
if [[ -f "$n" ]]; then
if [[ ! -z $(readlink "$n") ]]; then
LINKVALUE=$(readlink "$n")
echo ln -f "$LINKVALUE" "$n"
ln -f "$LINKVALUE" "$n"
if [[ $n == *$FILE_EXTENSION* ]]; then
mv $n $BINARY_DIR
fi
fi
fi
done
popd
set -e
echo "Build Succeeded."