1 # frozen_string_literal: true
2
3 require 'bundler/gem_tasks'
4 require 'rb_sys/extensiontask'
5
6 task build: :compile
7
8 GEMSPEC = Gem::Specification.load('auth.gemspec')
9
10 RbSys::ExtensionTask.new('auth', GEMSPEC) do |ext|
11 ext.lib_dir = 'lib/auth'
12 end
13
14 # macOS: the rb_sys/rake-compiler build emits the bundle as an MH_DYLIB with an
15 # empty LC_ID_DYLIB install name (a plain `cargo build` does not). dyld on macOS
16 # 15+/Tahoe rejects that with "load command string extends beyond end of load
17 # command", so the gem fails to load. Stamp a valid install name onto every
18 # bundle the build produces by enhancing the bundle file tasks themselves (which
19 # is what `rake native gem` runs, not the top-level `compile`). install_name_tool
20 # re-signs ad-hoc, ships on the macOS gem-build runners, and works across archs
21 # (cross-built x86_64 bundles too). Idempotent.
22 if RbConfig::CONFIG['host_os'] =~ /darwin/
23 Rake::Task.tasks.each do |t|
24 next unless t.name.end_with?('auth.bundle')
25
26 t.enhance do
27 sh 'install_name_tool', '-id', '@rpath/auth.bundle', t.name if File.exist?(t.name)
28 end
29 end
30 end
31
32 task default: :compile