Makefile.sub   [plain text]


# -*- makefile -*-

SHELL = $(COMSPEC)

#### Start of system configuration section. ####

## variables may be overridden by $(compile_dir)/Makefile
!ifndef srcdir
srcdir = ..
!endif
!ifndef RUBY_INSTALL_NAME
RUBY_INSTALL_NAME = ruby
!endif
!if !defined(RUBYW_INSTALL_NAME) || "$(RUBYW_INSTALL_NAME)" == "$(RUBY_INSTALL_NAME)"
RUBYW_INSTALL_NAME = $(RUBY_INSTALL_NAME:ruby=rubyw)
!endif
!if "$(RUBYW_INSTALL_NAME)" == "$(RUBY_INSTALL_NAME)"
RUBYW_INSTALL_NAME = $(RUBY_INSTALL_NAME)w
!endif
!if !defined(icondirs) && defined(ICONDIRS)
icondirs=$(ICONDIRS)
!endif
!if defined(icondirs)
icondirs=$(icondirs:\=/)
iconinc=-I$(icondirs: = -I)
!endif
###############

VPATH = $(srcdir):$(srcdir)/missing
.SUFFIXES: .y .def .lib

!if !defined(CC)
CC = cl
!endif
!if !defined(CPP)
CPP = $(CC) -E
!endif
!if !defined(YACC)
YACC = byacc
!endif
AR = lib -nologo
PURIFY =
AUTOCONF = autoconf

!if !defined(PROCESSOR_ARCHITECTURE)
PROCESSOR_ARCHITECTURE = x86
!endif
MACHINE = $(PROCESSOR_ARCHITECTURE)
!if "$(PROCESSOR_ARCHITECTURE)" == "x86"
!if !defined(PROCESSOR_LEVEL)
PROCESSOR_LEVEL = 5
!endif
!if 6 < $(PROCESSOR_LEVEL)
PROCESSOR_LEVEL = 6
!endif
PROCESSOR_FLAG = -G$(PROCESSOR_LEVEL)
CPU = i$(PROCESSOR_LEVEL)86
ARCH = i386
!else
CPU = $(PROCESSOR_ARCHITECTURE)
ARCH = $(PROCESSOR_ARCHITECTURE)
!endif
!if !defined(DEBUGFLAGS)
DEBUGFLAGS = -Zi
!endif
!if !defined(OPTFLAGS)
OPTFLAGS = -w -O2b2xg-
!endif
!ifndef OS
OS = mswin32
!endif
!ifndef RT
RT = msvcrt
!endif

!ifndef RUBY_SO_NAME
RUBY_SO_NAME = $(RT)-$(RUBY_INSTALL_NAME)$(MAJOR)$(MINOR)
!endif
!ifndef RUBY_PLATFORM
RUBY_PLATFORM = $(ARCH)-$(OS)
!endif


!if !defined(prefix)
prefix = /usr
!endif
!if !defined(exec_prefix)
exec_prefix = $(prefix)
!endif
!if !defined(libdir)
libdir = $(exec_prefix)/lib
!endif
!if !defined(DESTDIR)
DESTDIR = $(prefix)
!endif
!if !defined(CFLAGS)
CFLAGS = $(DEBUGFLAGS) $(OPTFLAGS) $(PROCESSOR_FLAG)
!endif
!if !defined(CPPFLAGS)
CPPFLAGS = -I. -I$(srcdir) -I$(srcdir)/missing -I$(srcdir)/wince
!endif
!if !defined(XLDFLAGS)
XLDFLAGS = 
!endif
!if !defined(RFLAGS)
RFLAGS = -r
!endif
!if !defined(EXTLIBS)
EXTLIBS =
!endif
LIBS = coredll.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 \
          signal_wce.obj stdio.obj stdlib.obj string_wce.obj \
          time_wce.obj wince.obj winsock2.obj
WINCESYSOBJ = 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)
DLDFLAGS = $(LDFLAGS) -dll
XLDFLAGS = -stack:$(STACK) -subsystem:$(SUBSYSTEM)
SOLIBS = 

LIBRUBY_LDSHARED = $(LDSHARED)
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)

!if !defined(STACK)
STACK = 0x200000,0x10000
!endif
ORGLIBPATH = $(LIB)

#### End of system configuration section. ####

LIBRUBY_A     = $(RUBY_SO_NAME)-static.lib
LIBRUBY_SO    = $(RUBY_SO_NAME).dll
LIBRUBY       = $(RUBY_SO_NAME).lib
LIBRUBYARG    = $(LIBRUBY)

EXTOBJS       = 

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 $@

ruby: $(PROGRAM)
rubyw: $(WPROGRAM)
lib: $(LIBRUBY)
dll: $(LIBRUBY_SO)

config: config.h config.status

BANG = !

!if exist(config.h)
!include config.h
!endif

config.h:
	@echo Creating <<$@
#define STDC_HEADERS 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_MEMORY_H 1
#define HAVE_OFF_T 1
#define SIZEOF_INT 4
#define SIZEOF_SHORT 2
#define SIZEOF_LONG 4
#define SIZEOF_LONG_LONG 0
#define SIZEOF___INT64 8
#define SIZEOF_OFF_T 4
#define SIZEOF_VOIDP 4
#define SIZEOF_FLOAT 4
#define SIZEOF_DOUBLE 8
#define SIZEOF_TIME_T 4
#define HAVE_PROTOTYPES 1
#define TOKEN_PASTE(x,y) x##y
#define HAVE_STDARG_PROTOTYPES 1
#if _MSC_VER > 1100
#define NORETURN(x) __declspec(noreturn) x
#endif
#define HAVE_DECL_SYS_NERR 1
#define HAVE_FCNTL_H 1
#define HAVE_SYS_UTIME_H 1
#define HAVE_FLOAT_H 1
#define uid_t int
#define gid_t int
#define HAVE_STRUCT_STAT_ST_RDEV 1
#define HAVE_ST_RDEV 1
#define GETGROUPS_T int
#define RETSIGTYPE void
#define HAVE_MEMCMP 1
#define HAVE_MEMMOVE 1
#define HAVE_MKDIR 1
#define HAVE_STRCASECMP 1
#define HAVE_STRNCASECMP 1
#define HAVE_STRERROR 1
#define HAVE_STRFTIME 1
#define HAVE_STRCHR 1
#define HAVE_STRSTR 1
#define HAVE_STRTOD 1
#define HAVE_STRTOL 1
#define HAVE_STRTOUL 1
#define HAVE_FLOCK 1
#define HAVE_VSNPRINTF 1
#define HAVE_FINITE 1
#define HAVE_HYPOT 1
#define HAVE_FMOD 1
#define HAVE_FREXP 1
#define HAVE_MODF 1
#define HAVE_WAITPID 1
#define HAVE_GETCWD 1
#define HAVE_CHSIZE 0
#define HAVE_TIMES 1
#define HAVE_TELLDIR 1
#define HAVE_SEEKDIR 1
#define HAVE_MKTIME 1
#define HAVE_COSH 1
#define HAVE_SINH 1
#define HAVE_TANH 1
#define HAVE_TZNAME 1
#define HAVE_DAYLIGHT 1
#define SETPGRP_VOID 1
#define RSHIFT(x,y) ((x)>>(int)y)
#define inline __inline
#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)"
#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)"
#define LIBRUBY_SO "$(LIBRUBY_SO)"
#if 0
$(BANG)if "$(RUBY_SO_NAME)"!="$$(RUBY_SO_NAME)" || "$(ARCH)-$(OS)"!="$$(ARCH)-$$(OS)"
config.h: nul
$(BANG)endif
#endif
#define GC_MALLOC_LIMIT 4000000
#define stricmp _stricmp
#define fopen   wce_fopen
#define open	   _open
#define read	   _read
#define write	   _write
#define lseek      _lseek

#if _WIN32_WCE < 300
  #define isascii(c) ( (c>=0x00&&c<=0x7f)?1:0 )
  #define isspace(c) ( ((c>=0x09&&c<=0x0d)||c==0x20)?1:0 )
  #define isdigit(c) ( (c>=0x30&&c<=0x39)?1:0 )
  #define isupper(c) ( (c>='A'&&c<='Z')?1:0 )
  #define isalpha(c) ( ((c>='A'&&c<='Z')||(c>='a'&&c<='z'))?1:0 )
  #define isprint(c) ( (c>=0x20&&c<=0x7e)?1:0 )
  #define isalnum(c) ( (isalpha(c)||isdigit(c))?1:0 )
  #define iscntrl(c) ( ((c>=0x00&&c<=0x1f)||c==0x7f)?1:0 )
  #define islower(c) ( (c>='a'&&c<='z')?1:0 )
  #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

config.status: Makefile $(srcdir)/wince/Makefile.sub
	@echo Creating <<$@
# Generated automatically by Makefile.sub.
s,@SHELL@,$$(COMSPEC),;t t
s,@CFLAGS@,$(CFLAGS),;t t
s,@CPPFLAGS@,$(CPPFLAGS),;t t
s,@CXXFLAGS@,$(CXXFLAGS),;t t
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,@program_transform_name@,s,,,,;t t
s,@bindir@,$${exec_prefix}/bin,;t t
s,@sbindir@,$${exec_prefix}/sbin,;t t
s,@libexecdir@,$${exec_prefix}/libexec,;t t
s,@datadir@,$${prefix}/share,;t t
s,@sysconfdir@,$${prefix}/etc,;t t
s,@sharedstatedir@,/etc,;t t
s,@localstatedir@,/var,;t t
s,@libdir@,$${exec_prefix}/lib,;t t
s,@includedir@,$${prefix}/include,;t t
s,@oldincludedir@,/usr/include,;t t
s,@infodir@,$${prefix}/info,;t t
s,@mandir@,$${prefix}/man,;t t
s,@build@,$(CPU)-pc-$(OS),;t t
s,@build_alias@,$(CPU)-$(OS),;t t
s,@build_cpu@,$(CPU),;t t
s,@build_vendor@,pc,;t t
s,@build_os@,$(OS),;t t
s,@host@,$(CPU)-pc-$(OS),;t t
s,@host_alias@,$(CPU)-$(OS),;t t
s,@host_cpu@,$(CPU),;t t
s,@host_vendor@,pc,;t t
s,@host_os@,$(OS),;t t
s,@target@,$(ARCH)-pc-$(OS),;t t
s,@target_alias@,$(ARCH)-$(OS),;t t
s,@target_cpu@,$(ARCH),;t t
s,@target_vendor@,pc,;t t
s,@target_os@,$(OS),;t t
s,@CC@,$(CC),;t t
s,@CPP@,$(CPP),;t t
s,@YACC@,$(YACC),;t t
s,@RANLIB@,,;t t
s,@AR@,$(AR),;t t
s,@ARFLAGS@,$(ARFLAGS),;t t
s,@LN_S@,$(LN_S),;t t
s,@SET_MAKE@,$(SET_MAKE),;t t
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,@XCFLAGS@,$(XCFLAGS),;t t
s,@XLDFLAGS@,$(XLDFLAGS),;t t
s,@DLDFLAGS@,$(DLDFLAGS) $$(LIBPATH) -def:$$(DEFFILE),;t t
s,@ARCH_FLAG@,$(ARCH_FLAG),;t t
s,@STATIC@,$(STATIC),;t t
s,@CCDLFLAGS@,-DIMPORT,;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,@LIBRUBY_LDSHARED@,$(LIBRUBY_LDSHARED),;t t
s,@LIBRUBY_DLDFLAGS@,$(LIBRUBY_DLDFLAGS),;t t
s,@RUBY_INSTALL_NAME@,$(RUBY_INSTALL_NAME),;t t
s,@rubyw_install_name@,$(RUBYW_INSTALL_NAME),;t t
s,@RUBYW_INSTALL_NAME@,$(RUBYW_INSTALL_NAME),;t t
s,@RUBY_SO_NAME@,$(RUBY_SO_NAME),;t t
s,@LIBRUBY_A@,$$(RUBY_SO_NAME)-static.lib,;t t
s,@LIBRUBY_SO@,$$(RUBY_SO_NAME).dll,;t t
s,@LIBRUBY_ALIASES@,$(LIBRUBY_ALIASES),;t t
s,@LIBRUBY@,$$(RUBY_SO_NAME).lib,;t t
s,@LIBRUBYARG@,$$(LIBRUBYARG_SHARED),;t t
s,@LIBRUBYARG_STATIC@,$$(LIBRUBY_A),;t t
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,@CPPOUTFILE@,-P,;t t
s,@LIBPATHFLAG@, -libpath:"%s",;t t
s,@RPATHFLAG@,,;t t
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,@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
s,@COMMON_HEADERS@,winsock.h windows.h,;t t
s,@EXPORT_PREFIX@, ,;t t
s,@arch@,$(ARCH)-$(OS),;t t
s,@sitearch@,$(ARCH)-$(RT),;t t
s,@sitedir@,$${prefix}/lib/ruby/site_ruby,;t t
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):	$(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)

$(RUBYDEF):	$(LIBRUBY_A) minirubyce$(EXEEXT)
			$(MINIRUBY_WIN) $(srcdir)/wince/mkexports.rb \
              -output=$@ $(LIBRUBY_A) $(ARCH)

{$(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 \
			-ruby_name=$(RUBY_INSTALL_NAME) \
			-rubyw_name=$(RUBYW_INSTALL_NAME) \
			-so_name=$(RUBY_SO_NAME) \
			-wce_ver=$(SUBSYSVERSION) \
			. $(icondirs) $(srcdir)/wince

{$(srcdir)/missing}.c.obj:
	$(CC) $(CFLAGS) $(XCFLAGS) -I. -I$(<D) $(CPPFLAGS) -c -Tc$(<:\=/)
{$(srcdir)/win32}.c.obj:
	$(CC) $(CFLAGS) $(XCFLAGS) -I. -I$(<D) $(CPPFLAGS) -c -Tc$(<:\=/)
{$(srcdir)/wince}.c.obj:
	$(CC) $(CFLAGS) $(XCFLAGS) -I. -I$(<D) $(CPPFLAGS) -c -Tc$(<:\=/)
{$(srcdir)/wince/sys}.c.obj:
	$(CC) $(CFLAGS) $(XCFLAGS) -I. -I$(<D) $(CPPFLAGS) -c -Tc$(<:\=/)
{$(srcdir)}.c.obj:
	$(CC) $(CFLAGS) $(XCFLAGS) -I. -I$(<D) $(CPPFLAGS) -c -Tc$(<:\=/)
.c.obj:
	$(CC) $(CFLAGS) $(XCFLAGS) -I. $(CPPFLAGS) -c -Tc$(<:\=/)

.rc.res:
	$(RC) -I. -I$(<D) $(iconinc) -I$(srcdir)/win32 $(RFLAGS) -fo$@ $(<:\=/)

{$(srcdir)}.y.c:
	$(YACC) $(YFLAGS) $(<:\=/)
	sed -e "s!^ *extern char \*getenv();!/* & */!;s/^\(#.*\)y\.tab/\1parse/" y.tab.c > $@
	@del y.tab.c

{$(srcdir)}parse.c: parse.y

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