244 lines
62 KiB
HTML
244 lines
62 KiB
HTML
<!-- HTML header for doxygen 1.8.8-->
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
<!-- For Mobile Devices -->
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta name="generator" content="Doxygen 1.8.11"/>
|
|
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
|
|
<title>lutin: build system and packager: Create a new Module:</title>
|
|
<!--<link href="tabs.css" rel="stylesheet" type="text/css"/>-->
|
|
<script type="text/javascript" src="dynsections.js"></script>
|
|
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="search/searchdata.js"></script>
|
|
<script type="text/javascript" src="search/search.js"></script>
|
|
<script type="text/javascript">
|
|
$(document).ready(function() { init_search(); });
|
|
</script>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
|
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">
|
|
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
|
|
<script type="text/javascript" src="doxy-boot.js"></script>
|
|
</head>
|
|
<body>
|
|
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
|
|
<div class="container">
|
|
<div class="navbar-header">
|
|
<a class="navbar-brand">lutin: build system and packager 2.2.0</a>
|
|
</div>
|
|
<div id="navbar" class="navbar-collapse collapse">
|
|
<ul class="nav navbar-nav">
|
|
<li><a href="index.html">Main Page</a></li>
|
|
<li><a href="pages.html">Related Pages</a></li>
|
|
<li><a href="namespaces.html">Namespaces</a></li>
|
|
<li><a href="annotated.html">Classes</a></li>
|
|
<li><a href="files.html">Files</a></li>
|
|
</ul>
|
|
<ul class="nav navbar-nav navbar-right">
|
|
<li class="dropdown">
|
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
|
|
Link-libs<span class="caret"></span>
|
|
</a>
|
|
<ul class="dropdown-menu">
|
|
<li><a href="http://HeeroYui.github.io/lutin">lutin</a></li>
|
|
<li><a href="http://atria-soft.github.io/ewol">ewol</a></li>
|
|
<li><a href="http://atria-soft.github.io/etk">etk</a></li>
|
|
<li><a href="http://atria-soft.github.io/ejson">ejson</a></li>
|
|
<li><a href="http://atria-soft.github.io/exml">exml</a></li>
|
|
<li><a href="http://atria-soft.github.io/esvg">esvg</a></li>
|
|
<li><a href="http://atria-soft.github.io/egami">egami</a></li>
|
|
<li><a href="http://atria-soft.github.io/gale">gale</a></li>
|
|
<li><a href="http://atria-soft.github.io/ege">ege</a></li>
|
|
<li><a href="http://atria-soft.github.io/elog">elog</a></li>
|
|
<li><a href="http://atria-soft.github.io/ememory">ememory</a></li>
|
|
<li><a href="http://atria-soft.github.io/enet">enet</a></li>
|
|
<li><a href="http://atria-soft.github.io/eproperty">eproperty</a></li>
|
|
<li><a href="http://atria-soft.github.io/esignal">esignal</a></li>
|
|
<li><a href="http://atria-soft.github.io/zeus">zeus</a></li>
|
|
<li><a href="http://atria-soft.github.io/audio-ess">audio-ess</a></li>
|
|
<li><a href="http://musicdsp.github.io/audio">audio</a></li>
|
|
<li><a href="http://musicdsp.github.io/audio-drain">audio-drain</a></li>
|
|
<li><a href="http://musicdsp.github.io/audio-orchestra">audio-orchestra</a></li>
|
|
<li><a href="http://musicdsp.github.io/audio-river">audio-river</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<div id="search-box" class="input-group">
|
|
<div class="input-group-btn">
|
|
<button aria-expanded="false" type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
|
|
<span class="glyphicon glyphicon-search"></span>
|
|
<span class="caret"></span>
|
|
</button>
|
|
<ul class="dropdown-menu">
|
|
<li><a href="#">All</a></li>
|
|
<li><a href="#">Classes</a></li>
|
|
<li><a href="#">Namespaces</a></li>
|
|
<li><a href="#">Files</a></li>
|
|
<li><a href="#">Functions</a></li>
|
|
<li><a href="#">Variables</a></li>
|
|
<li><a href="#">Typedefs</a></li>
|
|
<li><a href="#">Enumerations</a></li>
|
|
<li><a href="#">Enumerator</a></li>
|
|
<li><a href="#">Friends</a></li>
|
|
<li><a href="#">Macros</a></li>
|
|
<li><a href="#">Pages</a></li>
|
|
</ul>
|
|
</div>
|
|
<button id="search-close" type="button" class="close" aria-label="Close">
|
|
<span aria-hidden="true"></span>
|
|
</button>
|
|
<input id="search-field" class="form-control" accesskey="S" onkeydown="searchBox.OnSearchFieldChange(event);" placeholder="Search ..." type="text">
|
|
</div>
|
|
</div><!--/.nav-collapse -->
|
|
</div>
|
|
</nav>
|
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
<div class="content" id="content">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-sm-12 panel panel-default" style="padding-bottom: 15px;">
|
|
<div style="margin-bottom: 15px;">
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.8.11 -->
|
|
<script type="text/javascript">
|
|
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
|
</script>
|
|
<div id="navrow1" class="tabs">
|
|
<ul class="tablist">
|
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
|
<li class="current"><a href="pages.html"><span>Related Pages</span></a></li>
|
|
<li><a href="annotated.html"><span>Classes</span></a></li>
|
|
<li>
|
|
<div id="MSearchBox" class="MSearchBoxInactive">
|
|
<span class="left">
|
|
<img id="MSearchSelect" src="search/mag_sel.png"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
alt=""/>
|
|
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
|
onfocus="searchBox.OnSearchFieldFocus(true)"
|
|
onblur="searchBox.OnSearchFieldFocus(false)"
|
|
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
|
</span><span class="right">
|
|
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
|
</span>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
</div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<iframe src="javascript:void(0)" frameborder="0"
|
|
name="MSearchResults" id="MSearchResults">
|
|
</iframe>
|
|
</div>
|
|
|
|
</div><!-- top -->
|
|
<div class="header">
|
|
<div class="headertitle">
|
|
<div class="title">Create a new Module: </div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<div class="toc"><h3>Table of Contents</h3>
|
|
<ul><li class="level1"><a href="#lutin_module_base_file">Base of the module file: </a></li>
|
|
<li class="level1"><a href="#lutin_module_library">Create a new Module (LIBRARY): </a></li>
|
|
<li class="level1"><a href="#lutin_module_binary">Create a new Module (BINARY): </a><ul><li class="level2"><a href="#lutin_module_binary_base">Generic Binary: </a></li>
|
|
<li class="level2"><a href="#lutin_module_binary_tools">Create a new Module (TEST-BINARY / TOOL-BINARY): </a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="level1"><a href="#lutin_module_data">Create a new Module (DATA): </a></li>
|
|
<li class="level1"><a href="#lutin_module_internal">Module internal specifications: </a><ul><li class="level2"><a href="#lutin_module_internal_compile">Add file to compile: </a></li>
|
|
<li class="level2"><a href="#lutin_module_internal_header">Include directory & install header: </a></li>
|
|
<li class="level2"><a href="#lutin_module_internal_depend">Add Sub-dependency: </a></li>
|
|
<li class="level2"><a href="#lutin_module_internal_flag">Compilation adn link flags/libs: </a></li>
|
|
<li class="level2"><a href="#lutin_module_internal_target_mode">build mode (release/debug): </a></li>
|
|
<li class="level2"><a href="#lutin_module_internal_target_type">build type target: </a></li>
|
|
<li class="level2"><a href="#lutin_module_internal_data">Add some data in the install path (share path): </a></li>
|
|
<li class="level2"><a href="#lutin_module_internal_write_log">display some debug to help writing code: </a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="level1"><a href="#lutin_module_full_template">A Full template: </a></li>
|
|
</ul>
|
|
</div>
|
|
<div class="textblock"><h1><a class="anchor" id="lutin_module_base_file"></a>
|
|
Base of the module file: </h1>
|
|
<p>To create a new module you will use a generic naming:</p>
|
|
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> lutin_module-name.py</div></div><!-- fragment --><p>Replace your <code>module-name</code> with the delivery you want. The name can contain [a-zA-Z0-9-_] values.</p>
|
|
<p>In the module name you must define some values:</p>
|
|
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">#!/usr/bin/python</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="keyword">import</span> <a class="code" href="namespacelutin_1_1module.html">lutin.module</a> <span class="keyword">as</span> module</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="keyword">import</span> lutin.tools <span class="keyword">as</span> tools</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> </div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"># A simple list of type:</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"># - BINARY</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"># - BINARY_SHARED</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"># - BINARY_STAND_ALONE</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"># - LIBRARY</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"># - LIBRARY_DYNAMIC</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"># - LIBRARY_STATIC</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"># - PACKAGE</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"># - PREBUILD</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"># - DATA</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="keyword">def </span>get_type():</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  <span class="keywordflow">return</span> <span class="stringliteral">"LIBRARY"</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"># simple description of the module that appear in the 'lutin -h'</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"># Note: this fucntion is optionnal.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="keyword">def </span>get_desc():</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  <span class="keywordflow">return</span> <span class="stringliteral">"Ewol tool kit"</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"># type of licence:</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"># "APACHE-2"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"># "BSD-1" / "BSD-2" / "BSD-3" / "BSD-4"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"># "GPL-1" / "GPL-2" / "GPL-3"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"># "LGPL-1" / "LGPL-2" / "LGPL-3"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"># PROPRIETARY</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"># ...</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment"># Note: this fucntion is optionnal.</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">def </span>get_licence():</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">return</span> <span class="stringliteral">"APACHE-2"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment"># type of compagny that provide the software:</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"># com : Commercial</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment"># net : Network??</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment"># org : Organisation</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment"># gov : Governement</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment"># mil : Military</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment"># edu : Education</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment"># pri : Private</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment"># museum : ...</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment"># ...</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment"># Note: this fucntion is optionnal.</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">def </span>get_compagny_type():</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">return</span> <span class="stringliteral">"com"</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment"># Name of the compagny</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment"># Note: this fucntion is optionnal.</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">def </span>get_compagny_name():</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">return</span> <span class="stringliteral">"hello-compagny"</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment"># People to contact if a problem appear in the build system / library</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment"># Note: this fucntion is optionnal.</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="keyword">def </span>get_maintainer():</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">return</span> [<span class="stringliteral">"Mr NAME SurName <my-email@group.com>"</span>]</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment"># Version of the library</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment"># Note: this fucntion is optionnal.</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="keyword">def </span>get_version():</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">return</span> [0,9,<span class="stringliteral">"dev"</span>]</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment"># create the module</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment"># @param[in] target reference on the Target that is currently build</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment"># @param[in] my_module Module handle that migh be configured</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment"># @return True The module is welled configure</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment"># @return False The module is Not availlable (for this target or ...)</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="keyword">def </span>configure(target, my_module):</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  ...</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">return</span> <span class="keyword">True</span></div></div><!-- fragment --><p>Thes it is simple to specify build for:</p>
|
|
<h1><a class="anchor" id="lutin_module_library"></a>
|
|
Create a new Module (LIBRARY): </h1>
|
|
<p>What to change: </p><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="keyword">def </span>get_type():</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>  <span class="keywordflow">return</span> <span class="stringliteral">"LIBRARY"</span></div></div><!-- fragment --><p>By default the library is compile in shared and static. The binary select the mode it prefer...</p>
|
|
<p>You can force the library to be compile as a dll/so: <code>LIBRARY_DYNAMIC</code> or a basic include lib: .a <code>LIBRARY_STATIC</code></p>
|
|
<h1><a class="anchor" id="lutin_module_binary"></a>
|
|
Create a new Module (BINARY): </h1>
|
|
<h2><a class="anchor" id="lutin_module_binary_base"></a>
|
|
Generic Binary: </h2>
|
|
<p>What to change: </p><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="keyword">def </span>get_type():</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>  <span class="keywordflow">return</span> <span class="stringliteral">"BINARY"</span></div></div><!-- fragment --><p> The Binay is compile by default target mode (note that the IOs target generate a single .so with all the library inside)</p>
|
|
<p>You can force the Binary to be use dynamic library when possible: <code>BINARY_SHARED</code> or create a single binary with no .so depenency: <code>BINARY_STAND_ALONE</code></p>
|
|
<h2><a class="anchor" id="lutin_module_binary_tools"></a>
|
|
Create a new Module (TEST-BINARY / TOOL-BINARY): </h2>
|
|
<p>Two binary are really usefull in developpement, the tools and the test-unit, This is the reason why we specify for this 2 cases.</p>
|
|
<p>Add the subElement description: </p><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="keyword">def </span>get_type():</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>  <span class="keywordflow">return</span> <span class="stringliteral">"BINARY"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="keyword">def </span>get_sub_type():</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  <span class="keywordflow">return</span> <span class="stringliteral">"TEST"</span></div></div><!-- fragment --><p> or: </p><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="keyword">def </span>get_type():</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>  <span class="keywordflow">return</span> <span class="stringliteral">"BINARY"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="keyword">def </span>get_sub_type():</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  <span class="keywordflow">return</span> <span class="stringliteral">"TOOL"</span></div></div><!-- fragment --><h1><a class="anchor" id="lutin_module_data"></a>
|
|
Create a new Module (DATA): </h1>
|
|
<p>This pode permit to only copy data and no dependency with compilling system</p>
|
|
<p>What to change: </p><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="keyword">def </span>get_type():</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>  <span class="keywordflow">return</span> <span class="stringliteral">"DATA"</span></div></div><!-- fragment --><h1><a class="anchor" id="lutin_module_internal"></a>
|
|
Module internal specifications: </h1>
|
|
<h2><a class="anchor" id="lutin_module_internal_compile"></a>
|
|
Add file to compile: </h2>
|
|
<p>This is simple: (you just need to specify all the file to compile)</p>
|
|
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="keyword">def </span>configure(target, my_module):</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>  ...</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>  <span class="comment"># add the file to compile:</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  my_module.add_src_file([</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  <span class="stringliteral">'module-name/file1.cpp'</span>,</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  <span class="stringliteral">'module-name/file2.cpp'</span>,</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  <span class="stringliteral">'module-name/file3.S'</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  ])</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  ...</div></div><!-- fragment --><h2><a class="anchor" id="lutin_module_internal_header"></a>
|
|
Include directory & install header: </h2>
|
|
<p>A big point to understand is that your library will be used by an other module, then it need to use headers.</p>
|
|
<p>The developper must isolate the external include and internal include, then lutin "install" the header and add the "install" header path to build the local library. This permit to check error inclusion directly in developpement and separate the <code>#include "XXX.h"</code> and the <code>#include <lib-xxx/XXX.h></code></p>
|
|
<p>Add file to external include: </p><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="keyword">def </span>configure(target, my_module):</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>  ...</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>  my_module.add_header_file([</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  <span class="stringliteral">'module-name/file1.h'</span>,</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  <span class="stringliteral">'module-name/file2.h'</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  ])</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> </div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  ...</div></div><!-- fragment --><p>You can add a path to your local include: </p><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="keyword">def </span>configure(target, my_module):</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>  ...</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>  my_module.add_path(os.path.join(tools.get_current_path(__file__), <span class="stringliteral">"lib-name"</span>))</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  ...</div></div><!-- fragment --><h2><a class="anchor" id="lutin_module_internal_depend"></a>
|
|
Add Sub-dependency: </h2>
|
|
<p>All library need to add at minimum of a simple library (C lib) and other if needed. To do it jus call: </p><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="keyword">def </span>configure(target, my_module):</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>  ...</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>  <span class="comment"># add dependency of the generic C library:</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  my_module.add_depend(<span class="stringliteral">'c'</span>)</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  <span class="comment"># add dependency of the generic C++ library:</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  my_module.add_depend(<span class="stringliteral">'cxx'</span>)</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  <span class="comment"># add dependency of the generic math library:</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  my_module.add_depend(<span class="stringliteral">'m'</span>)</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  <span class="comment"># or other user lib:</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  my_module.add_depend(<span class="stringliteral">'lib-name'</span>)</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  ...</div></div><!-- fragment --><p>The system can have optinnal sub-library, then if you just want to add an optionnal dependency: </p><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="keyword">def </span>configure(target, my_module):</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>  ...</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>  <span class="comment"># Add an optionnal dependency (set flag in CPP build if the subLib exist) ==> flag is locally set</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  my_module.add_optionnal_depend(<span class="stringliteral">'z'</span>, [<span class="stringliteral">"c++"</span>, <span class="stringliteral">"-DLIB_NAME_BUILD_ZLIB"</span>])</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  <span class="comment"># Add an optionnal dependency (set flag in CPP build if the subLib exist) ==> flag is exported in external upper build</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  my_module.add_optionnal_depend(<span class="stringliteral">'z'</span>, [<span class="stringliteral">"c++"</span>, <span class="stringliteral">"-DLIB_NAME_BUILD_ZLIB"</span>], export=<span class="keyword">True</span>)</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> </div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  ...</div></div><!-- fragment --><h2><a class="anchor" id="lutin_module_internal_flag"></a>
|
|
Compilation adn link flags/libs: </h2>
|
|
<p>It is possible to define local and external flags (external are set internal too): </p><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="keyword">def </span>configure(target, my_module):</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>  ...</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>  <span class="comment"># external flags:</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>  my_module.add_flag(<span class="stringliteral">'link-lib'</span>, <span class="stringliteral">"pthread"</span>, export=<span class="keyword">True</span>)</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  my_module.add_flag(<span class="stringliteral">'c++'</span>, <span class="stringliteral">"-DHELLO_FLAG=\"kljlkj\""</span>, export=<span class="keyword">True</span>)</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  <span class="comment"># internal flags:</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  my_module.add_flag(<span class="stringliteral">'c'</span>, <span class="stringliteral">"-DMODE_RELEASE"</span>)</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> </div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  ...</div></div><!-- fragment --><h2><a class="anchor" id="lutin_module_internal_target_mode"></a>
|
|
build mode (release/debug): </h2>
|
|
<p>To add somes element dependent of the build mode: </p><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="keyword">def </span>configure(target, my_module):</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>  ...</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>  <span class="keywordflow">if</span> target.get_mode() == <span class="stringliteral">"release"</span>:</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  <span class="keywordflow">pass</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  <span class="keywordflow">else</span>:</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  <span class="keywordflow">pass</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> </div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  ...</div></div><!-- fragment --><h2><a class="anchor" id="lutin_module_internal_target_type"></a>
|
|
build type target: </h2>
|
|
<p>To add somes element dependent of the target type:</p>
|
|
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="keyword">def </span>configure(target, my_module):</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>  ...</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>  <span class="keywordflow">if</span> <span class="stringliteral">"Windows"</span> <span class="keywordflow">in</span> target.get_type():</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  <span class="keywordflow">pass</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  <span class="keywordflow">elif</span> <span class="stringliteral">"MacOs"</span> <span class="keywordflow">in</span> target.get_type():</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  <span class="keywordflow">pass</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  <span class="keywordflow">elif</span> <span class="stringliteral">"IOs"</span> <span class="keywordflow">in</span> target.get_type():</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  <span class="keywordflow">pass</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  <span class="keywordflow">elif</span> <span class="stringliteral">"Linux"</span> <span class="keywordflow">in</span> target.get_type():</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  <span class="keywordflow">pass</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  <span class="keywordflow">elif</span> <span class="stringliteral">"Android"</span> <span class="keywordflow">in</span> target.get_type():</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  <span class="keywordflow">pass</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  ...</div></div><!-- fragment --><p>The target get_type return a list of type that represent the hiararchy dependency, a simple example:</p>
|
|
<p>A "Debian" herited of a "Linux" then it will return ["Linux", "Debian"]</p>
|
|
<h2><a class="anchor" id="lutin_module_internal_data"></a>
|
|
Add some data in the install path (share path): </h2>
|
|
<p>You can install a simple file:</p>
|
|
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="keyword">def </span>configure(target, my_module):</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>  ...</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>  <span class="comment"># copy file in the share/binanyName/ path (no sub path)</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  my_module.copy_path(<span class="stringliteral">'data/icon.svg'</span>)</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  ...</div></div><!-- fragment --><p>Copy multiple files (change path)</p>
|
|
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="keyword">def </span>configure(target, my_module):</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>  ...</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>  my_module.copy_path(<span class="stringliteral">'data/*'</span>, <span class="stringliteral">'destinationPath'</span>)</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  ...</div></div><!-- fragment --><h2><a class="anchor" id="lutin_module_internal_write_log"></a>
|
|
display some debug to help writing code: </h2>
|
|
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="keyword">import</span> <a class="code" href="namespacelutin_1_1debug.html">lutin.debug</a> <span class="keyword">as</span> debug</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="keyword">def </span>function(...):</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> </div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  debug.error(<span class="stringliteral">"comment that stop the build"</span>)</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  debug.warning(<span class="stringliteral">"comment that print a simple warning"</span>)</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  debug.info(<span class="stringliteral">"comment that print a simple information"</span>)</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  debug.debug(<span class="stringliteral">"comment that print a simple debug"</span>)</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  debug.verbose(<span class="stringliteral">"comment that print a simple verbose"</span>)</div></div><!-- fragment --><h1><a class="anchor" id="lutin_module_full_template"></a>
|
|
A Full template: </h1>
|
|
<p>Create the file: </p><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> lutin_module-name.py</div></div><!-- fragment --><p>With: </p><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">#!/usr/bin/python</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="keyword">import</span> <a class="code" href="namespacelutin_1_1module.html">lutin.module</a> <span class="keyword">as</span> module</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="keyword">import</span> lutin.tools <span class="keyword">as</span> tools</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="keyword">import</span> <a class="code" href="namespacelutin_1_1debug.html">lutin.debug</a> <span class="keyword">as</span> debug</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="keyword">import</span> os</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"># A simple list of type:</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"># - BINARY</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"># - BINARY_SHARED</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"># - BINARY_STAND_ALONE</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"># - LIBRARY</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"># - LIBRARY_DYNAMIC</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"># - LIBRARY_STATIC</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"># - PACKAGE</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"># - PREBUILD</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"># - DATA</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="keyword">def </span>get_type():</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keywordflow">return</span> <span class="stringliteral">"LIBRARY"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"># simple description of the module that appear in the 'lutin -h'</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"># Note: this fucntion is optionnal.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="keyword">def </span>get_desc():</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordflow">return</span> <span class="stringliteral">"Descriptiuon of the PROGRAMM"</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"># type of licence:</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"># "APACHE-2"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"># "BSD-1" / "BSD-2" / "BSD-3" / "BSD-4"</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"># "GPL-1" / "GPL-2" / "GPL-3"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"># "LGPL-1" / "LGPL-2" / "LGPL-3"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment"># PROPRIETARY</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"># ...</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"># Note: this fucntion is optionnal.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">def </span>get_licence():</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordflow">return</span> <span class="stringliteral">"PROPRIETARY"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment"># type of compagny that provide the software:</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment"># com : Commercial</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment"># net : Network??</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment"># org : Organisation</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment"># gov : Governement</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment"># mil : Military</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment"># edu : Education</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment"># pri : Private</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment"># museum : ...</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment"># ...</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment"># Note: this fucntion is optionnal.</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">def </span>get_compagny_type():</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">return</span> <span class="stringliteral">"com"</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment"># Name of the compagny</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment"># Note: this fucntion is optionnal.</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keyword">def </span>get_compagny_name():</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">return</span> <span class="stringliteral">"hello-compagny"</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment"># People to contact if a problem appear in the build system / library</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment"># Note: this fucntion is optionnal.</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keyword">def </span>get_maintainer():</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">return</span> [<span class="stringliteral">"Mr NAME SurName <my-email@group.com>"</span>]</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="comment"># return "authors.txt"</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment"># Version of the library</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment"># Note: this fucntion is optionnal.</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="keyword">def </span>get_version():</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">return</span> [0,1,<span class="stringliteral">"dev"</span>]</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="comment"># return "version.txt"</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment"># create the module</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment"># @param[in] target reference on the Target that is currently build</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment"># @param[in] my_module Module handle that migh be configured</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment"># @return True The module is welled configure</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment"># @return False The module is Not availlable (for this target or ...)</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="keyword">def </span>configure(target, my_module):</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment"># add the file to compile:</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  my_module.add_src_file([</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="stringliteral">'module-name/file1.cpp'</span>,</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="stringliteral">'module-name/file2.cpp'</span>,</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="stringliteral">'module-name/file3.S'</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  ])</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  my_module.add_header_file([</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="stringliteral">'module-name/file1.h'</span>,</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="stringliteral">'module-name/file2.h'</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  ])</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  my_module.add_path(os.path.join(tools.get_current_path(__file__), <span class="stringliteral">"lib-name"</span>))</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="comment"># add dependency of the generic C library:</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  my_module.add_depend(<span class="stringliteral">'c'</span>)</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment"># add dependency of the generic C++ library:</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  my_module.add_depend(<span class="stringliteral">'cxx'</span>)</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="comment"># add dependency of the generic math library:</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  my_module.add_depend(<span class="stringliteral">'m'</span>)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment"># or other user lib:</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  my_module.add_depend([</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="stringliteral">'lib-name1'</span>,</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="stringliteral">'lib-name2'</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  ])</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment"># Add an optionnal dependency (set flag in CPP build if the subLib exist) ==> flag is locally set</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  my_module.add_optionnal_depend(<span class="stringliteral">'z'</span>, [<span class="stringliteral">"c++"</span>, <span class="stringliteral">"-DLIB_NAME_BUILD_ZLIB"</span>])</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment"># Add an optionnal dependency (set flag in CPP build if the subLib exist) ==> flag is exported in external upper build</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  my_module.add_optionnal_depend(<span class="stringliteral">'z'</span>, [<span class="stringliteral">"c++"</span>, <span class="stringliteral">"-DLIB_NAME_BUILD_ZLIB"</span>], export=<span class="keyword">True</span>)</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="comment"># external flags:</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  my_module.add_flag(<span class="stringliteral">'link-lib'</span>, <span class="stringliteral">"pthread"</span>, export=<span class="keyword">True</span>)</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  my_module.add_flag(<span class="stringliteral">'c++'</span>, <span class="stringliteral">"-DHELLO_FLAG=\"kljlkj\""</span>, export=<span class="keyword">True</span>)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="comment"># internal flags:</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  my_module.add_flag(<span class="stringliteral">'c'</span>, <span class="stringliteral">"-DMODE_RELEASE"</span>)</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">if</span> target.get_mode() == <span class="stringliteral">"release"</span>:</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">pass</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">else</span>:</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">pass</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">if</span> <span class="stringliteral">"Windows"</span> <span class="keywordflow">in</span> target.get_type():</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">pass</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">elif</span> <span class="stringliteral">"MacOs"</span> <span class="keywordflow">in</span> target.get_type():</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">pass</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">elif</span> <span class="stringliteral">"IOs"</span> <span class="keywordflow">in</span> target.get_type():</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordflow">pass</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">elif</span> <span class="stringliteral">"Linux"</span> <span class="keywordflow">in</span> target.get_type():</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">pass</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">elif</span> <span class="stringliteral">"Android"</span> <span class="keywordflow">in</span> target.get_type():</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">pass</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment"># copy file in the share/binanyName/ path (no sub path)</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  my_module.copy_path(<span class="stringliteral">'data/icon.svg'</span>)</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  my_module.copy_path(<span class="stringliteral">'data/*'</span>, <span class="stringliteral">'destinationPath'</span>)</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment"># Return True if the module is compatible with the target or ...</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">return</span> <span class="keyword">True</span></div></div><!-- fragment --><p><b>Index:</b></p><ul>
|
|
<li>mainpage</li>
|
|
<li><a class="el" href="lutin_concept.html">Basic concept</a></li>
|
|
<li><a class="el" href="lutin_use.html">How to use lutin</a></li>
|
|
<li><a class="el" href="lutin_module.html">Create a new Module:</a> </li>
|
|
</ul>
|
|
</div></div><!-- contents -->
|
|
<!-- HTML footer for doxygen 1.8.8-->
|
|
<!-- start footer part -->
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<hr class="footer"/><address class="footer"><small>
|
|
Generated on Sun Oct 23 2016 14:08:31 for lutin: build system and packager by  <a href="http://www.doxygen.org/index.html">
|
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
|
</a> 1.8.11
|
|
</small></address>
|
|
</body>
|
|
</html>
|