2017-05-04 11:53:58 +02:00
|
|
|
autoconf-macros README
|
|
|
|
======================
|
|
|
|
|
|
|
|
Sections below are: Purpose, Contents, Usage, References
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##Purpose
|
|
|
|
|
|
|
|
The purpose of Nagios autoconf-macros is to have a central place for
|
|
|
|
autoconf macros that can be maintained in one place, but be used by any
|
|
|
|
of the Nagios software. It is intended to be used as a git subtree.
|
|
|
|
See the Usage and References section below.
|
|
|
|
|
|
|
|
Since this project will be included in several parent projects, any
|
|
|
|
changes must be as project-neutral as possible.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Contents
|
|
|
|
|
|
|
|
The collection consists of the following macros:
|
|
|
|
|
|
|
|
### AX_NAGIOS_GET_OS alias AC_NAGIOS_GET_OS
|
|
|
|
|
|
|
|
> Output Variable : opsys
|
|
|
|
|
|
|
|
This macro detects the operating system, and transforms it into a generic
|
|
|
|
label. The most common OS's that use Nagios software are recognized and
|
|
|
|
used in subsequent macros.
|
|
|
|
|
|
|
|
### AX_NAGIOS_GET_DISTRIB_TYPE alias AC_NAGIOS_GET_DISTRIB_TYPE
|
|
|
|
|
|
|
|
> Output Variables : dist_type, dist_ver
|
|
|
|
|
|
|
|
This macro detects the distribution type. For Linux, this would be rh
|
2017-05-13 13:05:54 +02:00
|
|
|
(for Red Hat and derivatives), suse (OpenSUSE, SLES, derivatives), gentoo
|
|
|
|
(Gentoo and derivatives), debian (Debian and derivatives), and so on.
|
2017-05-04 11:53:58 +02:00
|
|
|
For BSD, this would be openbsd, netbsd, freebsd, dragonfly, etc. It can
|
|
|
|
also be aix, solaris, osx, and so on for Unix operating systems.
|
|
|
|
|
|
|
|
### AX_NAGIOS_GET_INIT alias AC_NAGIOS_GET_INIT
|
|
|
|
|
|
|
|
> Output Variable : init_type
|
|
|
|
|
|
|
|
This macro detects what software is used to start daemons on bootup
|
|
|
|
or on request, generally knows as the "init system". The init_type
|
|
|
|
will generally be one of sysv (many), bsd (Slackware), newbsd (*BSD),
|
|
|
|
launchd (OS X), smf10 or smf11 (Solaris), systemd (newer Linux),
|
|
|
|
gentoo (older Gentoo), upstart (several), or unknown.
|
|
|
|
|
|
|
|
### AX_NAGIOS_GET_INETD alias AC_NAGIOS_GET_INETD
|
|
|
|
|
|
|
|
> Output Variable : inetd_type
|
|
|
|
|
|
|
|
This macro detects what software is used to start daemons or services
|
|
|
|
on demand, which historically has been "inetd". The inetd_type
|
|
|
|
will generally be one of inetd, xinetd, launchd (OS X), smf10 or smf11
|
|
|
|
(Solaris), systemd (newer Linux), upstart (several), or unknown.
|
|
|
|
|
|
|
|
### AX_NAGIOS_GET_PATHS alias AC_NAGIOS_GET_PATHS
|
|
|
|
|
|
|
|
> Output Variables : many!
|
|
|
|
|
|
|
|
This macro determines the installation paths for binaries, config files,
|
|
|
|
PID files, and so on. For a "standard" install of Nagios, NRPE, NDO Utils,
|
|
|
|
etc., most will be in the /usr/local/nagios hierarchy with startup files
|
|
|
|
located in /etc. For distributions or software repositories, the
|
|
|
|
"--enable-install-method=os" option can be used. This will determine the
|
|
|
|
O/S dependant directories, such as /usr/bin, /usr/sbin, /var/lib/nagios,
|
|
|
|
/usr/lib/nagios, etc. or for OS X, /Library/LaunchDaemons.
|
|
|
|
|
|
|
|
### AX_NAGIOS_GET_FILES alias AC_NAGIOS_GET_FILES
|
|
|
|
|
|
|
|
> Output Variables : src_init, src_inetd, src_tmpfile
|
|
|
|
|
|
|
|
Each Nagios project will have a top-level directory named "/startup/".
|
|
|
|
In that directory will be "*.in" files for the various "init_type" and
|
|
|
|
"inetd_type" systems. This macro will determine which file(s) from
|
|
|
|
that directory will be needed.
|
|
|
|
|
|
|
|
### AX_NAGIOS_GET_SSL alias AC_NAGIOS_GET_SSL
|
|
|
|
|
|
|
|
> Output Variables : HAVE_KRB5_H, HAVE_SSL, SSL_INC_DIR, SSL_LIB_DIR, CFLAGS, LDFLAGS, LIBS
|
|
|
|
|
|
|
|
This macro checks various directories for SSL libraries and header files.
|
|
|
|
The searches are based on known install locations on various operating
|
|
|
|
systems and distributions, for openssl, gnutls-openssl, and nss_compat_ossl.
|
|
|
|
If it finds the headers and libraries, it will then do an `AC_LINK_IFELSE`
|
|
|
|
on a simple program to make sure a compile and link will work correctly.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
This repo is intended to be used as a git subtree, so changes will
|
2017-05-13 13:05:54 +02:00
|
|
|
automatically propagate, and still be reasonably easy to use.
|
2017-05-04 11:53:58 +02:00
|
|
|
|
|
|
|
* First, Create, checkout, clone, or branch your project. If you do an
|
|
|
|
`ls -AF` it might look something like this:
|
|
|
|
|
|
|
|
.git/ .gitignore ChangeLog LICENSE Makefile.in
|
|
|
|
README configure.ac include/ src/
|
|
|
|
|
|
|
|
* Then make a reference to _this_ project inside your project.
|
|
|
|
|
|
|
|
git remote add autoconf-macros git@github.com:NagiosEnterprises/autoconf-macros
|
|
|
|
git subtree add --prefix=macros/ autoconf-macros master
|
|
|
|
|
|
|
|
* After executing the above two commands, if you do an `ls -AF` now,
|
|
|
|
it should look like this:
|
|
|
|
|
|
|
|
.git/ .gitignore ChangeLog LICENSE Makefile.in
|
|
|
|
README configure.ac include/ macros/ src/
|
|
|
|
The `macros/` directory has been added.
|
|
|
|
|
|
|
|
* Now do a `git push` to save everything.
|
|
|
|
|
|
|
|
* If you make any changes to autoconf-macros, commit them separately
|
|
|
|
from any parent-project changes to keep from polluting the commit
|
|
|
|
history with unrelated comments.
|
|
|
|
|
|
|
|
* To submit your changes to autoconf-macros:
|
|
|
|
|
|
|
|
git subtree push --prefix=macros autoconf-macros peters-updates
|
|
|
|
This will create a new branch called `peters-updates`. You then need to
|
|
|
|
create a _pull request_ to get your changes merged into autoconf-macros
|
|
|
|
master.
|
|
|
|
|
|
|
|
* To get the latest version of `autoconf-macros` into your parent project:
|
|
|
|
|
2017-05-13 13:05:54 +02:00
|
|
|
git subtree pull --squash --prefix=macros autoconf-macros master
|
2017-05-04 11:53:58 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## References
|
|
|
|
|
|
|
|
Now that autoconf-macros is available to your project, you will need to
|
|
|
|
reference it.
|
|
|
|
|
|
|
|
* Create (or add these lines to) file `YourProject/aclocal.m4`
|
|
|
|
|
|
|
|
m4_include([macros/ax_nagios_get_os])
|
|
|
|
m4_include([macros/ax_nagios_get_distrib])
|
|
|
|
m4_include([macros/ax_nagios_get_init])
|
|
|
|
m4_include([macros/ax_nagios_get_inetd])
|
|
|
|
m4_include([macros/ax_nagios_get_paths])
|
|
|
|
m4_include([macros/ax_nagios_get_files])
|
|
|
|
m4_include([macros/ax_nagios_get_ssl])
|
|
|
|
|
|
|
|
* In your `YourProject/configure.ac` add the following lines. A good place
|
|
|
|
to put them would be right after any `AC_PROG_*` entries:
|
|
|
|
|
|
|
|
AC_NAGIOS_GET_OS
|
|
|
|
AC_NAGIOS_GET_DISTRIB_TYPE
|
|
|
|
AC_NAGIOS_GET_INIT
|
|
|
|
AC_NAGIOS_GET_INETD
|
|
|
|
AC_NAGIOS_GET_PATHS
|
|
|
|
AC_NAGIOS_GET_FILES
|
|
|
|
|
|
|
|
* If you need SSL functionality, add the following to `YourProject/configure.ac`
|
|
|
|
where you want to check for SSL:
|
|
|
|
|
|
|
|
AC_NAGIOS_GET_SSL
|
|
|
|
|
|
|
|
* You will now be able to reference any of the variables in `config.h.in`
|
|
|
|
and any files listed in the `AC_CONFIG_FILES` macro in `configure.ac`.
|