Last active
August 29, 2015 14:20
-
-
Save rraallvv/afb9317da11116163c70 to your computer and use it in GitHub Desktop.
Build LuaJIT 2.1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
: ${IPHONE_SDKVERSION:=`xcodebuild -showsdks | grep iphoneos | egrep "[[:digit:]]+\.[[:digit:]]+" -o | tail -1`} | |
: ${XCODE_ROOT:=`xcode-select -print-path`} | |
: ${SRCDIR:=`pwd`} | |
: ${IOSBUILDDIR:=`pwd`/build/ios/prebuild} | |
: ${PREFIXDIR:=`pwd`/build/ios/prefix} | |
: ${IOSFRAMEWORKDIR:=`pwd`/build/ios} | |
: ${COMPILER:="clang"} | |
: ${LUA_VERSION:=5.1.5} | |
#=============================================================================== | |
ARM_DEV_CMD="xcrun --sdk iphoneos" | |
SIM_DEV_CMD="xcrun --sdk iphonesimulator" | |
ARMV6_LIB=$IOSBUILDDIR/lib_luajit_armv6.a | |
ARMV7_LIB=$IOSBUILDDIR/lib_luajit_armv7.a | |
ARMV7S_LIB=$IOSBUILDDIR/lib_luajit_armv7s.a | |
ARM64_LIB=$IOSBUILDDIR/lib_luajit_arm64.a | |
I386_LIB=$IOSBUILDDIR/lib_luajit_i386.a | |
X86_64_LIB=$IOSBUILDDIR/lib_luajit_x86_64.a | |
IOSSYSROOT=$XCODE_ROOT/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS$IPHONE_SDKVERSION.sdk | |
IOSSIMSYSROOT=$XCODE_ROOT/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator$IPHONE_SDKVERSION.sdk | |
FILES_INC="$SRCDIR/src/lua.h $SRCDIR/src/lualib.h $SRCDIR/src/lauxlib.h $SRCDIR/src/luaconf.h $SRCDIR/src/lua.hpp $SRCDIR/src/luajit.h" | |
EXTRA_CFLAGS="-DLUA_USE_DLOPEN" | |
compile_framework() { | |
FRAMEWORK_BUNDLE=$1/LuaJIT.framework | |
FRAMEWORK_VERSION=A | |
FRAMEWORK_NAME=LuaJIT | |
shift; | |
rm -rf $FRAMEWORK_BUNDLE | |
mkdir -p $FRAMEWORK_BUNDLE | |
mkdir -p $FRAMEWORK_BUNDLE/Versions | |
mkdir -p $FRAMEWORK_BUNDLE/Versions/$FRAMEWORK_VERSION | |
mkdir -p $FRAMEWORK_BUNDLE/Versions/$FRAMEWORK_VERSION/Resources | |
mkdir -p $FRAMEWORK_BUNDLE/Versions/$FRAMEWORK_VERSION/Headers | |
mkdir -p $FRAMEWORK_BUNDLE/Versions/$FRAMEWORK_VERSION/Documentation | |
ln -s $FRAMEWORK_VERSION $FRAMEWORK_BUNDLE/Versions/Current | |
ln -s Versions/Current/Headers $FRAMEWORK_BUNDLE/Headers | |
ln -s Versions/Current/Resources $FRAMEWORK_BUNDLE/Resources | |
ln -s Versions/Current/Documentation $FRAMEWORK_BUNDLE/Documentation | |
ln -s Versions/Current/$FRAMEWORK_NAME $FRAMEWORK_BUNDLE/$FRAMEWORK_NAME | |
FRAMEWORK_INSTALL_NAME=$FRAMEWORK_BUNDLE/Versions/$FRAMEWORK_VERSION/$FRAMEWORK_NAME | |
echo "Lipoing library into $FRAMEWORK_INSTALL_NAME..." | |
$ARM_DEV_CMD lipo -create $@ -output "$FRAMEWORK_INSTALL_NAME" || exit | |
echo "Framework: Copying includes..." | |
cp -r $FILES_INC $FRAMEWORK_BUNDLE/Headers/ | |
echo "Framework: Creating plist..." | |
cat > $FRAMEWORK_BUNDLE/Resources/Info.plist <<EOF | |
<?xml version="1.0" encoding="UTF-8"?> | |
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
<plist version="1.0"> | |
<dict> | |
<key>CFBundleDevelopmentRegion</key> | |
<string>English</string> | |
<key>CFBundleExecutable</key> | |
<string>${FRAMEWORK_NAME}</string> | |
<key>CFBundleIdentifier</key> | |
<string>org.luajit</string> | |
<key>CFBundleInfoDictionaryVersion</key> | |
<string>6.0</string> | |
<key>CFBundlePackageType</key> | |
<string>FMWK</string> | |
<key>CFBundleSignature</key> | |
<string>????</string> | |
<key>CFBundleVersion</key> | |
<string>${FRAMEWORK_CURRENT_VERSION}</string> | |
</dict> | |
</plist> | |
EOF | |
} | |
mkdir -p $IOSBUILDDIR | |
compile_arm() { | |
echo compiling $1 ... | |
ISDKF="-arch $1 -isysroot $IOSSYSROOT $EXTRA_CFLAGS" | |
make -C $SRCDIR/src clean libluajit.a HOST_CC="$COMPILER -m32 -arch i386" CROSS="$ARM_DEV_CMD " TARGET_FLAGS="$ISDKF" TARGET_SYS=iOS | |
cp $SRCDIR/src/libluajit.a $IOSBUILDDIR/lib_luajit_$1.a | |
} | |
compile_arm64() { | |
echo compiling arm64 ... | |
ISDKF="-arch arm64 -isysroot $IOSSYSROOT $EXTRA_CFLAGS" | |
make -C $SRCDIR/src clean libluajit.a HOST_CC="$COMPILER -m64 -arch x86_64" CROSS="$ARM_DEV_CMD " TARGET_FLAGS="$ISDKF" TARGET_SYS=iOS | |
cp $SRCDIR/src/libluajit.a $IOSBUILDDIR/lib_luajit_arm64.a | |
} | |
compile_sim() { | |
echo compiling sim $1 ... | |
ISDKF="-arch $1 -isysroot $IOSSIMSYSROOT $EXTRA_CFLAGS" | |
make -C $SRCDIR/src clean libluajit.a HOST_CC="$COMPILER -m32 -arch $1" CROSS="$SIM_DEV_CMD " TARGET_FLAGS="$ISDKF" TARGET_SYS=iOS | |
cp $SRCDIR/src/libluajit.a $IOSBUILDDIR/lib_luajit_$1.a | |
} | |
compile_sim i386 | |
compile_sim x86_64 | |
compile_arm armv7 | |
compile_arm armv7s | |
compile_arm64 | |
echo build ios framework ... | |
compile_framework $IOSFRAMEWORKDIR $I386_LIB $X86_64_LIB $ARMV7_LIB $ARMV7S_LIB $ARM64_LIB | |
echo framework will be at $IOSFRAMEWORKDIR | |
echo success! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
: ${OSX_SDKVERSION:=`xcodebuild -showsdks | grep osx | egrep "[[:digit:]]+\.[[:digit:]]+" -o | tail -1`} | |
: ${XCODE_ROOT:=`xcode-select -print-path`} | |
: ${SRCDIR:=`pwd`} | |
: ${OSXBUILDDIR:=`pwd`/build/osx/prebuild} | |
: ${PREFIXDIR:=`pwd`/build/osx/prefix} | |
: ${OSXFRAMEWORKDIR:=`pwd`/build/osx} | |
: ${COMPILER:="clang"} | |
: ${LUA_VERSION:=5.1.5} | |
#=============================================================================== | |
INTEL_DEV_CMD="xcrun --sdk macosx" | |
X86_64_LIB=$OSXBUILDDIR/lib_luajit_x86_64.a | |
OSXSYSROOT=$XCODE_ROOT/Platforms/MacOSX.platform/Developer/SDKs/MacOSX$IPHONE_SDKVERSION.sdk | |
FILES_INC="$SRCDIR/src/lua.h $SRCDIR/src/lualib.h $SRCDIR/src/lauxlib.h $SRCDIR/src/luaconf.h $SRCDIR/src/lua.hpp $SRCDIR/src/luajit.h" | |
EXTRA_CFLAGS="-DLUA_USE_DLOPEN" | |
compile_framework() { | |
FRAMEWORK_BUNDLE=$1/LuaJIT.framework | |
FRAMEWORK_VERSION=A | |
FRAMEWORK_NAME=LuaJIT | |
shift; | |
rm -rf $FRAMEWORK_BUNDLE | |
mkdir -p $FRAMEWORK_BUNDLE | |
mkdir -p $FRAMEWORK_BUNDLE/Versions | |
mkdir -p $FRAMEWORK_BUNDLE/Versions/$FRAMEWORK_VERSION | |
mkdir -p $FRAMEWORK_BUNDLE/Versions/$FRAMEWORK_VERSION/Resources | |
mkdir -p $FRAMEWORK_BUNDLE/Versions/$FRAMEWORK_VERSION/Headers | |
mkdir -p $FRAMEWORK_BUNDLE/Versions/$FRAMEWORK_VERSION/Documentation | |
ln -s $FRAMEWORK_VERSION $FRAMEWORK_BUNDLE/Versions/Current | |
ln -s Versions/Current/Headers $FRAMEWORK_BUNDLE/Headers | |
ln -s Versions/Current/Resources $FRAMEWORK_BUNDLE/Resources | |
ln -s Versions/Current/Documentation $FRAMEWORK_BUNDLE/Documentation | |
ln -s Versions/Current/$FRAMEWORK_NAME $FRAMEWORK_BUNDLE/$FRAMEWORK_NAME | |
FRAMEWORK_INSTALL_NAME=$FRAMEWORK_BUNDLE/Versions/$FRAMEWORK_VERSION/$FRAMEWORK_NAME | |
echo "Lipoing library into $FRAMEWORK_INSTALL_NAME..." | |
$INTEL_DEV_CMD lipo -create $@ -output "$FRAMEWORK_INSTALL_NAME" || exit | |
echo "Framework: Copying includes..." | |
cp -r $FILES_INC $FRAMEWORK_BUNDLE/Headers/ | |
echo "Framework: Creating plist..." | |
cat > $FRAMEWORK_BUNDLE/Resources/Info.plist <<EOF | |
<?xml version="1.0" encoding="UTF-8"?> | |
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
<plist version="1.0"> | |
<dict> | |
<key>CFBundleDevelopmentRegion</key> | |
<string>English</string> | |
<key>CFBundleExecutable</key> | |
<string>${FRAMEWORK_NAME}</string> | |
<key>CFBundleIdentifier</key> | |
<string>org.luajit</string> | |
<key>CFBundleInfoDictionaryVersion</key> | |
<string>6.0</string> | |
<key>CFBundlePackageType</key> | |
<string>FMWK</string> | |
<key>CFBundleSignature</key> | |
<string>????</string> | |
<key>CFBundleVersion</key> | |
<string>${FRAMEWORK_CURRENT_VERSION}</string> | |
</dict> | |
</plist> | |
EOF | |
} | |
mkdir -p $OSXBUILDDIR | |
compile_x86_64() { | |
echo compiling x86_64 ... | |
ISDKF="-arch x86_64 -isysroot $OSXSYSROOT $EXTRA_CFLAGS" | |
make -C $SRCDIR/src clean libluajit.a HOST_CC="$COMPILER -arch x86_64" | |
cp $SRCDIR/src/libluajit.a $OSXBUILDDIR/lib_luajit_x86_64.a | |
} | |
compile_x86_64 | |
echo build osx framework ... | |
compile_framework $OSXFRAMEWORKDIR $X86_64_LIB | |
echo framework will be at $OSXFRAMEWORKDIR | |
echo success! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
shopt -s extglob | |
if [ ! -e $BUILT_PRODUCTS_DIR/$EXECUTABLE_NAME ]; then | |
LUADIR="$SRCROOT/luajit" | |
mkdir -p $BUILT_PRODUCTS_DIR | |
for ARCH in $ARCHS ; do | |
TARGET_ARCH="-m32" | |
if [ "$ARCH" == "arm64" ] || [ "$ARCH" == "x86_64" ] ; then | |
TARGET_ARCH="-m64" | |
fi | |
TARGET_SYSTEM="Darwin" | |
if [ $SDKROOT == $iphoneos ] || [ $SDKROOT == $iphonesimulator ] ; then | |
TARGET_SYSTEM="iOS" | |
fi | |
make -C "$LUADIR" CC="clang" HOST_CC="clang $TARGET_ARCH -I/usr/include -isysroot $DEVELOPER_SDK_DIR" HOST_LDFLAGS="-L/usr/lib" TARGET_SYS=$TARGET_SYSTEM CROSS="/usr/bin/" TARGET_FLAGS="-isysroot $SDKROOT -arch $ARCH" clean amalg | |
if [ ! -e "$LUADIR/src/libluajit.a" ]; then | |
exit 1 | |
fi | |
mv "$LUADIR/src/libluajit.a" $BUILT_PRODUCTS_DIR/libluajit-${ARCH}.a | |
done | |
lipo -create $BUILT_PRODUCTS_DIR/libluajit-*.a -output $BUILT_PRODUCTS_DIR/$EXECUTABLE_NAME | |
rm $BUILT_PRODUCTS_DIR/!($EXECUTABLE_PREFIX$PRODUCT_NAME).a | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment