diff --git a/Makefile.in b/Makefile.in index 79cc6756dc..8b5ce84504 100644 --- a/Makefile.in +++ b/Makefile.in @@ -172,6 +172,8 @@ IFCHANGE = $(srcdir)/tool/ifchange SET_LC_MESSAGES = env LC_MESSAGES=C OBJDUMP = @OBJDUMP@ OBJCOPY = @OBJCOPY@ +HAVE_GIT = @HAVE_GIT@ +GIT = @GIT@ VCS = @VCS@ VCSUP = @VCSUP@ DTRACE = @DTRACE@ @DTRACE_OPT@ diff --git a/common.mk b/common.mk index 608e4a2d0d..49ef6c0385 100644 --- a/common.mk +++ b/common.mk @@ -1078,9 +1078,11 @@ up:: after-update:: extract-extlibs -update-remote:: update-src update-rubyspec update-download +update-remote:: update-src update-download $(HAVE_GIT:yes=)update-rubyspec update-download:: update-unicode update-gems download-extlibs +noupdate-rubyspec: + update-config_files: PHONY $(Q) $(BASERUBY) -C "$(srcdir)/tool" \ ../tool/downloader.rb -e gnu \ diff --git a/configure.in b/configure.in index 95be5c54c6..c68a082be7 100644 --- a/configure.in +++ b/configure.in @@ -58,6 +58,18 @@ fi AC_SUBST(BASERUBY) AC_SUBST(HAVE_BASERUBY) +GIT=git +HAVE_GIT=yes +AC_ARG_WITH(git, + AS_HELP_STRING([--without-git], [never use git]), + [AS_CASE([$withval], + [no], [GIT=never-use HAVE_GIT=no], + [yes], [GIT=git], + [GIT=$withval])]) +AS_IF([test x"$HAVE_GIT" = xyes], [command -v "$GIT" > /dev/null || HAVE_GIT=no]) +AC_SUBST(GIT) +AC_SUBST(HAVE_GIT) + AC_DEFUN([RUBY_MINGW32], [AS_CASE(["$host_os"], [cygwin*], [ @@ -4644,19 +4656,19 @@ AC_CONFIG_FILES(Makefile, [ : elif svn info "$srcdir" > /dev/null 2>&1; then VCS='svn' - elif git_dir=`git --work-tree="$srcdir" --git-dir="$srcdir/.git" rev-parse --git-dir 2>/dev/null`; then + elif git_dir=`$GIT --work-tree="$srcdir" --git-dir="$srcdir/.git" rev-parse --git-dir 2>/dev/null`; then if test -d "$git_dir/svn"; then - VCS='git svn' + VCS='$(GIT) svn' else - VCS='git' + VCS='$(GIT)' fi else VCS='echo cannot' fi AS_CASE("$VCS", - [svn], [VCSUP='$(VCS) up $(SVNUPOPTIONS)'], - ["git svn"], [VCSUP='$(VCS) rebase $(GITSVNREBASEOPTIONS)'], - [git], [VCSUP='$(VCS) pull $(GITPULLOPTIONS)'], + [svn], [VCSUP='$(VCS) up $(SVNUPOPTIONS)'], + ['$(GIT) svn'], [VCSUP='$(VCS) rebase $(GITSVNREBASEOPTIONS)'], + ['$(GIT)'|git], [VCSUP='$(VCS) pull $(GITPULLOPTIONS)'], [VCSUP='$(VCS)']) sed -n \ -e '[/^@%:@define \(RUBY_RELEASE_[A-Z]*\) \([0-9][0-9]*\)/]{' \ diff --git a/win32/Makefile.sub b/win32/Makefile.sub index ffccd1422c..8bf9077484 100644 --- a/win32/Makefile.sub +++ b/win32/Makefile.sub @@ -393,14 +393,34 @@ 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)) @if not "%~xI" == "" exit 1] +! if [for %I in ($(GIT)) @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 +VCS = $(GIT) svn VCSUP = $(VCS) rebase $(GITSVNREBASEOPTIONS) !else if exist($(srcdir)/.git) -VCS = git +VCS = $(GIT) VCSUP = $(VCS) pull $(GITPULLOPTIONS) !else VCSUP = rem diff --git a/win32/configure.bat b/win32/configure.bat index dca517e4f4..18c9d95963 100755 --- a/win32/configure.bat +++ b/win32/configure.bat @@ -41,6 +41,8 @@ if "%1" == "--path" goto :path if "%1" == "--with-baseruby" goto :baseruby if "%1" == "--with-ntver" goto :ntver if "%1" == "--with-libdir" goto :libdir +if "%1" == "--with-git" goto :git +if "%1" == "--without-git" goto :nogit if "%1" == "--without-ext" goto :witharg if "%1" == "--without-extensions" goto :witharg if "%opt:~0,10%" == "--without-" goto :withoutarg @@ -179,6 +181,18 @@ goto :loop ; shift shift goto :loop ; +:git + echo>> ~tmp~.mak "GIT=%~2" \ + echo>>confargs.tmp %1=%2 \ + shift + shift +goto :loop ; +:nogit + echo>> ~tmp~.mak "GIT=never-use" \ + echo>> ~tmp~.mak "HAVE_GIT=no" \ + echo>>confargs.tmp %1 \ + shift +goto :loop ; :witharg echo>>confargs.tmp %1=%2\ set witharg=1