1 THIS TARBALL IS NOT A FULL DISTRIBUTION. 2 3 The contents of this tarball is designed to be incorporated into 4 software packages that utilize the AutoOpts option automation package 5 and are intended to be installed on systems that may not have libopts 6 installed. It is redistributable under the terms of either the LGPL 7 (see COPYING.lgpl) or under the terms of the advertising clause free BSD 8 license (see COPYING.mbsd). 9 10 Usage Instructions for autoconf/automake/libtoolized projects: 11 12 1. Install the unrolled tarball into your package source tree, 13 copying ``libopts.m4'' to your autoconf macro directory. 14 15 In your bootstrap (pre-configure) script, you can do this: 16 17 rm -rf libopts libopts-* 18 gunzip -c `autoopts-config libsrc` | tar -xvf - 19 mv -f libopts-*.*.* libopts 20 cp -fp libopts/m4/*.m4 m4/. 21 22 I tend to put my configure auxiliary files in "m4". 23 Whatever directory you choose, if it is not ".", then 24 be sure to tell autoconf about it with: 25 26 AC_CONFIG_AUX_DIR(m4) 27 28 This is one macro where you *MUST* remember to *NOT* quote 29 the argument. If you do, automake will get lost. 30 31 2. Add an invocation of either LIBOPTS_CHECK or LIBOPTS_CHECK_NOBUILD 32 to your configure.ac file. See LIBOPTS_CHECK: below for details. 33 34 3. Add the following to your top level ``Makefile.am'' file: 35 36 if NEED_LIBOPTS 37 SUBDIRS += $(LIBOPTS_DIR) 38 endif 39 40 where ``<...>'' can be whatever other files or directories you may 41 need. The SUBDIRS must be properly ordered. *PLEASE NOTE* it is 42 crucial that the SUBDIRS be set under the control of an automake 43 conditional. To work correctly, automake has to know the range of 44 possible values of SUBDIRS. It's a magical name with magical 45 properties. ``NEED_LIBOPTS'' will be correctly set by the 46 ``LIBOPTS_CHECK'' macro, above. 47 48 4. Add ``$(LIBOPTS_CFLAGS)'' to relevant compiler flags and 49 ``$(LIBOPTS_LDADD)'' to relevant link options whereever 50 you need them in your build tree. 51 52 5. Make sure your object files explicitly depend upon the 53 generated options header file. e.g.: 54 55 $(prog_OBJECTS) : prog-opts.h 56 prog-opts.h : prog-opts.c 57 prog-opts.c : prog-opts.def 58 autogen prog-opts.def 59 60 6. *OPTIONAL* -- 61 If you are creating man pages and texi documentation from 62 the program options, you will need these rules somewhere, too: 63 64 man_MANS = prog.1 65 prog.1 : prog-opts.def 66 autogen -Tagman-cmd.tpl -bprog prog-opts.def 67 68 invoke-prog.texi : prog-opts.def 69 autogen -Tagtexi-cmd.tpl prog-opts.def 70 71 If your package does not utilize the auto* tools, then you 72 will need to hand craft the rules for building the library. 73 74 LIBOPTS_CHECK: 75 76 The arguments to both macro are a relative path to the directory with 77 the libopts source code. It is optional and defaults to "libopts". 78 These macros work as follows: 79 80 1. LIBOPTS_CHECK([libopts/rel/path/optional]) 81 82 Adds two command-line options to the generated configure script, 83 --enable-local-libopts and --disable-libopts-install. AC_SUBST's 84 LIBOPTS_CFLAGS, LIBOPTS_LDADD, and LIBOPTS_DIR for use in 85 Makefile.am files. Adds Automake conditional NEED_LIBOPTS which 86 will be true when the local copy of libopts should be built. Uses 87 AC_CONFIG_FILES([$libopts-dir/Makefile]) to cause the local libopts 88 into the package build. If the optional relative path to libopts is 89 not provided, it defaults to simply "libopts". 90 91 2. LIBOPTS_CHECK_NOBUILD([libopts/rel/path/optional]) 92 93 This variant of LIBOPTS_CHECK is useful when multiple configure.ac 94 files in a package make use of a single libopts tearoff. In that 95 case, only one of the configure.ac files should build libopts and 96 others should simply use it. Consider this package arrangment: 97 98 all-tools/ 99 configure.ac 100 common-tools/ 101 configure.ac 102 libopts/ 103 104 The parent package all-tools contains a subpackage common-tools 105 which can be torn off and used independently. Programs configured 106 by both configure.ac files link against the common-tools/libopts 107 tearoff, when not using the system's libopts. The top-level 108 configure.ac uses LIBOPTS_CHECK_NOBUILD([common-tools/libopts]), 109 while common-tools/configure.ac uses LIBOPTS_CHECK. The difference 110 is LIBOPTS_CHECK_NOBUILD will never build the libopts tearoff, 111 leaving that to the subpackage configure.ac's LIBOPTS_CHECK. 112 Specifically, LIBOPTS_CHECK_NOBUILD always results in the 113 NEED_LIBOPTS Automake conditional being false, and does not invoke 114 AC_CONFIG_FILES(path-to-libopts/Makefile). 115 116 LICENSING: 117 118 This material is Copyright (C) 1992-2018 by Bruce Korb. You are 119 licensed to use this under the terms of either the GNU Lesser General 120 Public License (see: COPYING.lgpl), or, at your option, the modified 121 Berkeley Software Distribution License (see: COPYING.mbsd). Both of 122 these files should be included with this tarball. 123