Sha256: c70e53b9c100491402d68bb20bf24eadc35fdf34255922f261f1bd8f1aa8d5b9
Contents?: true
Size: 965 Bytes
Versions: 48
Compression:
Stored size: 965 Bytes
Contents
# frozen_string_literal: true require "shellwords" module RbSys class CargoBuilder < Gem::Ext::Builder # Converts Ruby link flags into something cargo understands # @api private class LinkFlagConverter FILTERED_PATTERNS = [ /compress-debug-sections/, # Not supported by all linkers, and not required for Rust /^\s*-s\s*$/ ] def self.convert(args) Shellwords.split(args).flat_map { |arg| convert_arg(arg) } end def self.convert_arg(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+).(so|dylib|dll)$/ ["-l", "dylib=#{$1}"] when /^-F\s*(.*)$/ ["-l", "framework=#{$1}"] else ["-C", "link-arg=#{arg}"] end end end end end
Version data entries
48 entries across 48 versions & 1 rubygems