diff --git a/configure.ac b/configure.ac index 6412330..2178c73 100644 --- a/configure.ac +++ b/configure.ac @@ -38,6 +38,7 @@ AC_CONFIG_LIBOBJ_DIR([lib]) AC_PROG_CC AC_PROG_CC_STDC AX_CFLAGS_WARN_ALL +AX_C___ATTRIBUTE__ AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([ diff --git a/m4/Makefile.am b/m4/Makefile.am index 7f9cd64..d745318 100644 --- a/m4/Makefile.am +++ b/m4/Makefile.am @@ -27,4 +27,6 @@ # along with this program. If not, see http://www.gnu.org/licenses/. -EXTRA_DIST = ax_cflags_warn_all.m4 +EXTRA_DIST = \ + ax_c___attribute__.m4 \ + ax_cflags_warn_all.m4 diff --git a/m4/ax_c___attribute__.m4 b/m4/ax_c___attribute__.m4 new file mode 100644 index 0000000..cf3d62b --- /dev/null +++ b/m4/ax_c___attribute__.m4 @@ -0,0 +1,66 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_c___attribute__.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_C___ATTRIBUTE__ +# +# DESCRIPTION +# +# Provides a test for the compiler support of __attribute__ extensions. +# Defines HAVE___ATTRIBUTE__ if it is found. +# +# LICENSE +# +# Copyright (c) 2008 Stepan Kasal +# Copyright (c) 2008 Christian Haggstrom +# Copyright (c) 2008 Ryan McCabe +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 2 of the License, or (at your +# option) any later version. +# +# 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 General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 8 + +AC_DEFUN([AX_C___ATTRIBUTE__], [ + AC_CACHE_CHECK([for __attribute__], [ax_cv___attribute__], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include + static void foo(void) __attribute__ ((unused)); + static void + foo(void) { + exit(1); + } + ]], [])], + [ax_cv___attribute__=yes], + [ax_cv___attribute__=no] + ) + ]) + if test "$ax_cv___attribute__" = "yes"; then + AC_DEFINE([HAVE___ATTRIBUTE__], 1, [define if your compiler has __attribute__]) + fi +]) diff --git a/src/system.h b/src/system.h index d5d6d4e..28233d1 100644 --- a/src/system.h +++ b/src/system.h @@ -73,4 +73,10 @@ #endif +// Compiler __attributes__ for less-capable compilers +#ifndef HAVE___ATTRIBUTE__ +# define __attribute__(x) +#endif + + #endif /* included_SYSTEM_H */ diff --git a/src/trader.c b/src/trader.c index 78137db..4e381f8 100644 --- a/src/trader.c +++ b/src/trader.c @@ -40,8 +40,8 @@ int main (int argc, char *argv[]); static void process_cmdline (int argc, char *argv[]); -static void show_version (void); -static void show_usage (int status); +static void __attribute__((noreturn)) show_version (void); +static void __attribute__((noreturn)) show_usage (int status); /************************************************************************ @@ -149,7 +149,7 @@ static void process_cmdline (int argc, char *argv[]) terminates. */ -static void show_version (void) +static void __attribute__((noreturn)) show_version (void) { printf(_("\ " PACKAGE_NAME " (%s) %s\n\ @@ -178,7 +178,7 @@ NO WARRANTY, to the extent permitted by law; see the License for details.\n\ error, then terminates. */ -static void show_usage (int status) +static void __attribute__((noreturn)) show_usage (int status) { if (status != EXIT_SUCCESS) { fprintf(stderr, _("%s: Try `%s --help' for more information.\n"),