diff --git a/.github/workflows/macOS-build.yml b/.github/workflows/macOS-build.yml index 2bf3156..2d87c2c 100644 --- a/.github/workflows/macOS-build.yml +++ b/.github/workflows/macOS-build.yml @@ -43,7 +43,7 @@ jobs: name: macOS-binary path: build/src/libreweb-browser - # TODO: Package using CPack + # TODO: Packaging using CPack and PackageMaker #xcodebuild \ # -project "libreweb-browser.xcodeproj" \ diff --git a/README.md b/README.md index 3259029..3e4f673 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,8 @@ With all the knowledge and new technologies available today. I was inspired by D [![Matrix](https://img.shields.io/badge/chat-on%20matrix-brightgreen)](https://matrix.to/#/#libreweb:melroy.org) [![Gitter](https://img.shields.io/badge/chat-on%20gitter-brightgreen)](https://gitter.im/LibreWeb/Browser) [![Roadmap](https://img.shields.io/badge/Roadmap-yellow)](https://gitlab.melroy.org/libreweb/browser/-/milestones) -[![Release](https://img.shields.io/badge/Release-latest-orange)](https://gitlab.melroy.org/libreweb/browser/-/releases) +[![Docs](https://img.shields.io/badge/Documentation-orange)](https://docs.libreweb.org/) +[![Release](https://img.shields.io/badge/release-latest-orange)](https://gitlab.melroy.org/libreweb/browser/-/releases) *Note:* This project is still work in progress. However, we have a working [alpha version available](https://gitlab.melroy.org/libreweb/browser/-/releases). @@ -56,6 +57,8 @@ The current success criteria: The sections below are mainly relevant for software developers, who want to contribute or help LibreWeb Browser. +--- + ## For Developers Decentralized Browser is written C++ together with some [external libraries](/lib). LibreWeb is using the [cmark-gfm](https://github.com/github/cmark-gfm) library for example, which is used for CommonMark (markdown) parsing. @@ -65,29 +68,27 @@ LibreWeb Browser is also using [Gnome GTK3](https://developer.gnome.org/gtk3/sta ### Development Environment -Personally, I'm using VSCodium editor, with the following extensions installed: `C/C++`, `CMake`, `CMake Tools`, `PlantUML`, `Markdown All in One`, `vscode-icons` and `GitLab Workflow`. +Personally, I'm using VSCodium editor, with the following extensions installed: `C/C++`, `CMake`, `CMake Tools`, `PlantUML`, `Markdown All in One`, `vscode-icons` and `GitLab Workflow`. But your local development setup is completely up to you. -But that is up to you. +### Linux Build Dependencies -### Build Dependencies - -For the GNU/Linux build you need at least: +For the **GNU/Linux build** you need at least: * GCC 9 or higher (`build-essential`, `g++-9`) * CMake (Package: `cmake`) * Ninja build system (Package: `ninja-build`) * Libcurl (Package: `libcurl4-openssl-dev`) -* GTK & Pango (including C++ bindings): +* GTK3 (including C++ bindings: gtkmm3): * Package: `libgtkmm-3.0-dev` under Debian based distros -Depedencies for tests: +**Dependencies for testing:** * X virtual framebuffer (Package: `xvfb`) * Clang-format (Package: `clang-format`) -*Note:* For cross-compiling towards Windows, see the cross-compile section down below. +*Note:* For cross-compiling towards Windows and building on macOS see "Other platforms" section below. -### Build +### Linux Build Clone the source-code with SSH (do not forget `--recurse-submodules`): @@ -111,7 +112,7 @@ To build a release target yourself including packaging under GNU/Linux, use: `./ Root access is required when building Linux packages; add `/opt/mxe/usr/bin` to the secure_path using: `sudo visudo`. -### Unit testing +### Unit testing (Linux) To execute the **unit tests** you can configure with `cmake -DUNITTEST:BOOL=TRUE` and build. Execute: `ctest` command in the `tst` target directory. @@ -141,7 +142,7 @@ We also tend to follow the [C++ Core Guidelines](http://isocpp.github.io/CppCore ### Doxygen -See latest [Developer Documentation](https://gitlab.melroy.org/libreweb/browser/-/jobs/artifacts/master/file/build/docs/html/index.html?job=doxygen). +See latest [Developer Documentation](https://gitlab.melroy.org/libreweb/browser/-/jobs/artifacts/master/file/build_docs/docs/html/index.html?job=doxygen). Doxygen is build by default. You can disable the doxygen build, if you want, using: `cmake -DDOXYGEN:BOOL=FALSE ..` @@ -155,9 +156,13 @@ Next, check for memory leaks using `valgrind` by executing: ./scripts/valgrind.sh ``` -### Cross-compiling Build Dependencies +## Other platforms -For the [cross-compiling](https://en.wikipedia.org/wiki/Cross_compiler) towards **Windows** (while under GNU/Linux), you need at least: +### Microsoft Windows + +We are [**cross-compiling**](https://en.wikipedia.org/wiki/Cross_compiler) towards **Windows** using GNU/Linux. + +#### Windows Build Dependencies * [MXE Gtkmm3 / Curl Binary packages](mxe.cc) (static build using Meson build with GCC11, see below for more info) * CMake (Package: `cmake`) @@ -182,7 +187,7 @@ Add the following line to the end of the `~/.bashrc` file: export PATH="/opt/mxe/usr/bin:$PATH" ``` -#### Cross-compile Build +#### Windows Cross-compile Build Please, be sure you meet all the requirements above. So your MXE environment should be ready in: `/opt/mxe/usr`. @@ -202,7 +207,22 @@ Build a production release + packaging with [NSIS](https://sourceforge.net/proje See also: [Windows readme](Windows.md) file. -### Research +### Apple MacOS / Darwin + +#### MacOS Build Dependencies + +* XCode (`xcode-select --install`) +* Brew (`/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"`) +* CMake (brew: `cmake`) +* Libcurl (brew: `curl`) +* Gtk3/Gtkmm3 (brew: `gtkmm3`) +* Ninja (brew: `ninja`) + +#### MacOS Build + +We're currently using [GitHub Actions](https://github.com/LibreWeb/Browser/blob/master/.github/workflows/macOS-build.yml) for the [macOS build](https://github.com/LibreWeb/Browser/actions/workflows/macOS-build.yml). + +## LibreWeb Research For [research document](https://gitlab.melroy.org/libreweb/research_lab/-/blob/master/research.md) plus findings including explanation (like [diagrams](https://gitlab.melroy.org/libreweb/research_lab/-/blob/master/diagrams.md)) see the: