forked from arthurnn/memcached
-
Notifications
You must be signed in to change notification settings - Fork 2
/
extconf.rb
73 lines (60 loc) · 2.43 KB
/
extconf.rb
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
require 'mkmf'
require 'rbconfig'
HERE = File.expand_path(File.dirname(__FILE__))
BUNDLE = Dir.glob("libmemcached-*.tar.gz").first
BUNDLE_PATH = BUNDLE.sub(".tar.gz", "")
SOLARIS_32 = RbConfig::CONFIG['target'] == "i386-pc-solaris2.10"
if ENV['DEBUG']
puts "Setting debug flags."
$CFLAGS << " -O0 -ggdb -DHAVE_DEBUG"
$EXTRA_CONF = " --enable-debug"
end
$CFLAGS = "#{RbConfig::CONFIG['CFLAGS']} #{$CFLAGS}".gsub("$(cflags)", "")
$CFLAGS << " -std=gnu99" if SOLARIS_32
$EXTRA_CONF << " --disable-64bit" if SOLARIS_32
$LDFLAGS = "#{RbConfig::CONFIG['LDFLAGS']} #{$LDFLAGS}".gsub("$(ldflags)", "")
$CXXFLAGS = " -std=gnu++98"
$CPPFLAGS = $ARCH_FLAG = $DLDFLAGS = ""
if !ENV["EXTERNAL_LIB"]
$includes = " -I#{HERE}/include"
$libraries = " -L#{HERE}/lib"
$libraries << " -R#{HERE}/lib" if SOLARIS_32
$CFLAGS = "#{$includes} #{$libraries} #{$CFLAGS}"
$LDFLAGS = "#{$libraries} #{$LDFLAGS}"
$LIBPATH = ["#{HERE}/lib"]
$DEFLIBPATH = []
Dir.chdir(HERE) do
if File.exist?("lib")
puts "Libmemcached already built; run 'rake clean' first if you need to rebuild."
else
puts "Building libmemcached."
puts(cmd = "tar xzf #{BUNDLE} 2>&1")
raise "'#{cmd}' failed" unless system(cmd)
puts "Patching libmemcached."
puts(cmd = "patch -p1 < libmemcached.patch")
raise "'#{cmd}' failed" unless system(cmd)
Dir.chdir(BUNDLE_PATH) do
puts(cmd = "env CFLAGS='-fPIC #{$CFLAGS}' LDFLAGS='-fPIC #{$LDFLAGS}' ./configure --prefix=#{HERE} --without-memcached --disable-shared --disable-utils --disable-dependency-tracking #{$EXTRA_CONF} 2>&1")
raise "'#{cmd}' failed" unless system(cmd)
puts(cmd = "make CXXFLAGS='#{$CXXFLAGS}' || true 2>&1")
raise "'#{cmd}' failed" unless system(cmd)
puts(cmd = "make install || true 2>&1")
raise "'#{cmd}' failed" unless system(cmd)
end
system("rm -rf #{BUNDLE_PATH}") unless ENV['DEBUG'] or ENV['DEV']
end
end
# Absolutely prevent the linker from picking up any other libmemcached
Dir.chdir("#{HERE}/lib") do
system("cp -f libmemcached.a libmemcached_gem.a")
system("cp -f libmemcached.la libmemcached_gem.la")
end
$LIBS << " -lnsl -lsocket -lposix4" if SOLARIS_32
$LIBS << " -lmemcached"
end
if ENV['SWIG']
puts "Running SWIG."
puts(cmd = "swig #{$includes} -ruby -autorename rlibmemcached.i")
raise "'#{cmd}' failed" unless system(cmd)
end
create_makefile 'rlibmemcached'