Include the full version number in the directory paths installed.
author"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Wed Jun 11 21:45:57 2008 +0000 (2008-06-11)
changeset 554be6197b5b33b
parent 553 b2261f6f9bc2
child 555 561285bdb5c8
Include the full version number in the directory paths installed.
Change the version string so that it does not break 'make', and so that it has no '/' (it would be a hell if installed directories would mirror the SVN branches... :-/ )
Do not use implicit rules for the Makefile.
Simplify and enc=hance the --local test to refuse (un)installing.
Double-quotes variables, they are based on user input.
Eye-candy in the 'compile' and install messages.

/trunk/configure | 26 14 12 0 ++++++++++---------
/trunk/Makefile.in | 83 45 38 0 +++++++++++++++++++++++++++++++++---------------------------
2 files changed, 59 insertions(+), 50 deletions(-)
Makefile.in
configure
     1.1 --- a/Makefile.in	Wed Jun 11 20:40:38 2008 +0000
     1.2 +++ b/Makefile.in	Wed Jun 11 21:45:57 2008 +0000
     1.3 @@ -1,6 +1,8 @@
     1.4  # Makefile.in for building crosstool-NG
     1.5  # This file serves as source for the ./configure operation
     1.6  
     1.7 +MAKEFLAGS += --no-print-directory --no-builtin-rules
     1.8 +
     1.9  all: Makefile build
    1.10  
    1.11  # Check if Makefile is up to date:
    1.12 @@ -25,15 +27,15 @@
    1.13  
    1.14  build: build-bin build-lib build-man
    1.15  
    1.16 -install: install-local-test build install-bin install-lib install-doc install-man
    1.17 +install: build install-bin install-lib install-doc install-man
    1.18  
    1.19  clean: clean-bin clean-lib clean-doc
    1.20  
    1.21  distclean: clean
    1.22 -	@echo "  RM     Makefile"
    1.23 +	@echo "  RM     'Makefile'"
    1.24  	@rm -f Makefile
    1.25  
    1.26 -uninstall: install-local-test uninstall-bin uninstall-lib uninstall-doc uninstall-man
    1.27 +uninstall: uninstall-bin uninstall-lib uninstall-doc uninstall-man
    1.28  
    1.29  ###############################################################################
    1.30  # Specific make rules
    1.31 @@ -42,7 +44,7 @@
    1.32  # Build rules
    1.33  
    1.34  build-bin: ct-ng
    1.35 -	@echo "  CHMOD  $<"
    1.36 +	@echo "  CHMOD  '$<'"
    1.37  	@chmod a+x $<
    1.38  
    1.39  build-lib:
    1.40 @@ -50,11 +52,11 @@
    1.41  build-man: docs/ct-ng.1.gz
    1.42  
    1.43  docs/ct-ng.1.gz: docs/ct-ng.1
    1.44 -	@echo "  GZIP   $@"
    1.45 +	@echo "  GZIP   '$@'"
    1.46  	@gzip -c9 $< >$@
    1.47  
    1.48  %: %.in Makefile
    1.49 -	@echo "  SED    $@"
    1.50 +	@echo "  SED    '$@'"
    1.51  	@sed -r -e 's,@@CT_MAKE@@,$(MAKE),g;'       \
    1.52  	        -e 's,@@CT_BINDIR@@,$(BINDIR),g;'   \
    1.53  	        -e 's,@@CT_LIBDIR@@,$(LIBDIR),g;'   \
    1.54 @@ -68,79 +70,84 @@
    1.55  # Clean rules
    1.56  
    1.57  clean-bin:
    1.58 -	@echo "  RM     ct-ng"
    1.59 +	@echo "  RM     'ct-ng'"
    1.60  	@rm -f ct-ng
    1.61  
    1.62  clean-lib:
    1.63  
    1.64  clean-doc:
    1.65 -	@echo "  RM     docs/ct-ng.1"
    1.66 +	@echo "  RM     'docs/ct-ng.1'"
    1.67  	@rm -f docs/ct-ng.1
    1.68 -	@echo "  RM     docs/ct-ng.1.gz"
    1.69 +	@echo "  RM     'docs/ct-ng.1.gz'"
    1.70  	@rm -f docs/ct-ng.1.gz
    1.71  
    1.72  #--------------------------------------
    1.73 -# Install rules
    1.74 +# Check for --local setup
    1.75  
    1.76  # If using locally, don't install
    1.77 -install-local-test:
    1.78 +local-test:
    1.79  	@if [ "$(LOCAL)" = "1" ]; then                                          \
    1.80  	     echo "You're using local copy as runtime. You can't (un)install."; \
    1.81  	     false;                                                             \
    1.82  	 fi
    1.83  
    1.84 -install-%: install-local-test
    1.85 +#--------------------------------------
    1.86 +# Install rules
    1.87 +
    1.88 +install-%: local-test
    1.89  
    1.90  install-bin: $(BINDIR)
    1.91 -	@echo "  INST   ct-ng"
    1.92 -	@install -m 755 ct-ng $(BINDIR)/ct-ng
    1.93 +	@echo "  INST   'ct-ng'"
    1.94 +	@install -m 755 ct-ng "$(BINDIR)/ct-ng"
    1.95  
    1.96  install-lib: uninstall-lib $(LIBDIR) install-lib-main install-lib-samples
    1.97  
    1.98  install-lib-main: $(LIBDIR)
    1.99 -	@for src_dir in arch config kconfig patches scripts tools; do            \
   1.100 -	     echo "  INST   $${src_dir}/";                                  \
   1.101 -	     tar cf - --exclude=.svn $${src_dir} |(cd $(LIBDIR); tar xf -); \
   1.102 +	@for src_dir in arch config kconfig patches scripts tools; do           \
   1.103 +	     echo "  INST   '$${src_dir}/'";                                    \
   1.104 +	     tar cf - --exclude=.svn $${src_dir} |(cd "$(LIBDIR)"; tar xf -);   \
   1.105  	 done
   1.106 -	@rm -f $(LIBDIR)/tools/addToolVersion.sh
   1.107 -	@echo "  INST   steps.mk"
   1.108 -	@install -m 644 steps.mk $(LIBDIR)/steps.mk
   1.109 +	@rm -f "$(LIBDIR)/tools/addToolVersion.sh"
   1.110 +	@echo "  INST   'steps.mk'"
   1.111 +	@install -m 644 steps.mk "$(LIBDIR)/steps.mk"
   1.112  
   1.113  # Samples need a little love:
   1.114  #  - change every occurrence of CT_TOP_DIR to CT_LIB_DIR
   1.115  install-lib-samples: $(LIBDIR) install-lib-main
   1.116 -	@echo "  INST   samples/"
   1.117 -	@tar cf - --exclude=.svn samples |(cd $(LIBDIR); tar xf -)
   1.118 -	@for samp_file in $(LIBDIR)/samples/*/crosstool.config; do                  \
   1.119 +	@echo "  INST   'samples/'"
   1.120 +	@tar cf - --exclude=.svn samples |(cd "$(LIBDIR)"; tar xf -)
   1.121 +	@for samp_file in "$(LIBDIR)/samples/"*"/crosstool.config"; do              \
   1.122  	     sed -r -i -e 's,\$$\{CT_TOP_DIR\},\$$\{CT_LIB_DIR\},g;' $${samp_file}; \
   1.123  	 done
   1.124  
   1.125  install-doc: $(DOCDIR)
   1.126 -	@for doc_file in docs/CREDITS docs/overview.txt; do	\
   1.127 -	     echo "  INST   $${doc_file}";              	\
   1.128 -	     install -m 644 "$${doc_file}" $(DOCDIR);   	\
   1.129 +	@for doc_file in docs/CREDITS docs/overview.txt; do \
   1.130 +	     echo "  INST   '$${doc_file}'";                \
   1.131 +	     install -m 644 "$${doc_file}" "$(DOCDIR)";     \
   1.132  	 done
   1.133  
   1.134  install-man: $(MANDIR)
   1.135 -	@echo "  INST   ct-ng.1.gz"
   1.136 -	@install -m 644 docs/ct-ng.1.gz $(MANDIR)
   1.137 +	@echo "  INST   'ct-ng.1.gz'"
   1.138 +	@install -m 644 docs/ct-ng.1.gz "$(MANDIR)"
   1.139  
   1.140  $(BINDIR) $(LIBDIR) $(DOCDIR) $(MANDIR)::
   1.141 -	@echo "  MKDIR  $@"
   1.142 -	@install -m 755 -d $@
   1.143 +	@echo "  MKDIR  '$@'"
   1.144 +	@install -m 755 -d "$@"
   1.145  
   1.146  
   1.147  #--------------------------------------
   1.148  # Uninstall rules
   1.149  
   1.150 -uninstall-bin: install-local-test
   1.151 -	@rm -f $(BINDIR)/ct-ng
   1.152 +uninstall-%: local-test
   1.153  
   1.154 -uninstall-lib: install-local-test
   1.155 -	@rm -rf $(LIBDIR)
   1.156 +uninstall-bin:
   1.157 +	@rm -f "$(BINDIR)/ct-ng"
   1.158  
   1.159 -uninstall-doc: install-local-test
   1.160 -	@rm -rf $(DOCDIR)
   1.161 +uninstall-lib:
   1.162 +	@rm -rf "$(LIBDIR)"
   1.163  
   1.164 -uninstall-man: install-local-test
   1.165 -	@rm -f $(MANDIR)/ct-ng.1{,.gz}
   1.166 +uninstall-doc:
   1.167 +	@rm -rf "$(DOCDIR)"
   1.168 +
   1.169 +uninstall-man:
   1.170 +	@rm -f "$(MANDIR)/ct-ng.1"{,.gz}
     2.1 --- a/configure	Wed Jun 11 20:40:38 2008 +0000
     2.2 +++ b/configure	Wed Jun 11 21:45:57 2008 +0000
     2.3 @@ -113,11 +113,6 @@
     2.4      set_mandir "" $(pwd)/docs
     2.5  fi
     2.6  
     2.7 -[ -z "${BINDIR_set}" ] && BINDIR="${PREFIX}/bin"
     2.8 -[ -z "${LIBDIR_set}" ] && LIBDIR="${PREFIX}/lib/ct-ng-${VERSION}"
     2.9 -[ -z "${DOCDIR_set}" ] && DOCDIR="${PREFIX}/share/doc/ct-ng-${VERSION}"
    2.10 -[ -z "${MANDIR_set}" ] && MANDIR="${PREFIX}/share/man/man1"
    2.11 -
    2.12  #---------------------------------------------------------------------
    2.13  # Some sanity checks, now
    2.14  
    2.15 @@ -129,17 +124,24 @@
    2.16      REVISION=$(LC_ALL=C svnversion)
    2.17      case "${REVISION}" in
    2.18        exported)
    2.19 -        VERSION="${VERSION}:unknown@$(date +%Y%m%d.%H%M%S)";;
    2.20 +        VERSION="${VERSION}unknown@$(date +%Y%m%d.%H%M%S)";;
    2.21        *)
    2.22          URL=$(LC_ALL=C svn info 2>/dev/null |egrep 'URL: ' |cut -d ' ' -f 2-)
    2.23          ROOT=$(LC_ALL=C svn info 2>/dev/null |egrep 'Repository Root: ' |cut -d ' ' -f 3-)
    2.24 -        VERSION="${VERSION}:${URL#${ROOT}}@${REVISION}"
    2.25 +        VERSION="${VERSION}${URL#${ROOT}}@${REVISION}"
    2.26          ;;
    2.27      esac
    2.28 +    VERSION="${VERSION/\//_}"
    2.29      ;;
    2.30  esac
    2.31  echo "${VERSION}"
    2.32  
    2.33 +# Now we have the version string, we can buyild up the paths
    2.34 +[ -z "${BINDIR_set}" ] && BINDIR="${PREFIX}/bin"
    2.35 +[ -z "${LIBDIR_set}" ] && LIBDIR="${PREFIX}/lib/ct-ng-${VERSION}"
    2.36 +[ -z "${DOCDIR_set}" ] && DOCDIR="${PREFIX}/share/doc/ct-ng-${VERSION}"
    2.37 +[ -z "${MANDIR_set}" ] && MANDIR="${PREFIX}/share/man/man1"
    2.38 +
    2.39  # Check bash is present, and at least version 3.0
    2.40  echo -n "Checking bash is at least bash-3.0... "
    2.41  [ -x /bin/bash ] || do_error "bash 3.0 or above was not found in /bin/bash"
    2.42 @@ -161,9 +163,9 @@
    2.43  
    2.44  cat <<__EOF__
    2.45  crosstool-NG configured as follows:
    2.46 -  PREFIX="${PREFIX}"
    2.47 -  BINDIR="${BINDIR}"
    2.48 -  LIBDIR="${LIBDIR}"
    2.49 -  DOCDIR="${DOCDIR}"
    2.50 -  MANDIR="${MANDIR}"
    2.51 +  PREFIX='${PREFIX}'
    2.52 +  BINDIR='${BINDIR}'
    2.53 +  LIBDIR='${LIBDIR}'
    2.54 +  DOCDIR='${DOCDIR}'
    2.55 +  MANDIR='${MANDIR}'
    2.56  __EOF__