summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--Makefile.in312
-rw-r--r--bcc32/Makefile.sub354
-rw-r--r--bcc32/configure.bat62
-rw-r--r--common.mk29
-rw-r--r--configure.in30
-rw-r--r--cygwin/GNUmakefile.in17
-rw-r--r--ext/extmk.rb258
-rw-r--r--instruby.rb64
-rw-r--r--lib/mkmf.rb261
-rw-r--r--win32/Makefile.sub411
-rwxr-xr-xwin32/configure.bat31
-rw-r--r--wince/Makefile.sub463
-rw-r--r--wince/configure.bat155
14 files changed, 1068 insertions, 1386 deletions
diff --git a/ChangeLog b/ChangeLog
index 44b2059..fb2dffd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Wed Mar 30 23:44:50 2005 Nobuyoshi Nakada <nobu.nokada@softhome.net>
+
+ * Makefile.in, */Makefile.sub, */configure.bat,
+ cygwin/GNUmakefile.in, common.mk, configure.in, ext/extmk.rb,
+ lib/mkmf.rb, instruby.rb, runruby.rb: backport extout.
+ [ruby-dev:25963]
+
Wed Mar 30 17:41:48 2005 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tcltklib/tcltklib.c: add TclTkIp#_create_console() method to
diff --git a/Makefile.in b/Makefile.in
index 663ba43..4837ca2 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -10,6 +10,7 @@ YACC = @YACC@
PURIFY =
AUTOCONF = autoconf
@SET_MAKE@
+MKFILES = @MAKEFILES@
prefix = @prefix@
exec_prefix = @exec_prefix@
@@ -17,10 +18,19 @@ bindir = @bindir@
sbindir = @sbindir@
libdir = @libdir@
libexecdir = @libexecdir@
+datadir = @datadir@
arch = @arch@
sitearch = @sitearch@
sitedir = @sitedir@
+TESTUI = console
+TESTS =
+RDOCTARGET = @RDOCTARGET@
+
+EXTOUT = @EXTOUT@
+RIDATADIR = $(DESTDIR)$(datadir)/ri/$(MAJOR).$(MINOR)/system
+
+OUTFLAG = -o
CFLAGS = @CFLAGS@ @XCFLAGS@ @ARCH_FLAG@
CPPFLAGS = -I. -I$(srcdir) @CPPFLAGS@
LDFLAGS = @STATIC@ $(CFLAGS) @LDFLAGS@
@@ -39,7 +49,9 @@ RUBY_SO_NAME=@RUBY_SO_NAME@
EXEEXT = @EXEEXT@
PROGRAM=$(RUBY_INSTALL_NAME)$(EXEEXT)
RUBY = $(RUBY_INSTALL_NAME)
+RUBYOPT =
MINIRUBY = @MINIRUBY@
+RUNRUBY = @RUNRUBY@
#### End of system configuration section. ####
@@ -55,135 +67,58 @@ LIBRUBYARG = @LIBRUBYARG@
LIBRUBYARG_STATIC = @LIBRUBYARG_STATIC@
LIBRUBYARG_SHARED = @LIBRUBYARG_SHARED@
-PREP = @PREP@ @ARCHFILE@
+PREP = @PREP@
+ARCHFILE = @ARCHFILE@
SETUP =
EXTSTATIC = @EXTSTATIC@
+RM = rm -f
+NM = @NM@
+AR = @AR@
+ARFLAGS = rcu
+RANLIB = @RANLIB@
+
+OBJEXT = @OBJEXT@
+
EXTOBJS =
DLDOBJS = $(DMYEXT)
-DMYEXT = dmyext.@OBJEXT@
-
-MAINOBJ = main.@OBJEXT@
-
-OBJS = array.@OBJEXT@ \
- bignum.@OBJEXT@ \
- class.@OBJEXT@ \
- compar.@OBJEXT@ \
- dir.@OBJEXT@ \
- dln.@OBJEXT@ \
- enum.@OBJEXT@ \
- error.@OBJEXT@ \
- eval.@OBJEXT@ \
- file.@OBJEXT@ \
- gc.@OBJEXT@ \
- hash.@OBJEXT@ \
- inits.@OBJEXT@ \
- io.@OBJEXT@ \
- marshal.@OBJEXT@ \
- math.@OBJEXT@ \
- numeric.@OBJEXT@ \
- object.@OBJEXT@ \
- pack.@OBJEXT@ \
- parse.@OBJEXT@ \
- process.@OBJEXT@ \
- prec.@OBJEXT@ \
- random.@OBJEXT@ \
- range.@OBJEXT@ \
- re.@OBJEXT@ \
- regex.@OBJEXT@ \
- ruby.@OBJEXT@ \
- signal.@OBJEXT@ \
- sprintf.@OBJEXT@ \
- st.@OBJEXT@ \
- string.@OBJEXT@ \
- struct.@OBJEXT@ \
- time.@OBJEXT@ \
- util.@OBJEXT@ \
- variable.@OBJEXT@ \
- version.@OBJEXT@ \
- $(MISSING)
+
+MAINOBJ = main.$(OBJEXT)
MANTYPE = @MANTYPE@
-SCRIPT_ARGS = --dest-dir="$(DESTDIR)" \
- --make="$(MAKE)" \
- --mflags="$(MFLAGS)" \
- --make-flags="$(MAKEFLAGS)"
+#### End of variables
+
+all:
-all: @MAKEFILES@ miniruby$(EXEEXT) rbconfig.rb $(LIBRUBY)
- @$(MINIRUBY) $(srcdir)/ext/extmk.rb --extstatic="$(EXTSTATIC)" $(SCRIPT_ARGS)
+.DEFAULT: all
-miniruby$(EXEEXT): config.status $(LIBRUBY_A) $(MAINOBJ) $(DMYEXT)
- @rm -f $@
- $(PURIFY) $(CC) $(LDFLAGS) $(MAINLIBS) $(MAINOBJ) $(DMYEXT) $(LIBRUBY_A) $(LIBS) -o $@
+# Prevent GNU make v3 from overflowing arg limit on SysV.
+.NOEXPORT:
-$(PROGRAM): $(LIBRUBY) $(MAINOBJ) $(EXTOBJS) $(SETUP) miniruby$(EXEEXT)
- @rm -f $@
- $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINLIBS) $(MAINOBJ) $(EXTOBJS) $(LIBRUBYARG) $(LIBS) -o $@
+miniruby$(EXEEXT):
+ @$(RM) $@
+ $(PURIFY) $(CC) $(MAINOBJ) $(LIBRUBY_A) $(LIBS) $(OUTFLAG)$@ $(LDFLAGS) $(MAINLIBS)
+
+$(PROGRAM):
+ @$(RM) $@
+ $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINLIBS) $(MAINOBJ) $(EXTOBJS) $(LIBRUBYARG) $(LIBS) $(OUTFLAG)$@
# We must `rm' the library each time this rule is invoked because "updating" a
# MAB library on Apple/NeXT (see --enable-fat-binary in configure) is not
# supported.
-$(LIBRUBY_A): $(OBJS) $(DMYEXT)
- @rm -f $@
- @AR@ rcu $@ $(OBJS) $(DMYEXT)
- @-@RANLIB@ $@ 2> /dev/null || true
+$(LIBRUBY_A):
+ @$(RM) $@
+ $(AR) $(ARFLAGS) $@ $(OBJS) $(DMYEXT)
+ @-$(RANLIB) $@ 2> /dev/null || true
-$(LIBRUBY_SO): $(OBJS) $(DLDOBJS) miniruby$(EXEEXT) $(PREP)
- $(LDSHARED) $(DLDFLAGS) $(OBJS) $(DLDOBJS) $(SOLIBS) -o $@
+$(LIBRUBY_SO):
+ $(LDSHARED) $(DLDFLAGS) $(OBJS) $(DLDOBJS) $(SOLIBS) $(OUTFLAG)$@
@-$(MINIRUBY) -e 'ARGV.each{|link| File.delete link if File.exist? link; \
File.symlink "$(LIBRUBY_SO)", link}' \
$(LIBRUBY_ALIASES) || true
-ruby.imp: $(LIBRUBY_A)
- @@NM@ -Pgp $(LIBRUBY_A) | awk 'BEGIN{print "#!"}; $$2~/^[BD]$$/{print $$1}' | sort -u -o $@
-# $(MINIRUBY) $< $@
-
-install: install-nodoc @RDOCTARGET@
-
-install-nodoc: rbconfig.rb
- $(MINIRUBY) $(srcdir)/instruby.rb $(SCRIPT_ARGS) --mantype="$(MANTYPE)"
- $(MINIRUBY) $(srcdir)/ext/extmk.rb $(SCRIPT_ARGS) install
-
-what-where no-install: rbconfig.rb
- $(MINIRUBY) $(srcdir)/instruby.rb -n $(SCRIPT_ARGS) --mantype="$(MANTYPE)"
- $(MINIRUBY) $(srcdir)/ext/extmk.rb -n $(SCRIPT_ARGS) install
-
-install-doc:
- @echo Generating RDoc documentation
- $(bindir)/$(PROGRAM) $(srcdir)/bin/rdoc --all --ri-system $(srcdir)
-
-clean-ext:
- @-$(MINIRUBY) $(srcdir)/ext/extmk.rb $(SCRIPT_ARGS) clean 2> /dev/null || true
-
-clean-local:
- @rm -f $(OBJS) $(MAINOBJ) $(LIBRUBY_A) $(LIBRUBY_SO) $(LIBRUBY_ALIASES)
- @rm -f ext/extinit.c ext/extinit.@OBJEXT@ dmyext.@OBJEXT@
- @rm -f $(PROGRAM) miniruby$(EXEEXT)
-
-clean: clean-ext clean-local
-
-distclean-ext:
- @-$(MINIRUBY) $(srcdir)/ext/extmk.rb $(SCRIPT_ARGS) distclean 2> /dev/null || true
-
-distclean-local: clean-local
- @rm -f @MAKEFILES@ config.h rbconfig.rb
- @rm -f ext/config.cache config.cache config.log config.status
- @rm -f *~ core *.core gmon.out y.tab.c y.output ruby.imp
-
-distclean: distclean-ext distclean-local
-
-realclean: distclean
- @rm -f parse.c
- @rm -f lex.c
-
-test: miniruby$(EXEEXT) rbconfig.rb $(PROGRAM) PHONY
- @./miniruby$(EXEEXT) $(srcdir)/rubytest.rb
-
-rbconfig.rb: miniruby$(EXEEXT) $(srcdir)/mkconfig.rb config.status $(PREP)
- @$(MINIRUBY) $(srcdir)/mkconfig.rb rbconfig.rb
-
-fake.rb: miniruby$(EXEEXT) Makefile
+fake.rb: Makefile
@echo ' \
class Object; \
CROSS_COMPILING = RUBY_PLATFORM; \
@@ -202,13 +137,7 @@ fake.rb: miniruby$(EXEEXT) Makefile
Makefile: $(srcdir)/Makefile.in
-.PRECIOUS: @MAKEFILES@
-
-.PHONY: test install install-nodoc install-doc
-
-PHONY:
-
-@MAKEFILES@: config.status
+$(MKFILES): config.status $(srcdir)/common.mk
MAKE=$(MAKE) $(SHELL) ./config.status
@{ \
echo "all:; -@rm -f conftest.mk"; \
@@ -224,11 +153,8 @@ config.status: $(srcdir)/configure
$(srcdir)/configure: $(srcdir)/configure.in
cd $(srcdir) && $(AUTOCONF)
-.c.@OBJEXT@:
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $<
-
lex.c: keywords
- @-rm -f $@
+ @-$(RM) $@
gperf -p -j1 -i 1 -g -o -t -N rb_reserved_word -k1,3,$$ $? > $@ || \
cp "$(srcdir)/$@" .
@@ -237,144 +163,14 @@ lex.c: keywords
sed '/^#/s|y\.tab\.c|$@|' y.tab.c > $@
rm -f y.tab.c
-ext/extinit.@OBJEXT@: ext/extinit.c $(SETUP)
- $(CC) $(CFLAGS) $(CPPFLAGS) @OUTFLAG@$@ -c ext/extinit.c
-
-acosh.@OBJEXT@: $(srcdir)/missing/acosh.c
- $(CC) -I. $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/acosh.c
-
-alloca.@OBJEXT@: $(srcdir)/missing/alloca.c
- $(CC) -I. $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/alloca.c
-
-crypt.@OBJEXT@: $(srcdir)/missing/crypt.c
- $(CC) -I. $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/crypt.c
-
-dup2.@OBJEXT@: $(srcdir)/missing/dup2.c
- $(CC) -I. $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/dup2.c
-
-fileblocks.@OBJEXT@: $(srcdir)/missing/fileblocks.c
- $(CC) -I. $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/fileblocks.c
-
-finite.@OBJEXT@: $(srcdir)/missing/finite.c
- $(CC) -I. $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/finite.c
-
-flock.@OBJEXT@: $(srcdir)/missing/flock.c
- $(CC) -I. $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/flock.c
-
-isinf.@OBJEXT@: $(srcdir)/missing/isinf.c
- $(CC) -I. $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/isinf.c
-
-isnan.@OBJEXT@: $(srcdir)/missing/isnan.c
- $(CC) -I. $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/isnan.c
-
-fnmatch.@OBJEXT@: $(srcdir)/missing/fnmatch.c
- $(CC) -I. $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/fnmatch.c
-
-memcmp.@OBJEXT@: $(srcdir)/missing/memcmp.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/memcmp.c
-
-memmove.@OBJEXT@: $(srcdir)/missing/memmove.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/memmove.c
-
-mkdir.@OBJEXT@: $(srcdir)/missing/mkdir.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/mkdir.c
-
-vsnprintf.@OBJEXT@: $(srcdir)/missing/vsnprintf.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/vsnprintf.c
-
-strcasecmp.@OBJEXT@: $(srcdir)/missing/strcasecmp.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/strcasecmp.c
-
-strncasecmp.@OBJEXT@: $(srcdir)/missing/strncasecmp.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/strncasecmp.c
-
-strchr.@OBJEXT@: $(srcdir)/missing/strchr.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/strchr.c
-
-strerror.@OBJEXT@: $(srcdir)/missing/strerror.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/strerror.c
-
-strftime.@OBJEXT@: $(srcdir)/missing/strftime.c
- $(CC) -I. $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/strftime.c
-
-strstr.@OBJEXT@: $(srcdir)/missing/strstr.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/strstr.c
-
-strtol.@OBJEXT@: $(srcdir)/missing/strtol.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/strtol.c
-
-strtoul.@OBJEXT@: $(srcdir)/missing/strtoul.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/strtoul.c
-
-x68.@OBJEXT@: $(srcdir)/missing/x68.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/x68.c
-
-os2.@OBJEXT@: $(srcdir)/missing/os2.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/os2.c
+.c.@OBJEXT@:
+ $(CC) $(CFLAGS) $(CPPFLAGS) -c $<
-dl_os2.@OBJEXT@: $(srcdir)/missing/dl_os2.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -c $(srcdir)/missing/dl_os2.c
+clean-local::
+ @$(RM) ext/extinit.c ext/extinit.$(OBJEXT)
-win32.@OBJEXT@: $(srcdir)/win32/win32.c
- $(CC) $(CFLAGS) $(CPPFLAGS) -I$(srcdir)/win32 -c $(srcdir)/win32/win32.c
+distclean-local::
+ @$(RM) ext/config.cache $(RBCONFIG)
-# Prevent GNU make v3 from overflowing arg limit on SysV.
-.NOEXPORT:
-###
-array.@OBJEXT@: array.c ruby.h config.h defines.h intern.h missing.h \
- util.h st.h
-bignum.@OBJEXT@: bignum.c ruby.h config.h defines.h intern.h missing.h
-class.@OBJEXT@: class.c ruby.h config.h defines.h intern.h missing.h \
- rubysig.h node.h st.h
-compar.@OBJEXT@: compar.c ruby.h config.h defines.h intern.h missing.h
-dir.@OBJEXT@: dir.c ruby.h config.h defines.h intern.h missing.h util.h
-dln.@OBJEXT@: dln.c ruby.h config.h defines.h intern.h missing.h dln.h
-dmyext.@OBJEXT@: dmyext.c
-enum.@OBJEXT@: enum.c ruby.h config.h defines.h intern.h missing.h node.h \
- util.h
-error.@OBJEXT@: error.c ruby.h config.h defines.h intern.h missing.h \
- env.h st.h
-eval.@OBJEXT@: eval.c ruby.h config.h defines.h intern.h missing.h node.h \
- env.h util.h rubysig.h st.h dln.h
-file.@OBJEXT@: file.c ruby.h config.h defines.h intern.h missing.h \
- rubyio.h rubysig.h util.h dln.h
-gc.@OBJEXT@: gc.c ruby.h config.h defines.h intern.h missing.h rubysig.h \
- st.h node.h env.h re.h regex.h
-hash.@OBJEXT@: hash.c ruby.h config.h defines.h intern.h missing.h st.h \
- util.h rubysig.h
-inits.@OBJEXT@: inits.c ruby.h config.h defines.h intern.h missing.h
-io.@OBJEXT@: io.c ruby.h config.h defines.h intern.h missing.h rubyio.h \
- rubysig.h env.h util.h
-main.@OBJEXT@: main.c ruby.h config.h defines.h intern.h missing.h
-marshal.@OBJEXT@: marshal.c ruby.h config.h defines.h intern.h missing.h \
- rubyio.h st.h util.h
-math.@OBJEXT@: math.c ruby.h config.h defines.h intern.h missing.h
-numeric.@OBJEXT@: numeric.c ruby.h config.h defines.h intern.h missing.h
-object.@OBJEXT@: object.c ruby.h config.h defines.h intern.h missing.h \
- st.h util.h
-pack.@OBJEXT@: pack.c ruby.h config.h defines.h intern.h missing.h
-parse.@OBJEXT@: parse.c ruby.h config.h defines.h intern.h missing.h \
- env.h node.h st.h regex.h util.h lex.c
-prec.@OBJEXT@: prec.c ruby.h config.h defines.h intern.h missing.h
-process.@OBJEXT@: process.c ruby.h config.h defines.h intern.h missing.h \
- rubysig.h st.h
-random.@OBJEXT@: random.c ruby.h config.h defines.h intern.h missing.h
-range.@OBJEXT@: range.c ruby.h config.h defines.h intern.h missing.h
-re.@OBJEXT@: re.c ruby.h config.h defines.h intern.h missing.h re.h \
- regex.h
-regex.@OBJEXT@: regex.c config.h regex.h
-ruby.@OBJEXT@: ruby.c ruby.h config.h defines.h intern.h missing.h dln.h \
- node.h util.h
-signal.@OBJEXT@: signal.c ruby.h config.h defines.h intern.h missing.h \
- rubysig.h
-sprintf.@OBJEXT@: sprintf.c ruby.h config.h defines.h intern.h missing.h
-st.@OBJEXT@: st.c config.h st.h
-string.@OBJEXT@: string.c ruby.h config.h defines.h intern.h missing.h \
- re.h regex.h
-struct.@OBJEXT@: struct.c ruby.h config.h defines.h intern.h missing.h
-time.@OBJEXT@: time.c ruby.h config.h defines.h intern.h missing.h
-util.@OBJEXT@: util.c ruby.h config.h defines.h intern.h missing.h util.h
-variable.@OBJEXT@: variable.c ruby.h config.h defines.h intern.h \
- missing.h env.h node.h st.h util.h
-version.@OBJEXT@: version.c ruby.h config.h defines.h intern.h missing.h \
- version.h
+ext/extinit.$(OBJEXT): ext/extinit.c $(SETUP)
+ $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -o$@ -c ext/extinit.c
diff --git a/bcc32/Makefile.sub b/bcc32/Makefile.sub
index cac6128..5fe7937 100644
--- a/bcc32/Makefile.sub
+++ b/bcc32/Makefile.sub
@@ -1,6 +1,7 @@
# -*- makefile -*-
SHELL = $(COMSPEC)
+MKFILES = Makefile
#### Start of system configuration section. ####
OS = bccwin32
@@ -56,6 +57,7 @@ AR = tlib
PURIFY =
AUTOCONF = autoconf
+RM = $(srcdir:/=\)\win32\rm.bat
!if !defined(PROCESSOR_ARCHITECTURE)
PROCESSOR_ARCHITECTURE = x86
@@ -91,9 +93,26 @@ exec_prefix = $(prefix)
!ifndef libdir
libdir = $(exec_prefix)/lib
!endif
-!ifndef DESTDIR
-DESTDIR = $(prefix)
+!if !defined(datadir)
+datadir = $(prefix)/share
!endif
+!ifndef EXTOUT
+EXTOUT = .ext
+!endif
+!ifndef RIDATADIR
+RIDATADIR = $(DESTDIR)$(datadir)/ri/$(MAJOR).$(MINOR)/system
+!endif
+!ifndef TESTUI
+TESTUI = console
+!endif
+!ifndef TESTS
+TESTS =
+!endif
+!ifndef RDOCTARGET
+RDOCTARGET = install-doc
+!endif
+
+OUTFLAG = -o
!ifndef CFLAGS
CFLAGS = -q -tWR -tWC $(DEBUGFLAGS) $(OPTFLAGS) $(PROCESSOR_FLAG) -w- -wsus -wcpt -wdup -wext -wrng -wrpt -wzdi
!endif
@@ -135,6 +154,7 @@ PROGRAM=$(RUBY_INSTALL_NAME)$(EXEEXT)
WPROGRAM=$(RUBYW_INSTALL_NAME)$(EXEEXT)
RUBYDEF = $(RUBY_SO_NAME).def
MINIRUBY = .\miniruby$(EXEEXT)
+RUNRUBY = .\ruby$(EXEEXT) "$(srcdir)runruby.rb" --extout="$(EXTOUT)" --
ORGLIBPATH = $(LIB)
@@ -145,70 +165,46 @@ LIBRUBY_SO = $(RUBY_SO_NAME).dll
LIBRUBY = $(RUBY_SO_NAME).lib
LIBRUBYARG = $(LIBRUBY)
-!ifndef EXTOBJS
-EXTOBJS = dmyext.obj
-!endif
-
-MAINOBJ = main.obj
-WINMAINOBJ = winmain.obj
-
-OBJS = array.obj \
- bignum.obj \
- class.obj \
- compar.obj \
- dir.obj \
- dln.obj \
- enum.obj \
- error.obj \
- eval.obj \
- file.obj \
- gc.obj \
- hash.obj \
- inits.obj \
- io.obj \
- marshal.obj \
- math.obj \
- numeric.obj \
- object.obj \
- pack.obj \
- parse.obj \
- prec.obj \
- process.obj \
- random.obj \
- range.obj \
- re.obj \
- regex.obj \
- ruby.obj \
- signal.obj \
- sprintf.obj \
- st.obj \
- string.obj \
- struct.obj \
- time.obj \
- util.obj \
- variable.obj \
- version.obj \
- $(MISSING)
-
-SCRIPT_ARGS = "--dest-dir=$(DESTDIR)" \
- "--make=$(MAKE)" \
- "--mflags=$(MFLAGS)" \
- "--make-flags=$(MAKEFLAGS)"
-
-all: miniruby$(EXEEXT) rbconfig.rb \
- $(LIBRUBY) $(MISCLIBS)
- .\miniruby$(EXEEXT) $(srcdir)ext/extmk.rb --extstatic=$(EXTSTATIC) $(SCRIPT_ARGS)
+PREP = miniruby$(EXEEXT)
+
+DMYOBJS = dmyext.obj
+OBJEXT = obj
+
+WINMAINOBJ = winmain.$(OBJEXT)
+
+.path.c = .;$(srcdir);$(srcdir)win32;$(srcdir)missing
+.path.h = .;$(srcdir);$(srcdir)win32;$(srcdir)missing
+.path.y = $(srcdir)
+.path. = $(srcdir)
+
+.c.obj:
+ $(CC) $(CFLAGS) $(XCFLAGS) -I. $(CPPFLAGS) -c $(<:/=\)
+
+.rc.res:
+ $(RC) $(RFLAGS) -I. -I$(<D). $(iconinc) -I$(srcdir)win32 $(RFLAGS) -fo$@ $(<:/=\)
+
+.y.c:
+ $(YACC) $(YFLAGS) $(<:\=/)
+ sed -e "s!^ *extern char \*getenv();!/* & */!;s/^\(#.*\)y\.tab/\1parse/" y.tab.c > $(@F)
+ @del y.tab.c
+
+all: $(srcdir)bcc32/Makefile.sub $(srcdir)common.mk
ruby: $(PROGRAM)
rubyw: $(WPROGRAM)
-lib: $(LIBRUBY)
-dll: $(LIBRUBY_SO)
-config: config.h config.status
+!include $(srcdir)/common.mk
-config.h:
- @echo Creating $(@:.\=)
- @type > $@ &&|
+PHONY: Makefile
+
+CONFIG_H = ./.config.h.time
+
+config: config.status
+
+config.status: $(CONFIG_H)
+
+$(CONFIG_H): $(MKFILES) $(srcdir)bcc32/Makefile.sub
+ @$(srcdir:/=\)win32\ifchange.bat config.h &&|
\#define HAVE_SYS_TYPES_H 1
\#define HAVE_SYS_STAT_H 1
\#define HAVE_STDLIB_H 1
@@ -274,7 +270,6 @@ config.h:
\#define STACK_GROW_DIRECTION -1
\#define DEFAULT_KCODE KCODE_NONE
\#define DLEXT ".so"
-\#define DLEXT2 ".dll"
\#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)"
@@ -282,12 +277,14 @@ config.h:
\#define RUBY_ARCHLIB "/lib/ruby/$(MAJOR).$(MINOR)/$(ARCH)-$(OS)"
\#define RUBY_SITE_ARCHLIB "/lib/ruby/site_ruby/$(MAJOR).$(MINOR)/$(ARCH)-$(OS)"
|
+ @exit > $@
-config.status: Makefile $(srcdir)bcc32/Makefile.sub
+config.status: $(MKFILES) $(srcdir)bcc32/Makefile.sub $(srcdir)common.mk
@echo Creating $@
@type > $@ &&|
# Generated automatically by Makefile.sub.
s,@SHELL@,$$(COMSPEC),;t t
+s,@PATH_SEPARATOR@,;,;t t
s,@CFLAGS@,$(CFLAGS),;t t
s,@CPPFLAGS@,$(CPPFLAGS),;t t
s,@CXXFLAGS@,$(CXXFLAGS),;t t
@@ -295,7 +292,7 @@ s,@FFLAGS@,$(FFLAGS),;t t
s,@LDFLAGS@,,;t t
s,@LIBS@,$(LIBS),;t t
s,@exec_prefix@,$${prefix},;t t
-s,@prefix@,,;t t
+s,@prefix@,$(prefix),;t t
s,@program_transform_name@,s,,,,;t t
s,@bindir@,$${exec_prefix}/bin,;t t
s,@sbindir@,$${exec_prefix}/sbin,;t t
@@ -345,12 +342,16 @@ s,@STATIC@,$(STATIC),;t t
s,@CCDLFLAGS@,,;t t
s,@LDSHARED@,$(LDSHARED),;t t
s,@DLEXT@,so,;t t
-s,@DLEXT2@,dll,;t t
s,@LIBEXT@,lib,;t t
s,@STRIP@,$(STRIP),;t t
s,@EXTSTATIC@,$(EXTSTATIC),;t t
s,@setup@,Setup,;t t
s,@MINIRUBY@,$(MINIRUBY),;t t
+s,@PREP@,miniruby$(EXEEXT),;t t
+s,@RUNRUBY@,$(RUNRUBY),;t t
+s,@EXTOUT@,$(EXTOUT),;t t
+s,@ARCHFILE@,,;t t
+s,@RDOCTARGET@,,;t t
s,@LIBRUBY_LDSHARED@,$$(LDSHARED),;t t
s,@LIBRUBY_DLDFLAGS@,-Gi $$(DLDFLAGS),;t t
s,@RUBY_INSTALL_NAME@,$(RUBY_INSTALL_NAME),;t t
@@ -367,7 +368,7 @@ s,@LIBRUBYARG_SHARED@,$$(LIBRUBY),;t t
s,@SOLIBS@,$(SOLIBS),;t t
s,@DLDLIBS@,$(DLDLIBS),;t t
s,@ENABLE_SHARED@,yes,;t t
-s,@OUTFLAG@,-o,;t t
+s,@OUTFLAG@,$(OUTFLAG),;t t
s,@CPPOUTFILE@,,;t t
s,@LIBPATHFLAG@, -L"%s",;t t
s,@RPATHFLAG@,,;t t
@@ -375,8 +376,9 @@ s,@LIBARG@,%s.lib,;t t
s,@LINK_SO@,$$(LDSHARED) $$(DLDFLAGS) $$(LIBPATH) $$(OBJS), $$(@:/=\), nul, $$(LIBS) $$(LOCAL_LIBS), $$(DEFFILE), $$(RESFILE),;t t
s,@COMPILE_C@,$$(CC) $$(CFLAGS) $$(CPPFLAGS) -c $$(<:/=\),;t t
s,@COMPILE_CXX@,$$(CXX) $$(CXXFLAGS) $$(CPPFLAGS) -P -c $$(<:/=\),;t t
-s,@COMPILE_RULES@,{$$(srcdir)}.%s{}.%s: .%s.%s:,;t t
-s,@COMMON_LIBS@,m,;t t
+s,@COMPILE_RULES@,{$$(srcdir)}.%s{}.%s: {$$(topdir)}.%s{}.%s: {$$(hdrdir)}.%s{}.%s: .%s.%s:,;t t
+s,@RULE_SUBST@,{.;$$(VPATH)}%s,;t t
+s,@COMMON_LIBS@,m advapi32 avicap32 avifil32 cap comctl32 comdlg32 dlcapi gdi32 glu32 imagehlp imm32 inetmib1 kernel32 loadperf lsapi32 lz32 mapi32 mgmtapi mpr msacm32 msvfw32 nddeapi netapi32 ole32 oleaut32 oledlg olepro32 opengl32 pdh pkpd32 rasapi32 rasdlg rassapi rpcrt4 setupapi shell32 shfolder snmpapi sporder tapi32 url user32 vdmdbg version win32spl winmm wintrust wsock32,;t t
s,@COMMON_MACROS@,WIN32_LEAN_AND_MEAN;t t
s,@COMMON_HEADERS@,winsock2.h windows.h,;t t
s,@TRY_LINK@,$$(CC) -oconftest $$(INCFLAGS) -I$$(hdrdir) $$(CPPFLAGS) $$(CFLAGS) $$(LIBPATH) $$(LDFLAGS) $$(src) $$(LOCAL_LIBS) $$(LIBS),;t t
@@ -390,9 +392,9 @@ s,@srcdir@,$(srcdir),;t t
s,@top_srcdir@,$(srcdir),;t t
|
-miniruby$(EXEEXT): $(LIBRUBY_A) $(MAINOBJ) dmyext.obj
+miniruby$(EXEEXT):
@echo $(LIBS)
- $(LD) $(LDFLAGS) $(XLDFLAGS) $(MAINOBJ) dmyext.obj,$@,nul,$(LIBRUBY_A) $(LIBS)
+ $(LD) $(LDFLAGS) $(XLDFLAGS) $(MAINOBJ),$@,nul,$(LIBRUBY_A) $(LIBS)
$(PROGRAM): $(MAINOBJ) $(LIBRUBY_SO) $(RUBY_INSTALL_NAME).res
$(LD) $(LDFLAGS) $(XLDFLAGS) $(MAINOBJ),$@,nul,$(LIBRUBYARG) $(LIBS),,$(RUBY_INSTALL_NAME).res
@@ -407,83 +409,14 @@ $(LIBRUBY_A): $(OBJS) dmyext.obj
# $(LIBRUBY): $(LIBRUBY_SO)
# implib $@ $(LIBRUBY_SO)
-$(LIBRUBY_SO) $(LIBRUBY): $(LIBRUBY_A) $(EXTOBJS) $(RUBYDEF) $(RUBY_SO_NAME).res
+$(LIBRUBY_SO): $(LIBRUBY_A) $(EXTOBJS) $(RUBYDEF) $(RUBY_SO_NAME).res
@echo $(EXTOBJS)
$(LIBRUBY_LDSHARED) $(LIBRUBY_DLDFLAGS) $(EXTOBJS:/=\),$(LIBRUBY_SO),nul,$(LIBRUBY_A) $(LIBS),$(RUBYDEF),$(RUBY_SO_NAME).res
-$(RUBYDEF): $(LIBRUBY_A) miniruby$(EXEEXT)
- $(MINIRUBY) $(srcdir)bcc32/mkexports.rb -output=$@ $(LIBRUBY_A)
-
-install: rbconfig.rb
- $(MINIRUBY) $(srcdir)instruby.rb $(SCRIPT_ARGS)
- $(MINIRUBY) $(srcdir)ext/extmk.rb $(SCRIPT_ARGS) install
-
-what-where no-install: rbconfig.rb
- $(MINIRUBY) $(srcdir)instruby.rb -n $(SCRIPT_ARGS)
- $(MINIRUBY) $(srcdir)ext/extmk.rb -n $(SCRIPT_ARGS) install
-
-clean: clean-ext clean-local
-
-clean-local:
- @if exist $(LIBRUBY_A) del $(LIBRUBY_A)
- @if exist $(MAINOBJ) del $(MAINOBJ)
- @if exist rbconfig.rb del rbconfig.rb
- @if exist ext\extinit.c del ext\extinit.c
- @if exist ext\extinit.obj del ext\extinit.obj
- @if exist ext\vc*.pdb del ext\vc*.pdb
- @if exist *.obj del *.obj
- @if exist *.res del *.res
- @if exist *.tds del *.tds
- @if exist *.il? del *.il?
-
-clean-ext:
- @-$(MINIRUBY) $(srcdir)ext/extmk.rb $(SCRIPT_ARGS) clean
-
-distclean: distclean-ext distclean-local
-
-distclean-local: clean-local
- @if exist Makefile del Makefile
- @if exist config.h del config.h
- @if exist ext\config.cache del ext\config.cache
- @if exist config.cache del config.cache
- @if exist config.log del config.log
- @if exist config.status del config.status
- @if exist *~ del *~
- @if exist *.bak del *.bak
- @if exist *.stackdump del *.stackdump
- @if exist *.core del *.core
- @if exist gmon.out del gmon.out
- @if exist y.tab.c del y.tab.c
- @if exist y.output del y.output
- @if exist *.map del *.map
- @if exist *.pdb del *.pdb
- @if exist *.ilk del *.ilk
- @if exist *.exp del *.exp
- @if exist $(RUBYDEF) del $(RUBYDEF)
- @if exist $(RUBY_INSTALL_NAME).rc del $(RUBY_INSTALL_NAME).rc
- @if exist $(RUBYW_INSTALL_NAME).rc del $(RUBYW_INSTALL_NAME).rc
- @if exist $(RUBY_SO_NAME).rc del $(RUBY_SO_NAME).rc
- @if exist $(PROGRAM) del $(PROGRAM)
- @if exist $(WPROGRAM) del $(WPROGRAM)
- @if exist $(LIBRUBY_SO) del $(LIBRUBY_SO)
- @if exist $(LIBRUBY) del $(LIBRUBY)
- @if exist ext\nul if not exist ext\* rmdir ext
- @if exist miniruby$(EXEEXT) del miniruby$(EXEEXT)
-
-distclean-ext:
- @-$(MINIRUBY) $(srcdir)ext/extmk.rb $(SCRIPT_ARGS) distclean
-
-realclean: distclean
- @if exist parse.c del parse.c
- @if exist lex.c del lex.c
-
-test: miniruby$(EXEEXT) rbconfig.rb $(PROGRAM) NUL
- @$(MINIRUBY) $(srcdir)rubytest.rb
-
-rbconfig.rb: miniruby$(EXEEXT) config.status
- @$(MINIRUBY) $(srcdir)mkconfig.rb -srcdir=$(srcdir) \
- -install_name=$(RUBY_INSTALL_NAME) \
- -so_name=$(RUBY_SO_NAME) rbconfig.rb
+$(LIBRUBY): $(LIBRUBY_SO)
+
+$(RUBYDEF): $(LIBRUBY_A) $(PREP)
+ $(MINIRUBY) $(srcdir)bcc32/mkexports.rb -output=$@ -base=$(RUBY_SO_NAME) $(LIBRUBY_A)
$(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc: rbconfig.rb
@$(MINIRUBY) $(srcdir)win32/resource.rb \
@@ -492,95 +425,56 @@ $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc: rbconfig.rb
-so_name=$(RUBY_SO_NAME) \
. $(icondirs) $(srcdir)win32
-#config.status: $(srcdir)configure
-# $(SHELL) .config.status --recheck
-
-.path.c = .;$(srcdir);$(srcdir)win32;$(srcdir)missing
-.path.h = .;$(srcdir);$(srcdir)win32;$(srcdir)missing
-.path.y = $(srcdir)
-
-.c.obj:
- $(CC) $(CFLAGS) $(XCFLAGS) -I. $(CPPFLAGS) -c $(<:/=\)
+post-install-ext::
+ $(MINIRUBY) -I$(srcdir)lib -rrbconfig -rfileutils \
+ -e 'FileUtils.rm_f(Dir[File.join(Config::CONFIG["archdir"],"**","*.tds")])'
-.rc.res:
- $(RC) $(RFLAGS) -I. -I$(<D). $(iconinc) -I$(srcdir)win32 $(RFLAGS) -fo$@ $(<:/=\)
-
-.y.c:
- $(YACC) $(YFLAGS) $(<:\=/)
- sed -e "s!^ *extern char \*getenv();!/* & */!;s/^\(#.*\)y\.tab/\1parse/" y.tab.c > $(@F)
- @del y.tab.c
+clean-local::
+ @$(RM) ext\extinit.c ext\extinit.$(OBJEXT) *.tds *.il? $(RUBY_SO_NAME).lib
+ @$(RM) $(RUBY_INSTALL_NAME).res $(RUBYW_INSTALL_NAME).res $(RUBY_SO_NAME).res
-parse.c: parse.y
+distclean-local::
+ @$(RM) ext\config.cache $(RBCONFIG:/=\)
+ @$(RM) *.map *.pdb *.ilk *.exp $(RUBYDEF)
+ @$(RM) $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc
ext/extinit.obj: ext/extinit.c $(SETUP)
$(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -o$@ -c ext/extinit.c
-acosh.obj: acosh.c win32.h
-alloca.obj: alloca.c win32.h
-crypt.obj: crypt.c win32.h
-dup2.obj: dup2.c win32.h
-erf.obj: erf.c win32.h
-finite.obj: finite.c win32.h
-flock.obj: flock.c win32.h
-memcmp.obj: memcmp.c win32.h
-memmove.obj: memmove.c win32.h
-mkdir.obj: mkdir.c win32.h
-vsnprintf.obj: vsnprintf.c win32.h
-strcasecmp.obj: strcasecmp.c win32.h
-strncasecmp.obj: strncasecmp.c win32.h
-strchr.obj: strchr.c win32.h
-strdup.obj: strdup.c win32.h
-strerror.obj: strerror.c win32.h
-strftime.obj: strftime.c win32.h
-strstr.obj: strstr.c win32.h
-strtod.obj: strtod.c win32.h
-strtol.obj: strtol.c win32.h
-strtoul.obj: strtoul.c win32.h
-nt.obj: nt.c win32.h
-x68.obj: x68.c win32.h
-os2.obj: os2.c win32.h
-dl_os2.obj: dl_os2.c win32.h
-
-# when I use -I., there is confliction at "OpenFile"
-# so, set . into environment varible "include"
-win32.obj: win32.c win32.h
-
-###
-array.obj: array.c ruby.h config.h defines.h intern.h missing.h util.h st.h win32.h
-bignum.obj: bignum.c ruby.h config.h defines.h intern.h missing.h win32.h
-class.obj: class.c ruby.h config.h defines.h intern.h missing.h rubysig.h node.h st.h win32.h
-compar.obj: compar.c ruby.h config.h defines.h intern.h missing.h win32.h
-dir.obj: dir.c ruby.h config.h defines.h intern.h missing.h util.h win32.h
-dln.obj: dln.c ruby.h config.h defines.h intern.h missing.h dln.h win32.h
-dmyext.obj: dmyext.c
-enum.obj: enum.c ruby.h config.h defines.h intern.h missing.h node.h util.h win32.h
-error.obj: error.c ruby.h config.h defines.h intern.h missing.h env.h st.h win32.h
-eval.obj: eval.c ruby.h config.h defines.h intern.h missing.h node.h env.h util.h rubysig.h st.h dln.h win32.h
-file.obj: file.c ruby.h config.h defines.h intern.h missing.h rubyio.h rubysig.h util.h dln.h win32.h
-gc.obj: gc.c ruby.h config.h defines.h intern.h missing.h rubysig.h st.h node.h env.h re.h regex.h win32.h
-hash.obj: hash.c ruby.h config.h defines.h intern.h missing.h st.h util.h rubysig.h win32.h
-inits.obj: inits.c ruby.h config.h defines.h intern.h missing.h win32.h
-io.obj: io.c ruby.h config.h defines.h intern.h missing.h rubyio.h rubysig.h env.h util.h win32.h
-main.obj: main.c ruby.h config.h defines.h intern.h missing.h win32.h
-marshal.obj: marshal.c ruby.h config.h defines.h intern.h missing.h rubyio.h st.h util.h win32.h
-math.obj: math.c ruby.h config.h defines.h intern.h missing.h win32.h
-numeric.obj: numeric.c ruby.h config.h defines.h intern.h missing.h win32.h
-object.obj: object.c ruby.h config.h defines.h intern.h missing.h st.h util.h win32.h
-pack.obj: pack.c ruby.h config.h defines.h intern.h missing.h win32.h
-parse.obj: parse.c ruby.h config.h defines.h intern.h missing.h env.h node.h st.h regex.h util.h lex.c win32.h
-prec.obj: prec.c ruby.h config.h defines.h intern.h missing.h win32.h
-process.obj: process.c ruby.h config.h defines.h intern.h missing.h rubysig.h st.h win32.h
-random.obj: random.c ruby.h config.h defines.h intern.h missing.h win32.h
-range.obj: range.c ruby.h config.h defines.h intern.h missing.h win32.h
-re.obj: re.c ruby.h config.h defines.h intern.h missing.h re.h regex.h win32.h
-regex.obj: regex.c config.h regex.h win32.h
-ruby.obj: ruby.c ruby.h config.h defines.h intern.h missing.h dln.h node.h util.h win32.h
-signal.obj: signal.c ruby.h config.h defines.h intern.h missing.h rubysig.h win32.h
-sprintf.obj: sprintf.c ruby.h config.h defines.h intern.h missing.h win32.h
-st.obj: st.c config.h st.h
-string.obj: string.c ruby.h config.h defines.h intern.h missing.h re.h regex.h win32.h
-struct.obj: struct.c ruby.h config.h defines.h intern.h missing.h win32.h
-time.obj: time.c ruby.h config.h defines.h intern.h missing.h win32.h
-util.obj: util.c ruby.h config.h defines.h intern.h missing.h util.h win32.h
-variable.obj: variable.c ruby.h config.h defines.h intern.h missing.h env.h node.h st.h util.h win32.h
-version.obj: version.c ruby.h config.h defines.h intern.h missing.h version.h win32.h
+main.$(OBJEXT): win32.h
+array.$(OBJEXT): win32.h
+bignum.$(OBJEXT): win32.h
+class.$(OBJEXT): win32.h
+compar.$(OBJEXT): win32.h
+dir.$(OBJEXT): dir.h win32.h
+dln.$(OBJEXT): win32.h
+enum.$(OBJEXT): win32.h
+error.$(OBJEXT): win32.h
+eval.$(OBJEXT): win32.h
+file.$(OBJEXT): win32.h
+gc.$(OBJEXT): win32.h
+hash.$(OBJEXT): win32.h
+inits.$(OBJEXT): win32.h
+io.$(OBJEXT): win32.h
+marshal.$(OBJEXT): win32.h
+math.$(OBJEXT): win32.h
+numeric.$(OBJEXT): win32.h
+object.$(OBJEXT): win32.h
+pack.$(OBJEXT): win32.h
+parse.$(OBJEXT): win32.h
+process.$(OBJEXT): win32.h
+prec.$(OBJEXT): win32.h
+random.$(OBJEXT): win32.h
+range.$(OBJEXT): win32.h
+re.$(OBJEXT): win32.h
+regex.$(OBJEXT): win32.h
+ruby.$(OBJEXT): win32.h
+signal.$(OBJEXT): win32.h
+sprintf.$(OBJEXT): win32.h
+st.$(OBJEXT): win32.h
+string.$(OBJEXT): win32.h
+struct.$(OBJEXT): win32.h
+time.$(OBJEXT): win32.h
+util.$(OBJEXT): win32.h
+variable.$(OBJEXT): win32.h
+version.$(OBJEXT): win32.h
diff --git a/bcc32/configure.bat b/bcc32/configure.bat
index 449b6e2..91a4028 100644
--- a/bcc32/configure.bat
+++ b/bcc32/configure.bat
@@ -8,25 +8,79 @@ echo>> ~tmp~.mak conf = %0
echo>> ~tmp~.mak $(conf:\=/): nul
echo>> ~tmp~.mak @del ~tmp~.mak
echo>> ~tmp~.mak @-$(MAKE) -l$(MAKEFLAGS) -f $(@D)setup.mak \
-echo>> ~tmp~.mak bcc32dir="$(@D)" \
:loop
if "%1" == "" goto :end
+if "%1" == "--prefix" goto :prefix
if "%1" == "--srcdir" goto :srcdir
if "%1" == "srcdir" goto :srcdir
if "%1" == "--target" goto :target
if "%1" == "target" goto :target
- echo>> ~tmp~.mak "%1"
+if "%1" == "--with-static-linked-ext" goto :extstatic
+if "%1" == "--program-suffix" goto :suffix
+if "%1" == "--program-name" goto :progname
+if "%1" == "--enable-install-doc" goto :enable-rdoc
+if "%1" == "--disable-install-doc" goto :disable-rdoc
+if "%1" == "-h" goto :help
+if "%1" == "--help" goto :help
+ echo>> ~tmp~.mak "%1" \
shift
goto :loop
:srcdir
- echo>> ~tmp~.mak "srcdir=%2"
+ echo>> ~tmp~.mak -D"srcdir=%2" \
+ shift
+ shift
+goto :loop
+:prefix
+ echo>> ~tmp~.mak -D"prefix=%2" \
+ shift
+ shift
+goto :loop
+:suffix
+ echo>> ~tmp~.mak -D"RUBY_SUFFIX=%2" \
+ shift
+ shift
+goto :loop
+:installname
+ echo>> ~tmp~.mak -D"RUBY_INSTALL_NAME=%2" \
+ shift
+ shift
+goto :loop
+:soname
+ echo>> ~tmp~.mak -D"RUBY_SO_NAME=%2" \
shift
shift
goto :loop
:target
- echo>> ~tmp~.mak %2
+ echo>> ~tmp~.mak "%2" \
shift
shift
goto :loop
+:extstatic
+ echo>> ~tmp~.mak -D"EXTSTATIC=static" \
+ shift
+goto :loop
+:enable-rdoc
+ echo>> ~tmp~.mak -D"RDOCTARGET=install-doc" \
+ shift
+goto :loop
+:disable-rdoc
+ echo>> ~tmp~.mak -D"RDOCTARGET=install-nodoc" \
+ shift
+goto :loop
+:help
+ echo Configuration:
+ echo --help display this help
+ echo --srcdir=DIR find the sources in DIR [configure dir or `..']
+ echo Installation directories:
+ echo --prefix=PREFIX install files in PREFIX [/usr]
+ echo System types:
+ echo --target=TARGET configure for TARGET [i386-bccwin32]
+ echo Optional Package:
+ echo --with-static-linked-ext link external modules statically
+ echo --enable-install-doc install rdoc indexes during install
+ del ~tmp~.mak
+goto :exit
:end
+echo>> ~tmp~.mak bcc32dir="$(@D)"
make -s -f ~tmp~.mak
+:exit
diff --git a/common.mk b/common.mk
index 3a71fa8..5723094 100644
--- a/common.mk
+++ b/common.mk
@@ -9,7 +9,6 @@ DMYEXT = dmyext.$(OBJEXT)
MAINOBJ = main.$(OBJEXT)
OBJS = array.$(OBJEXT) \
- ascii.$(OBJEXT) \
bignum.$(OBJEXT) \
class.$(OBJEXT) \
compar.$(OBJEXT) \
@@ -17,7 +16,6 @@ OBJS = array.$(OBJEXT) \
dln.$(OBJEXT) \
enum.$(OBJEXT) \
error.$(OBJEXT) \
- euc_jp.$(OBJEXT) \
eval.$(OBJEXT) \
file.$(OBJEXT) \
gc.$(OBJEXT) \
@@ -35,20 +33,14 @@ OBJS = array.$(OBJEXT) \
random.$(OBJEXT) \
range.$(OBJEXT) \
re.$(OBJEXT) \
- regcomp.$(OBJEXT) \
- regenc.$(OBJEXT) \
- regerror.$(OBJEXT) \
- regexec.$(OBJEXT) \
- regparse.$(OBJEXT) \
+ regex.$(OBJEXT) \
ruby.$(OBJEXT) \
signal.$(OBJEXT) \
- sjis.$(OBJEXT) \
sprintf.$(OBJEXT) \
st.$(OBJEXT) \
string.$(OBJEXT) \
struct.$(OBJEXT) \
time.$(OBJEXT) \
- utf8.$(OBJEXT) \
util.$(OBJEXT) \
variable.$(OBJEXT) \
version.$(OBJEXT) \
@@ -198,8 +190,6 @@ win32.$(OBJEXT): {$(VPATH)}win32.c
array.$(OBJEXT): {$(VPATH)}array.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \
{$(VPATH)}util.h {$(VPATH)}st.h
-ascii.$(OBJEXT): {$(VPATH)}ascii.c {$(VPATH)}regenc.h \
- {$(VPATH)}oniguruma.h config.h
bignum.$(OBJEXT): {$(VPATH)}bignum.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h
class.$(OBJEXT): {$(VPATH)}class.c {$(VPATH)}ruby.h config.h \
@@ -220,8 +210,6 @@ enum.$(OBJEXT): {$(VPATH)}enum.c {$(VPATH)}ruby.h config.h \
error.$(OBJEXT): {$(VPATH)}error.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \
{$(VPATH)}env.h {$(VPATH)}st.h
-euc_jp.$(OBJEXT): {$(VPATH)}euc_jp.c {$(VPATH)}regenc.h \
- {$(VPATH)}oniguruma.h
eval.$(OBJEXT): {$(VPATH)}eval.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \
{$(VPATH)}node.h {$(VPATH)}env.h {$(VPATH)}util.h \
@@ -273,24 +261,13 @@ range.$(OBJEXT): {$(VPATH)}range.c {$(VPATH)}ruby.h config.h \
re.$(OBJEXT): {$(VPATH)}re.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \
{$(VPATH)}re.h {$(VPATH)}regex.h
-regcomp.$(OBJEXT): {$(VPATH)}regcomp.c {$(VPATH)}oniguruma.h \
- {$(VPATH)}regint.h {$(VPATH)}regparse.h {$(VPATH)}regenc.h config.h
-regenc.$(OBJEXT): {$(VPATH)}regenc.c {$(VPATH)}regint.h \
- {$(VPATH)}regenc.h {$(VPATH)}oniguruma.h config.h
-regerror.$(OBJEXT): {$(VPATH)}regerror.c {$(VPATH)}regint.h \
- {$(VPATH)}regenc.h {$(VPATH)}oniguruma.h config.h
-regexec.$(OBJEXT): {$(VPATH)}regexec.c {$(VPATH)}regint.h \
- {$(VPATH)}regenc.h {$(VPATH)}oniguruma.h config.h
-regparse.$(OBJEXT): {$(VPATH)}regparse.c {$(VPATH)}oniguruma.h \
- {$(VPATH)}regint.h {$(VPATH)}regparse.h {$(VPATH)}regenc.h config.h
+regex.$(OBJEXT): {$(VPATH)}regex.c config.h {$(VPATH)}regex.h
ruby.$(OBJEXT): {$(VPATH)}ruby.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \
{$(VPATH)}dln.h {$(VPATH)}node.h {$(VPATH)}util.h
signal.$(OBJEXT): {$(VPATH)}signal.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \
{$(VPATH)}rubysig.h
-sjis.$(OBJEXT): {$(VPATH)}sjis.c {$(VPATH)}regenc.h \
- {$(VPATH)}oniguruma.h config.h
sprintf.$(OBJEXT): {$(VPATH)}sprintf.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h
st.$(OBJEXT): {$(VPATH)}st.c config.h {$(VPATH)}st.h
@@ -301,8 +278,6 @@ struct.$(OBJEXT): {$(VPATH)}struct.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h
time.$(OBJEXT): {$(VPATH)}time.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h
-utf8.$(OBJEXT): {$(VPATH)}utf8.c {$(VPATH)}regenc.h \
- {$(VPATH)}oniguruma.h config.h
util.$(OBJEXT): {$(VPATH)}util.c {$(VPATH)}ruby.h config.h \
{$(VPATH)}defines.h {$(VPATH)}intern.h {$(VPATH)}missing.h \
{$(VPATH)}util.h
diff --git a/configure.in b/configure.in
index cedfe67..5ed741b 100644
--- a/configure.in
+++ b/configure.in
@@ -192,6 +192,15 @@ AC_PROG_MAKE_SET
AC_AIX
AC_MINIX
+AC_SUBST(RM, ['rm -f'])
+AC_SUBST(CP, ['cp -v'])
+AC_SUBST(INSTALL, ['install -vp'])
+if $as_mkdir_p; then
+ AC_SUBST(MAKEDIRS, ['mkdir -p'])
+else
+ AC_SUBST(MAKEDIRS, ['install -d'])
+fi
+
dnl check for large file stuff
AC_SYS_LARGEFILE
@@ -246,7 +255,7 @@ if test "$rb_cv_stdarg" = yes; then
fi
AC_CACHE_CHECK([for noreturn], rb_cv_noreturn,
-[rb_cv_noreturn=no
+[rb_cv_noreturn=x
for mac in "x __attribute__ ((noreturn))" "__declspec(noreturn) x" x; do
AC_TRY_COMPILE(
[#define NORETURN(x) $mac
@@ -830,6 +839,7 @@ if test "$with_dln_a_out" != yes; then
hpux*) DLDFLAGS="$DLDFLAGS -E"
: ${LDSHARED='ld -b'}
XLDFLAGS="$XLDFLAGS -Wl,-E"
+ : ${LIBPATHENV=SHLIB_PATH}
rb_cv_dlopen=yes;;
solaris*) if test "$GCC" = yes; then
: ${LDSHARED='$(CC) -Wl,-G'}
@@ -891,6 +901,7 @@ if test "$with_dln_a_out" != yes; then
rb_cv_dlopen=yes ;;
darwin*) : ${LDSHARED='cc -dynamic -bundle -undefined suppress -flat_namespace'}
: ${LDFLAGS=""}
+ : ${LIBPATHENV=DYLD_LIBRARY_PATH}
rb_cv_dlopen=yes ;;
aix*) : ${LDSHARED='/usr/ccs/bin/ld'}
XLDFLAGS="$XLDFLAGS -Wl,-bE:ruby.imp"
@@ -899,6 +910,7 @@ if test "$with_dln_a_out" != yes; then
: ${ARCHFILE="ruby.imp"}
TRY_LINK='$(CC) $(LDFLAGS) -oconftest $(INCFLAGS) -I$(hdrdir) $(CPPFLAGS) $(CFLAGS)'
TRY_LINK="$TRY_LINK"' $(src) $(LIBPATH) $(LOCAL_LIBS) $(LIBS)'
+ : ${LIBPATHENV=SHLIB_PATH}
rb_cv_dlopen=yes ;;
human*) : ${DLDFLAGS=''}
@@ -916,6 +928,7 @@ if test "$with_dln_a_out" != yes; then
DLDFLAGS="$DLDFLAGS -L/boot/develop/lib/x86 -lbe -lroot"
;;
esac
+ : ${LIBPATHENV=LIBRARY_PATH}
rb_cv_dlopen=yes ;;
nto-qnx*) DLDFLAGS="$DLDFLAGS -L/lib -L/usr/lib -L/usr/local/lib"
: ${LDSHARED='ld -Bshareable -x'}
@@ -924,6 +937,7 @@ if test "$with_dln_a_out" != yes; then
cygwin*|mingw*) : ${LDSHARED="${CC} -shared -s"}
XLDFLAGS="$XLDFLAGS -Wl,--stack,0x02000000"
DLDFLAGS="${DLDFLAGS} -Wl,--enable-auto-import,--export-all"
+ : ${LIBPATHENV=""}
rb_cv_dlopen=yes ;;
hiuxmpp) : ${LDSHARED='ld -r'} ;;
atheos*) : ${LDSHARED="$CC -shared"}
@@ -945,6 +959,7 @@ fi
AC_SUBST(LINK_SO)
AC_SUBST(LIBPATHFLAG)
AC_SUBST(RPATHFLAG)
+AC_SUBST(LIBPATHENV, "${LIBPATHENV-LD_LIBRARY_PATH}")
AC_SUBST(TRY_LINK)
dln_a_out_works=no
@@ -1103,12 +1118,16 @@ fi
if test x"$cross_compiling" = xyes; then
test x"$MINIRUBY" = x && MINIRUBY="${RUBY-ruby} -I`pwd` -rfake"
PREP=fake.rb
+ RUNRUBY='$(MINIRUBY) -I`cd $(srcdir)/lib; pwd`'
else
MINIRUBY='./miniruby$(EXEEXT)'
- PREP=''
+ PREP='miniruby$(EXEEXT)'
+ RUNRUBY='$(MINIRUBY) $(srcdir)/runruby.rb --extout=$(EXTOUT) --'
fi
AC_SUBST(MINIRUBY)
AC_SUBST(PREP)
+AC_SUBST(RUNRUBY)
+AC_SUBST(EXTOUT, [${EXTOUT-.ext}])
FIRSTMAKEFILE=""
LIBRUBY_A='lib$(RUBY_SO_NAME)-static.a'
@@ -1474,5 +1493,10 @@ else
fi
: > confdefs.h
-AC_CONFIG_FILES([$FIRSTMAKEFILE Makefile])
+AC_CONFIG_FILES($FIRSTMAKEFILE)
+AC_CONFIG_FILES(Makefile, [{
+ echo; test x"$EXEEXT" = x || echo 'miniruby: miniruby$(EXEEXT)'
+ test "$RUBY_INSTALL_NAME$EXEEXT" = ruby || echo 'ruby: $(PROGRAM);'
+ sed ['s/{\$([^(){}]*)[^{}]*}//g'] ${srcdir}/common.mk
+} >> Makefile], [RUBY_INSTALL_NAME=$RUBY_INSTALL_NAME EXEEXT=$EXEEXT])
AC_OUTPUT
diff --git a/cygwin/GNUmakefile.in b/cygwin/GNUmakefile.in
index da9efaa..03208df 100644
--- a/cygwin/GNUmakefile.in
+++ b/cygwin/GNUmakefile.in
@@ -1,11 +1,14 @@
include Makefile
ENABLE_SHARED=@ENABLE_SHARED@
+DLLWRAP = @DLLWRAP@ --target=@target_os@
ifeq (@target_os@,cygwin)
DLL_BASE_NAME := $(subst .dll,,$(LIBRUBY_SO))
else
DLL_BASE_NAME := $(RUBY_SO_NAME)
+ DLLWRAP += -mno-cygwin
+ VPATH += $(srcdir)/win32
endif
ifneq ($(ENABLE_SHARED),yes)
@@ -24,6 +27,10 @@ endif
WPROGRAM = $(RUBYW_INSTALL_NAME)$(EXEEXT)
SOLIBS := $(DLL_BASE_NAME).res.@OBJEXT@ $(SOLIBS)
EXTOBJS += $(@:$(EXEEXT)=.res.@OBJEXT@)
+RCFILES = $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(DLL_BASE_NAME).rc
+
+ruby: $(PROGRAM)
+rubyw: $(WPROGRAM)
$(LIBRUBY): $(RUBY_EXP) $(LIBRUBY_SO)
$(RUBY_EXP) $(LIBRUBY_SO): $(DLL_BASE_NAME).res.@OBJEXT@
@@ -31,7 +38,7 @@ $(RUBY_EXP) $(LIBRUBY_SO): $(DLL_BASE_NAME).res.@OBJEXT@
%.res.@OBJEXT@: %.rc
@WINDRES@ --include-dir . --include-dir $(<D) --include-dir $(srcdir)/win32 $< $@
-$(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(DLL_BASE_NAME).rc: rbconfig.rb
+$(RCFILES): $(RBCONFIG)
@$(MINIRUBY) $(srcdir)/win32/resource.rb \
-ruby_name=$(RUBY_INSTALL_NAME) -rubyw_name=$(RUBYW_INSTALL_NAME) \
-so_name=$(DLL_BASE_NAME) \
@@ -44,7 +51,7 @@ $(WPROGRAM): $(RUBYW_INSTALL_NAME).res.@OBJEXT@
$(MAINOBJ) $(EXTOBJS) $(LIBRUBYARG) $(LIBS) -o $@
$(RUBY_EXP): $(LIBRUBY_A)
- @DLLWRAP@ --target=@target_os@ --driver-name=$(CC) \
+ $(DLLWRAP) \
--output-exp=$(RUBY_EXP) \
--export-all $(LIBRUBY_A) $(LIBS) -o $(PROGRAM)
$(LDSHARED) $(DLDFLAGS) $(OBJS) dmyext.o $(SOLIBS) -o $(PROGRAM)
@@ -63,3 +70,9 @@ cygwin-$(RUBY_INSTALL_NAME)$(MAJOR)$(MINOR).dll: $(LIBRUBY_A)
@DLLWRAP@ -s --def=rubydll.def -o $@
@rm -f rubydll.def
endif
+
+clean-local::
+ @$(RM) $(RUBY_EXP) $(RCFILES:.rc=.res.@OBJEXT@)
+
+distclean-local::
+ @$(RM) $(RCFILES)
diff --git a/ext/extmk.rb b/ext/extmk.rb
index a1feb80..5bbed95 100644
--- a/ext/extmk.rb
+++ b/ext/extmk.rb
@@ -16,6 +16,8 @@ alias $PROGRAM_NAME $0
alias $0 $progname
$extlist = []
+$extupdate = false
+$compiled = {}
$:.replace ["."]
require 'rbconfig'
@@ -24,12 +26,11 @@ srcdir = File.dirname(File.dirname(__FILE__))
$:.replace [srcdir, srcdir+"/lib", "."]
-require 'mkmf'
-require 'getopts'
-
$topdir = "."
$top_srcdir = srcdir
-$hdrdir = $top_srcdir
+
+require 'mkmf'
+require 'optparse/shellwords'
def sysquote(x)
@quote ||= /human|os2|macos/ =~ (CROSS_COMPILING || RUBY_PLATFORM)
@@ -44,6 +45,43 @@ def relative_from(path, base)
end
end
+def extract_makefile(makefile, keep = true)
+ m = File.read(makefile)
+ if !(target = m[/^TARGET[ \t]*=[ \t]*(\S*)/, 1])
+ return keep
+ end
+ installrb = {}
+ m.scan(/^install-rb-default:[ \t]*(\S+)\n\1:[ \t]*(\S+)/) {installrb[$2] = $1}
+ oldrb = installrb.keys.sort
+ newrb = install_rb(nil, "").collect {|d, *f| f}.flatten.sort
+ if target_prefix = m[/^target_prefix[ \t]*=[ \t]*\/(.*)/, 1]
+ target = "#{target_prefix}/#{target}"
+ end
+ unless oldrb == newrb
+ if $extout
+ newrb.each {|f| installrb.delete(f)}
+ unless installrb.empty?
+ config = CONFIG.dup
+ install_dirs(target_prefix).each {|var, val| config[var] = val}
+ FileUtils.rm_f(installrb.values.collect {|f| Config.expand(f, config)}, :verbose => true)
+ end
+ end
+ return false
+ end
+ $target = target
+ /^STATIC_LIB[ \t]*=[ \t]*\S+/ =~ m or $static = nil
+ $preload = Shellwords.shellwords(m[/^preload[ \t]*=[ \t]*(.*)/, 1] || "")
+ $DLDFLAGS += " " + (m[/^DLDFLAGS[ \t]*=[ \t]*(.*)/, 1] || "")
+ if s = m[/^LIBS[ \t]*=[ \t]*(.*)/, 1]
+ s.sub!(/^#{Regexp.quote($LIBRUBYARG)} */, "")
+ s.sub!(/ *#{Regexp.quote($LIBS)}$/, "")
+ $libs = s
+ end
+ $LOCAL_LIBS = m[/^LOCAL_LIBS[ \t]*=[ \t]*(.*)/, 1] || ""
+ $LIBPATH = Shellwords.shellwords(m[/^libpath[ \t]*=[ \t]*(.*)/, 1] || "") - %w[$(libdir) $(topdir)]
+ true
+end
+
def extmake(target)
print "#{$message} #{target}\n"
$stdout.flush
@@ -57,8 +95,7 @@ def extmake(target)
return true if $nodynamic and not $static
end
- init_mkmf
-
+ FileUtils.mkpath target unless File.directory?(target)
begin
dir = Dir.pwd
FileUtils.mkpath target unless File.directory?(target)
@@ -72,18 +109,21 @@ def extmake(target)
$mdir = target
$srcdir = File.join($top_srcdir, "ext", $mdir)
$preload = nil
+ $compiled[target] = false
makefile = "./Makefile"
+ ok = File.exist?(makefile)
unless $ignore
- if $static ||
- !(t = modified?(makefile, MTIMES)) ||
- %W<#{$srcdir}/makefile.rb #{$srcdir}/extconf.rb
- #{$srcdir}/depend>.any? {|f| modified?(f, [t])}
- then
- $defs = []
- Logging::logfile 'mkmf.log'
- Config::CONFIG["srcdir"] = $srcdir
- rm_f makefile
- begin
+ Config::CONFIG["srcdir"] = $srcdir
+ Config::CONFIG["topdir"] = $topdir
+ begin
+ if (!(ok &&= extract_makefile(makefile)) ||
+ !(t = modified?(makefile, MTIMES)) ||
+ %W"#{$srcdir}/makefile.rb #{$srcdir}/extconf.rb #{$srcdir}/depend".any? {|f| modified?(f, [t])})
+ then
+ ok = false
+ init_mkmf
+ Logging::logfile 'mkmf.log'
+ rm_f makefile
if File.exist?($0 = "#{$srcdir}/makefile.rb")
load $0
elsif File.exist?($0 = "#{$srcdir}/extconf.rb")
@@ -91,31 +131,38 @@ def extmake(target)
else
create_makefile(target)
end
- File.exist?(makefile)
- rescue SystemExit
- # ignore
- ensure
- rm_f "conftest*"
- $0 = $PROGRAM_NAME
- Config::CONFIG["srcdir"] = $top_srcdir
+ $extupdate = true
+ ok = File.exist?(makefile)
end
- else
- true
+ rescue SystemExit
+ # ignore
+ ensure
+ rm_f "conftest*"
+ config = $0
+ $0 = $PROGRAM_NAME
+ Config::CONFIG["srcdir"] = $top_srcdir
+ Config::CONFIG["topdir"] = topdir
+ end
+ end
+ ok = yield(ok) if block_given?
+ unless ok
+ open(makefile, "w") do |f|
+ f.print dummy_makefile($srcdir)
end
- else
- File.exist?(makefile)
- end or open(makefile, "w") do |f|
- f.print dummy_makefile($srcdir)
return true
end
args = sysquote($mflags)
if $static
- args += ["static"]
+ args += ["static"] unless $clean
$extlist.push [$static, $target, File.basename($target), $preload]
end
unless system($make, *args)
$ignore or $continue or return false
end
+ $compiled[target] = true
+ if $clean and $clean != true
+ File.unlink(makefile) rescue nil
+ end
if $static
$extflags ||= ""
$extlibs ||= []
@@ -131,24 +178,65 @@ def extmake(target)
$topdir = topdir
Dir.chdir dir
end
+ begin
+ Dir.rmdir target
+ target = File.dirname(target)
+ rescue SystemCallError
+ break
+ end while true
true
end
+def compiled?(target)
+ $compiled[target]
+end
+
def parse_args()
- getopts('n', 'extstatic:', 'dest-dir:',
- 'make:', 'make-flags:', 'mflags:')
-
- $dryrun = $OPT['n']
- $force_static = $OPT['extstatic'] == 'static'
- $destdir = $OPT['dest-dir'] || ''
- $make = $OPT['make'] || $make || 'make'
- mflags = ($OPT['make-flags'] || '').strip
- mflags = ($OPT['mflags'] || '').strip if mflags.empty?
-
- $mflags = Shellwords.shellwords(mflags)
- if arg = $mflags.first
- arg.insert(0, '-') if /\A[^-][^=]*\Z/ =~ arg
+ $mflags = []
+
+ opts = nil
+ $optparser ||= OptionParser.new do |opts|
+ opts.on('-n') {$dryrun = true}
+ opts.on('--[no-]extension [EXTS]', Array) do |v|
+ $extension = (v == false ? [] : v)
+ end
+ opts.on('--[no-]extstatic [STATIC]', Array) do |v|
+ if ($extstatic = v) == false
+ $extstatic = []
+ elsif v
+ $force_static = true
+ $extstatic.delete("static")
+ $extstatic = nil if $extstatic.empty?
+ end
+ end
+ opts.on('--dest-dir=DIR') do |v|
+ $destdir = v
+ end
+ opts.on('--extout=DIR') do |v|
+ $extout = (v unless v.empty?)
+ end
+ opts.on('--make=MAKE') do |v|
+ $make = v || 'make'
+ end
+ opts.on('--make-flags=FLAGS', '--mflags', Shellwords) do |v|
+ if arg = v.first
+ arg.insert(0, '-') if /\A[^-][^=]*\Z/ =~ arg
+ end
+ $mflags.concat(v)
+ end
+ opts.on('--message [MESSAGE]', String) do |v|
+ $message = v
+ end
end
+ begin
+ $optparser.parse!(ARGV)
+ rescue OptionParser::InvalidOption => e
+ retry if /^--/ =~ e.args[0]
+ $optparser.warn(e)
+ abort opts.to_s
+ end
+
+ $destdir ||= ''
$make, *rest = Shellwords.shellwords($make)
$mflags.unshift(*rest) unless rest.empty?
@@ -173,24 +261,33 @@ def parse_args()
$destdir = File.expand_path($destdir)
$mflags.defined?("DESTDIR") or $mflags << "DESTDIR=#{$destdir}"
end
+ if $extout
+ $extout = '$(topdir)/'+$extout
+ $extout_prefix = $extout ? "$(extout)$(target_prefix)/" : ""
+ $mflags << "extout=#$extout" << "extout_prefix=#$extout_prefix"
+ end
end
parse_args()
+if target = ARGV.shift and /^[a-z-]+$/ =~ target
+ $mflags.push(target)
+ target = target.sub(/^(dist|real)(?=(?:clean)?$)/, '')
+ case target
+ when /clean/
+ $ignore ||= true
+ $clean = $1 ? $1[0] : true
+ when /^install\b/
+ $install = true
+ $ignore ||= true
+ $mflags.unshift("INSTALL_PROG=install -c -p -m 0755",
+ "INSTALL_DATA=install -c -p -m 0644",
+ "MAKEDIRS=mkdir -p") if $dryrun
+ end
+end
unless $message
- if $message = ARGV.shift and /^[a-z]+$/ =~ $message
- $mflags.push($message)
- $message = $message.sub(/^(?:dist|real)(?=(?:clean)?$)/, '\1')
- case $message
- when "clean"
- $ignore ||= true
- when "install"
- $ignore ||= true
- $mflags.unshift("INSTALL_PROG=install -c -p -m 0755",
- "INSTALL_DATA=install -c -p -m 0644",
- "MAKEDIRS=mkdir -p") if $dryrun
- end
- $message.sub!(/e?$/, "ing")
+ if target
+ $message = target.sub(/^(\w+)e?\b/, '\1ing').tr('-', ' ')
else
$message = "compiling"
end
@@ -204,13 +301,19 @@ elsif $nmake
else
$ruby = '$(topdir)/miniruby' + EXEEXT
end
-$ruby << " -I$(topdir) -I$(hdrdir)/lib"
+$ruby << " -I'$(topdir)' -I'$(hdrdir)/lib'"
$config_h = '$(topdir)/config.h'
MTIMES = [__FILE__, 'rbconfig.rb', srcdir+'/lib/mkmf.rb'].collect {|f| File.mtime(f)}
# get static-link modules
$static_ext = {}
+if $extstatic
+ $extstatic.each do |target|
+ target = target.downcase if /mswin32|bccwin32/ =~ RUBY_PLATFORM
+ $static_ext[target] = $static_ext.size
+ end
+end
for dir in ["ext", File::join($top_srcdir, "ext")]
setup = File::join(dir, CONFIG['setup'])
if File.file? setup
@@ -228,13 +331,34 @@ for dir in ["ext", File::join($top_srcdir, "ext")]
next
end
target = target.downcase if /mswin32|bccwin32/ =~ RUBY_PLATFORM
- $static_ext[target] = true
+ $static_ext[target] = $static_ext.size
end
MTIMES << f.mtime
$setup = setup
f.close
break
end
+end unless $extstatic
+
+ext_prefix = "#{$top_srcdir}/ext"
+exts = $static_ext.sort_by {|t, i| i}.collect {|t, i| t}
+exts |= $extension if $extension
+exts |= Dir.glob("#{ext_prefix}/*/**/extconf.rb").collect {|d|
+ d = File.dirname(d)
+ d.slice!(0, ext_prefix.length + 1)
+ d
+}.sort unless $extension
+
+if $extout
+ Config.expand(extout = "#$extout", Config::CONFIG.merge("topdir"=>$topdir))
+ if $install
+ Config.expand(dest = "#{$destdir}#{$rubylibdir}")
+ FileUtils.cp_r(extout+"/.", dest, :verbose => true, :noop => $dryrun)
+ exit
+ end
+ unless $ignore
+ FileUtils.mkpath(extout)
+ end
end
dir = Dir.pwd
@@ -242,17 +366,19 @@ FileUtils::makedirs('ext')
Dir::chdir('ext')
$hdrdir = $top_srcdir = relative_from(srcdir, $topdir = "..")
-ext_prefix = "#{$top_srcdir}/ext"
-Dir.glob("#{ext_prefix}/*/**/extconf.rb") do |d|
- d = File.dirname(d)
- d.slice!(0, ext_prefix.length + 1)
- extmake(d) or exit(1)
+exts.each do |d|
+ extmake(d) or abort
end
$hdrdir = $top_srcdir = srcdir
$topdir = "."
if $ignore
+ FileUtils.rm_f(%W"extinit.c extinit.#{$OBJEXT}") if $clean
Dir.chdir ".."
+ if $clean
+ Dir.rmdir('ext') rescue nil
+ FileUtils.rm_rf(extout) if $extout
+ end
exit
end
@@ -305,11 +431,13 @@ SRC
end
rubies = []
%w[RUBY RUBYW].each {|r|
- config_string(r+"_INSTALL_NAME", Config::CONFIG) {|r| rubies << r+EXEEXT}
+ if r = arg_config("--"+r.downcase) || config_string(r+"_INSTALL_NAME")
+ rubies << r+EXEEXT
+ end
}
Dir.chdir ".."
-if $extlist.size > 0
+if !$extlist.empty? and $extupdate
rm_f(Config::CONFIG["LIBRUBY_SO"])
end
puts "making #{rubies.join(', ')}"
diff --git a/instruby.rb b/instruby.rb
index f56bb2e..98d2714 100644
--- a/instruby.rb
+++ b/instruby.rb
@@ -7,27 +7,32 @@ srcdir = File.dirname(__FILE__)
$:.unshift File.join(srcdir, "lib")
require 'fileutils'
require 'shellwords'
-require 'getopts'
+require 'optparse'
+require 'optparse/shellwords'
require 'tempfile'
+STDOUT.sync = true
File.umask(0)
def parse_args()
- getopts('n', 'dest-dir:',
- 'make:', 'make-flags:', 'mflags:',
- 'mantype:doc')
-
- $dryrun = $OPT['n']
- $destdir = $OPT['dest-dir'] || ''
- $make = $OPT['make'] || $make || 'make'
- $mantype = $OPT['mantype']
- mflags = ($OPT['make-flags'] || '').strip
- mflags = ($OPT['mflags'] || '').strip if mflags.empty?
-
- $mflags = Shellwords.shellwords(mflags)
- if arg = $mflags.first
- arg.insert(0, '-') if /\A[^-][^=]*\Z/ =~ arg
+ $mantype = 'doc'
+ $destdir = nil
+ $make = 'make'
+ $mflags = []
+ $install = []
+ opt = OptionParser.new
+ opt.on('-n') {$dryrun = true}
+ opt.on('--dest-dir=DIR') {|dir| $destdir = dir}
+ opt.on('--make=COMMAND') {|make| $make = make}
+ opt.on('--mantype=MAN') {|man| $mantype = man}
+ opt.on('--make-flags=FLAGS', '--mflags', Shellwords) do |v|
+ if arg = v.first
+ arg.insert(0, '-') if /\A[^-][^=]*\Z/ =~ arg
+ end
+ $mflags.concat(v)
end
+ opt.on('--install=TYPE', [:bin, :lib, :man]) {|ins| $install << ins}
+ opt.parse! rescue abort [$!.message, opt].join("\n")
$make, *rest = Shellwords.shellwords($make)
$mflags.unshift(*rest) unless rest.empty?
@@ -55,6 +60,10 @@ include FileUtils::NoWrite if $dryrun
@fileutils_output = STDOUT
@fileutils_label = ''
+def install?(type)
+ yield if $install.empty? or $install.include?(type)
+end
+
def install(src, dest, options = {})
options[:preserve] = true
super
@@ -99,11 +108,29 @@ arc = CONFIG["LIBRUBY_A"]
makedirs [bindir, libdir, rubylibdir, archlibdir, sitelibdir, sitearchlibdir]
+install?(:bin) do
ruby_bin = File.join(bindir, ruby_install_name)
+major = CONFIG["MAJOR"]
+minor = CONFIG["MINOR"]
+teeny = CONFIG["TEENY"]
+os = CONFIG["target_os"]
+suffixes = %W[#{major}#{minor} #{major}#{minor}#{teeny}
+#{major}#{minor}-#{os} #{major}#{minor}#{teeny}-#{os}
+-#{major}.#{minor} -#{major}.#{minor}.#{teeny}
+]
+def suffixes.link(bin)
+ each do |suf|
+ ln(bin+exeext, bin+suf+exeext, force: true)
+ end
+rescue NotImplementedError
+end
+
install ruby_install_name+exeext, ruby_bin+exeext, :mode => 0755
+suffixes.link(ruby_bin)
if rubyw_install_name and !rubyw_install_name.empty?
install rubyw_install_name+exeext, bindir, :mode => 0755
+ suffixes.link(File.join(bindir, rubyw_install_name))
end
install dll, bindir, :mode => 0755 if enable_shared and dll != lib
install lib, libdir, :mode => 0755 unless lib == arc
@@ -121,9 +148,11 @@ if dll == lib and dll != arc
ln_sf(dll, File.join(libdir, link))
end
end
+end
Dir.chdir srcdir
+install?(:lib) do
ruby_shebang = File.join(CONFIG["bindir"], ruby_install_name)
if File::ALT_SEPARATOR
ruby_bin_dosish = ruby_shebang.tr(File::SEPARATOR, File::ALT_SEPARATOR)
@@ -176,7 +205,9 @@ for f in Dir["lib/**/*{.rb,help-message}"]
makedirs dir
install f, dir, :mode => 0644
end
+end
+install?(:bin) do
for f in Dir["*.h"]
install f, archlibdir, :mode => 0644
end
@@ -185,7 +216,9 @@ if RUBY_PLATFORM =~ /mswin32|mingw|bccwin32/
makedirs File.join(archlibdir, "win32")
install "win32/win32.h", File.join(archlibdir, "win32"), :mode => 0644
end
+end
+install?(:man) do
for mdoc in Dir["*.[1-9]"]
next unless File.file?(mdoc) and open(mdoc){|fh| fh.read(1) == '.'}
@@ -212,5 +245,6 @@ for mdoc in Dir["*.[1-9]"]
install w.path, destfile, :mode => 0644
end
end
+end
# vi:set sw=2:
diff --git a/lib/mkmf.rb b/lib/mkmf.rb
index 5c4917c..2222eb5 100644
--- a/lib/mkmf.rb
+++ b/lib/mkmf.rb
@@ -40,7 +40,6 @@ unless defined? $configure_args
end
end
-$srcdir = nil
$libdir = CONFIG["libdir"]
$rubylibdir = CONFIG["rubylibdir"]
$archdir = CONFIG["archdir"]
@@ -55,6 +54,8 @@ $cygwin = /cygwin/ =~ RUBY_PLATFORM
$human = /human/ =~ RUBY_PLATFORM
$netbsd = /netbsd/ =~ RUBY_PLATFORM
$os2 = /os2/ =~ RUBY_PLATFORM
+$beos = /beos/ =~ RUBY_PLATFORM
+$solaris = /solaris/ =~ RUBY_PLATFORM
def config_string(key, config = CONFIG)
s = config[key] and !s.empty? and block_given? ? yield(s) : s
@@ -73,6 +74,32 @@ INSTALL_DIRS = [
[dir_re('sitearchdir'), "$(RUBYARCHDIR)"]
]
+def install_dirs(target_prefix = nil)
+ if $extout
+ dirs = [
+ ['RUBYCOMMONDIR', '$(extout)'],
+ ['RUBYLIBDIR', '$(extout)$(target_prefix)'],
+ ['RUBYARCHDIR', '$(extout)/$(arch)$(target_prefix)'],
+ ['extout', "#$extout"],
+ ['extout_prefix', "#$extout_prefix"],
+ ]
+ elsif $extmk
+ dirs = [
+ ['RUBYCOMMONDIR', '$(rubylibdir)'],
+ ['RUBYLIBDIR', '$(rubylibdir)$(target_prefix)'],
+ ['RUBYARCHDIR', '$(archdir)$(target_prefix)'],
+ ]
+ else
+ dirs = [
+ ['RUBYCOMMONDIR', '$(sitedir)$(target_prefix)'],
+ ['RUBYLIBDIR', '$(sitelibdir)$(target_prefix)'],
+ ['RUBYARCHDIR', '$(sitearchdir)$(target_prefix)'],
+ ]
+ end
+ dirs << ['target_prefix', (target_prefix ? "/#{target_prefix}" : "")]
+ dirs
+end
+
def map_dir(dir, map = nil)
map ||= INSTALL_DIRS
map.inject(dir) {|dir, (orig, new)| dir.gsub(orig, new)}
@@ -290,6 +317,30 @@ def cpp_include(header)
end
end
+def with_cppflags(flags)
+ cppflags = $CPPFLAGS
+ $CPPFLAGS = flags
+ ret = yield
+ensure
+ $CPPFLAGS = cppflags unless ret
+end
+
+def with_cflags(flags)
+ cflags = $CFLAGS
+ $CFLAGS = flags
+ ret = yield
+ensure
+ $CFLAGS = cflags unless ret
+end
+
+def with_ldflags(flags)
+ ldflags = $LDFLAGS
+ $LDFLAGS = flags
+ ret = yield
+ensure
+ $LDFLAGS = ldflags unless ret
+end
+
def try_static_assert(expr, headers = nil, opt = "", &b)
headers = cpp_include(headers)
try_compile(<<SRC, opt, &b)
@@ -435,7 +486,7 @@ def install_files(mfile, ifiles, map = nil, srcprefix = nil)
ifiles.each do |files, dir, prefix|
dir = map_dir(dir, map)
prefix = %r|\A#{Regexp.quote(prefix)}/?| if prefix
- if( files[0,2] == "./" )
+ if /\A\.\// =~ files
# install files which are in current working directory.
files = files[2..-1]
len = nil
@@ -576,6 +627,25 @@ def have_header(header, &b)
end
end
+def find_header(header, *paths)
+ checking_for header do
+ if try_cpp(cpp_include(header))
+ true
+ else
+ found = false
+ paths.each do |dir|
+ opt = "-I#{dir}".quote
+ if try_cpp(cpp_include(header), opt)
+ $INCFLAGS << " " << opt
+ found = true
+ break
+ end
+ end
+ found
+ end
+ end
+end
+
def have_struct_member(type, member, header = nil, &b)
checking_for "#{type}.#{member}" do
if try_compile(<<"SRC", &b)
@@ -761,6 +831,13 @@ end
def configuration(srcdir)
mk = []
+ vpath = %w[$(srcdir) $(topdir) $(hdrdir)]
+ if !CROSS_COMPILING && CONFIG['build_os'] == 'cygwin' && CONFIG['target_os'] != 'cygwin'
+ vpath.each {|p| p.sub!(/.*/, '$(shell cygpath -u \&)')}
+ end
+ if !CROSS_COMPILING && CONFIG['build_os'] == 'msdosdjgpp'
+ CONFIG['PATH_SEPARATOR'] = ';'
+ end
mk << %{
SHELL = /bin/sh
@@ -769,7 +846,7 @@ SHELL = /bin/sh
srcdir = #{srcdir}
topdir = #{$topdir}
hdrdir = #{$extmk ? $hdrdir : '$(topdir)'}
-VPATH = #{$mingw && CONFIG['build_os'] == 'cygwin' ? '$(shell cygpath -u $(srcdir))' : '$(srcdir)'}
+VPATH = #{vpath.join(CONFIG['PATH_SEPARATOR'])}
}
drive = File::PATH_SEPARATOR == ';' ? /\A\w:/ : /\A/
if destdir = CONFIG["prefix"].scan(drive)[0] and !destdir.empty?
@@ -806,13 +883,16 @@ sitearch = #{CONFIG['sitearch']}
ruby_version = #{Config::CONFIG['ruby_version']}
ruby = #{$ruby}
RUBY = #{($nmake && !$extmk && !$configure_args.has_key?('--ruby')) ? '$(ruby:/=\)' : '$(ruby)'}
-RM = $(RUBY) -run -e rm -- -f
-MAKEDIRS = $(RUBY) -run -e mkdir -- -p
-INSTALL_PROG = $(RUBY) -run -e install -- -vpm 0755
-INSTALL_DATA = $(RUBY) -run -e install -- -vpm 0644
+RM = #{config_string('RM') || '$(RUBY) -run -e rm -- -f'}
+MAKEDIRS = #{config_string('MAKEDIRS') || '$(RUBY) -run -e mkdir -- -p'}
+INSTALL = #{config_string('INSTALL') || '$(RUBY) -run -e install -- -vp'}
+INSTALL_PROG = $(INSTALL) -m 0755
+INSTALL_DATA = $(INSTALL) -m 0644
+COPY = #{config_string('COPY') || '$(RUBY) -run -e cp -- -v'}
#### End of system configuration section. ####
+preload = #{$preload.join(" ") if $preload}
}
if $nmake == ?b
mk.each do |x|
@@ -827,7 +907,13 @@ INSTALL_DATA = $(RUBY) -run -e install -- -vpm 0644
end
def dummy_makefile(srcdir)
- configuration(srcdir) << "all install: Makefile\n" << CLEANINGS
+ configuration(srcdir) << <<RULES << CLEANINGS
+CLEANFILES = #{$cleanfiles.join(' ')}
+DISTCLEANFILES = #{$distcleanfiles.join(' ')}
+
+all install static install-so install-rb: Makefile
+
+RULES
end
def create_makefile(target, srcprefix = nil)
@@ -892,12 +978,15 @@ def create_makefile(target, srcprefix = nil)
mfile = open("Makefile", "wb")
mfile.print configuration(srcdir)
mfile.print %{
+libpath = #{$LIBPATH.join(" ")}
LIBPATH = #{libpath}
DEFFILE = #{deffile}
CLEANFILES = #{$cleanfiles.join(' ')}
DISTCLEANFILES = #{$distcleanfiles.join(' ')}
+extout = #{$extout}
+extout_prefix = #{$extout_prefix}
target_prefix = #{target_prefix}
LOCAL_LIBS = #{$LOCAL_LIBS}
LIBS = #{$LIBRUBYARG} #{$libs} #{$LIBS}
@@ -905,62 +994,63 @@ SRCS = #{srcs.collect(&File.method(:basename)).join(' ')}
OBJS = #{$objs}
TARGET = #{target}
DLLIB = #{dllib}
-STATIC_LIB = #{staticlib}
-}
- if $extmk
- mfile.print %{
-RUBYCOMMONDIR = $(rubylibdir)
-RUBYLIBDIR = $(rubylibdir)$(target_prefix)
-RUBYARCHDIR = $(archdir)$(target_prefix)
-}
- else
- mfile.print %{
-RUBYCOMMONDIR = $(sitedir)$(target_prefix)
-RUBYLIBDIR = $(sitelibdir)$(target_prefix)
-RUBYARCHDIR = $(sitearchdir)$(target_prefix)
+STATIC_LIB = #{staticlib unless $static.nil?}
+
}
- end
+ install_dirs.each {|d| mfile.print("%-14s= %s\n" % d) if /^[[:upper:]]/ =~ d[0]}
+ n = ($extout ? '$(RUBYARCHDIR)/' : '') + '$(TARGET).'
mfile.print %{
-CLEANLIBS = "$(TARGET).{lib,exp,il?,tds,map}" $(DLLIB)
-CLEANOBJS = "*.{#{$OBJEXT},#{$LIBEXT},s[ol],pdb,bak}"
+TARGET_SO = #{($extout ? '$(RUBYARCHDIR)/' : '')}$(DLLIB)
+CLEANLIBS = #{n}#{CONFIG['DLEXT']} #{n}il? #{n}tds #{n}map
+CLEANOBJS = *.#{$OBJEXT} *.#{$LIBEXT} *.s[ol] *.pdb *.exp *.bak
-all: #{target ? "$(DLLIB)" : "Makefile"}
-static: $(STATIC_LIB)
+all: #{target ? $extout ? "install" : "$(DLLIB)" : "Makefile"}
+static: $(STATIC_LIB)#{$extout ? " install-rb" : ""}
}
mfile.print CLEANINGS
dirs = []
- if not $static and target
- dirs << (dir = "$(RUBYARCHDIR)")
- mfile.print("install: #{dir}\n")
+ mfile.print "install: install-so install-rb\n\n"
+ sodir = dir = "$(RUBYARCHDIR)"
+ mfile.print("install-so: #{dir}\n")
+ if target
f = "$(DLLIB)"
dest = "#{dir}/#{f}"
- mfile.print "install: #{dest}\n"
- mfile.print "#{dest}: #{f} #{dir}\n\t@$(INSTALL_PROG) #{f} #{dir}\n"
+ mfile.print "install-so: #{dest}\n"
+ unless $extout
+ mfile.print "#{dest}: #{f}\n\t@$(INSTALL_PROG) #{f} #{dir}\n"
+ end
end
- for i in [[["lib/**/*.rb", "$(RUBYLIBDIR)", "lib"]], $INSTALLFILES]
+ dirs << (dir = "$(RUBYLIBDIR)")
+ mfile.print("install-rb: install-rb-default\n")
+ mfile.print("install-rb-default: #{dir}\n")
+ for sfx, i in [["-default", [["lib/**/*.rb", "$(RUBYLIBDIR)", "lib"]]], ["", $INSTALLFILES]]
files = install_files(mfile, i, nil, srcprefix) or next
for dir, *files in files
unless dirs.include?(dir)
dirs << dir
- mfile.print("install: #{dir}\n")
+ mfile.print "install-rb#{sfx}: #{dir}\n"
end
files.each do |f|
dest = "#{dir}/#{File.basename(f)}"
- mfile.print("install: #{dest}\n")
- mfile.print("#{dest}: #{f} #{dir}\n\t@$(INSTALL_DATA) #{f} #{dir}\n")
+ mfile.print("install-rb#{sfx}: #{dest}\n")
+ mfile.print("#{dest}: #{f}\n\t@$(#{$extout ? 'COPY' : 'INSTALL_DATA'}) #{f} #{dir}\n")
end
end
end
- if dirs.empty?
- mfile.print("install:\n")
- else
- dirs.each {|dir| mfile.print "#{dir}:\n\t@$(MAKEDIRS) #{dir}\n"}
- end
+ dirs.unshift(sodir) if target and !dirs.include?(sodir)
+ dirs.each {|dir| mfile.print "#{dir}:\n\t@$(MAKEDIRS) $@\n"}
+
+ mfile.print <<-SITEINSTALL
- mfile.print "\nsite-install: install\n\n"
+site-install: site-install-so site-install-rb
+site-install-so: install-so
+site-install-rb: install-rb
+
+ SITEINSTALL
return unless target
+ mfile.puts SRC_EXT.collect {|ext| ".path.#{ext} = $(VPATH)"} if $nmake == ?b
mfile.print ".SUFFIXES: .#{SRC_EXT.join(' .')} .#{$OBJEXT}\n"
mfile.print "\n"
@@ -977,18 +1067,17 @@ static: $(STATIC_LIB)
end
end
- if makedef
- mfile.print "$(DLLIB): $(OBJS) $(DEFFILE)\n\t"
- else
- mfile.print "$(DLLIB): $(OBJS)\n\t"
- end
+ mfile.print "$(RUBYARCHDIR)/" if $extout
+ mfile.print "$(DLLIB): ", (makedef ? "$(DEFFILE) " : ""), "$(OBJS)\n\t"
mfile.print "@-$(RM) $@\n\t"
- mfile.print "@-$(RM) $(TARGET).lib\n\t" if $mswin
+ mfile.print "@-$(MAKEDIRS) $(@D)\n\t" if $extout
mfile.print LINK_SO, "\n\n"
- mfile.print "$(STATIC_LIB): $(OBJS)\n\t"
- mfile.print "$(AR) #{config_string('ARFLAGS') || 'cru '}$@ $(OBJS)"
- if ranlib = config_string('RANLIB')
- mfile.print "\n\t@-#{ranlib} $(DLLIB) 2> /dev/null || true"
+ unless $static.nil?
+ mfile.print "$(STATIC_LIB): $(OBJS)\n\t"
+ mfile.print "$(AR) #{config_string('ARFLAGS') || 'cru '}$@ $(OBJS)"
+ config_string('RANLIB') do |ranlib|
+ mfile.print "\n\t@-#{ranlib} $(DLLIB) 2> /dev/null || true"
+ end
end
mfile.print "\n\n"
if makedef
@@ -1000,15 +1089,53 @@ static: $(STATIC_LIB)
if File.exist?(depend)
open(depend, "r") do |dfile|
mfile.printf "###\n"
+ cont = implicit = nil
+ impconv = proc do
+ COMPILE_RULES.each {|rule| mfile.print(rule % implicit[0], implicit[1])}
+ implicit = nil
+ end
+ ruleconv = proc do |line|
+ if implicit
+ if /\A\t/ =~ line
+ implicit[1] << line
+ next
+ else
+ impconv[]
+ end
+ end
+ if m = /\A\.(\w+)\.(\w+)(?:\s*:)/.match(line)
+ implicit = [[m[1], m[2]], [m.post_match]]
+ next
+ elsif RULE_SUBST and /\A[$\w][^#]*:/ =~ line
+ line.gsub!(%r"(\s)(?!\.)([^$(){}+=:\s\/\\,]+)(?=\s|\z)") {$1 + RULE_SUBST % $2}
+ end
+ mfile.print line
+ end
while line = dfile.gets()
line.gsub!(/\.o\b/, ".#{$OBJEXT}")
- if $nmake
- line.gsub!(%r"(\s)([^\s\/]+\.(?:#{(SRC_EXT + ['h']).join('|')}))(?=\s|\z)", '\1{.;$(VPATH)}\2')
- end
line.gsub!(/\$\(hdrdir\)\/config.h/, $config_h) if $config_h
- mfile.print line
+ if /(?:^|[^\\])(?:\\\\)*\\$/ =~ line
+ (cont ||= []) << line
+ next
+ elsif cont
+ line = (cont << line).join
+ cont = nil
+ end
+ ruleconv.call(line)
+ end
+ if cont
+ ruleconv.call(cont.join)
+ elsif implicit
+ impconv.call
end
end
+ else
+ headers = %w[ruby.h defines.h]
+ if RULE_SUBST
+ headers.each {|h| h.sub!(/.*/) {|*m| RULE_SUBST % m}}
+ end
+ headers << $config_h if $config_h
+ mfile.print "$(OBJS): ", headers.join(' '), "\n"
end
$makefile_created = true
@@ -1044,14 +1171,17 @@ def init_mkmf(config = CONFIG)
$LOCAL_LIBS = ""
- $cleanfiles = []
- $distcleanfiles = []
+ $cleanfiles = config_string('CLEANFILES') {|s| Shellwords.shellwords(s)} || []
+ $distcleanfiles = config_string('DISTCLEANFILES') {|s| Shellwords.shellwords(s)} || []
+
+ $extout ||= nil
+ $extout_prefix ||= nil
$arg_config.clear
dir_config("opt")
end
-FailedMassage = <<MESSAGE
+FailedMessage = <<MESSAGE
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
@@ -1062,7 +1192,7 @@ MESSAGE
def mkmf_failed(path)
unless $makefile_created or File.exist?("Makefile")
opts = $arg_config.collect {|t, n| "\t#{t}#{"=#{n}" if n}\n"}
- abort "*** #{path} failed ***\n" + FailedMassage + opts.join
+ abort "*** #{path} failed ***\n" + FailedMessage + opts.join
end
end
@@ -1081,8 +1211,12 @@ end
Config::CONFIG["srcdir"] = CONFIG["srcdir"] =
$srcdir = arg_config("--srcdir", File.dirname($0))
$configure_args["--topsrcdir"] ||= $srcdir
-Config::CONFIG["topdir"] = CONFIG["topdir"] =
- $curdir = arg_config("--curdir", Dir.pwd)
+$curdir = arg_config("--curdir", Dir.pwd)
+Config.expand(curdir = $curdir.dup)
+unless File.expand_path(Config::CONFIG["topdir"]) == File.expand_path(curdir)
+ CONFIG["topdir"] = $curdir
+ Config::CONFIG["topdir"] = curdir
+end
$configure_args["--topdir"] ||= $curdir
$ruby = arg_config("--ruby", File.join(Config::CONFIG["bindir"], CONFIG["ruby_install_name"]))
@@ -1104,6 +1238,7 @@ COMMON_HEADERS = (hdr.join("\n") unless hdr.empty?)
COMMON_LIBS = config_string('COMMON_LIBS', &split) || []
COMPILE_RULES = config_string('COMPILE_RULES', &split) || %w[.%s.%s:]
+RULE_SUBST = config_string('RULE_SUBST')
COMPILE_C = config_string('COMPILE_C') || '$(CC) $(CFLAGS) $(CPPFLAGS) -c $<'
COMPILE_CXX = config_string('COMPILE_CXX') || '$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $<'
TRY_LINK = config_string('TRY_LINK') ||
@@ -1111,9 +1246,9 @@ TRY_LINK = config_string('TRY_LINK') ||
"$(CFLAGS) $(src) $(LIBPATH) $(LDFLAGS) $(ARCH_FLAG) $(LOCAL_LIBS) $(LIBS)"
LINK_SO = config_string('LINK_SO') ||
if CONFIG["DLEXT"] == $OBJEXT
- "ld $(DLDFLAGS) -r -o $(DLLIB) $(OBJS)\n"
+ "ld $(DLDFLAGS) -r -o $@ $(OBJS)\n"
else
- "$(LDSHARED) $(DLDFLAGS) $(LIBPATH) #{OUTFLAG}$(DLLIB) " \
+ "$(LDSHARED) $(DLDFLAGS) $(LIBPATH) #{OUTFLAG}$@ " \
"$(OBJS) $(LOCAL_LIBS) $(LIBS)"
end
LIBPATHFLAG = config_string('LIBPATHFLAG') || ' -L"%s"'
diff --git a/win32/Makefile.sub b/win32/Makefile.sub
index af1cc55..b65d3e4 100644
--- a/win32/Makefile.sub
+++ b/win32/Makefile.sub
@@ -1,6 +1,8 @@
# -*- makefile -*-
SHELL = $(COMSPEC)
+MKFILES = Makefile
+NULL = nul
#### Start of system configuration section. ####
@@ -26,7 +28,7 @@ iconinc=-I$(icondirs: = -I)
!endif
###############
-VPATH = $(srcdir):$(srcdir)/missing
+VPATH = $(srcdir);$(srcdir)/missing;$(srcdir)/win32
.SUFFIXES: .y .def .lib
!if !defined(CC)
@@ -41,6 +43,7 @@ YACC = byacc
AR = lib -nologo
PURIFY =
AUTOCONF = autoconf
+RM = $(srcdir:/=\)\win32\rm.bat
!if !defined(PROCESSOR_ARCHITECTURE)
PROCESSOR_ARCHITECTURE = x86
@@ -81,19 +84,29 @@ prefix = /usr
!if !defined(exec_prefix)
exec_prefix = $(prefix)
!endif
-!if !defined(DESTDIR)
-DESTDIR = $(prefix)
-!endif
!if !defined(libdir)
libdir = $(exec_prefix)/lib
!endif
+!if !defined(datadir)
+datadir = $(prefix)/share
+!endif
+!ifndef EXTOUT
+EXTOUT = .ext
+!endif
!ifndef RIDATADIR
-RIDATADIR = $(DESTDIR)/share/ri/$(MAJOR).$(MINOR)/system
+RIDATADIR = $(DESTDIR)$(datadir)/ri/$(MAJOR).$(MINOR)/system
+!endif
+!ifndef TESTUI
+TESTUI = console
+!endif
+!ifndef TESTS
+TESTS =
!endif
!ifndef RDOCTARGET
RDOCTARGET = install-nodoc
!endif
+OUTFLAG = -Fe
!if !defined(CFLAGS)
CFLAGS = -MD $(DEBUGFLAGS) $(OPTFLAGS) $(PROCESSOR_FLAG)
!endif
@@ -131,6 +144,7 @@ PROGRAM=$(RUBY_INSTALL_NAME)$(EXEEXT)
WPROGRAM=$(RUBYW_INSTALL_NAME)$(EXEEXT)
RUBYDEF = $(RUBY_SO_NAME).def
MINIRUBY = .\miniruby$(EXEEXT)
+RUNRUBY = .\ruby$(EXEEXT) "$(srcdir)/runruby.rb" --extout="$(EXTOUT)" --
!if !defined(STACK)
STACK = 0x2000000
@@ -144,71 +158,35 @@ LIBRUBY_SO = $(RUBY_SO_NAME).dll
LIBRUBY = $(RUBY_SO_NAME).lib
LIBRUBYARG = $(LIBRUBY)
+PREP = miniruby$(EXEEXT)
+
+!if !defined(EXTSTATIC)
+EXTSTATIC =
+!endif
+
+OBJEXT = obj
+
EXTOBJS =
DLDOBJS =
-MAINOBJ = main.obj
-WINMAINOBJ = winmain.obj
-
-OBJS = array.obj \
- bignum.obj \
- class.obj \
- compar.obj \
- dir.obj \
- dln.obj \
- enum.obj \
- error.obj \
- eval.obj \
- file.obj \
- gc.obj \
- hash.obj \
- inits.obj \
- io.obj \
- marshal.obj \
- math.obj \
- numeric.obj \
- object.obj \
- pack.obj \
- parse.obj \
- prec.obj \
- process.obj \
- random.obj \
- range.obj \
- re.obj \
- regex.obj \
- ruby.obj \
- signal.obj \
- sprintf.obj \
- st.obj \
- string.obj \
- struct.obj \
- time.obj \
- util.obj \
- variable.obj \
- version.obj \
- $(MISSING)
-
-SCRIPT_ARGS = "--dest-dir=$(DESTDIR)" \
- "--make=$(MAKE)" \
- "--mflags=$(MFLAGS)" \
- "--make-flags=$(MAKEFLAGS)"
-
-all: ext miniruby$(EXEEXT) rbconfig.rb \
- $(LIBRUBY) $(MISCLIBS)
- @$(MINIRUBY) $(srcdir)/ext/extmk.rb --extstatic=$(EXTSTATIC) $(SCRIPT_ARGS)
-
-ext:
- @mkdir $@
+WINMAINOBJ = winmain.$(OBJEXT)
+
+all: $(srcdir)/win32/Makefile.sub $(srcdir)/common.mk
ruby: $(PROGRAM)
rubyw: $(WPROGRAM)
-lib: $(LIBRUBY)
-dll: $(LIBRUBY_SO)
-config: config.h config.status
+!include $(srcdir)/common.mk
+
+CONFIG_H = ./.config.h.time
+
+config: config.status
-config.h:
- @echo Creating <<$@
+config.status: $(CONFIG_H)
+
+$(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub
+ @echo Creating config.h
+ @$(srcdir:/=\)\win32\ifchange.bat config.h <<
#define STDC_HEADERS 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_STAT_H 1
@@ -296,12 +274,15 @@ config.h:
#define RUBY_PLATFORM "$(ARCH)-$(OS)"
#define RUBY_ARCHLIB "/lib/ruby/$(MAJOR).$(MINOR)/$(ARCH)-$(OS)"
#define RUBY_SITE_ARCHLIB "/lib/ruby/site_ruby/$(MAJOR).$(MINOR)/$(ARCH)-$(RT)"
-<<KEEP
+<<
+ @exit > $(@:/=\)
-config.status: Makefile $(srcdir)/win32/Makefile.sub
- @echo Creating <<$@
+config.status: $(MKFILES) $(srcdir)/win32/Makefile.sub $(srcdir)/common.mk
+ @echo Creating $@
+ @exit <<$@
# Generated automatically by Makefile.sub.
s,@SHELL@,$$(COMSPEC),;t t
+s,@PATH_SEPARATOR@,;,;t t
s,@CFLAGS@,$(CFLAGS),;t t
s,@CPPFLAGS@,$(CPPFLAGS),;t t
s,@CXXFLAGS@,$(CXXFLAGS),;t t
@@ -309,7 +290,7 @@ s,@FFLAGS@,$(FFLAGS),;t t
s,@LDFLAGS@,,;t t
s,@LIBS@,$(LIBS),;t t
s,@exec_prefix@,$${prefix},;t t
-s,@prefix@,,;t t
+s,@prefix@,$(prefix),;t t
s,@program_transform_name@,s,,,,;t t
s,@bindir@,$${exec_prefix}/bin,;t t
s,@sbindir@,$${exec_prefix}/sbin,;t t
@@ -350,10 +331,10 @@ s,@LIBOBJS@, acosh.obj crypt.obj erf.obj win32.obj,;t t
s,@ALLOCA@,$(ALLOCA),;t t
s,@DEFAULT_KCODE@,$(DEFAULT_KCODE),;t t
s,@EXEEXT@,.exe,;t t
-s,@OBJEXT@,obj,;t t
+s,@OBJEXT@,$(OBJEXT),;t t
s,@XCFLAGS@,$(XCFLAGS),;t t
s,@XLDFLAGS@,$(XLDFLAGS),;t t
-s,@DLDFLAGS@,$(DLDFLAGS) $$(LIBPATH) -def:$$(DEFFILE),;t t
+s,@DLDFLAGS@,$(DLDFLAGS) $$(LIBPATH) -def:$$(DEFFILE) -implib:$$(*F:.so=)-$$(arch).lib -pdb:$$(*F:.so=)-$$(arch).pdb,;t t
s,@ARCH_FLAG@,$(ARCH_FLAG),;t t
s,@STATIC@,$(STATIC),;t t
s,@CCDLFLAGS@,,;t t
@@ -365,6 +346,11 @@ s,@STRIP@,$(STRIP),;t t
s,@EXTSTATIC@,$(EXTSTATIC),;t t
s,@setup@,Setup,;t t
s,@MINIRUBY@,$(MINIRUBY),;t t
+s,@PREP@,miniruby$(EXEEXT),;t t
+s,@RUNRUBY@,$(RUNRUBY),;t t
+s,@EXTOUT@,$(EXTOUT),;t t
+s,@ARCHFILE@,,;t t
+s,@RDOCTARGET@,$(RDOCTARGET),;t t
s,@LIBRUBY_LDSHARED@,$(LIBRUBY_LDSHARED),;t t
s,@LIBRUBY_DLDFLAGS@,$(LIBRUBY_DLDFLAGS),;t t
s,@RUBY_INSTALL_NAME@,$(RUBY_INSTALL_NAME),;t t
@@ -381,7 +367,7 @@ s,@LIBRUBYARG_SHARED@,$$(LIBRUBY),;t t
s,@SOLIBS@,$(SOLIBS),;t t
s,@DLDLIBS@,$(DLDLIBS),;t t
s,@ENABLE_SHARED@,yes,;t t
-s,@OUTFLAG@,-Fe,;t t
+s,@OUTFLAG@,$(OUTFLAG),;t t
s,@CPPOUTFILE@,-P,;t t
s,@LIBPATHFLAG@, -libpath:"%s",;t t
s,@RPATHFLAG@,,;t t
@@ -389,11 +375,13 @@ s,@LIBARG@,%s.lib,;t t
s,@LINK_SO@,$$(LDSHARED) -Fe$$(@) $$(OBJS) $$(LIBS) $$(LOCAL_LIBS) $$(DLDFLAGS),;t t
s,@COMPILE_C@,$$(CC) $$(CFLAGS) $$(CPPFLAGS) -c -Tc$$(<:\=/),;t t
s,@COMPILE_CXX@,$$(CXX) $$(CXXFLAGS) $$(CPPFLAGS) -c -Tp$$(<:\=/),;t t
-s,@COMPILE_RULES@,{$$(srcdir)}.%s{}.%s: .%s.%s:,;t t
+s,@COMPILE_RULES@,{$$(srcdir)}.%s{}.%s: {$$(topdir)}.%s{}.%s: {$$(hdrdir)}.%s{}.%s: .%s.%s:,;t t
+s,@RULE_SUBST@,{.;$$(srcdir);$$(topdir);$$(hdrdir)}%s,;t t
s,@TRY_LINK@,$$(CC) -Feconftest $$(INCFLAGS) -I$$(hdrdir) $$(CPPFLAGS) $$(CFLAGS) $$(src) $$(LOCAL_LIBS) $$(LIBS) -link $$(LDFLAGS) $$(LIBPATH) $$(XLDFLAGS),;t t
s,@COMMON_LIBS@,m,;t t
s,@COMMON_MACROS@,WIN32_LEAN_AND_MEAN;t t
s,@COMMON_HEADERS@,windows.h winsock.h,;t t
+s,@DISTCLEANFILES@,vc*.pdb,;t t
s,@EXPORT_PREFIX@, ,;t t
s,@arch@,$(ARCH)-$(OS),;t t
s,@sitearch@,$(ARCH)-$(RT),;t t
@@ -404,111 +392,47 @@ s,@srcdir@,$(srcdir),;t t
s,@top_srcdir@,$(srcdir),;t t
<<KEEP
-miniruby$(EXEEXT): $(OBJS) $(MAINOBJ) dmyext.obj
+miniruby$(EXEEXT):
@echo. $(LIBS)
- $(PURIFY) $(CC) $(MAINOBJ) dmyext.obj $(OBJS) $(LIBS) -Fe$@ $(LDFLAGS)
+ $(PURIFY) $(CC) $(MAINOBJ) $(LIBRUBY_A) $(LIBS) -Fe$@ $(LDFLAGS)
-$(PROGRAM): $(MAINOBJ) $(LIBRUBY_SO) $*.res
- $(PURIFY) $(CC) $(MAINOBJ) $*.res \
- -Fe$@ $(LIBRUBYARG) $(LDFLAGS) $(XLDFLAGS)
+$(PROGRAM): $(RUBY_INSTALL_NAME).res
+ $(PURIFY) $(CC) $(MAINOBJ) $(RUBY_INSTALL_NAME).res \
+ $(OUTFLAG)$@ $(LIBRUBYARG) $(LDFLAGS) $(XLDFLAGS)
-$(WPROGRAM): $(MAINOBJ) $(WINMAINOBJ) $(LIBRUBY_SO) $*.res
- $(PURIFY) $(CC) $(MAINOBJ) $(WINMAINOBJ) $*.res \
- -Fe$@ $(LIBRUBYARG) $(LDFLAGS) $(XLDFLAGS) -subsystem:Windows
+$(WPROGRAM): $(MAINOBJ) $(WINMAINOBJ) $(LIBRUBY_SO) $(RUBYW_INSTALL_NAME).res
+ $(PURIFY) $(CC) $(MAINOBJ) $(WINMAINOBJ) \
+ $(RUBYW_INSTALL_NAME).res $(OUTFLAG)$@ $(LIBRUBYARG) \
+ $(LDFLAGS) $(XLDFLAGS) -subsystem:Windows
-$(LIBRUBY_A): $(OBJS) dmyext.obj
- $(AR) $(ARFLAGS)$@ $(OBJS) dmyext.obj
+$(LIBRUBY_A): $(OBJS) $(DMYEXT)
+ $(AR) $(ARFLAGS)$@ $(OBJS) $(DMYEXT)
$(LIBRUBY): $(RUBYDEF)
$(AR) $(ARFLAGS)$@ -def:$(RUBYDEF)
-$(LIBRUBY_SO): $(LIBRUBY_A) $(DLDOBJS) $(RUBYDEF) $*.res
+$(LIBRUBY_SO): $(LIBRUBY_A) $(DLDOBJS) $(RUBYDEF) $(RUBY_SO_NAME).res
@echo. $(DLDOBJS)
- $(LIBRUBY_LDSHARED) $(MAINOBJ) $(DLDOBJS) $(LIBRUBY_A) $*.res $(LIBS) \
- -Fe$@ $(LDFLAGS) $(LIBRUBY_DLDFLAGS)
+ $(LDSHARED) $(MAINOBJ) $(DLDOBJS) $(LIBRUBY_A) \
+ $(RUBY_SO_NAME).res $(LIBS) -Fe$@ $(LDFLAGS) \
+ $(LIBRUBY_DLDFLAGS)
-$(RUBYDEF): $(LIBRUBY_A) miniruby$(EXEEXT)
+$(RUBYDEF): $(LIBRUBY_A) $(PREP)
$(MINIRUBY) $(srcdir)/win32/mkexports.rb -output=$@ $(LIBRUBY_A)
{$(srcdir)/win32}.def.lib:
$(AR) $(ARFLAGS)$@ -def:$<
-install: install-nodoc $(RDOCTARGET)
-
-install-nodoc: rbconfig.rb
- $(MINIRUBY) $(srcdir)/instruby.rb $(SCRIPT_ARGS)
- $(MINIRUBY) $(srcdir)/ext/extmk.rb $(SCRIPT_ARGS) install
-
-what-where no-install: rbconfig.rb
- $(MINIRUBY) $(srcdir)/instruby.rb -n $(SCRIPT_ARGS) --mantype="$(MANTYPE)"
- $(MINIRUBY) $(srcdir)/ext/extmk.rb -n $(SCRIPT_ARGS) install
-
-install-doc:
- @echo Generating RDoc documentation
- $(DESTDIR:/=\)\bin\$(PROGRAM) $(srcdir)/bin/rdoc --all --ri-system --op "$(RIDATADIR)" $(srcdir)
-
-clean: clean-ext clean-local
-
-clean-local:
- @if exist $(LIBRUBY_A) del $(LIBRUBY_A)
- @if exist $(MAINOBJ) del $(MAINOBJ)
- @if exist rbconfig.rb del rbconfig.rb
- @if exist ext\extinit.c del ext\extinit.c
- @if exist ext\extinit.obj del ext\extinit.obj
- @if exist ext\vc*.pdb del ext\vc*.pdb
- @if exist *.obj del *.obj
- @if exist *.res del *.res
-
-clean-ext:
- @-$(MINIRUBY) $(srcdir)/ext/extmk.rb $(SCRIPT_ARGS) clean
-
-distclean: distclean-ext distclean-local
-
-distclean-local: clean-local
- @if exist Makefile del Makefile
- @if exist config.h del config.h
- @if exist ext\config.cache del ext\config.cache
- @if exist config.cache del config.cache
- @if exist config.log del config.log
- @if exist config.status del config.status
- @if exist *~ del *~
- @if exist *.bak del *.bak
- @if exist *.stackdump del *.stackdump
- @if exist *.core del *.core
- @if exist gmon.out del gmon.out
- @if exist y.tab.c del y.tab.c
- @if exist y.output del y.output
- @if exist *.map del *.map
- @if exist *.pdb del *.pdb
- @if exist *.ilk del *.ilk
- @if exist *.exp del *.exp
- @if exist $(RUBYDEF) del $(RUBYDEF)
- @if exist $(RUBY_INSTALL_NAME).rc del $(RUBY_INSTALL_NAME).rc
- @if exist $(RUBYW_INSTALL_NAME).rc del $(RUBYW_INSTALL_NAME).rc
- @if exist $(RUBY_SO_NAME).rc del $(RUBY_SO_NAME).rc
- @if exist $(PROGRAM) del $(PROGRAM)
- @if exist $(WPROGRAM) del $(WPROGRAM)
- @if exist $(LIBRUBY_SO) del $(LIBRUBY_SO)
- @if exist $(LIBRUBY) del $(LIBRUBY)
- @if exist ext\nul if not exist ext\* rmdir ext
- @if exist miniruby$(EXEEXT) del miniruby$(EXEEXT)
-
-distclean-ext:
- @-$(MINIRUBY) $(srcdir)/ext/extmk.rb $(SCRIPT_ARGS) distclean
-
-realclean: distclean
- @if exist parse.c del parse.c
- @if exist lex.c del lex.c
-
-test: miniruby$(EXEEXT) rbconfig.rb $(PROGRAM) NUL
- @miniruby$(EXEEXT) $(srcdir)/rubytest.rb
-
-rbconfig.rb: miniruby$(EXEEXT) config.status
- @$(MINIRUBY) $(srcdir)/mkconfig.rb -srcdir=$(srcdir) \
- -install_name=$(RUBY_INSTALL_NAME) \
- -so_name=$(RUBY_SO_NAME) rbconfig.rb
-
-$(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc: rbconfig.rb
+clean-local::
+ @$(RM) ext\extinit.c ext\extinit.$(OBJEXT) ext\vc*.pdb miniruby.lib
+ @$(RM) $(RUBY_INSTALL_NAME).res $(RUBYW_INSTALL_NAME).res $(RUBY_SO_NAME).res
+
+distclean-local::
+ @$(RM) ext\config.cache $(RBCONFIG:/=\)
+ @$(RM) *.map *.pdb *.ilk *.exp $(RUBYDEF)
+ @$(RM) $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc
+
+$(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc: $(RBCONFIG)
@$(MINIRUBY) $(srcdir)/win32/resource.rb \
-ruby_name=$(RUBY_INSTALL_NAME) \
-rubyw_name=$(RUBYW_INSTALL_NAME) \
@@ -516,13 +440,13 @@ $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc: rbconfig.rb
. $(icondirs) $(srcdir)/win32
{$(srcdir)/missing}.c.obj:
- $(CC) $(CFLAGS) $(XCFLAGS) -I. -I$(<D) $(CPPFLAGS) -c -Tc$(<:\=/)
+ $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -c -Tc$(<:\=/)
{$(srcdir)/win32}.c.obj:
- $(CC) $(CFLAGS) $(XCFLAGS) -I. -I$(<D) $(CPPFLAGS) -c -Tc$(<:\=/)
+ $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -c -Tc$(<:\=/)
{$(srcdir)}.c.obj:
- $(CC) $(CFLAGS) $(XCFLAGS) -I. -I$(<D) $(CPPFLAGS) -c -Tc$(<:\=/)
+ $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -c -Tc$(<:\=/)
.c.obj:
- $(CC) $(CFLAGS) $(XCFLAGS) -I. $(CPPFLAGS) -c -Tc$(<:\=/)
+ $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -c -Tc$(<:\=/)
.rc.res:
$(RC) -I. -I$(<D) $(iconinc) -I$(srcdir)/win32 $(RFLAGS) -fo$@ $(<:\=/)
@@ -532,162 +456,9 @@ $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc: rbconfig.rb
sed -e "s!^ *extern char \*getenv();!/* & */!;s/^\(#.*\)y\.tab/\1parse/" y.tab.c > $@
@del y.tab.c
-{$(srcdir)}parse.c: parse.y
+$(OBJS): {$(srcdir)}win32/win32.h
+
+dir.$(OBJEXT): {$(srcdir)}win32/dir.h
ext/extinit.obj: ext/extinit.c $(SETUP)
$(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -Fo$@ -c ext/extinit.c
-
-acosh.obj: {$(srcdir)}missing/acosh.c
-alloca.obj: {$(srcdir)}missing/alloca.c
-crypt.obj: {$(srcdir)}missing/crypt.c
-dup2.obj: {$(srcdir)}missing/dup2.c
-erf.obj: {$(srcdir)}missing/erf.c
-finite.obj: {$(srcdir)}missing/finite.c
-flock.obj: {$(srcdir)}missing/flock.c
-memcmp.obj: {$(srcdir)}missing/memcmp.c
-memmove.obj: {$(srcdir)}missing/memmove.c
-mkdir.obj: {$(srcdir)}missing/mkdir.c
-vsnprintf.obj: {$(srcdir)}missing/vsnprintf.c
-strcasecmp.obj: {$(srcdir)}missing/strcasecmp.c
-strncasecmp.obj: {$(srcdir)}missing/strncasecmp.c
-strchr.obj: {$(srcdir)}missing/strchr.c
-strdup.obj: {$(srcdir)}missing/strdup.c
-strerror.obj: {$(srcdir)}missing/strerror.c
-strftime.obj: {$(srcdir)}missing/strftime.c
-strstr.obj: {$(srcdir)}missing/strstr.c
-strtod.obj: {$(srcdir)}missing/strtod.c
-strtol.obj: {$(srcdir)}missing/strtol.c
-strtoul.obj: {$(srcdir)}missing/strtoul.c
-nt.obj: {$(srcdir)}missing/nt.c
-x68.obj: {$(srcdir)}missing/x68.c
-os2.obj: {$(srcdir)}missing/os2.c
-dl_os2.obj: {$(srcdir)}missing/dl_os2.c
-
-# when I use -I., there is confliction at "OpenFile"
-# so, set . into environment varible "include"
-win32.obj: {$(srcdir)}win32/win32.c
-
-# Prevent GNU make v3 from overflowing arg limit on SysV.
-.NOEXPORT:
-###
-array.obj: {$(srcdir)}array.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}util.h {$(srcdir)}st.h {$(srcdir)}/win32/win32.h
-bignum.obj: {$(srcdir)}bignum.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}/win32/win32.h
-class.obj: {$(srcdir)}class.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}rubysig.h {$(srcdir)}node.h {$(srcdir)}st.h \
- {$(srcdir)}/win32/win32.h
-compar.obj: {$(srcdir)}compar.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}/win32/win32.h
-dir.obj: {$(srcdir)}dir.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}util.h {$(srcdir)}/win32/win32.h
-dln.obj: {$(srcdir)}dln.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}dln.h {$(srcdir)}/win32/win32.h
-dmyext.obj: {$(srcdir)}dmyext.c
-enum.obj: {$(srcdir)}enum.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}node.h {$(srcdir)}util.h {$(srcdir)}/win32/win32.h
-error.obj: {$(srcdir)}error.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}env.h {$(srcdir)}st.h {$(srcdir)}/win32/win32.h
-eval.obj: {$(srcdir)}eval.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}node.h {$(srcdir)}env.h {$(srcdir)}util.h \
- {$(srcdir)}rubysig.h {$(srcdir)}st.h {$(srcdir)}dln.h \
- {$(srcdir)}/win32/win32.h
-file.obj: {$(srcdir)}file.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}rubyio.h {$(srcdir)}rubysig.h {$(srcdir)}util.h \
- {$(srcdir)}dln.h {$(srcdir)}/win32/win32.h
-gc.obj: {$(srcdir)}gc.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}rubysig.h {$(srcdir)}st.h {$(srcdir)}node.h \
- {$(srcdir)}env.h {$(srcdir)}re.h {$(srcdir)}regex.h \
- {$(srcdir)}/win32/win32.h
-hash.obj: {$(srcdir)}hash.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}st.h {$(srcdir)}util.h {$(srcdir)}rubysig.h \
- {$(srcdir)}/win32/win32.h
-inits.obj: {$(srcdir)}inits.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}/win32/win32.h
-io.obj: {$(srcdir)}io.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}rubyio.h {$(srcdir)}rubysig.h {$(srcdir)}env.h \
- {$(srcdir)}util.h {$(srcdir)}/win32/win32.h
-main.obj: {$(srcdir)}main.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}/win32/win32.h
-marshal.obj: {$(srcdir)}marshal.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}rubyio.h {$(srcdir)}st.h {$(srcdir)}util.h \
- {$(srcdir)}/win32/win32.h
-math.obj: {$(srcdir)}math.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}/win32/win32.h
-numeric.obj: {$(srcdir)}numeric.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}/win32/win32.h
-object.obj: {$(srcdir)}object.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}st.h {$(srcdir)}util.h {$(srcdir)}/win32/win32.h
-pack.obj: {$(srcdir)}pack.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}/win32/win32.h
-parse.obj: {$(srcdir)}parse.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}env.h {$(srcdir)}node.h {$(srcdir)}st.h {$(srcdir)}regex.h \
- {$(srcdir)}util.h {$(srcdir)}lex.c {$(srcdir)}/win32/win32.h
-prec.obj: {$(srcdir)}prec.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}/win32/win32.h
-process.obj: {$(srcdir)}process.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}rubysig.h {$(srcdir)}st.h {$(srcdir)}/win32/win32.h
-random.obj: {$(srcdir)}random.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}/win32/win32.h
-range.obj: {$(srcdir)}range.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}/win32/win32.h
-re.obj: {$(srcdir)}re.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}re.h {$(srcdir)}regex.h {$(srcdir)}/win32/win32.h
-regex.obj: {$(srcdir)}regex.c config.h {$(srcdir)}regex.h \
- {$(srcdir)}/win32/win32.h
-ruby.obj: {$(srcdir)}ruby.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}dln.h {$(srcdir)}node.h {$(srcdir)}util.h \
- {$(srcdir)}/win32/win32.h
-signal.obj: {$(srcdir)}signal.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}rubysig.h {$(srcdir)}/win32/win32.h
-sprintf.obj: {$(srcdir)}sprintf.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}/win32/win32.h
-st.obj: {$(srcdir)}st.c config.h {$(srcdir)}st.h
-string.obj: {$(srcdir)}string.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}re.h {$(srcdir)}regex.h {$(srcdir)}/win32/win32.h
-struct.obj: {$(srcdir)}struct.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}/win32/win32.h
-time.obj: {$(srcdir)}time.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}/win32/win32.h
-util.obj: {$(srcdir)}util.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}util.h {$(srcdir)}/win32/win32.h
-variable.obj: {$(srcdir)}variable.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}env.h {$(srcdir)}node.h {$(srcdir)}st.h {$(srcdir)}util.h \
- {$(srcdir)}/win32/win32.h
-version.obj: {$(srcdir)}version.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}version.h {$(srcdir)}/win32/win32.h
diff --git a/win32/configure.bat b/win32/configure.bat
index 97a8945..11383e0 100755
--- a/win32/configure.bat
+++ b/win32/configure.bat
@@ -10,10 +10,14 @@ echo>> ~tmp~.mak @del ~tmp~.mak
echo>> ~tmp~.mak @-$(MAKE) -l$(MAKEFLAGS) -f $(@D)/setup.mak \
:loop
if "%1" == "" goto :end
+if "%1" == "--prefix" goto :prefix
if "%1" == "--srcdir" goto :srcdir
if "%1" == "srcdir" goto :srcdir
if "%1" == "--target" goto :target
if "%1" == "target" goto :target
+if "%1" == "--with-static-linked-ext" goto :extstatic
+if "%1" == "--program-suffix" goto :suffix
+if "%1" == "--program-name" goto :progname
if "%1" == "--enable-install-doc" goto :enable-rdoc
if "%1" == "--disable-install-doc" goto :disable-rdoc
if "%1" == "-h" goto :help
@@ -26,11 +30,35 @@ goto :loop
shift
shift
goto :loop
+:prefix
+ echo>> ~tmp~.mak "prefix=%2" \
+ shift
+ shift
+goto :loop
+:suffix
+ echo>> ~tmp~.mak "RUBY_SUFFIX=%2" \
+ shift
+ shift
+goto :loop
+:installname
+ echo>> ~tmp~.mak "RUBY_INSTALL_NAME=%2" \
+ shift
+ shift
+goto :loop
+:soname
+ echo>> ~tmp~.mak "RUBY_SO_NAME=%2" \
+ shift
+ shift
+goto :loop
:target
echo>> ~tmp~.mak "%2" \
shift
shift
goto :loop
+:extstatic
+ echo>> ~tmp~.mak "EXTSTATIC=static" \
+ shift
+goto :loop
:enable-rdoc
echo>> ~tmp~.mak "RDOCTARGET=install-doc" \
shift
@@ -43,9 +71,12 @@ goto :loop
echo Configuration:
echo --help display this help
echo --srcdir=DIR find the sources in DIR [configure dir or `..']
+ echo Installation directories:
+ echo --prefix=PREFIX install files in PREFIX [/usr]
echo System types:
echo --target=TARGET configure for TARGET [i386-mswin32]
echo Optional Package:
+ echo --with-static-linked-ext link external modules statically
echo --enable-install-doc install rdoc indexes during install
del ~tmp~.mak
goto :exit
diff --git a/wince/Makefile.sub b/wince/Makefile.sub
index 3d5eed1..1dfa07d 100644
--- a/wince/Makefile.sub
+++ b/wince/Makefile.sub
@@ -1,6 +1,8 @@
# -*- makefile -*-
SHELL = $(COMSPEC)
+MKFILES = Makefile
+NULL = nul
#### Start of system configuration section. ####
@@ -26,7 +28,7 @@ iconinc=-I$(icondirs: = -I)
!endif
###############
-VPATH = $(srcdir):$(srcdir)/missing
+VPATH = $(srcdir);$(srcdir)/missing;$(srcdir)/wince
.SUFFIXES: .y .def .lib
!if !defined(CC)
@@ -41,6 +43,7 @@ YACC = byacc
AR = lib -nologo
PURIFY =
AUTOCONF = autoconf
+RM = $(srcdir)\win32\rm.bat
!if !defined(PROCESSOR_ARCHITECTURE)
PROCESSOR_ARCHITECTURE = x86
@@ -66,11 +69,9 @@ DEBUGFLAGS = -Zi
!if !defined(OPTFLAGS)
OPTFLAGS = -w -O2b2xg-
!endif
-!ifndef OS
-OS = mswin32
-!endif
-!ifndef RT
-RT = msvcrt
+!if !defined(OS) || !defined(RT)
+OS = mswince
+RT = $(OS)
!endif
!ifndef RUBY_SO_NAME
@@ -80,7 +81,6 @@ RUBY_SO_NAME = $(RT)-$(RUBY_INSTALL_NAME)$(MAJOR)$(MINOR)
RUBY_PLATFORM = $(ARCH)-$(OS)
!endif
-
!if !defined(prefix)
prefix = /usr
!endif
@@ -90,17 +90,34 @@ exec_prefix = $(prefix)
!if !defined(libdir)
libdir = $(exec_prefix)/lib
!endif
-!if !defined(DESTDIR)
-DESTDIR = $(prefix)
+!if !defined(datadir)
+datadir = $(prefix)/share
+!endif
+!ifndef EXTOUT
+EXTOUT = .ext
+!endif
+!ifndef RIDATADIR
+RIDATADIR = $(DESTDIR)$(datadir)/ri/$(MAJOR).$(MINOR)/system
!endif
+!ifndef RDOCTARGET
+RDOCTARGET = install-doc
+!endif
+
+OUTFLAG = -Fe
!if !defined(CFLAGS)
CFLAGS = $(DEBUGFLAGS) $(OPTFLAGS) $(PROCESSOR_FLAG)
!endif
!if !defined(CPPFLAGS)
-CPPFLAGS = -I. -I$(srcdir) -I$(srcdir)/missing -I$(srcdir)/wince
+CPPFLAGS = -I. -I$(srcdir) -I$(srcdir)/missing -I$(srcdir)/wince \
+ $(CECPUDEF) -DUNDER_CE -D_WIN32_WCE=$(SUBSYSVERSION:.=) \
+ -DFILENAME_MAX=MAX_PATH -DTLS_OUT_OF_INDEXES=0xFFFFFFFF \
+ -DBUFSIZ=512 -D_UNICODE -DUNICODE
+!endif
+!if !defined(LDFLAGS)
+LDFLAGS = -link -incremental:yes -pdb:none -machine:$(MACHINE) -subsystem:$(SUBSYSTEM)
!endif
!if !defined(XLDFLAGS)
-XLDFLAGS =
+XLDFLAGS = -stack:$(STACK) -subsystem:$(SUBSYSTEM)
!endif
!if !defined(RFLAGS)
RFLAGS = -r
@@ -108,22 +125,20 @@ RFLAGS = -r
!if !defined(EXTLIBS)
EXTLIBS =
!endif
-LIBS = coredll.lib winsock.lib $(EXTLIBS)
+LIBS = coredll.lib ceshell.lib winsock.lib $(EXTLIBS)
MISSING = acosh.obj crypt.obj dup2.obj erf.obj hypot.obj \
- isinf.obj isnan.obj strftime.obj win32.obj
-WINCEOBJ= assert.obj direct.obj errno.obj io_wce.obj process_wce.obj \
+ isinf.obj isnan.obj strftime.obj win32.obj \
+ assert.obj direct.obj errno.obj io_wce.obj process_wce.obj \
signal_wce.obj stdio.obj stdlib.obj string_wce.obj \
- time_wce.obj wince.obj winsock2.obj
-WINCESYSOBJ = stat.obj timeb.obj utime.obj
+ time_wce.obj wince.obj winsock2.obj \
+ stat.obj timeb.obj utime.obj
ARFLAGS = -machine:$(MACHINE) -out:
CC = $(CC) -nologo
LD = $(CC)
LDSHARED = $(LD) -LD
-XCFLAGS =
-LDFLAGS = -link -incremental:yes -pdb:none -MACHINE:$(MACHINE) -subsystem:$(SUBSYSTEM)
+XCFLAGS = -DRUBY_EXPORT
DLDFLAGS = $(LDFLAGS) -dll
-XLDFLAGS = -stack:$(STACK) -subsystem:$(SUBSYSTEM)
SOLIBS =
LIBRUBY_LDSHARED = $(LDSHARED)
@@ -131,10 +146,12 @@ LIBRUBY_DLDFLAGS = $(EXTLDFLAGS) -def:$(RUBYDEF)
EXEEXT = .exe
PROGRAM=$(RUBY_INSTALL_NAME)$(EXEEXT)
-WPROGRAM=$(RUBYW_INSTALL_NAME)$(EXEEXT)
RUBYDEF = $(RUBY_SO_NAME).def
-MINIRUBY = .\minirubyce$(EXEEXT)
-MINIRUBY_WIN = .\miniruby$(EXEEXT)
+MINIRUBY = $(RUBY) -I$(MAKEDIR) -rfake
+RUNRUBY = $(MINIRUBY) "$(srcdir)/runruby.rb" --extout="$(EXTOUT)" --
+!ifndef RUBY
+RUBY = ruby
+!endif
!if !defined(STACK)
STACK = 0x200000,0x10000
@@ -148,64 +165,27 @@ LIBRUBY_SO = $(RUBY_SO_NAME).dll
LIBRUBY = $(RUBY_SO_NAME).lib
LIBRUBYARG = $(LIBRUBY)
+PREP = fake.rb
+
+!if !defined(EXTSTATIC)
+EXTSTATIC =
+!endif
+
+OBJEXT = obj
+
EXTOBJS =
+DLDOBJS =
-MAINOBJ = main.obj
-WINMAINOBJ = wincemain.obj
-
-OBJS = array.obj \
- bignum.obj \
- class.obj \
- compar.obj \
- dir.obj \
- dln.obj \
- enum.obj \
- error.obj \
- eval.obj \
- file.obj \
- gc.obj \
- hash.obj \
- inits.obj \
- io.obj \
- marshal.obj \
- math.obj \
- numeric.obj \
- object.obj \
- pack.obj \
- parse.obj \
- prec.obj \
- process.obj \
- random.obj \
- range.obj \
- re.obj \
- regex.obj \
- ruby.obj \
- signal.obj \
- sprintf.obj \
- st.obj \
- string.obj \
- struct.obj \
- time.obj \
- util.obj \
- variable.obj \
- version.obj \
- $(MISSING) \
- $(WINCEOBJ) \
- $(WINCESYSOBJ)
-
-all: ext minirubyce$(EXEEXT) rbconfig.rb \
- $(LIBRUBY) $(MISCLIBS)
- @$(MINIRUBY_WIN) $(srcdir)/ext/extmk.rb --extstatic=$(EXTSTATIC) --make "$(MAKE)" --make-flags "-$(MFLAGS)$(MAKEFLAGS)"
-
-ext:
- @mkdir $@
+WINMAINOBJ = wincemain.$(OBJEXT)
+all: $(srcdir)/wince/Makefile.sub $(srcdir)/common.mk
ruby: $(PROGRAM)
-rubyw: $(WPROGRAM)
-lib: $(LIBRUBY)
-dll: $(LIBRUBY_SO)
-config: config.h config.status
+CONFIG_H = ./.config.h.time
+
+config: config.status
+
+config.status: $(CONFIG_H)
BANG = !
@@ -213,8 +193,9 @@ BANG = !
!include config.h
!endif
-config.h:
- @echo Creating <<$@
+$(CONFIG_H): $(MKFILES) $(srcdir)/wince/Makefile.sub
+ @echo Creating config.h
+ @$(srcdir:/=\)\win32\ifchange.bat config.h <<
#define STDC_HEADERS 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_STAT_H 1
@@ -286,7 +267,6 @@ config.h:
#define NEED_IO_SEEK_BETWEEN_RW 1
#define DEFAULT_KCODE KCODE_NONE
#define DLEXT ".so"
-#define DLEXT2 ".dll"
#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)"
@@ -320,12 +300,15 @@ $(BANG)endif
#define ispunct(c) ( !(isalnum(c)||isspace(c))?1:0 )
#define isxdigit(c) ( ((c>=0&&c<=9)||(c>='A'&&c<='F')||(c>='a'&&c<='f'))?1:0 )
#endif
-<<KEEP
+<<
+ @exit > $(@:/=\)
-config.status: Makefile $(srcdir)/wince/Makefile.sub
- @echo Creating <<$@
+config.status: $(MKFILES) $(srcdir)/wince/Makefile.sub $(srcdir)/common.mk
+ @echo Creating $@
+ @exit <<$@
# Generated automatically by Makefile.sub.
s,@SHELL@,$$(COMSPEC),;t t
+s,@PATH_SEPARATOR@,;,;t t
s,@CFLAGS@,$(CFLAGS),;t t
s,@CPPFLAGS@,$(CPPFLAGS),;t t
s,@CXXFLAGS@,$(CXXFLAGS),;t t
@@ -333,7 +316,7 @@ s,@FFLAGS@,$(FFLAGS),;t t
s,@LDFLAGS@,,;t t
s,@LIBS@,$(LIBS),;t t
s,@exec_prefix@,$${prefix},;t t
-s,@prefix@,,;t t
+s,@prefix@,$(prefix),;t t
s,@program_transform_name@,s,,,,;t t
s,@bindir@,$${exec_prefix}/bin,;t t
s,@sbindir@,$${exec_prefix}/sbin,;t t
@@ -374,21 +357,25 @@ s,@LIBOBJS@, acosh.obj crypt.obj erf.obj win32.obj isinf.obj isnan.obj,;t t
s,@ALLOCA@,$(ALLOCA),;t t
s,@DEFAULT_KCODE@,$(DEFAULT_KCODE),;t t
s,@EXEEXT@,.exe,;t t
-s,@OBJEXT@,obj,;t t
+s,@OBJEXT@,$(OBJEXT),;t t
s,@XCFLAGS@,$(XCFLAGS),;t t
s,@XLDFLAGS@,$(XLDFLAGS),;t t
-s,@DLDFLAGS@,$(DLDFLAGS) $$(LIBPATH) -def:$$(DEFFILE),;t t
+s,@DLDFLAGS@,$(DLDFLAGS) $$(LIBPATH) -def:$$(DEFFILE) -implib:$$(*F:.so=)-$$(arch).lib -pdb:$$(*F:.so=)-$$(arch).pdb,;t t
s,@ARCH_FLAG@,$(ARCH_FLAG),;t t
s,@STATIC@,$(STATIC),;t t
-s,@CCDLFLAGS@,-DIMPORT,;t t
+s,@CCDLFLAGS@,,;t t
s,@LDSHARED@,$(LDSHARED),;t t
s,@DLEXT@,so,;t t
-s,@DLEXT2@,dll,;t t
s,@LIBEXT@,lib,;t t
s,@STRIP@,$(STRIP),;t t
s,@EXTSTATIC@,$(EXTSTATIC),;t t
s,@setup@,Setup,;t t
s,@MINIRUBY@,$(MINIRUBY),;t t
+s,@PREP@,miniruby$(EXEEXT),;t t
+s,@RUNRUBY@,$(RUNRUBY),;t t
+s,@EXTOUT@,$(EXTOUT),;t t
+s,@ARCHFILE@,,;t t
+s,@RDOCTARGET@,,;t t
s,@LIBRUBY_LDSHARED@,$(LIBRUBY_LDSHARED),;t t
s,@LIBRUBY_DLDFLAGS@,$(LIBRUBY_DLDFLAGS),;t t
s,@RUBY_INSTALL_NAME@,$(RUBY_INSTALL_NAME),;t t
@@ -405,7 +392,7 @@ s,@LIBRUBYARG_SHARED@,$$(LIBRUBY),;t t
s,@SOLIBS@,$(SOLIBS),;t t
s,@DLDLIBS@,$(DLDLIBS),;t t
s,@ENABLE_SHARED@,yes,;t t
-s,@OUTFLAG@,-Fe,;t t
+s,@OUTFLAG@,$(OUTFLAG),;t t
s,@CPPOUTFILE@,-P,;t t
s,@LIBPATHFLAG@, -libpath:"%s",;t t
s,@RPATHFLAG@,,;t t
@@ -413,7 +400,8 @@ s,@LIBARG@,%s.lib,;t t
s,@LINK_SO@,$$(LDSHARED) -Fe$$(@) $$(OBJS) $$(LIBS) $$(LOCAL_LIBS) $$(DLDFLAGS),;t t
s,@COMPILE_C@,$$(CC) $$(CFLAGS) $$(CPPFLAGS) -c -Tc$$(<:\=/),;t t
s,@COMPILE_CXX@,$$(CXX) $$(CXXFLAGS) $$(CPPFLAGS) -c -Tp$$(<:\=/),;t t
-s,@COMPILE_RULES@,{$$(srcdir)}.%s{}.%s: .%s.%s:,;t t
+s,@COMPILE_RULES@,{$$(srcdir)}.%s{}.%s: {$$(topdir)}.%s{}.%s: {$$(hdrdir)}.%s{}.%s: .%s.%s:,;t t
+s,@RULE_SUBST@,{.;$$(srcdir);$$(topdir);$$(hdrdir)}%s,;t t
s,@TRY_LINK@,$$(CC) -Feconftest $$(INCFLAGS) -I$$(hdrdir) $$(CPPFLAGS) $$(CFLAGS) $$(src) $$(LOCAL_LIBS) $$(LIBS) -link $$(LDFLAGS) $$(LIBPATH) $$(XLDFLAGS),;t t
s,@COMMON_LIBS@,coredll winsock,;t t
s,@COMMON_MACROS@,WIN32_LEAN_AND_MEAN;t t
@@ -426,127 +414,75 @@ s,@configure_args@,--with-make-prog=nmake --enable-shared $(configure_args),;t t
s,@configure_input@,$$configure_input,;t t
s,@srcdir@,$(srcdir),;t t
s,@top_srcdir@,$(srcdir),;t t
-s,@RUBY_PLATFORM@,$(RUBY_PLATFORM),;t t
<<KEEP
-minirubyce$(EXEEXT): $(OBJS) $(MAINOBJ) $(WINMAINOBJ) dmyext.obj
- @echo. $(LIBS)
- $(PURIFY) $(CC) $(MAINOBJ) $(WINMAINOBJ) dmyext.obj $(OBJS) $(LIBS) -Fe$@ $(LDFLAGS)
-
$(PROGRAM): $(MAINOBJ) $(WINMAINOBJ) $(LIBRUBY_SO) $*.res
$(PURIFY) $(CC) $(MAINOBJ) $(WINMAINOBJ) $*.res \
-Fe$@ $(LIBRUBYARG) $(LDFLAGS) $(XLDFLAGS)
-$(WPROGRAM): $(MAINOBJ) $(WINMAINOBJ) $(LIBRUBY_SO) $*.res
- $(PURIFY) $(CC) $(MAINOBJ) $(WINMAINOBJ) $*.res \
- -Fe$@ $(LIBRUBYARG) $(LDFLAGS) $(XLDFLAGS)
-
-$(LIBRUBY_A): $(OBJS) dmyext.obj
- $(AR) $(ARFLAGS)$@ $(OBJS) dmyext.obj
+$(LIBRUBY_A): $(OBJS) $(DMYEXT)
+ $(AR) $(ARFLAGS)$@ $(OBJS) $(DMYEXT)
$(LIBRUBY): $(RUBYDEF)
$(AR) $(ARFLAGS)$@ -def:$(RUBYDEF)
-$(LIBRUBY_SO): $(LIBRUBY_A) $(EXTOBJS) $(RUBYDEF) $*.res
- @echo. $(EXTOBJS)
- $(LIBRUBY_LDSHARED) $(MAINOBJ) $(EXTOBJS) $(LIBRUBY_A) $*.res $(LIBS) \
- -Fe$@ $(LDFLAGS) $(LIBRUBY_DLDFLAGS)
+$(LIBRUBY_SO): $(LIBRUBY_A) $(DLDOBJS) $(RUBYDEF) $(RUBY_SO_NAME).res
+ @echo. $(DLDOBJS)
+ $(LDSHARED) $(MAINOBJ) $(DLDOBJS) $(LIBRUBY_A) \
+ $(RUBY_SO_NAME).res $(LIBS) -Fe$@ $(LDFLAGS) \
+ $(LIBRUBY_DLDFLAGS)
-$(RUBYDEF): $(LIBRUBY_A) minirubyce$(EXEEXT)
- $(MINIRUBY_WIN) $(srcdir)/wince/mkexports.rb \
- -output=$@ $(LIBRUBY_A) $(ARCH)
+$(RUBYDEF): $(LIBRUBY_A) $(PREP)
+ $(MINIRUBY) $(srcdir)/win32/mkexports.rb \
+ -output=$@ -arch=$(ARCH) $(LIBRUBY_A)
{$(srcdir)/wince}.def.lib:
$(AR) $(ARFLAGS)$@ -def:$<
-install: rbconfig.rb
- $(MINIRUBY_WIN) $(srcdir)/instruby.rb \
- "--dest-dir=$(DESTDIR)" "--make=nmake"
- $(MINIRUBY_WIN) $(srcdir)/ext/extmk.rb \
- --make "$(MAKE)" --make-flags "-$(MFLAGS)$(MAKEFLAGS) DESTDIR=$(DESTDIR)" install
-
-clean: clean-ext clean-local
-
-clean-local:
- @if exist $(LIBRUBY_A) del $(LIBRUBY_A)
- @if exist $(MAINOBJ) del $(MAINOBJ)
- @if exist rbconfig.rb del rbconfig.rb
- @if exist ext\extinit.c del ext\extinit.c
- @if exist ext\extinit.obj del ext\extinit.obj
- @if exist ext\vc*.pdb del ext\vc*.pdb
- @if exist *.obj del *.obj
- @if exist *.res del *.res
-
-clean-ext:
- @-$(MINIRUBY_WIN) $(srcdir)/ext/extmk.rb --make "$(MAKE)" --make-flags "-$(MFLAGS)$(MAKEFLAGS)" clean
-
-distclean: distclean-ext distclean-local
-
-distclean-local: clean-local
- @if exist Makefile del Makefile
- @if exist config.h del config.h
- @if exist ext\config.cache del ext\config.cache
- @if exist config.cache del config.cache
- @if exist config.log del config.log
- @if exist config.status del config.status
- @if exist *~ del *~
- @if exist *.bak del *.bak
- @if exist *.stackdump del *.stackdump
- @if exist *.core del *.core
- @if exist gmon.out del gmon.out
- @if exist y.tab.c del y.tab.c
- @if exist y.output del y.output
- @if exist *.map del *.map
- @if exist *.pdb del *.pdb
- @if exist *.ilk del *.ilk
- @if exist *.exp del *.exp
- @if exist $(RUBYDEF) del $(RUBYDEF)
- @if exist $(RUBY_INSTALL_NAME).rc del $(RUBY_INSTALL_NAME).rc
- @if exist $(RUBYW_INSTALL_NAME).rc del $(RUBYW_INSTALL_NAME).rc
- @if exist $(RUBY_SO_NAME).rc del $(RUBY_SO_NAME).rc
- @if exist $(PROGRAM) del $(PROGRAM)
- @if exist $(WPROGRAM) del $(WPROGRAM)
- @if exist $(LIBRUBY_SO) del $(LIBRUBY_SO)
- @if exist $(LIBRUBY) del $(LIBRUBY)
- @if exist ext\nul if not exist ext\* rmdir ext
- @if exist minirubyce$(EXEEXT) del minirubyce$(EXEEXT)
-
-distclean-ext:
- @-$(MINIRUBY_WIN) $(srcdir)/ext/extmk.rb --make "$(MAKE)" --make-flags "-$(MFLAGS)$(MAKEFLAGS)" distclean
-
-realclean: distclean
- @if exist parse.c del parse.c
- @if exist lex.c del lex.c
-
-test: miniruby$(EXEEXT) rbconfig.rb $(PROGRAM) NUL
- @miniruby$(EXEEXT) $(srcdir)/rubytest.rb
-
-rbconfig.rb: miniruby$(EXEEXT) config.status
- $(MINIRUBY_WIN) $(srcdir)/mkconfig.rb -srcdir=$(srcdir) \
- -install_name=$(RUBY_INSTALL_NAME) \
- -so_name=$(RUBY_SO_NAME) rbconfig.rb
- $(MINIRUBY_WIN) $(srcdir)/wince/mkconfig_wce.rb rbconfig.rb
-
-$(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc: rbconfig.rb
- $(MINIRUBY_WIN) $(srcdir)/win32/resource.rb \
+clean-local::
+ @$(RM) ext\extinit.c ext\extinit.$(OBJEXT) ext\vc*.pdb
+ @$(RM) $(RUBY_INSTALL_NAME).res $(RUBYW_INSTALL_NAME).res $(RUBY_SO_NAME).res
+
+distclean-local::
+ @$(RM) ext\config.cache $(RBCONFIG:/=\)
+ @$(RM) *.map *.pdb *.ilk *.exp $(RUBYDEF)
+ @$(RM) $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc
+
+$(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc: $(RBCONFIG)
+ @$(MINIRUBY) $(srcdir)/win32/resource.rb \
-ruby_name=$(RUBY_INSTALL_NAME) \
-rubyw_name=$(RUBYW_INSTALL_NAME) \
-so_name=$(RUBY_SO_NAME) \
-wce_ver=$(SUBSYSVERSION) \
. $(icondirs) $(srcdir)/wince
+fake.rb: $(MKFILES)
+ @echo Creating <<$@
+class Object
+ CROSS_COMPILING = RUBY_PLATFORM
+ remove_const :RUBY_PLATFORM
+ remove_const :RUBY_VERSION
+ RUBY_PLATFORM = "$(ARCH)"
+ RUBY_VERSION = "$(MAJOR).$(MINOR).$(TEENY)"
+end
+class File
+ remove_const :ALT_SEPARATOR
+ ALT_SEPARATOR = "\\"
+end
+<<KEEP
+
{$(srcdir)/missing}.c.obj:
- $(CC) $(CFLAGS) $(XCFLAGS) -I. -I$(<D) $(CPPFLAGS) -c -Tc$(<:\=/)
+ $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -c -Tc$(<:\=/)
{$(srcdir)/win32}.c.obj:
- $(CC) $(CFLAGS) $(XCFLAGS) -I. -I$(<D) $(CPPFLAGS) -c -Tc$(<:\=/)
+ $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -c -Tc$(<:\=/)
{$(srcdir)/wince}.c.obj:
- $(CC) $(CFLAGS) $(XCFLAGS) -I. -I$(<D) $(CPPFLAGS) -c -Tc$(<:\=/)
+ $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -c -Tc$(<:\=/)
{$(srcdir)/wince/sys}.c.obj:
- $(CC) $(CFLAGS) $(XCFLAGS) -I. -I$(<D) $(CPPFLAGS) -c -Tc$(<:\=/)
+ $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -c -Tc$(<:\=/)
{$(srcdir)}.c.obj:
- $(CC) $(CFLAGS) $(XCFLAGS) -I. -I$(<D) $(CPPFLAGS) -c -Tc$(<:\=/)
+ $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -c -Tc$(<:\=/)
.c.obj:
- $(CC) $(CFLAGS) $(XCFLAGS) -I. $(CPPFLAGS) -c -Tc$(<:\=/)
+ $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -c -Tc$(<:\=/)
.rc.res:
$(RC) -I. -I$(<D) $(iconinc) -I$(srcdir)/win32 $(RFLAGS) -fo$@ $(<:\=/)
@@ -556,164 +492,11 @@ $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc: rbconfig.rb
sed -e "s!^ *extern char \*getenv();!/* & */!;s/^\(#.*\)y\.tab/\1parse/" y.tab.c > $@
@del y.tab.c
-{$(srcdir)}parse.c: parse.y
+!include $(srcdir)/common.mk
+
+$(OBJS): {$(srcdir)}win32/win32.h
+
+dir.$(OBJEXT): {$(srcdir)}win32/dir.h
ext/extinit.obj: ext/extinit.c $(SETUP)
$(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -Fo$@ -c ext/extinit.c
-
-acosh.obj: {$(srcdir)}missing/acosh.c
-alloca.obj: {$(srcdir)}missing/alloca.c
-crypt.obj: {$(srcdir)}missing/crypt.c
-dup2.obj: {$(srcdir)}missing/dup2.c
-erf.obj: {$(srcdir)}missing/erf.c
-finite.obj: {$(srcdir)}missing/finite.c
-flock.obj: {$(srcdir)}missing/flock.c
-isinf.obj: {$(srcdir)}missing/isinf.c
-isnan.obj: {$(srcdir)}missing/isnan.c
-memcmp.obj: {$(srcdir)}missing/memcmp.c
-memmove.obj: {$(srcdir)}missing/memmove.c
-mkdir.obj: {$(srcdir)}missing/mkdir.c
-vsnprintf.obj: {$(srcdir)}missing/vsnprintf.c
-strcasecmp.obj: {$(srcdir)}missing/strcasecmp.c
-strncasecmp.obj: {$(srcdir)}missing/strncasecmp.c
-strchr.obj: {$(srcdir)}missing/strchr.c
-strdup.obj: {$(srcdir)}missing/strdup.c
-strerror.obj: {$(srcdir)}missing/strerror.c
-strftime.obj: {$(srcdir)}missing/strftime.c
-strstr.obj: {$(srcdir)}missing/strstr.c
-strtod.obj: {$(srcdir)}missing/strtod.c
-strtol.obj: {$(srcdir)}missing/strtol.c
-strtoul.obj: {$(srcdir)}missing/strtoul.c
-nt.obj: {$(srcdir)}missing/nt.c
-x68.obj: {$(srcdir)}missing/x68.c
-os2.obj: {$(srcdir)}missing/os2.c
-dl_os2.obj: {$(srcdir)}missing/dl_os2.c
-
-# when I use -I., there is confliction at "OpenFile"
-# so, set . into environment varible "include"
-win32.obj: {$(srcdir)}win32/win32.c
-
-# Prevent GNU make v3 from overflowing arg limit on SysV.
-.NOEXPORT:
-###
-array.obj: {$(srcdir)}array.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}util.h {$(srcdir)}st.h {$(srcdir)}/win32/win32.h
-bignum.obj: {$(srcdir)}bignum.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}/win32/win32.h
-class.obj: {$(srcdir)}class.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}rubysig.h {$(srcdir)}node.h {$(srcdir)}st.h \
- {$(srcdir)}/win32/win32.h
-compar.obj: {$(srcdir)}compar.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}/win32/win32.h
-dir.obj: {$(srcdir)}dir.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}util.h {$(srcdir)}/win32/win32.h
-dln.obj: {$(srcdir)}dln.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}dln.h {$(srcdir)}/win32/win32.h
-dmyext.obj: {$(srcdir)}dmyext.c
-enum.obj: {$(srcdir)}enum.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}node.h {$(srcdir)}util.h {$(srcdir)}/win32/win32.h
-error.obj: {$(srcdir)}error.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}env.h {$(srcdir)}st.h {$(srcdir)}/win32/win32.h
-eval.obj: {$(srcdir)}eval.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}node.h {$(srcdir)}env.h {$(srcdir)}util.h \
- {$(srcdir)}rubysig.h {$(srcdir)}st.h {$(srcdir)}dln.h \
- {$(srcdir)}/win32/win32.h
-file.obj: {$(srcdir)}file.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}rubyio.h {$(srcdir)}rubysig.h {$(srcdir)}util.h \
- {$(srcdir)}dln.h {$(srcdir)}/win32/win32.h
-gc.obj: {$(srcdir)}gc.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}rubysig.h {$(srcdir)}st.h {$(srcdir)}node.h \
- {$(srcdir)}env.h {$(srcdir)}re.h {$(srcdir)}regex.h \
- {$(srcdir)}/win32/win32.h
-hash.obj: {$(srcdir)}hash.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}st.h {$(srcdir)}util.h {$(srcdir)}rubysig.h \
- {$(srcdir)}/win32/win32.h
-inits.obj: {$(srcdir)}inits.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}/win32/win32.h
-io.obj: {$(srcdir)}io.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}rubyio.h {$(srcdir)}rubysig.h {$(srcdir)}env.h \
- {$(srcdir)}util.h {$(srcdir)}/win32/win32.h
-main.obj: {$(srcdir)}main.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}/win32/win32.h
-marshal.obj: {$(srcdir)}marshal.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}rubyio.h {$(srcdir)}st.h {$(srcdir)}util.h \
- {$(srcdir)}/win32/win32.h
-math.obj: {$(srcdir)}math.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}/win32/win32.h
-numeric.obj: {$(srcdir)}numeric.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}/win32/win32.h
-object.obj: {$(srcdir)}object.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}st.h {$(srcdir)}util.h {$(srcdir)}/win32/win32.h
-pack.obj: {$(srcdir)}pack.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}/win32/win32.h
-parse.obj: {$(srcdir)}parse.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}env.h {$(srcdir)}node.h {$(srcdir)}st.h {$(srcdir)}regex.h \
- {$(srcdir)}util.h {$(srcdir)}lex.c {$(srcdir)}/win32/win32.h
-prec.obj: {$(srcdir)}prec.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}/win32/win32.h
-process.obj: {$(srcdir)}process.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}rubysig.h {$(srcdir)}st.h {$(srcdir)}/win32/win32.h
-random.obj: {$(srcdir)}random.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}/win32/win32.h
-range.obj: {$(srcdir)}range.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}/win32/win32.h
-re.obj: {$(srcdir)}re.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}re.h {$(srcdir)}regex.h {$(srcdir)}/win32/win32.h
-regex.obj: {$(srcdir)}regex.c config.h {$(srcdir)}regex.h \
- {$(srcdir)}/win32/win32.h
-ruby.obj: {$(srcdir)}ruby.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}dln.h {$(srcdir)}node.h {$(srcdir)}util.h \
- {$(srcdir)}/win32/win32.h
-signal.obj: {$(srcdir)}signal.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}rubysig.h {$(srcdir)}/win32/win32.h
-sprintf.obj: {$(srcdir)}sprintf.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}/win32/win32.h
-st.obj: {$(srcdir)}st.c config.h {$(srcdir)}st.h
-string.obj: {$(srcdir)}string.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}re.h {$(srcdir)}regex.h {$(srcdir)}/win32/win32.h
-struct.obj: {$(srcdir)}struct.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}/win32/win32.h
-time.obj: {$(srcdir)}time.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}/win32/win32.h
-util.obj: {$(srcdir)}util.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}util.h {$(srcdir)}/win32/win32.h
-variable.obj: {$(srcdir)}variable.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}env.h {$(srcdir)}node.h {$(srcdir)}st.h {$(srcdir)}util.h \
- {$(srcdir)}/win32/win32.h
-version.obj: {$(srcdir)}version.c {$(srcdir)}ruby.h config.h \
- {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \
- {$(srcdir)}version.h {$(srcdir)}/win32/win32.h
diff --git a/wince/configure.bat b/wince/configure.bat
index 5e7b1b6..3ec2757 100644
--- a/wince/configure.bat
+++ b/wince/configure.bat
@@ -1,59 +1,96 @@
-@echo off
-::: Don't set environment variable in batch file other than autoexec.bat
-::: to avoid "Out of environment space" problem on Windows 95/98.
-::: set TMPMAKE=~tmp~.mak
-
-echo> ~tmp~.mak ####
-echo>> ~tmp~.mak conf = %0
-echo>> ~tmp~.mak $(conf:\=/): nul
-echo>> ~tmp~.mak @del ~tmp~.mak
-echo>> ~tmp~.mak @-$(MAKE) -l$(MAKEFLAGS) -f $(@D)/setup.mak \
-:loop
-if "%1" == "" goto :end
-if "%1" == "--srcdir" goto :srcdir
-if "%1" == "srcdir" goto :srcdir
-if "%1" == "--target" goto :target
-if "%1" == "target" goto :target
-if "%1" == "--program-suffix" goto :suffix
-if "%1" == "--program-name" goto :progname
-if "%1" == "CC" goto :define
-if "%1" == "EMBEDDED_TOOLS_DIR" goto :define
-if "%1" == "CE_TOOLS_DIR" goto :define
-if "%1" == "EMBEDDED_TOOLS4_DIR" goto :define
-if "%1" == "CE_TOOLS4_DIR" goto :define
- echo>> ~tmp~.mak "%1" \
- shift
-goto :loop
-:srcdir
- echo>> ~tmp~.mak "srcdir=%2" \
- shift
- shift
-goto :loop
-:suffix
- echo>> ~tmp~.mak "RUBY_SUFFIX=%2" \
- shift
- shift
-goto :loop
-:installname
- echo>> ~tmp~.mak "RUBY_INSTALL_NAME=%2" \
- shift
- shift
-goto :loop
-:soname
- echo>> ~tmp~.mak "RUBY_SO_NAME=%2" \
- shift
- shift
-goto :loop
-:define
- echo>> ~tmp~.mak "%1=%2" \
- shift
- shift
-goto :loop
-:target
- echo>> ~tmp~.mak "%2" \
- shift
- shift
-goto :loop
-:end
-echo>> ~tmp~.mak WIN32DIR=$(@D)
-nmake -alf ~tmp~.mak
+@echo off
+::: Don't set environment variable in batch file other than autoexec.bat
+::: to avoid "Out of environment space" problem on Windows 95/98.
+::: set TMPMAKE=~tmp~.mak
+
+echo> ~tmp~.mak ####
+echo>> ~tmp~.mak conf = %0
+echo>> ~tmp~.mak $(conf:\=/): nul
+echo>> ~tmp~.mak @del ~tmp~.mak
+echo>> ~tmp~.mak @-$(MAKE) -l$(MAKEFLAGS) -f $(@D)/setup.mak \
+:loop
+if "%1" == "" goto :end
+if "%1" == "--prefix" goto :prefix
+if "%1" == "--srcdir" goto :srcdir
+if "%1" == "srcdir" goto :srcdir
+if "%1" == "--target" goto :target
+if "%1" == "target" goto :target
+if "%1" == "--with-static-linked-ext" goto :extstatic
+if "%1" == "--program-suffix" goto :suffix
+if "%1" == "--program-name" goto :progname
+if "%1" == "--enable-install-doc" goto :enable-rdoc
+if "%1" == "--disable-install-doc" goto :disable-rdoc
+if "%1" == "-h" goto :help
+if "%1" == "--help" goto :help
+if "%1" == "CC" goto :define
+if "%1" == "EMBEDDED_TOOLS_DIR" goto :define
+if "%1" == "CE_TOOLS_DIR" goto :define
+if "%1" == "EMBEDDED_TOOLS4_DIR" goto :define
+if "%1" == "CE_TOOLS4_DIR" goto :define
+ echo>> ~tmp~.mak "%1" \
+ shift
+goto :loop
+:srcdir
+ echo>> ~tmp~.mak "srcdir=%2" \
+ shift
+ shift
+goto :loop
+:prefix
+ echo>> ~tmp~.mak "prefix=%2" \
+ shift
+ shift
+goto :loop
+:suffix
+ echo>> ~tmp~.mak "RUBY_SUFFIX=%2" \
+ shift
+ shift
+goto :loop
+:installname
+ echo>> ~tmp~.mak "RUBY_INSTALL_NAME=%2" \
+ shift
+ shift
+goto :loop
+:soname
+ echo>> ~tmp~.mak "RUBY_SO_NAME=%2" \
+ shift
+ shift
+goto :loop
+:define
+ echo>> ~tmp~.mak "%1=%2" \
+ shift
+ shift
+goto :loop
+:target
+ echo>> ~tmp~.mak "%2" \
+ shift
+ shift
+goto :loop
+:extstatic
+ echo>> ~tmp~.mak "EXTSTATIC=static" \
+ shift
+goto :loop
+:enable-rdoc
+ echo>> ~tmp~.mak "RDOCTARGET=install-doc" \
+ shift
+goto :loop
+:disable-rdoc
+ echo>> ~tmp~.mak "RDOCTARGET=install-nodoc" \
+ shift
+goto :loop
+:help
+ echo Configuration:
+ echo --help display this help
+ echo --srcdir=DIR find the sources in DIR [configure dir or `..']
+ echo Installation directories:
+ echo --prefix=PREFIX install files in PREFIX [/usr]
+ echo System types:
+ echo --target=TARGET configure for TARGET [i386-mswin32]
+ echo Optional Package:
+ echo --with-static-linked-ext link external modules statically
+ echo --enable-install-doc install rdoc indexes during install
+ del ~tmp~.mak
+goto :exit
+:end
+echo>> ~tmp~.mak WIN32DIR=$(@D)
+nmake -alf ~tmp~.mak
+:exit