merge-gnulib 2.87 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
#! /bin/sh
# Merge gnulib sources into Emacs sources.
# Typical usage:
#
#	admin/merge-gnulib

# Copyright 2012 Free Software Foundation, Inc.

# 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 c-ctype c-strcase
Paul Eggert's avatar
Paul Eggert committed
30
  careadlinkat close-stream crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512
31
  dtoastr dtotimespec dup2 environ execinfo faccessat
32 33 34
  filemode getloadavg getopt-gnu gettime gettimeofday
  ignore-value intprops largefile lstat
  manywarnings mktime pselect pthread_sigmask readlink
35
  socklen stat-time stdalign stdarg stdbool stdio
36
  strftime strtoimax strtoumax symlink sys_stat
37
  sys_time time timer-time timespec-add timespec-sub utimens
38 39 40 41
  warnings
'

GNULIB_TOOL_FLAGS='
42 43 44 45 46 47
  --avoid=at-internal
  --avoid=errno --avoid=fchdir --avoid=fcntl --avoid=fstat
  --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow
  --avoid=openat-die --avoid=openat-h
  --avoid=raise
  --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=sys_types
48
  --avoid=threadlib
49 50 51 52 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
  --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 &&
91
rm -- "$src"m4/fcntl-o.m4 "$src"m4/gnulib-cache.m4 "$src"m4/warn-on-use.m4 &&
92 93 94
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"}