diff --git a/docs/building.md b/docs/building.md index dc31dfedb..4e73ea6e4 100644 --- a/docs/building.md +++ b/docs/building.md @@ -56,17 +56,28 @@ Install basic dependencies sudo apt-get install libssl-dev curl unzip automake build-essential file pkg-config git python3 libtool libtinfo6 cmake libgit2-dev clang libncurses5-dev libncursesw5-dev zlib1g-dev llvm g++ gcc gperf libopencv-dev python3-typogrify xsltproc valac gobject-introspection vapigen meson ``` -libtinfo5 (required for monero_c, will be dropped once we are at 0.19.x.. maybe) +For Ubuntu 20.04, +``` +pip3 install --upgrade meson==0.64.1 markdown==3.4.1 markupsafe==2.1.1 jinja2==3.1.2 pygments==2.13.0 toml==0.10.2 typogrify==2.0.7 tomli==2.0.1 +``` + +For Ubuntu 24.04, +``` +sudo apt install pipx libgcrypt20-dev libglib2.0-dev libsecret-1-dev +pipx install meson==0.64.1 markdown==3.4.1 markupsafe==2.1.1 jinja2==3.1.2 pygments==2.13.0 toml==0.10.2 typogrify==2.0.7 tomli==2.0.1 +``` + +Install `libtinfo5` (required by [monero_c](https://github.com/MrCyjaneK/monero_c), should be dropped in the future): ``` wget http://mirrors.kernel.org/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.1_amd64.deb -O libtinfo5.deb \ && apt install ./libtinfo5.deb \ && rm libtinfo5.deb ``` -Install [Rust](https://www.rust-lang.org/tools/install) with command: +Install [Rust](https://www.rust-lang.org/tools/install) via [rustup.rs](https://rustup.rs), the required Rust toolchains, and `cargo-ndk 2.12.7` with command: ``` curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -source ~/.bashrc +source ~/.bashrc rustup install 1.67.1 1.71.0 1.72.0 1.73.0 rustup default 1.67.1 cargo install cargo-ndk --version 2.12.7 --locked @@ -83,17 +94,7 @@ Linux desktop specific dependencies: sudo apt-get install clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev meson python3-pip libgirepository1.0-dev valac xsltproc docbook-xsl ``` -For Ubuntu 20.04, -``` -pip3 install --upgrade meson==0.64.1 markdown==3.4.1 markupsafe==2.1.1 jinja2==3.1.2 pygments==2.13.0 toml==0.10.2 typogrify==2.0.7 tomli==2.0.1 -``` - -For Ubuntu 24.04, -``` -sudo apt install pipx libgcrypt20-dev libglib2.0-dev libsecret-1-dev -pipx install meson==0.64.1 markdown==3.4.1 markupsafe==2.1.1 jinja2==3.1.2 pygments==2.13.0 toml==0.10.2 typogrify==2.0.7 tomli==2.0.1 -``` - +### Clone the repository and initialize submodules After installing the prerequisites listed above, download the code and init the submodules ``` git clone https://github.com/cypherstack/stack_wallet.git @@ -109,17 +110,15 @@ cd scripts/linux cd ../.. ``` -### Build coinlib -Coinlib's native secp256k1 library must be built prior to running Stack Wallet. It can be built from within the root `stack_wallet` folder on a... - - Linux host for Linux targets: `dart run coinlib:build_linux`, or +### Build secp256k1 +Coinlib requires a secp256k1 library to be built prior to running Stack Wallet. It can be built from within the root `stack_wallet` folder on a... + - Linux host for Linux targets: `dart run coinlib:build_linux` (requires [Docker](https://docs.docker.com/engine/install/ubuntu/) or [`podman`](https://podman.io/docs/installation)) - Linux host for Windows targets: `dart run coinlib:build_windows_crosscompile` - Windows host: `dart run coinlib:build_windows` - WSL2 host: `dart run coinlib:build_wsl` - macOS host: `dart run coinlib:build_macos` -To build coinlib on Linux, you will need `docker` (see [installation instructions](https://docs.docker.com/engine/install/ubuntu/)) or [`podman`](https://podman.io/docs/installation) (`sudo apt-get -y install podman`) - -For Windows targets, you can use a `secp256k1.dll` produced by any of the three middle options if the first attempt doesn't succeed. +or by using `scripts/linux/build_secp256k1.sh` or `scripts/windows/build_secp256k1.bat`. ### Run prebuild script @@ -134,7 +133,7 @@ or manually by creating the files referenced in that script with the specified c ### Build plugins #### Build script: `build_app.sh` -The `build_app.sh` script is use to build applications Stack Wallet. View the script's help message with `./build_app.sh -h` for more information on its usage. +The `build_app.sh` script is used to build the Stack Wallet and its family of applications. View the script's help message with `./build_app.sh -h` for more information on its usage. Options: @@ -161,7 +160,7 @@ cd scripts cd scripts ./build_app.sh -a stack_wallet -p linux ``` - + +TODO: configure compiler to prefer built over system libraries. Should already use them? --> #### Building plugins and configure for Windows +Install dependencies like MXE: ``` -cd scripts +cd scripts/windows ./deps.sh -./build_app.sh -a stack_wallet -p windows +``` + +and use `scripts/build_app.sh` to build plugins: +``` +cd .. +./build_app.sh -a stack_wallet -p windows -v 2.1.0 -b 210 ``` ### Running @@ -289,16 +294,11 @@ Install the following libraries: sudo apt-get install libgtk2.0-dev ``` -You will also need to install MXE on the WSL2 Ubuntu 20.04 host and can do so by running `stack_wallet/scripts/windows/deps.sh`: -``` -./stack_wallet/scripts/windows/deps.sh -``` - The WSL2 host may optionally be navigated to the `stack_wallet` repository on the Windows host in order to build the plugins in-place and skip the next section in which you copy the `dll`s from WSL2 to Windows. Then build windows `dll` libraries by running the following script on the WSL2 Ubuntu 20.04 host: - `stack_wallet/scripts/windows/build_all.sh` -Copy the resulting `dll`s to their respective positions on the Windows host: +If the DLLs were built on the WSL filesystem instead of on Windows, copy the resulting `dll`s to their respective positions on the Windows host: - `stack_wallet/crypto_plugins/flutter_libepiccash/scripts/windows/build/libepic_cash_wallet.dll` - `stack_wallet/crypto_plugins/flutter_liblelantus/scripts/windows/build/libmobileliblelantus.dll` diff --git a/scripts/windows/deps.sh b/scripts/windows/deps.sh index 802ca8f8a..c9975b457 100644 --- a/scripts/windows/deps.sh +++ b/scripts/windows/deps.sh @@ -1,8 +1,9 @@ #!/bin/bash -(cd ../../crypto_plugins/flutter_libepiccash/scripts/windows && ./deps.sh ) -(cd ../../crypto_plugins/flutter_liblelantus/scripts/windows && ./mxedeps.sh ) -# (cd ../../crypto_plugins/flutter_libmonero/scripts/windows && ./monerodeps.sh && ./mxedeps.sh) & +cd ../../crypto_plugins/flutter_libepiccash/scripts/windows && ./deps.sh +cd ../../crypto_plugins/flutter_liblelantus/scripts/windows && ./mxedeps.sh +# cd ../../crypto_plugins/flutter_libmonero/scripts/windows && ./monerodeps.sh && ./mxedeps.sh +sudo apt install libgtk2.0-dev wait echo "Done building"