mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-11-27 02:10:55 +08:00
86d1ef2096
Fixes: HDFFV-9149 Tested on: jam w/ gcc 4.1 and koala w/ gcc 4.9
97 lines
4.3 KiB
Bash
Executable File
97 lines
4.3 KiB
Bash
Executable File
#!/bin/sh
|
|
##
|
|
## Copyright by the Board of Trustees of the University of Illinois.
|
|
## All rights reserved.
|
|
##
|
|
## This file is part of HDF5. The full HDF5 copyright notice, including
|
|
## terms governing use, modification, and redistribution, is contained in
|
|
## the files COPYING and Copyright.html. COPYING can be found at the root
|
|
## of the source code distribution tree; Copyright.html can be found at the
|
|
## root level of an installed copy of the electronic HDF5 document set and
|
|
## is linked from the top-level documents page. It can also be found at
|
|
## http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have
|
|
## access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu.
|
|
##
|
|
# regenerate hl/src/H5LTanalyze.c
|
|
|
|
# HDF5 currently uses the following versions of the bison flex:
|
|
BISON_VERSION="bison (GNU Bison) 2.7"
|
|
FLEX_VERSION="flex 2.5.37"
|
|
|
|
# If paths to bison flex are not specified by the user, assume tools are
|
|
# running on jam in /mnt/hdf/packages and set paths accordingly.
|
|
if test -z ${BISON}; then
|
|
BISON=/usr/hdf/bin/bison
|
|
fi
|
|
if test -z ${FLEX}; then
|
|
FLEX=/usr/hdf/bin/flex
|
|
fi
|
|
|
|
# Check version numbers of all bison flex against the "correct" versions
|
|
BI_VERS=`${BISON} --version 2>&1 | grep "^${BISON_VERSION}"`
|
|
if test -z "${BI_VERS}"; then
|
|
echo "${BISON} version is not ${BISON_VERSION}"
|
|
exit 1
|
|
fi
|
|
FL_VERS=`${FLEX} --version 2>&1 | grep "^${FLEX_VERSION}"`
|
|
if test -z "${FL_VERS}"; then
|
|
echo "${FLEX} version is not ${FLEX_VERSION}"
|
|
exit 1
|
|
fi
|
|
|
|
# Make sure that the tools are in the path.
|
|
BISON_DIR=`dirname ${BISON}`
|
|
FLEX_DIR=`dirname ${FLEX}`
|
|
|
|
# Main body
|
|
cd hl/src
|
|
echo "Generate hl/src/H5LTparse.c from hl/src/H5LTparse.y"
|
|
bison -pH5LTyy -o H5LTparse.c -d H5LTparse.y
|
|
echo "Generate hl/src/H5LTanalyze.c from hl/src/H5LTanalyze.l"
|
|
flex --nounistd -PH5LTyy -oH5LTanalyze.c H5LTanalyze.l
|
|
|
|
# fix H5LTparse.c to declare H5LTyyparse return type as an hid_t
|
|
# instead of int. Currently the generated function H5LTyyparse is
|
|
# generated with a return value of type int, which is a mapping to the
|
|
# flex yyparse function. The return value in the HL library should be
|
|
# an hid_t.
|
|
# I propose to not use flex to generate this function, but for now I am
|
|
# adding a perl command to find and replace this function declaration in
|
|
# H5LTparse.c.
|
|
perl -0777 -pi -e 's/int\nyyparse/hid_t\nyyparse/igs' H5LTparse.c
|
|
perl -0777 -pi -e 's/int H5LTyyparse/hid_t H5LTyyparse/igs' H5LTparse.c
|
|
|
|
# Add code that disables warnings in the flex/bison-generated code.
|
|
#
|
|
# Note that the GCC pragmas did not exist until gcc 4.2. Earlier versions
|
|
# will simply ignore them, but we want to avoid those warnings.
|
|
for f in H5LTparse.c H5LTanalyze.c
|
|
do
|
|
echo '#if __GNUC__ >= 4 && __GNUC_MINOR__ >=2 ' >> tmp.out
|
|
echo '#pragma GCC diagnostic ignored "-Wconversion" ' >> tmp.out
|
|
echo '#pragma GCC diagnostic ignored "-Wimplicit-function-declaration" ' >> tmp.out
|
|
echo '#pragma GCC diagnostic ignored "-Wlarger-than=" ' >> tmp.out
|
|
echo '#pragma GCC diagnostic ignored "-Wmissing-prototypes" ' >> tmp.out
|
|
echo '#pragma GCC diagnostic ignored "-Wnested-externs" ' >> tmp.out
|
|
echo '#pragma GCC diagnostic ignored "-Wold-style-definition" ' >> tmp.out
|
|
echo '#pragma GCC diagnostic ignored "-Wsign-compare" ' >> tmp.out
|
|
echo '#pragma GCC diagnostic ignored "-Wsign-conversion" ' >> tmp.out
|
|
echo '#pragma GCC diagnostic ignored "-Wstrict-prototypes" ' >> tmp.out
|
|
echo '#pragma GCC diagnostic ignored "-Wswitch-default" ' >> tmp.out
|
|
echo '#pragma GCC diagnostic ignored "-Wunused-function" ' >> tmp.out
|
|
echo '#pragma GCC diagnostic ignored "-Wunused-macros" ' >> tmp.out
|
|
echo '#pragma GCC diagnostic ignored "-Wunused-parameter" ' >> tmp.out
|
|
echo '#elif defined __SUNPRO_CC ' >> tmp.out
|
|
echo '#pragma disable_warn ' >> tmp.out
|
|
echo '#elif defined _MSC_VER ' >> tmp.out
|
|
echo '#pragma warning(push, 1) ' >> tmp.out
|
|
echo '#endif ' >> tmp.out
|
|
|
|
cat $f >> tmp.out
|
|
mv tmp.out $f
|
|
done
|
|
|
|
cd ../..
|
|
|
|
exit 0
|