blob: 6711aedd46c1d4fe74dae0f9c45c4be0dafa65ae [file] [log] [blame]
pancake63414a42015-02-27 17:57:53 +01001#!/bin/sh
Nguyen Anh Quynh64d40832014-01-17 20:55:21 +08002
Nguyen Anh Quynh6023ef72014-04-29 11:21:04 +08003# Capstone Disassembly Engine
pancake63414a42015-02-27 17:57:53 +01004# By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2015
Nguyen Anh Quynh64d40832014-01-17 20:55:21 +08005
6# Note: to cross-compile "nix32" on Linux, package gcc-multilib is required.
7
pancake63414a42015-02-27 17:57:53 +01008MAKE_JOBS=$((${MAKE_JOBS}+0))
9[ ${MAKE_JOBS} -lt 1 ] && \
10 MAKE_JOBS=4
Nguyen Anh Quynh50ebb682014-03-31 21:15:29 +080011
12# build iOS lib for all iDevices, or only specific device
pancake63414a42015-02-27 17:57:53 +010013build_iOS() {
14 ${MAKE} clean
15 IOS_SDK=`xcrun --sdk iphoneos --show-sdk-path`
16 IOS_CC=`xcrun --sdk iphoneos -f clang`
17 IOS_CFLAGS="-Os -Wimplicit -isysroot $IOS_SDK"
18 IOS_LDFLAGS="-isysroot $IOS_SDK"
19 if [ -z "$1" ]; then
20 # build for all iDevices
21 IOS_ARCHS="armv7 armv7s arm64"
22 else
23 IOS_ARCHS="$1"
24 fi
25 CC="$IOS_CC" \
26 CFLAGS="$IOS_CFLAGS" \
27 LDFLAGS="$IOS_LDFLAGS" \
28 LIBARCHS="$IOS_ARCHS" \
29 ${MAKE}
Nguyen Anh Quynh50ebb682014-03-31 21:15:29 +080030}
31
pancake63414a42015-02-27 17:57:53 +010032build() {
33 [ "$UNAME" = Darwin ] && LIBARCHS="i386 x86_64"
34 ${MAKE} clean
35 ${MAKE}
Nguyen Anh Quynh64d40832014-01-17 20:55:21 +080036}
37
pancake63414a42015-02-27 17:57:53 +010038install() {
39 # Mac OSX needs to find the right directory for pkgconfig
40 if [ "$UNAME" = Darwin ]; then
41 # we are going to install into /usr/local, so remove old installs under /usr
42 rm -rf /usr/lib/libcapstone.*
43 rm -rf /usr/include/capstone
44 # install into /usr/local
45 PREFIX=/usr/local
46 # find the directory automatically, so we can support both Macport & Brew
47 PKGCFGDIR="$(pkg-config --variable pc_path pkg-config | cut -d ':' -f 1)"
48 ${MAKE} install
49 else # not OSX
50 test -d /usr/lib64 && ${MAKE} LIBDIRARCH=lib64
51 ${MAKE} install
52 fi
Nguyen Anh Quynhaf0e9372014-04-12 23:10:46 +080053}
54
pancake63414a42015-02-27 17:57:53 +010055uninstall() {
56 # Mac OSX needs to find the right directory for pkgconfig
57 if [ "$UNAME" = "Darwin" ]; then
58 # find the directory automatically, so we can support both Macport & Brew
59 PKGCFGDIR="$(pkg-config --variable pc_path pkg-config | cut -d ':' -f 1)"
60 PREFIX=/usr/local
61 ${MAKE} uninstall
62 else # not OSX
63 test -d /usr/lib64 && LIBDIRARCH=lib64
64 ${MAKE} uninstall
65 fi
Nguyen Anh Quynh64d40832014-01-17 20:55:21 +080066}
67
pancake63414a42015-02-27 17:57:53 +010068if [ "$UNAME" = SunOS ]; then
69 [ -z "${MAKE}" ] && MAKE=gmake
70 INSTALL_BIN=ginstall
71 CC=gcc
Nguyen Anh Quynhd3b30712014-01-17 21:25:18 +080072fi
73
pancake63414a42015-02-27 17:57:53 +010074if [ -n "`echo "$UNAME" | grep BSD`" ]; then
75 MAKE=gmake
76 PREFIX=/usr/local
Nguyen Anh Quynhf63db272014-01-17 22:12:35 +080077fi
78
pancake63414a42015-02-27 17:57:53 +010079[ -z "${UNAME}" ] && UNAME=$(uname)
80[ -z "${MAKE}" ] && MAKE=make
81[ -n "${MAKE_JOBS}" ] && MAKE="$MAKE -j${MAKE_JOBS}"
82export MAKE CC INSTALL_BIN PREFIX PKGCFGDIR LIBDIRARCH LIBARCHS CFLAGS LDFLAGS
83
Nguyen Anh Quynh64d40832014-01-17 20:55:21 +080084case "$1" in
85 "" ) build;;
86 "default" ) build;;
87 "install" ) install;;
Nguyen Anh Quynhaf0e9372014-04-12 23:10:46 +080088 "uninstall" ) uninstall;;
Nguyen Anh Quynh64d40832014-01-17 20:55:21 +080089 "nix32" ) CFLAGS=-m32 LDFLAGS=-m32 build;;
Nguyen Anh Quynh64d40832014-01-17 20:55:21 +080090 "cross-win32" ) CROSS=i686-w64-mingw32- build;;
91 "cross-win64" ) CROSS=x86_64-w64-mingw32- build;;
92 "cygwin-mingw32" ) CROSS=i686-pc-mingw32- build;;
93 "cygwin-mingw64" ) CROSS=x86_64-w64-mingw32- build;;
Nguyen Anh Quynhf08ed972014-04-07 22:13:56 +080094 "cross-android" ) CROSS=arm-linux-androideabi- build;;
Nguyen Anh Quynh64d40832014-01-17 20:55:21 +080095 "clang" ) CC=clang build;;
96 "gcc" ) CC=gcc build;;
Nguyen Anh Quynh50ebb682014-03-31 21:15:29 +080097 "ios" ) build_iOS;;
98 "ios_armv7" ) build_iOS armv7;;
99 "ios_armv7s" ) build_iOS armv7s;;
100 "ios_arm64" ) build_iOS arm64;;
pancake63414a42015-02-27 17:57:53 +0100101 * )
102 echo "Usage: $0 ["`grep '^ "' $0 | cut -d '"' -f 2 | tr "\\n" "|"`"]"
103 exit 1;;
Nguyen Anh Quynh64d40832014-01-17 20:55:21 +0800104esac