From fc5d77881eb6bb179f831e626d15f4f29179aad5 Mon Sep 17 00:00:00 2001 From: yann-morin-1998 Date: Wed, 1 Jul 2020 20:44:08 +0200 Subject: [PATCH] buildsystem: drop custom buildconf script, rely on autoreconf (#224) Notes: The buildconf script is currently required, because we need to copy a header around, because it is used both from the library and the examples sources. However, having a custom 'buildconf'-like script is not needed if we can ensure that the header exists by the time it is needed. For that, we can just append the src/ directory to the headers search path for the examples. And then it means we no longer need to generate the same header twice, so we remove the second one from configure.ac. Now, we can just call "autoreconf -fi" to generate the autotools files, instead of relying on the canned sequence in "buildconf", since autoreconf has now long known what to do at the correct moment (future versions of autotools, automake, autopoint, autoheader etc... may require an other ordering, or other intermediate steps, etc...). Eventually, get rid of buildconf now it is no longer needed. In fact, we really keep it for legacy, but have it just call autoreconf (and print a nice user-friendly warning). Don't include it in the release tarballs, though. Update doc, gitignore, and travis-CI jobs accordingly. Credit: Signed-off-by: "Yann E. MORIN" Cc: Sam Voss --- .gitignore | 2 ++ .travis.yml | 2 +- Makefile.am | 2 +- buildconf | 24 +++++------------------- configure.ac | 2 +- docs/INSTALL_AUTOTOOLS | 4 ++-- example/.gitignore | 2 -- example/Makefile.am | 2 +- 8 files changed, 13 insertions(+), 27 deletions(-) diff --git a/.gitignore b/.gitignore index 997e51e1..b6d6b5cb 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,8 @@ Makefile Makefile.in aclocal.m4 autom4te.cache +compile +test-driver config.guess config.log config.status diff --git a/.travis.yml b/.travis.yml index 58bc19ff..d543a334 100644 --- a/.travis.yml +++ b/.travis.yml @@ -107,7 +107,7 @@ script: fi - | if [ "$B" = "configure" ]; then - ./buildconf + autoreconf -fi ./configure --enable-debug --enable-werror make make check diff --git a/Makefile.am b/Makefile.am index 70549995..986441bd 100644 --- a/Makefile.am +++ b/Makefile.am @@ -43,7 +43,7 @@ os400/libssh2rpg/libssh2_publickey.rpgle \ os400/libssh2rpg/libssh2_sftp.rpgle \ Makefile.os400qc3.inc -EXTRA_DIST = $(WIN32FILES) buildconf $(NETWAREFILES) get_ver.awk \ +EXTRA_DIST = $(WIN32FILES) $(NETWAREFILES) get_ver.awk \ maketgz NMakefile RELEASE-NOTES libssh2.pc.in $(VMSFILES) config.rpath \ CMakeLists.txt cmake $(OS400FILES) diff --git a/buildconf b/buildconf index 558dcb66..728b3397 100755 --- a/buildconf +++ b/buildconf @@ -1,22 +1,8 @@ #!/bin/sh -LIBTOOLIZE="libtoolize" +echo "***" >&2 +echo "*** Do not use buildconf. Instead, just use: autoreconf -fi" >&2 +echo "*** Doing it for you now, but buildconf may disapear in the future." >&2 +echo "***" >&2 -if [ "x`which $LIBTOOLIZE`" = "x" ]; then - LIBTOOLIZE="glibtoolize" -fi - -if [ "x`which $LIBTOOLIZE`" = "x" ]; then - echo "Neither libtoolize nor glibtoolize could be found!" - exit 1 -fi - -${LIBTOOLIZE} --copy --automake --force -${ACLOCAL:-aclocal} -I m4 $ACLOCAL_FLAGS -${AUTOHEADER:-autoheader} -# copy the private libssh2_config.h.in to the examples dir so that -# it can be included without pointing the include path to the private -# source dir -cp src/libssh2_config.h.in example/libssh2_config.h.in -${AUTOCONF:-autoconf} -${AUTOMAKE:-automake} --add-missing --copy +${AUTORECONF:-autoreconf} -fi "${@}" diff --git a/configure.ac b/configure.ac index fe5054a0..1f60c144 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ AC_INIT(libssh2, [-], libssh2-devel@cool.haxx.se) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_SRCDIR([src]) -AC_CONFIG_HEADERS([src/libssh2_config.h example/libssh2_config.h]) +AC_CONFIG_HEADERS([src/libssh2_config.h]) AM_MAINTAINER_MODE m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) diff --git a/docs/INSTALL_AUTOTOOLS b/docs/INSTALL_AUTOTOOLS index 515001e3..a75b5181 100644 --- a/docs/INSTALL_AUTOTOOLS +++ b/docs/INSTALL_AUTOTOOLS @@ -14,9 +14,9 @@ If you want to build directly from the git repository, you must first generate the configure script and Makefile using autotools. There is a convenience script that calls all tools in the correct order. Make sure that autoconf, automake and libtool are installed on your system, -then execute the following script: +then execute: - ./buildconf + autoreconf -fi After executing this script, you can build the project as usual: diff --git a/example/.gitignore b/example/.gitignore index e3c63371..a1549e2f 100644 --- a/example/.gitignore +++ b/example/.gitignore @@ -21,8 +21,6 @@ config.h.in ssh2_exec ssh2_agent ssh2_agent_forwarding -libssh2_config.h -libssh2_config.h.in stamp-h2 sftp_append sftp_write_sliding diff --git a/example/Makefile.am b/example/Makefile.am index c238148b..ec542cd1 100644 --- a/example/Makefile.am +++ b/example/Makefile.am @@ -13,5 +13,5 @@ if HAVE_SYS_UN_H noinst_PROGRAMS += x11 endif -AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/example +AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/example -I../src LDADD = $(top_builddir)/src/libssh2.la