Libraries
These libraries are required for building the Jancy compiler.
LLVM 3.4.2
Jancy uses LLVM as a back-end. LLVM is a collection of compiler libraries which quickly became a de-facto standard framework for compiler back-end implementation.
Since Jancy and IO Ninja are still officially built on Visual Studio 2010, and newer versions of LLVM unfortunately CANNOT be built on Visual Studio 2010 (because of the lack of C++11 support) – you will need to download and build LLVM 3.4.2 which is the latest LLVM version to still support Visual Studio 2010.
Sources of LLVM 3.4.2 are available at: http://llvm.org/releases/download.html#3.4.2
After downloading and extracting LLVM sources please follow the LLVM CMake build guide at: http://llvm.org/docs/CMake.html
Note
When building static LLVM libraries on Linux systems, it is highly recommended to add
-fvisibility=hidden
to C/C++ flags [1].Note
On Linux systems it is also recommended to set
LLVM_ENABLE_TERMINFO
toOFF
as to avoid unnecessary dependency onlibncurses
.Note
You don’t have to install LLVM; merely building the static libraries is enough.
Lua
Grammar compiler Graco uses Lua string templates for generating C++ code from LL(k) grammar. Therefore, Lua headers and libraries are required for building Graco.
Lua executables, header files and both static and dynamic libraries are available in official repositories of most Linux distributions.
Lua sources, as well as the links to pre-compiled binaries (of both executables and libraries), could be found at the official Lua website: http://www.lua.org
Both 5.2.x and 5.3.x branches should be fine.
These libraries are optional and are only required in order to build the full Jancy source package.
OpenSSL & LibSSH2
LibSSH2 and OpenSSL libraries are required to build
jnc_io_ssh.jncx
dynamic extension library. This library providesio.SshChannel
class for managing client-side SSH connections.If this functionality is not required, neither OpenSSL nor LibSSH2 is necessary.
Both OpenSSL and LibSSH2 are available in official repositories of most Linux distributions. Alternatively, they can be built from sources available at official websites.
Official OpenSSL website: http://www.openssl.org Official LibSSH2 website: http://www.libssh2.org
There are also a number of unofficial projects on the web offering pre-compiled libraries for both OpenSSL and LibSSH2.
Pcap/WinPcap
Pcap (called WinPcap on Windows) library is required to build
jnc_io_pcap.jncx
dynamic extension library. This library providesio.Pcap
class for low-level network packet management including filtering, capturing and injecting network traffic.If this functionality is not required, Pcap library is not necessary.
Pcap library provides facilities for low-level network packet management including filtering, capturing and injecting network traffic.
Pcap is part of Mac OS X SDK and is usually available out-of-the-box in many Linux distributions as well. On Windows systems sources, pre-compiled libraries and drivers could be downloaded from the official WinPcap website: http://www.winpcap.org
QT 5.x
QT is a comprehensive cross-platform C++ framework. Jancy relies on QT to provide the user interface in its GUI-based tests and samples:
test_qt
is a simple Jancy editor capable of compiling and running user code;jnc_sample_03_dialog
is a GUI sample demonstrating the application of Jancy reactive programming concepts to QT widgets.
Any QT version 5.x should be fine. However, newer versions of QT may not be compatible with Visual Studio 2010. Here in Tibbo, we use QT 5.4.2 to build the official packages of IO Ninja.
QT official download archive is available at: http://download.qt.io/archive/qt
Footnotes: