summaryrefslogtreecommitdiffstats
path: root/bin/genltanalyze
blob: 0b1b1e5a5ea5f9ac72de24ab7cea30c972050e72 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/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
cd ../..

exit 0