1+ import Tabs from '@theme/Tabs ';
2+ import TabItem from '@theme/TabItem ';
3+
14LingoDB relies on three main external dependencies:
25* [ LLVM/MLIR 20] ( https://github.com/llvm/llvm-project )
3- * [ Apache Arrow 19 ] ( https://arrow.apache.org/release/19.0.0.html )
6+ * [ Apache Arrow 20 ] ( https://arrow.apache.org/release/19.0.0.html )
47* [ Boost Context 1.83] ( https://www.boost.org/doc/libs/1_83_0/libs/context/doc/html/index.html )
58
69** Additional tools and libraries required:**
@@ -14,7 +17,9 @@ We also provide a [Dockerfile](https://github.com/lingo-db/lingo-db/pkgs/contain
1417When building dependencies from source, make sure that either the cmake config files are installed in a system-wide locations, or for example, the ` CMAKE_PREFIX_PATH ` is set accordingly.
1518
1619## LLVM/MLIR
17- ### Ubuntu/Linux
20+
21+ <Tabs groupId =" os-tabs " >
22+ <TabItem value =" linux " label =" Ubuntu/Linux " >
1823Follow the instructions on [ https://apt.llvm.org/ ] ( https://apt.llvm.org/ ) to install the repository on your system.
1924Then install the following packages: ` clang-20 llvm-20 libclang-20-dev llvm-20-dev libmlir-20-dev mlir-20-tools clang-tidy-20 `
2025
@@ -24,45 +29,119 @@ For other recent Linux distributions, you can also rely on the pre-built binarie
2429### Building from Source
2530
2631``` shell
27- wget https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.0-rc1/llvm-project-20.1.0-rc1.src.tar.xz
28- tar -xf llvm-project-20.1.0-rc1.src.tar.xz
32+ wget https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.0-rc1/llvm-project-20.1.0-rc1.src.tar.xz
33+ tar -xf llvm-project-20.1.0-rc1.src.tar.xz
2934mkdir llvm-project-20.1.0-rc1.src/build
3035cd llvm-project-20.1.0-rc1.src
31- env VIRTUAL_ENV=/venv cmake -B build -DLLVM_ENABLE_PROJECTS=" llvm;mlir;clang;clang-tools-extra" -DLLVM_TARGETS_TO_BUILD=" X86" -DLLVM_BUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=Release -G Ninja -DLLVM_ENABLE_ASSERTIONS=OFF -DLLVM_BUILD_TESTS=OFF -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=OFF -DLLVM_ENABLE_DUMP=ON -DLLVM_ENABLE_FFI=ON -DCMAKE_CXX_FLAGS=" -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer" -DLLVM_PARALLEL_LINK_JOBS=1 -DLLVM_PARALLEL_TABLEGEN_JOBS=10 -DBUILD_SHARED_LIBS=OFF -DLLVM_INSTALL_UTILS=ON -DLLVM_ENABLE_ZLIB=OFF -DCMAKE_INSTALL_PREFIX=[output-dir] llvm/
32- RUN cmake --build build --target install -j$( nproc)
36+ export INSTALL_PREFIX=[install_prefix]
37+ env VIRTUAL_ENV=/venv cmake -B build -DLLVM_ENABLE_PROJECTS=" llvm;mlir;clang;clang-tools-extra" -DLLVM_TARGETS_TO_BUILD=" X86" -DLLVM_BUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=Release -G Ninja -DLLVM_ENABLE_ASSERTIONS=OFF -DLLVM_BUILD_TESTS=OFF -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=OFF -DLLVM_ENABLE_DUMP=ON -DLLVM_ENABLE_FFI=ON -DCMAKE_CXX_FLAGS=" -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer" -DLLVM_PARALLEL_LINK_JOBS=1 -DLLVM_PARALLEL_TABLEGEN_JOBS=10 -DBUILD_SHARED_LIBS=OFF -DLLVM_INSTALL_UTILS=ON -DLLVM_ENABLE_ZLIB=OFF -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX llvm/
38+ cmake --build build --target install -j$( nproc)
39+ ```
40+
41+ </TabItem >
42+ <TabItem value =" macos " label =" MacOS " >
43+ Install LLVM/MLIR using Homebrew and make it available system-wide:
44+
45+ ``` shell
46+ brew install llvm@20
47+ brew link --force llvm@20
3348```
3449
50+ ### Binaries
51+ ⚠️ ** Caution** : the pre-built binaries provided by the LLVM project on the Github release pages ** DO NOT** serve as a replacement, since they lack the required MLIR support.
52+
53+ ### Building from Source
54+
55+ 1 . Install XCode (through the App Store).
56+ 2 . Install the build requisites: ` brew install cmake ninja z3 `
57+ 2 . Make sure to replace [ install_prefix] with your preferred install path of LLVM.
58+ ``` shell
59+ wget https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.4/llvm-project-20.1.4.src.tar.xz
60+ tar -xf llvm-project-20.1.4.src.tar.xz
61+ mkdir llvm-project-20.1.4.src/build
62+ cd llvm-project-20.1.4.src
63+ export INSTALL_PREFIX=[install_prefix]
64+ export SDKROOT=$( xcrun --sdk macosx --show-sdk-path)
65+ env VIRTUAL_ENV=/venv cmake -B build -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;mlir;polly;lldb" -DLLVM_ENABLE_RUNTIMES="compiler-rt;libcxx;libcxxabi;libunwind;pstl;openmp" -DLLVM_TARGETS_TO_BUILD="AArch64" -DLLVM_BUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=Release -G Ninja -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_BUILD_TESTS=OFF -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DLLVM_ENABLE_DUMP=ON -DLLVM_ENABLE_FFI=ON -DCMAKE_CXX_FLAGS="-fno-omit-frame-pointer -mno-omit-leaf-frame-pointer" -DLLVM_PARALLEL_LINK_JOBS=1 -DLLVM_PARALLEL_TABLEGEN_JOBS=10 -DBUILD_SHARED_LIBS=OFF -DLLVM_INSTALL_UTILS=ON -DLLVM_ENABLE_ZLIB=OFF -DLLVM_POLLY_LINK_INTO_TOOLS=ON -DLLVM_BUILD_EXTERNAL_COMPILER_RT=ON -DLLVM_ENABLE_EH=OFF -DLLVM_ENABLE_RTTI=ON -DLLVM_INCLUDE_DOCS=OFF -DLLVM_INCLUDE_TESTS=OFF -DLLVM_OPTIMIZED_TABLEGEN=ON -DLLVM_USE_RELATIVE_PATHS_IN_FILES=ON -DLLVM_SOURCE_PREFIX=. -DLLDB_USE_SYSTEM_DEBUGSERVER=ON -DLIBOMP_INSTALL_ALIASES=OFF -DLIBCXX_INSTALL_MODULES=ON -DLLVM_CREATE_XCODE_TOOLCHAIN=OFF -DCLANG_FORCE_MATCHING_LIBCLANG_SOVERSION=OFF -DLLVM_BUILD_LLVM_C_DYLIB=ON -DLLVM_ENABLE_LIBCXX=ON -DLIBCXX_PSTL_BACKEND=libdispatch -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=/opt/homebrew/Library/Homebrew/cmake/trap_fetchcontent_provider.cmake -Wno-dev -DCMAKE_OSX_SYSROOT=$(xcrun --sdk macosx --show-sdk-path) -DLLVM_ENABLE_Z3_SOLVER=ON -DFFI_INCLUDE_DIR=$(xcrun --sdk macosx --show-sdk-path)/usr/include/ffi -DFFI_LIBRARY_DIR=$(xcrun --sdk macosx --show-sdk-path)/usr/lib -DLIBCXX_INSTALL_LIBRARY_DIR=$INSTALL_PREFIX/lib/c++ -DLIBUNWIND_INSTALL_LIBRARY_DIR=$INSTALL_PREFIX/lib/unwind -DLIBCXXABI_INSTALL_LIBRARY_DIR=$INSTALL_PREFIX/c++ -DRUNTIMES_CMAKE_ARGS="-DCMAKE_INSTALL_RPATH=@loader_path|@loader_path/../unwind" -DBUILTINS_CMAKE_ARGS="-DCOMPILER_RT_ENABLE_IOS=OFF;-DCOMPILER_RT_ENABLE_WATCHOS=OFF;-DCOMPILER_RT_ENABLE_TVOS=OFF" -DCMAKE_PREFIX_PATH=/opt/homebrew -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX llvm/
66+ cmake --build build --target install -j$( sysctl -n hw.logicalcpu)
67+ ```
68+ </TabItem >
69+ </Tabs >
3570
3671## Apache Arrow
37- ### Ubuntu/Linux
72+
73+ <Tabs groupId =" os-tabs " >
74+ <TabItem value =" linux " label =" Ubuntu/Linux " >
75+
3876``` shell
3977wget https://apache.jfrog.io/artifactory/arrow/$( lsb_release --id --short | tr ' A-Z' ' a-z' ) /apache-arrow-apt-source-latest-$( lsb_release --codename --short) .deb
4078apt install -y -V ./apache-arrow-apt-source-latest-$( lsb_release --codename --short) .deb
4179apt-get update
42- apt-get install libarrow-dev=19 .*
80+ apt-get install libarrow-dev=20 .*
4381```
82+
4483### Binaries
4584For other recent Linux distributions, you can also rely on the pre-built binaries provided by the Apache Arrow project.
4685
4786### Building from Source
4887
4988``` shell
50- wget https://dlcdn. apache.org /arrow/arrow-19 .0.1 /apache-arrow-19 .0.1 .tar.gz
51- tar -xf apache-arrow-19 .0.1 .tar.gz
52- RUN cd apache-arrow-19 .0.1 /cpp
53- cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=[output-dir] -DARROW_DEPENDENCY_SOURCE=BUNDLED -DARROW_BUILD_STATIC=ON -DARROW_CSV=ON -DARROW_COMPUTE=ON
89+ wget https://github.com/ apache/arrow/releases/download/apache- arrow-20 .0.0 /apache-arrow-20 .0.0 .tar.gz
90+ tar -xf apache-arrow-20 .0.0 .tar.gz
91+ cd apache-arrow-20 .0.0 /cpp
92+ cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=[output-dir] -DARROW_DEPENDENCY_SOURCE=BUNDLED -DARROW_BUILD_STATIC=ON -DARROW_CSV=ON -DARROW_JSON=ON - DARROW_COMPUTE=ON apache-arrow-20.0.0/cpp
5493cmake --build build --target install -j$( nproc)
5594```
95+
96+ </TabItem >
97+ <TabItem value =" macos " label =" MacOS " >
98+
99+ Install Apache Arrow using Homebrew:
100+
101+ ``` shell
102+ brew tap lingo-db/homebrew https://github.com/lingo-db/homebrew.git
103+ brew install lingo-db/homebrew/apache-arrow@20
104+ ```
105+
106+ ### Building from Source
107+
108+ ``` shell
109+ wget https://github.com/apache/arrow/releases/download/apache-arrow-20.0.0/apache-arrow-20.0.0.tar.gz
110+ tar -xf apache-arrow-20.0.0.tar.gz
111+ cd apache-arrow-20.0.0/cpp
112+ cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=[output-dir] -DARROW_DEPENDENCY_SOURCE=BUNDLED -DARROW_BUILD_STATIC=ON -DARROW_CSV=ON -DARROW_JSON=ON -DARROW_COMPUTE=ON -DCMAKE_PREFIX_PATH=/opt/homebrew/ -DCMAKE_CXX_COMPILER=/opt/homebrew/bin/clang++ -DCMAKE_C_COMPILER=/opt/homebrew/bin/clang
113+ cmake --build build --target install -j$( sysctl -n hw.logicalcpu)
114+ ```
115+
116+ </TabItem >
117+ </Tabs >
118+
56119## Boost Context
57- ### Ubuntu/Linux
120+
121+ <Tabs groupId =" os-tabs " >
122+ <TabItem value =" linux " label =" Ubuntu/Linux " >
123+
58124``` shell
59125apt-get install libboost-context1.83-dev
60126```
127+
61128### Build from Source
62129``` shell
63130wget https://archives.boost.io/release/1.83.0/source/boost_1_83_0.tar.gz
64131tar -xf boost_1_83_0.tar.gz
65132cd boost_1_83_0
66133 ./bootstrap.sh --prefix=/usr # or any other directory in the PATH/LD_LIBRARY_PATH
67134 ./b2 install --with-context
68- ```
135+ ```
136+
137+ </TabItem >
138+ <TabItem value =" macos " label =" MacOS " >
139+
140+ Install Boost Context using Homebrew:
141+
142+ ``` shell
143+ brew install boost
144+ ```
145+
146+ </TabItem >
147+ </Tabs >
0 commit comments