Skip to content

Commit 6bb639e

Browse files
authored
Merge pull request #23 from JimGilmore/master
v0.10.2 - Update configurations for compiling Windows binaries
2 parents 06fdab5 + 5286f0d commit 6bb639e

File tree

3 files changed

+156
-2
lines changed

3 files changed

+156
-2
lines changed

depends/packages/native_protobuf.mk

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package=native_protobuf
22
$(package)_version=2.5.0
3-
$(package)_download_path=https://protobuf.googlecode.com/files
3+
$(package)_download_path=https://github.com/protocolbuffers/protobuf/releases/download/v$($(package)_version)
44
$(package)_file_name=protobuf-$($(package)_version).tar.bz2
55
$(package)_sha256_hash=13bfc5ae543cf3aa180ac2485c0bc89495e3ae711fc6fab4f8ffe90dfb4bb677
66

depends/packages/qt.mk

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
PACKAGE=qt
22
$(package)_version=5.2.1
3-
$(package)_download_path=http://download.qt-project.org/official_releases/qt/5.2/$($(package)_version)/single
3+
$(package)_download_path=https://download.qt.io/new_archive/qt/5.2/$($(package)_version)/single
44
$(package)_file_name=$(package)-everywhere-opensource-src-$($(package)_version).tar.gz
55
$(package)_sha256_hash=84e924181d4ad6db00239d87250cc89868484a14841f77fb85ab1f1dbdcd7da1
66
$(package)_dependencies=openssl

doc/build-windows.md

+154
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
WINDOWS BUILD NOTES
2+
====================
3+
4+
Below are some notes on how to build Dobbscoin Core for Windows.
5+
6+
The options known to work for building Dobbscoin Core on Windows are:
7+
8+
* On Linux, using the [Mingw-w64](https://mingw-w64.org/doku.php) cross compiler tool chain. Ubuntu Bionic 18.04 is required
9+
and is the platform used to build the Dobbscoin Core Windows release binaries.
10+
* On Windows, using [Windows
11+
Subsystem for Linux (WSL)](https://docs.microsoft.com/windows/wsl/about) and the Mingw-w64 cross compiler tool chain.
12+
* On Windows, using a native compiler tool chain such as [Visual Studio](https://www.visualstudio.com). See [README.md](/build_msvc/README.md).
13+
14+
Other options which may work, but which have not been extensively tested are (please contribute instructions):
15+
16+
* On Windows, using a POSIX compatibility layer application such as [cygwin](https://www.cygwin.com/) or [msys2](https://www.msys2.org/).
17+
18+
Installing Windows Subsystem for Linux
19+
---------------------------------------
20+
21+
With Windows 10, Microsoft has released a new feature named the [Windows
22+
Subsystem for Linux (WSL)](https://docs.microsoft.com/windows/wsl/about). This
23+
feature allows you to run a bash shell directly on Windows in an Ubuntu-based
24+
environment. Within this environment you can cross compile for Windows without
25+
the need for a separate Linux VM or server. Note that while WSL can be installed with
26+
other Linux variants, such as OpenSUSE, the following instructions have only been
27+
tested with Ubuntu.
28+
29+
This feature is not supported in versions of Windows prior to Windows 10 or on
30+
Windows Server SKUs. In addition, it is available [only for 64-bit versions of
31+
Windows](https://docs.microsoft.com/windows/wsl/install-win10).
32+
33+
Full instructions to install WSL are available on the above link.
34+
To install WSL on Windows 10 with Fall Creators Update installed (version >= 16215.0) do the following:
35+
36+
1. Enable the Windows Subsystem for Linux feature
37+
* Open the Windows Features dialog (`OptionalFeatures.exe`)
38+
* Enable 'Windows Subsystem for Linux'
39+
* Click 'OK' and restart if necessary
40+
2. Install Ubuntu
41+
* Open Microsoft Store and search for "Ubuntu 18.04" or use [this link](https://www.microsoft.com/store/productId/9N9TNGVNDL3Q)
42+
* Click Install
43+
3. Complete Installation
44+
* Open a cmd prompt and type "Ubuntu1804"
45+
* Create a new UNIX user account (this is a separate account from your Windows account)
46+
47+
After the bash shell is active, you can follow the instructions below, starting
48+
with the "Cross-compilation" section. Compiling the 64-bit version is
49+
recommended, but it is possible to compile the 32-bit version.
50+
51+
Cross-compilation for Ubuntu and Windows Subsystem for Linux
52+
------------------------------------------------------------
53+
54+
The steps below can be performed on Ubuntu (including in a VM) or WSL. The depends system
55+
will also work on other Linux distributions, however the commands for
56+
installing the toolchain will be different.
57+
58+
First, install the general dependencies:
59+
60+
sudo apt update
61+
sudo apt upgrade
62+
sudo apt install build-essential libtool autotools-dev automake pkg-config bsdmainutils curl git
63+
64+
A host toolchain (`build-essential`) is necessary because some dependency
65+
packages need to build host utilities that are used in the build process.
66+
67+
See [dependencies.md](dependencies.md) for a complete overview.
68+
69+
If you want to build the windows installer with `make deploy` you need [NSIS](https://nsis.sourceforge.io/Main_Page):
70+
71+
sudo apt install nsis
72+
73+
Acquire the source in the usual way:
74+
75+
git clone https://github.com/dobbscoin/dobbscoin.git
76+
cd dobbscoin
77+
78+
## Building for 64-bit Windows
79+
80+
The first step is to install the mingw-w64 cross-compilation tool chain:
81+
82+
sudo apt install g++-mingw-w64-x86-64
83+
84+
Next, set the default `mingw32 g++` compiler option to POSIX<sup>[1](#footnote1)</sup>:
85+
86+
```
87+
sudo update-alternatives --config x86_64-w64-mingw32-g++
88+
```
89+
90+
After running the above command, you should see output similar to that below.
91+
Choose the option that ends with `posix`.
92+
93+
```
94+
There are 2 choices for the alternative x86_64-w64-mingw32-g++ (providing /usr/bin/x86_64-w64-mingw32-g++).
95+
96+
Selection Path Priority Status
97+
------------------------------------------------------------
98+
0 /usr/bin/x86_64-w64-mingw32-g++-win32 60 auto mode
99+
* 1 /usr/bin/x86_64-w64-mingw32-g++-posix 30 manual mode
100+
2 /usr/bin/x86_64-w64-mingw32-g++-win32 60 manual mode
101+
102+
Press <enter> to keep the current choice[*], or type selection number:
103+
```
104+
105+
Once the toolchain is installed the build steps are common:
106+
107+
Note that for WSL the Dobbscoin Core source path MUST be somewhere in the default mount file system, for
108+
example /usr/src/dobbscoin, AND not under /mnt/d/. If this is not the case the dependency autoconf scripts will fail.
109+
This means you cannot use a directory that is located directly on the host Windows file system to perform the build.
110+
111+
Additional WSL Note: WSL support for [launching Win32 applications](https://docs.microsoft.com/en-us/archive/blogs/wsl/windows-and-ubuntu-interoperability#launching-win32-applications-from-within-wsl)
112+
results in `Autoconf` configure scripts being able to execute Windows Portable Executable files. This can cause
113+
unexpected behaviour during the build, such as Win32 error dialogs for missing libraries. The recommended approach
114+
is to temporarily disable WSL support for Win32 applications.
115+
116+
Build using:
117+
118+
PATH=$(echo "$PATH" | sed -e 's/:\/mnt.*//g') # strip out problematic Windows %PATH% imported var
119+
sudo bash -c "echo 0 > /proc/sys/fs/binfmt_misc/status" # Disable WSL support for Win32 applications.
120+
cd depends
121+
make HOST=x86_64-w64-mingw32
122+
cd ..
123+
./autogen.sh
124+
CONFIG_SITE=$PWD/depends/x86_64-w64-mingw32/share/config.site ./configure --prefix=$(pwd)/depends/x86_64-w64-mingw32/
125+
make # use "-j N" for N parallel jobs
126+
sudo bash -c "echo 1 > /proc/sys/fs/binfmt_misc/status" # Enable WSL support for Win32 applications.
127+
128+
## Depends system
129+
130+
For further documentation on the depends system see [README.md](../depends/README.md) in the depends directory.
131+
132+
Installation
133+
-------------
134+
135+
After building using the Windows subsystem it can be useful to copy the compiled
136+
executables to a directory on the Windows drive in the same directory structure
137+
as they appear in the release `.zip` archive. This can be done in the following
138+
way. This will install to `c:\workspace\dobbscoin`, for example:
139+
140+
make install DESTDIR=/mnt/c/workspace/dobbscoin
141+
142+
You can also create an installer using:
143+
144+
make deploy
145+
146+
Footnotes
147+
---------
148+
149+
<a name="footnote1">1</a>: Starting from Ubuntu Xenial 16.04, both the 32 and 64 bit Mingw-w64 packages install two different
150+
compiler options to allow a choice between either posix or win32 threads. The default option is win32 threads which is the more
151+
efficient since it will result in binary code that links directly with the Windows kernel32.lib. Unfortunately, the headers
152+
required to support win32 threads conflict with some of the classes in the C++11 standard library, in particular std::mutex.
153+
It's not possible to build the Dobbscoin Core code using the win32 version of the Mingw-w64 cross compilers (at least not without
154+
modifying headers in the Dobbscoin Core source code).

0 commit comments

Comments
 (0)