mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
45295303ac
Since `.revision.time` recipe needs `$(BASERUBY)`, it should not try to get updated unconditionally, or tarballs fail to build on environments where BASERUBY is not available. All developers who build frequently use GNU make anyway, don't you? git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65695 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
1394 lines
39 KiB
Makefile
1394 lines
39 KiB
Makefile
# -*- makefile -*-
|
|
|
|
SHELL = $(COMSPEC)
|
|
ECHO1 = $(V:1=@:)
|
|
RUNCMD = $(COMSPEC) /c
|
|
MKFILES = Makefile verconf.mk
|
|
NULL = nul
|
|
CHDIR = cd
|
|
PATH_SEPARATOR = ;
|
|
TZ = # skip timezone tests
|
|
PWD = $(MAKEDIR)
|
|
|
|
!ifndef MFLAGS
|
|
MFLAGS=-l
|
|
!endif
|
|
|
|
!ifndef REVISION_FORCE
|
|
!if "$(HAVE_BASERUBY)" == "yes"
|
|
REVISION_FORCE = PHONY
|
|
!endif
|
|
!endif
|
|
|
|
!ifndef CROSS_COMPILING
|
|
CROSS_COMPILING = no
|
|
!endif
|
|
!ifndef LARGEFILE_SUPPORT
|
|
LARGEFILE_SUPPORT = 1
|
|
!endif
|
|
!ifndef win_srcdir
|
|
win_srcdir = $(srcdir)/win32
|
|
!endif
|
|
|
|
!if exist(verconf.mk)
|
|
! include verconf.mk
|
|
!endif
|
|
|
|
#### Start of system configuration section. ####
|
|
|
|
!if defined(pathlist)
|
|
PATH = $(pathlist:;=/bin;)$(PATH)
|
|
INCLUDE = $(pathlist:;=/include;)
|
|
LIB = $(pathlist:;=/lib;)
|
|
!endif
|
|
|
|
## variables may be overridden by $(compile_dir)/Makefile
|
|
!ifndef srcdir
|
|
srcdir = ..
|
|
!endif
|
|
!ifndef RUBY_BASE_NAME
|
|
RUBY_BASE_NAME = ruby
|
|
!endif
|
|
!ifndef RUBY_INSTALL_NAME
|
|
RUBY_INSTALL_NAME = $(PROGRAM_PREFIX)$(RUBY_BASE_NAME)$(PROGRAM_SUFFIX)
|
|
!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
|
|
STUBPROGRAM = rubystub$(EXEEXT)
|
|
!if !defined(icondirs) && defined(ICONDIRS)
|
|
icondirs=$(ICONDIRS)
|
|
!endif
|
|
!if defined(icondirs)
|
|
icondirs=$(icondirs:\=/)
|
|
iconinc=-I$(icondirs: = -I)
|
|
!endif
|
|
!if !defined(MATHN)
|
|
MATHN = yes
|
|
!endif
|
|
###############
|
|
|
|
.SUFFIXES: .def .lib
|
|
|
|
!if !defined(CC)
|
|
CC = cl -nologo
|
|
!endif
|
|
!if !defined(CPP) || "$(CPP)" == "cl"
|
|
CPP = $(CC) -E
|
|
!endif
|
|
!if !defined(YACC)
|
|
YACC = bison
|
|
!endif
|
|
AR = lib -nologo
|
|
PURIFY =
|
|
AUTOCONF = autoconf
|
|
IFCHANGE = $(COMSPEC) /C $(srcdir:/=\)\win32\ifchange.bat
|
|
RM = $(COMSPEC) /C $(srcdir:/=\)\win32\rm.bat
|
|
RMDIR = $(COMSPEC) /C $(srcdir:/=\)\win32\rmdirs.bat
|
|
RMDIRS = $(COMSPEC) /C $(srcdir:/=\)\win32\rmdirs.bat
|
|
RMALL = $(COMSPEC) /C $(srcdir:/=\)\win32\rm.bat -r
|
|
MAKEDIRS = $(COMSPEC) /E:ON /C $(srcdir:/=\)\win32\makedirs.bat
|
|
CP = copy > nul
|
|
MV = move > nul
|
|
!if !defined(BASERUBY)
|
|
BASERUBY = ruby
|
|
!endif
|
|
!if !defined(TEST_RUNNABLE)
|
|
TEST_RUNNABLE = yes
|
|
!endif
|
|
|
|
!if !defined(MACHINE)
|
|
MACHINE = x86
|
|
!endif
|
|
!if "$(MACHINE)" == "x86"
|
|
!if !defined(PROCESSOR_LEVEL)
|
|
PROCESSOR_LEVEL = 5
|
|
!endif
|
|
!if 6 < $(PROCESSOR_LEVEL)
|
|
PROCESSOR_LEVEL = 6
|
|
!endif
|
|
!if $(MSC_VER) < 1400
|
|
PROCESSOR_FLAG = -G$(PROCESSOR_LEVEL)
|
|
!endif
|
|
CPU = i$(PROCESSOR_LEVEL)86
|
|
ARCH = i386
|
|
!else
|
|
CPU = $(MACHINE)
|
|
ARCH = $(MACHINE)
|
|
!endif
|
|
!if !defined(DEBUGFLAGS)
|
|
DEBUGFLAGS = -Zi
|
|
!endif
|
|
!if "$(RUBY_DEVEL)" == "yes"
|
|
XCFLAGS = $(XCFLAGS) -DRUBY_DEVEL=1
|
|
!endif
|
|
!if !defined(OPTFLAGS)
|
|
!if $(MSC_VER) < 1400
|
|
OPTFLAGS = -O2b2xg-
|
|
!else
|
|
OPTFLAGS = -O2sy-
|
|
!endif
|
|
!endif
|
|
!if !defined(PLATFORM)
|
|
PLATFORM = mswin32
|
|
!endif
|
|
!if !defined(RT)
|
|
!error RT not defined. Retry from configure pass.
|
|
!endif
|
|
!ifndef NTVER
|
|
NTVER = 0x0600
|
|
!endif
|
|
!ifdef NTVER
|
|
ARCHDEFS = -D_WIN32_WINNT=$(NTVER) $(ARCHDEFS)
|
|
!endif
|
|
!if !defined(PLATFORM_DIR)
|
|
PLATFORM_DIR = win32
|
|
!endif
|
|
|
|
arch = $(ARCH)-$(PLATFORM)
|
|
sitearch = $(ARCH)-$(RT)
|
|
!if !defined(ruby_version)
|
|
ruby_version = $(MAJOR).$(MINOR).0
|
|
!endif
|
|
!if !defined(RUBY_VERSION_NAME)
|
|
RUBY_VERSION_NAME = $(RUBY_BASE_NAME)-$(ruby_version)
|
|
!endif
|
|
|
|
!ifndef RUBY_SO_NAME
|
|
RUBY_SO_NAME = $(RT)-$(RUBY_BASE_NAME)$(ruby_version:.=)
|
|
!if "$(ARCH)" != "i386"
|
|
RUBY_SO_NAME = $(ARCH)-$(RUBY_SO_NAME)
|
|
!endif
|
|
!endif
|
|
!ifndef RUBY_PLATFORM
|
|
RUBY_PLATFORM = $(arch)
|
|
!endif
|
|
|
|
!if !defined(prefix)
|
|
prefix = /usr
|
|
!endif
|
|
!if !defined(exec_prefix)
|
|
exec_prefix = $(prefix)
|
|
!endif
|
|
!if !defined(libdir_basename)
|
|
libdir_basename = lib
|
|
!endif
|
|
!if !defined(libdir)
|
|
libdir = $(exec_prefix)/$(libdir_basename)
|
|
!endif
|
|
!if !defined(datadir)
|
|
datadir = $(prefix)/share
|
|
!endif
|
|
!ifndef EXTOUT
|
|
EXTOUT = .ext
|
|
!endif
|
|
!ifndef TESTUI
|
|
TESTUI = console
|
|
!endif
|
|
!ifndef TESTS
|
|
TESTS =
|
|
!endif
|
|
!ifndef CAPITARGET
|
|
! ifdef DOXYGEN
|
|
CAPITARGET = capi
|
|
! else
|
|
CAPITARGET = nodoc
|
|
! endif
|
|
!endif
|
|
!ifndef DOCTARGETS
|
|
! if "$(RDOCTARGET)" == "rdoc" || "$(RDOCTARGET)" == ""
|
|
DOCTARGETS = $(DOCTARGETS) rdoc
|
|
! endif
|
|
! if "$(CAPITARGET)" == "capi"
|
|
DOCTARGETS = $(DOCTARGETS) capi
|
|
! endif
|
|
!endif
|
|
!ifndef INSTALLDOC
|
|
! if "$(DOCTARGETS)" != ""
|
|
INSTALLDOC = all
|
|
! else
|
|
INSTALLDOC = nodoc
|
|
DOCTARGETS = nodoc
|
|
! endif
|
|
!endif
|
|
|
|
!if !defined(OUTFLAG)
|
|
OUTFLAG = -Fe
|
|
!endif
|
|
!if !defined(COUTFLAG)
|
|
COUTFLAG = -Fo
|
|
!endif
|
|
!if !defined(CPPOUTFLAG)
|
|
! if $(MSC_VER) < 1600
|
|
CPPOUTFLAG = >
|
|
! else
|
|
CPPOUTFLAG = -Fi
|
|
! endif
|
|
!endif
|
|
!if !defined(CSRCFLAG)
|
|
CSRCFLAG = -Tc
|
|
!endif
|
|
!if !defined(RUNTIMEFLAG)
|
|
RUNTIMEFLAG = -MD
|
|
!endif
|
|
!if !defined(COMPILERFLAG)
|
|
COMPILERFLAG = -Zm600
|
|
!endif
|
|
!if !defined(WARNFLAGS)
|
|
!if $(MSC_VER) >= 1400
|
|
WARNFLAGS = -W2 -wd4100 -wd4127 -wd4210 -wd4214 -wd4255 -wd4574 \
|
|
-wd4668 -wd4710 -wd4711 -wd4820 -wd4996 \
|
|
-we4028 -we4142
|
|
!else
|
|
WARNFLAGS = -W2
|
|
!endif
|
|
!endif
|
|
WERRORFLAG = -WX
|
|
!if !defined(CFLAGS_NO_ARCH)
|
|
CFLAGS_NO_ARCH = $(RUNTIMEFLAG) $(DEBUGFLAGS) $(WARNFLAGS) $(OPTFLAGS) $(COMPILERFLAG)
|
|
!endif
|
|
!if !defined(ARCH_FLAG)
|
|
ARCH_FLAG = $(PROCESSOR_FLAG)
|
|
!endif
|
|
!if !defined(CFLAGS)
|
|
CFLAGS = $(CFLAGS_NO_ARCH) $(ARCH_FLAG)
|
|
!endif
|
|
!if !defined(CXXFLAGS)
|
|
CXXFLAGS = $(CFLAGS)
|
|
!endif
|
|
!if !defined(LDFLAGS)
|
|
LDFLAGS = -incremental:no -debug -opt:ref -opt:icf
|
|
!endif
|
|
!if !defined(XLDFLAGS)
|
|
XLDFLAGS = -stack:$(STACK)
|
|
!endif
|
|
!if !defined(RFLAGS)
|
|
RFLAGS = -r
|
|
!endif
|
|
!if !defined(EXTLIBS)
|
|
EXTLIBS =
|
|
!endif
|
|
!if !defined(EXTSOLIBS)
|
|
EXTSOLIBS =
|
|
!endif
|
|
!if !defined(LIBS)
|
|
LIBS = user32.lib advapi32.lib shell32.lib ws2_32.lib
|
|
!if $(MSC_VER) >= 1400
|
|
LIBS = $(LIBS) iphlpapi.lib
|
|
!endif
|
|
LIBS = $(LIBS) imagehlp.lib shlwapi.lib $(EXTLIBS)
|
|
!endif
|
|
!if !defined(MISSING)
|
|
MISSING = crypt.obj ffs.obj langinfo.obj lgamma_r.obj strlcat.obj strlcpy.obj win32/win32.obj win32/file.obj setproctitle.obj
|
|
!if $(RT_VER) < 120
|
|
MISSING = $(MISSING) acosh.obj cbrt.obj erf.obj nan.obj tgamma.obj
|
|
!endif
|
|
MISSING = $(MISSING) explicit_bzero.obj
|
|
!endif
|
|
DLNOBJ = dln.obj
|
|
|
|
ARFLAGS = -machine:$(MACHINE) -out:
|
|
LD = $(CC)
|
|
LDSHARED = $(LD) -LD
|
|
XCFLAGS = -DRUBY_EXPORT $(INCFLAGS) $(XCFLAGS)
|
|
!if "$(MATHN)" == "yes"
|
|
XCFLAGS = $(XCFLAGS) -DCANONICALIZATION_FOR_MATHN
|
|
!endif
|
|
!if $(MSC_VER) >= 1400
|
|
# Prevents VC++ 2005 (cl ver 14) warnings
|
|
MANIFESTTOOL = mt -nologo
|
|
LDSHARED_0 = @if exist $(@).manifest $(MINIRUBY) -run -e wait_writable -- -n 10 $@
|
|
LDSHARED_1 = @if exist $(@).manifest $(MANIFESTTOOL) -manifest $(@).manifest -outputresource:$(@);2
|
|
LDSHARED_2 = @if exist $(@).manifest @$(RM) $(@:/=\).manifest
|
|
!endif
|
|
CPPFLAGS = $(DEFS) $(ARCHDEFS) $(CPPFLAGS)
|
|
!if "$(USE_RUBYGEMS)" == "no"
|
|
CPPFLAGS = -DDISABLE_RUBYGEMS $(CPPFLAGS)
|
|
!endif
|
|
!ifndef MJIT_SUPPORT
|
|
MJIT_SUPPORT = yes
|
|
!endif
|
|
!if "$(CPPOUTFLAG)" == ">"
|
|
MJIT_HEADER_FLAGS =
|
|
!else
|
|
MJIT_HEADER_FLAGS = -P
|
|
!endif
|
|
MJIT_HEADER_SUFFIX =
|
|
MJIT_HEADER_ARCH =
|
|
MJIT_HEADER_INSTALL_DIR = include/$(RUBY_VERSION_NAME)/$(arch)
|
|
MJIT_PRECOMPILED_HEADER_NAME = rb_mjit_header-$(RUBY_PROGRAM_VERSION).pch
|
|
MJIT_PRECOMPILED_HEADER = $(MJIT_HEADER_INSTALL_DIR)/$(MJIT_PRECOMPILED_HEADER_NAME)
|
|
!ifndef MJIT_CC
|
|
MJIT_CC = $(CC)
|
|
!endif
|
|
!ifndef MJIT_OPTFLAGS
|
|
# TODO: Use only $(OPTFLAGS) for performance. It requires to modify flags for precompiled header too.
|
|
# For now, using flags used for building precompiled header to make JIT succeed.
|
|
MJIT_OPTFLAGS = -DMJIT_HEADER $(CFLAGS) $(XCFLAGS) $(CPPFLAGS)
|
|
!endif
|
|
!ifndef MJIT_DEBUGFLAGS
|
|
# TODO: Make this work... Another header for debug build needs to be installed first.
|
|
MJIT_DEBUGFLAGS = $(DEBUGFLAGS)
|
|
!endif
|
|
!ifndef MJIT_LDSHARED
|
|
MJIT_LDSHARED = $(MJIT_CC) -LD
|
|
!endif
|
|
|
|
POSTLINK =
|
|
DLDFLAGS = $(LDFLAGS) -dll
|
|
MAINLIBS = $(LIBS)
|
|
SOLIBS =
|
|
RCFILES = $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc
|
|
!ifndef RCFLAGS
|
|
!if $(MSC_VER) >= 1600
|
|
RCFLAGS=-nologo
|
|
!endif
|
|
!endif
|
|
|
|
ENABLE_SHARED = yes
|
|
LIBRUBY_LDSHARED = $(LDSHARED)
|
|
LIBRUBY_DLDFLAGS = $(EXTLDFLAGS) -implib:dummy.lib -def:$(RUBYDEF)
|
|
|
|
EXEEXT = .exe
|
|
EXECUTABLE_EXTS = ".exe",".com",".cmd",".bat"
|
|
!if !defined(PROGRAM)
|
|
PROGRAM=$(RUBY_INSTALL_NAME)$(EXEEXT)
|
|
!endif
|
|
!if !defined(WPROGRAM) && defined(RUBYW_INSTALL_NAME)
|
|
WPROGRAM=$(RUBYW_INSTALL_NAME)$(EXEEXT)
|
|
!endif
|
|
RUBYDEF = $(RUBY_SO_NAME).def
|
|
!if "$(CROSS_COMPILING)" == "yes"
|
|
MINIRUBY = $(RUBY) -I$(MAKEDIR) -r$(arch)-fake
|
|
RUNRUBY = $(MINIRUBY)
|
|
!else
|
|
MINIRUBY = .\miniruby$(EXEEXT) -I$(srcdir)/lib -I.
|
|
RUNRUBY = .\$(PROGRAM) -I$(srcdir)/lib -I"$(EXTOUT)/$(arch)" -I.
|
|
!endif
|
|
MINIRUBY = $(MINIRUBY) $(MINIRUBYOPT)
|
|
RUNRUBY = $(RUNRUBY) "$(srcdir)/tool/runruby.rb" --extout="$(EXTOUT)" $(RUNRUBYOPT) -- $(RUN_OPTS)
|
|
!if "$(CROSS_COMPILING)" == "yes"
|
|
XRUBY = $(MINIRUBY)
|
|
BOOTSTRAPRUBY = $(BASERUBY)
|
|
!else
|
|
BOOTSTRAPRUBY = $(MINIRUBY)
|
|
XRUBY = $(RUNRUBY)
|
|
!endif
|
|
BTESTRUBY = $(MINIRUBY)
|
|
!ifndef RUBY
|
|
RUBY = ruby
|
|
!endif
|
|
|
|
DTRACE_EXT = dmyh
|
|
|
|
!if !defined(STACK)
|
|
!if "$(ARCH)" == "x64" || "$(ARCH)" == "ia64"
|
|
STACK = 0x400000
|
|
!else
|
|
STACK = 0x200000
|
|
!endif
|
|
!if defined(STACK_COMMIT)
|
|
STACK = $(STACK),$(STACK_COMMIT)
|
|
!endif
|
|
!endif
|
|
ORGLIBPATH = $(LIB)
|
|
|
|
#### End of system configuration section. ####
|
|
|
|
LIBRUBY_A = $(RUBY_SO_NAME)-static.lib
|
|
LIBRUBY_SO = $(RUBY_SO_NAME).dll
|
|
LIBRUBY_SONAME= $(RUBY_SO_NAME).dll
|
|
LIBRUBY = $(RUBY_SO_NAME).lib
|
|
LIBRUBYARG = $(LIBRUBY)
|
|
LIBRUBYARG_SHARED = $(LIBRUBY)
|
|
LIBRUBY_RELATIVE = yes
|
|
|
|
THREAD_MODEL = win32
|
|
|
|
!if "$(CROSS_COMPILING)" == "yes"
|
|
PREP = $(arch)-fake.rb
|
|
!else
|
|
PREP = miniruby$(EXEEXT)
|
|
!endif
|
|
|
|
!if !defined(EXTSTATIC)
|
|
EXTSTATIC =
|
|
!endif
|
|
|
|
OBJEXT = obj
|
|
ASMEXT = asm
|
|
|
|
INSTALLED_LIST= .installed.list
|
|
|
|
SRC_FILE = $(<:\=/)
|
|
OS_SRC_FILE = $(<:/=\)
|
|
DEST_FILE = $(@:\=/)
|
|
OS_DEST_FILE = $(@:/=\)
|
|
|
|
!if !defined(WINMAINOBJ)
|
|
WINMAINOBJ = winmain.$(OBJEXT)
|
|
!endif
|
|
MAINSRC = $(MAINOBJ:.obj=.c)
|
|
ARCHMINIOBJS = dmydln.$(OBJEXT) miniruby.res
|
|
LIBOBJS = $(MISSING) $(LIBOBJS)
|
|
|
|
!ifndef COMMON_LIBS
|
|
COMMON_LIBS = m
|
|
!endif
|
|
!ifndef COMMON_MACROS
|
|
COMMON_MACROS = WIN32_LEAN_AND_MEAN WIN32
|
|
!endif
|
|
!ifndef COMMON_HEADERS
|
|
COMMON_HEADERS = winsock2.h ws2tcpip.h windows.h
|
|
!endif
|
|
|
|
!if "$(EXTSTATIC)" == "static"
|
|
ENCOBJS = enc/encinit.$(OBJEXT) enc/libenc.lib enc/libtrans.lib
|
|
EXTOBJS = ext/extinit.$(OBJEXT)
|
|
! if !defined(ENCSTATIC)
|
|
ENCSTATIC = static
|
|
! endif
|
|
!else
|
|
ENCOBJS = dmyenc.$(OBJEXT)
|
|
EXTOBJS = dmyext.$(OBJEXT)
|
|
!endif
|
|
|
|
arch_hdrdir = $(EXTOUT)/include/$(arch)
|
|
top_srcdir = $(srcdir)
|
|
hdrdir = $(srcdir)/include
|
|
VPATH = $(arch_hdrdir)/ruby;$(hdrdir)/ruby;$(srcdir);$(srcdir)/missing;$(win_srcdir)
|
|
|
|
!ifndef GIT
|
|
GIT = git
|
|
!endif
|
|
!if "$(HAVE_GIT)" == "yes" || "$(HAVE_GIT)" == "no"
|
|
!else if "$(GIT)" == ""
|
|
HAVE_GIT = no
|
|
!else if [for %I in ($(GIT)) do @if not "%~xI" == "" exit 1]
|
|
! if [for %I in ($(GIT)) do @if not "%~$$PATH:I" == "" exit 1]
|
|
HAVE_GIT = yes
|
|
! else
|
|
HAVE_GIT = no
|
|
! endif
|
|
!else
|
|
! if [for %x in (%PATHEXT:;= %) do @for %I in ($(GIT)%x) do @if not "%~$$PATH:I" == "" exit 1]
|
|
HAVE_GIT = yes
|
|
! else
|
|
HAVE_GIT = no
|
|
! endif
|
|
!endif
|
|
|
|
!if exist($(srcdir)/.svn)
|
|
VCS = svn
|
|
VCSUP = $(VCS) up $(SVNUPOPTIONS)
|
|
!else if exist($(srcdir)/.git/svn)
|
|
VCS = $(GIT) svn
|
|
VCSUP = $(VCS) rebase $(GITSVNREBASEOPTIONS)
|
|
!else if exist($(srcdir)/.git)
|
|
VCS = $(GIT)
|
|
VCSUP = $(VCS) pull $(GITPULLOPTIONS)
|
|
!else
|
|
VCSUP = rem
|
|
!endif
|
|
ruby_pc = $(RUBY_BASE_NAME)-$(MAJOR).$(MINOR).pc
|
|
|
|
MESSAGE_BEGIN = @(for %I in (
|
|
MESSAGE_END = ) do @echo.%~I)
|
|
ECHO_BEGIN = @echo.
|
|
ECHO_END =
|
|
|
|
all: $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub $(srcdir)/common.mk
|
|
prog: config
|
|
|
|
ruby: $(PROGRAM)
|
|
rubyw: $(WPROGRAM)
|
|
stub: $(STUBPROGRAM)
|
|
rubystub: $(STUBPROGRAM)
|
|
|
|
!if !exist(enc/trans/newline.c) && exist($(srcdir)/enc/trans/newline.c)
|
|
NEWLINE_C = $(srcdir)/enc/trans/newline.c
|
|
!else
|
|
NEWLINE_C = enc/trans/newline.c
|
|
!endif
|
|
!if !exist(miniprelude.c) && exist($(srcdir)/miniprelude.c)
|
|
MINIPRELUDE_C = $(srcdir)/miniprelude.c
|
|
!else
|
|
MINIPRELUDE_C = miniprelude.c
|
|
!endif
|
|
!if !exist(prelude.c) && exist($(srcdir)/prelude.c)
|
|
PRELUDE_C = $(srcdir)/prelude.c
|
|
!else
|
|
PRELUDE_C = prelude.c
|
|
!endif
|
|
!if !exist(golf_prelude.c) && exist($(srcdir)/golf_prelude.c)
|
|
GOLF_PRELUDE_C = $(srcdir)/golf_prelude.c
|
|
!else
|
|
GOLF_PRELUDE_C = golf_prelude.c
|
|
!endif
|
|
RBCONFIG = ./.rbconfig.time
|
|
|
|
!include $(srcdir)/common.mk
|
|
|
|
!ifdef SCRIPTPROGRAMS
|
|
!else if [echo>scriptbin.mk SCRIPTPROGRAMS = \]
|
|
!else if [for %I in ($(srcdir:/=\)\bin\*) do @echo>>scriptbin.mk %~nI.exe \]
|
|
!else if [echo.>>scriptbin.mk]
|
|
!else if [echo.>>scriptbin.mk]
|
|
!endif
|
|
!if [for %I in ($(srcdir:/=\)\bin\*) do @for %J in (\
|
|
"%~nI.exe: $$(srcdir)/bin/%~nI" \
|
|
" $$(ECHO) generating $$(@)" \
|
|
" $$(Q) copy /y /b $$(STUBPROGRAM) $$(@) > nul" \
|
|
" $$(Q) echo.>>$$(@)" \
|
|
" $$(Q) echo.>>$$(@)" \
|
|
" $$(Q) copy /b $$(@)+$$(srcdir:/=\)\bin\%~nI $$(@) > nul" \
|
|
"" \
|
|
) do @echo.%~J>>scriptbin.mk]
|
|
!else
|
|
! include scriptbin.mk
|
|
! if [del scriptbin.mk > nul]
|
|
! endif
|
|
!endif
|
|
|
|
scriptbin: $(SCRIPTPROGRAMS)
|
|
|
|
$(SCRIPTPROGRAMS): $(STUBPROGRAM)
|
|
|
|
update-src::
|
|
@cd "$(srcdir:/=\)" && set LC_TIME=C && $(VCSUP)
|
|
|
|
.PHONY: reconfig
|
|
reconfig $(MKFILES): $(srcdir)/common.mk $(srcdir)/version.h \
|
|
$(win_srcdir)/Makefile.sub $(win_srcdir)/configure.bat \
|
|
$(win_srcdir)/setup.mak $(win_srcdir)/enc-setup.mak \
|
|
$(srcdir)/enc/Makefile.in
|
|
$(COMSPEC) /C $(win_srcdir:/=\)\configure.bat $(configure_args)
|
|
@fc Makefile Makefile.old > nul && echo Makefile unchanged || \
|
|
(echo $(MKFILES) was updated, re-run $(MAKE). & exit 1)
|
|
|
|
RUBY_CONFIG_H = $(arch_hdrdir)/ruby/config.h
|
|
CONFIG_H = ./.config.h.time
|
|
|
|
config: config.status
|
|
|
|
config.status: $(CONFIG_H)
|
|
|
|
BANG = !
|
|
|
|
!if !exist(config.status)
|
|
!else if [for /f "skip=1 delims=, tokens=2-3" %I in (config.status) do @ \
|
|
if "%I" == "@RUBY_SO_NAME@" ( \
|
|
if not "%J" == "$(RUBY_SO_NAME)" exit 1 \
|
|
) else if "%I" == "@target_alias@" ( \
|
|
if not "%J" == "$(ARCH)-$(PLATFORM)" exit 1 \
|
|
) \
|
|
]
|
|
config.status: nul
|
|
!endif
|
|
|
|
guard = INCLUDE_RUBY_CONFIG_H
|
|
|
|
$(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub
|
|
@echo Creating config.h
|
|
!if !exist("$(arch_hdrdir)")
|
|
@md $(arch_hdrdir:/=\)
|
|
!endif
|
|
!if !exist("$(arch_hdrdir)/ruby")
|
|
@md $(arch_hdrdir:/=\)\ruby
|
|
!endif
|
|
@$(IFCHANGE) "--timestamp=$(@:/=\)" $(RUBY_CONFIG_H:/=\) <<
|
|
#ifndef $(guard)
|
|
#define $(guard) 1
|
|
#if _MSC_VER != $(MSC_VER)
|
|
#error MSC version unmatch: _MSC_VER: $(MSC_VER) is expected.
|
|
#endif
|
|
#define RUBY_MSVCRT_VERSION $(RT_VER)
|
|
#define STDC_HEADERS 1
|
|
#define HAVE_SYS_TYPES_H 1
|
|
#define HAVE_SYS_STAT_H 1
|
|
!if $(MSC_VER) >= 1800
|
|
#define HAVE_STDBOOL_H 1
|
|
!endif
|
|
#define HAVE_STDLIB_H 1
|
|
#define HAVE_STDDEF_H 1
|
|
#define HAVE_STRING_H 1
|
|
#define HAVE_MEMORY_H 1
|
|
!if $(MSC_VER) >= 1400
|
|
#define HAVE_LONG_LONG 1
|
|
!else
|
|
#define ULL_TO_DOUBLE(n) ((double)(unsigned long)((n)>>32) * (1I64 << 32) + (unsigned long)(n))
|
|
!endif
|
|
#define HAVE_OFF_T 1
|
|
#define SIZEOF_INT 4
|
|
#define SIZEOF_SHORT 2
|
|
#define SIZEOF_LONG 4
|
|
!if $(MSC_VER) >= 1400
|
|
#define SIZEOF_LONG_LONG 8
|
|
!else
|
|
#define SIZEOF_LONG_LONG 0
|
|
!endif
|
|
#define SIZEOF___INT64 8
|
|
#define _INTEGRAL_MAX_BITS 64
|
|
!if $(LARGEFILE_SUPPORT)
|
|
#define SIZEOF_OFF_T 8
|
|
!else
|
|
#define SIZEOF_OFF_T 4
|
|
!endif
|
|
!if "$(ARCH)" == "x64" || "$(ARCH)" == "ia64"
|
|
#define SIZEOF_VOIDP 8
|
|
!else
|
|
#define SIZEOF_VOIDP 4
|
|
!endif
|
|
#define SIZEOF_FLOAT 4
|
|
#define SIZEOF_DOUBLE 8
|
|
#define SIGNEDNESS_OF_TIME_T -1
|
|
#define NEGATIVE_TIME_T 1
|
|
!if $(RT_VER) >= 80
|
|
#define SIZEOF_TIME_T 8
|
|
#define TIMET2NUM(v) LL2NUM(v)
|
|
#define NUM2TIMET(v) NUM2LL(v)
|
|
!else
|
|
#define SIZEOF_TIME_T 4
|
|
#define TIMET2NUM(v) LONG2NUM(v)
|
|
#define NUM2TIMET(v) NUM2LONG(v)
|
|
!endif
|
|
#define CLOCKID2NUM(v) INT2NUM(v)
|
|
#define NUM2CLOCKID(v) NUM2INT(v)
|
|
#define SIZEOF_CLOCK_T 4
|
|
#define SIZEOF_RLIM_T 0
|
|
!if "$(ARCH)" == "x64" || "$(ARCH)" == "ia64"
|
|
#define SIZEOF_SIZE_T 8
|
|
#define SIZEOF_PTRDIFF_T 8
|
|
#define SIZEOF_INTPTR_T 8
|
|
#define SIZEOF_UINTPTR_T 8
|
|
!else
|
|
#define SIZEOF_SIZE_T 4
|
|
#define SIZEOF_PTRDIFF_T 4
|
|
#define SIZEOF_INTPTR_T 4
|
|
#define SIZEOF_UINTPTR_T 4
|
|
!endif
|
|
!if $(MSC_VER) < 1400
|
|
#define SIZE_MAX UINT_MAX
|
|
!endif
|
|
#define HAVE_PROTOTYPES 1
|
|
#define TOKEN_PASTE(x,y) x##y
|
|
#define HAVE_STDARG_PROTOTYPES 1
|
|
!if $(MSC_VER) >= 1800
|
|
#define HAVE_VA_COPY 1
|
|
!else
|
|
#define HAVE_VA_COPY_VIA_STRUCT_ASSIGNMENT 1
|
|
!endif
|
|
!if $(MSC_VER) > 1100
|
|
#define NORETURN(x) __declspec(noreturn) x
|
|
!endif
|
|
!if $(MSC_VER) >= 1300
|
|
#define DEPRECATED(x) __declspec(deprecated) x
|
|
#define DEPRECATED_TYPE(mesg, x) __declspec(deprecated mesg) x
|
|
#define NOINLINE(x) __declspec(noinline) x
|
|
!endif
|
|
#define ALWAYS_INLINE(x) __forceinline x
|
|
#define WARN_UNUSED_RESULT(x) x
|
|
#define MAYBE_UNUSED(x) x
|
|
#define UNREACHABLE __assume(0)
|
|
#define ASSUME(x) __assume(!!(x))
|
|
#define FUNC_STDCALL(x) __stdcall x
|
|
#define FUNC_CDECL(x) __cdecl x
|
|
#define FUNC_FASTCALL(x) __fastcall x
|
|
!if $(MSC_VER) >= 1500
|
|
#define RUBY_FUNCTION_NAME_STRING __FUNCTION__
|
|
#define PACKED_STRUCT(x) __pragma(pack(push, 1)) x __pragma(pack(pop))
|
|
!else
|
|
#define PACKED_STRUCT(x) x
|
|
!endif
|
|
!if "$(ARCH)" == "x86" || "$(ARCH)" == "x64" || "$(ARCH)" == "ia64"
|
|
#define PACKED_STRUCT_UNALIGNED(x) PACKED_STRUCT(x)
|
|
!else
|
|
#define PACKED_STRUCT_UNALIGNED(x) x
|
|
!endif
|
|
#define RUBY_EXTERN extern __declspec(dllimport)
|
|
#define RUBY_ALIGNAS(n) __declspec(align(n))
|
|
#define RUBY_ALIGNOF __alignof
|
|
#define HAVE_DECL_SYS_NERR 1
|
|
#define HAVE_LIMITS_H 1
|
|
#define HAVE_FCNTL_H 1
|
|
#define HAVE_SYS_UTIME_H 1
|
|
#define HAVE_FLOAT_H 1
|
|
#define HAVE_TIME_H 1
|
|
#define rb_pid_t int
|
|
#define rb_gid_t int
|
|
#define rb_uid_t int
|
|
#define HAVE_STRUCT_STAT_ST_RDEV 1
|
|
#define HAVE_ST_RDEV 1
|
|
#define HAVE_STRUCT_TIMEVAL 1
|
|
!if $(MSC_VER) >= 1900
|
|
#define HAVE_STRUCT_TIMESPEC
|
|
!endif
|
|
!if $(MSC_VER) >= 1600
|
|
#define HAVE_STDINT_H 1
|
|
!else
|
|
#define int8_t signed char
|
|
#define uint8_t unsigned char
|
|
#define int16_t short
|
|
#define uint16_t unsigned short
|
|
#define int32_t int
|
|
#define uint32_t unsigned int
|
|
#define int64_t __int64
|
|
#define uint64_t unsigned __int64
|
|
#define INT8_MIN _I8_MIN
|
|
#define INT8_MAX _I8_MAX
|
|
#define UINT8_MAX _UI8_MAX
|
|
#define INT16_MIN _I16_MIN
|
|
#define INT16_MAX _I16_MAX
|
|
#define UINT16_MAX _UI16_MAX
|
|
#define INT32_MIN _I32_MIN
|
|
#define INT32_MAX _I32_MAX
|
|
#define UINT32_MAX _UI32_MAX
|
|
#define INT64_MIN _I64_MIN
|
|
#define INT64_MAX _I64_MAX
|
|
#define UINT64_MAX _UI64_MAX
|
|
!endif
|
|
#define HAVE_INT8_T 1
|
|
#define HAVE_UINT8_T 1
|
|
#define SIZEOF_INT8_T 1
|
|
#define SIZEOF_UINT8_T 1
|
|
#define HAVE_INT16_T 1
|
|
#define HAVE_UINT16_T 1
|
|
#define SIZEOF_INT16_T 2
|
|
#define SIZEOF_UINT16_T 2
|
|
#define HAVE_INT32_T 1
|
|
#define HAVE_UINT32_T 1
|
|
#define SIZEOF_INT32_T 4
|
|
#define SIZEOF_UINT32_T 4
|
|
#define HAVE_INT64_T 1
|
|
#define HAVE_UINT64_T 1
|
|
#define SIZEOF_INT64_T 8
|
|
#define SIZEOF_UINT64_T 8
|
|
#define HAVE_INTPTR_T 1
|
|
#define HAVE_UINTPTR_T 1
|
|
#define HAVE_SSIZE_T 1
|
|
!if "$(ARCH)" == "x64" || "$(ARCH)" == "ia64"
|
|
#define ssize_t __int64
|
|
#define PRI_PTR_PREFIX "I64"
|
|
!else
|
|
#define ssize_t int
|
|
#define PRI_PTR_PREFIX PRI_INT_PREFIX
|
|
!endif
|
|
#define PRI_LL_PREFIX "I64"
|
|
#define PRI_PIDT_PREFIX PRI_INT_PREFIX
|
|
#define GETGROUPS_T int
|
|
#define RETSIGTYPE void
|
|
#define TYPEOF_TIMEVAL_TV_SEC long
|
|
!if $(RT_VER) >= 120
|
|
#define HAVE_ACOSH 1
|
|
#define HAVE_ASINH 1
|
|
#define HAVE_ATANH 1
|
|
#define HAVE_CBRT 1
|
|
#define HAVE_LOG2 1
|
|
#define log2(x) log2(x)
|
|
#define HAVE_ERF 1
|
|
#define HAVE_ERFC 1
|
|
#define HAVE_ROUND 1
|
|
#define HAVE_TGAMMA 1
|
|
#define HAVE_NEXTAFTER 1
|
|
!endif
|
|
#define HAVE_ALLOCA 1
|
|
#define HAVE_DUP2 1
|
|
#define HAVE_MEMCMP 1
|
|
#define HAVE_MEMMOVE 1
|
|
#define HAVE_MKDIR 1
|
|
#define HAVE_CLOCK_GETTIME 1
|
|
#define HAVE_CLOCK_GETRES 1
|
|
#define HAVE_GETTIMEOFDAY 1
|
|
#define HAVE_SPAWNV 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_FLOCK 1
|
|
#define HAVE_ISNAN 1
|
|
#define HAVE_FINITE 1
|
|
!if $(RT_VER) >= 120
|
|
#define HAVE_NAN 1
|
|
!endif
|
|
#define HAVE_HYPOT 1
|
|
#define HAVE_FMOD 1
|
|
#define HAVE_FREXP 1
|
|
#define HAVE_MODF 1
|
|
#define HAVE_WAITPID 1
|
|
#define HAVE_FSYNC 1
|
|
#define HAVE_GETCWD 1
|
|
#define HAVE_TRUNCATE 1
|
|
#define HAVE_FTRUNCATE 1
|
|
#define HAVE_LSTAT 1
|
|
#define HAVE_TIMES 1
|
|
#define HAVE_FCNTL 1
|
|
#define HAVE_LINK 1
|
|
#define HAVE_READLINK 1
|
|
#define HAVE_SYMLINK 1
|
|
#define HAVE_LCHOWN 1
|
|
#define HAVE__SETJMP 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_SIGNBIT 1
|
|
#define HAVE_TZNAME 1
|
|
#define HAVE_DAYLIGHT 1
|
|
#define HAVE_GMTIME_R 1
|
|
!if $(RT_VER) > 120
|
|
#define HAVE_QSORT_S
|
|
!endif
|
|
#define HAVE_TYPE_NET_LUID 1
|
|
#define SETPGRP_VOID 1
|
|
#define RSHIFT(x,y) ((x)>>(int)y)
|
|
#define HAVE_RB_FD_INIT 1
|
|
#define RUBY_SETJMP(env) _setjmp(env)
|
|
#define RUBY_LONGJMP(env,val) longjmp(env,val)
|
|
#define RUBY_JMP_BUF jmp_buf
|
|
#define inline __inline
|
|
#define NEED_IO_SEEK_BETWEEN_RW 1
|
|
!if "$(MACHINE)" == "x86" || "$(ARCH)" == "x64" || "$(ARCH)" == "ia64"
|
|
#define STACK_GROW_DIRECTION -1
|
|
!endif
|
|
#define DEFAULT_KCODE KCODE_NONE
|
|
#define LOAD_RELATIVE 1
|
|
#define DLEXT ".so"
|
|
!if "$(libdir_basename)" != "lib"
|
|
#define LIBDIR_BASENAME "$(libdir_basename)"
|
|
!endif
|
|
!if "$(EXTSTATIC)" == "static"
|
|
#define EXTSTATIC 1
|
|
!endif
|
|
#define EXECUTABLE_EXTS $(EXECUTABLE_EXTS)
|
|
#define RUBY_COREDLL "$(RT)"
|
|
#define RUBY_PLATFORM "$(arch)"
|
|
#define RUBY_SITEARCH "$(sitearch)"
|
|
!if "$(MJIT_SUPPORT)" == "yes"
|
|
#define USE_MJIT 1
|
|
!else
|
|
#define USE_MJIT 0
|
|
!endif
|
|
#endif /* $(guard) */
|
|
<<
|
|
|
|
#!if exist($(RUBY_CONFIG_H))
|
|
#! if exist(config_h.bak)
|
|
# @del $(RUBY_CONFIG_H:.h=_h).bak
|
|
#! endif
|
|
# @copy $(RUBY_CONFIG_H) $(RUBY_CONFIG_H:.h=_h).bak
|
|
#!endif
|
|
#!if exist($(RUBY_CONFIG_H))
|
|
# @echo NMAKE will abort if config.h is changed, then restart NMAKE.
|
|
# @fc.exe $(RUBY_CONFIG_H) $(RUBY_CONFIG_H:.h=_h).bak > nul
|
|
# @echo $(RUBY_CONFIG_H) unchanged.
|
|
# @del $(RUBY_CONFIG_H)
|
|
# @ren $(RUBY_CONFIG_H:.h=_h).bak $(RUBY_CONFIG_H)
|
|
#!endif
|
|
|
|
EXECUTABLE_EXTS = $(EXECUTABLE_EXTS:"=) # "
|
|
EXECUTABLE_EXTS = $(EXECUTABLE_EXTS:,= )
|
|
|
|
config.status: $(MKFILES) $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub $(srcdir)/common.mk
|
|
@echo Creating $@
|
|
@exit <<$@
|
|
# Generated automatically by Makefile.sub.
|
|
s,@SHELL@,$$(COMSPEC),;t t
|
|
s,@BUILD_FILE_SEPARATOR@,\,;t t
|
|
s,@PATH_SEPARATOR@,;,;t t
|
|
s,@CFLAGS@,$(CFLAGS),;t t
|
|
s,@WERRORFLAG@,$(WERRORFLAG),;t t
|
|
s,@DEFS@,$(DEFS),;t t
|
|
s,@CPPFLAGS@,$(CPPFLAGS),;t t
|
|
s,@CXXFLAGS@,$(CXXFLAGS),;t t
|
|
s,@FFLAGS@,$(FFLAGS),;t t
|
|
s,@LDFLAGS@,$(LDFLAGS),;t t
|
|
s,@LIBS@,user32.lib,;t t
|
|
s,@MAINLIBS@,$(MAINLIBS),;t t
|
|
s,@exec_prefix@,$${prefix},;t t
|
|
s,@prefix@,$(prefix),;t t
|
|
s,@program_transform_name@,s,.*,$(PROGRAM_PREFIX)&$(PROGRAM_SUFFIX),,;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@,,;t t
|
|
s,@sharedstatedir@,$${prefix}/com,;t t
|
|
s,@localstatedir@,$${prefix}/var,;t t
|
|
s,@libdir@,$${exec_prefix}/$(libdir_basename),;t t
|
|
s,@includedir@,$${prefix}/include,;t t
|
|
s,@oldincludedir@,/usr/include,;t t
|
|
s,@infodir@,$${datadir}/info,;t t
|
|
s,@mandir@,$${datadir}/man,;t t
|
|
s,@ridir@,$${datadir}/ri,;t t
|
|
s,@docdir@,$${datadir}/doc/$${RUBY_BASE_NAME},;t t
|
|
s,@build@,$(CPU)-pc-$(PLATFORM),;t t
|
|
s,@build_alias@,$(CPU)-$(PLATFORM),;t t
|
|
s,@build_cpu@,$(CPU),;t t
|
|
s,@build_vendor@,pc,;t t
|
|
s,@build_os@,$(PLATFORM),;t t
|
|
s,@host@,$(CPU)-pc-$(PLATFORM),;t t
|
|
s,@host_alias@,$(CPU)-$(PLATFORM),;t t
|
|
s,@host_cpu@,$(CPU),;t t
|
|
s,@host_vendor@,pc,;t t
|
|
s,@host_os@,$(PLATFORM),;t t
|
|
s,@target@,$(ARCH)-pc-$(PLATFORM),;t t
|
|
s,@target_alias@,$(ARCH)-$(PLATFORM),;t t
|
|
s,@target_cpu@,$(ARCH),;t t
|
|
s,@target_vendor@,pc,;t t
|
|
s,@target_os@,$(PLATFORM),;t t
|
|
s,@NULLCMD@,:,;t t
|
|
s,@CC@,$(CC),;t t
|
|
s,@CPP@,$(CPP),;t t
|
|
s,@CXX@,$$(CC),;t t
|
|
s,@LD@,$$(CC),;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@,MFLAGS = -$$(MAKEFLAGS),;t t
|
|
s,@RM@,$$(COMSPEC) /C $$(top_srcdir:/=\)\win32\rm.bat,;t t
|
|
s,@RMDIR@,$$(COMSPEC) /C $$(top_srcdir:/=\)\win32\rmdirs.bat,:t t
|
|
s,@RMDIRS@,$$(COMSPEC) /C $$(top_srcdir:/=\)\win32\rmdirs.bat,;t t
|
|
s,@RMALL@,$$(COMSPEC) /C $$(top_srcdir:/=\)\win32\rm.bat -f -r,:t t
|
|
s,@MAKEDIRS@,$$(COMSPEC) /E:ON /C $$(top_srcdir:/=\)\win32\makedirs.bat,;t t
|
|
s,@LIBOBJS@,$(LIBOBJS),;t t
|
|
s,@ALLOCA@,$(ALLOCA),;t t
|
|
s,@DEFAULT_KCODE@,$(DEFAULT_KCODE),;t t
|
|
s,@EXEEXT@,.exe,;t t
|
|
s,@EXECUTABLE_EXTS@,$(EXECUTABLE_EXTS),;t t
|
|
s,@OBJEXT@,$(OBJEXT),;t t
|
|
s,@ASMEXT@,$(ASMEXT),;t t
|
|
s,@XCFLAGS@,$(XCFLAGS),;t t
|
|
s,@XLDFLAGS@,$(XLDFLAGS),;t t
|
|
s,@DLDFLAGS@,$(DLDFLAGS) $$(LIBPATH),;t t
|
|
s,@EXTDLDFLAGS@,$(EXTDLDFLAGS),;t t
|
|
s,@ARCH_FLAG@,$(ARCH_FLAG),;t t
|
|
s,@STATIC@,$(STATIC),;t t
|
|
s,@CCDLFLAGS@,,;t t
|
|
s,@LDSHARED@,$(LDSHARED),;t t
|
|
s,@SOEXT@,dll,;t t
|
|
s,@DLEXT@,so,;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_BASE_NAME@,$(RUBY_BASE_NAME),;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) $$(MAINLIBS),;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,@BASERUBY@,$(BASERUBY),;t t
|
|
s,@OUTFLAG@,$(OUTFLAG),;t t
|
|
s,@COUTFLAG@,$(COUTFLAG),;t t
|
|
s,@CSRCFLAG@,$(CSRCFLAG),;t t
|
|
s,@CPPOUTFILE@,-P,;t t
|
|
s,@PRELOADENV@,,;t t
|
|
s,@LIBPATHENV@,PATH,;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) -link $$(DLDFLAGS) -implib:$$(*F:.so=)-$$(arch).lib -pdb:$$(*F:.so=)-$$(arch).pdb -def:$$(DEFFILE),;t t
|
|
!if $(MSC_VER) >= 1400
|
|
s,@LINK_SO@,@if exist $$(@).manifest $$(RUBY) -run -e wait_writable -- -n 10 $$(@),;t t
|
|
s,@LINK_SO@,@if exist $$(@).manifest $(MANIFESTTOOL) -manifest $$(@).manifest -outputresource:$$(@);2,;t t
|
|
s,@LINK_SO@,@if exist $$(@).manifest $$(RM) $$(@:/=\).manifest,;t t
|
|
!endif
|
|
s,@COMPILE_C@,$$(CC) $$(INCFLAGS) $$(CFLAGS) $$(CPPFLAGS) $$(COUTFLAG)$$(@) -c $$(CSRCFLAG)$$(<:\=/),;t t
|
|
s,@COMPILE_CXX@,$$(CXX) $$(INCFLAGS) $$(CXXFLAGS) $$(CPPFLAGS) $$(COUTFLAG)$$(@) -c -Tp$$(<:\=/),;t t
|
|
s,@ASSEMBLE_C@,$$(CC) $$(CFLAGS) $$(CPPFLAGS) -Fa$$(@) -c $$(CSRCFLAG)$$(<:\=/),;t t
|
|
s,@ASSEMBLE_CXX@,$$(CXX) $$(CXXFLAGS) $$(CPPFLAGS) -Fa$$(@) -c -Tp$$(<:\=/),;t t
|
|
s,@COMPILE_RULES@,{$$(*VPATH*)}.%s.%s: .%s.%s:,;t t
|
|
s,@RULE_SUBST@,{.;$$(VPATH)}%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@,$(COMMON_LIBS),;t t
|
|
s,@COMMON_MACROS@,$(COMMON_MACROS),;t t
|
|
s,@COMMON_HEADERS@,$(COMMON_HEADERS),;t t
|
|
s,@cleanobjs@,$$*.exp $$*.lib $$*.pdb,;t t
|
|
s,@DISTCLEANFILES@,vc*.pdb,;t t
|
|
s,@EXPORT_PREFIX@, ,;t t
|
|
s,@archlibdir@,$${libdir}/$${arch},;t t
|
|
s,@sitearchlibdir@,$${libdir}/$${sitearch},;t t
|
|
s,@archincludedir@,$${includedir}/$${arch},;t t
|
|
s,@sitearchincludedir@,$${includedir}/$${sitearch},;t t
|
|
s,@arch@,$(ARCH)-$(PLATFORM),;t t
|
|
s,@sitearch@,$(ARCH)-$(RT),;t t
|
|
s,@ruby_version@,$(ruby_version),;t t
|
|
s,@RUBY_PROGRAM_VERSION@,$(RUBY_PROGRAM_VERSION),;t t
|
|
s,@rubylibprefix@,$${prefix}/lib/$${RUBY_BASE_NAME},;t t
|
|
s,@rubyarchdir@,$${rubylibdir}/$${arch},;t t
|
|
s,@rubylibdir@,$${rubylibprefix}/$${ruby_version},;t t
|
|
s,@sitedir@,$${rubylibprefix}/site_ruby,;t t
|
|
s,@sitearchdir@,$${sitelibdir}/$${sitearch},;t t
|
|
s,@sitelibdir@,$${sitedir}/$${ruby_version},;t t
|
|
s,@vendordir@,$${rubylibprefix}/vendor_ruby,;t t
|
|
s,@vendorarchdir@,$${vendorlibdir}/$${sitearch},;t t
|
|
s,@vendorlibdir@,$${vendordir}/$${ruby_version},;t t
|
|
s,@rubyhdrdir@,$$(includedir)/$${RUBY_BASE_NAME}-$$(ruby_version),;t t
|
|
s,@sitehdrdir@,$$(rubyhdrdir)/site_ruby,;t t
|
|
s,@vendorhdrdir@,$$(rubyhdrdir)/vendor_ruby,;t t
|
|
s,@rubyarchhdrdir@,$$(rubyhdrdir)/$${arch},;t t
|
|
s,@sitearchhdrdir@,$$(sitehdrdir)/$${sitearch},;t t
|
|
s,@vendorarchhdrdir@,$$(vendorhdrdir)/$${sitearch},;t t
|
|
s,@PLATFORM_DIR@,$(PLATFORM_DIR),;t t
|
|
s,@THREAD_MODEL@,$(THREAD_MODEL),;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,@try_header@,try_compile,;t t
|
|
s,@ruby_pc@,$(ruby_pc),;t t
|
|
s,@MJIT_SUPPORT@,$(MJIT_SUPPORT),;t t
|
|
<<KEEP
|
|
|
|
miniruby: miniruby$(EXEEXT)
|
|
|
|
miniruby$(EXEEXT):
|
|
@echo $(LIBS)
|
|
$(ECHO) linking $(@:\=/)
|
|
$(Q) $(PURIFY) $(CC) $(MAINOBJ) $(MINIOBJS) $(COMMONOBJS) $(LIBS) -Fe$@ -link $(LDFLAGS)
|
|
@$(RM) miniruby.lib miniruby.exp
|
|
$(Q) miniruby.exe -v
|
|
$(Q) $(LDSHARED_1)
|
|
$(Q) $(LDSHARED_2)
|
|
|
|
miniruby.rc:
|
|
@exit > $@
|
|
|
|
!if "$(PROGRAM)" != ""
|
|
$(PROGRAM): $(MAINOBJ) $(LIBRUBY_SO) $(RUBY_INSTALL_NAME).res
|
|
$(ECHO) linking $(@:\=/)
|
|
$(Q) $(PURIFY) $(CC) $(MAINOBJ) $(EXTOBJS) $(RUBY_INSTALL_NAME).res \
|
|
$(OUTFLAG)$@ $(LIBRUBYARG) -link $(LDFLAGS) $(XLDFLAGS)
|
|
$(Q) $(LDSHARED_0)
|
|
$(Q) $(LDSHARED_1)
|
|
$(Q) $(LDSHARED_2)
|
|
!endif
|
|
|
|
!if "$(WPROGRAM)" != ""
|
|
$(WPROGRAM): $(MAINOBJ) $(WINMAINOBJ) $(LIBRUBY_SO) $(RUBYW_INSTALL_NAME).res
|
|
$(ECHO) linking $(@:\=/)
|
|
$(Q) $(PURIFY) $(CC) $(MAINOBJ) $(WINMAINOBJ) \
|
|
$(RUBYW_INSTALL_NAME).res $(OUTFLAG)$@ $(LIBRUBYARG) \
|
|
-link $(LDFLAGS) $(XLDFLAGS) -subsystem:Windows
|
|
$(Q) $(LDSHARED_0)
|
|
$(Q) $(LDSHARED_1)
|
|
$(Q) $(LDSHARED_2)
|
|
!endif
|
|
|
|
!if "$(STUBPROGRAM)" != ""
|
|
$(STUBPROGRAM): rubystub.$(OBJEXT) $(LIBRUBY) $(LIBRUBY_SO) $(RUBY_INSTALL_NAME).res
|
|
$(ECHO) linking $(@:\=/)
|
|
$(Q) $(PURIFY) $(CC) rubystub.$(OBJEXT) $(RUBY_INSTALL_NAME).res \
|
|
$(OUTFLAG)$@ $(LIBRUBYARG) -link $(LDFLAGS) $(XLDFLAGS)
|
|
$(Q) $(LDSHARED_0)
|
|
$(Q) $(LDSHARED_1)
|
|
$(Q) $(LDSHARED_2)
|
|
!endif
|
|
|
|
!if "$(LIBRUBY_SO_UPDATE)" == ""
|
|
PRE_LIBRUBY_UPDATE = $(RM) $(LIBRUBY_EXTS)
|
|
!else
|
|
PRE_LIBRUBY_UPDATE =
|
|
!endif
|
|
|
|
$(LIBRUBY_A): $(OBJS) $(INITOBJS)
|
|
!if "$(EXTSTATIC)" != ""
|
|
@-$(PRE_LIBRUBY_UPDATE)
|
|
!endif
|
|
$(ECHO) linking static-library $(@:\=/)
|
|
$(Q) $(AR) $(ARFLAGS)$@ $(OBJS) $(INITOBJS)
|
|
|
|
$(LIBRUBY): $(RUBYDEF)
|
|
$(ECHO) linking import-library $(@:\=/)
|
|
$(Q) $(AR) $(ARFLAGS)$@ -def:$(RUBYDEF)
|
|
|
|
$(LIBRUBY_SO): $(LIBRUBY_A) $(DLDOBJS) $(RUBYDEF) $(RUBY_SO_NAME).res
|
|
@echo $(DLDOBJS)
|
|
!if "$(EXTSTATIC)" == ""
|
|
@-$(PRE_LIBRUBY_UPDATE)
|
|
!endif
|
|
$(ECHO) linking shared-library $(@:\=/)
|
|
$(Q) $(LDSHARED) $(DLDOBJS) $(LIBRUBY_A) \
|
|
$(RUBY_SO_NAME).res $(SOLIBS) $(EXTSOLIBS) $(LIBS) -Fe$@ -link $(LDFLAGS) \
|
|
$(LIBRUBY_DLDFLAGS)
|
|
@$(RM) dummy.lib dummy.exp
|
|
$(Q) $(LDSHARED_0)
|
|
$(Q) $(LDSHARED_1)
|
|
$(Q) $(LDSHARED_2)
|
|
# | findstr -v -c:LNK4049 -c:LNK4217
|
|
|
|
$(RUBYDEF): $(LIBRUBY_A) $(RBCONFIG)
|
|
$(ECHO) generating $(@:\=/)
|
|
$(Q) $(MINIRUBY) $(srcdir)/win32/mkexports.rb \
|
|
-output=$@ -arch=$(ARCH) $(LIBRUBY_A)
|
|
|
|
{$(win_srcdir)}.def.lib:
|
|
$(Q) $(AR) $(ARFLAGS)$@ -def:$<
|
|
|
|
clean-local::
|
|
$(Q)$(RM) $(WINMAINOBJ) ext\extinit.c ext\extinit.$(OBJEXT) ext\vc*.pdb miniruby.lib
|
|
$(Q)$(RM) $(RUBY_INSTALL_NAME).res $(RUBYW_INSTALL_NAME).res $(RUBY_SO_NAME).res
|
|
$(Q)$(RM) miniruby.rc $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc
|
|
$(Q)$(RM) *.map *.pdb *.ilk *.exp $(RUBYDEF) ext\ripper\y.output
|
|
|
|
distclean-local::
|
|
$(Q)$(RM) ext\config.cache $(RBCONFIG:/=\) $(CONFIG_H:/=\)
|
|
-$(Q)$(RM) $(INSTALLED_LIST:/=\) $(arch_hdrdir:/=\)\ruby\config.h verconf.h
|
|
-$(Q)$(RMDIRS) $(arch_hdrdir:/=\)\ruby
|
|
|
|
ext/clean.mk ext/distclean.mk ext/realclean.mk::
|
|
$(Q)if exist $(EXTS_MK) $(MAKE) -k -f $(EXTS_MK) top_srcdir=$(srcdir) $(*F)
|
|
|
|
ext/clean gems/clean ext/distclean gems/distclean ext/realclean gems/realclean::
|
|
$(Q)cd $(@D) && for /R $(EXTS) %I in (.) \
|
|
do $(Q)if exist %I\Makefile ( \
|
|
cd %I && ( \
|
|
call set n=%I && \
|
|
call set n=%n:%CD%\$(@D)\=% && \
|
|
call set n=%n:\.=% && \
|
|
call echo $(@F)ing %n:\=/% & \
|
|
$(MAKE) $(MFLAGS) $(@F) & \
|
|
cd %CD% & \
|
|
$(RMDIRS) %I \
|
|
) )
|
|
|
|
ext/distclean gems/distclean ext/realclean gems/realclean::
|
|
$(Q)cd $(@D) && for /R $(EXTS) %I in (exts.mk*) \
|
|
do $(Q)(del %I & rmdir %~dpI)
|
|
-$(Q)rmdir $(@D) 2> nul || @
|
|
|
|
clean-enc distclean-enc realclean-enc:
|
|
!if exist($(ENC_MK))
|
|
$(ECHO) $(@:-enc=ing) encodings
|
|
-$(Q)$(MAKE) $(MAKE_ENC) $(@:-enc=)
|
|
!endif
|
|
|
|
$(RBCONFIG): $(PREP)
|
|
|
|
$(RCFILES): $(RBCONFIG) $(srcdir)/revision.h $(srcdir)/win32/resource.rb
|
|
@$(MINIRUBY) $(srcdir)/win32/resource.rb \
|
|
-ruby_name=$(RUBY_INSTALL_NAME) \
|
|
-rubyw_name=$(RUBYW_INSTALL_NAME) \
|
|
-so_name=$(RUBY_SO_NAME) \
|
|
. $(icondirs) $(win_srcdir)
|
|
|
|
test-bundled-gems-run:
|
|
$(Q) for /f %G in ($(srcdir)/gems/bundled_gems) do @( \
|
|
echo testing %G gem & \
|
|
$(XRUBY) -C $(srcdir)/gems/src/%G -Ilib ../../../.bundle/bin/rake || \
|
|
exit /b %STATUS% \
|
|
)
|
|
|
|
update-benchmark-driver:
|
|
$(GIT) clone https://github.com/benchmark-driver/benchmark-driver $(srcdir)/benchmark/benchmark-driver || \
|
|
$(GIT) -C $(srcdir)/benchmark/benchmark-driver pull origin master
|
|
|
|
$(ruby_pc): $(RBCONFIG)
|
|
@$(BOOTSTRAPRUBY) $(srcdir)/tool/expand-config.rb \
|
|
-output=$@ -mode=$(INSTALL_DATA_MODE) -config=rbconfig.rb \
|
|
$(srcdir)/template/ruby.pc.in
|
|
|
|
{$(srcdir)/enc/trans}.c.obj:
|
|
$(ECHO) compiling $(<:\=/)
|
|
$(Q) $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$(<:\=/)
|
|
{$(srcdir)/enc}.c.obj:
|
|
$(ECHO) compiling $(<:\=/)
|
|
$(Q) $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$(<:\=/)
|
|
{$(srcdir)/missing}.c.obj:
|
|
$(ECHO) compiling $(<:\=/)
|
|
$(Q) $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$(<:\=/)
|
|
{$(win_srcdir)}.c.obj:
|
|
$(ECHO) compiling $(<:\=/)
|
|
$(Q) $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$(<:\=/)
|
|
{$(srcdir)}.c{}.obj:
|
|
$(ECHO) compiling $(<:\=/)
|
|
$(Q) $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$(<:\=/)
|
|
.c.obj:
|
|
$(ECHO) compiling $(<:\=/)
|
|
$(Q) $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -c $(CSRCFLAG)$(<:\=/)
|
|
|
|
{$(srcdir)/missing}.c.asm:
|
|
$(ECHO) translating $(<:\=/)
|
|
$(Q) $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -Fa$@ -c $(CSRCFLAG)$(<:\=/)
|
|
{$(win_srcdir)}.c.asm:
|
|
$(ECHO) translating $(<:\=/)
|
|
$(Q) $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -Fa$@ -c $(CSRCFLAG)$(<:\=/)
|
|
{$(srcdir)}.c{}.asm:
|
|
$(ECHO) translating $(<:\=/)
|
|
$(Q) $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -Fa$@ -c $(CSRCFLAG)$(<:\=/)
|
|
.c.asm:
|
|
$(ECHO) translating $(<:\=/)
|
|
$(Q) $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -Fa$@ -c $(CSRCFLAG)$(<:\=/)
|
|
|
|
{$(srcdir)/missing}.c.i:
|
|
$(ECHO) preprocessing $(<:\=/)
|
|
$(Q) $(CC) $(XCFLAGS) $(CPPFLAGS) -P $(CSRCFLAG)$(<:\=/) > $@
|
|
{$(win_srcdir)}.c.i:
|
|
$(ECHO) preprocessing $(<:\=/)
|
|
$(Q) $(CC) $(XCFLAGS) $(CPPFLAGS) -P $(CSRCFLAG)$(<:\=/)
|
|
{$(srcdir)}.c{}.i:
|
|
$(ECHO) preprocessing $(<:\=/)
|
|
$(Q) $(CC) $(XCFLAGS) $(CPPFLAGS) -P $(CSRCFLAG)$(<:\=/)
|
|
.c.i:
|
|
$(ECHO) preprocessing $(<:\=/)
|
|
$(Q) $(CC) $(XCFLAGS) $(CPPFLAGS) -P $(CSRCFLAG)$(<:\=/)
|
|
|
|
.rc.res:
|
|
$(ECHO) compiling $(<:\=/)
|
|
$(Q) $(RC) $(RCFLAGS) -I. -I$(<D) $(iconinc) -I$(srcdir)/win32 $(RFLAGS) -fo$@ $(<:\=/)
|
|
|
|
lex.c: {$(srcdir)}lex.c.blt
|
|
copy $(?:/=\) $@
|
|
|
|
$(srcdir)/enc/jis/props.h: {$(srcdir)}enc/jis/props.h.blt
|
|
@if not exist $(@D:/=\) md $(@D:/=\)
|
|
$(ECHO) copying $@
|
|
$(Q) copy $(?:/=\) $(@:/=\) > nul
|
|
|
|
$(OBJS): {$(hdrdir)/ruby}win32.h
|
|
|
|
win32/win32.$(OBJEXT): {$(VPATH)}id.h
|
|
dir.$(OBJEXT) win32/win32.$(OBJEXT): {$(srcdir)}win32/dir.h
|
|
file.$(OBJEXT) win32/win32.$(OBJEXT): {$(VPATH)}win32/file.h
|
|
|
|
ext/extinit.obj: ext/extinit.c $(SETUP)
|
|
$(ECHO) compiling ext/extinit.c
|
|
$(Q) $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -c ext/extinit.c
|
|
|
|
probes.h: {$(VPATH)}probes.dmyh
|
|
@$(ECHO) making dummy <<$(DEST_FILE)
|
|
#include "$(*F).dmyh"
|
|
<<KEEP
|
|
|
|
main: mjit-headers
|
|
yes-mjit-headers: $(MJIT_PRECOMPILED_HEADER)
|
|
clean-local::
|
|
$(Q)$(RM) $(MJIT_PRECOMPILED_HEADER_NAME) $(MJIT_PRECOMPILED_HEADER_NAME:.pch=.)$(OBJEXT)
|
|
$(Q)$(RM) $(TIMESTAMPDIR)/$(MJIT_PRECOMPILED_HEADER_NAME:.pch=.time) mjit_config.h
|
|
$(Q)$(RM) $(MJIT_HEADER_INSTALL_DIR)/rb_mjit_header-*.pch
|
|
$(Q)$(RM) $(MJIT_HEADER_INSTALL_DIR)/rb_mjit_header-*.pdb
|
|
$(Q)$(RM) $(MJIT_HEADER_INSTALL_DIR)/rb_mjit_header-*.$(OBJEXT)
|
|
-$(Q) $(RMDIRS) $(MJIT_HEADER_INSTALL_DIR) 2> $(NULL) || exit 0
|
|
$(Q)$(RM) $(arch_hdrdir)/rb_mjit_header-*.pch
|
|
$(Q)$(RM) $(arch_hdrdir)/rb_mjit_header-*.pdb
|
|
$(Q)$(RM) $(arch_hdrdir)/rb_mjit_header-*.$(OBJEXT)
|
|
|
|
# Non-mswin environment is not using prebuilt precompiled header because upgrading compiler
|
|
# or changing compiler options may break MJIT so build (currently only by --jit-debug though).
|
|
#
|
|
# But mswin is building precompiled header because cl.exe cannot leave macro after preprocess.
|
|
# As a workaround to use macro without installing many source files, it uses precompiled header
|
|
# without sufficient guard for a broken build.
|
|
#
|
|
# TODO: Fix the above issue by including VC version in header name, and create another header
|
|
# for --jit-debug as well.
|
|
$(TIMESTAMPDIR)/$(MJIT_PRECOMPILED_HEADER_NAME:.pch=).time: probes.h vm.$(OBJEXT)
|
|
$(ECHO) building $(@F:.time=.pch)
|
|
$(Q) $(CC) -DMJIT_HEADER $(CFLAGS) $(XCFLAGS:-DRUBY_EXPORT =) -URUBY_EXPORT $(CPPFLAGS) $(srcdir)/vm.c -c -Yc \
|
|
$(COUTFLAG)$(@F:.time=.)$(OBJEXT) -Fd$(@F:.time=.pdb) -Fp$(@F:.time=.pch).new
|
|
$(Q) $(IFCHANGE) "--timestamp=$@" $(@F:.time=.pch) $(@F:.time=.pch).new
|
|
|
|
$(MJIT_PRECOMPILED_HEADER_NAME): $(TIMESTAMPDIR)/$(MJIT_PRECOMPILED_HEADER_NAME:.pch=).time
|
|
|
|
$(MJIT_PRECOMPILED_HEADER): $(MJIT_PRECOMPILED_HEADER_NAME)
|
|
$(Q) $(MAKEDIRS) $(MJIT_HEADER_INSTALL_DIR)
|
|
$(Q) $(MAKE_LINK) $(MJIT_PRECOMPILED_HEADER_NAME) $@
|
|
$(Q) $(MAKE_LINK) $(MJIT_PRECOMPILED_HEADER_NAME:.pch=.)$(OBJEXT) $(MJIT_HEADER_INSTALL_DIR)/$(MJIT_PRECOMPILED_HEADER_NAME:.pch=.)$(OBJEXT)
|
|
$(Q) $(MAKE_LINK) $(MJIT_PRECOMPILED_HEADER_NAME:.pch=.pdb) $(MJIT_HEADER_INSTALL_DIR)/$(MJIT_PRECOMPILED_HEADER_NAME:.pch=.pdb)
|
|
$(Q) $(MAKEDIRS) $(arch_hdrdir)
|
|
$(Q) $(MAKE_LINK) $(MJIT_PRECOMPILED_HEADER_NAME) $(arch_hdrdir)/$(MJIT_PRECOMPILED_HEADER_NAME)
|
|
$(Q) $(MAKE_LINK) $(MJIT_PRECOMPILED_HEADER_NAME:.pch=.)$(OBJEXT) $(arch_hdrdir)/$(MJIT_PRECOMPILED_HEADER_NAME:.pch=.)$(OBJEXT)
|
|
$(Q) $(MAKE_LINK) $(MJIT_PRECOMPILED_HEADER_NAME:.pch=.pdb) $(arch_hdrdir)/$(MJIT_PRECOMPILED_HEADER_NAME:.pch=.pdb)
|
|
|
|
INSNS = opt_sc.inc optinsn.inc optunifs.inc insns.inc insns_info.inc \
|
|
vmtc.inc vm.inc mjit_compile.inc
|
|
|
|
!if [exit > insns_rules.mk]
|
|
!else if [for %I in ($(INSNS)) do \
|
|
@for %J in (\
|
|
"%I: $$(srcdir)/insns.def {$$(VPATH)}vm_opts.h \" \
|
|
" $$(srcdir)/defs/opt_operand.def $$(srcdir)/defs/opt_insn_unif.def \" \
|
|
" $$(srcdir)/tool/insns2vm.rb" \
|
|
" @$$(RM) $$(PROGRAM)" \
|
|
" $$(BASERUBY) -Ku $$(srcdir)/tool/insns2vm.rb $$(INSNS2VMOPT) %I" \
|
|
"" \
|
|
) do @echo.%~J>>insns_rules.mk]
|
|
!else
|
|
! include insns_rules.mk
|
|
! if [del insns_rules.mk > nul]
|
|
! endif
|
|
!endif
|
|
|
|
verconf.h: verconf.mk
|
|
|
|
loadpath: verconf.h
|
|
@$(CPP) $(XCFLAGS) $(CPPFLAGS) $(srcdir)/loadpath.c | \
|
|
sed -e '1,/^const char ruby_initial_load_paths/d;/;/,$$d' \
|
|
-e '/^^ /!d;s/ *"\\\\0"$$//;s/" *"//g'
|
|
|
|
mjit_config.h:
|
|
@echo making <<$@
|
|
#ifndef RUBY_MJIT_CONFIG_H
|
|
#define RUBY_MJIT_CONFIG_H 1
|
|
|
|
#define MJIT_CONFIG_ESCAPED_EQ "="
|
|
#define MJIT_PRECOMPILED_HEADER_NAME "/$(MJIT_HEADER_INSTALL_DIR)/$(MJIT_PRECOMPILED_HEADER_NAME)"
|
|
<<KEEP
|
|
@
|
|
@(set sep=#define MJIT_CC_COMMON ) & \
|
|
for %I in ($(MJIT_CC)) do @(call echo.%%sep%%"%%~I", \& set sep= ) >> $@
|
|
@echo /* MJIT_CC_COMMON */>> $@
|
|
@
|
|
@(set sep=#define MJIT_CFLAGS ) & \
|
|
for %I in ($(RUNTIMEFLAG) $(ARCH_FLAG)) do @(call echo.%%sep%%"%%~I", \& set sep= ) >> $@
|
|
@echo /* MJIT_CFLAGS */>> $@
|
|
@
|
|
@(set sep=#define MJIT_OPTFLAGS ) & \
|
|
for %I in ($(MJIT_OPTFLAGS:^==" MJIT_CONFIG_ESCAPED_EQ ")) do @(call echo.%%sep%%"%%~I", \& set sep= ) >> $@
|
|
@echo /* MJIT_OPTFLAGS */>> $@
|
|
@
|
|
@(set sep=#define MJIT_DEBUGFLAGS ) & \
|
|
for %I in ($(MJIT_DEBUGFLAGS:^==" MJIT_CONFIG_ESCAPED_EQ ")) do @(call echo.%%sep%%"%%~I", \& set sep= ) >> $@
|
|
@echo /* MJIT_DEBUGFLAGS */>> $@
|
|
@
|
|
@(set sep=#define MJIT_LDSHARED ) & \
|
|
for %I in ($(MJIT_LDSHARED)) do @(call echo.%%sep%%"%%~I", \& set sep= ) >> $@
|
|
@echo /* MJIT_LDSHARED */>> $@
|
|
@
|
|
@(set sep=#define MJIT_DLDFLAGS ) & \
|
|
for %I in ($(DLDFLAGS)) do @(call echo.%%sep%%"%%~I", \& set sep= ) >> $@
|
|
@echo /* MJIT_DLDFLAGS */>> $@
|
|
@
|
|
@(set sep=#define MJIT_LIBS ) & \
|
|
for %I in ($(LIBRUBYARG_SHARED)) do @(call echo.%%sep%%"%%~I", \& set sep= ) >> $@
|
|
@echo /* MJIT_LIBS */>> $@
|
|
@
|
|
@echo.>> $@
|
|
@echo #endif /* RUBY_MJIT_CONFIG_H */>> $@
|
|
@$(Q:@=: :) type $@
|