mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
fiddle: win32/libffi-config.rb
* ext/fiddle/win32/libffi-config.rb: generate necessary files to build on mswin. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48957 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
84c39fb2fa
commit
0cd829c339
5 changed files with 197 additions and 21 deletions
47
ext/fiddle/win32/libffi-config.rb
Executable file
47
ext/fiddle/win32/libffi-config.rb
Executable file
|
@ -0,0 +1,47 @@
|
|||
#!/usr/bin/ruby
|
||||
require 'fileutils'
|
||||
|
||||
basedir = File.dirname(__FILE__)
|
||||
conf = {}
|
||||
enable = {}
|
||||
until ARGV.empty?
|
||||
arg = ARGV.shift
|
||||
case arg
|
||||
when '-C'
|
||||
# ignore
|
||||
when /\A--srcdir=(.*)/
|
||||
conf['SRCDIR'] = srcdir = $1
|
||||
when /\A(CC|CFLAGS|CXX|CXXFLAGS|LD|LDFLAGS)=(.*)/
|
||||
conf[$1] = $2
|
||||
when /\A--host=(.*)/
|
||||
host = $1
|
||||
when /\A--enable-([^=]+)(?:=(.*))?/
|
||||
enable[$1] = $2 || true
|
||||
when /\A--disable-([^=]+)/
|
||||
enable[$1] = false
|
||||
end
|
||||
end
|
||||
|
||||
IO.foreach("#{srcdir}/configure.ac") do |line|
|
||||
if /^AC_INIT\((.*)\)/ =~ line
|
||||
version = $1.split(/,\s*/)[1]
|
||||
version.gsub!(/\A\[|\]\z/, '')
|
||||
conf['VERSION'] = version
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
builddir = srcdir == "." ? enable['builddir'] : "."
|
||||
conf['TARGET'] = /^x64/ =~ host ? "X86_WIN64" : "X86_WIN32"
|
||||
|
||||
FileUtils.mkdir_p([builddir, "#{builddir}/include", "#{builddir}/src/x86"])
|
||||
FileUtils.cp("#{basedir}/fficonfig.h", ".", preserve: true)
|
||||
|
||||
hdr = IO.binread("#{srcdir}/include/ffi.h.in")
|
||||
hdr.gsub!(/@(\w+)@/) {conf[$1] || $&}
|
||||
hdr.gsub!(/^(#if\s+)@\w+@/, '\10')
|
||||
IO.binwrite("#{builddir}/include/ffi.h", hdr)
|
||||
|
||||
mk = IO.binread("#{basedir}/libffi.mk.tmpl")
|
||||
mk.gsub!(/@(\w+)@/) {conf[$1] || $&}
|
||||
IO.binwrite("Makefile", mk)
|
Loading…
Add table
Add a link
Reference in a new issue