# ANNA Multi-purpose C++ development suite, focused on Telco resources (communications, protocols and tools). ANNA is acronym for "Anna is not nothingness anymore", that is to say: "Anna is something to take into account" (like a SONaTINA). ANNA is a complete suite of tools and resources to build proffesional applications with minimum cost. ## Revision control Based on GIT, hosted on http://redmine.teslayout.com You could use my pre-commit specific template if you want to do some basic checkings (i.e. astyle code processing): Execute './scripts/git/use-pre-commit.sh' ## Build project ### With docker Architectures 'x86_64' and 'armv7l' are supported. Execute: > tools/build-with-docker [variant: [Release]|Debug] Note: database resources building is unsupported at the moment using docker. ### Natively This is a CMake based building suite. Install cmake: > sudo apt-get install cmake And then generate the makefiles from project root directory: > cmake . You could specify type of build, 'Debug' or 'Release', for example: > cmake -DCMAKE_BUILD_TYPE=Debug . > cmake -DCMAKE_BUILD_TYPE=Release . You could avoid database resources compilation to ease the add of requirements: > cmake -DSKIP_DATABASE_BUILD=1 . ## Clean project > make clean ## Change the compilers > cmake -DCMAKE_CXX_COMPILER=/usr/bin/g++ -DCMAKE_C_COMPILER=/usr/bin/gcc or > cmake -DCMAKE_CXX_COMPILER=/usr/bin/clang++ -DCMAKE_C_COMPILER=/usr/bin/clang ## Some basic ubuntu requirements ### OpenSSL: > sudo apt-get install libssl-dev ### Gnome XML: > sudo apt-get install libxml2-dev ### OpenLDAP: > sudo apt-get install libldap2-dev ### Pcap: > sudo apt-get install libpcap-dev ### MySql: > sudo apt-get install libmysqlclient-dev ### Oracle: Go to https://help.ubuntu.com/community/Oracle%20Instant%20Client and download development packages: For example: > wget https://download.oracle.com/otn_software/linux/instantclient/19600/oracle-instantclient19.6-devel-19.6.0.0.0-1.x86_64.rpm > sudo alien -i oracle-instantclient19.6-devel-19.6.0.0.0-1.x86_64.rpm (probably basic & sqlplus is also needed) Edit CMakeLists.txt and update oracle includes, for example: > include_directories(/usr/include/oracle//client64/include) ### Oracle-OpenLDAP conflict: as usual, Oracle is doing things very bad. Move the ldap.h from oracle includes, i.e.: > cd /usr/include/oracle/12.1/client64 > sudo mv ldap.h ldap.h.orig ### Google Test Framework: > sudo apt-get install libgtest-dev Note that this package only install source files. You have to compile the code yourself to create the necessary library files. These source files should be located at /usr/src/gtest. Browse to this folder and use cmake to compile the library: > cd /usr/src/gtest > sudo cmake CMakeLists.txt > sudo make Copy or symlink libgtest.a and libgtest_main.a to your /usr/lib folder: > sudo cp *.a /usr/lib ## Documentation Execute 'make doc' > cd docs/doxygen > tree -L 1 . ├── Doxyfile ├── html ├── latex └── man ## Unit tests Execute 'make test' ## Install To install headers, libraries, and examples, execute: > sudo make install Optionally you could specify another prefix for installation: > cmake -DMY_OWN_INSTALL_PREFIX=$HOME/anna-deploy > make install ## Uninstall > cat install_manifest.txt | sudo xargs rm ## AOTS (Agents-Oriented Testing Setup) See INSTALL_AOTS.md