aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rubygems/ext/cargo_builder/link_flag_converter.rb
diff options
context:
space:
mode:
authorDavid Rodríguez <deivid.rodriguez@riseup.net>2022-06-23 11:22:36 +0200
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2022-06-24 10:52:02 +0900
commit12a5fa408bd318f8fb242e86beb225f2dcae8df9 (patch)
treef132650f5999535da69ee998956f260007afd371 /lib/rubygems/ext/cargo_builder/link_flag_converter.rb
parent333754ace8ae9bc5d2dfb4aee160fcfa0f38350d (diff)
downloadruby-12a5fa408bd318f8fb242e86beb225f2dcae8df9.tar.gz
Sync RubyGems & Bundler with upstream repo
Diffstat (limited to 'lib/rubygems/ext/cargo_builder/link_flag_converter.rb')
-rw-r--r--lib/rubygems/ext/cargo_builder/link_flag_converter.rb23
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/rubygems/ext/cargo_builder/link_flag_converter.rb b/lib/rubygems/ext/cargo_builder/link_flag_converter.rb
new file mode 100644
index 0000000000..111bb05492
--- /dev/null
+++ b/lib/rubygems/ext/cargo_builder/link_flag_converter.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+class Gem::Ext::CargoBuilder < Gem::Ext::Builder
+ # Converts Ruby link flags into something cargo understands
+ class LinkFlagConverter
+ def self.convert(arg)
+ case arg.chomp
+ when /^-L\s*(.+)$/
+ ["-L", "native=#{$1}"]
+ when /^--library=(\w+\S+)$/, /^-l\s*(\w+\S+)$/
+ ["-l", $1]
+ when /^-l\s*:lib(\S+).a$/
+ ["-l", "static=#{$1}"]
+ when /^-l\s*:lib(\S+).(so|dylib|dll)$/
+ ["-l", "dylib=#{$1}"]
+ when /^-F\s*(.*)$/
+ ["-l", "framework=#{$1}"]
+ else
+ ["-C", "link_arg=#{arg}"]
+ end
+ end
+ end
+end