On 10/28/2012 11:34 AM, Vincent Torri wrote:
> Hey
> 
> Our project build some modules as shared lib. We added the possibility
> to statically link them to the library with autoconf. We then define
> BUILD_STATIC automake conditionnal to select what we want. The tree
> directories are:
> 
> src/lib <--- where the lib is
> src/module  <-- where the module is.
> 
>  * in src/module/Makefile.am:
> 
> if ! BUILD_STATIC
> 
> pkg_LTLIBRARIES = module.la
> module_la_SOURCES = foo.c
> 
> else
> 
> noinst_LTLIBRARIES = mylib_module.la
> mylib_module_la_SOURCES = foo.c
> 
> endif
> 
>  * and in src/lib/Makefile.am
> 
> if BUILD_STATIC
> 
> SUBDIRS += ../module
>
Yikes!  Recursing into a sibling directory, rather than just children
ones, is asking for problems IMO.

> mylib_la_LIBADD += ../module/mylib_module.la
> 
> endif
> 
> It works well, until I use the maintainer-clean rule. Indeed, because
> of the SUBDIRS in src/lib/Makefile.am, maintainer-clean is launched
> twice, hence an error as there is no Makefile anymore in src/module
> when the 2nd maintainer-clean rule is executed.
> 
> I also tried this in src/lib/Makefile.am:
> 
> if BUILD_STATIC
> 
> mylib_la_SOURCES += ../module/foo.c
> 
> endif
> 
> but then same kind of error, with foo.Plo in src/module/.deps when the
> 2nd maintainer-clean rule is launched : that file does not exist
> anymore
> 
> Does someone know what I have to do ?
>
My advice: re-organize your build system to avoid recursive make
invocations where not actually necessary.

After all, your modules and library seems interrelated enough that
keeping their build separated into tow sub-systems is artificial,
and a recipe for problems.

HTH,
  Stefano

Reply via email to