forked from bytedeco/javacpp-presets
-
Notifications
You must be signed in to change notification settings - Fork 0
/
cppbuild.sh
executable file
·120 lines (111 loc) · 3.03 KB
/
cppbuild.sh
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
#!/bin/bash
# Scripts to build and install native C++ libraries
set -eu
[[ -z ${CMAKE:-} ]] && CMAKE=cmake
[[ -z ${MAKEJ:-} ]] && MAKEJ=4
[[ -z ${OLDCC:-} ]] && OLDCC="gcc"
[[ -z ${OLDCXX:-} ]] && OLDCXX="g++"
[[ -z ${OLDFC:-} ]] && OLDFC="gfortran"
KERNEL=(`uname -s | tr [A-Z] [a-z]`)
ARCH=(`uname -m | tr [A-Z] [a-z]`)
case $KERNEL in
darwin)
OS=macosx
;;
mingw32*)
OS=windows
KERNEL=windows
ARCH=x86
;;
mingw64*)
OS=windows
KERNEL=windows
ARCH=x86_64
;;
*)
OS=$KERNEL
;;
esac
case $ARCH in
arm*)
ARCH=arm
;;
i386|i486|i586|i686)
ARCH=x86
;;
amd64|x86-64)
ARCH=x86_64
;;
esac
PLATFORM=$OS-$ARCH
echo "Detected platform \"$PLATFORM\""
while [[ $# > 0 ]]; do
case "$1" in
-platform)
shift
PLATFORM="$1"
;;
install)
OPERATION=install
;;
clean)
OPERATION=clean
;;
*)
PROJECTS+=("$1")
;;
esac
shift
done
echo "Building for platform \"$PLATFORM\""
if [[ -z ${OPERATION:-} ]]; then
echo "Usage: ANDROID_NDK=/path/to/android-ndk/ bash cppbuild.sh [-platform <name>] <install | clean> [projects]"
echo "where possible platform names are: android-arm, android-x86, linux-x86, linux-x86_64, macosx-x86_64, windows-x86, windows-x86_64, etc."
exit 1
fi
if [[ -z ${ANDROID_NDK:-} ]]; then
ANDROID_NDK=~/Android/android-ndk/
fi
export ANDROID_NDK
export ANDROID_CPP="$ANDROID_NDK/sources/cxx-stl/gnu-libstdc++/4.9/"
case $PLATFORM in
android-x86)
export ANDROID_BIN="$ANDROID_NDK/toolchains/x86-4.9/prebuilt/$KERNEL-$ARCH/bin/i686-linux-android"
export ANDROID_ROOT="$ANDROID_NDK/platforms/android-14/arch-x86/"
;;
*)
export ANDROID_BIN="$ANDROID_NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/$KERNEL-$ARCH/bin/arm-linux-androideabi"
export ANDROID_ROOT="$ANDROID_NDK/platforms/android-14/arch-arm/"
;;
esac
TOP_PATH=`pwd`
function download {
mkdir -p "$TOP_PATH/downloads"
if [[ ! -e "$TOP_PATH/downloads/$2" ]]; then
echo "Downloading $1"
curl -L "$1" -o "$TOP_PATH/downloads/$2"
fi
ln -sf "$TOP_PATH/downloads/$2" "$2"
}
if [[ -z ${PROJECTS:-} ]]; then
PROJECTS=(opencv ffmpeg flycapture libdc1394 libfreenect videoinput artoolkitplus chilitags flandmark openblas fftw gsl llvm leptonica tesseract caffe cuda mxnet tensorflow)
fi
for PROJECT in ${PROJECTS[@]}; do
case $OPERATION in
install)
if [[ ! -d $PROJECT ]]; then
echo "Warning: Project \"$PROJECT\" not found"
else
echo "Installing \"$PROJECT\""
mkdir -p $PROJECT/cppbuild
pushd $PROJECT/cppbuild
source ../cppbuild.sh
popd
fi
;;
clean)
echo "Cleaning \"$PROJECT\""
rm -Rf $PROJECT/cppbuild
;;
esac
done