#! /bin/sh # Copyright (C) 2011 Free Software Foundation, Inc. # # 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, 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 . # Check interactions between the `portability' and `extra-portability' # warning categories: # 1. `-Wextra-portability' must imply `-Wportability'. # 2. `-Wno-portability' must imply `-Wno-extra-portability'. # 3. `-Wall' does *not* imply `-Wextra-portability'. . ./defs || Exit 1 set -e # We want (almost) complete control over automake options. # FIXME: use $original_AUTOMAKE here once we are merged into master. AUTOMAKE="`(set $AUTOMAKE && echo $1)` --foreign -Werror" cat >>configure.in <Makefile.am <> Makefile.am # Enabling extra-portability enables portability. AUTOMAKE_fails -Wnone -Wextra-portability # The expected diagnostic is # Makefile.am:2: compiling `foo.c' with per-target flags requires `AM_PROG_CC_C_O' in `configure.in' # .../lib/am/library.am: `libfoo.a': linking libraries using a non-POSIX # .../lib/am/library.am: archiver requires `AM_PROG_AR' in `configure.in' # Makefile.am:1: while processing library `libfoo.a' grep 'requires.*AM_PROG_CC_C_O' stderr grep 'requires.*AM_PROG_AR' stderr # `-Wall' does not reset extra portability warnings to their # default (i.e., disabled). AUTOMAKE_fails -Wextra-portability -Wall grep 'requires.*AM_PROG_CC_C_O' stderr grep 'requires.*AM_PROG_AR' stderr # Disabling extra-portability leaves portability intact. AUTOMAKE_fails -Wportability -Wno-extra-portability grep 'requires.*AM_PROG_CC_C_O' stderr grep 'requires.*AM_PROG_AR' stderr && Exit 1 # `-Wall' does not set extra portability warnings if they have # been previously disabled. AUTOMAKE_fails -Wno-extra-portability -Wall grep 'requires.*AM_PROG_CC_C_O' stderr grep 'requires.*AM_PROG_AR' stderr && Exit 1 # Enabling portability does not enable extra-portability. AUTOMAKE_fails -Wnone -Wportability grep 'requires.*AM_PROG_CC_C_O' stderr grep 'requires.*AM_PROG_AR' stderr && Exit 1 # Disabling portability disables extra-portability. $AUTOMAKE -Wno-portability $AUTOMAKE -Wextra-portability -Wno-portability $AUTOMAKE -Wall -Wno-portability :