From 5788714e3b2f0e5d22293bb20fb726a17e68dc86 Mon Sep 17 00:00:00 2001 From: "Justin R. Miller" Date: Wed, 17 Sep 2014 18:26:33 -0700 Subject: [PATCH] fix 64-bit iOS builds --- Makefile | 17 ++++++++++++----- README.md | 4 ++++ ios/mapbox-gl-cocoa | 2 +- mapboxgl.gyp | 1 + setup-libraries.sh | 37 ++++++++++++++++++++----------------- 5 files changed, 38 insertions(+), 23 deletions(-) diff --git a/Makefile b/Makefile index d5d713613..b7aa397e1 100644 --- a/Makefile +++ b/Makefile @@ -9,6 +9,12 @@ setup: config.gypi config.gypi: ./setup-libraries.sh +xlibs: + @./mapnik-packaging/osx/darwin_configure.sh osx + +ilibs: + @./mapnik-packaging/osx/darwin_configure.sh ios + # Builds the regular library mbgl: config.gypi mapboxgl.gyp node deps/run_gyp mapboxgl.gyp --depth=. -Goutput_dir=.. --generator-output=./build/mbgl -f make @@ -37,7 +43,7 @@ xtest: config.gypi clear_xcode_cache node ##### Makefile builds ########################################################## -# Builds the linux app with make. This is also used by Travis CI +# Builds the linux app with make. linux: config.gypi linux/mapboxgl-app.gyp node deps/run_gyp linux/mapboxgl-app.gyp --depth=. -Goutput_dir=.. --generator-output=./build/linux -f make $(MAKE) -C build/linux BUILDTYPE=$(BUILDTYPE) V=$(V) linuxapp @@ -71,14 +77,14 @@ clear_xcode_cache: fi # build Mac OS X project for Xcode -xproj-cli: config.gypi macosx/mapboxgl-app.gyp clear_xcode_cache node +xproj-cli: config.gypi xlibs macosx/mapboxgl-app.gyp clear_xcode_cache node deps/run_gyp macosx/mapboxgl-app.gyp --depth=. --generator-output=./build -f xcode xproj: xproj-cli open ./build/macosx/mapboxgl-app.xcodeproj # build iOS project for Xcode -iproj-cli: config.gypi ios/mapbox-gl-cocoa/app/mapboxgl-app.gyp clear_xcode_cache node +iproj-cli: config.gypi ilibs ios/mapbox-gl-cocoa/app/mapboxgl-app.gyp clear_xcode_cache node deps/run_gyp ios/mapbox-gl-cocoa/app/mapboxgl-app.gyp --depth=. --generator-output=./build -f xcode iproj: iproj-cli @@ -98,7 +104,8 @@ clean: clear_xcode_cache -rm -rf ./config.gypi distclean: clean - -rm -rf ./config.gypi - -rm -rf ./mapnik-packaging/osx/out/ + -rm -rf ./mapnik-packaging/osx/out/build-* + -rm -rf ./mapnik-packaging/osx/out/universal + -find ./mapnik-packaging/osx/out/packages -type d ! -name 'packages' -maxdepth 1 -exec rm -rf {} \; .PHONY: mbgl test linux diff --git a/README.md b/README.md index 3887e57ec..82ad7966e 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,8 @@ To create projects, you can run: and settings storage. This is what is also being built on Linux. - `make linux`: Builds the Linux GLFW application with `make`. +Note that if you are doing iOS development as well, to toggle from iOS back to OS X, you will need to `make xproj` again. + Target OS: 10.9+ ## iOS @@ -74,6 +76,8 @@ This downloads all required dependencies, builds them and creates universal libr Lastly, `make iproj` to create and open an Xcode project with an iOS-specific view controller housing. +Note that if you are doing OS X development as well, to toggle from OS X back to iOS, you will need to `make iproj` again. + Target devices: iPhone 4 and above (4S, 5, 5c, 5s) and iPad 2 and above (3, 4, mini and/or retina). Target OS: 7.0+ diff --git a/ios/mapbox-gl-cocoa b/ios/mapbox-gl-cocoa index 8a315662b..16f6352d4 160000 --- a/ios/mapbox-gl-cocoa +++ b/ios/mapbox-gl-cocoa @@ -1 +1 @@ -Subproject commit 8a315662b365566cb37b3c9f13da6d6730d0abdb +Subproject commit 16f6352d4d53c5ca1bb46e3deb73fdddc1db4558 diff --git a/mapboxgl.gyp b/mapboxgl.gyp index f389e7d48..dcd89f3a7 100644 --- a/mapboxgl.gyp +++ b/mapboxgl.gyp @@ -196,6 +196,7 @@ 'xcode_settings': { 'SDKROOT': 'iphoneos', 'SUPPORTED_PLATFORMS':['iphonesimulator','iphoneos'], + 'ARCHS': [ "armv7", "armv7s", "arm64", "i386", "x86_64" ], 'TARGETED_DEVICE_FAMILY': '1,2', 'CODE_SIGN_IDENTITY': 'iPhone Developer', 'IPHONEOS_DEPLOYMENT_TARGET': '7.0', diff --git a/setup-libraries.sh b/setup-libraries.sh index dc0ced33e..42c9ab108 100755 --- a/setup-libraries.sh +++ b/setup-libraries.sh @@ -51,7 +51,7 @@ set -u NODE=$(which node) NPM=$(which npm) -MP_HASH="e741a075d28812e5d16b581e1540248fe19c52ce" +MP_HASH="eb8c6d7e6bd6adb42c232ed806b889f3e6825bb5" DIR_HASH=$(echo `pwd` | git hash-object --stdin) if [ ! -d 'mapnik-packaging/' ]; then git clone https://github.com/mapnik/mapnik-packaging.git @@ -67,9 +67,13 @@ export CXX11=true if [ ${UNAME} = 'Darwin' ]; then if [ ! -z "${TRAVIS:-}" ]; then - if aws s3 cp s3://mapbox-gl-testing/dependencies/build-cpp11-libcpp-universal_${MP_HASH}_${DIR_HASH}.tar.gz ./out/ ; then - rm -rf out/build-cpp11-libcpp-universal - tar -xzf out/build-cpp11-libcpp-universal_${MP_HASH}_${DIR_HASH}.tar.gz + if aws s3 cp s3://mapbox-gl-testing/dependencies/build-cpp11-libcpp-osx_${MP_HASH}_${DIR_HASH}.tar.gz ./out/ ; then + if aws s3 cp s3://mapbox-gl-testing/dependencies/build-cpp11-libcpp-ios_${MP_HASH}_${DIR_HASH}.tar.gz ./out/ ; then + rm -rf out/build-cpp11-libcpp-x86_64-macosx + rm -rf out/build-cpp11-libcpp-universal + tar -xzf out/build-cpp11-libcpp-osx_${MP_HASH}_${DIR_HASH}.tar.gz + tar -xzf out/build-cpp11-libcpp-ios_${MP_HASH}_${DIR_HASH}.tar.gz + fi fi fi @@ -95,12 +99,10 @@ source iPhoneSimulator.sh if [ ! -f out/build-cpp11-libcpp-i386-iphonesimulator/lib/libuv.a ] ; then ./scripts/build_libuv.sh ; fi echo ' ...done' -# libs conflict with MacOSX build -# TODO: need to break apart targets -#source iPhoneSimulator64.sh -# if [ ! -f out/build-cpp11-libcpp-x86_64-iphonesimulator/lib/libpng.a ] ; then ./scripts/build_png.sh ; fi -# if [ ! -f out/build-cpp11-libcpp-x86_64-iphonesimulator/lib/libuv.a ] ; then ./scripts/build_libuv.sh ; fi -# echo ' ...done' +source iPhoneSimulator64.sh + if [ ! -f out/build-cpp11-libcpp-x86_64-iphonesimulator/lib/libpng.a ] ; then ./scripts/build_png.sh ; fi + if [ ! -f out/build-cpp11-libcpp-x86_64-iphonesimulator/lib/libuv.a ] ; then ./scripts/build_libuv.sh ; fi + echo ' ...done' source MacOSX.sh if [ ! -f out/build-cpp11-libcpp-x86_64-macosx/lib/libpng.a ] ; then ./scripts/build_png.sh ; fi @@ -111,21 +113,22 @@ source MacOSX.sh if [ ! -d out/build-cpp11-libcpp-x86_64-macosx/include/boost ] ; then ./scripts/build_boost.sh `pwd`/../../src/ `pwd`/../../include/ `pwd`/../../linux/ `pwd`/../../common/ ; fi echo ' ...done' +# setup iOS universal libs ./scripts/make_universal.sh if [ ! -z "${AWS_ACCESS_KEY_ID}" ] && [ ! -z "${AWS_SECRET_ACCESS_KEY}" ] ; then - tar -zcf out/build-cpp11-libcpp-universal_${MP_HASH}_${DIR_HASH}.tar.gz out/build-cpp11-libcpp-universal - aws s3 cp --acl public-read out/build-cpp11-libcpp-universal_${MP_HASH}_${DIR_HASH}.tar.gz s3://mapbox-gl-testing/dependencies/ + tar -zcf out/build-cpp11-libcpp-ios_${MP_HASH}_${DIR_HASH}.tar.gz out/build-cpp11-libcpp-universal + aws s3 cp --acl public-read out/build-cpp11-libcpp-ios_${MP_HASH}_${DIR_HASH}.tar.gz s3://mapbox-gl-testing/dependencies/ + tar -zcf out/build-cpp11-libcpp-osx_${MP_HASH}_${DIR_HASH}.tar.gz out/build-cpp11-libcpp-x86_64-macosx + aws s3 cp --acl public-read out/build-cpp11-libcpp-osx_${MP_HASH}_${DIR_HASH}.tar.gz s3://mapbox-gl-testing/dependencies/ fi fi cd ../../ -./configure \ ---pkg-config-root=`pwd`/mapnik-packaging/osx/out/build-cpp11-libcpp-universal/lib/pkgconfig \ ---boost=`pwd`/mapnik-packaging/osx/out/build-cpp11-libcpp-universal \ ---npm=$NPM \ ---node=$NODE + +# default to OS X build product symlinking +./mapnik-packaging/osx/darwin_configure.sh osx elif [ ${UNAME} = 'Linux' ]; then