Updated MSpec source to 1c3ee1c8.
[rbx.git] / stdlib / ext / iconv / extconf.rb
bloba9d0cfb5e6813aa88c12e60ddb0122eac9202ff2
1 require 'mkmf'
3 dir_config("iconv")
5 conf = File.exist?(File.join($srcdir, "config.charset"))
6 conf = with_config("config-charset", enable_config("config-charset", conf))
8 if have_func("iconv", "iconv.h") or
9     have_library("iconv", "iconv", "iconv.h")
10   if checking_for("const of iconv() 2nd argument") do
11       create_tmpsrc(cpp_include("iconv.h") + "---> iconv(cd,0,0,0,0) <---")
12       src = xpopen(cpp_command("")) {|f|f.read}
13       if !(func = src[/^--->\s*(\w+).*\s*<---/, 1])
14         Logging::message "iconv function name not found"
15         false
16       elsif !(second = src[%r"\b#{func}\s*\(.*?,(.*?),.*?\)\s*;"m, 1])
17         Logging::message "prototype for #{func}() not found"
18         false
19       else
20         Logging::message $&+"\n"
21         /\bconst\b/ =~ second
22       end
23     end
24     $defs.push('-DICONV_INPTR_CONST')
25   end
26   if conf
27     prefix = '$(srcdir)'
28     prefix =  $nmake ? "{#{prefix}}" : "#{prefix}/"
29     if $extout
30       wrapper = "$(RUBYARCHDIR)/iconv.rb"
31     else
32       wrapper = "./iconv.rb"
33       $INSTALLFILES = [[wrapper, "$(RUBYARCHDIR)"]]
34     end
35     if String === conf
36       require 'uri'
37       scheme = URI.parse(conf).scheme
38     else
39       conf = "$(srcdir)/config.charset"
40     end
41     $cleanfiles << wrapper
42   end
43   create_makefile("iconv")
44   if conf
45     open("Makefile", "a") do |mf|
46       mf.print("\nall: #{wrapper}\n\n#{wrapper}: #{prefix}charset_alias.rb")
47       mf.print(" ", conf) unless scheme
48       mf.print("\n\t$(RUBY) $(srcdir)/charset_alias.rb #{conf} $@\n")
49     end
50   end
51 end