Xcode’s static library template comes with the -ObjC linker flag by default. Instead of removing that flag, this change removes the various imperfect workarounds we’ve been using to ensure that private SDK categories link. Given the size decrease in this static library since #2966 was fixed, we should have room to spare for the more straightforward approach. Moreover, an application that uses MGLMapView in a storyboard no longer needs to add -ObjC to the application target, which bloated the entire application, including other frameworks that had no need for -ObjC.
-ObjC isn’t even needed for dynamic frameworks, and the OS X SDK is only built as a dynamic framework.
Added a new Cocoa Touch dynamic framework target and Cocoa Touch static library target to the main iOS Xcode project. The targets are based on the templates provided by Xcode. They contain headers and source files in the darwin/ and ios/ subdirectories. Headers are explicitly marked public or project-internal instead of implicitly by subdirectory.
The SDK targets have a few dependencies that are managed by mason. Transform the config.gypi generated by configure into an .xcconfig file that Xcode uses to fill in compiler and linker flags.
Removed the iossdk target from platform.gypi and pared down the platform-lib target. make iproj opens the overall Xcode workspace instead of just the core project.
Resolved some warnings that are only now appearing because we’re using the standard warning and error flags instead of the pedantic and somewhat inappropriate flags that were forced by the gyp configuration files. Removed a console message informing developers of a long-ago deleted delegate method; the message was triggering a “selector not found” warning. Conditionalized some deprecated symbol usage that’s still needed for the static framework but not the dynamic framework, due to differing minimum deployment targets.
Added a build phase to the static library target that copies headers for use with the static library itself. This would allow us to potentially include a header in the dynamic framework but not the static library and vice-versa.
Updated the changelog to note that unused SVG files have been removed from the distribution.
It’s common enough to need a general Objective-C exception breakpoint that it should be made available to all developers by default. It’s disabled by default, since it may obscure the exception message.
ios.xcodeproj is an ordinary Xcode project with ordinary Xcode targets for iosapp and ios-bench, all contained in an ordinary Xcode workspace that happens to also reference the gyp-generated platform.xcodeproj. The iosapp target links to and embeds Mapbox.framework, which is a product of the gyp-generated platform.xcodeproj. ios-tests.xcodeproj is also in the workspace, enabling simultaneous debugging of KIF tests, the SDK, and core code.
Moved storyboards into Base.lproj and image assets into an asset catalog. Removed iOS 6 assets from the iosapp asset catalog. Moved the original ios-bench application icon SVG into a non-project location.
Removed app/Settings.bundle, which is identical to framework/Settings.bundle.
Removed a broken reference to an unused header from the ios-tests project.
There's no need to do the work that OnlineFileRequest does on a separate thread from the DefaultFileSource thread, and having AsyncTasks proxy to other tasks across a thread boundary adds needless complexity.
This is needed for plugging into an existing Looper because
we won't call ::run() on the main thread (this is called
on the Java side of the application automatically by Android).
But we still need to wake up and process the events. For that
we create a pipe and write to the pipe to wake up the main
loop and we process events on the callback of the fd handler.
Fixes#4682
Added a hidden preference to MGLMapView that enables “unnatural zooming”, in which the scroll wheel zooms in and out, as in a Web browser, instead of scrolling the map, as is the platform convention on iOS and OS X.
Added a checkbox to osxapp’ preferences window that toggles this hidden preference via a binding. You can either use this checkbox or set the MGLScrollWheelZoomsMapView user default to YES.
Fixes#4670.
* Main gyp files are now standardized as platform/<platform>/platform.gyp.
* Each platform gyp file defines appropriate loop_lib and headless_lib variables.
* Each platform gyp file includes mbgl.gypi, which defines base targets which may be useful to all platforms.
* CI targets are consistent across platforms: `make $(PLATFORM) && make test-$(PLATFORM)`.
* Renamed the "linux" test app to "glfw". It's now built in OS X CI.
* Android build flakiness is fixed.
* iOS CI builds the bench and iosapp targets.
* Mesa version is now in one place.
* CI scripts use bash "strict mode" and correct error handling.
* All build output goes to the build directory.
* Removed vestigial iOS/OS X/Android Travis scripts.
A large part of the iOS SDK deploy process is creating the various
binary flavors, uploading them to s3, and then testing that those
uploads worked by downloading them from s3 before uploading and
attaching them to the github release.
This script automates that build, upload, download, upload and
attach process and can be run after `mbx auth`.