From 5a6191b07d959140e35d4cadaf986148e6f26c5d Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sat, 8 Jan 2022 20:58:14 +0100 Subject: [PATCH] Add another example. * examples/hello-c-gnulib-conddeps: New directory. --- ChangeLog | 5 ++ examples/hello-c-gnulib-conddeps/INSTALL | 8 +++ examples/hello-c-gnulib-conddeps/Makefile.am | 22 +++++++++ examples/hello-c-gnulib-conddeps/autoclean.sh | 34 +++++++++++++ examples/hello-c-gnulib-conddeps/autogen.sh | 49 +++++++++++++++++++ examples/hello-c-gnulib-conddeps/configure.ac | 21 ++++++++ examples/hello-c-gnulib-conddeps/hello.c | 26 ++++++++++ .../hello-c-gnulib-conddeps/m4/Makefile.am | 1 + 8 files changed, 166 insertions(+) create mode 100644 examples/hello-c-gnulib-conddeps/INSTALL create mode 100644 examples/hello-c-gnulib-conddeps/Makefile.am create mode 100755 examples/hello-c-gnulib-conddeps/autoclean.sh create mode 100755 examples/hello-c-gnulib-conddeps/autogen.sh create mode 100644 examples/hello-c-gnulib-conddeps/configure.ac create mode 100644 examples/hello-c-gnulib-conddeps/hello.c create mode 100644 examples/hello-c-gnulib-conddeps/m4/Makefile.am diff --git a/ChangeLog b/ChangeLog index 64d70fd41d..7a53784ccf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2022-01-08 Bruno Haible + + Add another example. + * examples/hello-c-gnulib-conddeps: New directory. + 2022-01-08 Marc Nieper-Wißkirchen c-stack: Adapt header file for use in C++ applications. diff --git a/examples/hello-c-gnulib-conddeps/INSTALL b/examples/hello-c-gnulib-conddeps/INSTALL new file mode 100644 index 0000000000..062762be0f --- /dev/null +++ b/examples/hello-c-gnulib-conddeps/INSTALL @@ -0,0 +1,8 @@ +Installation: + ./autogen.sh + ./configure --prefix=/some/prefix + make + make install +Cleanup: + make distclean + ./autoclean.sh diff --git a/examples/hello-c-gnulib-conddeps/Makefile.am b/examples/hello-c-gnulib-conddeps/Makefile.am new file mode 100644 index 0000000000..367e8198db --- /dev/null +++ b/examples/hello-c-gnulib-conddeps/Makefile.am @@ -0,0 +1,22 @@ +# This file is in the public domain. +# +# Makefile configuration - processed by automake. + +# General automake options. +AUTOMAKE_OPTIONS = foreign no-dependencies +ACLOCAL_AMFLAGS = -I m4 -I gnulib-m4 + +# The list of subdirectories containing Makefiles. +SUBDIRS = m4 lib tests + +AM_CPPFLAGS = -Ilib -I$(srcdir)/lib + +# The list of programs that are built. +bin_PROGRAMS = hello + +# The source files of the 'hello' program. +hello_SOURCES = hello.c +hello_LDADD = lib/libgnu.a + +# Additional files to be distributed. +EXTRA_DIST = autogen.sh autoclean.sh gnulib-m4/gnulib-cache.m4 diff --git a/examples/hello-c-gnulib-conddeps/autoclean.sh b/examples/hello-c-gnulib-conddeps/autoclean.sh new file mode 100755 index 0000000000..9fd8d95346 --- /dev/null +++ b/examples/hello-c-gnulib-conddeps/autoclean.sh @@ -0,0 +1,34 @@ +#!/bin/sh +# This file is in the public domain. +# +# Script for cleaning all autogenerated files. + +test ! -f Makefile || make distclean + +# Generated by aclocal. +rm -f aclocal.m4 + +# Generated by autoconf. +rm -f configure + +# Generated by autoheader. +rm -f config.h.in + +# Generated or brought in by automake. +rm -f Makefile.in +rm -f m4/Makefile.in +rm -f build-aux/compile +rm -f build-aux/depcomp +rm -f build-aux/install-sh +rm -f build-aux/missing +rm -f build-aux/config.guess +rm -f build-aux/config.sub + +# Generated or brought in by gnulib-tool. +rm -rf lib gnulib-m4 tests +rm -f build-aux/ar-lib +rm -f build-aux/run-test +rm -f build-aux/test-driver.diff + +# Generated by autogen.sh. +rm -f build-aux/test-driver diff --git a/examples/hello-c-gnulib-conddeps/autogen.sh b/examples/hello-c-gnulib-conddeps/autogen.sh new file mode 100755 index 0000000000..a8557a9264 --- /dev/null +++ b/examples/hello-c-gnulib-conddeps/autogen.sh @@ -0,0 +1,49 @@ +#!/bin/sh +# This file is in the public domain. +# +# Script for regenerating all autogenerated files. + +# Usage: ./autogen.sh [--skip-gnulib] + +skip_gnulib=false +while :; do + case "$1" in + --skip-gnulib) skip_gnulib=true; shift;; + *) break ;; + esac +done + +if test $skip_gnulib = false; then + if test -n "$GNULIB_SRCDIR"; then + test -d "$GNULIB_SRCDIR" || { + echo "*** GNULIB_SRCDIR is set but does not point to an existing directory." 1>&2 + exit 1 + } + fi + # Now it should contain a gnulib-tool. + GNULIB_TOOL="$GNULIB_SRCDIR/gnulib-tool" + test -f "$GNULIB_TOOL" || { + echo "*** gnulib-tool not found." 1>&2 + exit 1 + } + GNULIB_MODULES=' + unistd + get_ppid_of + ' + $GNULIB_TOOL --lib=libgnu --source-base=lib --m4-base=gnulib-m4 --tests-base=tests \ + --with-tests --conditional-dependencies \ + --import $GNULIB_MODULES + mkdir -p build-aux + $GNULIB_TOOL --copy-file build-aux/ar-lib; chmod a+x build-aux/ar-lib + $GNULIB_TOOL --copy-file build-aux/config.guess; chmod a+x build-aux/config.guess + $GNULIB_TOOL --copy-file build-aux/config.sub; chmod a+x build-aux/config.sub + $GNULIB_TOOL --copy-file build-aux/run-test; chmod a+x build-aux/run-test + $GNULIB_TOOL --copy-file build-aux/test-driver.diff +fi + +aclocal -I m4 -I gnulib-m4 +autoconf +autoheader && touch config.h.in +automake -a -c +patch --quiet --forward --reject-file=/dev/null build-aux/test-driver < build-aux/test-driver.diff +rm -rf autom4te.cache diff --git a/examples/hello-c-gnulib-conddeps/configure.ac b/examples/hello-c-gnulib-conddeps/configure.ac new file mode 100644 index 0000000000..b7bd80fbf8 --- /dev/null +++ b/examples/hello-c-gnulib-conddeps/configure.ac @@ -0,0 +1,21 @@ +dnl This file is in the public domain. +dnl +dnl Configuration file - processed by autoconf. + +AC_INIT([hello-c], [0]) +AC_CONFIG_AUX_DIR([build-aux]) +AC_CONFIG_SRCDIR([hello.c]) +AM_INIT_AUTOMAKE + +AC_CONFIG_HEADERS([config.h]) + +AC_PROG_CC + +gl_EARLY +gl_INIT + +AC_CONFIG_FILES([Makefile]) +AC_CONFIG_FILES([m4/Makefile]) +AC_CONFIG_FILES([lib/Makefile]) +AC_CONFIG_FILES([tests/Makefile]) +AC_OUTPUT diff --git a/examples/hello-c-gnulib-conddeps/hello.c b/examples/hello-c-gnulib-conddeps/hello.c new file mode 100644 index 0000000000..239bca7347 --- /dev/null +++ b/examples/hello-c-gnulib-conddeps/hello.c @@ -0,0 +1,26 @@ +/* This file is in the public domain. + + Source code of the C program. */ + + +/* Every source file that uses Gnulib needs this. */ +#include + +/* Get printf() declaration. */ +#include + +/* Get getpid() declaration. */ +#include + +/* Include Gnulib header files. */ +#include "get_ppid_of.h" + +int +main () +{ + printf ("%s\n", "Hello, world!"); + printf ("This program is running as process number %d.\n", getpid ()); + printf ("The parent process number is %d.\n", get_ppid_of (getpid ())); + + return 0; +} diff --git a/examples/hello-c-gnulib-conddeps/m4/Makefile.am b/examples/hello-c-gnulib-conddeps/m4/Makefile.am new file mode 100644 index 0000000000..1b336ac1a8 --- /dev/null +++ b/examples/hello-c-gnulib-conddeps/m4/Makefile.am @@ -0,0 +1 @@ +EXTRA_DIST = -- 2.39.5