2005-02-04 13:35:37 +00:00
|
|
|
require 'mkmf'
|
|
|
|
|
2009-09-12 08:31:44 +00:00
|
|
|
if RbConfig::CONFIG['GCC'] == 'yes'
|
2005-02-04 13:35:37 +00:00
|
|
|
$CFLAGS << " -fno-defer-pop -fno-omit-frame-pointer"
|
|
|
|
end
|
|
|
|
|
|
|
|
$INSTALLFILES = [
|
2007-06-10 03:06:15 +00:00
|
|
|
["dl.h", "$(HDRDIR)"],
|
2005-02-04 13:35:37 +00:00
|
|
|
]
|
|
|
|
|
2010-02-03 01:23:48 +00:00
|
|
|
if pkg_config("libffi")
|
|
|
|
# libffi closure api must be switched depending on the version
|
|
|
|
if system("pkg-config --atleast-version=3.0.9 libffi")
|
|
|
|
$defs.push(format('-DUSE_NEW_CLOSURE_API'))
|
|
|
|
end
|
|
|
|
else
|
|
|
|
dir_config('ffi', '/usr/include', '/usr/lib')
|
|
|
|
end
|
|
|
|
|
|
|
|
unless have_header('ffi.h')
|
|
|
|
if have_header('ffi/ffi.h')
|
|
|
|
$defs.push(format('-DUSE_HEADER_HACKS'))
|
|
|
|
else
|
|
|
|
abort "ffi is missing"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
unless have_library('ffi')
|
|
|
|
abort "ffi is missing"
|
|
|
|
end
|
|
|
|
|
2005-02-04 13:35:37 +00:00
|
|
|
check = true
|
|
|
|
if( have_header("dlfcn.h") )
|
2010-02-03 01:23:48 +00:00
|
|
|
|
2005-02-04 13:35:37 +00:00
|
|
|
have_library("dl")
|
|
|
|
check &&= have_func("dlopen")
|
|
|
|
check &&= have_func("dlclose")
|
|
|
|
check &&= have_func("dlsym")
|
|
|
|
have_func("dlerror")
|
|
|
|
elsif( have_header("windows.h") )
|
|
|
|
check &&= have_func("LoadLibrary")
|
|
|
|
check &&= have_func("FreeLibrary")
|
|
|
|
check &&= have_func("GetProcAddress")
|
|
|
|
else
|
|
|
|
check = false
|
|
|
|
end
|
|
|
|
|
2007-08-08 10:20:08 +00:00
|
|
|
if check
|
2007-06-10 03:06:15 +00:00
|
|
|
$defs << %[-DRUBY_VERSION=\\"#{RUBY_VERSION}\\"]
|
2005-02-04 13:35:37 +00:00
|
|
|
create_makefile("dl")
|
|
|
|
end
|