Skip to content
This repository has been archived by the owner on Dec 1, 2020. It is now read-only.

Commit

Permalink
PATCH: Adds builds scripts for ios, android, osx and win32
Browse files Browse the repository at this point in the history
  • Loading branch information
ricardoquesada committed May 14, 2013
1 parent 047d305 commit c65119e
Show file tree
Hide file tree
Showing 4 changed files with 188 additions and 0 deletions.
94 changes: 94 additions & 0 deletions js/src/build-android/build.sh
@@ -0,0 +1,94 @@
# options
develop=
release=
RELEASE_DIR="spidermonkey-android"
ARCH=armv6
ARCH_DIR=armeabi

usage(){
cat << EOF
usage: $0 [options]
Build SpiderMonkey using Android NDK
OPTIONS:
-d Build for development
-r Build for release. specify RELEASE_DIR.
-h this help
EOF
}

while getopts "drh" OPTION; do
case "$OPTION" in
d)
develop=1
;;
r)
release=1
;;
h)
usage
exit 0
;;
esac
done

set -x

host_os=`uname -s | tr "[:upper:]" "[:lower:]"`

build_with_arch()
{
../configure --with-android-ndk=$HOME/bin/android-ndk \
--with-android-sdk=$HOME/bin/android-sdk \
--with-android-version=9 \
--enable-application=mobile/android \
--with-android-gnu-compiler-version=4.6 \
--with-arch=$ARCH \
--enable-android-libstdcxx \
--target=arm-linux-androideabi \
--disable-shared-js \
--disable-tests \
--enable-strip \
--enable-install-strip \
--disable-debug \
--disable-ion \
--disable-jm \
--disable-tm

# make
make -j15

if [[ $develop ]]; then
rm -rf ../../../include
rm -rf ../../../lib

ln -s -f "$PWD"/dist/include ../../..
ln -s -f "$PWD"/dist/lib ../../..
fi

if [[ $release ]]; then
# copy specific files from dist
rm -r "$RELEASE_DIR/include"
rm -r "$RELEASE_DIR/lib/$ARCH_DIR"
mkdir -p "$RELEASE_DIR/include"
cp -RL dist/include/* "$RELEASE_DIR/include/"
mkdir -p "$RELEASE_DIR/lib/$ARCH_DIR"
cp -L dist/lib/libjs_static.a "$RELEASE_DIR/lib/$ARCH_DIR/libjs_static.a"

# strip unneeded symbols
$HOME/bin/android-ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/${host_os}-x86/bin/arm-linux-androideabi-strip \
--strip-unneeded "$RELEASE_DIR/lib/$ARCH_DIR/libjs_static.a"
fi

}

# Build with armv6
build_with_arch

# Build with armv7
ARCH=armv7-a
ARCH_DIR=armeabi-v7a

build_with_arch
64 changes: 64 additions & 0 deletions js/src/build-ios/build.sh
@@ -0,0 +1,64 @@
#!/bin/sh

## this script is supposed to be run one directory below the original configure script
## usually in build-ios

MIN_IOS_VERSION=4.3
IOS_SDK=6.1

LIPO="xcrun -sdk iphoneos lipo"
STRIP="xcrun -sdk iphoneos strip"

cpus=$(sysctl hw.ncpu | awk '{print $2}')

# create ios version (armv7)
../configure --with-ios-target=iPhoneOS --with-ios-version=$IOS_SDK --with-ios-min-version=$MIN_IOS_VERSION --with-ios-arch=armv7 \
--disable-shared-js --disable-tests --disable-ion --disable-jm --disable-tm --enable-llvm-hacks --disable-methodjit --disable-monoic --disable-polyic \
--enable-optimize=-O3 --with-thumb=yes --enable-strip --enable-install-strip
make -j$cpus
if (( $? )) ; then
echo "error when compiling iOS version of the library"
exit
fi
mv libjs_static.a libjs_static.armv7.a

# create ios version (armv7s)
#../configure --with-ios-target=iPhoneOS --with-ios-version=$IOS_SDK --with-ios-min-version=$MIN_IOS_VERSION --with-ios-arch=armv7s --disable-shared-js --disable-tests --disable-ion --disable-jm --disable-tm --enable-llvm-hacks --disable-methodjit --with-thumb=yes --enable-strip --enable-install-strip --disable-monoic --disable-polyic --disable-ion --enable-optimize=-O1
../configure --with-ios-target=iPhoneOS --with-ios-version=$IOS_SDK --with-ios-min-version=$MIN_IOS_VERSION --with-ios-arch=armv7s \
--disable-shared-js --disable-tests --disable-ion --disable-jm --disable-tm --enable-llvm-hacks --disable-methodjit --disable-monoic --disable-polyic \
--enable-optimize=-O3 --with-thumb=yes --enable-strip --enable-install-strip
make -j$cpus
if (( $? )) ; then
echo "error when compiling iOS version of the library"
exit
fi
mv libjs_static.a libjs_static.armv7s.a

# remove everything but the static library and this script
ls | grep -v libjs_static.armv7.a | grep -v libjs_static.armv7s.a | grep -v build.sh | xargs rm -rf

# create i386 version (simulator)
#../configure --with-ios-target=iPhoneSimulator --with-ios-version=$IOS_SDK --with-ios-min-version=$MIN_IOS_VERSION --disable-shared-js --disable-tests --disable-ion --enable-llvm-hacks --enable-debug
../configure --with-ios-target=iPhoneSimulator --with-ios-version=$IOS_SDK --with-ios-min-version=$MIN_IOS_VERSION \
--disable-shared-js --disable-tests --disable-ion --disable-jm --disable-tm --enable-llvm-hacks --disable-methodjit --disable-monoic --disable-polyic \
--enable-optimize=-O3 --enable-strip --enable-install-strip \
--enable-debug
make -j$cpus
if (( $? )) ; then
echo "error when compiling i386 (iOS Simulator) version of the library"
exit
fi
mv libjs_static.a libjs_static.i386.a

if [ -e libjs_static.i386.a ] && [ -e libjs_static.armv7.a ] && [ -e libjs_static.armv7s.a ] ; then
echo "creating fat version of the library"
$LIPO -create -output libjs_static.a libjs_static.i386.a libjs_static.armv7.a libjs_static.armv7s.a
# remove debugging info
$STRIP -S libjs_static.a
$LIPO -info libjs_static.a
fi

echo "*** DONE ***"
echo "If you want to use spidermonkey, copy the 'dist' directory to some accesible place"
echo "e.g. 'cp -pr dist ~/path/to/your/project'"
echo "and then add the proper search paths for headers and libraries in your Xcode project"
19 changes: 19 additions & 0 deletions js/src/build-osx/build.sh
@@ -0,0 +1,19 @@
#!/bin/sh

cpus=$(sysctl hw.ncpu | awk '{print $2}')

# configure
../configure --disable-tests --disable-shared-js \
--enable-strip --enable-strip-install \
--disable-root-analysis --disable-exact-rooting --enable-gcincremental --enable-optimize=-O3 \
--enable-llvm-hacks \
--enable-debug
# make
make -j$cpus

# strip
strip -S libjs_static.a

# info
lipo -info libjs_static.a

11 changes: 11 additions & 0 deletions js/src/build-win32/build.sh
@@ -0,0 +1,11 @@
#!/bin/sh

# configure
../configure --disable-tests \
--disable-debug \
--disable-ion \
--disable-jm \
--disable-tm

# make
make -j4

0 comments on commit c65119e

Please sign in to comment.