<!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="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AMCL: Linux</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<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/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">AMCL
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></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">Linux </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2>Software dependencies</h2>
<p>CMake is required to build the library and can usually be installed from the operating system package manager.</p>
<ul type="disc">
<li>
sudo apt-get install cmake </li>
</ul>
<p>If not, then you can download it from www.cmake.org</p>
<p>In order to use the Python language wrapper install <a href="https://www.python.org">Python</a></p>
<p>The C Foreign Function Interface for Python <a href="https://cffi.readthedocs.org/en/latest/">CFFI</a> module is also required if you wish to use the Python module.</p>
<ul type="disc">
<li>
sudo pip install cffi </li>
</ul>
<p>In order to build the documentation <a href="http://www.stack.nl/~dimitri/doxygen/">doxygen</a> is required.</p>
<h2>Quick Start</h2>
<p>A Makefile is present at the project root that reads the options defined in config.mk. Change these options and then type <code>make</code> to build and test the library.</p>
<p>If <a href="https://www.docker.com/">docker</a> is installed then type <code>make dbuild</code> to build and test the library in a docker container.</p>
<h2>Manual build</h2>
<p>The default build is for 64 bit machines, Elliptic curve BN254CX and curve type Weierstrass</p>
<ol type="disc">
<li>
mkdir target/build </li>
<li>
cd target/build </li>
<li>
cmake -D CMAKE_INSTALL_PREFIX=/opt/amcl ../.. </li>
<li>
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./ </li>
<li>
make </li>
<li>
make test </li>
<li>
make doc </li>
<li>
sudo make install </li>
</ol>
<p>The build can be configured using by setting flags on the command line i.e.</p>
<ol type="disc">
<li>
cmake -D CMAKE_INSTALL_PREFIX=/opt/amcl -D WORD_LENGTH=32 ../.. </li>
</ol>
<p>list available CMake options</p>
<ol type="disc">
<li>
cmake -LH </li>
</ol>
<h2>Uninstall software</h2>
<ul type="disc">
<li>
sudo make uninstall </li>
</ul>
<h2>Building an installer</h2>
<p>After having built the libraries you can build a binary installer and a source distribution by running this command</p>
<ul type="disc">
<li>
make package </li>
</ul>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
