Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update macOS Build Instructions for Dependency and Configuration IssuesMac os build fix #1463

Merged
merged 5 commits into from
Nov 6, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
136 changes: 87 additions & 49 deletions doc/build-macos.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,56 +3,92 @@ macOS Build Instructions and Notes
The commands in this guide should be executed in a Terminal application.
The built-in one is located in `/Applications/Utilities/Terminal.app`.

Preparation
-----------
Install the macOS command line tools:

`xcode-select --install`

When the popup appears, click `Install`.

Then install [Homebrew](http://brew.sh).

Dependencies
----------------------

brew install automake berkeley-db4 libtool boost miniupnpc openssl pkg-config protobuf python qt libevent qrencode

In case you want to build the disk image with `make deploy` (.dmg / optional), you need RSVG

brew install librsvg

Berkley DB
------------------------
## Preparation
1. Install macOS Command Line Tools (if not already installed):
```bash
xcode-select --install
```
When the popup appears, click `Install`.


2. Install Homebrew (if not already installed):
```bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```


## Dependencies
Install the required dependencies using Homebrew:
```bash
brew install automake berkeley-db4 libtool boost miniupnpc openssl pkg-config protobuf python qt libevent qrencode python-setuptools m4
```
levonpetrosyan93 marked this conversation as resolved.
Show resolved Hide resolved

In case you want to build the disk image with `make deploy` (.dmg / optional), you need RSVG:
```bash
brew install librsvg
```

### Ensure `m4` is Found
After installing `m4`, it is important to note that `m4` is a `keg-only` formula in Homebrew. This means it is not symlinked into `/usr/local` by default. To make sure `m4` is available in your PATH, you'll need to link it manually with the `--force` flag:
```bash
brew link m4 --force
```

You can verify that `m4` is properly linked and available by running:
```bash
which m4
```
This should output the path to the `m4` binary, typically `/opt/homebrew/bin/m4` on Apple Silicon Macs. If you do not use the `--force` flag, `which m4` will likely output `/usr/bin/m4`, which is the system version and not the one installed via Homebrew.

### Troubleshooting `m4` Issues
If `m4` is not found even after installation and linking with `--force`, you may need to install Xcode to ensure that `m4` is recognized:

1. Install Xcode from the Mac App Store.
2. Once installed, open Xcode at least once to complete the setup.

#### Berkeley DB
It is recommended to use Berkeley DB 4.8. If you have to build it yourself, you can use [the installation script included in contrib/](https://github.com/bitcoin/bitcoin/blob/master/contrib/install_db4.sh) like so:
./contrib/install_db4.sh .

```bash
./contrib/install_db4.sh
```
from the root of the repository.

Note: You only need Berkeley DB if the wallet is enabled (see Disable-wallet mode).


Build Firo Core
------------------------
1. Build Firo-core:

Configure and build the headless Firo binaries as well as the GUI (if Qt is found).

In case you want to build the disk image with `make deploy` (.dmg / optional), by passing `--with-gui` to configure.

You can disable the GUI build by passing `--without-gui` to configure.

./autogen.sh
./configure
make

2. It is recommended to build and run the unit tests:

` make check`
*Note*: You only need Berkeley DB if the wallet is enabled (see Disable-wallet mode).

## Build Instructions

#### Download the Source
Before building, download the Firo source code:
```bash
git clone https://github.com/firoorg/firo
cd firo
```

#### Build Firo Core
1. **Prepare the build environment**:
```bash
cd depends
make
cd ..
```

2. **Configure and build Firo-core**:
```bash
./autogen.sh
./configure --prefix=`pwd`/depends/`depends/config.guess`
make
```

3. (optional) **It is recommended to build and run the unit tests**:
```bash
./configure --prefix=`pwd`/depends/`depends/config.guess` --enable-tests
make check
```

3. You can also create a .dmg that contains the .app bundle (optional):

` make deploy`
4. (optional) **You can also create a .dmg that contains the .app bundle**:
```bash
make deploy
```


Running
Expand Down Expand Up @@ -86,7 +122,10 @@ Download and install the community edition of [Qt Creator](https://www.qt.io/dow
Uncheck everything except Qt Creator during the installation process.

1. Make sure you installed everything through Homebrew mentioned above
2. Do a proper `./configure --enable-debug`
2. Properly configure the build environment:
```bash
./configure --prefix=`pwd`/depends/`depends/config.guess` --enable-debug
```
levonpetrosyan93 marked this conversation as resolved.
Show resolved Hide resolved
3. In Qt Creator do "New Project" -> Import Project -> Import Existing Project
4. Enter "bitcoin-qt" as project name, enter `src/qt` as location
5. Leave the file selection as it is
Expand All @@ -99,7 +138,6 @@ Uncheck everything except Qt Creator during the installation process.
Notes
-----

* Tested on macOS 10.11 through 10.14 on 64-bit Intel processors only.
* Tested on macOS 10.11 through 10.14 on 64-bit Intel processors, and on macOS 14.5 on an M2 chip.

* Building with downloaded Qt binaries is not officially supported. See the notes in [#7714](https://github.com/bitcoin/bitcoin/issues/7714)