From a43dd799e4a2a0ed7f75ca604e7c3a66bf216d2b Mon Sep 17 00:00:00 2001 From: Alex Kotov Date: Tue, 18 Jan 2022 18:03:19 +0500 Subject: [PATCH] Add Ruby native extension "libkernaux" --- pkgs/ruby/.gitignore | 1 + pkgs/ruby/Rakefile | 9 +++++++++ pkgs/ruby/ext/libkernaux/extconf.rb | 5 +++++ pkgs/ruby/ext/libkernaux/main.c | 5 +++++ pkgs/ruby/kernaux.gemspec | 9 ++++++--- pkgs/ruby/lib/kernaux.rb | 3 +++ 6 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 pkgs/ruby/ext/libkernaux/extconf.rb create mode 100644 pkgs/ruby/ext/libkernaux/main.c diff --git a/pkgs/ruby/.gitignore b/pkgs/ruby/.gitignore index c1a6109..4834e46 100644 --- a/pkgs/ruby/.gitignore +++ b/pkgs/ruby/.gitignore @@ -1,5 +1,6 @@ *.gem *.rbc +*.so /.byebug_history /.config/ diff --git a/pkgs/ruby/Rakefile b/pkgs/ruby/Rakefile index a785c63..1f91522 100644 --- a/pkgs/ruby/Rakefile +++ b/pkgs/ruby/Rakefile @@ -52,6 +52,15 @@ rescue LoadError nil end +begin + require 'rake/extensiontask' + Rake::ExtensionTask.new 'libkernaux' do |ext| + ext.lib_dir = 'lib/kernaux' + end +rescue LoadError + nil +end + desc 'Open development console' task :console do sh 'bundle', 'exec', File.expand_path(File.join('bin', 'console'), __dir__) diff --git a/pkgs/ruby/ext/libkernaux/extconf.rb b/pkgs/ruby/ext/libkernaux/extconf.rb new file mode 100644 index 0000000..5e0553a --- /dev/null +++ b/pkgs/ruby/ext/libkernaux/extconf.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +require 'mkmf' + +create_makefile 'kernaux/libkernaux' diff --git a/pkgs/ruby/ext/libkernaux/main.c b/pkgs/ruby/ext/libkernaux/main.c new file mode 100644 index 0000000..96fddbd --- /dev/null +++ b/pkgs/ruby/ext/libkernaux/main.c @@ -0,0 +1,5 @@ +#include + +void Init_libkernaux() +{ +} diff --git a/pkgs/ruby/kernaux.gemspec b/pkgs/ruby/kernaux.gemspec index a9e184a..bfda8a2 100644 --- a/pkgs/ruby/kernaux.gemspec +++ b/pkgs/ruby/kernaux.gemspec @@ -37,9 +37,12 @@ Gem::Specification.new do |spec| spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename f } - spec.add_development_dependency 'bundler', '~> 2.2' - spec.add_development_dependency 'pry', '~> 0.14' - spec.add_development_dependency 'rake', '~> 13.0' + spec.extensions << 'ext/libkernaux/extconf.rb' + + spec.add_development_dependency 'bundler', '~> 2.2' + spec.add_development_dependency 'pry', '~> 0.14' + spec.add_development_dependency 'rake', '~> 13.0' + spec.add_development_dependency 'rake-compiler', '~> 1.1' spec.add_development_dependency 'rspec', '~> 3.10' spec.add_development_dependency 'rubocop', '~> 1.25' spec.add_development_dependency 'rubocop-performance', '~> 1.13' diff --git a/pkgs/ruby/lib/kernaux.rb b/pkgs/ruby/lib/kernaux.rb index 05f48de..3542c09 100644 --- a/pkgs/ruby/lib/kernaux.rb +++ b/pkgs/ruby/lib/kernaux.rb @@ -7,3 +7,6 @@ require_relative 'kernaux/version' # module KernAux end + +# Native extension +require_relative 'kernaux/libkernaux'