def match_platform(arch)
cpu, os = arch.split '-', 2
cpu, os = nil, cpu if os.nil?
cpu = case cpu
when /i\d86/ then 'x86'
else cpu
end
os = case os
when /cygwin/ then [ 'cygwin', nil ]
when /darwin(\d+)?/ then [ 'darwin', $1 ]
when /freebsd(\d+)/ then [ 'freebsd', $1 ]
when /^java$/ then [ 'java', nil ]
when /^java([\d.]*)/ then [ 'java', $1 ]
when /linux/ then [ 'linux', $1 ]
when /mingw32/ then [ 'mingw32', nil ]
when /mswin32/ then [ 'mswin32', nil ]
when /openbsd(\d+\.\d+)/ then [ 'openbsd', $1 ]
when /solaris(\d+\.\d+)/ then [ 'solaris', $1 ]
else [ 'unknown', nil ]
end
[cpu, os].flatten.compact.join("-")
end