diff options
author | Lennart Poettering <lennart@poettering.net> | 2008-10-27 19:46:50 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2008-10-27 19:46:50 +0100 |
commit | ab1ecd3c9a303765f5158a9d4692f6fcbea02540 (patch) | |
tree | 99ba1f6f3b481146f895706a7cdcdcbce511d6c6 | |
parent | 4e8c8252476aaaaa826104362557c084a5d5b978 (diff) |
autoconfization
-rw-r--r-- | .gitignore | 23 | ||||
-rw-r--r-- | Makefile | 32 | ||||
-rw-r--r-- | Makefile.am | 51 | ||||
-rwxr-xr-x | bootstrap.sh | 66 | ||||
-rw-r--r-- | configure.ac | 76 | ||||
-rw-r--r-- | doc/.gitignore | 2 | ||||
-rw-r--r-- | doc/Makefile.am | 38 | ||||
-rw-r--r-- | doc/README.html.in | 158 | ||||
-rw-r--r-- | doc/style.css | 25 | ||||
-rw-r--r-- | m4/attributes.m4 | 258 | ||||
-rw-r--r-- | m4/zp_lynx_doc.m4 | 24 | ||||
-rw-r--r-- | nss-myhostname.c | 5 |
12 files changed, 725 insertions, 33 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..8f31d72968 --- /dev/null +++ b/.gitignore @@ -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 diff --git a/Makefile b/Makefile deleted file mode 100644 index b0cd5119ed..0000000000 --- a/Makefile +++ /dev/null @@ -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 diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000000..9b1dcab7e4 --- /dev/null +++ b/Makefile.am @@ -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 diff --git a/bootstrap.sh b/bootstrap.sh new file mode 100755 index 0000000000..d224f31fb5 --- /dev/null +++ b/bootstrap.sh @@ -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 diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000000..e1fbb79e33 --- /dev/null +++ b/configure.ac @@ -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 diff --git a/doc/.gitignore b/doc/.gitignore new file mode 100644 index 0000000000..bc63974b07 --- /dev/null +++ b/doc/.gitignore @@ -0,0 +1,2 @@ +README +README.html diff --git a/doc/Makefile.am b/doc/Makefile.am new file mode 100644 index 0000000000..4f773ac2c6 --- /dev/null +++ b/doc/Makefile.am @@ -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 diff --git a/doc/README.html.in b/doc/README.html.in new file mode 100644 index 0000000000..4721c4dc24 --- /dev/null +++ b/doc/README.html.in @@ -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> diff --git a/doc/style.css b/doc/style.css new file mode 100644 index 0000000000..5cc21fd510 --- /dev/null +++ b/doc/style.css @@ -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%; } diff --git a/m4/attributes.m4 b/m4/attributes.m4 new file mode 100644 index 0000000000..9c4a0c89a5 --- /dev/null +++ b/m4/attributes.m4 @@ -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 +]) diff --git a/m4/zp_lynx_doc.m4 b/m4/zp_lynx_doc.m4 new file mode 100644 index 0000000000..955a6ca0af --- /dev/null +++ b/m4/zp_lynx_doc.m4 @@ -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]) +]) diff --git a/nss-myhostname.c b/nss-myhostname.c index d3404de5ae..758a185532 100644 --- a/nss-myhostname.c +++ b/nss-myhostname.c @@ -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> |