- C++11 Compiler (LLVM/Clang and GCC are tested)
- CMake 3.4.3+
- CoreGen (and it's constituent dependencies)
The majority of the CoreGen Portal library and tool dependencies are satisfied by either by CoreGen or by the wxWidgets GUI interface library. wxWidgets comes packages as various different libraries depending upon the target build target (and the respective platform GUI). Generally speaking, the CoreGen Portal package is built using the following steps:
- Clone the CoreGenPortal repository. There are currently no git dependencies
- Create a
build
directory within the CoreGen source tree (and change to that directory) - Execute cmake to generate the target-specific makefiles
- Execute the build
We currently support building and installing on LTS versions of Ubuntu. While it is certainly possible to build/install on intermediate release and/or development versions, we do not currently test these scenarios.
- Install the system dependencies
sudo apt-get install -y software-properties-common
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt-get install libwxgtk3.0-0v5 libwxgtk3.0-dev libwxgtk3.0-gtk3-0v5 libwxgtk3.0-gtk3-dev libgraphviz-dev g++-9
- [Optional] Update the default GCC/G++ pointer to default to GCC/G++-9
sudo update-alternatives --remove-all gcc
sudo update-alternatives --remove-all g++
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 20
sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30
sudo update-alternatives --set cc /usr/bin/gcc
sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30
sudo update-alternatives --set c++ /usr/bin/g++
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
- Clone the CoreGenPortal repository
git clone https://github.com/opensocsysarch/CoreGenPortal.git
- Setup your build tree
cd CoreGenPortal
mkdir build
cd build
- Execute CMake to generate the makefiles
cmake -DLLVM_DIR=/usr/lib/llvm-8/cmake -DCOREGEN_INSTALL_PATH=/path/to/CoreGen/install ../
- Execute the build
make
- Install the system dependencies
sudo apt-get install libwxgtk3.0-0v5 libwxgtk3.0-dev libwxgtk3.0-gtk3-0v5 libwxgtk3.0-gtk3-dev libgraphviz-dev
- Clone the CoreGenPortal repository
git clone https://github.com/opensocsysarch/CoreGenPortal.git
- Setup your build tree
cd CoreGenPortal
mkdir build
cd build
- Execute CMake to generate the makefiles
cmake -DLLVM_DIR=/usr/lib/llvm-8/cmake -DCOREGEN_INSTALL_PATH=/path/to/CoreGen/install ../
- Execute the build
make
- Install the system dependencies
sudo apt-get install libwxgtk3.0-gtk3-dev libwxgtk3.0-gtk3-0v5 libgraphviz-dev
- Clone the CoreGenPortal repository
git clone https://github.com/opensocsysarch/CoreGenPortal.git
- Setup your build tree
cd CoreGenPortal
mkdir build
cd build
- Execute CMake to generate the makefiles
cmake -DLLVM_DIR=/usr/lib/llvm-8/cmake -DCOREGEN_INSTALL_PATH=/path/to/CoreGen/install ../
- Execute the build
make
- Install the system dependencies
sudo apt-get install libwxgtk3.0-gtk3-dev libwxgtk3.0-gtk3-0v5
- Clone the CoreGenPortal repository
git clone https://github.com/opensocsysarch/CoreGenPortal.git
- Setup your build tree
cd CoreGenPortal
mkdir build
cd build
- Execute CMake to generate the makefiles
cmake -DLLVM_DIR=/usr/lib/llvm-8/cmake -DCOREGEN_INSTALL_PATH=/path/to/CoreGen/install ../
- Execute the build
make
Centos7 (CentOS 7.4, 1704) has somewhat of an older toolchain. As a result, the build requires some rather unique system packages. Utilize the following steps on vanilla CentOS 7.4 systems.
- Install the EPEL repository (required to pull the wxGTK3 RPMs).
wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
sudo rpm -Uvh epel-release-7-11.noarch.rpm
- Install the system dependencies:
sudo yum -y install wxGTK3 wxGTK3-devel graphviz-devel
- [Optional] For those wishing to build CentOS7 RPMS, you also need the following packages.
sudo yum install rpm-build rpmdevtools
- Enable the SCL LLVM environment (this will create a fresh bash shell with the correct paths)
scl enable llvm-toolset-7 bash
- Clone the CoreGenPortal repository
git clone https://github.com/opensocsysarch/CoreGenPortal.git
- Setup your build tree
cd CoreGenPortal
mkdir build
cd build
- Execute CMake to generate the makefiles
cmake -DLLVM_DIR=/opt/rh/llvm-toolset-7.0/root/usr/lib64/cmake/llvm -DCOREGEN_INSTALL_PATH=/path/to/CoreGen/install ../
- Execute the build
make
Centos8 has a modern toolchain, much more so than Centos7. However, the build requires packages from the EPEL repository. Utilize the following steps on the CentOS 8 systems.
- Install the EPEL repository (required to pull the wxGTK3 RPMs).
wget https://dl.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/e/epel-release-8-8.el8.noarch.rpm
sudo rpm -Uvh epel-release-8-8.el8.noarch.rpm
- Install the system dependencies:
sudo yum -y install wxGTK3 wxGTK3-devel graphviz-devel
- [Optional] For those wishing to build CentOS7 RPMS, you also need the following packages.
sudo yum install rpm-build rpmdevtools
- Clone the CoreGenPortal repository
git clone https://github.com/opensocsysarch/CoreGenPortal.git
- Setup your build tree
cd CoreGenPortal
mkdir build
cd build
- Execute CMake to generate the makefiles
cmake -DLLVM_DIR=/usr/lib64/cmake/llvm -DCOREGEN_INSTALL_PATH=/path/to/CoreGen/install ../
- Execute the build
make
- Install the homebrew package: https://brew.sh/
- Install the
llvm@7
,llvm@8
,wxmac
andgraphviz
packages. It is very important on 10.13 to install both versions of LLVM.
brew install llvm@7 llvm@8 wxmac graphviz
- Clone the CoreGenPortal repository
git clone https://github.com/opensocsysarch/CoreGenPortal.git
- Setup your build tree
cd CoreGenPortal
mkdir build
cd build
- Execute CMake to generate the makefiles. Note the use of LLVM@7 as the base compiler and LLVM@8 for the runtime target. This is important as OSX 10.13 does not support using C++17 features and LLVM@8 for compilation.
CC=/usr/local/opt/llvm\@7/bin/clang CXX=/usr/local/opt/llvm\@7/bin/clang++ cmake -DLLVM_DIR=/usr/local/opt/llvm\@8/lib/cmake/llvm -DCOREGEN_INSTALL_PATH=/path/to/CoreGen/install ../
- Execute the build
make
- Install the homebrew package: https://brew.sh/
- Install the
llvm@8
,wxmac
andgraphviz
packages.
brew install llvm@7 llvm@8 wxmac graphviz
- Clone the CoreGenPortal repository
git clone https://github.com/opensocsysarch/CoreGenPortal.git
- Setup your build tree
cd CoreGenPortal
mkdir build
cd build
- Execute CMake to generate the makefiles. Note the use of LLVM@8 for the actual compilation. This provides sufficient C++17 support.
CC=/usr/local/opt/llvm\@7/bin/clang CXX=/usr/local/opt/llvm\@7/bin/clang++ cmake -DLLVM_DIR=/usr/local/opt/llvm\@8/lib/cmake/llvm -DCOREGEN_INSTALL_PATH=/path/to/CoreGen/install ../
- Execute the build
make
- -DCMAKE_BUILD_TYPE=Release : Builds a release build with optimization (Default)
- -DCMAKE_BUILD_TYPE=Debug : Builds with debugging options (-O0 -g, etc)
- -DCMAKE_INSTALL_PREFIX=/path/to/install : Forces alternate install locations
- -DCOREGEN_INSTALL_PATH=/path/to/coregen/install : The default is /opt/coregen
- -DLLVM_DIR=/path/to/llvm/cmake/scripts : Sets the path for the LLVM cmake scripts. This must be set for the build to be successful. This is generally difficult to derive automatically.
- -DBUILD_ALL_TESTING=ON : Enables the top-level GUI test harness
- -DBUILD_DOCUMENTATION=ON : Enables Doxygenized documentation.
make doc
will build the documentation (requires Doxygen to be installed)
- -DYAML_PATH=/path/to/alternate/yaml-cpp : Set an alternate yaml-cpp library path
- -DCOREGEN_BUILD_RPM=ON : Enable RPM builds (CentOS)
- -DCOREGEN_BUILD_DEB=ON : Enable DEB builds (Ubuntu)
- -DCOREGEN_BUILD_DMG=ON : Enable DMG builds (Darwin)
- -DCOREGEN_BUILD_TGZ=ON : Enable TGZ builds (generic)
- -DBUILD_COREGEN_MEMORY_SANITY=ON : Enables Clang's memory sanitizer testing. You MUST be uses Clang as your target C++ compiler!!
- -DBUILD_PORTAL_GUI_TESTS=ON : Enables the Python3 GUI test harness
CoreGenPortal is licensed under an Apache-style license - see the LICENSE file for details
- None at this time
- John Leidel - Chief Scientist - Tactical Computing Labs
- David Donofrio - Chief Hardware Architect - Tactical Computing Labs
- Ryan Kabrick - Research Engineer - Tactical Computing Labs
- None at this time