
Ralf Wildenhues wrote:
- Roberto Bagnara wrote on Thu, Aug 21, 2008 at 12:55:25PM CEST:
[ ... lots of sources, conditional and all ... ]
Using the solution outlined in the Automake manual (i.e., using conditionals) would cause us to write enormous Makefile.am files which would be a maintenance nightmare. That is, now everything is automated; if we use a long chain of conditionals we would have to maintain consistency by hand.
Are you saying that you generate Makefile.am (or an include snippet for it) automatically?
Hi Ralf,
no. In the previous version we generated automatically the individual C++ sources, including one that #included all the others. The list of C++ sources is only known at configure time: at that time the sources are generated.
If not, why not, if yes, what is the problem with maintaining consistency with a script? Ideally, you generate both the files and the makefile.am snippet from the same script.
Can I generated the Makefile.am at configure time? Notice that the list of domains is really unbounded: the PPL supports constructions on domains like products and powersets. So the user can ask for a product of a powerset of a product of ... We really cannot anticipate all the possibilities.
Do you already do the splitup in CVS? I cannot see it there (I just got HEAD from :pserver:anoncvs@cvs.cs.unipr.it:/cvs/ppl).
I am halfway through it. I thought I had found a workaround, but there are still problems. What I have at the moment is something that suffers from the problem outlined above and, in addition, does not work:
pkglib_LTLIBRARIES = libppl_swiprolog.la
nodist_libppl_swiprolog_la_SOURCES = \ ppl_swiprolog.cc
EXTRA_libppl_swiprolog_la_SOURCES = \ ../ppl_prolog_Polyhedron.cc \ ../ppl_prolog_Grid.cc \ ../ppl_prolog_Pointset_Powerset_C_Polyhedron.cc \ ../ppl_prolog_Pointset_Powerset_NNC_Polyhedron.cc # The above is the list of configure-dependent sources # that we cannot anticipate. So listing the files here # is unsatisfactory.
libppl_swiprolog_la_LIBADD = \ @required_instantiations_prolog_cxx_objects@ \ $(top_builddir)/src/libppl.la \ $(WATCHDOG_LIBRARY) \ @extra_libraries@
# @required_instantiations_prolog_cxx_objects@ contains # the list of the .lo file corresponding to the .cc files # above. If I do `make libppl_swiprolog.la' I get # the error that the (inexistent) .lo files are invalid # Libtool files. Bot if I do, e.g., # `make pl_prolog_Polyhedron.lo' the right thing happens. # I wonder why `make libppl_swiprolog.la' does not make # all the required .lo files.
Thanks,
Roberto