Module: FFI::Platform

Defined in:
lib/ffi/platform.rb,
ext/ffi_c/Platform.c

Overview

This module defines different constants and class methods to play with various platforms.

Constant Summary collapse

OS =
case RbConfig::CONFIG['host_os'].downcase
when /linux/
  "linux"
when /darwin/
  "darwin"
when /freebsd/
  "freebsd"
when /netbsd/
  "netbsd"
when /openbsd/
  "openbsd"
when /sunos|solaris/
  "solaris"
when /mingw|mswin/
  "windows"
else
  RbConfig::CONFIG['host_os'].downcase
end
ARCH =
case CPU.downcase
when /amd64|x86_64/
  "x86_64"
when /i?86|x86|i86pc/
  "i386"
when /ppc64|powerpc64/
  "powerpc64"
when /ppc|powerpc/
  "powerpc"
when /sparcv9|sparc64/
  "sparcv9"
else
  case RbConfig::CONFIG['host_cpu']
  when /^arm/
    "arm"
  else
    RbConfig::CONFIG['host_cpu']
  end
end
LIBPREFIX =
case OS
when /windows|msys/
  ''
when /cygwin/
  'cyg'
else
  'lib'
end
LIBSUFFIX =
case OS
when /darwin/
  'dylib'
when /linux|bsd|solaris/
  'so'
when /windows|cygwin|msys/
  'dll'
else
  # Punt and just assume a sane unix (i.e. anything but AIX)
  'so'
end
LIBC =
if IS_WINDOWS
  RbConfig::CONFIG['RUBY_SO_NAME'].split('-')[-2] + '.dll'
elsif IS_GNU
  GNU_LIBC
elsif OS == 'cygwin'
  "cygwin1.dll"
elsif OS == 'msys'
  # Not sure how msys 1.0 behaves, tested on MSYS2.
  "msys-2.0.dll"
else
  "#{LIBPREFIX}c.#{LIBSUFFIX}"
end
BYTE_ORDER =
INT2FIX(BYTE_ORDER)
LITTLE_ENDIAN =
INT2FIX(LITTLE_ENDIAN)
BIG_ENDIAN =
INT2FIX(BIG_ENDIAN)
CPU =
rb_str_new2(CPU)
GNU_LIBC =
rb_str_new2(LIBC_SO)

Class Method Summary collapse

Class Method Details

.bsd?Boolean

Test if current OS is a *BSD (include MAC)

Returns:

  • (Boolean)


135
136
137
# File 'lib/ffi/platform.rb', line 135

def self.bsd?
  IS_BSD
end

.mac?Boolean

Test if current OS is Mac OS

Returns:

  • (Boolean)


147
148
149
# File 'lib/ffi/platform.rb', line 147

def self.mac?
  IS_MAC
end

.solaris?Boolean

Test if current OS is Solaris (Sun OS)

Returns:

  • (Boolean)


153
154
155
# File 'lib/ffi/platform.rb', line 153

def self.solaris?
  IS_SOLARIS
end

.unix?Boolean

Test if current OS is a unix OS

Returns:

  • (Boolean)


159
160
161
# File 'lib/ffi/platform.rb', line 159

def self.unix?
  !IS_WINDOWS
end

.windows?Boolean

Test if current OS is Windows

Returns:

  • (Boolean)


141
142
143
# File 'lib/ffi/platform.rb', line 141

def self.windows?
  IS_WINDOWS
end