Merge branch 'post1.5.1/tcltk'
authorJunio C Hamano <junkio@cox.net>
Wed, 4 Apr 2007 07:09:52 +0000 (00:09 -0700)
committerJunio C Hamano <junkio@cox.net>
Wed, 4 Apr 2007 07:09:52 +0000 (00:09 -0700)
* post1.5.1/tcltk:
Optional Tck/Tk: ignore generated files.
Eliminate checks of user-specified Tcl/Tk interpreter.
Rewrite Tcl/Tk interpreter path for the GUI tools.
Add --with-tcltk and --without-tcltk to configure.
NO_TCLTK

1  2 
Makefile
diff --combined Makefile
index bc8b70bf1cf622331370e94608d42c5580485fcd,88f9025e4ca65eee5b8110aa8e7b72c8a3a2a4bc..ad321b35bfc3b48f6a9bbd503dc29eebdbf97d42
+++ b/Makefile
@@@ -110,8 -110,12 +110,14 @@@ all:
  # Define NO_PERL_MAKEMAKER if you cannot use Makefiles generated by perl's
  # MakeMaker (e.g. using ActiveState under Cygwin).
  #
 +# Define WITH_P4IMPORT to build and install Python git-p4import script.
 +#
+ # Define NO_TCLTK if you do not want Tcl/Tk GUI.
+ #
+ # The TCLTK_PATH variable governs the location of the Tck/Tk interpreter.
+ # If not set it defaults to the bare 'wish'. If it is set to the empty
+ # string then NO_TCLTK will be forced (this is used by configure script).
+ #
  
  GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE
        @$(SHELL_PATH) ./GIT-VERSION-GEN
@@@ -161,6 -165,7 +167,7 @@@ AR = a
  TAR = tar
  INSTALL = install
  RPMBUILD = rpmbuild
+ TCLTK_PATH = wish
  
  # sparse is architecture-neutral, which means that we need to tell it
  # explicitly what architecture to check for. Fix this up for yours..
@@@ -198,20 -203,9 +205,20 @@@ SCRIPT_PERL = 
        git-svnimport.perl git-cvsexportcommit.perl \
        git-send-email.perl git-svn.perl
  
 +SCRIPT_PYTHON = \
 +      git-p4import.py
 +
 +ifdef WITH_P4IMPORT
  SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) \
          $(patsubst %.perl,%,$(SCRIPT_PERL)) \
 +        $(patsubst %.py,%,$(SCRIPT_PYTHON)) \
          git-status git-instaweb
 +else
 +SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) \
 +        $(patsubst %.perl,%,$(SCRIPT_PERL)) \
 +        git-status git-instaweb
 +endif
 +
  
  # ... and all the rest that could be moved out of bindir to gitexecdir
  PROGRAMS = \
@@@ -244,6 -238,12 +251,12 @@@ BUILT_INS = 
  # what 'all' will build and 'install' will install, in gitexecdir
  ALL_PROGRAMS = $(PROGRAMS) $(SCRIPTS)
  
+ # what 'all' will build but not install in gitexecdir
+ OTHER_PROGRAMS = git$X gitweb/gitweb.cgi
+ ifndef NO_TCLTK
+ OTHER_PROGRAMS += gitk-wish
+ endif
  # Backward compatibility -- to be removed after 1.0
  PROGRAMS += git-ssh-pull$X git-ssh-push$X
  
@@@ -254,9 -254,6 +267,9 @@@ endi
  ifndef PERL_PATH
        PERL_PATH = /usr/bin/perl
  endif
 +ifndef PYTHON_PATH
 +      PYTHON_PATH = /usr/local/bin/python
 +endif
  
  export PERL_PATH
  
@@@ -624,6 -621,10 +637,10 @@@ ifdef NO_PERL_MAKEMAKE
        export NO_PERL_MAKEMAKER
  endif
  
+ ifeq ($(TCLTK_PATH),)
+ NO_TCLTK=NoThanks
+ endif
  QUIET_SUBDIR0  = $(MAKE) -C # space to separate -C and subdir
  QUIET_SUBDIR1  =
  
@@@ -662,7 -663,7 +679,8 @@@ prefix_SQ = $(subst ','\'',$(prefix)
  
  SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
  PERL_PATH_SQ = $(subst ','\'',$(PERL_PATH))
 +PYTHON_PATH_SQ = $(subst ','\'',$(PYTHON_PATH))
+ TCLTK_PATH_SQ = $(subst ','\'',$(TCLTK_PATH))
  
  LIBS = $(GITLIBS) $(EXTLIBS)
  
@@@ -678,19 -679,27 +696,27 @@@ export prefix gitexecdir TAR INSTALL DE
  
  ### Build rules
  
- all:: $(ALL_PROGRAMS) $(BUILT_INS) git$X gitk gitweb/gitweb.cgi
+ all:: $(ALL_PROGRAMS) $(BUILT_INS) $(OTHER_PROGRAMS)
  ifneq (,$X)
        $(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS) $(BUILT_INS) git$X)), rm -f '$p';)
  endif
  
  all::
-       $(QUIET_SUBDIR0)git-gui $(QUIET_SUBDIR1) all
+ ifndef NO_TCLTK
+       $(QUIET_SUBDIR0)git-gui TCLTK_PATH='$(TCLTK_PATH_SQ)' $(QUIET_SUBDIR1) all
+ endif
        $(QUIET_SUBDIR0)perl $(QUIET_SUBDIR1) PERL_PATH='$(PERL_PATH_SQ)' prefix='$(prefix_SQ)' all
        $(QUIET_SUBDIR0)templates $(QUIET_SUBDIR1)
  
  strip: $(PROGRAMS) git$X
        $(STRIP) $(STRIP_OPTS) $(PROGRAMS) git$X
  
+ gitk-wish: gitk GIT-GUI-VARS
+       $(QUIET_GEN)rm -f $@ $@+ && \
+       sed -e '1,3s|^exec .* "$$0"|exec $(subst |,'\|',$(TCLTK_PATH_SQ)) "$$0"|' <gitk >$@+ && \
+       chmod +x $@+ && \
+       mv -f $@+ $@
  git$X: git.c common-cmds.h $(BUILTIN_OBJS) $(GITLIBS) GIT-CFLAGS
        $(QUIET_LINK)$(CC) -DGIT_VERSION='"$(GIT_VERSION)"' \
                $(ALL_CFLAGS) -o $@ $(filter %.c,$^) \
@@@ -716,15 -725,6 +742,15 @@@ $(patsubst %.sh,%,$(SCRIPT_SH)) : % : %
  
  $(patsubst %.perl,%,$(SCRIPT_PERL)): perl/perl.mak
  
 +$(patsubst %.py,%,$(SCRIPT_PYTHON)) : % : %.py
 +      rm -f $@ $@+
 +      sed -e '1s|#!.*/python|#!$(PYTHON_PATH_SQ)|' \
 +          -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
 +          -e 's/@@NO_CURL@@/$(NO_CURL)/g' \
 +          $@.py >$@+
 +      chmod +x $@+
 +      mv $@+ $@
 +
  perl/perl.mak: GIT-CFLAGS
        $(QUIET_SUBDIR0)perl $(QUIET_SUBDIR1) PERL_PATH='$(PERL_PATH_SQ)' prefix='$(prefix_SQ)' $(@F)
  
@@@ -878,6 -878,20 +904,20 @@@ GIT-CFLAGS: .FORCE-GIT-CFLAG
                echo "$$FLAGS" >GIT-CFLAGS; \
              fi
  
+ ### Detect Tck/Tk interpreter path changes
+ ifndef NO_TCLTK
+ TRACK_VARS = $(subst ','\'',-DTCLTK_PATH='$(TCLTK_PATH_SQ)')
+ GIT-GUI-VARS: .FORCE-GIT-GUI-VARS
+       @VARS='$(TRACK_VARS)'; \
+           if test x"$$VARS" != x"`cat $@ 2>/dev/null`" ; then \
+               echo 1>&2 "    * new Tcl/Tk interpreter location"; \
+               echo "$$VARS" >$@; \
+             fi
+ .PHONY: .FORCE-GIT-GUI-VARS
+ endif
  ### Testing rules
  
  # GNU make supports exporting all variables by "export" without parameters.
@@@ -918,10 -932,13 +958,13 @@@ install: al
        $(INSTALL) -d -m755 '$(DESTDIR_SQ)$(bindir_SQ)'
        $(INSTALL) -d -m755 '$(DESTDIR_SQ)$(gitexecdir_SQ)'
        $(INSTALL) $(ALL_PROGRAMS) '$(DESTDIR_SQ)$(gitexecdir_SQ)'
-       $(INSTALL) git$X gitk '$(DESTDIR_SQ)$(bindir_SQ)'
+       $(INSTALL) git$X '$(DESTDIR_SQ)$(bindir_SQ)'
        $(MAKE) -C templates DESTDIR='$(DESTDIR_SQ)' install
        $(MAKE) -C perl prefix='$(prefix_SQ)' install
+ ifndef NO_TCLTK
+       $(INSTALL) gitk-wish '$(DESTDIR_SQ)$(bindir_SQ)'/gitk
        $(MAKE) -C git-gui install
+ endif
        if test 'z$(bindir_SQ)' != 'z$(gitexecdir_SQ)'; \
        then \
                ln -f '$(DESTDIR_SQ)$(bindir_SQ)/git$X' \
@@@ -1000,10 -1017,13 +1043,13 @@@ clean
        rm -f gitweb/gitweb.cgi
        $(MAKE) -C Documentation/ clean
        $(MAKE) -C perl clean
-       $(MAKE) -C git-gui clean
        $(MAKE) -C templates/ clean
        $(MAKE) -C t/ clean
-       rm -f GIT-VERSION-FILE GIT-CFLAGS
+ ifndef NO_TCLTK
+       rm -f gitk-wish
+       $(MAKE) -C git-gui clean
+ endif
+       rm -f GIT-VERSION-FILE GIT-CFLAGS GIT-GUI-VARS
  
  .PHONY: all install clean strip
  .PHONY: .FORCE-GIT-VERSION-FILE TAGS tags .FORCE-GIT-CFLAGS