|
Re: Distributing BUILT_SOURCES dependencies and not target: msg#00044sysutils.automake.general
>>> "Xavier" == Xavier Décoret <xdecoret@xxxxxxx> writes: Xavier> Hi, Xavier> I am compiling a project with a swig generated file. Swig is a tool Xavier> that takes a foo.i file and generates a foo_wrap.cxx (it can do more Xavier> but no our concerne here ;-)). Xavier> In my Makefile.am, I put: Xavier> line 1: foo_wrap.cxx: foo.i Xavier> line 2: $SWIG -c++ -python foo.i Xavier> line 3: Xavier> line 4: BUILT_SOURCES: foo_wrap.cxx Xavier> line 5: libfoo.la_SOURCES: foo_wrap.cxx Xavier> line 6: Xavier> line 7: dist_data_DATA: foo.i This should be something like foo_wrap.cxx: $(srcdir)/foo.i $(SWIG) -c++ -python -o $@ $(srcdir)/foo.i whereveryouwantitinstalled_LTLIBRARIES = libfoo.la nodist_libfoo_la_SOURCES = foo_wrap.cxx CLEANFILES = $(nodist_libfoo_la_SOURCES) EXTRA_DIST = foo.i if you want foo_wrap.cxx to be rebuilt on the user-side and not distributed, or something like $(srcdir)/foo_wrap.cxx: $(srcdir)/foo.i $(SWIG) -c++ -python $(srcdir)/foo.i whereveryouwantitinstalled_LTLIBRARIES = libfoo.la libfoo_la_SOURCES = $(srcdir)/foo_wrap.cxx MAINTAINERCLEANFILES = $(srcdir)/foo_wrap.cxx EXTRA_DIST = foo.i if you want to distribute foo_wrap.cxx so users do not need to have SWIG installed. BUILT_SOURCE is not needed here since foo_wrap.cxx is an explicit dependency of libfoo.la. Here is a more concrete setup I'm using to build two interdependent Python modules using SWIG and Libtool. I decided to distribute the SWIG wrapper sources so as not to require SWIG on the build host. | AM_CPPFLAGS = -I$(PYTHONINC) -I$(top_srcdir)/src $(BUDDY_CPPFLAGS) | | EXTRA_DIST = ltihooks.py spot.i buddy.i | python_PYTHON = $(srcdir)/spot.py $(srcdir)/buddy.py | pyexec_LTLIBRARIES = _spot.la _buddy.la | lib_LTLIBRARIES = libspotswigpy.la | | libspotswigpy_la_SOURCES = libpy.c | libspotswigpy_la_CFLAGS = -DSWIG_GLOBAL | libspotswigpy_la_LDFLAGS = -avoid-version | | _spot_la_SOURCES = $(srcdir)/spot_wrap.cxx | _spot_la_LDFLAGS = -avoid-version -module | _spot_la_LIBADD = $(top_builddir)/src/libspot.la libspotswigpy.la | | $(srcdir)/spot_wrap.cxx: $(srcdir)/spot.i | swig -noruntime -c++ -python -I$(srcdir) -I$(top_srcdir)/src $(srcdir)/spot.i | | $(srcdir)/spot.py: $(srcdir)/spot.i | $(MAKE) $(AM_MAKEFLAGS) spot_wrap.cxx | | _buddy_la_SOURCES = $(srcdir)/buddy_wrap.cxx | _buddy_la_LDFLAGS = -avoid-version -module $(BUDDY_LDFLAGS) | _buddy_la_LIBADD = libspotswigpy.la | | $(srcdir)/buddy_wrap.cxx: $(srcdir)/buddy.i | swig -noruntime -c++ -python $(BUDDY_CPPFLAGS) $(srcdir)/buddy.i | | $(srcdir)/buddy.py: $(srcdir)/buddy.i | $(MAKE) $(AM_MAKEFLAGS) buddy_wrap.cxx | | MAINTAINERCLEANFILES = \ | $(srcdir)/spot_wrap.cxx $(srcdir)/spot.py \ | $(srcdir)/buddy_wrap.cxx $(srcdir)/buddy.py Xavier> First question: I put line 7 because I want the .i file to be Xavier> distributed so people can re-generate the .cxx file with their own Xavier> version of swig ($SWIG is set by a m4 command SWIG_PROG in Xavier> configure.in). Is this the correct way to do it. It seems make dist Xavier> produce tarballs with the file in it som I am happy. `dist_data_DATA = foo.i' also means to install foo.i in $(datadir)/; I don't think you want that. Use EXTRA_DIST. Xavier> Second question: The problem is that foo_wrap.cxx gets distributed Xavier> too. And since it is always more recent that .i file after I ran Xavier> make. I don't have the expected behaviour. Downloaders of the lib Xavier> won't get the foo_wrap.cxx regenerated. How do I remove this file from Xavier> the dist. *_SOURCES are distributed by default, and you should use nodist_*_SOURCES otherwise. Xavier> Third question: with this Makefile.am, make dist produce a tarball Xavier> that I can install, compile, etc... but make distcheck complains that Xavier> it cannot find foo.i!! But it *is* in the tarball?!? I don't get at Xavier> all what's happening here. It cannot find foo.i in the build directory because it is in the source directory. -- Alexandre Duret-Lutz |
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | Re: Distributing BUILT_SOURCES dependencies and not target: 00044, Jan Kratochvil |
|---|---|
| Next by Date: | Re: Distributing BUILT_SOURCES dependencies and not target: 00044, Alexandre Duret-Lutz |
| Previous by Thread: | Re: Distributing BUILT_SOURCES dependencies and not targeti: 00044, Alexandre Duret-Lutz |
| Next by Thread: | Get C;ialis Fast and Easy: 00044, Vivian D. Hinton |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |