Skip to content

Instantly share code, notes, and snippets.

@b00t0x
Created October 22, 2023 12:57
Show Gist options
  • Save b00t0x/4e081b3c193fa8f599022ea3b897fdd5 to your computer and use it in GitHub Desktop.
Save b00t0x/4e081b3c193fa8f599022ea3b897fdd5 to your computer and use it in GitHub Desktop.
itlwmで任意のファームウェアを個別にビルドする&指定ファームウェアを束ねてビルドする
#!/usr/bin/env ruby
require 'fileutils'
firmwares = {
# 'AX411NGW' => 'iwlwifi-so-a0-gf4-a0',
'AX210NGW' => 'iwlwifi-ty-a0-gf-a0',
'AX200NGW' => 'iwlwifi-cc-a0',
'9560NGW' => 'iwm-9000',
'8265NGW' => 'iwm-8265',
# '3160NGW' => 'iwm-3160'
}
build_cmd = 'xcodebuild -configuration Release -scheme "AirportItlwm (all)" -derivedDataPath build 2> /dev/null'
FileUtils.cd(File.dirname(File.expand_path(__FILE__)))
FileUtils.mv('itlwm/firmware', 'itlwm/firmware_all')
FileUtils.mkdir_p('itlwm/firmware_combined')
FileUtils.rm_rf('kexts')
versions = open('itlwm.xcodeproj/project.pbxproj').read.split("\n").map{ |line| %r{/\* AirportItlwm-(?<version>[^-]+) \*/,} =~ line ? version : nil }.compact
firmwares.each do |card, prefix|
FileUtils.mkdir_p('itlwm/firmware')
FileUtils.rm('include/FwBinary.cpp')
Dir.glob("itlwm/firmware_all/#{prefix}*").each do |firmware|
FileUtils.cp(firmware, 'itlwm/firmware/')
FileUtils.cp(firmware, 'itlwm/firmware_combined/')
end
puts "building kexts for #{card}..."
`#{build_cmd}`
FileUtils.mkdir_p("kexts/#{card}")
versions.each do |version|
dest = "kexts/#{card}/AirportItlwm-#{version.gsub(' ', '')}.kext"
FileUtils.mv("build/Build/Products/Release/#{version}/AirportItlwm.kext", dest)
puts " created: #{dest}"
end
puts ''
FileUtils.rm_r('itlwm/firmware')
end
FileUtils.mv('itlwm/firmware_combined', 'itlwm/firmware')
FileUtils.rm('include/FwBinary.cpp')
puts 'building kexts for all selected firmwares...'
`#{build_cmd}`
FileUtils.mkdir_p('kexts/_all_')
versions.each do |version|
dest = "kexts/_all_/AirportItlwm-#{version.gsub(' ', '')}.kext"
FileUtils.mv("build/Build/Products/Release/#{version}/AirportItlwm.kext", dest)
puts " created: #{dest}"
end
FileUtils.rm_r('itlwm/firmware')
FileUtils.mv('itlwm/firmware_all', 'itlwm/firmware')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment