#!/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