diff options
Diffstat (limited to 'lib/rubygems/ext/cargo_builder/link_flag_converter.rb')
-rw-r--r-- | lib/rubygems/ext/cargo_builder/link_flag_converter.rb | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/rubygems/ext/cargo_builder/link_flag_converter.rb b/lib/rubygems/ext/cargo_builder/link_flag_converter.rb index 111bb05492..e4d196cb10 100644 --- a/lib/rubygems/ext/cargo_builder/link_flag_converter.rb +++ b/lib/rubygems/ext/cargo_builder/link_flag_converter.rb @@ -3,20 +3,24 @@ class Gem::Ext::CargoBuilder < Gem::Ext::Builder # Converts Ruby link flags into something cargo understands class LinkFlagConverter + FILTERED_PATTERNS = [ + /compress-debug-sections/, # Not supported by all linkers, and not required for Rust + ].freeze + def self.convert(arg) + return [] if FILTERED_PATTERNS.any? {|p| p.match?(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 /^-l\s*([^:\s])+/ # -lfoo, but not -l:libfoo.a + ["-l", $1] when /^-F\s*(.*)$/ ["-l", "framework=#{$1}"] else - ["-C", "link_arg=#{arg}"] + ["-C", "link-args=#{arg}"] end end end |