#!/bin/sh

export PETSC_DIR=$PWD
export PETSC_ARCH=arch-fvpf

./configure --with-shared-libraries=1
make

LOGFILE=visibleprivatefunctions.lst
/bin/rm -f ${LOGFILE}

echo ========================================== > ${LOGFILE}
echo "Starting visibleprivatefunctions:" >> ${LOGFILE}
echo "`date`, for `git describe --match 'v*'`" >> ${LOGFILE}
echo ========================================== >> ${LOGFILE}
echo "Symbols with missing namespacine" >> ${LOGFILE}
echo " "  >> ${LOGFILE}
#nm -o ${PETSC_DIR}/${PETSC_ARCH}/lib/libpetsc.* | cut -f 2,3 -d ":" -- | egrep ' (B|D|C|T) ' | sort | egrep -i -v '_(XXT|XYT|Xi|TetGen|Vec|Mat|Petsc|KSP|PC|SNES|DM|TS|PF|IS|AO|Characteristic|ClassPerf|EventPerfLog|EventRegLog|spbas_|f90array|mpifcmb|SPARSEPACK|MPIU_|MINPACK|admf_|TAO|TV_)' >> ${LOGFILE}

#
SO=so
if [ `uname` = 'Darwin' ]; then SO=dylib; fi
nm -o ${PETSC_DIR}/${PETSC_ARCH}/lib/libpetsc*.${SO} | sed "s/: /:/g" | cut -f 2,3 -d " " -- | egrep '(S|B|D|C|T) ' | sed "s/ _/ /g" | sort -u > tmp_visible

egrep -i -v '(XXT|XYT|Xi|TetGen|Vec|Mat|Petsc|KSP|PC|SNES|DM|TS|PF|IS|AO|Characteristic|ClassPerf|EventPerfLog|EventRegLog|spbas_|f90array|mpifcmb|SPARSEPACK|MPIU_|MINPACK|admf_|TAO|TV_)' tmp_visible >> ${LOGFILE}

echo " "  >> ${LOGFILE}
echo "Total number of visible symbols" >> ${LOGFILE}
echo " "  >> ${LOGFILE}
cat tmp_visible | wc -l >>  ${LOGFILE}

echo " "  >> ${LOGFILE}
echo "Symbols that should probably be private" >> ${LOGFILE}
echo " "  >> ${LOGFILE}
grep "[a-zA-Z]_[a-zA-Z]" tmp_visible | grep -v Create | grep -v CLASSID | egrep -v "[A-Z][A-Z]*_[A-Z]" >>  ${LOGFILE}

echo " "  >> ${LOGFILE}
echo "All visible symbols" >> ${LOGFILE}
echo " "  >> ${LOGFILE}
cat tmp_visible >> ${LOGFILE}

/bin/rm -f tmp_visible
