From ba8d71f4478bff4d76bbc2f5fbda60ec1f7a7739 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 21 Feb 2017 17:04:35 -0500 Subject: [PATCH] add support for gnulib On a system with up-to-date GNU tools, this does not change the size of nano's binary. We start off with importing only a few modules, although we don't yet delete the fallback logic for them. --- .gitignore | 8 ++++++++ Makefile.am | 2 +- autogen.sh | 26 ++++++++++++++++++++++++++ configure.ac | 7 +++++++ m4/Makefile.am | 1 + src/Makefile.am | 5 +++-- 6 files changed, 46 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 89c53d02..40da99e5 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,7 @@ core /ABOUT-NLS /INSTALL /aclocal.m4 +/ar-lib /autom4te.cache /compile /config.cache @@ -68,6 +69,13 @@ core /m4/wint_t.m4 /m4/xsize.m4 +# gnulib entries +/gnulib/ +/lib/ +/m4/.gitignore +/m4/gnulib-cache.m4 +/snippet/ + /nano.spec /src/nano /src/revision.h diff --git a/Makefile.am b/Makefile.am index 48d587e5..1971a117 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,6 +1,6 @@ AUTOMAKE_OPTIONS = gnu no-dependencies -SUBDIRS = doc m4 po src +SUBDIRS = doc lib m4 po src if USE_COLOR SUBDIRS += syntax diff --git a/autogen.sh b/autogen.sh index 54007223..cfe70582 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,4 +1,30 @@ #!/bin/sh # Generate configure & friends for GIT users. +gnulib_url="git://git.sv.gnu.org/gnulib.git" +gnulib_hash="4084b3a1094372b960ce4a97634e08f4538c8bdd" + +modules=" + strcase + strcasestr-simple + strnlen +" + +# Make sure the local gnulib git repo is up-to-date. +if [ ! -d "gnulib" ]; then + git clone --depth=123 ${gnulib_url} +fi +cd gnulib >/dev/null || exit 1 +curr_hash=$(git log -1 --format=%H) +if [ "${gnulib_hash}" != "${curr_hash}" ]; then + git pull + git checkout -f ${gnulib_hash} +fi +cd .. >/dev/null || exit 1 + +rm -rf lib +./gnulib/gnulib-tool \ + --import \ + ${modules} + autoreconf -f -i -s diff --git a/configure.ac b/configure.ac index d9db2faf..9379450d 100644 --- a/configure.ac +++ b/configure.ac @@ -26,10 +26,16 @@ dnl Make sure the ONCE macros are available. AC_PREREQ([2.69]) +dnl Lie about gnulib features we don't use to speed up & shrink down. + +gl_cv_func_printf_infinite_long_double=yes + dnl Checks for programs. AC_GNU_SOURCE AC_PROG_CC +gl_EARLY +gl_INIT AC_PROG_LN_S AC_ISC_POSIX AC_SYS_LARGEFILE @@ -747,6 +753,7 @@ AC_CONFIG_FILES([ Makefile doc/Makefile doc/sample.nanorc +lib/Makefile m4/Makefile po/Makefile.in src/Makefile diff --git a/m4/Makefile.am b/m4/Makefile.am index 1d565640..b9a37af7 100644 --- a/m4/Makefile.am +++ b/m4/Makefile.am @@ -8,6 +8,7 @@ EXTRA_DIST = \ glib-2.0.m4 \ glibc21.m4 \ glibc2.m4 \ + gnulib-cache.m4 \ iconv.m4 \ intdiv0.m4 \ intldir.m4 \ diff --git a/src/Makefile.am b/src/Makefile.am index 22baa16f..f3f0609b 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,4 +1,5 @@ -AM_CPPFLAGS = -DLOCALEDIR=\"$(localedir)\" -DSYSCONFDIR=\"$(sysconfdir)\" +AM_CPPFLAGS = -DLOCALEDIR=\"$(localedir)\" -DSYSCONFDIR=\"$(sysconfdir)\" \ + -I$(top_builddir)/lib -I$(top_srcdir)/lib CLEANFILES = revision.h @@ -37,7 +38,7 @@ nano_SOURCES = browser.c \ utils.c \ winio.c -nano_LDADD = @GLIB_LIBS@ @LIBINTL@ +nano_LDADD = @GLIB_LIBS@ @LIBINTL@ $(top_builddir)/lib/libgnu.a install-exec-hook: cd $(DESTDIR)$(bindir) && rm -f rnano && $(LN_S) nano rnano