-
-
Save zinwalin/9a31f12d06efef37477cfaef12783913 to your computer and use it in GitHub Desktop.
Build script for building SDL2 and extensions for iOS, tvOS and macOS
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/bash | |
# | |
# usage: Make executable and type ./get_sdl.sh | |
# | |
# Note - Use -showBuildSettings such as: | |
# xcodebuild -configuration Release HEADER_SEARCH_PATHS="../../SDL/include/ ./Frameworks/FreeType.framework/Headers/" -target "Static Library" -arch x86_64 -sdk macosx -showBuildSettings | |
# to list all build settings... | |
# | |
# Note - Had to update the HEADER_SEARCH_PATHS and MACOSX_DEPLOYMENT_TARGET for | |
# a couple of libraries for the macOS versions. The HEADER_SEARCH_PATHS were set to look | |
# for a .framework for SDL.h etc. and the MACOSX_DEPLOYMENT_TARGET is set to 10.5 | |
# but produces an error saying 10.6 is required. | |
# | |
# Ideas taken from: https://gist.github.com/i8degrees/74f977f41082c89b33fe | |
# and https://github.com/ThirdPartyNinjas/sdl_ios/blob/master/sdl_ios.sh | |
# | |
OUTPUT_DIR="SDL_BUILD" | |
SDL_VERSION="2.0.9" | |
SDL_TTF_VERSION="2.0.15" | |
SDL_IMAGE_VERSION="2.0.4" | |
SDL_NET_VERSION="2.0.1" | |
SDL_MIXER_VERSION="2.0.4" | |
SDL_DIR_NAME="SDL2-$SDL_VERSION" | |
SDL_TTF_DIR_NAME="SDL2_ttf-$SDL_TTF_VERSION" | |
SDL_IMAGE_DIR_NAME="SDL2_image-$SDL_IMAGE_VERSION" | |
SDL_NET_DIR_NAME="SDL2_net-$SDL_NET_VERSION" | |
SDL_MIXER_DIR_NAME="SDL2_mixer-$SDL_MIXER_VERSION" | |
SDL_FILE_NAME="$SDL_DIR_NAME.zip" | |
SDL_TTF_FILE_NAME="$SDL_TTF_DIR_NAME.zip" | |
SDL_IMAGE_FILE_NAME="$SDL_IMAGE_DIR_NAME.zip" | |
SDL_NET_FILE_NAME="$SDL_NET_DIR_NAME.zip" | |
SDL_MIXER_FILE_NAME="$SDL_MIXER_DIR_NAME.zip" | |
SDL_URL="https://www.libsdl.org/release/$SDL_FILE_NAME" | |
SDL_TTF_URL="https://www.libsdl.org/projects/SDL_ttf/release/$SDL_TTF_FILE_NAME" | |
SDL_IMAGE_URL="https://www.libsdl.org/projects/SDL_image/release/$SDL_IMAGE_FILE_NAME" | |
SDL_NET_URL="https://www.libsdl.org/projects/SDL_net/release/$SDL_NET_FILE_NAME" | |
SDL_MIXER_URL="https://www.libsdl.org/projects/SDL_mixer/release/$SDL_MIXER_FILE_NAME" | |
if [ -d "$OUTPUT_DIR" ] | |
then | |
echo "Found old output folder - deleting" | |
rm -Rf "$OUTPUT_DIR" | |
fi | |
mkdir "$OUTPUT_DIR" | |
cd "$OUTPUT_DIR" | |
# Main SDL2 | |
# Build for iOS | |
mkdir SDL | |
mkdir SDL/include | |
mkdir SDL/lib | |
curl $SDL_URL -o "$SDL_FILE_NAME" | |
unzip "$SDL_FILE_NAME" | |
pushd . | |
cd "$SDL_DIR_NAME/Xcode-iOS/SDL" | |
cp ../../include/* ../../../SDL/include/ | |
mkdir templibs | |
xcodebuild -configuration Release -target libSDL-iOS -arch i386 -sdk iphonesimulator clean build | |
cp build/Release-iphonesimulator/libSDL2.a templibs/libSDL2_i386.a | |
xcodebuild -configuration Release -target libSDL-iOS -arch x86_64 -sdk iphonesimulator clean build | |
cp build/Release-iphonesimulator/libSDL2.a templibs/libSDL2_x86_64.a | |
xcodebuild -configuration Release -target libSDL-iOS -arch armv7 -sdk iphoneos clean build | |
cp build/Release-iphoneos/libSDL2.a templibs/libSDL2_armv7.a | |
xcodebuild -configuration Release -target libSDL-iOS -arch armv7s -sdk iphoneos clean build | |
cp build/Release-iphoneos/libSDL2.a templibs/libSDL2_armv7s.a | |
xcodebuild -configuration Release -target libSDL-iOS -arch arm64 -sdk iphoneos clean build | |
cp build/Release-iphoneos/libSDL2.a templibs/libSDL2_arm64.a | |
lipo templibs/*.a -create -output ../../../SDL/lib/libSDL2-iOS.a | |
rm -rf templibs | |
rm -rf build | |
# Build for tvOS | |
mkdir templibs | |
xcodebuild -configuration Release -target libSDL-tvOS -arch x86_64 -sdk appletvsimulator clean build | |
cp build/Release-appletvsimulator/libSDL2.a templibs/libSDL2_x86_64.a | |
xcodebuild -configuration Release -target libSDL-tvOS -arch arm64 -sdk appletvos clean build | |
cp build/Release-appletvos/libSDL2.a templibs/libSDL2_arm64.a | |
lipo templibs/*.a -create -output ../../../SDL/lib/libSDL2-tvOS.a | |
rm -rf templibs | |
rm -rf build | |
# build for macOS | |
cd ../../Xcode/SDL | |
xcodebuild -configuration Release -target "Static Library" -arch x86_64 -sdk macosx clean build | |
cp build/Release/libSDL2.a ../../../SDL/lib/libSDL2-macOS.a | |
rm -rf build | |
popd | |
# SDL_TTF | |
mkdir SDL_ttf | |
mkdir SDL_ttf/include | |
mkdir SDL_ttf/lib | |
curl $SDL_TTF_URL -o "$SDL_TTF_FILE_NAME" | |
unzip "$SDL_TTF_FILE_NAME" | |
pushd . | |
cd "$SDL_TTF_DIR_NAME/Xcode-iOS/" | |
cp ../SDL_ttf.h ../../SDL_ttf/include/ | |
mkdir templibs | |
# Build for iOS | |
xcodebuild -configuration Release -target libSDL_ttf-iOS -arch i386 -sdk iphonesimulator clean build | |
cp build/Release-iphonesimulator/libSDL2_ttf.a templibs/libSDL2_ttf_i386.a | |
xcodebuild -configuration Release -target libSDL_ttf-iOS -arch x86_64 -sdk iphonesimulator clean build | |
cp build/Release-iphonesimulator/libSDL2_ttf.a templibs/libSDL2_ttf_x86_64.a | |
xcodebuild -configuration Release -target libSDL_ttf-iOS -arch armv7 -sdk iphoneos clean build | |
cp build/Release-iphoneos/libSDL2_ttf.a templibs/libSDL2_ttf_armv7.a | |
xcodebuild -configuration Release -target libSDL_ttf-iOS -arch armv7s -sdk iphoneos clean build | |
cp build/Release-iphoneos/libSDL2_ttf.a templibs/libSDL2_ttf_armv7s.a | |
xcodebuild -configuration Release -target libSDL_ttf-iOS -arch arm64 -sdk iphoneos clean build | |
cp build/Release-iphoneos/libSDL2_ttf.a templibs/libSDL2_ttf_arm64.a | |
lipo templibs/*.a -create -output ../../SDL_ttf/lib/libSDL2_ttf-iOS.a | |
rm -rf templibs | |
rm -rf build | |
# Build for tvOS | |
mkdir templibs | |
xcodebuild -configuration Release -target libSDL_ttf-tvOS -arch x86_64 -sdk appletvsimulator clean build | |
cp build/Release-appletvsimulator/libSDL2_ttf.a templibs/libSDL2_ttf_x86_64.a | |
xcodebuild -configuration Release -target libSDL_ttf-tvOS -arch arm64 -sdk appletvos clean build | |
cp build/Release-appletvos/libSDL2_ttf.a templibs/libSDL2_ttf_arm64.a | |
lipo templibs/*.a -create -output ../../SDL_ttf/lib/libSDL2_ttf-tvOS.a | |
rm -rf templibs | |
rm -rf build | |
# build for macOS | |
cd ../Xcode/ | |
xcodebuild -configuration Release HEADER_SEARCH_PATHS="../../SDL/include/ ./Frameworks/FreeType.framework/Headers/" MACOSX_DEPLOYMENT_TARGET="10.6" -target "Static Library" -arch x86_64 -sdk macosx clean build | |
cp build/Release/libSDL2_ttf.a ../../SDL_ttf/lib/libSDL2_ttf-macOS.a | |
rm -rf build | |
popd | |
# SDL_IMAGE | |
mkdir SDL_image | |
mkdir SDL_image/include | |
mkdir SDL_image/lib | |
curl $SDL_IMAGE_URL -o "$SDL_IMAGE_FILE_NAME" | |
unzip "$SDL_IMAGE_FILE_NAME" | |
pushd . | |
cd "$SDL_IMAGE_DIR_NAME/Xcode-iOS/" | |
cp ../SDL_image.h ../../SDL_image/include/ | |
mkdir templibs | |
# Build for iOS | |
xcodebuild -configuration Release -target libSDL_image-iOS -arch i386 -sdk iphonesimulator clean build | |
cp build/Release-iphonesimulator/libSDL2_image.a templibs/libSDL2_image_i386.a | |
xcodebuild -configuration Release -target libSDL_image-iOS -arch x86_64 -sdk iphonesimulator clean build | |
cp build/Release-iphonesimulator/libSDL2_image.a templibs/libSDL2_image_x86_64.a | |
xcodebuild -configuration Release -target libSDL_image-iOS -arch armv7 -sdk iphoneos clean build | |
cp build/Release-iphoneos/libSDL2_image.a templibs/libSDL2_image_armv7.a | |
xcodebuild -configuration Release -target libSDL_image-iOS -arch armv7s -sdk iphoneos clean build | |
cp build/Release-iphoneos/libSDL2_image.a templibs/libSDL2_image_armv7s.a | |
xcodebuild -configuration Release -target libSDL_image-iOS -arch arm64 -sdk iphoneos clean build | |
cp build/Release-iphoneos/libSDL2_image.a templibs/libSDL2_image_arm64.a | |
lipo templibs/*.a -create -output ../../SDL_image/lib/libSDL2_image-iOS.a | |
rm -rf templibs | |
rm -rf build | |
# Build for tvOS | |
mkdir templibs | |
xcodebuild -configuration Release -target libSDL_image-tvOS -arch x86_64 -sdk appletvsimulator clean build | |
cp build/Release-appletvsimulator/libSDL2_image.a templibs/libSDL2_image_x86_64.a | |
xcodebuild -configuration Release -target libSDL_image-tvOS -arch arm64 -sdk appletvos clean build | |
cp build/Release-appletvos/libSDL2_image.a templibs/libSDL2_image_arm64.a | |
lipo templibs/*.a -create -output ../../SDL_image/lib/libSDL2_image-tvOS.a | |
rm -rf templibs | |
rm -rf build | |
# build for macOS | |
cd ../Xcode/ | |
xcodebuild -configuration Release HEADER_SEARCH_PATHS="../../SDL/include/" -target "Static Library" MACOSX_DEPLOYMENT_TARGET="10.6" -arch x86_64 -sdk macosx clean build | |
cp build/Release/libSDL2_image.a ../../SDL_image/lib/libSDL2_image-macOS.a | |
rm -rf build | |
popd | |
# SDL_NET | |
mkdir SDL_net | |
mkdir SDL_net/include | |
mkdir SDL_net/lib | |
curl $SDL_NET_URL -o "$SDL_NET_FILE_NAME" | |
unzip "$SDL_NET_FILE_NAME" | |
pushd . | |
cd "$SDL_NET_DIR_NAME/Xcode-iOS/" | |
cp ../SDL_net.h ../../SDL_net/include/ | |
mkdir templibs | |
# Build for iOS | |
xcodebuild -configuration Release -target "Static Library" -arch i386 -sdk iphonesimulator clean build | |
cp build/Release-iphonesimulator/libSDL2_net.a templibs/libSDL2_net_i386.a | |
xcodebuild -configuration Release -target "Static Library" -arch x86_64 -sdk iphonesimulator clean build | |
cp build/Release-iphonesimulator/libSDL2_net.a templibs/libSDL2_net_x86_64.a | |
xcodebuild -configuration Release -target "Static Library" -arch armv7 -sdk iphoneos clean build | |
cp build/Release-iphoneos/libSDL2_net.a templibs/libSDL2_net_armv7.a | |
xcodebuild -configuration Release -target "Static Library" -arch armv7s -sdk iphoneos clean build | |
cp build/Release-iphoneos/libSDL2_net.a templibs/libSDL2_net_armv7s.a | |
xcodebuild -configuration Release -target "Static Library" -arch arm64 -sdk iphoneos clean build | |
cp build/Release-iphoneos/libSDL2_net.a templibs/libSDL2_net_arm64.a | |
lipo templibs/*.a -create -output ../../SDL_net/lib/libSDL2_net-iOS.a | |
rm -rf templibs | |
rm -rf build | |
# Build for tvOS | |
mkdir templibs | |
xcodebuild -configuration Release -target "Static Library" -arch x86_64 -sdk appletvsimulator clean build | |
cp build/Release-appletvsimulator/libSDL2_net.a templibs/libSDL2_net_x86_64.a | |
xcodebuild -configuration Release -target "Static Library" -arch arm64 -sdk appletvos clean build | |
cp build/Release-appletvos/libSDL2_net.a templibs/libSDL2_net_arm64.a | |
lipo templibs/*.a -create -output ../../SDL_net/lib/libSDL2_net-tvOS.a | |
rm -rf templibs | |
rm -rf build | |
# build for macOS | |
cd ../Xcode/ | |
xcodebuild -configuration Release HEADER_SEARCH_PATHS="../../SDL/include/" -target "Static Library" MACOSX_DEPLOYMENT_TARGET="10.6" -arch x86_64 -sdk macosx clean build | |
cp build/Release/libSDL2_net.a ../../SDL_net/lib/libSDL2_net-macOS.a | |
rm -rf build | |
popd | |
# SDL_MIXER | |
mkdir SDL_mixer | |
mkdir SDL_mixer/include | |
mkdir SDL_mixer/lib | |
curl $SDL_MIXER_URL -o "$SDL_MIXER_FILE_NAME" | |
unzip "$SDL_MIXER_FILE_NAME" | |
pushd . | |
cd "$SDL_MIXER_DIR_NAME/Xcode-iOS/" | |
cp ../SDL_mixer.h ../../SDL_mixer/include/ | |
mkdir templibs | |
# Build for iOS | |
xcodebuild -configuration Release -target libSDL_mixer-iOS -arch i386 -sdk iphonesimulator clean build | |
cp build/Release-iphonesimulator/libSDL2_mixer.a templibs/libSDL2_mixer_i386.a | |
xcodebuild -configuration Release -target libSDL_mixer-iOS -arch x86_64 -sdk iphonesimulator clean build | |
cp build/Release-iphonesimulator/libSDL2_mixer.a templibs/libSDL2_mixer_x86_64.a | |
xcodebuild -configuration Release -target libSDL_mixer-iOS -arch armv7 -sdk iphoneos clean build | |
cp build/Release-iphoneos/libSDL2_mixer.a templibs/libSDL2_mixer_armv7.a | |
xcodebuild -configuration Release -target libSDL_mixer-iOS -arch armv7s -sdk iphoneos clean build | |
cp build/Release-iphoneos/libSDL2_mixer.a templibs/libSDL2_mixer_armv7s.a | |
xcodebuild -configuration Release -target libSDL_mixer-iOS -arch arm64 -sdk iphoneos clean build | |
cp build/Release-iphoneos/libSDL2_mixer.a templibs/libSDL2_mixer_arm64.a | |
lipo templibs/*.a -create -output ../../SDL_mixer/lib/libSDL2_mixer-iOS.a | |
rm -rf templibs | |
rm -rf build | |
# Build for tvOS | |
mkdir templibs | |
xcodebuild -configuration Release -target libSDL_mixer-tvOS -arch x86_64 -sdk appletvsimulator clean build | |
cp build/Release-appletvsimulator/libSDL2_mixer.a templibs/libSDL2_mixer_x86_64.a | |
xcodebuild -configuration Release -target libSDL_mixer-tvOS -arch arm64 -sdk appletvos clean build | |
cp build/Release-appletvos/libSDL2_mixer.a templibs/libSDL2_mixer_arm64.a | |
lipo templibs/*.a -create -output ../../SDL_mixer/lib/libSDL2_mixer-tvOS.a | |
rm -rf templibs | |
rm -rf build | |
# build for macOS | |
cd ../Xcode/ | |
xcodebuild -configuration Release HEADER_SEARCH_PATHS="../../SDL/include/" -target "Static Library" MACOSX_DEPLOYMENT_TARGET="10.6" -arch x86_64 -sdk macosx clean build | |
cp build/Release/libSDL2_mixer.a ../../SDL_mixer/lib/libSDL2_mixer-macOS.a | |
rm -rf build | |
popd |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment