-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbuildBulletSim.sh
executable file
·68 lines (57 loc) · 2.31 KB
/
buildBulletSim.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
#! /bin/bash
# Script to build BulletSim Linux binaries.
# This presumes the bins and includes for Bullet are in BLIBDIR and BINCLUDEDIR
BASE=$(pwd)
BLIBDIR=${BLIBDIR:-./lib}
BINCLUDEDIR=${BINCLUDEDIR:-./include}
# Output file is ${TARGETBASE}-${BULLETVERSION}-${BUILDDATE}-${ARCH}.so
TARGETBASE=${TARGETBASE:-libBulletSim}
# CC=gcc
# CC=/usr/bin/g++
CC=/usr/bin/c++
# LD=/usr/bin/g++
LD=/usr/bin/c++
UNAME=${UNAME:-$(uname)}
ARCH=${ARCH:-$(uname -m)}
# Version of the Bullet engine that is being statically linked
BULLETVERSION=$(cat "${BLIBDIR}/VERSION")
# Version of the BulletSim glue that is being built and included
BULLETSIMVERSION=$(cat "VERSION")
BUILDDATE=$(date "+%Y%m%d")
# Kludge for building libBulletSim.so with different library dependencies
# As of 20130424, 64bit Ubuntu needs to wrap memcpy so it doesn't pull in glibc 2.14.
# The wrap is not needed on Ubuntu 32bit and, in fact, causes crashes.
if [[ "$ARCH" == "x86_64" ]] ; then
WRAPMEMCPY=-Wl,--wrap=memcpy
else
WRAPMEMCPY=
fi
# Pass version information into compilations as C++ variables
VERSIONCFLAGS="-D BULLETVERSION=$BULLETVERSION -D BULLETSIMVERSION=$BULLETSIMVERSION"
case $UNAME in
"Linux")
TARGET=${TARGETBASE}-${BULLETVERSION}-${BUILDDATE}-${ARCH}.so
CFLAGS="-I${BINCLUDEDIR} -fPIC -g -fpermissive ${VERSIONCFLAGS}"
LFLAGS="${WRAPMEMCPY} -shared -Wl,-soname,${TARGET} -o ${TARGET}"
;;
"Darwin")
CC=gcc
LD=g++
TARGET=${TARGETBASE}-${BULLETVERSION}-${BUILDDATE}-universal.dylib
CFLAGS="-arch arm64 -arch x86_64 -O3 -I${BINCLUDEDIR} -g ${VERSIONCFLAGS}"
LFLAGS="-v -dynamiclib -arch arm64 -arch x86_64 -o ${TARGET}"
;;
*)
TARGET=${TARGETBASE}-${BULLETVERSION}-${BUILDDATE}-${ARCH}.so
CFLAGS="-I${IDIR} -fPIC -g -fpermissive ${VERSIONCFLAGS}"
LFLAGS="${WRAPMEMCPY} -shared -Wl,-soname,${TARGET} -o ${TARGET}"
;;
esac
# All of the Bullet bin files
# BULLETLIBS=$(ls ${BLIBDIR}/*.a)
BULLETLIBS="${BLIBDIR}/libBulletDynamics.a ${BLIBDIR}/libBulletCollision.a ${BLIBDIR}/libLinearMath.a ${BLIBDIR}/libHACD.a"
# Just build everything
echo "=== Building target $TARGET from BulletSim glue ${BULLETSIMVERSION} and Bullet ${BULLETVERSION}"
${CC} ${CFLAGS} -c API2.cpp
${CC} ${CFLAGS} -c BulletSim.cpp
${LD} ${LFLAGS} API2.o BulletSim.o ${BULLETLIBS}