diff --git a/.travis.yml b/.travis.yml index d2d77a43b..a2bf164c6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,16 +1,23 @@ language: cpp -os: - - linux - - osx - -compiler: - - clang +matrix: + exclude: + - os: linux + include: + - os: linux + env: BUILDTYPE=Release + compiler: clang + - os: linux + env: BUILDTYPE=Debug + compiler: clang + - os: linux + env: BUILDTYPE=Release + compiler: gcc + - os: osx + env: BUILDTYPE=Debug + compiler: clang env: - matrix: - - BUILDTYPE=Release - - BUILDTYPE=Debug global: - secure: "bG4YYWMfl9API0MSRgmOaJrlGLv06tRg9KJNawBieZvBJbITPpxVGJZT3/l/SEJ+Rl15e2dRex4k+MGQlmT2SqPQxTEYWv1qxNigKPPcla7IWeNmWWqW8uVvFjdglojgBOK2k/xErVQtA4zDfi3mwSXH4DKwquXWsoEKmX2SV7M=" - secure: "Cbvap9ubVKgjPe3hUhI6JGeDZzBXHpOG9RaYKh+SdoIPhKnlJiNOYm1egomi+e4uqJInlFKuVHTw7Ng9Cun6Zm0jIxpkSchv1GpsR7hmB3UGnGed19Dw8121FwuUaktN+4YnbVlsyd+u8EHD3+h58t4eELrLrZolM4rS7DL6caA=" 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 3eda50210..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+ @@ -85,9 +89,9 @@ Set the environment variable `MAPBOX_ACCESS_TOKEN` to your token. Ensure you have git and other build essentials: sudo apt-get update - sudo apt-get install git build-essential zlib1g-dev automake libtool xutils-dev make cmake pkg-config nodejs-legacy curl + sudo apt-get install git build-essential zlib1g-dev automake libtool xutils-dev make cmake pkg-config nodejs-legacy curl libuv-dev -Install a `-std=c++11` capable compiler +If you are running Ubuntu 13.10 or older, install a `-std=c++11` capable compiler: sudo add-apt-repository --yes ppa:ubuntu-toolchain-r/test sudo apt-get update diff --git a/ios/mapbox-gl-cocoa b/ios/mapbox-gl-cocoa index 8a315662b..461024ae4 160000 --- a/ios/mapbox-gl-cocoa +++ b/ios/mapbox-gl-cocoa @@ -1 +1 @@ -Subproject commit 8a315662b365566cb37b3c9f13da6d6730d0abdb +Subproject commit 461024ae406fd98b7a27d3297298cf68284e32ad 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 e95530498..a605241da 100755 --- a/setup-libraries.sh +++ b/setup-libraries.sh @@ -67,9 +67,13 @@ export CXX11=true if [ ${UNAME} = 'Darwin' ]; then if [ ! -z "${TRAVIS:-}" ]; then - if aws s3 cp s3://${AWS_S3_BUCKET}/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://${AWS_S3_BUCKET}/dependencies/build-cpp11-libcpp-osx_${MP_HASH}_${DIR_HASH}.tar.gz ./out/ ; then + if aws s3 cp s3://${AWS_S3_BUCKET}/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 @@ -99,12 +103,10 @@ export LIBUV_VERSION=0.10.28 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 export LIBUV_VERSION=0.10.28 @@ -116,21 +118,22 @@ export LIBUV_VERSION=0.10.28 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://${AWS_S3_BUCKET}/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://${AWS_S3_BUCKET}/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://${AWS_S3_BUCKET}/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