Software Development Environment
git clone https://github.com/llvm/llvm-project.git
cd llvm-project
mkdir build && cd build
cmake -G Ninja ../llvm \
-DLLVM_ENABLE_PROJECTS=mlir \
-DLLVM_BUILD_EXAMPLES=ON \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_ASSERTIONS=ON \
-DLLVM_ENABLE_RTTI=ON \
-DLLVM_TARGETS_TO_BUILD="Native;NVPTX;AMDGPU"
make -j8
# https://abseil.io/docs/cpp/quickstart-cmake.html#getting-the-abseil-code
git clone --depth 1 --branch origin/lts_2023_08_02 https://github.com/abseil/abseil-cpp.git
cd abseil-cpp
mkdir build && cd build
cmake -DABSL_BUILD_TESTING=OFF -DABSL_USE_GOOGLETEST_HEAD=ON -DCMAKE_CXX_STANDARD=14 -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=$PWD/install ..
cmake --build . --target all
make install
export absl_DIR=$PWD/install/lib/cmake/absl
echo $PWD/install/lib | tee /etc/ld.so.conf.d/absl.conf
ldconfig
# This is necessary for linking in Abseil.
# set(CMAKE_POSITION_INDEPENDENT_CODE ON)
# v4.24.3
git clone --depth 1 --branch v24.2 https://github.com/protocolbuffers/protobuf.git
cd protobuf
git submodule update --init --recursive
mkdir build && cd build
cmake -Dprotobuf_ABSL_PROVIDER=package -Dprotobuf_BUILD_SHARED_LIBS=ON -Dprotobuf_BUILD_TESTS=OFF -Dabsl_DIR=$absl_DIR -DCMAKE_INSTALL_PREFIX=$PWD/install ..
make -j8
make install
export Protobuf_DIR=$PWD/install/lib/cmake/protobuf
echo $PWD/install/lib | tee /etc/ld.so.conf.d/protobuf.conf
ldconfig
# v3.21.12
# no absl dependency
git clone --depth 1 --branch v3.21.12 https://github.com/protocolbuffers/protobuf.git
cd protobuf
cmake -Dprotobuf_BUILD_SHARED_LIBS=ON -Dprotobuf_BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX=$PWD/install ..
make -j8
make install
git clone https://github.com/google/flatbuffers.git
cd flatbuffers
cmake .. -DFLATBUFFERS_BUILD_SHAREDLIB=ON -DCMAKE_INSTALL_PREFIX=$PWD/install
make -j8
make install
echo $PWD/install/lib | tee /etc/ld.so.conf.d/flatbuffers.conf
git clone --depth 1 -b v1.58.0 https://github.com/grpc/grpc.git
cd grpc
git submodule update --init
mkdir build && cd build
cmake -DgRPC_INSTALL=ON -DCMAKE_BUILD_TYPE=Release -DgRPC_ABSL_PROVIDER=package -Dabsl_DIR=$absl_DIR -DgRPC_PROTOBUF_PROVIDER=package -DProtobuf_DIR=$Protobuf_DIR -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=$PWD/install ..
make -j8
make install
export gRPC_DIR=$PWD/install/lib/cmake/grpc
echo $PWD/install/lib | tee /etc/ld.so.conf.d/grpc.conf
ldconfig
# https://opencv.org/get-started/
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
VERSION=4.8.1
pushd opencv_contrib && git checkout $VERSION && popd
cd opencv && git checkout $VERSION
mkdir build && cd build
cmake -G Ninja -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules/ -DBUILD_SHARED_LIBS=ON -DWITH_CUDA=ON -DCUDA_GENERATION=Ampere -DCMAKE_INSTALL_PREFIX=$PWD/install ..
ninja -j8
ninja install -j4
git clone https://github.com/open-source-parsers/jsoncpp.git
cd jsoncpp
cmake .. -DJSONCPP_WITH_TESTS=OFF -DCMAKE_INSTALL_PREFIX=$PWD/install
make -j8
make install
VERSION=n6.1
git clone https://git.ffmpeg.org/ffmpeg.git
apt install autoconf automake build-essential cmake git-core libass-dev libfreetype6-dev libgnutls28-dev libmp3lame-dev libsdl2-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev meson ninja-build pkg-config texinfo wget yasm zlib1g-dev nasm libx264-dev libx265-dev libnuma-dev libvpx-dev libfdk-aac-dev libopus-dev libdav1d-dev libbz2-dev
cd ffmpeg
git checkout $VERSION
mkdir third_party && cd third_party
git clone https://github.com/FFmpeg/nv-codec-headers.git
cd nv-codec-headers && make install
cd ../..
./configure --enable-ffnvcodec --enable-cuda --enable-cuvid --enable-nvdec --enable-nvenc --enable-nonfree --enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64 --enable-gpl --enable-gnutls --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libdav1d --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-cuda-nvcc --enable-shared --nvccflags="-gencode arch=compute_80,code=sm_80 -O2" --extra-cflags="-I/usr/local/include/" --extra-ldflags=-L/usr/local/lib --prefix=$PWD/install
make install -j8