blob: 58ee5611db36bf1863b38441fe16c92e7d7e4b6d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
#
# This file is part of ruby-ffi.
# For licensing, see LICENSE.SPECS
#
require 'rbconfig'
require 'fileutils'
require 'ffi'
module TestLibrary
CPU = case RbConfig::CONFIG['host_cpu'].downcase
when /i[3456]86/
# Darwin always reports i686, even when running in 64bit mode
if RbConfig::CONFIG['host_os'] =~ /darwin/ && 0xfee1deadbeef.is_a?(Fixnum)
"x86_64"
else
"i386"
end
when /amd64|x86_64|x64/
"x86_64"
when /ppc64|powerpc64/
"powerpc64"
when /ppc|powerpc/
"powerpc"
when /sparcv9|sparc64/
"sparcv9"
when /^arm/
if RbConfig::CONFIG['host_os'] =~ /darwin/
"aarch64"
else
"arm"
end
else
RbConfig::CONFIG['host_cpu']
end
OS = case RbConfig::CONFIG['host_os'].downcase
when /linux/
"linux"
when /darwin/
"darwin"
when /freebsd/
"freebsd"
when /openbsd/
"openbsd"
when /dragonfly/
"dragonflybsd"
when /sunos|solaris/
"solaris"
when /mswin|mingw/
"win32"
else
RbConfig::CONFIG['host_os'].downcase
end
def self.compile_library(path, lib)
dir = File.expand_path(path, File.dirname(__FILE__))
lib = "#{dir}/#{lib}"
FileUtils.cd(dir) do
make = ENV['MAKE'] || (system('which gmake >/dev/null') ? 'gmake' : 'make')
unless system(*%{#{make} CPU=#{CPU} OS=#{OS}}.tap{ |cmd| puts cmd.inspect })
puts "ERROR: #{$?}"
raise "Unable to compile #{lib.inspect}"
end
end
lib
end
PATH = compile_library(".", "libtest.#{FFI::Platform::LIBSUFFIX}")
end
|