declare smobs in alloc.c
[bpt/emacs.git] / make-dist
index 283defe..fba4905 100755 (executable)
--- a/make-dist
+++ b/make-dist
@@ -1,8 +1,7 @@
 #!/bin/sh
 ### make-dist: create an Emacs distribution tar file from current srcdir
 
-## Copyright (C) 1995, 1997-1998, 2000-2013 Free Software Foundation,
-## Inc.
+## Copyright (C) 1995, 1997-1998, 2000-2014 Free Software Foundation, Inc.
 
 ## This file is part of GNU Emacs.
 
@@ -42,8 +41,8 @@ LC_MESSAGES=
 LANG=
 export LANGUAGE LC_ALL LC_MESSAGES LANG
 
-## Don't restrict access to any files.
-umask 0
+## Remove unnecessary restrictions on file access.
+umask 022
 
 update=yes
 check=yes
@@ -51,6 +50,7 @@ clean_up=no
 make_tar=no
 default_gzip=gzip
 newer=""
+with_tests=no
 
 while [ $# -gt 0 ]; do
   case "$1" in
@@ -98,6 +98,12 @@ while [ $# -gt 0 ]; do
       check=no
      ;;
 
+    ## Include the test/ directory.
+    ## This option is mainly for the hydra build server.
+    "--tests")
+      with_tests=yes
+     ;;
+
     "--help")
       echo "Usage: ${progname} [options]"
       echo ""
@@ -110,6 +116,7 @@ while [ $# -gt 0 ]; do
       echo "  --no-update      don't recompile or do analogous things"
       echo "  --snapshot       same as --clean-up --no-update --tar --no-check"
       echo "  --tar            make a tar file"
+      echo "  --tests  include the test/ directory"
       echo ""
       exit 0
     ;;
@@ -152,7 +159,7 @@ fi
 
 ### Find out which version of Emacs this is.
 version=`
-  sed -n 's/^AC_INIT(emacs,[    ]*\([^  )]*\).*/\1/p' <configure.ac
+  sed -n 's/^AC_INIT(GNU Emacs,[        ]*\([^  ,)]*\).*/\1/p' <configure.ac
 ` || version=
 if [ ! "${version}" ]; then
   echo "${progname}: can't find current Emacs version in \`./src/emacs.c'" >&2
@@ -194,13 +201,11 @@ fi
 if [ $check = yes ]; then
   ls -1 lisp/[a-zA-Z]*.el lisp/[a-z]*/[a-zA-Z0-9]*.el \
        lisp/[a-z]*/[a-z]*/[a-zA-Z0-9]*.el \
-       lisp/[a-z]*/[a-z]*/[a-z]*/[a-zA-Z0-9]*.el \
-       leim/[a-z]*/[a-z]*.el > /tmp/el
+       lisp/[a-z]*/[a-z]*/[a-z]*/[a-zA-Z0-9]*.el > /tmp/el
 
   ls -1 lisp/[a-zA-Z]*.elc lisp/[a-z]*/[a-zA-Z0-9]*.elc \
        lisp/[a-z]*/[a-z]*/[a-zA-Z0-9]*.elc \
-       lisp/[a-z]*/[a-z]*/[a-z]*/[a-zA-Z0-9]*.elc \
-       leim/[a-z]*/[a-z]*.elc > /tmp/elc
+       lisp/[a-z]*/[a-z]*/[a-z]*/[a-zA-Z0-9]*.elc > /tmp/elc
 
   ## Check for .elc files with no corresponding .el file.
   sed 's/\.el$/.elc/' /tmp/el > /tmp/elelc
@@ -246,7 +251,7 @@ if [ $update = yes ]; then
   echo timestamp > src/stamp-h.in
 
   echo "Updating Info files"
-  make info-real
+  make info
 
   echo "Updating finder, custom and autoload data"
   (cd lisp && make updates EMACS="$EMACS")
@@ -255,7 +260,7 @@ if [ $update = yes ]; then
   (cd leim && make leim-list.el EMACS="$EMACS")
 
   echo "Recompiling Lisp files"
-  $EMACS -batch -f batch-byte-recompile-directory lisp leim
+  $EMACS -batch -f batch-byte-recompile-directory lisp
 fi                              # $update = yes
 
 echo "Creating staging directory: \`${tempparent}'"
@@ -284,12 +289,11 @@ ln aclocal.m4 ${tempdir}
 
 echo "Creating subdirectories"
 for subdir in site-lisp \
-             leim leim/CXTERM-DIC leim/MISC-DIC \
-             leim/SKK-DIC leim/ja-dic leim/quail \
+             leim leim/CXTERM-DIC leim/MISC-DIC leim/SKK-DIC \
              build-aux build-aux/snippet \
              src src/bitmaps lib lib-src oldXMenu lwlib \
              nt nt/inc nt/inc/sys nt/inc/arpa nt/inc/netinet nt/icons \
-             `find etc lisp admin -type d` \
+             `find etc lisp admin test -type d` \
              doc doc/emacs doc/misc doc/man doc/lispref doc/lispintro \
              info m4 msdos \
              nextstep nextstep/templates \
@@ -300,6 +304,13 @@ for subdir in site-lisp \
              nextstep/GNUstep/Emacs.base \
              nextstep/GNUstep/Emacs.base/Resources
 do
+
+  if [ "$with_tests" != "yes" ]; then
+    case $subdir in
+        test*) continue ;;
+    esac
+  fi
+
   ## site-lisp for in-place installs (?).
   [ "$subdir" = "site-lisp" ] || [ -d "$subdir" ] || \
       echo "WARNING: $subdir not found, making anyway"
@@ -326,21 +337,16 @@ echo "Making links to \`leim' and its subdirectories"
  ln CXTERM-DIC/README CXTERM-DIC/*.tit ../${tempdir}/leim/CXTERM-DIC
  ln SKK-DIC/README SKK-DIC/SKK-JISYO.L ../${tempdir}/leim/SKK-DIC
  ln MISC-DIC/README MISC-DIC/*.* ../${tempdir}/leim/MISC-DIC
- ln ja-dic/*.el ja-dic/*.elc ../${tempdir}/leim/ja-dic
  ln Makefile.in ../${tempdir}/leim/Makefile.in
- ln leim-ext.el ../${tempdir}/leim/leim-ext.el
- ## Lisp files that start with a capital (also 4Corner.el) are
- ## generated from TIT dictionaries so we don't distribute them.
- ln quail/[a-z]*.el quail/[a-z]*.elc ../${tempdir}/leim/quail
- rm -f ../${tempdir}/leim/quail/quick-b5.*
- rm -f ../${tempdir}/leim/quail/quick-cns.*
- rm -f ../${tempdir}/leim/quail/tsang-b5.*
- rm -f ../${tempdir}/leim/quail/tsang-cns.*)
+ ln leim-ext.el ../${tempdir}/leim/leim-ext.el)
 
+## FIXME Can we not just use the "find -type f" method for this one?
 echo "Making links to \`build-aux'"
 (cd build-aux
- ln compile config.guess config.sub depcomp ../${tempdir}/build-aux
- ln install-sh missing move-if-change update-subdirs ../${tempdir}/build-aux)
+ ln compile config.guess config.sub depcomp msys-to-w32 ../${tempdir}/build-aux
+ ln install-sh missing move-if-change ../${tempdir}/build-aux
+ ln update-copyright update-subdirs ../${tempdir}/build-aux
+ ln dir_top make-info-dir ../${tempdir}/build-aux)
 
 echo "Making links to \`build-aux/snippet'"
 (cd build-aux/snippet
@@ -376,9 +382,10 @@ echo "Making links to \`lib'"
 echo "Making links to \`lib-src'"
 (cd lib-src
  ln [a-zA-Z]*.[ch] ../${tempdir}/lib-src
- ln ChangeLog Makefile.in README testfile ../${tempdir}/lib-src
+ ln ChangeLog Makefile.in README ../${tempdir}/lib-src
  ln grep-changelog rcs2log ../${tempdir}/lib-src
- ln makefile.w32-in ../${tempdir}/lib-src)
+ ln makefile.w32-in ../${tempdir}/lib-src
+ ln update-game-score.exe.manifest ../${tempdir}/lib-src)
 
 echo "Making links to \`m4'"
 (cd m4
@@ -389,6 +396,8 @@ echo "Making links to \`nt'"
  ln emacs-x86.manifest emacs-x64.manifest emacs.rc ../${tempdir}/nt
  ln config.nt emacsclient.rc emacs-src.tags ../${tempdir}/nt
  ln nmake.defs gmake.defs subdirs.el [a-z]*.bat [a-z]*.[ch] ../${tempdir}/nt
+ ln Makefile.in gnulib.mk ../${tempdir}/nt
+ ln mingw-cfg.site epaths.nt INSTALL.OLD ../${tempdir}/nt
  ln ChangeLog INSTALL README README.W32 makefile.w32-in ../${tempdir}/nt)
 
 echo "Making links to \`nt/inc' and its subdirectories"
@@ -429,23 +438,43 @@ echo "Making links to \`nextstep/GNUstep/Emacs.base/Resources'"
 
 echo "Making links to \`oldXMenu'"
 (cd oldXMenu
- ln *.[ch] *.in ../${tempdir}/oldXMenu
+ ln *.[ch] *.in *.mk ../${tempdir}/oldXMenu
  ln README ChangeLog ../${tempdir}/oldXMenu)
 
 echo "Making links to \`lwlib'"
 (cd lwlib
- ln *.[ch] *.in ../${tempdir}/lwlib
+ ln *.[ch] *.in *.mk ../${tempdir}/lwlib
  ln README ChangeLog ../${tempdir}/lwlib)
 
+## It is important to distribute admin/ because it contains sources
+## for generated lisp/international/uni-*.el files.
 echo "Making links to \`admin' and its subdirectories"
 for f in `find admin -type f`; do
+  case $f in
+    */Makefile) [ -f $f.in ] && continue ;;
+  esac
   ln $f $tempdir/$f
 done
 
+if [ "$with_tests" = "yes" ]; then
+  echo "Making links to \`test' and its subdirectories"
+  for f in `find test -type f`; do
+    case $f in
+      test/automated/*.log) continue ;;
+      test/automated/flymake/warnpred/a.out) continue ;;
+      test/automated/Makefile) continue ;;
+    esac
+    ln $f $tempdir/$f
+  done
+fi
+
 echo "Making links to \`etc' and its subdirectories"
 for f in `find etc -type f`; do
   case $f in
     etc/DOC*|etc/*.pyc) continue ;;
+    ## Arguably we should not exclude *.ps.
+    etc/refcards/*.aux|etc/refcards/*.dvi|etc/refcards/*.log|etc/refcards/*.ps)
+      continue ;;
   esac
   ln $f $tempdir/$f
 done
@@ -481,7 +510,7 @@ echo "Making links to \`doc/man'"
 ### It would be nice if they could all be symlinks to top-level copy, but
 ### you're not supposed to have any symlinks in distribution tar files.
 echo "Making sure copying notices are all copies of \`COPYING'"
-for subdir in . etc info leim lib lib-src lisp lwlib msdos nt src; do
+for subdir in . etc leim lib lib-src lisp lwlib msdos nt src; do
   rm -f ${tempdir}/${subdir}/COPYING
   cp COPYING ${tempdir}/${subdir}
 done