File: libffi-config.rb

package info (click to toggle)
ruby3.3 3.3.8-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 153,620 kB
  • sloc: ruby: 1,244,308; ansic: 836,474; yacc: 28,074; pascal: 6,748; sh: 3,913; python: 1,719; cpp: 1,158; makefile: 742; asm: 712; javascript: 394; lisp: 97; perl: 62; awk: 36; sed: 23; xml: 4
file content (48 lines) | stat: -rwxr-xr-x 1,234 bytes parent folder | download
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
#!/usr/bin/ruby
# frozen_string_literal: true
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

File.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 = File.binread("#{srcdir}/include/ffi.h.in")
hdr.gsub!(/@(\w+)@/) {conf[$1] || $&}
hdr.gsub!(/^(#if\s+)@\w+@/, '\10')
File.binwrite("#{builddir}/include/ffi.h", hdr)

mk = File.binread("#{basedir}/libffi.mk.tmpl")
mk.gsub!(/@(\w+)@/) {conf[$1] || $&}
File.binwrite("Makefile", mk)