gem-ext-zig_builder 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/gem/ext/zig_builder/version.rb +8 -0
- data/lib/gem/ext/zig_builder.rb +52 -0
- metadata +48 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e6419f1ac0a59e19c259a8efce1fbef996083eb8489f6e76e8ed9a73ee7f3a36
|
4
|
+
data.tar.gz: d5754f2f5ed48b0faebc888aa675531a9c99ec815f6ed67386a8ebc8d9b8a4d9
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3c625b25dff418ecaefac4aaed38441ae96f669bab96476e3ab7e2ae1538bffb85bdf743044b8d9260ec8ee363857d631004140730d3a9b8769924b5882956e2
|
7
|
+
data.tar.gz: 1af95db95f3f24293804ca784dc14948c9daeda2dbb649c4a9590b122487c2ab9cda6eb58f3e7f0acd35212e90eedc71ac40a96fbec27a4a48b2f37163a8681c
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'gem/ext/zig_builder/version'
|
3
|
+
require 'rubygems/ext/builder'
|
4
|
+
require 'rubygems/command'
|
5
|
+
require 'shellwords'
|
6
|
+
require 'rbconfig'
|
7
|
+
|
8
|
+
class Gem::Ext::Builder
|
9
|
+
def builder_for(extension) # :nodoc:
|
10
|
+
case extension
|
11
|
+
when /extconf/ then
|
12
|
+
Gem::Ext::ExtConfBuilder
|
13
|
+
when /configure/ then
|
14
|
+
Gem::Ext::ConfigureBuilder
|
15
|
+
when /rakefile/i, /mkrf_conf/i then
|
16
|
+
@ran_rake = true
|
17
|
+
Gem::Ext::RakeBuilder
|
18
|
+
when /CMakeLists.txt/ then
|
19
|
+
Gem::Ext::CmakeBuilder
|
20
|
+
when /build.zig/ then
|
21
|
+
Gem::Ext::ZigBuilder
|
22
|
+
else
|
23
|
+
extension_dir = File.join @gem_dir, File.dirname(extension)
|
24
|
+
|
25
|
+
message = "No builder for extension '#{extension}'"
|
26
|
+
build_error extension_dir, message
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
class Gem::Ext::ZigBuilder < Gem::Ext::Builder
|
32
|
+
def self.build(extension, dest_path, results, args=[], lib_dir=nil, extension_dir=nil)
|
33
|
+
# older versions of ruby do not support the 5th `env` argument to run,
|
34
|
+
# so pollute the global ENV as a cheap workaround
|
35
|
+
ENV['PKG_CONFIG_PATH'] = "#{RbConfig::CONFIG['libdir']}/pkgconfig"
|
36
|
+
ENV['RUBY_PC' ] = "#{File.basename(RbConfig::CONFIG['ruby_pc'], '.pc')}"
|
37
|
+
|
38
|
+
run(
|
39
|
+
[].tap {|c|
|
40
|
+
c << 'zig' << 'build' << '-Doptimize=ReleaseSafe'
|
41
|
+
c << '--prefix-lib-dir' << dest_path
|
42
|
+
c << Gem::Command.build_args unless Gem::Command.build_args.empty?
|
43
|
+
c << 'test' << 'install'
|
44
|
+
},
|
45
|
+
results,
|
46
|
+
'zig',
|
47
|
+
extension_dir
|
48
|
+
)
|
49
|
+
|
50
|
+
results
|
51
|
+
end
|
52
|
+
end
|
metadata
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: gem-ext-zig_builder
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Frank J. Cameron
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-05-05 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: ''
|
14
|
+
email:
|
15
|
+
- fjc@fastmail.net
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- lib/gem/ext/zig_builder.rb
|
21
|
+
- lib/gem/ext/zig_builder/version.rb
|
22
|
+
homepage: https://gitlab.com/fjc/gem-ext-zig_builder
|
23
|
+
licenses:
|
24
|
+
- MIT
|
25
|
+
metadata:
|
26
|
+
homepage_uri: https://gitlab.com/fjc/gem-ext-zig_builder
|
27
|
+
source_code_uri: https://gitlab.com/fjc/gem-ext-zig_builder
|
28
|
+
changelog_uri: https://gitlab.com/fjc/gem-ext-zig_builder
|
29
|
+
post_install_message:
|
30
|
+
rdoc_options: []
|
31
|
+
require_paths:
|
32
|
+
- lib
|
33
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
34
|
+
requirements:
|
35
|
+
- - ">="
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 2.3.0
|
38
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0'
|
43
|
+
requirements: []
|
44
|
+
rubygems_version: 3.2.5
|
45
|
+
signing_key:
|
46
|
+
specification_version: 4
|
47
|
+
summary: Gem extension builder for zig
|
48
|
+
test_files: []
|