Skip to content

v0.38.0

Choose a tag to compare

@marcelocantos marcelocantos released this 30 May 09:25
· 105 commits to master since this release
ce355ed

Single source-of-truth ge source manifest (tools/ge-sources.mk)

Module.mk and tools/prebuild.sh previously maintained parallel copies of the ge source list. Three real omissions were already in tree:

  • src/manifest.cpp + src/long_press.cpp in Module.mk but missing from every prebuilt libge.a — silent linker risk for any consumer using ge::BuildManifest or ge::LongPressWatcher via the prebuilts.
  • src/log_apple.mm in prebuilt iOS but missing from Module.mk desktop — apple's os_log sink wasn't linked into desktop libge.a.

Same drift class that bit T39 verification (RefreshRateBoost_android.cpp missing from the top-level CMakeLists.txt's Android branch).

Approach

tools/ge-sources.mk is the canonical manifest. A handful of Make variables (GE_SRC_COMMON, GE_SRC_APPLE, GE_SRC_ANDROID, GE_SRC_STUB_*, GE_SRC_ORIENTATION_*, GE_SRC_BROKERED) factor the list along natural per-platform / per-modality lines. Three rollups expose what callers actually consume:

  • GE_SRC_DIRECT_APPLE_DESKTOP
  • GE_SRC_DIRECT_IOS
  • GE_SRC_DIRECT_ANDROID

Module.mk includes the manifest and uses GE_SRC_DIRECT_APPLE_DESKTOP + GE_SRC_BROKERED to compose ge/SRC_DIRECT + ge/SRC_BROKERED — same external variables consumer Makefiles already reference, just driven by one canonical list now.

tools/prebuild.sh selects a per-platform target name (GE_MANIFEST_TARGET = print-direct-ios / print-direct-android) and extracts the source list via make -s -f tools/ge-sources.mk $target piped through mapfile. The script's per-platform case statement no longer carries a GE_PLATFORM_SOURCES array at all.

Side effects

  • prebuilt/{ios-arm64,ios-arm64-simulator,android-arm64}/libge.a now include manifest.cpp + long_press.cpp — the drift fix.
  • Desktop libge.a now includes log_apple.mm — apple's os_log sink wired in on macOS dev builds the same way it is on iOS.
  • All three prebuilds regenerated; manifests refreshed; verifier exits 0 across all platforms.

Consumer impact

External Makefile consumers (multimaze2 etc.) keep working unchanged — ge/SRC_DIRECT + ge/SRC_BROKERED still resolve via Module.mk's existing surface. Pre-built consumers (iOS Distribution builds via build_project.rb) automatically link the newly-included .o's when they bump their ge submodule pointer.