diff options
Diffstat (limited to 'ext/extmk.rb.in')
-rw-r--r-- | ext/extmk.rb.in | 72 |
1 files changed, 44 insertions, 28 deletions
diff --git a/ext/extmk.rb.in b/ext/extmk.rb.in index e8dc56604f..b60951538d 100644 --- a/ext/extmk.rb.in +++ b/ext/extmk.rb.in @@ -1,13 +1,14 @@ #! /usr/local/bin/ruby $".push 'mkmf.rb' #" -load '../lib/find.rb' +load '@top_srcdir@/lib/find.rb' if ARGV[0] == 'static' $force_static = TRUE ARGV.shift elsif ARGV[0] == 'install' $install = TRUE + $destdir = ARGV[1] || '' ARGV.shift elsif ARGV[0] == 'clean' $clean = TRUE @@ -20,8 +21,16 @@ $cache_mod = FALSE; $lib_cache = {} $func_cache = {} $hdr_cache = {} -$topdir = "@top_srcdir@" -if $topdir !~ "^/" +$top_srcdir = "@top_srcdir@" +if $top_srcdir !~ "^/" + # get absolute path + save = Dir.pwd + Dir.chdir $top_srcdir + $top_srcdir = Dir.pwd + Dir.chdir save +end +$topdir = ".." +if $topdir !~ "^/" # get absolute path save = Dir.pwd Dir.chdir $topdir @@ -63,8 +72,8 @@ 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" +LINK = "@CC@ -o conftest -I#{$topdir} -I#{$top_srcdir} -I@includedir@ " + CFLAGS + " %s @LDFLAGS@ %s conftest.c @LIBS@ %s" +CPP = "@CPP@ @CPPFLAGS@ -I#{$topdir} -I#{$top_srcdir} -I@includedir@ " + CFLAGS + " %s conftest.c" if /win32|djgpp|mingw32|m68k-human/i =~ PLATFORM $null = open("nul", "w") @@ -105,10 +114,10 @@ def install_rb(mfile) end for f in dir next if f == "." - mfile.printf "\t@test -d $(libdir)/%s || mkdir $(libdir)/%s\n", f, f + mfile.printf "\t@test -d $(DESTDIR)$(pkglibdir)/%s || mkdir $(DESTDIR)$(pkglibdir)/%s\n", f, f end for f in path - mfile.printf "\t$(INSTALL_DATA) lib/%s $(libdir)/%s\n", f, f + mfile.printf "\t$(INSTALL_DATA) lib/%s $(DESTDIR)$(pkglibdir)/%s\n", f, f end end @@ -255,7 +264,7 @@ def create_makefile(target) $DLDFLAGS = $DLDFLAGS + " -L" + $topdir end - $srcdir = $topdir + "/ext/" + target + $srcdir = $top_srcdir + "/ext/" + target mfile = open("Makefile", "w") mfile.printf "\ SHELL = /bin/sh @@ -270,7 +279,7 @@ hdrdir = #{$topdir} CC = @CC@ prefix = @prefix@ -CFLAGS = %s -I#{$topdir} -I@includedir@ %s #$CFLAGS %s +CFLAGS = %s -I#{$topdir} -I#{$top_srcdir} -I@includedir@ %s #$CFLAGS %s DLDFLAGS = #$DLDFLAGS #$LDFLAGS LDSHARED = @LDSHARED@ ", if $static then "" else "@CCDLFLAGS@" end, CFLAGS, $defs.join(" ") @@ -282,8 +291,9 @@ RUBY_INSTALL_NAME = `t='$(program_transform_name)'; echo ruby | sed $$t` prefix = @prefix@ exec_prefix = @exec_prefix@ -libdir = @libdir@/$(RUBY_INSTALL_NAME) -archdir = $(libdir)/@arch@ +libdir = @libdir@ +pkglibdir = $(libdir)/$(RUBY_INSTALL_NAME) +archdir = $(pkglibdir)/@arch@ @SET_MAKE@ #### End of system configuration section. #### @@ -294,7 +304,7 @@ archdir = $(libdir)/@arch@ mfile.printf "OBJS = " if !$objs then $objs = [] - for f in Dir["#{$topdir}/ext/#{target}/*.{c,cc}"] + for f in Dir["#{$top_srcdir}/ext/#{$mdir}/*.{c,cc}"] f = File.basename(f) f.sub!(/\.(c|cc)$/, ".o") $objs.push f @@ -313,7 +323,7 @@ binsuffix = @binsuffix@ all: $(TARGET) -clean:; @rm -f *.o *.so *.sl +clean:; @rm -f *.o *.a *.so *.sl @rm -f Makefile extconf.h conftest.* @rm -f core ruby$(binsuffix) *~ @@ -324,12 +334,13 @@ realclean: clean mfile.printf "\ install: - @test -d $(libdir) || mkdir $(libdir) - @test -d $(archdir) || mkdir $(archdir) + @test -d $(DESTDIR)$(libdir) || mkdir $(DESTDIR)$(libdir) + @test -d $(DESTDIR)$(pkglibdir) || mkdir $(DESTDIR)$(pkglibdir) + @test -d $(DESTDIR)$(archdir) || mkdir $(DESTDIR)$(archdir) " if !$static mfile.printf "\ - $(INSTALL) $(TARGET) $(archdir)/$(TARGET) + $(INSTALL) $(TARGET) $(DESTDIR)$(archdir)/$(TARGET) " end install_rb(mfile) @@ -339,7 +350,7 @@ install: mfile.printf "\ $(TARGET): $(OBJS) @AR@ cru $(TARGET) $(OBJS) - @-@RANLIB@ $(LIBRUBY) 2> /dev/null || true + @-@RANLIB@ $(TARGET) 2> /dev/null || true " elsif "@DLEXT@" != "o" mfile.printf "\ @@ -405,17 +416,18 @@ def extmake(target) $LDFLAGS = nil begin - system "mkdir " + target unless File.directory?(target) + system "mkdir", target unless File.directory?(target) Dir.chdir target + $mdir = target if $static_ext.size > 0 || !File.exist?("./Makefile") || - older("./Makefile", "#{$topdir}/ext/@setup@") || + older("./Makefile", "#{$top_srcdir}/ext/@setup@") || older("./Makefile", "../extmk.rb") || - older("./Makefile", "#{$topdir}/ext/#{target}/extconf.rb") + older("./Makefile", "#{$top_srcdir}/ext/#{target}/extconf.rb") then $defs = [] - if File.exist?("#{$topdir}/ext/#{target}/extconf.rb") - load "#{$topdir}/ext/#{target}/extconf.rb" + if File.exist?("#{$top_srcdir}/ext/#{target}/extconf.rb") + load "#{$top_srcdir}/ext/#{target}/extconf.rb" else create_makefile(target); end @@ -425,7 +437,7 @@ def extmake(target) $extlist.push [$static,target] end if $install - system "make install" + system "make install DESTDIR=#{$destdir}" elsif $clean system "make clean" else @@ -445,7 +457,7 @@ end # get static-link modules $static_ext = {} -for setup in ["@setup@", "#{$topdir}/ext/@setup@"] +for setup in ["@setup@", "#{$top_srcdir}/ext/@setup@"] if File.file? setup f = open(setup) while f.gets() @@ -463,7 +475,7 @@ for setup in ["@setup@", "#{$topdir}/ext/@setup@"] end end -for d in Dir["#{$topdir}/ext/*"] +for d in Dir["#{$top_srcdir}/ext/*"] File.directory?(d) || next File.file?(d + "/MANIFEST") || next @@ -511,7 +523,7 @@ if $extlist.size > 0 end end - if older("extinit.c", "#{$topdir}/ext/@setup@") + if older("extinit.c", "#{$top_srcdir}/ext/@setup@") f = open("extinit.c", "w") f.printf "void Init_ext() {\n" f.printf $extinit @@ -526,11 +538,15 @@ if $extlist.size > 0 Dir.chdir ".." - if older("ruby@binsuffix@", "#{$topdir}/ext/@setup@") or older("ruby@binsuffix@", "miniruby@binsuffix@") + if older("ruby@binsuffix@", "#{$top_srcdir}/ext/@setup@") or older("ruby@binsuffix@", "miniruby@binsuffix@") `rm -f ruby@binsuffix@` end - $extobjs = "ext/extinit.o " + $extobjs + if $extobjs + $extobjs = "ext/extinit.o " + $extobjs + else + $extobjs = "ext/extinit.o " + end if PLATFORM =~ /m68k-human|beos/ $extlibs.gsub!("-L/usr/local/lib", "") if $extlibs end |