Teensyduino 1.60 Beta #1

Anyone using MacOS? How about old Macs?
Sonoma 14.4.1 currently, have another machine that's Yosemite 10.10.5, but I don't really expect support for that, its 10 years old and the keyboard has some issues (ESC key completely gone, 'N' sometimes doesn't work!)
 
I recently got a 2023 M2 Mac Mini running MacOS 15 (Sequoia). Until now I've done all MacOS work on a 2011 MacBook Pro running 10.7 (Lion) and a 2013 Trashcan Mac Pro running 10.14 (Mojave), which of course run very old versions of Apple's tools. Pretty amazing these old Macs are still going strong after 10+ years (thought admittedly I got the trashcan Mac used on Ebay when the newer 2019 model caused prices to drop).

Been working these last few days to get Teensy development working with Sequoia and Xcode 16 command line tools. Just yesterday I managed to get everything except the gcc toolchain to built as universal binaries, so we should soon have M1-M4 native code and also keep supporting Intel based Macs. How far back on Intel we can go remains to be seen, but 10.10 (Yosemite) is the absolute theoretical limit.

Sadly, my efforts to rebuild the gcc toolchain for native M1-M4 went down in flames. Looks like gcc 13 is the first version to support M1 native builds, but we're on gcc 11. So a fully M1 native isn't in the cards yet. Right now I'm experimenting with at least detecting when running on a M1-M4 machine which lacks Rosetta, so a helpful warning message can be printed rather than having it just fail with cryptic info.

So far I've only got the Arduino 2.x.x packages building on Sequoia. I'm debating whether trying to keep Arduino 1.8.19 support on MacOS is worthwhile. The way I was building on Lion+Mojave always took a lot of effort. But that old way can't work at all anymore, because Apple discontinued support for Notarization using older Xcode tools. If I keep building a MacOS version of Arduino 1.8.19 with Teensy support, it's going to require a lot of work.
 
Been working these last few days to get Teensy development working with Sequoia and Xcode 16 command line tools. Just yesterday I managed to get everything except the gcc toolchain to built as universal binaries, so we should soon have M1-M4 native code and also keep supporting Intel based Macs. How far back on Intel we can go remains to be seen, but 10.10 (Yosemite) is the absolute theoretical limit.
Sounds like a real PIA!
Sadly, my efforts to rebuild the gcc toolchain for native M1-M4 went down in flames. Looks like gcc 13 is the first version to support M1 native builds, but we're on gcc 11.
I hate to ask a dumb question, but have you tried building using gcc 13? If so how bad did it fail? i.e. is it worth trying to migrate to
something like gcc 13.3?

I'm debating whether trying to keep Arduino 1.8.19 support on MacOS is worthwhile.
FWIW - my limited use of my older Macbook pro (2013) running Catalina, these days I only do IDE 2.x...
 
I haven't tried gcc 13.3. Maybe it will be smoother than the problems going from 5.4 to 11.3 (like constexpr contructor no longer giving static init), but at least for now I'm hoping to stay with gcc 11.3 and focus on merging audio library contributions and bringing in MTP. Those should bring a lot more value to everyone than updating the toolchain again.

Short term plan is to package up 1.60-beta2 within the next couple days. It'll have pretty much the same code and features as beta1, but I've updated my build process for every system. I also automated building of the JSON index. Want to get a set of installers and packages published with my updated build systems before changing too much code.

Main goal for the rest of 1.60 betas will be merging and testing stuff that's been languishing for the last couple years.

Later in 1.61, will focus on a redesign of Teensy Loader.

Toolchain update will probably wait until at least 1.62... but to be realistic, likely much longer unless we have a really compelling need. A fully M1 native package for MacOS would be nice if it could be done easily with the toolchain we already have, but so many other things are much more important that updating the toolchain. Updating the toolchain almost always leads to subtle issues, which can only end up distracting from accomplishing the much more important things.
 
Last edited:
Back
Top