summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--djgpp/README.djgpp2
-rw-r--r--djgpp/config.hin6
-rw-r--r--djgpp/config.sed187
-rw-r--r--djgpp/configure.bat1
-rw-r--r--ext/extmk.rb2
-rw-r--r--io.c6
-rw-r--r--lib/mkmf.rb6
7 files changed, 132 insertions, 78 deletions
diff --git a/djgpp/README.djgpp b/djgpp/README.djgpp
index d81259ccac..f1f413a478 100644
--- a/djgpp/README.djgpp
+++ b/djgpp/README.djgpp
@@ -3,7 +3,7 @@
This is what you need to do to compile and install Ruby:
1. Run configure.bat, which will generate config.h and Makefile
- and ext/extmk.rb(GNU sed required).
+ (GNU sed required).
Message like this is normal:
sed.exe: can't read 123456789: No such file or directory (ENOENT)
diff --git a/djgpp/config.hin b/djgpp/config.hin
index 862ef8dc2a..8ee427c92f 100644
--- a/djgpp/config.hin
+++ b/djgpp/config.hin
@@ -71,8 +71,6 @@
#define HAVE_HYPOT 1
#define HAVE_ACOSH 1
#define HAVE_FMOD 1
-#define HAVE_DRAND48 1
-#define HAVE_RANDOM 1
#define HAVE_WAITPID 1
#define HAVE_FSYNC 1
#define HAVE_TRUNCATE 1
@@ -96,7 +94,6 @@
#define HAVE_COSH 1
#define HAVE_SINH 1
#define HAVE_TANH 1
-#define HAVE_INITSTATE 1
#define HAVE_STRUCT_TM_TM_ZONE 1
#define HAVE_TM_ZONE 1
#define HAVE_STRUCT_TM_TM_GMTOFF 1
@@ -106,8 +103,9 @@
#define RSHIFT(x,y) ((x)>>(int)y)
#define FILE_COUNT _cnt
#define FILE_READPTR _ptr
+#define NEED_IO_FLUSH_BETWEEN_RW 1
#define DEFAULT_KCODE KCODE_NONE
-#define DLEXT ".o"
+#define DLEXT ".so"
#define RUBY_LIB "/lib/ruby/@MAJOR@.@MINOR@"
#define RUBY_SITE_LIB "/lib/ruby/site_ruby"
#define RUBY_SITE_LIB2 "/lib/ruby/site_ruby/@MAJOR@.@MINOR@"
diff --git a/djgpp/config.sed b/djgpp/config.sed
index 8c09fc6f1b..15196245a1 100644
--- a/djgpp/config.sed
+++ b/djgpp/config.sed
@@ -1,73 +1,5 @@
/^SHELL/s,/bin/sh,$(COMSPEC),
-s%@srcdir@%.%g
-s%@top_srcdir@%..%
-s%@CFLAGS@%-O2%g
-s%@CPPFLAGS@%%g
-s%@CXXFLAGS@%%g
-s%@LDFLAGS@%%g
-s%@LIBS@%-lm %g
-s%@exec_prefix@%${prefix}%g
-s%@prefix@%/usr/local%g
-s%@program_transform_name@%s,x,x,%g
-s%@bindir@%${exec_prefix}/bin%g
-s%@sbindir@%${exec_prefix}/sbin%g
-s%@libexecdir@%${exec_prefix}/libexec%g
-s%@datadir@%${prefix}/share%g
-s%@sysconfdir@%${prefix}/etc%g
-s%@sharedstatedir@%${prefix}/com%g
-s%@localstatedir@%${prefix}/var%g
-s%@libdir@%${exec_prefix}/lib%g
-s%@includedir@%${prefix}/include%g
-s%@oldincludedir@%/usr/include%g
-s%@infodir@%${prefix}/info%g
-s%@mandir@%${prefix}/man%g
-s%@host@%i386-pc-msdosdjgpp%g
-s%@host_alias@%i386-msdosdjgpp%g
-s%@host_cpu@%i386%g
-s%@host_vendor@%pc%g
-s%@host_os@%msdosdjgpp%g
-s%@CC@%gcc%g
-s%@CPP@%gcc -E%g
-s%@YACC@%bison -y%g
-s%@RANLIB@%ranlib%g
-s%@AR@%ar%g
-s%@INSTALL_PROGRAM@%${INSTALL}%g
-s%@INSTALL_DATA@%${INSTALL} -m 644%g
-s%@SET_MAKE@%%g
-s%@LIBOBJS@% crypt.o flock.o vsnprintf.o%g
-s%@ALLOCA@%%g
-s%@DEFAULT_KCODE@%%g
-s%@EXEEXT@%.exe%g
-s%@OBJEXT@%o%g
-s%@XLDFLAGS@%%g
-s%@DLDFLAGS@%%g
-s%@STATIC@%%g
-s%@CCDLFLAGS@%%g
-s%@LDSHARED@%ld%g
-s%@DLEXT@%o%g
-s%@STRIP@%strip%g
-s%@EXTSTATIC@%%g
-s%@binsuffix@%.exe%g
-s%@setup@%Setup.dj%g
-s%@LIBRUBY@%libruby.a%g
-s%@LIBRUBY_A@%libruby.a%g
-s%@LIBRUBYARG@%libruby.a%g
-s%@LIBRUBY_SO@%%g
-s%@SOLIBS@%%g
-s%@arch@%i386-msdosdjgpp%g
;s%/bin/rm%rm%
-s%@DLDLIBS@%-lc%g
-s%@MAINLIBS@%%g
-s%@PREP@%%
-s%@RUBY_INSTALL_NAME@%ruby%g
-s%@RUBY_SO_NAME@%%g
-s%@arch@%i386-msdosdjgpp%g
-s%@sitedir@%${prefix}/lib/ruby/site_ruby%g
-s%@configure_args@%%g
-s%@MINIRUBY@%./miniruby%
-s%@OUTFLAG@%-o %
-s%@CPPOUTFILE@%-o conftest.i%
-s%@archlib@%/lib/ruby/i386-msdosdjgpp%
;s%|| true%%
;/\/dev\/null/ {
;s,/dev/null 2>&1, nul,
@@ -76,8 +8,121 @@ s%@archlib@%/lib/ruby/i386-msdosdjgpp%
;/^config.status/ {
; N;N;N;N;N;d
;}
-#;s%mv -f y\.tab\.c%if exist parse.c del parse.c\
-# ren y_tab.c%
-#;s%y\.tab\.c%y_tab.c%
+:t
+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s,@srcdir@,.,g;t t
+s,@top_srcdir@,..,;t t
+s,@PATH_SEPARATOR@,:,;t t
+s,@PACKAGE_NAME@,,;t t
+s,@PACKAGE_TARNAME@,,;t t
+s,@PACKAGE_VERSION@,,;t t
+s,@PACKAGE_STRING@,,;t t
+s,@PACKAGE_BUGREPORT@,,;t t
+s,@exec_prefix@,${prefix},;t t
+s,@prefix@,/dev/env/DJDIR,;t t
+s,@program_transform_name@,s:^::,;t t
+s,@bindir@,${exec_prefix}/bin,;t t
+s,@sbindir@,${exec_prefix}/sbin,;t t
+s,@libexecdir@,${exec_prefix}/libexec,;t t
+s,@datadir@,${prefix}/share,;t t
+s,@sysconfdir@,${prefix}/etc,;t t
+s,@sharedstatedir@,${prefix}/com,;t t
+s,@localstatedir@,${prefix}/var,;t t
+s,@libdir@,${exec_prefix}/lib,;t t
+s,@includedir@,${prefix}/include,;t t
+s,@oldincludedir@,/usr/include,;t t
+s,@infodir@,${prefix}/info,;t t
+s,@mandir@,${prefix}/man,;t t
+s,@build_alias@,i586-pc-msdosdjgpp,;t t
+s,@host_alias@,i586-pc-msdosdjgpp,;t t
+s,@target_alias@,i386-msdosdjgpp,;t t
+s,@DEFS@,,;t t
+s,@ECHO_C@,,;t t
+s,@ECHO_N@,-n,;t t
+s,@ECHO_T@,,;t t
+s,@LIBS@,-lm ,;t t
+s,@MAJOR@,1,;t t
+s,@MINOR@,7,;t t
+s,@TEENY@,3,;t t
+s,@build@,i586-pc-msdosdjgpp,;t t
+s,@build_cpu@,i586,;t t
+s,@build_vendor@,pc,;t t
+s,@build_os@,msdosdjgpp,;t t
+s,@host@,i586-pc-msdosdjgpp,;t t
+s,@host_cpu@,i586,;t t
+s,@host_vendor@,pc,;t t
+s,@host_os@,msdosdjgpp,;t t
+s,@target@,i386-pc-msdosdjgpp,;t t
+s,@target_cpu@,i386,;t t
+s,@target_vendor@,pc,;t t
+s,@target_os@,msdosdjgpp,;t t
+s,@CC@,gcc,;t t
+s,@ac_ct_CC@,,;t t
+s,@CFLAGS@,-Os,;t t
+s,@LDFLAGS@,,;t t
+s,@CPPFLAGS@,,;t t
+s,@EXEEXT@,.exe,;t t
+s,@OBJEXT@,o,;t t
+s,@CPP@,gcc -E,;t t
+s,@EGREP@,grep -E,;t t
+s,@GNU_LD@,yes,;t t
+s,@CPPOUTFILE@,-o conftest.i,;t t
+s,@OUTFLAG@,-o ,;t t
+s,@YACC@,bison -y,;t t
+s,@RANLIB@,ranlib,;t t
+s,@ac_ct_RANLIB@,,;t t
+s,@AR@,ar,;t t
+s,@ac_ct_AR@,,;t t
+s,@NM@,,;t t
+s,@ac_ct_NM@,,;t t
+s,@WINDRES@,,;t t
+s,@ac_ct_WINDRES@,,;t t
+s,@DLLWRAP@,,;t t
+s,@ac_ct_DLLWRAP@,,;t t
+s,@LN_S@,ln -s,;t t
+s,@SET_MAKE@,,;t t
+s,@LIBOBJS@,crypt.o flock.o vsnprintf.o,;t t
+s,@ALLOCA@,,;t t
+s,@XCFLAGS@,,;t t
+s,@XLDFLAGS@, -L.,;t t
+s,@DLDFLAGS@,,;t t
+s,@STATIC@,,;t t
+s,@CCDLFLAGS@,,;t t
+s,@LDSHARED@,ld,;t t
+s,@DLEXT@,so,;t t
+s,@DLEXT2@,,;t t
+s,@LIBEXT@,a,;t t
+s,@LINK_SO@,,;t t
+s,@LIBPATHFLAG@, -L%s,;t t
+s,@STRIP@,strip,;t t
+s,@EXTSTATIC@,,;t t
+s,@setup@,Setup.dj,;t t
+s,@MINIRUBY@,./miniruby,;t t
+s,@PREP@,,;t t
+s,@ARCHFILE@,,;t t
+s,@LIBRUBY_LDSHARED@,ld,;t t
+s,@LIBRUBY_DLDFLAGS@,,;t t
+s,@RUBY_INSTALL_NAME@,ruby,;t t
+s,@rubyw_install_name@,,;t t
+s,@RUBYW_INSTALL_NAME@,,;t t
+s,@RUBY_SO_NAME@,$(RUBY_INSTALL_NAME),;t t
+s,@LIBRUBY_A@,lib$(RUBY_INSTALL_NAME).a,;t t
+s,@LIBRUBY_SO@,lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR).$(TEENY),;t t
+s,@LIBRUBY_ALIASES@,lib$(RUBY_SO_NAME).so,;t t
+s,@LIBRUBY@,$(LIBRUBY_A),;t t
+s,@LIBRUBYARG@,-l$(RUBY_INSTALL_NAME),;t t
+s,@SOLIBS@,,;t t
+s,@DLDLIBS@,-lc,;t t
+s,@ENABLE_SHARED@,no,;t t
+s,@MAINLIBS@,,;t t
+s,@COMMON_LIBS@,,;t t
+s,@COMMON_MACROS@,,;t t
+s,@COMMON_HEADERS@,,;t t
+s,@EXPORT_PREFIX@,,;t t
+s,@MAKEFILES@,Makefile,;t t
+s,@arch@,i386-msdosdjgpp,;t t
+s,@sitearch@,i386-msdosdjgpp,;t t
+s,@sitedir@,${prefix}/lib/ruby/site_ruby,;t t
+s,@configure_args@,,;t t
/^,THIS_IS_DUMMY_PATTERN_/i\
ac_given_srcdir=.
diff --git a/djgpp/configure.bat b/djgpp/configure.bat
index dbb4a08528..e6a5d79d4a 100644
--- a/djgpp/configure.bat
+++ b/djgpp/configure.bat
@@ -5,7 +5,6 @@ if exist djgpp\version.sed goto exist
:exist
set _conv_=-f djgpp\config.sed -f djgpp\version.sed
sed %_conv_% < Makefile.in > Makefile
-sed %_conv_% < ext\extmk.rb.in > ext\extmk.rb
sed %_conv_% < djgpp\config.hin > config.h
echo LFN check > 12345678
sed -n /LFN/d 123456789 > nul
diff --git a/ext/extmk.rb b/ext/extmk.rb
index e43638326a..b9b943c0ec 100644
--- a/ext/extmk.rb
+++ b/ext/extmk.rb
@@ -207,6 +207,7 @@ if $extlist.size > 0
"#{n}=#{v}" if v and !(v = v.strip).empty?
}.compact
puts conf
+ $stdout.flush
ARGV.concat(conf)
end
rubies = []
@@ -216,6 +217,7 @@ rubies = []
Dir.chdir ".."
puts "making #{rubies.join(', ')}"
+$stdout.flush
ARGV.concat(rubies)
host = (defined?(CROSS_COMPILING) ? CROSS_COMPILING : RUBY_PLATFORM)
/mswin|bccwin|mingw|djgpp|human|os2|macos/ =~ host or exec(*ARGV)
diff --git a/io.c b/io.c
index fc50ba8696..63ed511151 100644
--- a/io.c
+++ b/io.c
@@ -141,12 +141,18 @@ static VALUE lineno;
extern int ReadDataPending();
# define READ_DATA_PENDING(fp) (!feof(fp))
#endif
+
#ifndef READ_DATA_PENDING_PTR
# ifdef FILE_READPTR
# define READ_DATA_PENDING_PTR(fp) ((fp)->FILE_READPTR)
# endif
#endif
+#if defined __DJGPP__
+# undef READ_DATA_PENDING_COUNT
+# undef READ_DATA_PENDING_PTR
+#endif
+
#define READ_CHECK(fp) do {\
if (!READ_DATA_PENDING(fp)) {\
rb_thread_wait_fd(fileno(fp));\
diff --git a/lib/mkmf.rb b/lib/mkmf.rb
index b20a06cddf..e19fdb35fd 100644
--- a/lib/mkmf.rb
+++ b/lib/mkmf.rb
@@ -129,6 +129,7 @@ module Logging
def self::open
@log ||= File::open(@logfile, 'w')
+ @log.sync = true
$stderr.reopen(@log)
$stdout.reopen(@log)
yield
@@ -139,12 +140,14 @@ module Logging
def self::message(*s)
@log ||= File::open(@logfile, 'w')
+ @log.sync = true
@log.printf(*s)
end
def self::logfile file
@logfile = file
if @log and not @log.closed?
+ @log.flush
@log.close
@log = nil
end
@@ -636,7 +639,7 @@ def create_makefile(target, srcprefix = nil)
for lib in $libs.split
lib.sub!(/-l(.*)/, %%"lib\\1.#{$LIBEXT}"%)
end
- $defs.push(format("-DEXTLIB='%s'", libs.join(",")))
+ $defs.push(format("-DEXTLIB='%s'", $libs.split.join(",")))
end
if target.include?('/')
@@ -787,6 +790,7 @@ def init_mkmf(config = CONFIG)
$OBJEXT = config["OBJEXT"].dup
$LIBS = "#{config['LIBS']} #{config['DLDLIBS']}"
$LIBRUBYARG = config['LIBRUBYARG']
+ $LIBPATH = []
$objs = nil
$libs = ""