mirror of
https://github.com/ggerganov/whisper.cpp.git
synced 2025-07-14 17:15:22 +02:00
* Add Apple frameworks to $LDFLAGS when needed * Add utility method to Options * Remove unnecessary propaty date from gemspec * Add Apple frameworks for CoreML build * Add Accelerate framework only for Apple platform * Fix ZipURI#cache signature * Download test fixtures if needed
97 lines
2.3 KiB
Ruby
97 lines
2.3 KiB
Ruby
require 'rake/clean'
|
|
require "bundler/gem_tasks"
|
|
require "rake/testtask"
|
|
require_relative "extsources"
|
|
|
|
SOURCES_DIR = "ext/sources"
|
|
|
|
SOURCES = FileList[]
|
|
|
|
EXTSOURCES.each do |src|
|
|
basename = src.pathmap("%f")
|
|
dest = basename == "LICENSE" ? basename
|
|
: src.pathmap("%{\\.\\./\\.\\.,#{SOURCES_DIR}}p")
|
|
.pathmap("%{\\.\\./javascript,#{SOURCES_DIR}/bindings/javascript}p")
|
|
dir = dest.pathmap("%d")
|
|
file src
|
|
directory dir
|
|
file dest => [src, dir] do |t|
|
|
cp t.source, t.name
|
|
end
|
|
SOURCES.include dest
|
|
end
|
|
|
|
CLEAN.include SOURCES
|
|
|
|
SRC = FileList["ext/*.{c,cpp,h}"]
|
|
|
|
task build: SOURCES
|
|
|
|
directory "pkg"
|
|
CLOBBER.include "pkg"
|
|
|
|
LIB_NAME = "whisper".ext(RbConfig::CONFIG["DLEXT"])
|
|
SO_FILE = File.join("ext", LIB_NAME)
|
|
LIB_FILE = File.join("lib", LIB_NAME)
|
|
|
|
file "ext/Makefile" => SRC + ["ext/extconf.rb"] + SOURCES do |t|
|
|
chdir "ext" do
|
|
ruby "extconf.rb"
|
|
end
|
|
end
|
|
if File.exist? "ext/Makefile"
|
|
task :make_clean do
|
|
cd "ext" do
|
|
sh "make", "clean"
|
|
end
|
|
end
|
|
task clean: :make_clean
|
|
task :make_distclean do
|
|
cd "ext" do
|
|
sh "make", "distclean"
|
|
end
|
|
end
|
|
task clobber: :make_distclean
|
|
end
|
|
|
|
file SO_FILE => "ext/Makefile" do |t|
|
|
chdir "ext" do
|
|
sh "make"
|
|
end
|
|
end
|
|
CLEAN.include SO_FILE
|
|
|
|
directory "lib"
|
|
file LIB_FILE => [SO_FILE, "lib"] do |t|
|
|
copy t.source, t.name
|
|
end
|
|
CLEAN.include LIB_FILE
|
|
|
|
Rake::TestTask.new
|
|
|
|
TEST_FIXTURE_AUDIO = "test/fixtures/jfk.wav"
|
|
TEST_FIXTURE_AUDIO_SRC = File.expand_path(File.join(__dir__, "..", "..", "samples", "jfk.wav"))
|
|
TEST_FIXTURE_AUDIO_DIR = TEST_FIXTURE_AUDIO.pathmap("%d")
|
|
directory TEST_FIXTURE_AUDIO_DIR
|
|
if File.exist? TEST_FIXTURE_AUDIO_SRC
|
|
file TEST_FIXTURE_AUDIO => [TEST_FIXTURE_AUDIO_SRC, TEST_FIXTURE_AUDIO_DIR] do |t|
|
|
symlink t.source, t.name
|
|
end
|
|
else
|
|
require "open-uri"
|
|
file TEST_FIXTURE_AUDIO => TEST_FIXTURE_AUDIO_DIR do |t|
|
|
File.write t.name, URI("https://github.com/ggml-org/whisper.cpp/raw/refs/heads/master/samples/jfk.wav").read
|
|
end
|
|
end
|
|
|
|
TEST_MEMORY_VIEW = "test/jfk_reader/jfk_reader.#{RbConfig::CONFIG['DLEXT']}"
|
|
file TEST_MEMORY_VIEW => "test/jfk_reader/jfk_reader.c" do |t|
|
|
chdir "test/jfk_reader" do
|
|
ruby "extconf.rb"
|
|
sh "make"
|
|
end
|
|
end
|
|
CLEAN.include TEST_MEMORY_VIEW
|
|
|
|
task test: [LIB_FILE, TEST_MEMORY_VIEW, TEST_FIXTURE_AUDIO]
|