]> Savannah Git Hosting - gnulib.git/commitdiff
Add simple examples.
authorBruno Haible <bruno@clisp.org>
Wed, 15 Dec 2021 18:59:01 +0000 (19:59 +0100)
committerBruno Haible <bruno@clisp.org>
Wed, 15 Dec 2021 18:59:01 +0000 (19:59 +0100)
* examples: New directory.

40 files changed:
ChangeLog
examples/README [new file with mode: 0644]
examples/hello-c-gnulib-automakesubdir-withtests/INSTALL [new file with mode: 0644]
examples/hello-c-gnulib-automakesubdir-withtests/Makefile.am [new file with mode: 0644]
examples/hello-c-gnulib-automakesubdir-withtests/autoclean.sh [new file with mode: 0755]
examples/hello-c-gnulib-automakesubdir-withtests/autogen.sh [new file with mode: 0755]
examples/hello-c-gnulib-automakesubdir-withtests/configure.ac [new file with mode: 0644]
examples/hello-c-gnulib-automakesubdir-withtests/m4/Makefile.am [new file with mode: 0644]
examples/hello-c-gnulib-automakesubdir-withtests/src/hello.c [new file with mode: 0644]
examples/hello-c-gnulib-automakesubdir-withtests/src/local.mk [new file with mode: 0644]
examples/hello-c-gnulib-automakesubdir/INSTALL [new file with mode: 0644]
examples/hello-c-gnulib-automakesubdir/Makefile.am [new file with mode: 0644]
examples/hello-c-gnulib-automakesubdir/autoclean.sh [new file with mode: 0755]
examples/hello-c-gnulib-automakesubdir/autogen.sh [new file with mode: 0755]
examples/hello-c-gnulib-automakesubdir/configure.ac [new file with mode: 0644]
examples/hello-c-gnulib-automakesubdir/m4/Makefile.am [new file with mode: 0644]
examples/hello-c-gnulib-automakesubdir/src/hello.c [new file with mode: 0644]
examples/hello-c-gnulib-automakesubdir/src/local.mk [new file with mode: 0644]
examples/hello-c-gnulib-nonrecursive/INSTALL [new file with mode: 0644]
examples/hello-c-gnulib-nonrecursive/Makefile.am [new file with mode: 0644]
examples/hello-c-gnulib-nonrecursive/autoclean.sh [new file with mode: 0755]
examples/hello-c-gnulib-nonrecursive/autogen.sh [new file with mode: 0755]
examples/hello-c-gnulib-nonrecursive/configure.ac [new file with mode: 0644]
examples/hello-c-gnulib-nonrecursive/m4/Makefile.am [new file with mode: 0644]
examples/hello-c-gnulib-nonrecursive/src/hello.c [new file with mode: 0644]
examples/hello-c-gnulib-nonrecursive/src/local.mk [new file with mode: 0644]
examples/hello-c-gnulib/INSTALL [new file with mode: 0644]
examples/hello-c-gnulib/Makefile.am [new file with mode: 0644]
examples/hello-c-gnulib/autoclean.sh [new file with mode: 0755]
examples/hello-c-gnulib/autogen.sh [new file with mode: 0755]
examples/hello-c-gnulib/configure.ac [new file with mode: 0644]
examples/hello-c-gnulib/hello.c [new file with mode: 0644]
examples/hello-c-gnulib/m4/Makefile.am [new file with mode: 0644]
examples/hello-c-nognulib/INSTALL [new file with mode: 0644]
examples/hello-c-nognulib/Makefile.am [new file with mode: 0644]
examples/hello-c-nognulib/autoclean.sh [new file with mode: 0755]
examples/hello-c-nognulib/autogen.sh [new file with mode: 0755]
examples/hello-c-nognulib/configure.ac [new file with mode: 0644]
examples/hello-c-nognulib/hello.c [new file with mode: 0644]
examples/hello-c-nognulib/m4/Makefile.am [new file with mode: 0644]

index 00761d614520bbada0986ecb35548407cecab32a..5048863fa75c1175ce97445ee0f0ad90d5f2ea11 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2021-12-15  Bruno Haible  <bruno@clisp.org>
+
+       Add simple examples.
+       * examples: New directory.
+
 2021-12-15  Bruno Haible  <bruno@clisp.org>
 
        Accommodate non-recursive Automake in a less hacky way.
diff --git a/examples/README b/examples/README
new file mode 100644 (file)
index 0000000..ba4077a
--- /dev/null
@@ -0,0 +1,3 @@
+This directory contains small packages that
+1) show how to use Gnulib and gnulib-tool (working examples),
+2) can be used for doing regression tests, e.g. when modifying gnulib-tool.
diff --git a/examples/hello-c-gnulib-automakesubdir-withtests/INSTALL b/examples/hello-c-gnulib-automakesubdir-withtests/INSTALL
new file mode 100644 (file)
index 0000000..062762b
--- /dev/null
@@ -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-automakesubdir-withtests/Makefile.am b/examples/hello-c-gnulib-automakesubdir-withtests/Makefile.am
new file mode 100644 (file)
index 0000000..cb42909
--- /dev/null
@@ -0,0 +1,28 @@
+# This file is in the public domain.
+#
+# Makefile configuration - processed by automake.
+
+# General automake options.
+AUTOMAKE_OPTIONS = foreign no-dependencies subdir-objects
+ACLOCAL_AMFLAGS = -I m4 -I gnulib-m4
+
+# The list of subdirectories containing Makefiles.
+SUBDIRS = . tests
+
+AM_CPPFLAGS = -Ilib -I$(srcdir)/lib
+
+# Additional files to be distributed.
+EXTRA_DIST = autogen.sh autoclean.sh gnulib-m4/gnulib-cache.m4
+
+BUILT_SOURCES =
+SUFFIXES =
+MOSTLYCLEANFILES =
+MOSTLYCLEANDIRS =
+CLEANFILES =
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+
+noinst_LIBRARIES =
+
+include lib/gnulib.mk
+include src/local.mk
diff --git a/examples/hello-c-gnulib-automakesubdir-withtests/autoclean.sh b/examples/hello-c-gnulib-automakesubdir-withtests/autoclean.sh
new file mode 100755 (executable)
index 0000000..9fd8d95
--- /dev/null
@@ -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-automakesubdir-withtests/autogen.sh b/examples/hello-c-gnulib-automakesubdir-withtests/autogen.sh
new file mode 100755 (executable)
index 0000000..1fbc64d
--- /dev/null
@@ -0,0 +1,48 @@
+#!/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 --makefile-name=gnulib.mk --tests-makefile-name=Makefile.am --automake-subdir \
+    --import $GNULIB_MODULES
+  $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-automakesubdir-withtests/configure.ac b/examples/hello-c-gnulib-automakesubdir-withtests/configure.ac
new file mode 100644 (file)
index 0000000..d215b18
--- /dev/null
@@ -0,0 +1,19 @@
+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([src/hello.c])
+AM_INIT_AUTOMAKE
+
+AC_CONFIG_HEADERS([config.h])
+
+AC_PROG_CC
+
+gl_EARLY
+gl_INIT
+
+AC_CONFIG_FILES([Makefile])
+AC_CONFIG_FILES([tests/Makefile])
+AC_OUTPUT
diff --git a/examples/hello-c-gnulib-automakesubdir-withtests/m4/Makefile.am b/examples/hello-c-gnulib-automakesubdir-withtests/m4/Makefile.am
new file mode 100644 (file)
index 0000000..1b336ac
--- /dev/null
@@ -0,0 +1 @@
+EXTRA_DIST =
diff --git a/examples/hello-c-gnulib-automakesubdir-withtests/src/hello.c b/examples/hello-c-gnulib-automakesubdir-withtests/src/hello.c
new file mode 100644 (file)
index 0000000..239bca7
--- /dev/null
@@ -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 <config.h>
+
+/* Get printf() declaration.  */
+#include <stdio.h>
+
+/* Get getpid() declaration.  */
+#include <unistd.h>
+
+/* 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-automakesubdir-withtests/src/local.mk b/examples/hello-c-gnulib-automakesubdir-withtests/src/local.mk
new file mode 100644 (file)
index 0000000..6922611
--- /dev/null
@@ -0,0 +1,7 @@
+
+# The list of programs that are built.
+bin_PROGRAMS = src/hello
+
+# The source files of the 'hello' program.
+src_hello_SOURCES = src/hello.c
+src_hello_LDADD = lib/libgnu.a
diff --git a/examples/hello-c-gnulib-automakesubdir/INSTALL b/examples/hello-c-gnulib-automakesubdir/INSTALL
new file mode 100644 (file)
index 0000000..062762b
--- /dev/null
@@ -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-automakesubdir/Makefile.am b/examples/hello-c-gnulib-automakesubdir/Makefile.am
new file mode 100644 (file)
index 0000000..d239c3c
--- /dev/null
@@ -0,0 +1,28 @@
+# This file is in the public domain.
+#
+# Makefile configuration - processed by automake.
+
+# General automake options.
+AUTOMAKE_OPTIONS = foreign no-dependencies subdir-objects
+ACLOCAL_AMFLAGS = -I m4 -I gnulib-m4
+
+# The list of subdirectories containing Makefiles.
+SUBDIRS =
+
+AM_CPPFLAGS = -Ilib -I$(srcdir)/lib
+
+# Additional files to be distributed.
+EXTRA_DIST = autogen.sh autoclean.sh gnulib-m4/gnulib-cache.m4
+
+BUILT_SOURCES =
+SUFFIXES =
+MOSTLYCLEANFILES =
+MOSTLYCLEANDIRS =
+CLEANFILES =
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+
+noinst_LIBRARIES =
+
+include lib/gnulib.mk
+include src/local.mk
diff --git a/examples/hello-c-gnulib-automakesubdir/autoclean.sh b/examples/hello-c-gnulib-automakesubdir/autoclean.sh
new file mode 100755 (executable)
index 0000000..a767a3f
--- /dev/null
@@ -0,0 +1,29 @@
+#!/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
+rm -f build-aux/ar-lib
diff --git a/examples/hello-c-gnulib-automakesubdir/autogen.sh b/examples/hello-c-gnulib-automakesubdir/autogen.sh
new file mode 100755 (executable)
index 0000000..da650a3
--- /dev/null
@@ -0,0 +1,46 @@
+#!/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='
+    alloca
+    unistd
+    get_ppid_of
+  '
+  $GNULIB_TOOL --lib=libgnu --source-base=lib --m4-base=gnulib-m4 \
+    --makefile-name=gnulib.mk --automake-subdir \
+    --import $GNULIB_MODULES
+  $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
+fi
+
+aclocal -I m4 -I gnulib-m4
+autoconf
+autoheader && touch config.h.in
+automake -a -c
+rm -rf autom4te.cache
diff --git a/examples/hello-c-gnulib-automakesubdir/configure.ac b/examples/hello-c-gnulib-automakesubdir/configure.ac
new file mode 100644 (file)
index 0000000..d30a9ec
--- /dev/null
@@ -0,0 +1,18 @@
+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([src/hello.c])
+AM_INIT_AUTOMAKE
+
+AC_CONFIG_HEADERS([config.h])
+
+AC_PROG_CC
+
+gl_EARLY
+gl_INIT
+
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
diff --git a/examples/hello-c-gnulib-automakesubdir/m4/Makefile.am b/examples/hello-c-gnulib-automakesubdir/m4/Makefile.am
new file mode 100644 (file)
index 0000000..1b336ac
--- /dev/null
@@ -0,0 +1 @@
+EXTRA_DIST =
diff --git a/examples/hello-c-gnulib-automakesubdir/src/hello.c b/examples/hello-c-gnulib-automakesubdir/src/hello.c
new file mode 100644 (file)
index 0000000..239bca7
--- /dev/null
@@ -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 <config.h>
+
+/* Get printf() declaration.  */
+#include <stdio.h>
+
+/* Get getpid() declaration.  */
+#include <unistd.h>
+
+/* 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-automakesubdir/src/local.mk b/examples/hello-c-gnulib-automakesubdir/src/local.mk
new file mode 100644 (file)
index 0000000..6922611
--- /dev/null
@@ -0,0 +1,7 @@
+
+# The list of programs that are built.
+bin_PROGRAMS = src/hello
+
+# The source files of the 'hello' program.
+src_hello_SOURCES = src/hello.c
+src_hello_LDADD = lib/libgnu.a
diff --git a/examples/hello-c-gnulib-nonrecursive/INSTALL b/examples/hello-c-gnulib-nonrecursive/INSTALL
new file mode 100644 (file)
index 0000000..062762b
--- /dev/null
@@ -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-nonrecursive/Makefile.am b/examples/hello-c-gnulib-nonrecursive/Makefile.am
new file mode 100644 (file)
index 0000000..d239c3c
--- /dev/null
@@ -0,0 +1,28 @@
+# This file is in the public domain.
+#
+# Makefile configuration - processed by automake.
+
+# General automake options.
+AUTOMAKE_OPTIONS = foreign no-dependencies subdir-objects
+ACLOCAL_AMFLAGS = -I m4 -I gnulib-m4
+
+# The list of subdirectories containing Makefiles.
+SUBDIRS =
+
+AM_CPPFLAGS = -Ilib -I$(srcdir)/lib
+
+# Additional files to be distributed.
+EXTRA_DIST = autogen.sh autoclean.sh gnulib-m4/gnulib-cache.m4
+
+BUILT_SOURCES =
+SUFFIXES =
+MOSTLYCLEANFILES =
+MOSTLYCLEANDIRS =
+CLEANFILES =
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+
+noinst_LIBRARIES =
+
+include lib/gnulib.mk
+include src/local.mk
diff --git a/examples/hello-c-gnulib-nonrecursive/autoclean.sh b/examples/hello-c-gnulib-nonrecursive/autoclean.sh
new file mode 100755 (executable)
index 0000000..bb8789d
--- /dev/null
@@ -0,0 +1,30 @@
+#!/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
+rm -f build-aux/ar-lib
+rm -f build-aux/prefix-gnulib-mk
diff --git a/examples/hello-c-gnulib-nonrecursive/autogen.sh b/examples/hello-c-gnulib-nonrecursive/autogen.sh
new file mode 100755 (executable)
index 0000000..eb97f95
--- /dev/null
@@ -0,0 +1,48 @@
+#!/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='
+    alloca
+    unistd
+    get_ppid_of
+    non-recursive-gnulib-prefix-hack
+  '
+  $GNULIB_TOOL --lib=libgnu --source-base=lib --m4-base=gnulib-m4 \
+    --makefile-name=gnulib.mk \
+    --import $GNULIB_MODULES
+  build-aux/prefix-gnulib-mk --lib-name=libgnu lib/gnulib.mk
+  $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
+fi
+
+aclocal -I m4 -I gnulib-m4
+autoconf
+autoheader && touch config.h.in
+automake -a -c
+rm -rf autom4te.cache
diff --git a/examples/hello-c-gnulib-nonrecursive/configure.ac b/examples/hello-c-gnulib-nonrecursive/configure.ac
new file mode 100644 (file)
index 0000000..d30a9ec
--- /dev/null
@@ -0,0 +1,18 @@
+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([src/hello.c])
+AM_INIT_AUTOMAKE
+
+AC_CONFIG_HEADERS([config.h])
+
+AC_PROG_CC
+
+gl_EARLY
+gl_INIT
+
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
diff --git a/examples/hello-c-gnulib-nonrecursive/m4/Makefile.am b/examples/hello-c-gnulib-nonrecursive/m4/Makefile.am
new file mode 100644 (file)
index 0000000..1b336ac
--- /dev/null
@@ -0,0 +1 @@
+EXTRA_DIST =
diff --git a/examples/hello-c-gnulib-nonrecursive/src/hello.c b/examples/hello-c-gnulib-nonrecursive/src/hello.c
new file mode 100644 (file)
index 0000000..239bca7
--- /dev/null
@@ -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 <config.h>
+
+/* Get printf() declaration.  */
+#include <stdio.h>
+
+/* Get getpid() declaration.  */
+#include <unistd.h>
+
+/* 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-nonrecursive/src/local.mk b/examples/hello-c-gnulib-nonrecursive/src/local.mk
new file mode 100644 (file)
index 0000000..6922611
--- /dev/null
@@ -0,0 +1,7 @@
+
+# The list of programs that are built.
+bin_PROGRAMS = src/hello
+
+# The source files of the 'hello' program.
+src_hello_SOURCES = src/hello.c
+src_hello_LDADD = lib/libgnu.a
diff --git a/examples/hello-c-gnulib/INSTALL b/examples/hello-c-gnulib/INSTALL
new file mode 100644 (file)
index 0000000..062762b
--- /dev/null
@@ -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/Makefile.am b/examples/hello-c-gnulib/Makefile.am
new file mode 100644 (file)
index 0000000..367e819
--- /dev/null
@@ -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/autoclean.sh b/examples/hello-c-gnulib/autoclean.sh
new file mode 100755 (executable)
index 0000000..9fd8d95
--- /dev/null
@@ -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/autogen.sh b/examples/hello-c-gnulib/autogen.sh
new file mode 100755 (executable)
index 0000000..10702d7
--- /dev/null
@@ -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 \
+    --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/configure.ac b/examples/hello-c-gnulib/configure.ac
new file mode 100644 (file)
index 0000000..b7bd80f
--- /dev/null
@@ -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/hello.c b/examples/hello-c-gnulib/hello.c
new file mode 100644 (file)
index 0000000..239bca7
--- /dev/null
@@ -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 <config.h>
+
+/* Get printf() declaration.  */
+#include <stdio.h>
+
+/* Get getpid() declaration.  */
+#include <unistd.h>
+
+/* 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/m4/Makefile.am b/examples/hello-c-gnulib/m4/Makefile.am
new file mode 100644 (file)
index 0000000..1b336ac
--- /dev/null
@@ -0,0 +1 @@
+EXTRA_DIST =
diff --git a/examples/hello-c-nognulib/INSTALL b/examples/hello-c-nognulib/INSTALL
new file mode 100644 (file)
index 0000000..062762b
--- /dev/null
@@ -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-nognulib/Makefile.am b/examples/hello-c-nognulib/Makefile.am
new file mode 100644 (file)
index 0000000..0c4300a
--- /dev/null
@@ -0,0 +1,19 @@
+# This file is in the public domain.
+#
+# Makefile configuration - processed by automake.
+
+# General automake options.
+AUTOMAKE_OPTIONS = foreign no-dependencies
+ACLOCAL_AMFLAGS = -I m4
+
+# The list of subdirectories containing Makefiles.
+SUBDIRS = m4
+
+# The list of programs that are built.
+bin_PROGRAMS = hello
+
+# The source files of the 'hello' program.
+hello_SOURCES = hello.c
+
+# Additional files to be distributed.
+EXTRA_DIST = autogen.sh autoclean.sh
diff --git a/examples/hello-c-nognulib/autoclean.sh b/examples/hello-c-nognulib/autoclean.sh
new file mode 100755 (executable)
index 0000000..8de4aa5
--- /dev/null
@@ -0,0 +1,21 @@
+#!/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 or brought in by automake.
+rm -f Makefile.in
+rm -f m4/Makefile.in
+rm -f build-aux/compile
+rm -f build-aux/install-sh
+rm -f build-aux/missing
+rm -f build-aux/config.guess
+rm -f build-aux/config.sub
diff --git a/examples/hello-c-nognulib/autogen.sh b/examples/hello-c-nognulib/autogen.sh
new file mode 100755 (executable)
index 0000000..a20bbb9
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh
+# This file is in the public domain.
+#
+# Script for regenerating all autogenerated files.
+
+aclocal -I m4
+autoconf
+automake -a -c
+rm -rf autom4te.cache
diff --git a/examples/hello-c-nognulib/configure.ac b/examples/hello-c-nognulib/configure.ac
new file mode 100644 (file)
index 0000000..fbb158a
--- /dev/null
@@ -0,0 +1,15 @@
+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_PROG_CC
+AC_CHECK_HEADERS([unistd.h])
+
+AC_CONFIG_FILES([Makefile])
+AC_CONFIG_FILES([m4/Makefile])
+AC_OUTPUT
diff --git a/examples/hello-c-nognulib/hello.c b/examples/hello-c-nognulib/hello.c
new file mode 100644 (file)
index 0000000..d1c79ae
--- /dev/null
@@ -0,0 +1,22 @@
+/* This file is in the public domain.
+
+   Source code of the C program.  */
+
+
+/* Get printf() declaration.  */
+#include <stdio.h>
+
+/* Get getpid() declaration.  */
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+int
+main ()
+{
+  printf ("%s\n", "Hello, world!");
+  printf ("This program is running as process number %d.", getpid ());
+  putchar ('\n');
+
+  return 0;
+}
diff --git a/examples/hello-c-nognulib/m4/Makefile.am b/examples/hello-c-nognulib/m4/Makefile.am
new file mode 100644 (file)
index 0000000..1b336ac
--- /dev/null
@@ -0,0 +1 @@
+EXTRA_DIST =