<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.15"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>AMCL: Mac OS</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>
<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.15 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</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="PageDoc"><div class="header">
  <div class="headertitle">
<div class="title">Mac OS </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2>Software dependencies</h2>
<p>Install <a href="http://brew.sh/">Homebrew</a></p>
<ul type="disc">
<li>
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" </li>
</ul>
<p>Install <a href="http://www.cmake.org/download/">cmake</a></p>
<ul type="disc">
<li>
brew install cmake </li>
</ul>
<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>
brew install pkg-config libffi </li>
<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>
<ul type="disc">
<li>
brew install doxygen </li>
</ul>
<h2>Build Instructions</h2>
<p>The default build is for 64 bit machines, Elliptic curve BN254CX and curve type Weierstrass</p>
<ol type="disc">
<li>
mkdir -p target/build </li>
<li>
cd target/build </li>
<li>
cmake ../.. </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 -DWORD_LENGTH=32 ../.. </li>
</ol>
<h2>Uninstall software</h2>
<ul type="disc">
<li>
sudo make uninstall </li>
</ul>
</div></div><!-- PageDoc -->
</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.15
</small></address>
</body>
</html>
