#!/bin/sh
# PCP QA Test No. 1166
# Check that promoted symbols are still visible in libpcp.
#
# Copyright (c) 2017 Ken McDonell.  All Rights Reserved.
#

seq=`basename $0`
echo "QA output created by $seq"

# get standard environment, filters and checks
. ./common.product
. ./common.filter
. ./common.check

_cleanup()
{
    cd $here
    $sudo rm -rf $tmp $tmp.*
}

_filter()
{
    sed \
	-e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z]  *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9][0-9][0-9][0-9]$/DATE/' \
	-e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z]  *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/DATE/' \
        -e '/^\(Log for [0-9][0-9]* on\) [^ ][^ ]*/s//\1 HOST/' \
	-e '/qa_libpcp_compat/s/([0-9][0-9]*)/(PID)/' \
	-e 's/(0x[0-9a-f][0-9a-f]*)/(ADDR)/' \
    # end
}

status=1	# failure is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15

cat <<End-of-File >$tmp.makefile
include $PCP_INC_DIR/builddefs

TMP="$tmp"
SEQ="$seq"

default:
		\$(CC) -I\$(PCP_INC_DIR)/.. \$(CFLAGS) \$(LDFLAGS) '-DSEQ=\$(SEQ)' '-DTMP=\$(TMP)' -o $tmp src/qa_libpcp_compat.c -lpcp
End-of-File

# real QA test starts here

echo "=== binary compatibility checks ===" | tee -a $seq_full
if LCFLAGS="-DBINARY_COMPAT_TEST" $PCP_MAKE_PROG -f $tmp.makefile >$seq_full 2>&1
then
    if $tmp 2>&1 | _filter
    then
	:
    else
	echo "execution failed"
    fi
else
    echo "compile and link failed"
fi

echo
echo "=== source code compatibility checks ===" | tee -a $seq_full
if $PCP_MAKE_PROG -f $tmp.makefile >$seq_full 2>&1
then
    if $tmp 2>&1 | _filter
    then
	:
    else
	echo "execution failed"
    fi
else
    echo "compile and link failed"
fi

status=0
exit
