mirror of
https://github.com/ggerganov/whisper.cpp.git
synced 2024-12-29 16:58:51 +00:00
f19463ece2
* Handle objs in Ruby code * Add task to make Makefile * Share commont constance in test suites * Add model-related APIs * Add Whisper::Model class * Add tests for Whisper::Model * Add missing LDFLAG -lstdc++ * Add tests for Whisper.log_set * Add Whisper.set_log * Define log level * Add document on logging * Add license section to README * Add document on Whisper::Model * Fix examples in README * Add test for Model with GC * Make dependency on Makefile more accurate * Fix bug about Whisper::Model and GC
69 lines
1.5 KiB
Ruby
69 lines
1.5 KiB
Ruby
require 'rake/clean'
|
|
require "bundler/gem_tasks"
|
|
require "pathname"
|
|
require "yaml"
|
|
require "rake/testtask"
|
|
|
|
extsources = YAML.load_file("extsources.yaml")
|
|
SOURCES = FileList[]
|
|
extsources.each do |src|
|
|
basename = src.pathmap("%f")
|
|
dest = basename == "LICENSE" ? basename : basename.pathmap("ext/%f")
|
|
file src
|
|
file dest => src do |t|
|
|
cp t.source, t.name
|
|
end
|
|
SOURCES.include dest
|
|
end
|
|
CLEAN.include SOURCES
|
|
CLEAN.include FileList[
|
|
"ext/*.o",
|
|
"ext/*.metal",
|
|
"ext/whisper.{so,bundle,dll}",
|
|
"ext/depend"
|
|
]
|
|
|
|
task build: FileList[
|
|
"ext/Makefile",
|
|
"ext/ruby_whisper.h",
|
|
"ext/ruby_whisper.cpp",
|
|
"whispercpp.gemspec",
|
|
]
|
|
|
|
directory "pkg"
|
|
CLOBBER.include "pkg"
|
|
|
|
TEST_MODEL = "../../models/ggml-base.en.bin"
|
|
LIB_NAME = "whisper".ext(RbConfig::CONFIG["DLEXT"])
|
|
SO_FILE = File.join("ext", LIB_NAME)
|
|
LIB_FILE = File.join("lib", LIB_NAME)
|
|
|
|
file "ext/Makefile" => ["ext/extconf.rb", "ext/ruby_whisper.h", "ext/ruby_whisper.cpp"] + SOURCES do |t|
|
|
Dir.chdir "ext" do
|
|
ruby "extconf.rb"
|
|
end
|
|
end
|
|
|
|
file SO_FILE => "ext/Makefile" do |t|
|
|
Dir.chdir "ext" do
|
|
sh "make"
|
|
end
|
|
end
|
|
CLEAN.include LIB_FILE
|
|
|
|
directory "lib"
|
|
file LIB_FILE => [SO_FILE, "lib"] do |t|
|
|
copy t.source, t.name
|
|
end
|
|
|
|
Rake::TestTask.new do |t|
|
|
t.test_files = FileList["tests/test_*.rb"]
|
|
end
|
|
task test: [TEST_MODEL, LIB_FILE]
|
|
|
|
file TEST_MODEL do
|
|
Dir.chdir "../.." do
|
|
sh "./models/download-ggml-model.sh base.en"
|
|
end
|
|
end
|