ArgyllCMS 3.5.0: corresponding source for Calibeam ================================================= Calibeam bundles these ArgyllCMS programs, unmodified: macOS (Calibeam.app/Contents/Helpers/): spotread oeminst built by Calibeam from the source in this folder, arm64, macOS 13.0+. Windows (\helpers\): spotread.exe oeminst.exe from the upstream prebuilt Argyll_V3.5.0_win64_exe.zip (https://www.argyllcms.com/), unmodified. Their corresponding source is the same upstream source zip in this folder. ArgyllCMS is by Graeme W. Gill (https://www.argyllcms.com/). The programs are distributed under the GNU Affero General Public License version 3; some source files are under the GNU GPL version 2 or later, GPL version 3, or MIT-style licenses. See licenses/NOTICE.txt and the other files in licenses/. Contents -------- Argyll_V3.5.0_src.zip The upstream source, byte-identical to https://www.argyllcms.com/Argyll_V3.5.0_src.zip SHA-256 f8576ce5589fd15620abb73ff049ea31f55ddbd1bba6d1ffa87452658e7bc85f ajam-2.5.2-1.3.3.tgz Argyll-Jam, the build tool ArgyllCMS's doc/Compiling.html names (FT-Jam 2.5.2 with Argyll's Jambase), byte-identical to https://www.argyllcms.com/ajam-2.5.2-1.3.3.tgz SHA-256 57c3768bd7954ea97600b823018c1d89419f52e0ea385ac10591ad16716dca26 It is included here, not only linked, because it is a modified Jam that only the ArgyllCMS author distributes. calibeam-build/ The scripts Calibeam's release pipeline runs (build_argyll.sh, with argyll_lib.sh and argyll_pins.sh) and the NOTICE.txt shipped in the app. They expect the Calibeam repository layout; the steps below are the same build, standalone. licenses/ License.txt (AGPL v3), License2.txt (GPL v2), License3.txt (GPL v3), icclib-License4.txt and cgatslib-License4.txt (MIT-style), ReadMe.txt, all from the source zip, and NOTICE.txt as shipped in the app. SHA256SUMS Checksums of every other file in this folder. No ArgyllCMS source file is modified, and no patch is applied. Building the macOS programs --------------------------- Requirements: an Apple silicon (arm64) Mac with the Xcode command line tools. Reference toolchain for the digests below: Xcode 26.3 (17C529), Apple clang 17.0.0 (clang-1700.6.4.2), macOS SDK 26.2. unzip Argyll_V3.5.0_src.zip tar -xzf ajam-2.5.2-1.3.3.tgz # 1. Build jam0 from the Argyll-Jam source. "-include unistd.h" only # declares functions the old Jam sources call without a prototype, which # current clang rejects; it changes no source file. (cd ajam-2.5.2-1.3.3 && env -i PATH=/usr/bin:/bin:/usr/sbin:/sbin \ /usr/bin/make -f common.mk jam0 CC=/usr/bin/cc TARGET="-o jam0" \ CFLAGS="-O2 -include unistd.h") # 2. Build the programs with Argyll's own Jamfiles. The BUILTIN_* switches # use the libraries bundled in the source zip (as upstream's own # makepackagebin.sh does); -Wl,-S, ZERO_AR_DATE=1 and a serial build (-j1; # a parallel build shuffles archive order) make the output reproducible. cd Argyll_V3.5.0 env -i PATH=/usr/bin:/bin:/usr/sbin:/sbin HOME="$HOME" \ OSTYPE=darwin MACHTYPE=arm64-apple-darwin HOSTTYPE=arm64 \ MACOSX_DEPLOYMENT_TARGET=13.0 ZERO_AR_DATE=1 LDFLAGS="-Wl,-S" \ ../ajam-2.5.2-1.3.3/jam0 -q -fJambase -j1 \ -sBUILTIN_TIFF=true -sBUILTIN_JPEG=true -sBUILTIN_PNG=true \ -sBUILTIN_Z=true -sBUILTIN_SSL=true "spotread" "oeminst" The programs are written to Argyll_V3.5.0/spectro/. They link only macOS system frameworks and libraries; no OpenSSL, libusb or other third-party library is linked or loaded. Checking a build against the shipped programs --------------------------------------------- Calibeam re-signs the programs when it bundles them, so compare "code digests", not file hashes: the SHA-256 of a copy with its code signature removed (codesign --remove-signature) and the __LINKEDIT segment's vmsize field set to zero (argyll_code_sha256 in calibeam-build/argyll_lib.sh does both). On the reference toolchain, a build made with the steps above gives: spotread code digest 382d5a352428ff0816d87a8cd8aafd09422b212623b834cdf7a90f12d5ac7991 oeminst code digest 8703c52e3475314fac5eddaeed4b444c2107504a11c77490a24ffb53ecec3979 A different Xcode version may produce different bytes from the same source.