]> git.hungrycats.org Git - xscreensaver/blobdiff - OSX/README
From https://www.jwz.org/xscreensaver/xscreensaver-6.09.tar.gz
[xscreensaver] / OSX / README
index f8f7458b03563659d714cda5e3fecc3517d8209a..7bfd62550d625c83c05390505bde9ac711158140 100644 (file)
 
-This directory contains the MacOS-specific code for building a Cocoa
+This directory contains the macOS-specific code for building a Cocoa
 version of xscreensaver without using X11.
 
-To build it, just type "make", or use the included XCode project.  The
-executables will show up in the "build/Release/" and/or "build/Debug/"
-directories.
+############################################################################
+#
+#   To set up your macOS and iOS development environment:
+#
+############################################################################
 
-To build these programs, XCode 2.4 or later is required.
-To run them, MacOS 10.4.0 or later is required.
+Installation:
 
+  - Install the latest Xcode from the App Store.  Note: it is
+    mind-bogglingly gigantic.
 
-This is how you add a new screen saver to the Xcode project. It's a
-ridiculously long list of steps!
+  - Install ImageMagick ("convert"). Either MacPorts or Homebrew are
+    good choices for installing open source software on macOS.
+
+
+Make sure everything works:
+
+  - Open "xscreensaver.xcodeproj" in Xcode.
+
+  - Select "All Savers" on the "Scheme" menu in the upper left, to the
+    right of the "Play / Pause" buttons.
+
+  - ⌘B "Product / Build"
+
+  - If there is an error about "No signing certificate" or "No account for
+    team", this is because the project is configured to do code signing with
+    my account instead of yours.
+
+    - Select the "Signing & Capabilities" tab.
+    - Replace the existing "Team ID" with your own.
+    - Set "Signing Certificate" to "Apple Development" for Debug and Release.
+    - Change "Bundle Identifier" from "org.jwz" to "org.YOURNAME".
+
+  - If you get errors about curl being unable to download thumbnail images,
+    you need to add Xcode.app to "Full Disk Access" in System Settings.
+
+  - There might be a build error related to Sonar and ICMP.  Click on the red
+    error icon to see the error message and follow the instructions there to
+    fix it.
+
+
+To build and test a macOS saver:
+
+  - Select the saver you want on the "Scheme" menu in the upper left,
+    to the right of the "Play / Pause" buttons.
+
+  - Select "My Mac" from the "platform" menu to the right of that.
+
+  - Press "Play".  This will run the "SaverTester" app under the debugger.
+    SaverTester is a testing framework that will load and run your selected
+    ".saver" bundle in the same manner that "System Preferences" and
+    "ScreenSaverEngine" would have.
+
+  - To get the system's screen saver to use your debug builds, you can
+    do something like this:
+
+    ln -s ~/xscreensaver/OSX/build/Debug/*.saver ~/Library/Screen\ Savers/
+
+
+To build and test an iOS saver:
+
+  - Select "XScreenSaver-iOS" on the "Scheme" menu.
+
+  - On the platform menu, select one of the iOS simulators.  Press "Play".
+    They take a while to start up the first time.
+
+  - To install and test it on a physical iOS device, you will need to first
+    pay Apple an additional $100 per year for an iOS developer account.
+    There's no way to install iOS code onto a device that you already own
+    without doing this, because Apple are evil.
+
+  - If you have already installed the App Store version of XScreenSaver
+    on your physical iOS device, you may need to delete it before you
+    can install your own debug build.
+
+
+Building for older operating systems:
+
+  Basically, you can't.  For example, to produce code that is compatible
+  with macOS 10.6, you would need to build using Xcode 5.0.2 or earlier.
+  But you can't even *run* older versions of Xcode on newer versions of
+  macOS.  Apple's longstanding corporate policy of planned obsolescence
+  means that they make it as difficult as possible for you to support
+  anything that's more than two years old on desktop, or six months on
+  mobile.
+
+
+############################################################################
+#
+#   To add a new screen saver to the Xcode project:
+#
+############################################################################
+
+  It is a ridiculously long list of steps!  This list is here mostly for
+  my benefit.  I tried to automate some of this with Applescript but that
+  appears to be impossible.
 
   1: Duplicate a target (Dangerball for GL, or Attraction for X11).
   2: Rename it, and drag it to the right spot in the list.
-  3: Delete the dangerball.c and dangerball.xml files from the new target.
-  4: Delete the "DangerBall copy-Info.plist" file that got created.
-  5: Delete the "DangerBall copy-Info.plist" from the Build Settings too.
-  6: Change PRODUCT_NAME in Build Settings.
-  7: Manage Schemes, rename "DangerBall Copy".
-  8: Move to the right place in the list.
-  9: Scheme / Run: set SELECTED_SAVER environment variable.
- 10: Scheme / Run / Info: Executable: SaverTester.app.
- 11: File / Add Files / the new .c and .xml.
-     Add to targets: the new target, and also "XScreenSaver-iOS".
- 12: Re-order them in the file list.
- 13: In target "All Savers (OpenGL)" add the new target as a dependency.
- 14: In target "XScreenSaver-iOS", reorder new files in "Copy" and "Compile".
+  3: Delete the "DangerBall copy-Info.plist" file that got created.
+  4: Delete the dangerball.c and dangerball.xml files from Build Phases.
+  5: Delete the "DangerBall copy-Info.plist" from Build Settings.
+  6: Manage Schemes, rename "DangerBall Copy".
+  7: Move to the right place in the list.
+  8. Scheme / Profile / Info: Executable: SaverTester.app.
+     Scheme / Run / Info: Executable: SaverTester.app.
+  9: Scheme / Run / Arguments: set SELECTED_SAVER environment variable.
+ 10: File / Add Files / the new .c and .xml.
+     Add To Targets: the new target, and "XScreenSaver-iOS" and "-tvOS".
+ 11: Re-order the two files in the file list on the left.
+ 12: The files might not have moved. This means Xcode is gonna crash soon.
+     It will repair itself after.
+ 13: In target "All Savers (OpenGL)" add the new target as Build Phases /
+     Target Dependency.
+ 14: In target "XScreenSaver-iOS", reorder new files in Build Phases /
+     "Copy" and "Compile", since they showed up in a random place.
  15: In target "XScreenSaver-iOS", add "-DUSE_GL" to the new file's options.
- 16: Put a 200x150 screen shot in ~/www/xscreensaver/screenshots/
+ 16: Put a 720p screen shot in ~/www/xscreensaver/screenshots/
  17: ln -s ../../src/xscreensaver/OSX/build/Debug/NEW.saver \
            ~/Library/Screen\ Savers/
- 18: Build "XScreenSaver-iOS" once. then:
-     cd ~/src/xscreensaver/OSX ; make ios-function-table.m
-     and build it again.
- 19: cvs add xscreensaver.xcodeproj/xcuserdata/*/xcschemes/*.xcscheme
- 20: Don't forget to create a man page from the XML with xml2man.pl,
-     and update Makefile.in.
+ 18: git add xscreensaver.xcodeproj/xcshareddata/xcschemes/*.xcscheme
+ 19: Create a man page from the XML with xml2man.pl, and update Makefile.in.
+ 20: Upload a YouTube video: -record-animation 3600 -geom 1920x1080+128+64
+     ./upload-video.pl NAME