From f0caf1fffee582d7ef8c6f007f3a316ff2f54edf Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Fri, 14 Jun 2024 13:31:45 +0200 Subject: [PATCH] relocatable-prog: Implement --help and --version for all programs. * build-aux/config.libpath (func_usage, func_version, func_fatal_error): New functions. Add command-line option processing. * build-aux/libtool-reloc (func_usage, func_version, func_fatal_error): New functions. Add command-line option processing. * build-aux/reloc-ldflags (func_usage, func_version, func_fatal_error): New functions. Add command-line option processing. --- ChangeLog | 13 ++++++ build-aux/config.libpath | 82 +++++++++++++++++++++++++++++++---- build-aux/libtool-reloc | 61 +++++++++++++++++++++++++- build-aux/reloc-ldflags | 92 ++++++++++++++++++++++++++++++++++------ 4 files changed, 226 insertions(+), 22 deletions(-) diff --git a/ChangeLog b/ChangeLog index bd6d21d2c0..76d15ccf4f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2024-06-14 Bruno Haible + + relocatable-prog: Implement --help and --version for all programs. + * build-aux/config.libpath (func_usage, func_version, func_fatal_error): + New functions. + Add command-line option processing. + * build-aux/libtool-reloc (func_usage, func_version, func_fatal_error): + New functions. + Add command-line option processing. + * build-aux/reloc-ldflags (func_usage, func_version, func_fatal_error): + New functions. + Add command-line option processing. + 2024-06-14 Bruno Haible relocatable-prog-wrapper: Implement --help, --version for all programs. diff --git a/build-aux/config.libpath b/build-aux/config.libpath index 323b7669c8..173cd0d90b 100755 --- a/build-aux/config.libpath +++ b/build-aux/config.libpath @@ -23,14 +23,80 @@ # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. -# -# The first argument passed to this file is the canonical host specification, -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# The environment variable LD should be set by the caller. -# -# The set of defined variables is at the end of this script. + +# func_usage +# outputs to stdout the --help usage message. +func_usage () +{ + echo "\ +Usage: config.libpath [OPTION] HOST + +Prints shell variable assignments that describe how to set the +run time search path of shared libraries in an executable at run time. + +The first argument passed to this file is the canonical host specification, + CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +or + CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM + +The environment variable LD should be set by the caller. + +The set of defined variables is at the end of this script. + +Options: + --help print this help and exit + --version print version information and exit + +Send patches and bug reports to ." +} + +# func_version +# outputs to stdout the --version message. +func_version () +{ + echo "config.libpath (GNU gnulib, module relocatable-prog)" + echo "Copyright (C) 2024 Free Software Foundation, Inc. +License GPLv3+: GNU GPL version 3 or later +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law." + echo + printf 'Written by %s.\n' "Bruno Haible" +} + +# func_fatal_error message +# outputs to stderr a fatal error message, and terminates the program. +func_fatal_error () +{ + echo "config.libpath: *** $1" 1>&2 + echo "config.libpath: *** Stop." 1>&2 + exit 1 +} + +# Command-line option processing. +while test $# -gt 0; do + case "$1" in + --help | --hel | --he | --h ) + func_usage + exit 0 ;; + --version | --versio | --versi | --vers | --ver | --ve | --v ) + func_version + exit 0 ;; + -- ) # Stop option processing + shift; break ;; + -* ) + func_fatal_error "unrecognized option: $1" + ;; + * ) + break ;; + esac +done + +if test $# -gt 1; then + func_fatal_error "too many arguments" +fi +if test $# -lt 1; then + func_fatal_error "too few arguments" +fi host="$1" host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` diff --git a/build-aux/libtool-reloc b/build-aux/libtool-reloc index 50c571dd0c..2f6e84d038 100755 --- a/build-aux/libtool-reloc +++ b/build-aux/libtool-reloc @@ -16,7 +16,43 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -# Usage: libtool-reloc libtool LIBTOOL_ARGUMENTS +# func_usage +# outputs to stdout the --help usage message. +func_usage () +{ + echo "\ +Usage: libtool-reloc [OPTION]... libtool LIBTOOL_ARGUMENTS + +Invokes GNU libtool, with support for relocatable programs. + +Options: + --help print this help and exit + --version print version information and exit + +Send patches and bug reports to ." +} + +# func_version +# outputs to stdout the --version message. +func_version () +{ + echo "libtool-reloc (GNU gnulib, module relocatable-prog)" + echo "Copyright (C) 2024 Free Software Foundation, Inc. +License GPLv3+: GNU GPL version 3 or later +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law." + echo + printf 'Written by %s.\n' "Bruno Haible" +} + +# func_fatal_error message +# outputs to stderr a fatal error message, and terminates the program. +func_fatal_error () +{ + echo "libtool-reloc: *** $1" 1>&2 + echo "libtool-reloc: *** Stop." 1>&2 + exit 1 +} # Outputs a command and runs it. func_verbose () @@ -27,6 +63,29 @@ func_verbose () "$@" } +# Command-line option processing. +while test $# -gt 0; do + case "$1" in + --help | --hel | --he | --h ) + func_usage + exit 0 ;; + --version | --versio | --versi | --vers | --ver | --ve | --v ) + func_version + exit 0 ;; + -- ) # Stop option processing + shift; break ;; + -* ) + func_fatal_error "unrecognized option: $1" + ;; + * ) + break ;; + esac +done + +if test $# -lt 1; then + func_fatal_error "too few arguments" +fi + # Determine the mode from the arguments. mode= for arg diff --git a/build-aux/reloc-ldflags b/build-aux/reloc-ldflags index f6b636624f..828451b4ef 100755 --- a/build-aux/reloc-ldflags +++ b/build-aux/reloc-ldflags @@ -1,5 +1,5 @@ #! /bin/sh -# Output a system dependent linker command for putting a relocatable library +# Output a system dependent compiler option for putting a relocatable library # search path into an executable. # # Copyright 2003-2024 Free Software Foundation, Inc. @@ -22,18 +22,84 @@ # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. -# -# The first argument passed to this file is the canonical host specification, -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# The environment variable LD should be set by the caller. -# -# The second argument is a colon separated list of directories that contain -# the libraries at installation time. -# -# The third argument is the directory into which the executable is going to be -# installed. + +# func_usage +# outputs to stdout the --help usage message. +func_usage () +{ + echo "\ +Usage: reloc-ldflags [OPTION]... HOST LIBRARY_PATH_VALUE INSTALLDIR + +Prints a system dependent compiler option for putting a relocatable library +search path into an executable. + +The first argument passed to this file is the canonical host specification, + CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +or + CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM + +The second argument is a colon separated list of directories that contain +the libraries at installation time. + +The third argument is the directory into which the executable is going to be +installed. + +The environment variable LD should be set by the caller. + +Options: + --help print this help and exit + --version print version information and exit + +Send patches and bug reports to ." +} + +# func_version +# outputs to stdout the --version message. +func_version () +{ + echo "reloc-ldflags (GNU gnulib, relocatable-prog)" + echo "Copyright (C) 2024 Free Software Foundation, Inc. +License GPLv3+: GNU GPL version 3 or later +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law." + echo + printf 'Written by %s.\n' "Bruno Haible" +} + +# func_fatal_error message +# outputs to stderr a fatal error message, and terminates the program. +func_fatal_error () +{ + echo "reloc-ldflags: *** $1" 1>&2 + echo "reloc-ldflags: *** Stop." 1>&2 + exit 1 +} + +# Command-line option processing. +while test $# -gt 0; do + case "$1" in + --help | --hel | --he | --h ) + func_usage + exit 0 ;; + --version | --versio | --versi | --vers | --ver | --ve | --v ) + func_version + exit 0 ;; + -- ) # Stop option processing + shift; break ;; + -* ) + func_fatal_error "unrecognized option: $1" + ;; + * ) + break ;; + esac +done + +if test $# -gt 3; then + func_fatal_error "too many arguments" +fi +if test $# -lt 3; then + func_fatal_error "too few arguments" +fi host="$1" host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -- 2.39.5