Re: [PPL-devel] Undefined PPL references attempting to build cloog-ppl

One problem is in configure (from configure.ac) at
# Avoid extra blanks. # required_instantiations=`echo "${enableval}" | sed -e 's/[[ ]][[ ]]*/ /g' -e 's/[[ ]]*([[@<>,]])[[ ]]*/\1/g' -e 's/>>/> >/g' -e 's/^[[ ]]//g' -e 's/[[ ]]$//g'`
At this point, enableval = "Polyhedron@Grid@Rational_Box@BD_Shape<mpz_class>@ BD_Shape<mpq_class>@ Octagonal_Shape<mpz_class>@ Octagonal_Shape<mpq_class>@ Constraints_Product<C_Polyhedron,Grid>@ Pointset_Powerset<C_Polyhedron>@ Pointset_Powerset<NNC_Polyhedron>"
Which is already incorrect, but the sed command above fails to remove the extra blanks.
Tried this on a Linux machine also with following results (same as Solaris):
tovrea@challenger%set alist = "Polyhedron@Grid@Rational_Box@BD_Shape<mpz_class>@ BD_Shape<mpq_class>@ Octagonal_Shape<mpz_class>@ Octagonal_Shape<mpq_class>@ Constraints_Product<C_Polyhedron,Grid>@ Pointset_Powerset<C_Polyhedron>@ Pointset_Powerset<NNC_Polyhedron>" tovrea@challenger%echo $alist | sed -e 's/[[ ]][[ ]]*/ /g' -e 's/[[ ]]*([[@<>,]])[[ ]]*/\1/g' -e 's/>>/> >/g' -e 's/^[[ ]]//g' -e 's/[[ ]]$//g' Polyhedron@Grid@Rational_Box@BD_Shape<mpz_class>@ BD_Shape<mpq_class>@ Octagonal_Shape<mpz_class>@ Octagonal_Shape<mpq_class>@ Constraints_Product<C_Polyhedron,Grid>@ Pointset_Powerset<C_Polyhedron>@ Pointset_Powerset<NNC_Polyhedron>
Hard coded the correct list in configure and the names were generated correctly. Also, ClooG compiled without the undefined references experienced prior to the kludge.
-----Original Message----- From: P M Hill [mailto:hill@comp.leeds.ac.uk] Sent: Sunday, August 16, 2009 1:22 AM To: Tovrea, George W (US SSA) Cc: ppl-devel@cs.unipr.it Subject: RE: [PPL-devel] Undefined PPL references attempting to build cloog-ppl
On Thu, 13 Aug 2009, Tovrea, George W (US SSA) wrote:
Any other ideas about how to fix this issue?
Only that the configure file generates the Makefiles, including the one with the buggy names.
In your generated configure file you should have: required_instantiations_canonical_names=`echo "${required_instantiations}" | sed -e 's/> //g' -e 's/>//g' -e 's/[< ,]/_/g'`
which will be used to generate the "interface" or "canonical" names from
the C++ names - for example - BD_Shape_mpq_class from BD_Shape<mpq_class>
So I can only suggest that you check your configure file that the above line is correct there.
Pat
-----Original Message----- From: Tovrea, George W (US SSA) Sent: Tuesday, August 11, 2009 1:45 PM To: 'P M Hill' Subject: RE: [PPL-devel] Undefined PPL references attempting to build cloog-ppl
Yes, they are also messed up there:
required_instantiations_c_cxx_headers = ppl_c_Polyhedron.hh ppl_c_Grid.hh ppl_c_Rational_Box.hh ppl_c_BD_Shape_mpz_class.hh ppl_c__BD_Shape_mpq_class.hh ppl_c__Octagonal_Shape_mpz_class.hh ppl_c__Octagonal_Shape_mpq_class.hh ppl_c__Constraints_Product_C_Polyhedron_Grid.hh ppl_c__Pointset_Powerset_C_Polyhedron.hh ppl_c__Pointset_Powerset_NNC_Polyhedron.hh required_instantiations_c_cxx_objects = ppl_c_Polyhedron.lo ppl_c_Grid.lo ppl_c_Rational_Box.lo ppl_c_BD_Shape_mpz_class.lo ppl_c__BD_Shape_mpq_class.lo ppl_c__Octagonal_Shape_mpz_class.lo ppl_c__Octagonal_Shape_mpq_class.lo ppl_c__Constraints_Product_C_Polyhedron_Grid.lo ppl_c__Pointset_Powerset_C_Polyhedron.lo ppl_c__Pointset_Powerset_NNC_Polyhedron.lo required_instantiations_c_cxx_sources = ppl_c_Polyhedron.cc ppl_c_Grid.cc ppl_c_Rational_Box.cc ppl_c_BD_Shape_mpz_class.cc ppl_c__BD_Shape_mpq_class.cc ppl_c__Octagonal_Shape_mpz_class.cc ppl_c__Octagonal_Shape_mpq_class.cc ppl_c__Constraints_Product_C_Polyhedron_Grid.cc ppl_c__Pointset_Powerset_C_Polyhedron.cc ppl_c__Pointset_Powerset_NNC_Polyhedron.cc required_instantiations_canonical_names =
Polyhedron@Grid@Rational_Box@BD_Shape_mpz_class@_BD_Shape_mpq_class@_Oct
agonal_Shape_mpz_class@_Octagonal_Shape_mpq_class@_Constraints_Product_C
_Polyhedron_Grid@_Pointset_Powerset_C_Polyhedron@_Pointset_Powerset_NNC_
Polyhedron
-----Original Message----- From: P M Hill [mailto:hill@comp.leeds.ac.uk] Sent: Tuesday, August 11, 2009 1:42 PM To: Tovrea, George W (US SSA) Cc: Sebastian Pop; The Parma Polyhedra Library developers' list;
Roberto
Bagnara Subject: Re: [PPL-devel] Undefined PPL references attempting to build cloog-ppl
Also check the Makefile in the same directory. If they are messed up there, then the problem appears to be with autoreconf.
Pat
On Tue, 11 Aug 2009, Tovrea, George W (US SSA) wrote:
Yes, I have looked at that file (ppl_interface_instantiations.m4) and the names are messed up in there, as you can see:
m4_define(`m4_interface_classes_names',
`Polyhedron@Grid@Rational_Box@BD_Shape_mpz_class@_BD_Shape_mpq_class@_Oc
tagonal_Shape_mpz_class@_Octagonal_Shape_mpq_class@_Constraints_Product_
C_Polyhedron_Grid@_Pointset_Powerset_C_Polyhedron@_Pointset_Powerset_NNC
_Polyhedron') m4_define(`m4_cplusplus_classes_names', `Polyhedron@Grid@Rational_Box@BD_Shape<mpz_class>@
BD_Shape<mpq_class>@
Octagonal_Shape<mpz_class>@ Octagonal_Shape<mpq_class>@ Constraints_Product<C_Polyhedron,Grid>@
Pointset_Powerset<C_Polyhedron>@
Pointset_Powerset<NNC_Polyhedron>')
-----Original Message----- From: P M Hill [mailto:hill@comp.leeds.ac.uk] Sent: Tuesday, August 11, 2009 1:31 PM To: Tovrea, George W (US SSA) Cc: Roberto Bagnara; The Parma Polyhedra Library developers' list; Sebastian Pop Subject: Re: [PPL-devel] Undefined PPL references attempting to build cloog-ppl
Here are a few observations wrt the code you have sent and maybe they might help us find the bug.
I have noticed in your snippets of code that the interface names with the extra "_" are always the same - and it is added before the main root. (Either "_" precedes the name or "ppl_c__" precedes the name where
the
double "__" should be a single "_".) A list of these names is built
by
the configure as the default interface classes and are placed in the Makefile in the interfaces directory. When make is executed, the Makefile generates a file called ppl_interface_instantiations.m4 in the interfaces directory.
Assuming the default configuration is used, this should contain the following:
m4_define(`m4_interface_classes_names',
`Polyhedron@Grid@Rational_Box@BD_Shape_mpz_class@BD_Shape_mpq_class@Octa
gonal_Shape_mpz_class@Octagonal_Shape_mpq_class@Constraints_Product_C_Po
lyhedron_Grid@Pointset_Powerset_C_Polyhedron@Pointset_Powerset_NNC_Polyh
edron@Double_Box@BD_Shape_double@Octagonal_Shape_double') m4_define(`m4_cplusplus_classes_names',
`Polyhedron@Grid@Rational_Box@BD_Shape<mpz_class>@BD_Shape<mpq_class>@Oc
tagonal_Shape<mpz_class>@Octagonal_Shape<mpq_class>@Constraints_Product<
C_Polyhedron,Grid>@Pointset_Powerset<C_Polyhedron>@Pointset_Powerset<NNC
_Polyhedron>@Double_Box@BD_Shape<double>@Octagonal_Shape<double>')
and is then used by the m4 to generate the C code for each of these classes.
So it may be helpful to check that if one or both of these generated files have the names correctly (ie as above). I suspect that some names may already be buggy and have the extra "_". In which case, it could be autoreconf or even make that could be the problem and not m4.
HTH
Pat
On Tue, 11 Aug 2009, Tovrea, George W (US SSA) wrote:
In a previous mail, you wrote:
Strange: this is the same version I use. I don't know what to say: in ppl_c.h you should end up with
PPL_TYPE_DECLARATION(Polyhedron) PPL_TYPE_DECLARATION(Grid) PPL_TYPE_DECLARATION(Rational_Box) PPL_TYPE_DECLARATION(BD_Shape_mpz_class) PPL_TYPE_DECLARATION(BD_Shape_mpq_class) PPL_TYPE_DECLARATION(Octagonal_Shape_mpz_class) PPL_TYPE_DECLARATION(Octagonal_Shape_mpq_class) PPL_TYPE_DECLARATION(Constraints_Product_C_Polyhedron_Grid) PPL_TYPE_DECLARATION(Pointset_Powerset_C_Polyhedron) PPL_TYPE_DECLARATION(Pointset_Powerset_NNC_Polyhedron)
whereas you have
PPL_TYPE_DECLARATION(Polyhedron) PPL_TYPE_DECLARATION(Grid) PPL_TYPE_DECLARATION(Rational_Box) PPL_TYPE_DECLARATION(BD_Shape_mpz_class) PPL_TYPE_DECLARATION(_BD_Shape_mpq_class) PPL_TYPE_DECLARATION(_Octagonal_Shape_mpz_class) PPL_TYPE_DECLARATION(_Octagonal_Shape_mpq_class) PPL_TYPE_DECLARATION(_Constraints_Product_C_Polyhedron_Grid) PPL_TYPE_DECLARATION(_Pointset_Powerset_C_Polyhedron) PPL_TYPE_DECLARATION(_Pointset_Powerset_NNC_Polyhedron)
Note that all the declarations that are in error above have a double underscore after ppl_c in the snippet below. All the ones that are correct have a single underscore after ppl_c. For example, BD_Shape_mpz_class above relates to ppl_c_BD_Shape_mpz_class whereas _BD_Shape_mpq_class above relates to ppl_c__BD_Shape_mpq_class
below.
Seems more than coincidental. However, I modified config.status
changing
all ppl_c__ tp ppl_c_. This did not build (still looking for some ppl_c__ files). I am currently trying to debug
/net/whistler/auto/users/tovrea/local/sol2/bin/m4 --prefix-builtin
-I..
-I../../../interfaces/C -I../../../interfaces/C/.. \ ../../../interfaces/C/ppl_interface_generator_c_h.m4 > ppl_c_domains.h
ppl_c_domains.h contains all the ppl_c__ names
-----Original Message----- From: Roberto Bagnara [mailto:bagnara@cs.unipr.it] Sent: Tuesday, August 11, 2009 12:54 AM To: Tovrea, George W (US SSA) Cc: Sebastian Pop; The Parma Polyhedra Library developers' list Subject: Re: [PPL-devel] Undefined PPL references attempting to
build
cloog-ppl
Tovrea, George W (US SSA) wrote:
The names are already messed up after running configure. From
config.status:
S["required_instantiations_c_cxx_objects"]="ppl_c_Polyhedron.lo
ppl_c_Grid.lo ppl_c_Rational_Box.lo ppl_c_BD_Shape_mpz_class.lo ppl_c__BD_Shape_mpq_class.lo ppl_c__Octagonal_Shape_mpz_class.lo"\
" ppl_c__Octagonal_Shape_mpq_class.lo
ppl_c__Constraints_Product_C_Polyhedron_Grid.lo ppl_c__Pointset_Powerset_C_Polyhedron.lo ppl_c__Pointset_Powers"\
"et_NNC_Polyhedron.lo" S["required_instantiations_c_cxx_sources"]="ppl_c_Polyhedron.cc
ppl_c_Grid.cc ppl_c_Rational_Box.cc ppl_c_BD_Shape_mpz_class.cc ppl_c__BD_Shape_mpq_class.cc ppl_c__Octagonal_Shape_mpz_class.cc"\
" ppl_c__Octagonal_Shape_mpq_class.cc
ppl_c__Constraints_Product_C_Polyhedron_Grid.cc ppl_c__Pointset_Powerset_C_Polyhedron.cc ppl_c__Pointset_Powers"\
"et_NNC_Polyhedron.cc" S["required_instantiations_c_cxx_headers"]="ppl_c_Polyhedron.hh
ppl_c_Grid.hh ppl_c_Rational_Box.hh ppl_c_BD_Shape_mpz_class.hh ppl_c__BD_Shape_mpq_class.hh ppl_c__Octagonal_Shape_mpz_class.hh"\
" ppl_c__Octagonal_Shape_mpq_class.hh
ppl_c__Constraints_Product_C_Polyhedron_Grid.hh ppl_c__Pointset_Powerset_C_Polyhedron.hh ppl_c__Pointset_Powers"\
"et_NNC_Polyhedron.hh"
Hi Bill,
I see nothing messed up in this snippet. Can you explain? All the best,
Roberto
PPL-devel mailing list PPL-devel@cs.unipr.it http://www.cs.unipr.it/mailman/listinfo/ppl-devel

Tovrea, George W (US SSA) wrote:
One problem is in configure (from configure.ac) at
# Avoid extra blanks. # required_instantiations=`echo "${enableval}" | sed -e 's/[[ ]][[ ]]*/ /g' -e 's/[[ ]]*([[@<>,]])[[ ]]*/\1/g' -e 's/>>/> >/g' -e 's/^[[ ]]//g' -e 's/[[ ]]$//g'`
At this point, enableval = "Polyhedron@Grid@Rational_Box@BD_Shape<mpz_class>@ BD_Shape<mpq_class>@ Octagonal_Shape<mpz_class>@ Octagonal_Shape<mpq_class>@ Constraints_Product<C_Polyhedron,Grid>@ Pointset_Powerset<C_Polyhedron>@ Pointset_Powerset<NNC_Polyhedron>"
Which is already incorrect, but the sed command above fails to remove the extra blanks.
Tried this on a Linux machine also with following results (same as Solaris):
tovrea@challenger%set alist = "Polyhedron@Grid@Rational_Box@BD_Shape<mpz_class>@ BD_Shape<mpq_class>@ Octagonal_Shape<mpz_class>@ Octagonal_Shape<mpq_class>@ Constraints_Product<C_Polyhedron,Grid>@ Pointset_Powerset<C_Polyhedron>@ Pointset_Powerset<NNC_Polyhedron>" tovrea@challenger%echo $alist | sed -e 's/[[ ]][[ ]]*/ /g' -e 's/[[ ]]*([[@<>,]])[[ ]]*/\1/g' -e 's/>>/> >/g' -e 's/^[[ ]]//g' -e 's/[[ ]]$//g' Polyhedron@Grid@Rational_Box@BD_Shape<mpz_class>@ BD_Shape<mpq_class>@ Octagonal_Shape<mpz_class>@ Octagonal_Shape<mpq_class>@ Constraints_Product<C_Polyhedron,Grid>@ Pointset_Powerset<C_Polyhedron>@ Pointset_Powerset<NNC_Polyhedron>
Hi Bill. The test you made are wrong: you copied the sed command from `configure.ac', where square brackets need to be quoted. You should test, instead, with the sed command you find in `configure'. Here is the relevant fragment:
# Avoid extra blanks. required_instantiations=`echo "${enableval}" | sed -e 's/[ ][ ]*/ /g' -e 's/[ ]*([@<>,])[ ]*/\1/g' -e 's/>>/> >/g' -e 's/^[ ]//g' -e 's/[ ]$//g'` # Check the specified instantiations for validity. ac_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS -I${srcdir}"
Please try again your experiments (both on Linux and Solaris) and let us know what you get. All the best,
Roberto
participants (2)
-
Roberto Bagnara
-
Tovrea, George W (US SSA)