autoconfization
This commit is contained in:
+23
@@ -0,0 +1,23 @@
|
||||
.deps
|
||||
.libs
|
||||
*.cache
|
||||
configure
|
||||
Makefile
|
||||
stamp-*
|
||||
*.la
|
||||
*.lo
|
||||
*.log
|
||||
*.so.2
|
||||
Makefile.in
|
||||
aclocal.m4
|
||||
config.guess
|
||||
config.h
|
||||
config.h.in
|
||||
config.rpath
|
||||
config.status
|
||||
config.sub
|
||||
depcomp
|
||||
install-sh
|
||||
libtool
|
||||
ltmain.sh
|
||||
missing
|
||||
@@ -1,32 +0,0 @@
|
||||
# $Id$
|
||||
|
||||
CFLAGS=-Wall -pipe -W -O2 -Wextra -Wno-unused-parameter -fPIC
|
||||
VERSION=0.1
|
||||
|
||||
libnss_myhostname.so.2: nss-myhostname.o
|
||||
$(CC) $(CFLAGS) -shared -o $@ -Wl,-soname,$@ $^
|
||||
strip $@
|
||||
|
||||
install:
|
||||
install -D -g root -m 644 -o root -v libnss_myhostname.so.2 /lib/libnss_myhostname.so.2
|
||||
|
||||
clean:
|
||||
rm -f *.o *~ libnss_myhostname.so.2
|
||||
|
||||
nss-myhostname-$(VERSION).tar.gz:
|
||||
rm -rf "nss-myhostname-$(VERSION)"
|
||||
mkdir "nss-myhostname-$(VERSION)"
|
||||
cp Makefile LICENSE README *.c "nss-myhostname-$(VERSION)"/
|
||||
rm -f "nss-myhostname-$(VERSION).tar.gz"
|
||||
tar czf "nss-myhostname-$(VERSION).tar.gz" "nss-myhostname-$(VERSION)"/
|
||||
rm -rf "nss-myhostname-$(VERSION)"
|
||||
|
||||
tar: nss-myhostname-$(VERSION).tar.gz
|
||||
|
||||
homepage: tar
|
||||
test -d $$HOME/homepage/private
|
||||
mkdir -p $$HOME/homepage/private/projects/nss-myhostname
|
||||
cp nss-myhostname-$(VERSION).tar.gz README $$HOME/homepage/private/projects/nss-myhostname
|
||||
ln -sf README $$HOME/homepage/private/projects/nss-myhostname/README.txt
|
||||
|
||||
.PHONY: clean install tar homepage
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
# This file is part of nss-myhostname.
|
||||
#
|
||||
# Copyright 2008 Lennart Poettering
|
||||
#
|
||||
# nss-myhostname is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Lesser General Public License
|
||||
# as published by the Free Software Foundation, either version 2.1 of
|
||||
# the License, or (at your option) any later version.
|
||||
#
|
||||
# nss-myhostname is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with nss-myhostname. If not, If not, see
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
lib_LTLIBRARIES = libnss_myhostname.la
|
||||
|
||||
EXTRA_DIST=bootstrap.sh README LICENSE
|
||||
SUBDIRS=doc
|
||||
|
||||
MAINTAINERCLEANFILES=README
|
||||
noinst_DATA = README
|
||||
|
||||
README:
|
||||
rm -f README
|
||||
$(MAKE) -C doc README
|
||||
cd $(srcdir) && ln -s doc/README README
|
||||
|
||||
homepage: all dist
|
||||
test -d $$HOME/homepage/private
|
||||
mkdir -p $$HOME/homepage/private/projects/nss-myhostname
|
||||
cp nss-myhostname-@PACKAGE_VERSION@.tar.gz doc/README.html doc/style.css $$HOME/homepage/private/projects/nss-myhostname
|
||||
ln -sf README.html $$HOME/homepage/private/projects/nss-myhostname/index.html
|
||||
|
||||
.PHONY: homepage
|
||||
|
||||
libnss_myhostname_la_SOURCES = nss-myhostname.c
|
||||
libnss_myhostname_la_LDFLAGS = -avoid-version -module -export-dynamic -shrext .so.2
|
||||
|
||||
install-exec-hook:
|
||||
rm -f $(DESTDIR)$(libdir)/libnss_myhostname.la
|
||||
rm -f $(DESTDIR)$(libdir)/libnss_myhostname_minimal.la
|
||||
|
||||
uninstall-hook:
|
||||
rm -f $(DESTDIR)$(libdir)/libnss_myhostname.so.2
|
||||
rm -f $(DESTDIR)$(libdir)/libnss_myhostname_minimal.so.2
|
||||
Executable
+66
@@ -0,0 +1,66 @@
|
||||
#!/bin/bash
|
||||
|
||||
# This file is part of nss-myhostname.
|
||||
#
|
||||
# Copyright 2008 Lennart Poettering
|
||||
#
|
||||
# nss-myhostname is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Lesser General Public License
|
||||
# as published by the Free Software Foundation, either version 2.1 of
|
||||
# the License, or (at your option) any later version.
|
||||
#
|
||||
# nss-myhostname is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with nss-myhostname. If not, If not, see
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
|
||||
VERSION=1.9
|
||||
|
||||
run_versioned() {
|
||||
local P
|
||||
local V
|
||||
|
||||
V=$(echo "$2" | sed -e 's,\.,,g')
|
||||
|
||||
if [ -e "`which $1$V 2> /dev/null`" ] ; then
|
||||
P="$1$V"
|
||||
else
|
||||
if [ -e "`which $1-$2 2> /dev/null`" ] ; then
|
||||
P="$1-$2"
|
||||
else
|
||||
P="$1"
|
||||
fi
|
||||
fi
|
||||
|
||||
shift 2
|
||||
"$P" "$@"
|
||||
}
|
||||
|
||||
set -ex
|
||||
|
||||
if [ "x$1" = "xam" ] ; then
|
||||
run_versioned automake "$VERSION" -a -c --foreign
|
||||
./config.status
|
||||
else
|
||||
rm -rf autom4te.cache
|
||||
rm -f config.cache
|
||||
|
||||
touch config.rpath
|
||||
test "x$LIBTOOLIZE" = "x" && LIBTOOLIZE=libtoolize
|
||||
|
||||
mkdir -p m4
|
||||
"$LIBTOOLIZE" -c --force
|
||||
run_versioned aclocal "$VERSION" -I m4
|
||||
run_versioned autoconf 2.59 -Wall
|
||||
run_versioned autoheader 2.59
|
||||
run_versioned automake "$VERSION" --copy --foreign --add-missing
|
||||
|
||||
if test "x$NOCONFIGURE" = "x"; then
|
||||
CFLAGS="-g -O0" ./configure --sysconfdir=/etc --localstatedir=/var "$@"
|
||||
make clean
|
||||
fi
|
||||
fi
|
||||
@@ -0,0 +1,76 @@
|
||||
# -*- Autoconf -*-
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
# This file is part of nss-myhostname.
|
||||
#
|
||||
# Copyright 2008 Lennart Poettering
|
||||
#
|
||||
# nss-myhostname is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Lesser General Public License
|
||||
# as published by the Free Software Foundation, either version 2.1 of
|
||||
# the License, or (at your option) any later version.
|
||||
#
|
||||
# nss-myhostname is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with nss-myhostname. If not, If not, see
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
|
||||
AC_PREREQ(2.62)
|
||||
AC_INIT([nss-myhostname],[0.2],[mzzlubfganzr (at) 0pointer (dot) de])
|
||||
AC_CONFIG_SRCDIR([nss-myhostname.c])
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
AC_CONFIG_MACRO_DIR(m4)
|
||||
|
||||
AM_INIT_AUTOMAKE([foreign 1.9 -Wall])
|
||||
|
||||
AC_SUBST(PACKAGE_URL, [http://0pointer.de/lennart/projects/nss-myhostname/])
|
||||
|
||||
ac_default_prefix="/"
|
||||
|
||||
# Checks for programs.
|
||||
AC_PROG_CC
|
||||
AC_PROG_CC_C99
|
||||
AC_USE_SYSTEM_EXTENSIONS
|
||||
AC_PROG_CPP
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_LN_S
|
||||
AC_PROG_MAKE_SET
|
||||
|
||||
# GCC flags
|
||||
|
||||
DESIRED_FLAGS="-Wall -W -Wextra -pedantic -pipe -Wformat -Wold-style-definition -Wdeclaration-after-statement -Wfloat-equal -Wmissing-declarations -Wmissin
|
||||
g-prototypes -Wstrict-prototypes -Wredundant-decls -Wmissing-noreturn -Wshadow -Wendif-labels -Wpointer-arith -Wcast-align -Wwrite-strings -Winline -Wno-un
|
||||
used-parameter -ffast-math"
|
||||
|
||||
for flag in $DESIRED_FLAGS ; do
|
||||
CC_CHECK_CFLAGS([$flag], [CFLAGS="$CFLAGS $flag"])
|
||||
done
|
||||
|
||||
# libtool stuff
|
||||
AC_DISABLE_STATIC
|
||||
AC_PROG_LIBTOOL
|
||||
|
||||
# Checks for header files.
|
||||
AC_HEADER_STDC
|
||||
AC_CHECK_HEADERS([arpa/inet.h fcntl.h inttypes.h netdb.h netinet/in.h stdlib.h string.h sys/socket.h sys/time.h unistd.h nss.h sys/ioctl.h])
|
||||
|
||||
# Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_C_CONST
|
||||
AC_TYPE_SIZE_T
|
||||
AC_HEADER_TIME
|
||||
|
||||
# Checks for library functions.
|
||||
AC_FUNC_MALLOC
|
||||
AC_FUNC_SELECT_ARGTYPES
|
||||
AC_CHECK_FUNCS([gethostbyaddr gethostbyname gettimeofday inet_ntoa memset select socket strcspn strdup strerror strncasecmp strcasecmp strspn])
|
||||
|
||||
# LYNX documentation generation
|
||||
ZP_LYNX_DOC
|
||||
|
||||
AC_CONFIG_FILES([Makefile doc/Makefile doc/README.html ])
|
||||
|
||||
AC_OUTPUT
|
||||
@@ -0,0 +1,2 @@
|
||||
README
|
||||
README.html
|
||||
@@ -0,0 +1,38 @@
|
||||
# This file is part of nss-myhostname.
|
||||
#
|
||||
# Copyright 2008 Lennart Poettering
|
||||
#
|
||||
# nss-myhostname is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Lesser General Public License
|
||||
# as published by the Free Software Foundation, either version 2.1 of
|
||||
# the License, or (at your option) any later version.
|
||||
#
|
||||
# nss-myhostname is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public
|
||||
# License along with nss-myhostname. If not, If not, see
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
|
||||
dist_html_DATA = README.html style.css
|
||||
EXTRA_DIST = README.html.in
|
||||
|
||||
MAINTAINERCLEANFILES = README.html
|
||||
CLEANFILES =
|
||||
|
||||
if USE_LYNX
|
||||
dist_doc_DATA = README
|
||||
MAINTAINERCLEANFILES += README
|
||||
|
||||
README: README.html
|
||||
lynx --dump $^ | sed 's,file://localhost/.*/doc/README.html,README,' > $@
|
||||
|
||||
CLEANFILES += README
|
||||
endif
|
||||
|
||||
tidy: README.html
|
||||
tidy -qe < README.html ; true
|
||||
|
||||
.PHONY: tidy
|
||||
@@ -0,0 +1,158 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?> <!-- -*-html-helper-*- -->
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<title>nss-myhostname @PACKAGE_VERSION@</title>
|
||||
<link rel="stylesheet" type="text/css" href="style.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1><a name="top">nss-myhostname @PACKAGE_VERSION@</a></h1>
|
||||
|
||||
<p><i>Copyright 2005-2008 Lennart Poettering <@PACKAGE_BUGREPORT@></i></p>
|
||||
|
||||
<ul class="toc">
|
||||
<li><a href="#license">License</a></li>
|
||||
<li><a href="#news">News</a></li>
|
||||
<li><a href="#overview">Overview</a></li>
|
||||
<li><a href="#status">Current Status</a></li>
|
||||
<li><a href="#documentation">Documentation</a></li>
|
||||
<li><a href="#requirements">Requirements</a></li>
|
||||
<li><a href="#installation">Installation</a></li>
|
||||
<li><a href="#acks">Acknowledgements</a></li>
|
||||
<li><a href="#download">Download</a></li>
|
||||
</ul>
|
||||
|
||||
<h2><a name="license">License</a></h2>
|
||||
|
||||
<p>This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public License as
|
||||
published by the Free Software Foundation, either version 2.1 of the
|
||||
License, or (at your option) any later version.</p>
|
||||
|
||||
<p>This program is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.</p>
|
||||
|
||||
<h2><a name="news">News</a></h2>
|
||||
|
||||
<div class="news-date">Mon Oct 27 2008: </div>
|
||||
|
||||
<p class="news-text"><a
|
||||
href="@PACKAGE_URL@nss-myhostname-0.2.tar.gz">Version 0.2</a>
|
||||
released. Changes include: Update for IPv6 and newest glibc NSS interfaces</p>
|
||||
|
||||
<div class="news-date">Sat Nov 19 2005: </div>
|
||||
|
||||
<p class="news-text"><a
|
||||
href="@PACKAGE_URL@nss-myhostname-0.1.tar.gz">Version 0.1</a>
|
||||
released. Initial release.</p>
|
||||
|
||||
<h2><a name="overview">Overview</a></h2>
|
||||
|
||||
<p><tt>nss-myhostname</tt> is a plugin for the GNU Name Service Switch
|
||||
(NSS) functionality of the GNU C Library (<tt>glibc</tt>) providing
|
||||
host name resolution for the locally configured system hostname as
|
||||
returned by <tt>gethostname(2)</tt>. A lot of software relies on that the
|
||||
local host name is resolvable via DNS to an IPv4 or IPv6 address. When
|
||||
using dynamic hostnames this is usually achieved by
|
||||
patching <tt>/etc/hosts</tt> which however is suboptimal since it
|
||||
requires a writable <tt>/etc</tt> file system and is fragile because
|
||||
the file might also be edited by the
|
||||
administrator. <tt>nss-myhostname</tt> simply returns the IPv4
|
||||
address <tt>127.0.0.2</tt> (wich is on the local loopback) and the
|
||||
IPv6 address <tt>::1</tt> (which is the local host) for whatever
|
||||
system hostname is configured locally. Patching <tt>/etc/hostname</tt> is thus no longer necessary.</p>
|
||||
|
||||
<h2><a name="status">Current Status</a></h2>
|
||||
|
||||
<p>It works!</p>
|
||||
|
||||
<h2><a name="documentation">Documentation</a></h2>
|
||||
|
||||
<p>After compiling and installing <tt>nss-myhostname</tt> you'll find a
|
||||
new NSS modules in <tt>/lib</tt>:</p>
|
||||
<ul>
|
||||
<li><tt>libnss_myhostname.so.2</tt></li>
|
||||
</ul>
|
||||
|
||||
<p>To activate the NSS modules you have to edit
|
||||
<tt>/etc/nsswitch.conf</tt> and add <tt>myhostname</tt> to the
|
||||
line starting with "<tt>hosts:</tt>". On Debian this looks like
|
||||
this:</p>
|
||||
|
||||
<pre># /etc/nsswitch.conf
|
||||
|
||||
passwd: compat
|
||||
group: compat
|
||||
shadow: compat
|
||||
|
||||
hosts: files dns <b>myhostname</b>
|
||||
networks: files
|
||||
|
||||
protocols: db files
|
||||
services: db files
|
||||
ethers: db files
|
||||
rpc: db files
|
||||
|
||||
netgroup: nis</pre>
|
||||
|
||||
<p>That's it. You should now always be able to resolve your local
|
||||
system hostname. For a quick check
|
||||
use <tt>glibc</tt>'s <tt>getent</tt> tool:
|
||||
|
||||
<pre>$ getent ahosts `hostname`
|
||||
::1 STREAM omega
|
||||
::1 DGRAM
|
||||
::1 RAW
|
||||
127.0.0.2 STREAM
|
||||
127.0.0.2 DGRAM
|
||||
127.0.0.2 RAW
|
||||
</pre>
|
||||
|
||||
<p>In this case the local host name is <i>omega</i>.</p>
|
||||
|
||||
<p>It is recommended to put <tt>myhostname</tt> last in
|
||||
the <tt>nsswitch.conf</tt> line to make sure that this mapping is only
|
||||
used as fallback, and any DNS or <tt>/etc/hosts</tt> based mapping takes
|
||||
precedence.</p>
|
||||
|
||||
<h2><a name="requirements">Requirements</a></h2>
|
||||
|
||||
<p><tt>nss-myhostname</tt> uses NSS interfaces that are specific to modern <tt>glibc</tt>'s.</p>
|
||||
|
||||
<p><tt>nss-myhostname</tt> was developed and tested on Fedora 10
|
||||
from October 2008, it should work on most other Linux
|
||||
distributions since it uses GNU autoconf and
|
||||
GNU libtool for source code configuration and shared library
|
||||
management.</p>
|
||||
|
||||
<h2><a name="installation">Installation</a></h2>
|
||||
|
||||
<p>As this package is made with the GNU autotools you should run
|
||||
<tt>./configure</tt> inside the distribution directory for configuring
|
||||
the source tree. After that you should run <tt>make</tt> for
|
||||
compilation and <tt>make install</tt> (as root) for installation of
|
||||
<tt>nss-myhostname</tt>.</p>
|
||||
|
||||
<h2><a name="acks">Acknowledgements</a></h2>
|
||||
|
||||
<p>None so far.</p>
|
||||
|
||||
<h2><a name="download">Download</a></h2>
|
||||
|
||||
<p>The newest release is always available from <a href="@PACKAGE_URL@">@PACKAGE_URL@</a></p>
|
||||
|
||||
<p>The current release is <a href="@PACKAGE_URL@nss-myhostname-@PACKAGE_VERSION@.tar.gz">@PACKAGE_VERSION@</a></p>
|
||||
|
||||
<p>Get <tt>nss-myhostname</tt>'s development sources from the <a href="http://git.or.cz/">GIT</a> <a href="git://git.0pointer.de/nss-myhostname">repository</a> (<a href="http://git.0pointer.de/?p=nss-myhostname.git">gitweb</a>): </p>
|
||||
|
||||
<pre>git clone git://git.0pointer.de/nss-myhostname</pre>
|
||||
|
||||
<hr/>
|
||||
<address class="grey">Lennart Poettering <@PACKAGE_BUGREPORT@>, October 2008</address>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,25 @@
|
||||
/***
|
||||
This file is part of nss-myhostname.
|
||||
|
||||
Copyright 2008 Lennart Poettering
|
||||
|
||||
nss-myhostname is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public License
|
||||
as published by the Free Software Foundation, either version 2.1
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
nss-myhostname is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with nss-myhostname. If not, If not, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
***/
|
||||
|
||||
body { color: black; background-color: white; }
|
||||
a:link, a:visited { color: #900000; }
|
||||
div.news-date { font-size: 80%; font-style: italic; }
|
||||
pre { background-color: #f0f0f0; padding: 0.4cm; }
|
||||
.grey { color: #8f8f8f; font-size: 80%; }
|
||||
@@ -0,0 +1,258 @@
|
||||
dnl Macros to check the presence of generic (non-typed) symbols.
|
||||
dnl Copyright (c) 2006-2007 Diego Pettenò <flameeyes@gmail.com>
|
||||
dnl Copyright (c) 2006-2007 xine project
|
||||
dnl
|
||||
dnl This program is free software; you can redistribute it and/or modify
|
||||
dnl it under the terms of the GNU General Public License as published by
|
||||
dnl the Free Software Foundation; either version 2, or (at your option)
|
||||
dnl any later version.
|
||||
dnl
|
||||
dnl This program is distributed in the hope that it will be useful,
|
||||
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
dnl GNU General Public License for more details.
|
||||
dnl
|
||||
dnl You should have received a copy of the GNU General Public License
|
||||
dnl along with this program; if not, write to the Free Software
|
||||
dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
dnl 02110-1301, USA.
|
||||
dnl
|
||||
dnl As a special exception, the copyright owners of the
|
||||
dnl macro gives unlimited permission to copy, distribute and modify the
|
||||
dnl configure scripts that are the output of Autoconf when processing the
|
||||
dnl Macro. You need not follow the terms of the GNU General Public
|
||||
dnl License when using or distributing such scripts, even though portions
|
||||
dnl of the text of the Macro appear in them. The GNU General Public
|
||||
dnl License (GPL) does govern all other use of the material that
|
||||
dnl constitutes the Autoconf Macro.
|
||||
dnl
|
||||
dnl This special exception to the GPL applies to versions of the
|
||||
dnl Autoconf Macro released by this project. When you make and
|
||||
dnl distribute a modified version of the Autoconf Macro, you may extend
|
||||
dnl this special exception to the GPL to apply to your modified version as
|
||||
dnl well.
|
||||
|
||||
AC_DEFUN([CC_CHECK_CFLAGS_SILENT], [
|
||||
AC_CACHE_VAL(AS_TR_SH([cc_cv_cflags_$1]),
|
||||
[ac_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $1"
|
||||
AC_COMPILE_IFELSE([int a;],
|
||||
[eval "AS_TR_SH([cc_cv_cflags_$1])='yes'"],
|
||||
[eval "AS_TR_SH([cc_cv_cflags_$1])='no'"])
|
||||
CFLAGS="$ac_save_CFLAGS"
|
||||
])
|
||||
|
||||
AS_IF([eval test x$]AS_TR_SH([cc_cv_cflags_$1])[ = xyes],
|
||||
[$2], [$3])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_CHECK_CFLAGS], [
|
||||
AC_CACHE_CHECK([if $CC supports $1 flag],
|
||||
AS_TR_SH([cc_cv_cflags_$1]),
|
||||
CC_CHECK_CFLAGS_SILENT([$1]) dnl Don't execute actions here!
|
||||
)
|
||||
|
||||
AS_IF([eval test x$]AS_TR_SH([cc_cv_cflags_$1])[ = xyes],
|
||||
[$2], [$3])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_CHECK_LDFLAGS], [
|
||||
AC_CACHE_CHECK([if $CC supports $1 flag],
|
||||
AS_TR_SH([cc_cv_ldflags_$1]),
|
||||
[ac_save_LDFLAGS="$LDFLAGS"
|
||||
LDFLAGS="$LDFLAGS $1"
|
||||
AC_LINK_IFELSE([int main() { return 1; }],
|
||||
[eval "AS_TR_SH([cc_cv_ldflags_$1])='yes'"],
|
||||
[eval "AS_TR_SH([cc_cv_ldflags_$1])="])
|
||||
LDFLAGS="$ac_save_LDFLAGS"
|
||||
])
|
||||
|
||||
AS_IF([eval test x$]AS_TR_SH([cc_cv_ldflags_$1])[ = xyes],
|
||||
[$2], [$3])
|
||||
])
|
||||
|
||||
dnl Check for a -Werror flag or equivalent. -Werror is the GCC
|
||||
dnl and ICC flag that tells the compiler to treat all the warnings
|
||||
dnl as fatal. We usually need this option to make sure that some
|
||||
dnl constructs (like attributes) are not simply ignored.
|
||||
dnl
|
||||
dnl Other compilers don't support -Werror per se, but they support
|
||||
dnl an equivalent flag:
|
||||
dnl - Sun Studio compiler supports -errwarn=%all
|
||||
AC_DEFUN([CC_CHECK_WERROR], [
|
||||
AC_CACHE_CHECK(
|
||||
[for $CC way to treat warnings as errors],
|
||||
[cc_cv_werror],
|
||||
[CC_CHECK_CFLAGS_SILENT([-Werror], [cc_cv_werror=-Werror],
|
||||
[CC_CHECK_CFLAGS_SILENT([-errwarn=%all], [cc_cv_werror=-errwarn=%all])])
|
||||
])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_CHECK_ATTRIBUTE], [
|
||||
AC_REQUIRE([CC_CHECK_WERROR])
|
||||
AC_CACHE_CHECK([if $CC supports __attribute__(( ifelse([$2], , [$1], [$2]) ))],
|
||||
AS_TR_SH([cc_cv_attribute_$1]),
|
||||
[ac_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $cc_cv_werror"
|
||||
AC_COMPILE_IFELSE([$3],
|
||||
[eval "AS_TR_SH([cc_cv_attribute_$1])='yes'"],
|
||||
[eval "AS_TR_SH([cc_cv_attribute_$1])='no'"])
|
||||
CFLAGS="$ac_save_CFLAGS"
|
||||
])
|
||||
|
||||
AS_IF([eval test x$]AS_TR_SH([cc_cv_attribute_$1])[ = xyes],
|
||||
[AC_DEFINE(
|
||||
AS_TR_CPP([SUPPORT_ATTRIBUTE_$1]), 1,
|
||||
[Define this if the compiler supports __attribute__(( ifelse([$2], , [$1], [$2]) ))]
|
||||
)
|
||||
$4],
|
||||
[$5])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_CONSTRUCTOR], [
|
||||
CC_CHECK_ATTRIBUTE(
|
||||
[constructor],,
|
||||
[void __attribute__((constructor)) ctor() { int a; }],
|
||||
[$1], [$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_FORMAT], [
|
||||
CC_CHECK_ATTRIBUTE(
|
||||
[format], [format(printf, n, n)],
|
||||
[void __attribute__((format(printf, 1, 2))) printflike(const char *fmt, ...) { fmt = (void *)0; }],
|
||||
[$1], [$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_FORMAT_ARG], [
|
||||
CC_CHECK_ATTRIBUTE(
|
||||
[format_arg], [format_arg(printf)],
|
||||
[char *__attribute__((format_arg(1))) gettextlike(const char *fmt) { fmt = (void *)0; }],
|
||||
[$1], [$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_VISIBILITY], [
|
||||
CC_CHECK_ATTRIBUTE(
|
||||
[visibility_$1], [visibility("$1")],
|
||||
[void __attribute__((visibility("$1"))) $1_function() { }],
|
||||
[$2], [$3])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_NONNULL], [
|
||||
CC_CHECK_ATTRIBUTE(
|
||||
[nonnull], [nonnull()],
|
||||
[void __attribute__((nonnull())) some_function(void *foo, void *bar) { foo = (void*)0; bar = (void*)0; }],
|
||||
[$1], [$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_UNUSED], [
|
||||
CC_CHECK_ATTRIBUTE(
|
||||
[unused], ,
|
||||
[void some_function(void *foo, __attribute__((unused)) void *bar);],
|
||||
[$1], [$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_SENTINEL], [
|
||||
CC_CHECK_ATTRIBUTE(
|
||||
[sentinel], ,
|
||||
[void some_function(void *foo, ...) __attribute__((sentinel));],
|
||||
[$1], [$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_DEPRECATED], [
|
||||
CC_CHECK_ATTRIBUTE(
|
||||
[deprecated], ,
|
||||
[void some_function(void *foo, ...) __attribute__((deprecated));],
|
||||
[$1], [$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_ALIAS], [
|
||||
CC_CHECK_ATTRIBUTE(
|
||||
[alias], [weak, alias],
|
||||
[void other_function(void *foo) { }
|
||||
void some_function(void *foo) __attribute__((weak, alias("other_function")));],
|
||||
[$1], [$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_MALLOC], [
|
||||
CC_CHECK_ATTRIBUTE(
|
||||
[malloc], ,
|
||||
[void * __attribute__((malloc)) my_alloc(int n);],
|
||||
[$1], [$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_PACKED], [
|
||||
CC_CHECK_ATTRIBUTE(
|
||||
[packed], ,
|
||||
[struct astructure { char a; int b; long c; void *d; } __attribute__((packed));],
|
||||
[$1], [$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_CONST], [
|
||||
CC_CHECK_ATTRIBUTE(
|
||||
[const], ,
|
||||
[int __attribute__((const)) twopow(int n) { return 1 << n; } ],
|
||||
[$1], [$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_FLAG_VISIBILITY], [
|
||||
AC_REQUIRE([CC_CHECK_WERROR])
|
||||
AC_CACHE_CHECK([if $CC supports -fvisibility=hidden],
|
||||
[cc_cv_flag_visibility],
|
||||
[cc_flag_visibility_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $cc_cv_werror"
|
||||
CC_CHECK_CFLAGS_SILENT([-fvisibility=hidden],
|
||||
cc_cv_flag_visibility='yes',
|
||||
cc_cv_flag_visibility='no')
|
||||
CFLAGS="$cc_flag_visibility_save_CFLAGS"])
|
||||
|
||||
AS_IF([test "x$cc_cv_flag_visibility" = "xyes"],
|
||||
[AC_DEFINE([SUPPORT_FLAG_VISIBILITY], 1,
|
||||
[Define this if the compiler supports the -fvisibility flag])
|
||||
$1],
|
||||
[$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_FUNC_EXPECT], [
|
||||
AC_REQUIRE([CC_CHECK_WERROR])
|
||||
AC_CACHE_CHECK([if compiler has __builtin_expect function],
|
||||
[cc_cv_func_expect],
|
||||
[ac_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $cc_cv_werror"
|
||||
AC_COMPILE_IFELSE(
|
||||
[int some_function() {
|
||||
int a = 3;
|
||||
return (int)__builtin_expect(a, 3);
|
||||
}],
|
||||
[cc_cv_func_expect=yes],
|
||||
[cc_cv_func_expect=no])
|
||||
CFLAGS="$ac_save_CFLAGS"
|
||||
])
|
||||
|
||||
AS_IF([test "x$cc_cv_func_expect" = "xyes"],
|
||||
[AC_DEFINE([SUPPORT__BUILTIN_EXPECT], 1,
|
||||
[Define this if the compiler supports __builtin_expect() function])
|
||||
$1],
|
||||
[$2])
|
||||
])
|
||||
|
||||
AC_DEFUN([CC_ATTRIBUTE_ALIGNED], [
|
||||
AC_REQUIRE([CC_CHECK_WERROR])
|
||||
AC_CACHE_CHECK([highest __attribute__ ((aligned ())) supported],
|
||||
[cc_cv_attribute_aligned],
|
||||
[ac_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $cc_cv_werror"
|
||||
for cc_attribute_align_try in 64 32 16 8 4 2; do
|
||||
AC_COMPILE_IFELSE([
|
||||
int main() {
|
||||
static char c __attribute__ ((aligned($cc_attribute_align_try))) = 0;
|
||||
return c;
|
||||
}], [cc_cv_attribute_aligned=$cc_attribute_align_try; break])
|
||||
done
|
||||
CFLAGS="$ac_save_CFLAGS"
|
||||
])
|
||||
|
||||
if test "x$cc_cv_attribute_aligned" != "x"; then
|
||||
AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX], [$cc_cv_attribute_aligned],
|
||||
[Define the highest alignment supported])
|
||||
fi
|
||||
])
|
||||
@@ -0,0 +1,24 @@
|
||||
dnl Macro for enabling LYNX-based documentation generation
|
||||
|
||||
AC_DEFUN([ZP_LYNX_DOC], [
|
||||
AC_ARG_ENABLE(lynx,
|
||||
AS_HELP_STRING([--disable-lynx],
|
||||
[Turn off lynx usage for documentation generation]),,
|
||||
[enable_lynx=yes])
|
||||
|
||||
case "${enable_lynx}" in
|
||||
yes)
|
||||
AC_CHECK_PROG(have_lynx, lynx, yes, no)
|
||||
|
||||
if test x$have_lynx = xno ; then
|
||||
AC_MSG_WARN([*** lynx not found, plain text README will not be built ***])
|
||||
fi
|
||||
;;
|
||||
no)
|
||||
have_lynx=no ;;
|
||||
*)
|
||||
AC_MSG_ERROR(bad value ${enableval} for --disable-lynx) ;;
|
||||
esac
|
||||
|
||||
AM_CONDITIONAL([USE_LYNX], [test "x$have_lynx" = xyes])
|
||||
])
|
||||
+4
-1
@@ -1,6 +1,5 @@
|
||||
/*-*- Mode: C; c-basic-offset: 8 -*-*/
|
||||
|
||||
|
||||
/***
|
||||
This file is part of nss-myhostname.
|
||||
|
||||
@@ -21,6 +20,10 @@
|
||||
<http://www.gnu.org/licenses/>.
|
||||
***/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <limits.h>
|
||||
#include <nss.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
Reference in New Issue
Block a user