pyparsley/ruby/ext/extconf.rb

67 lines
2.1 KiB
Ruby
Executable File

#!/usr/bin/env ruby
ENV["ARCHFLAGS"] = "-arch #{`uname -p` =~ /powerpc/ ? 'ppc' : 'i386'}"
require 'mkmf'
ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
LIBDIR = Config::CONFIG['libdir']
INCLUDEDIR = Config::CONFIG['includedir']
$CFLAGS << " #{ENV["CFLAGS"]}"
if Config::CONFIG['target_os'] == 'mingw32'
$CFLAGS << " -DXP_WIN -DXP_WIN32"
else
$CFLAGS << " -g -DXP_UNIX"
end
$CFLAGS << " -O3 -Wall -Wextra -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn -Winline"
if Config::CONFIG['target_os'] == 'mingw32'
find_library('xml2', 'xmlParseDoc',
File.join(ROOT, 'cross', 'libxml2-2.7.2.win32', 'bin'))
find_library('xslt', 'xsltParseStylesheetDoc',
File.join(ROOT, 'cross', 'libxslt-1.1.24.win32', 'bin'))
else
find_library('xml2', 'xmlParseDoc', LIBDIR)
find_library('xslt', 'xsltParseStylesheetDoc', LIBDIR)
end
if Config::CONFIG['target_os'] == 'mingw32'
header = File.join(ROOT, 'cross', 'libxml2-2.7.2.win32', 'include')
unless find_header('libxml/xmlversion.h', header)
abort "need libxml"
end
header = File.join(ROOT, 'cross', 'libxslt-1.1.24.win32', 'include')
unless find_header('libxslt/libxslt.h', header)
abort "need libxslt"
end
header = File.join(ROOT, 'cross', 'iconv-1.9.2.win32', 'include')
unless find_header('iconv.h', header)
abort "need iconv"
end
else
unless find_header('libxml/xmlversion.h',
File.join(INCLUDEDIR, "libxml2"), '/usr/include/libxml2'
)
abort "need libxml"
end
unless find_header('libxslt/xslt.h', INCLUDEDIR, '/usr/include')
abort "need libxslt"
end
version = try_constant('LIBXML_VERSION', 'libxml/xmlversion.h')
end
myincl = %w[/usr/local/include /opt/local/include /usr/include]
mylib = %w[/usr/local/lib /opt/local/lib /usr/lib]
find_header('json/json.h', INCLUDEDIR, *myincl) or abort "need json/json.h"
find_library('json', 'json_object_new_string', LIBDIR, *mylib) or abort "need libjson"
find_header('parsley.h', INCLUDEDIR, *myincl) or abort "need parsley.h"
find_library('parsley', 'parsley_compile', LIBDIR, *mylib) or abort "need libparsley"
create_makefile('cparsley')