diff options
-rw-r--r-- | djgpp/README.djgpp | 2 | ||||
-rw-r--r-- | djgpp/config.hin | 6 | ||||
-rw-r--r-- | djgpp/config.sed | 187 | ||||
-rw-r--r-- | djgpp/configure.bat | 1 | ||||
-rw-r--r-- | ext/extmk.rb | 2 | ||||
-rw-r--r-- | io.c | 6 | ||||
-rw-r--r-- | lib/mkmf.rb | 6 |
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) @@ -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 = "" |