<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.inkscape.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=LiiRq5</id>
	<title>Inkscape Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.inkscape.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=LiiRq5"/>
	<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/Special:Contributions/LiiRq5"/>
	<updated>2026-06-02T14:15:37Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=NonRecursiveMakefile&amp;diff=14097</id>
		<title>NonRecursiveMakefile</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=NonRecursiveMakefile&amp;diff=14097"/>
		<updated>2007-04-11T03:33:19Z</updated>

		<summary type="html">&lt;p&gt;LiiRq5: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Proposal:&lt;br /&gt;
&lt;br /&gt;
  Switch to a single makefile in src/ that includes all the&lt;br /&gt;
  stuff previously in src/**[[/Makefile]].am.&lt;br /&gt;
&lt;br /&gt;
  Top-level makefile continues to be recursive make.  This simplifies&lt;br /&gt;
  data installation, and the benefits of changing aren't much for&lt;br /&gt;
  directories outside of src/**.&lt;br /&gt;
&lt;br /&gt;
  Use automake's `include' directive on blah[[/Makefile_insert]].&lt;br /&gt;
&lt;br /&gt;
  Most existing blah[[/Makefile]].am content goes to blah[[/Makefile_insert]],&lt;br /&gt;
  e.g. blah_libblah_a_{CPPFLAGS,SOURCES,LDFLAGS,LDADD}.&lt;br /&gt;
&lt;br /&gt;
  Some &amp;quot;global&amp;quot; variable definitions move to src[[/Makefile]].am:&lt;br /&gt;
  noinst_LIBRARIES, DISTCLEANFILES, [[EXTRA_DIST]], [[EXTRA_PROGRAMS]],&lt;br /&gt;
  TESTS, check_PROGRAMS.&lt;br /&gt;
&lt;br /&gt;
  INCLUDES[[/AM_CPPFLAGS]] become e.g. blah_libblah_a_CPPFLAGS (i.e.&lt;br /&gt;
  per-target instead of per-directory).&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;Local&amp;quot; variable definitions (e.g. used for conditional compilation,&lt;br /&gt;
  e.g. win32_sources) go in src/blah[[/Makefile_insert]], and acquire a `blah_'&lt;br /&gt;
  prefix.  (The win32_sources variable from src[[/Makefile]].am goes to&lt;br /&gt;
  src[[/Makefile_insert]] with no added prefix.)&lt;br /&gt;
&lt;br /&gt;
  src[[/Makefile]].am contains:&lt;br /&gt;
&lt;br /&gt;
      include blah[[/Makefile_insert]]&lt;br /&gt;
&lt;br /&gt;
      Definitions for the aforementioned &amp;quot;global&amp;quot; variables.&lt;br /&gt;
&lt;br /&gt;
      dist-hook rule.&lt;br /&gt;
&lt;br /&gt;
Advantages:&lt;br /&gt;
&lt;br /&gt;
    Can depend on things from other directories.  E.g. some files in&lt;br /&gt;
    display/ depend on helper/sp-marshal.h having been built, and various&lt;br /&gt;
    */*-test programs depend on libraries in other directories (previously&lt;br /&gt;
    hacked with a `check-recursive: all-recursive' dependency in&lt;br /&gt;
    src[[/Makefile]].am).&lt;br /&gt;
&lt;br /&gt;
    Compilation is expected to be faster:&lt;br /&gt;
&lt;br /&gt;
      - Fewer invocations of automake and make.&lt;br /&gt;
&lt;br /&gt;
      - Better parallelization is possible with make -j / make -l (e.g.&lt;br /&gt;
        when using distcc).&lt;br /&gt;
&lt;br /&gt;
    However, making CPPFLAGS per-target means much longer generated&lt;br /&gt;
    Makefile content.  I haven't yet done timing tests (underway).&lt;br /&gt;
&lt;br /&gt;
Disadvantages:&lt;br /&gt;
&lt;br /&gt;
    All files mentioned in the makefile fragments need to specify their&lt;br /&gt;
    directory.  E.g. if blah[[/Makefile]].am used to contain&lt;br /&gt;
&lt;br /&gt;
      libblah_a_SOURCES = \&lt;br /&gt;
        foo.cpp foo.h&lt;br /&gt;
&lt;br /&gt;
    then blah[[/Makefile_insert]] will now contain&lt;br /&gt;
&lt;br /&gt;
      blah_libblah_a_SOURCES =  \&lt;br /&gt;
        blah/foo.cpp    \&lt;br /&gt;
        blah/foo.h&lt;br /&gt;
&lt;br /&gt;
Any other advantages/disadvantages?&lt;br /&gt;
&lt;br /&gt;
Checks to be done before switching:&lt;br /&gt;
&lt;br /&gt;
    `make install' creates same directory tree.&lt;br /&gt;
&lt;br /&gt;
    - Done.  Some differences in the inkscape/inkview executable files,&lt;br /&gt;
      all other files bytewise-identical.&lt;br /&gt;
&lt;br /&gt;
    `make check' works.&lt;br /&gt;
&lt;br /&gt;
    - Done.  Works.  Hmm, haven't checked that all expected checks are&lt;br /&gt;
      getting run.&lt;br /&gt;
&lt;br /&gt;
    `make check' works immediately after `make clean'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    - Not yet checked.&lt;br /&gt;
&lt;br /&gt;
    `make distcheck' works.&lt;br /&gt;
&lt;br /&gt;
    - Not yet checked.&lt;br /&gt;
&lt;br /&gt;
Any other checks to be done?&lt;br /&gt;
&lt;br /&gt;
pjrm.&lt;/div&gt;</summary>
		<author><name>LiiRq5</name></author>
	</entry>
</feed>