Skip to content

Commit

Permalink
Update macOS Build Instructions for Dependency and Configuration Issu…
Browse files Browse the repository at this point in the history
…esMac os build fix (#1463)

* Updated macOS build instructions to include dependency setup

* Update build-macos.md

* Reorganized macOS build instructions to enhance clarity

* Updated macOS build instructions to include troubleshooting steps for m4 detection issues.

* Update macOS build instructions to include brew link --force for keg-only m4.
  • Loading branch information
firstcryptoman authored Nov 6, 2024
1 parent 889f9da commit bdfb76e
Showing 1 changed file with 87 additions and 49 deletions.
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
```

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
```
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)

0 comments on commit bdfb76e

Please sign in to comment.