summaryrefslogtreecommitdiff
path: root/ext/extmk.rb.in
diff options
context:
space:
mode:
Diffstat (limited to 'ext/extmk.rb.in')
-rw-r--r--ext/extmk.rb.in538
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: