diff options
Diffstat (limited to 'ext/extmk.rb.in')
| -rw-r--r-- | ext/extmk.rb.in | 538 |
1 files changed, 0 insertions, 538 deletions
diff --git a/ext/extmk.rb.in b/ext/extmk.rb.in deleted file mode 100644 index 0c32954577..0000000000 --- a/ext/extmk.rb.in +++ /dev/null @@ -1,538 +0,0 @@ -#! /usr/local/bin/ruby - -$".push 'mkmf.rb' #" - -if ARGV[0] == 'static' - $force_static = TRUE - ARGV.shift -elsif ARGV[0] == 'install' - $install = TRUE - ARGV.shift -elsif ARGV[0] == 'clean' - $clean = TRUE - ARGV.shift -end - -$extlist = [] - -$cache_mod = FALSE; -$lib_cache = {} -$func_cache = {} -$hdr_cache = {} -$topdir = "@top_srcdir@" -if $topdir !~ "^/" - # get absolute path - save = Dir.pwd - Dir.chdir $topdir - $topdir = Dir.pwd - Dir.chdir save -end -$dots = if "@INSTALL@" =~ /^\// then "" else "#{$topdir}/ext/" end - -if File.exist?("config.cache") then - f = open("config.cache", "r") - while f.gets - case $_ - when /^lib: (.+) (yes|no)/ - $lib_cache[$1] = $2 - when /^func: ([\w_]+) (yes|no)/ - $func_cache[$1] = $2 - when /^hdr: (.+) (yes|no)/ - $hdr_cache[$1] = $2 - end - end - f.close -end - -def older(file1, file2) - if !File.exist?(file1) then - return TRUE - end - if !File.exist?(file2) then - return FALSE - end - if File.mtime(file1) < File.mtime(file2) - return TRUE - end - return FALSE -end - -if PLATFORM == "m68k-human" -CFLAGS = "@CFLAGS@".gsub(/-c..-stack=[0-9]+ */, '') -else -CFLAGS = "@CFLAGS@" -end -LINK = "@CC@ -o conftest -I#{$topdir} -I@includedir@ " + CFLAGS + " %s @LDFLAGS@ %s conftest.c @LIBS@ %s" -CPP = "@CPP@ @CPPFLAGS@ -I#{$topdir} -I@includedir@ " + CFLAGS + " %s conftest.c" - -if /win32|djgpp|mingw32|m68k-human/i =~ PLATFORM - $null = open("nul", "w") -else - $null = open("/dev/null", "w") -end - -$orgerr = $stderr.dup -$orgout = $stdout.dup -def xsystem command - if $DEBUG - return system(command) - end - $stderr.reopen($null) - $stdout.reopen($null) - r = system(command) - $stderr.reopen($orgerr) - $stdout.reopen($orgout) - return r -end - -def try_link(libs) - xsystem(format(LINK, $CFLAGS, $LDFLAGS, libs)) -end - -def try_cpp - xsystem(format(CPP, $CFLAGS)) -end - -def have_library(lib, func) - if $lib_cache[lib] - if $lib_cache[lib] == "yes" - if $libs - $libs = "-l" + lib + " " + $libs - else - $libs = "-l" + lib - end - return TRUE - else - return FALSE - end - end - - cfile = open("conftest.c", "w") - cfile.printf "\ -int main() { return 0; } -int t() { %s(); return 0; } -", func - cfile.close - - begin - if $libs - libs = "-l" + lib + " " + $libs - else - libs = "-l" + lib - end - unless try_link(libs) - $lib_cache[lib] = 'no' - $cache_mod = TRUE - return FALSE - end - ensure - system "rm -f conftest*" - end - - $libs = libs - $lib_cache[lib] = 'yes' - $cache_mod = TRUE - return TRUE -end - -def have_func(func) - if $func_cache[func] - if $func_cache[func] == "yes" - $defs.push(format("-DHAVE_%s", func.upcase)) - return TRUE - else - return FALSE - end - end - - cfile = open("conftest.c", "w") - cfile.printf "\ -char %s(); -int main() { return 0; } -int t() { %s(); return 0; } -", func, func - cfile.close - - libs = $libs - libs = "" if libs == nil - - begin - unless try_link(libs) - $func_cache[func] = 'no' - $cache_mod = TRUE - return FALSE - end - ensure - system "rm -f conftest*" - end - $defs.push(format("-DHAVE_%s", func.upcase)) - $func_cache[func] = 'yes' - $cache_mod = TRUE - return TRUE -end - -def have_header(header) - if $hdr_cache[header] - if $hdr_cache[header] == "yes" - header.tr!("a-z./\055", "A-Z___") - $defs.push(format("-DHAVE_%s", header)) - return TRUE - else - return FALSE - end - end - - cfile = open("conftest.c", "w") - cfile.printf "\ -#include <%s> -", header - cfile.close - - begin - unless try_cpp - $hdr_cache[header] = 'no' - $cache_mod = TRUE - return FALSE - end - ensure - system "rm -f conftest*" - end - $hdr_cache[header] = 'yes' - header.tr!("a-z./\055", "A-Z___") - $defs.push(format("-DHAVE_%s", header)) - $cache_mod = TRUE - return TRUE -end - -def create_header() - if $defs.length > 0 - hfile = open("extconf.h", "w") - for line in $defs - line =~ /^-D(.*)/ - hfile.printf "#define %s 1\n", $1 - end - hfile.close - end -end - -def create_makefile(target) - - if $libs and "@DLEXT@" == "o" - libs = $libs.split - for lib in libs - lib.sub!(/-l(.*)/, '"lib\1.a"') - end - $defs.push(format("-DEXTLIB='%s'", libs.join(","))) - end - - $DLDFLAGS = '@DLDFLAGS@' - - if PLATFORM =~ /beos/ - if $libs - $libs = $libs + " -lruby" - else - $libs = "-lruby" - end - $DLDFLAGS = $DLDFLAGS + " -L" + $topdir - end - - $srcdir = $topdir + "/ext/" + target - mfile = open("Makefile", "w") - mfile.printf "\ -SHELL = /bin/sh - -#### Start of system configuration section. #### - -srcdir = #{$srcdir} -VPATH = #{$srcdir} - -hdrdir = #{$topdir} - -CC = @CC@ - -prefix = @prefix@ -CFLAGS = %s -I#{$topdir} -I@includedir@ %s #$CFLAGS %s -DLDFLAGS = #$DLDFLAGS #$LDFLAGS -LDSHARED = @LDSHARED@ -", if $static then "" else "@CCDLFLAGS@" end, CFLAGS, $defs.join(" ") - - mfile.printf "\ - -program_transform_name = -e @program_transform_name@ -RUBY_INSTALL_NAME = `t='$(program_transform_name)'; echo ruby | sed $$t` - -prefix = @prefix@ -exec_prefix = @exec_prefix@ -libdir = @libdir@/$(RUBY_INSTALL_NAME)/@arch@ -@SET_MAKE@ - -#### End of system configuration section. #### - -" - mfile.printf "LOCAL_LIBS = %s\n", $local_libs if $local_libs - mfile.printf "LIBS = %s\n", $libs - mfile.printf "OBJS = " - if !$objs then - $objs = [] - for f in Dir["#{$topdir}/ext/#{target}/*.{c,cc}"] - f = File.basename(f) - f.sub!(/\.(c|cc)$/, ".o") - $objs.push f - end - end - mfile.printf $objs.join(" ") - mfile.printf "\n" - - mfile.printf "\ -TARGET = %s.%s - -INSTALL = %s@INSTALL@ -INSTALL_DATA = %s@INSTALL_DATA@ - -binsuffix = @binsuffix@ - -all: $(TARGET) - -clean:; @rm -f *.o *.so *.sl - @rm -f Makefile extconf.h conftest.* - @rm -f core ruby$(binsuffix) *~ - -realclean: clean -", target, - if $static then "o" else "@DLEXT@" end, $dots, $dots - - mfile.printf "\ - -install: -" - if !$static - mfile.printf "\ - @test -d $(libdir) || mkdir $(libdir) - $(INSTALL) $(TARGET) $(libdir)/$(TARGET) -" - end - for rb in Dir["lib/*.rb"] - mfile.printf "\t$(INSTALL_DATA) %s @libdir@/$(RUBY_INSTALL_NAME)\n", rb - end - mfile.printf "\n" - - if !$static && "@DLEXT@" != "o" - mfile.printf "\ -$(TARGET): $(OBJS) - $(LDSHARED) $(DLDFLAGS) -o $(TARGET) $(OBJS) $(LOCAL_LIBS) $(LIBS) -" - elsif not File.exist?(target + ".c") and not File.exist?(target + ".cc") - if PLATFORM == "m68k-human" - mfile.printf "\ -$(TARGET): $(OBJS) - ar cru $(TARGET) $(OBJS) -" - elsif PLATFORM =~ "-nextstep" - mfile.printf "\ -$(TARGET): $(OBJS) - cc -r $(CFLAGS) -o $(TARGET) $(OBJS) -" - elsif PLATFORM =~ "-openstep" - mfile.printf "\ -$(TARGET): $(OBJS) - cc -r $(CFLAGS) -o $(TARGET) $(OBJS) -" - elsif PLATFORM =~ "-rhapsody" - mfile.printf "\ -$(TARGET): $(OBJS) - cc -r $(CFLAGS) -o $(TARGET) $(OBJS) -" - elsif $static - mfile.printf "\ -$(TARGET): $(OBJS) - ld -r -o $(TARGET) $(OBJS) -" - else - mfile.printf "\ -$(TARGET): $(OBJS) - ld $(DLDFLAGS) -r -o $(TARGET) $(OBJS) -" - end - end - - if File.exist?("depend") - dfile = open("depend", "r") - mfile.printf "###\n" - while line = dfile.gets() - mfile.printf "%s", line - end - dfile.close - end - mfile.close - - if PLATFORM =~ /beos/ - if PLATFORM =~ /^powerpc/ then - deffilename = "ruby.exp" - else - deffilename = "ruby.def" - end - print "creating ruby.def\n" - open(deffilename, "w") do |file| - file.print("EXPORTS\n") if PLATFORM =~ /^i/ - file.print("Init_#{target}\n") - end - end -end - -def extmake(target) - if $force_static or $static_ext[target] - $static = target - else - $static = FALSE - end - - return if $nodynamic and not $static - - $objs = nil - $libs = PLATFORM =~ /cygwin32|beos|openstep|nextstep|rhapsody/ ? nil : "-lc" - $local_libs = nil # to be assigned in extconf.rb - $CFLAGS = nil - $LDFLAGS = nil - - begin - system "mkdir " + target unless File.directory?(target) - Dir.chdir target - if $static_ext.size > 0 || - !File.exist?("./Makefile") || - older("./Makefile", "#{$topdir}/ext/@setup@") || - older("./Makefile", "../extmk.rb") || - older("./Makefile", "#{$topdir}/ext/#{target}/extconf.rb") - then - $defs = [] - if File.exist?("#{$topdir}/ext/#{target}/extconf.rb") - load "#{$topdir}/ext/#{target}/extconf.rb" - else - create_makefile(target); - end - end - if File.exist?("./Makefile") - if $static - $extlist.push [$static,target] - end - if $install - system "make install" - elsif $clean - system "make clean" - else - system "make all" - end - end - if $static - $extlibs = "" unless $extlibs - $extlibs += " " + $LDFLAGS if $LDFLAGS - $extlibs += " " + $local_libs if $local_libs - $extlibs += " " + $libs if $libs - end - ensure - Dir.chdir ".." - end -end - -# get static-link modules -$static_ext = {} -for setup in ["@setup@", "#{$topdir}/ext/@setup@"] - if File.file? setup - f = open(setup) - while f.gets() - $_.chomp! - sub!(/#.*$/, '') - next if /^\s*$/ - if /^option +nodynamic/ - $nodynamic = TRUE - next - end - $static_ext[$_.split[0]] = TRUE - end - f.close - break - end -end - -for d in Dir["#{$topdir}/ext/*"] - File.directory?(d) || next - File.file?(d + "/MANIFEST") || next - - d = File.basename(d) - if $install - print "installing ", d, "\n" - elsif $clean - print "cleaning ", d, "\n" - else - print "compiling ", d, "\n" - end - extmake(d) -end - -if $cache_mod - f = open("config.cache", "w") - for k,v in $lib_cache - f.printf "lib: %s %s\n", k, v - end - for k,v in $func_cache - f.printf "func: %s %s\n", k, v - end - for k,v in $hdr_cache - f.printf "hdr: %s %s\n", k, v - end - f.close -end - -exit if $install or $clean -$extinit = "" unless $extinit -if $extlist.size > 0 - for s,t in $extlist - f = format("%s/%s.o", s, t) - if File.exist?(f) - $extinit += format("\ -\tInit_%s();\n\ -\trb_provide(\"%s.o\");\n\ -", t, t) - $extobjs = "" unless $extobjs - $extobjs += "ext/" - $extobjs += f - $extobjs += " " - else - FALSE - end - end - - if older("extinit.c", "#{$topdir}/ext/@setup@") - f = open("extinit.c", "w") - f.printf "void Init_ext() {\n" - f.printf $extinit - f.printf "}\n" - f.close - end - if older("extinit.o", "extinit.c") - cmd = "@CC@ " + CFLAGS + " -c extinit.c" - print cmd, "\n" - system cmd or exit 1 - end - - Dir.chdir ".." - - if older("ruby@binsuffix@", "#{$topdir}/ext/@setup@") or older("ruby@binsuffix@", "miniruby@binsuffix@") - `rm -f ruby@binsuffix@` - end - - $extobjs = "ext/extinit.o " + $extobjs - if PLATFORM =~ /m68k-human|beos/ - $extlibs.gsub!("-L/usr/local/lib", "") if $extlibs - end - system format('make ruby@binsuffix@ EXTOBJS="%s" EXTLIBS="%s"', $extobjs, $extlibs) -else - Dir.chdir ".." - if older("ruby@binsuffix@", "miniruby@binsuffix@") - `rm -f ruby@binsuffix@` - system("make ruby@binsuffix@") - end -end - -#Local variables: -# mode: ruby -#end: |
