New Xcode Build System and BuildSettingExtractor

Last week at WWDC 2017, Apple announced a new build system for Xcode, with an opt-in preview in Xcode 9. The new system is written in Swift and promises to be a significant advance in a number of areas including performance and dependency management. The new system is built on top of the open source llbuild project and lays the foundation for integrating the Xcode build system with the Swift Package Manager.

You opt in to the new build system per project or workspace. To do so in the Xcode 9 beta, open a project file and then go to File > Project Settings… and in the sheet that appears, choose New Build System (Preview) from the Build System popup menu. Note that the menu item will be File > Workspace Settings… if you are working with a workspace.

Project settings sheet with popup menu to select build system

Opt-in to the new build system for a project in File > Project Settings…
(For a workspace use File > Workspace Settings…)

The big news of a new build system made me curious to see if there were any changes I would need to make to BuildSettingExtractor.

Icon for the app BuildSettingExtractor

BuildSettingExtractor helps you move to xcconfig files.

If you are not familiar with it, BuildSettingExtractor is an open source utility that helps you move to using xcconfig files. It reads the build settings embedded in an Xcode project file and extracts the settings into xcconfig files. It can also extract the Xcode help for each build setting to produce automatically documented configuration files. (Read my prior post Generating Xcode Build Configuration Files with BuildSettingExtractor for more about the benefits of using xcconfig files.)

My investigation led me to look more closely at what was changing and what was staying the same when it came to the new build system and build settings in Xcode 9.

When it comes to build settings, there are two big operations: Defining build settings and using build settings.

As developers, we spend our time on the first part, defining build settings1. In a complex project or workspace, this can be an involved process. Defining build settings includes all of the following:

  • Build settings defined for each target and for the project itself
  • Variable substitution to define derived build settings using ${} or $()
  • Conditional build settings based on build configuration, architecture, and SDK
  • Optionally using xcconfig files to define build settings
  • Understanding the well-defined hierarchy of how build settings are inherited and used

In the end, these intricate and flexible mechanisms for defining build settings resolve into a big dictionary of key-value pairs that is passed to the build system.

The build system is what uses the build settings to help direct how it builds a target. The build system coordinates the various tools required, such as the compiler and linker. It uses a target’s build phases and build settings to generate a build product (e.g. app, extension, framework, library). It understands all of a target’s dependencies and builds them as well. The build system is a complicated beastie with a lot of responsibilities and it is what is being modernized beginning in Xcode 9.

Logo of new Xcode build system

New build system.
Same build settings.

On a number of my projects, I’ve switched from the current build system to the new build system in Xcode 9 to investigate. It appears that everything about defining build settings remains unchanged. Moving between the old and new build systems did not cause any build setting changes or recommended changes. The mechanisms for generating that giant bucket of key-value pairs known as build settings seem to be just the same as before.

This is great news. As developers, we don’t need to learn a new complex system for defining build settings. We get to enjoy the benefits of a new, faster, modern build system with our existing build settings left intact.

As the developer of BuildSettingExtractor, this is also great news—no big changes required. After doing some testing and a tweak here and there, BuildSettingExtractor is now updated to work with the Xcode 9 beta. I invite you to check out BuildSettingExtractor and the new build system in Xcode 9. •


1And debugging them.

LIVE near WWDC 2017 Info

Click For Full Show Details and Tickets

Wed, June 7th, 7:00 PM – 11:00 PM
City National Civic Theater
135 W San Carlos St, San Jose CA

Join us for the 6th Annual LIVE near WWDC show by James Dempsey and the Breakpoints! It is shaping up to be our biggest show ever!

This year’s show will be about as near to WWDC as you can get. We’re playing at the historic City National Civic Theater — directly across the street from WWDC.

  • For this year’s big event, we’ve teamed up with women@wwdc (formerly WWDCGirls) for a combined cocktail hour and concert—all to benefit App Camp For Girls.
  • Ticket proceeds benefit App Camp For Girls.
  • Amazing new venue — right across the street from WWDC.
  • No WWDC ticket required!
  • All ages welcome!
  • Bar with top-shelf liquors, beer and wine. Your ticket includes a certain number of drinks:
    • ​VIP Ticket: Unlimited drinks
    • General Admission: Three drinks
    • Student / New Grad: One drink

Click For Full Show Details and Tickets

iOS Device Summary: September 2016 Updates

I’ve updated my iOS Device Summary with hardware announced at the Apple event on September 7, 2016.

Check out the iOS Device Summary page for more info about the idea behind the summary as well as PDF downloads—including optimized files for printing.

A few notes:

Sometimes fall brings new iOS hardware across all product lines. This year, only new iPhone versions were released.

In terms of legacy hardware support, iOS 10 drops support for devices running the A5 and A5X processor. This includes iPhone 4S , which means that there are no devices with a 3.5-inch screen that support iOS 10.

.Don’t feel badly for devices with the A5 chip—they have had a very good run. The iPhone 4S debuted running iOS 5 and iPad 2 debuted with iOS 4.2.1. Both were supported up through iOS 9.

Time will tell if the next version of iOS drops support for A6 and A6X devices. When support for those devices is dropped, iOS devices will be 64-bit only.

In the meantime, of course, it is important to test on older devices running the oldest version of iOS that you support.

I hope you find this version of the chart helpful. •

Chart depicting iOS devices by screen size, processor and supported OS version

 

tvOS and watchOS Device Summary: April Edition

After updating the popular iOS Device Summary in March, it seemed the beginning of April would be a good time to introduce summaries for devices running the most recently introduced Apple operating systems: tvOS and watchOS.

I hope you find these as useful as I have. •

Chart depicting tvOS devices by screen size, processor and supported OS version

Chart depicting watchOS devices by screen size, processor and supported OS version

iOS Device Summary: March 2016 Updates

I’ve updated my iOS Device Summary with hardware announced at the Apple event on March 21, 2016.

Check out the iOS Device Summary page for more info about the idea behind the summary as well as PDF downloads—including optimized files for printing.

A few notes on the newly introduced hardware:

The introduction of the 9.7-inch iPad Pro means even more users will be putting the Apple Pencil and Smart Keyboard through its paces. Even if your app is not a drawing or text-centric, you might consider having at least one size of iPad Pro with these accessories for development and testing.

The iPhone SE brings paris a well-established iOS screen resolution with a faster processor. From a testing perspective, apps that perform well on previous 4-inch devices should perform even better on the new hardware.

Only the display of the 9.7-inch iPad Pro has the new True Tone feature.

The Night Shift feature introduced in iOS 9.3 is available to devices using at least an A7 chip—every device on the 64-bit side of the divide on the summary chart.

I hope you find this version of the chart helpful. •

Chart depicting iOS devices by screen size, processor and supported OS version

 

iOS Device Summary: Fall 2015 Updates

I’ve updated my iOS Device Summary with hardware announced at the Apple event on September 9, 2015. This edition drops iOS 5 and A4-based devices to make way for iOS 9 and the A9 and A9X.

(This update has taken a little while—I’ve been busy helping to build a new cloud computer at Upthere.  I’m excited to say that we launched yesterday. I encourage you to learn more and join the beta at upthere.com.)

Check out the iOS Device Summary page for more info about the idea behind the summary as well as PDF downloads—including optimized files for printing.

The biggest news this fall is the iPad Pro, which introduces the largest iOS screen size ever, but also two new Apple accessories that may be important to test your app with: the Apple Pencil and the Smart Keyboard. On the other new devices, iPhone and iPad screen resolutions remain the same and get faster processors. From a testing perspective, things that perform well on last year’s models should perform even better on the new hardware.

It is also interesting to note that all of the devices that can run iOS 6 are on the 32-bit side of the processor divide.

I hope you find this version of the chart helpful. •

Chart depicting iOS devices by screen size, processor and supported OS version

iOS Device Summary: A8 iPod Touch Update

I’ve updated my iOS Device Summary with the newly announced iPod touch.

You can check out the iOS Device Summary page for more info about the summary plus PDF downloads—including optimized files for printing.

For developers, the iPod touch has been a useful, relatively inexpensive compact device for testing. The previous model was released almost four years ago and sits at the very low end of devices that support iOS 8 and iOS 9.  The new sixth generation iPod touch is a welcome addition as a more affordable testing device with a recent 64-bit processor.  Like previous generations, the new iPod touch has a 4-inch display, so an iPhone is still needed for on-device testing of larger screen resolutions.

It is interesting to note that every iOS device that Apple currently sells, except the iPhone 5c, has a 64-bit processor.

This also means that if you need to acquire older models for testing iOS 8 and iOS 9, you will need to turn to refurbished or used devices.

I hope you find this version of the chart helpful. •

Chart depicting iOS devices by screen size, processor and supported OS version

iOS Device Summary: iOS 9 Update

I’ve updated my iOS Device Summary with the iOS 9 info Apple has publicly posted.

Check out the iOS Device Summary page for the rationale behind the summary plus PDF downloads—including optimized files for printing.

Some things to note from WWDC announcements and Apple product lineup changes:

All devices that support iOS 8 will also support iOS 9.

Apps are currently required to support both 32-bit and 64-bit processors. With iOS 9, the App Store will also accept apps that are 64-bit only. This allows developers to limit deployment of an app to more recent devices with faster CPUs and GPUs. The device summary now has a line showing where 32-bit ends and 64-bit begins.

Finally, devices for testing:

  • At $199, the 16 GB, 5th generation iPod touch is still the most affordable compact iOS 9 device
  • At $299, the 16 GB, WiFi iPad mini 2 is now the most affordable iOS 9 iPad
  • As of 6/19/15, the original iPad mini is discontinued—try used and refurbished devices for low-end iPad testing.

I hope you find this version of the chart helpful. •

Chart depicting iOS devices by screen size, processor and supported OS version

Where I’ll be at WWDC 2015

I’ll be doing a few things next week at WWDC and wanted to pass along my schedule. Hope to see you at one or more of these happenings!

Monday: NeXTEVNT Fundraiser for the Cartoon Art Museum

NeXTEVNT Logo
I’ll be doing a short set of James Dempsey and the Breakpoints songs at this fundraising event at the Cartoon Art Museum.

This event has been a lot of fun each year, always with great speakers and plenty of time to meet and mingle with very interesting folks. If you are a fan of comics, cartoons, or animation — or have an interest in where the technology we use every day comes from — this is a great event for a great cause.

I highly encourage you to check out the details and come to the event.

NeXTEVNT Fundraiser for the Cartoon Art Museum
Monday, June 8th, 4:00 PM – 9:00 PM

Wednesday: LIVE near WWDC 2015 (aka The Big Show!)

Logo for James Dempsey and the Breakpoints, LIVE near WWDC 2015
Our LIVE near WWDC show is the biggest James Dempsey and the Breakpoints performance of the year — and this year’s show is our biggest ever.  Thanks to our fabulous sponsors, we’re at a bigger venue and the drinks are on us!

The event is free, but registration is required.  We are handling admission the way AltConf does.  Registration does not guarantee admission.  For general admission registrations, we will fill the venue on a first come, first admitted basis.

You can read all of the details and register for the event here.

James Dempsey and the Breakpoints, LIVE near WWDC presented by Capital One
Wednesday, June 10th, Doors open at 7:30 PM, show starts at 8:00 PM. Event goes until 10:30 PM

Friday: Closing session at AltConf 2015

AltConf Logo
I’ll be closing out the week at AltConf 2015 again this year with an easy-going look back at the announcements of WWDC 2015 and their possible implications in a session entitled So, That Just Happened.

This session is a talk about the week in review and not a set of James Dempsey and the Breakpoints songs.

However, there may also be a bit involving a ukulele.

AltConf 2015, June 8 – June 12, 2015
Closing Session, Friday, June 12th, 3:15 PM, Theater 15

A Busy WWDC 2015 Week

It will be a busy WWDC week as we walk around with our heads swimming trying to soak in all of the new announcements.

I hope you can make it out to one or more of these events!  And if you do, please say hello! •


Going Upthere

I’m very happy to announce that I have joined the team at Upthere.

Here’s the gist from upthere.com:

Our team is hard at work in Palo Alto, CA, building out the future of the cloud. We can‘t wait to tell you more, but right now we‘re working very quietly. Some really great engineers and designers who‘ve built some of the world‘s most successful products are already here.

Even though I’m now at a stealth mode startup, I’m not dropping completely out of sight.

I’ll still be speaking at conferences and James Dempsey and the Breakpoints will continue performing and writing new songs whenever inspiration strikes.

In fact, I’m gearing up for a spring tour that starts in England and then criss-crosses the USA. At each stop I’ll be speaking and performing in a Breakpoint Jam — a set of songs from our iTunes chart-topping album Backtrace.

I hope you are able to make it out to one of these excellent conferences. If you do, please say hello! •