Skip to content

Building EACirc_eac3

Karel Kubicek edited this page Feb 13, 2017 · 2 revisions

EACirc can be comfortably build using CMake (cmake.org) on Linux and Windows. The minimal supported version of CMake is 3.4.

The EACirc framework consists of core files, projects, and 3rd party libs.

EACirc is self-version aware: to ease experiment replication, hash of the current git commit is build in the binary. The commit information is saved in file Version.h and updated during generation of CMake files. To successfully configure, generate and build the EACirc project the git tools are required and git must be found by CMake (on Windows, this means having git in the system PATH!).

Note: EACirc is mixing plain C and C++ source files (C files included by typical extern "C" method). Beware if you are using some other building system, since problems in linking may occur because of this.

CMake

If you are not familiar with basic workflow and usage of CMake please read the CMake Wiki.

To set debug or release mode for build please use standard CMake macro for it, ie. in terminal use cmake -DCMAKE_BUILD_TYPE=Release <source_dir> or cmake -DCMAKE_BUILD_TYPE=Debug <source_dir>.

By default all targets builds (3rd party libs, EACirc, and all projects). If you don't want or don't need to build any project there is a CMake option for it called BUILD_<TARGET>, ie. BUILD_CAESAR, BUILD_SHA3, BUILD_ESTREAM. You can turn on/off this option in cmake-gui or ccmake during configuration.

The EACirc output files are build to the run directory along with their configuration files, ie <build_dir>/run.

The test target runs EACirc binary in the run directory as ./eacirc -test but does not preserve output. To view and preserve output from tests run check target instead.

Building example

You can build EACirc on Linux using cmake with the following sequence in the root project directory:

$ mkdir build && cd build
$ ccmake ..
(configure, alter settings as desired, generate)
$ make

You can use Cmake GUI (or CLI version called ccmake) to configure the project before the build if you feel uncomfortable with the command line.

For development in some IDE (e.g. MS Visual Studio, Qt Creator, ...), use Cmake GUI to configure the project (select your IDE version). Cmake then automatically generates appropriate project files for you.

Some useful notes:

  • Qt Creator on CMake uses CodeBlocks project files (.cbp). You can generate it when loading the CMake to Qt Creator and reconfigure it by ccmake later, as desired.
  • MS Visual Studio supports multiple build types (e.g. Debug+Release), while in other IDEs (e.g. Qt Creator) you need to have a separate build folder for each type.
  • As a back-end low-level build system, you can use ninja-build instead of GNU Make. It automatically runs in parallel and builds the project faster. Just use a different generator for cmake/ccmake (in linux, provide the arguments -G Ninja).

Supported compilers

  • gcc-4.9+
  • clang-3.4+ (clang-3.5+ for building Oneclick)
  • Apple LLVM version 7.3.0 (clang-703.0.31)
  • msvc12 (Microsoft Visual Studio 2013)
  • almost any with good c++11 support

Building CUDA

See CUDA-support.

Microsoft Visual Studio notes

Change working directory of eacirc and oneclick targets to target directory for all configurations Select eacirc target. Go to Project->Properties->Debugging, change Configuration to All Configurations. Set Working Directory to $(TargetDir). For oneclick target do the same.

When installing OpenSSL distribution for Windows, use one from the official website. Note that this site can be unreachable at times.

Target dependency graph

Dependencies

Clone this wiki locally