merge-gnulib 3.08 KB
Newer Older
1 2 3 4 5 6
#! /bin/sh
# Merge gnulib sources into Emacs sources.
# Typical usage:
#
#	admin/merge-gnulib

7
# Copyright 2012-2013 Free Software Foundation, Inc.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

# This file is part of GNU Emacs.

# GNU Emacs is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.

# GNU Emacs is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.

# written by Paul Eggert

GNULIB_URL=git://git.savannah.gnu.org/gnulib.git

GNULIB_MODULES='
29
  alloca-opt byteswap c-ctype c-strcase
30 31
  careadlinkat close-stream count-one-bits count-trailing-zeros
  crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512
32
  dtoastr dtotimespec dup2 environ execinfo faccessat
33
  fcntl fcntl-h fdatasync fdopendir filemode fstatat fsync
Paul Eggert's avatar
Paul Eggert committed
34
  getloadavg getopt-gnu gettime gettimeofday
35
  intprops largefile lstat
36
  manywarnings memrchr mkostemp mktime
37
  pipe2 pselect pthread_sigmask putenv qacl readlink readlinkat
38
  sig2str socklen stat-time stdalign stdarg stdbool stdio
39
  strftime strtoimax strtoumax symlink sys_stat
40 41
  sys_time time timer-time timespec-add timespec-sub
  unsetenv update-copyright utimens
42 43 44 45
  warnings
'

GNULIB_TOOL_FLAGS='
46
  --avoid=close --avoid=dup
47
  --avoid=fchdir --avoid=fstat
48
  --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow
49
  --avoid=open --avoid=openat-die --avoid=opendir
50 51
  --avoid=raise
  --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=sys_types
52
  --avoid=threadlib
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
  --conditional-dependencies --import --no-changelog --no-vc-files
  --makefile-name=gnulib.mk
'

# The source directory, with a trailing '/'.
# If empty, the source directory is the working directory.
src=$2
case $src in
  */ | '') ;;
  *) src=$src/ ;;
esac

# Gnulib's source directory.
gnulib_srcdir=${1-$src../gnulib}

case $gnulib_srcdir in
  -*) src=- ;;
esac
case $src in
  -*)
    echo >&2 "$0: usage: $0 [GNULIB_SRCDIR [SRCDIR]]

    SRCDIR is the Emacs source directory (default: working directory).
    GNULIB_SRCDIR is the Gnulib source directory (default: SRCDIR/../gnulib)."
    exit 1 ;;
esac

test -x "$src"autogen.sh || {
  echo >&2 "$0: '${src:-.}' is not an Emacs source directory."
  exit 1
}

test -d "$gnulib_srcdir" ||
git clone -- "$GNULIB_URL" "$gnulib_srcdir" ||
exit

test -x "$gnulib_srcdir"/gnulib-tool || {
  echo >&2 "$0: '$gnulib_srcdir' is not a Gnulib source directory."
  exit 1
}

"$gnulib_srcdir"/gnulib-tool --dir="$src" $GNULIB_TOOL_FLAGS $GNULIB_MODULES &&
95 96
rm -- "$src"lib/gl_openssl.h "$src"m4/fcntl-o.m4 "$src"m4/gl-openssl.m4 \
      "$src"m4/gnulib-cache.m4"$src" m4/warn-on-use.m4 &&
97 98 99
cp -- "$gnulib_srcdir"/build-aux/texinfo.tex "$src"doc/misc &&
cp -- "$gnulib_srcdir"/build-aux/move-if-change "$src"build-aux &&
autoreconf -i -I m4 -- ${src:+"$src"}