1#!/bin/sh 2 3# 4# abi_checks.sh - check for possible abi changes 5# 6# Copyright (C) 2009 Michael Adam <obnox@samba.org> 7# 8# This program is free software; you can redistribute it and/or modify it 9# under the terms of the GNU General Public License as published by the Free 10# Software Foundation; either version 3 of the License, or (at your option) 11# any later version. 12# 13# This program is distributed in the hope that it will be useful, but WITHOUT 14# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 15# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 16# more details. 17# 18# You should have received a copy of the GNU General Public License along with 19# this program; if not, see <http://www.gnu.org/licenses/>. 20# 21 22# 23# USAGE: abi_checks.sh LIBNAME header1 [header2 ...] 24# 25# This script creates symbol and signature lists from the provided header 26# files with the aid of the mksyms.sh and mksigs.pl scripts (saved as 27# $LIBNAME.exports.check and $LIBNAME.sigatures.check). It then compares 28# the resulting files with the files $LIBNAME.exports and $LIBNME.signatures 29# which it expects to find in the current directory. 30# 31 32LANG=C; export LANG 33LC_ALL=C; export LC_ALL 34LC_COLLATE=C; export LC_COLLATE 35 36exit_status=0 37script=$0 38dir_name=$(dirname ${script}) 39 40if test x"$1" = "x" ; then 41 echo "USAGE: ${script} libname header [header ...]" 42 exit 1 43fi 44 45libname="$1" 46shift 47 48if test x"$1" = "x" ; then 49 echo "USAGE: ${script} libname header [header ...]" 50 exit 1 51fi 52 53headers="$*" 54 55exports_file=${libname}.exports 56exports_file_check=${exports_file}.check 57signatures_file=${libname}.signatures 58signatures_file_check=${signatures_file}.check 59 60 61${dir_name}/mksyms.sh awk ${exports_file_check} ${headers} 2>&1 > /dev/null 62cat ${headers} | ${dir_name}/mksigs.pl | sort| uniq > ${signatures_file_check} 2> /dev/null 63 64diff -u ${exports_file} ${exports_file_check} 65if test "x$?" != "x0" ; then 66 echo "WARNING: possible ABI change detected in exports!" 67 let exit_status++ 68else 69 echo "exports check: OK" 70fi 71 72diff -u ${signatures_file} ${signatures_file_check} 73if test "x$?" != "x0" ; then 74 echo "WARNING: possible ABI change detected in signatures!" 75 let exit_status++ 76else 77 echo "signatures check: OK" 78fi 79 80exit $exit_status 81