diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-03-30 14:45:05 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-03-30 14:45:05 +0000 |
commit | 162b04061133c92f3b703c245eecfd0e0b6c5636 (patch) | |
tree | 30d8208d70ccf3f63aeda44c37ff22814c0de597 | |
parent | d6024d60551f484ad71fc9f4a2935bf880b4c5b5 (diff) |
* 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]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@8217 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | Makefile.in | 312 | ||||
-rw-r--r-- | bcc32/Makefile.sub | 354 | ||||
-rw-r--r-- | bcc32/configure.bat | 62 | ||||
-rw-r--r-- | common.mk | 29 | ||||
-rw-r--r-- | configure.in | 30 | ||||
-rw-r--r-- | cygwin/GNUmakefile.in | 17 | ||||
-rw-r--r-- | ext/extmk.rb | 258 | ||||
-rw-r--r-- | instruby.rb | 64 | ||||
-rw-r--r-- | lib/mkmf.rb | 261 | ||||
-rw-r--r-- | win32/Makefile.sub | 411 | ||||
-rwxr-xr-x | win32/configure.bat | 31 | ||||
-rw-r--r-- | wince/Makefile.sub | 463 | ||||
-rw-r--r-- | wince/configure.bat | 155 |
14 files changed, 1068 insertions, 1386 deletions
@@ -1,3 +1,10 @@ +Wed Mar 30 23:44:50 2005 Nobuyoshi Nakada <[email protected]> + + * 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 <[email protected]> * ext/tcltklib/tcltklib.c: add TclTkIp#_create_console() method to diff --git a/Makefile.in b/Makefile.in index 663ba43111..4837ca24cf 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 cac6128bdb..5fe7937e0c 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 449b6e25b5..91a4028c94 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
@@ -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 cedfe6795e..5ed741ba63 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 da9efaab47..03208df11c 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 a1feb80205..5bbed957c2 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 f56bb2e7ca..98d2714fb6 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 5c4917c944..2222eb5705 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 af1cc55b38..b65d3e4f11 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 97a8945c41..11383e08bd 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 3d5eed13ae..1dfa07de1c 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 5e7b1b6b93..3ec2757294 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
|