summaryrefslogtreecommitdiff
path: root/devdocs/gnu_make/extending-make.html
blob: 9b6a44b6108b93dc9648bb68c8c4e22b3e07d759 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  <h1 class="chapter">Extending GNU make</h1>  <p>GNU <code>make</code> provides many advanced capabilities, including many useful functions. However, it does not contain a complete programming language and so it has limitations. Sometimes these limitations can be overcome through use of the <code>shell</code> function to invoke a separate program, although this can be inefficient. </p> <p>In cases where the built-in capabilities of GNU <code>make</code> are insufficient to your requirements there are two options for extending <code>make</code>. On systems where it’s provided, you can utilize GNU Guile as an embedded scripting language (see <a href="guile-integration">GNU Guile Integration</a>). On systems which support dynamically loadable objects, you can write your own extension in any language (which can be compiled into such an object) and load it to provide extended capabilities (see <a href="load-directive">The <code>load</code> Directive</a>). </p> <table class="menu" border="0" cellspacing="0"> <tr>
<td align="left" valign="top">• <a href="guile-integration" accesskey="1">Guile Integration</a>
</td>
<td> </td>
<td align="left" valign="top">Using Guile as an embedded scripting language. </td>
</tr> <tr>
<td align="left" valign="top">• <a href="loading-objects" accesskey="2">Loading Objects</a>
</td>
<td> </td>
<td align="left" valign="top">Loading dynamic objects as extensions. </td>
</tr> </table><div class="_attribution">
  <p class="_attribution-p">
    Copyright © 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Free Software Foundation, Inc. <br>Licensed under the GNU Free Documentation License.<br>
    <a href="https://www.gnu.org/software/make/manual/html_node/Extending-make.html" class="_attribution-link">https://www.gnu.org/software/make/manual/html_node/Extending-make.html</a>
  </p>
</div>