mirror of
https://github.com/status-im/status-desktop.git
synced 2025-01-10 06:16:32 +00:00
6150928062
Replaces #82, which in any case is out-of-date re: the current state of this repo's Makefile. Introduces the ability to build `nim_status_client.exe` directly on Windows, i.e. without needing to use Windows Subsystem for Linux or otherwise cross-compile on Linux. Note: this commit does not introduce packaging or code signing for the Windows build as those pieces are still a work in progress. The `make` targets should be run in a Bash shell, e.g. in *Git Bash* as included in the installation of [Git for Windows][git-win]. [Microsoft Visual C++ Build Tools][ms-build] must be installed. Qt's `MSVC 2017 64-bit` and `MinGW 7.3.0 64-bit` toolchains must both be installed, e.g. with the Qt Online Installer tool. CMake needs to be installed; it is available via the Qt Online Installer tool under *Developer and Designer Tools* (`CMake 3.17.1 64-bit`). A couple of additional tools need to be installed (e.g. with [scoop][scoop]) and availble in `PATH`: * findutils * go For `.dll` resolution to function as needed, in a Bash shell `PATH` should be modified like this (might be different depending on how/where things were installed): ```bash export QTBASE="/c/Qt" export QTDIR="${QTBASE}/5.14.2/msvc2017_64" export PATH="${HOME}/scoop/shims:${PATH}" export PATH="${QTDIR}/bin:${PATH}" export PATH="${QTBASE}/Tools/mingw730_64/bin:${PATH}" export PATH="${QTBASE}/Tools/CMake_64/bin:${PATH}" ``` With those modifications in place, to build `nim_status_client.exe` do: ``` mingw32-make.exe V=1 ``` To run the executable do: ``` mingw32-make.exe run ``` [git-win]: https://gitforwindows.org/ [ms-build]: https://visualstudio.microsoft.com/visual-cpp-build-tools/ [scoop]: https://scoop.sh/
45 lines
1.6 KiB
Nim
45 lines
1.6 KiB
Nim
if defined(release):
|
|
switch("nimcache", "nimcache/release/$projectName")
|
|
else:
|
|
switch("nimcache", "nimcache/debug/$projectName")
|
|
|
|
--threads:on
|
|
--opt:speed # -O3
|
|
--debugger:native # passes "-g" to the C compiler
|
|
--define:ssl # needed by the stdlib to enable SSL procedures
|
|
|
|
if defined(macosx):
|
|
--dynlibOverrideAll # don't use dlopen()
|
|
--tlsEmulation:off
|
|
switch("passL", "-lstdc++")
|
|
# DYLD_LIBRARY_PATH doesn't seem to work with Qt5
|
|
switch("passL", "-rpath" & " " & getEnv("QT5_LIBDIR"))
|
|
# statically linke these libs
|
|
switch("passL", "bottles/openssl/lib/libcrypto.a")
|
|
switch("passL", "bottles/openssl/lib/libssl.a")
|
|
switch("passL", "bottles/pcre/lib/libpcre.a")
|
|
# https://code.videolan.org/videolan/VLCKit/-/issues/232
|
|
switch("passL", "-Wl,-no_compact_unwind")
|
|
# set the minimum supported macOS version to 10.13
|
|
switch("passC", "-mmacosx-version-min=10.13")
|
|
elif defined(windows):
|
|
--tlsEmulation:off
|
|
switch("passL", "-Wl,-as-needed")
|
|
else:
|
|
--dynlibOverrideAll # don't use dlopen()
|
|
# dynamically link these libs, since we're opting out of dlopen()
|
|
switch("passL", "-lcrypto")
|
|
switch("passL", "-lssl")
|
|
# don't link libraries we're not actually using
|
|
switch("passL", "-Wl,-as-needed")
|
|
|
|
--define:chronicles_line_numbers # useful when debugging
|
|
|
|
# The compiler doth protest too much, methinks, about all these cases where it can't
|
|
# do its (N)RVO pass: https://github.com/nim-lang/RFCs/issues/230
|
|
switch("warning", "ObservableStores:off")
|
|
|
|
# Too many false positives for "Warning: method has lock level <unknown>, but another method has 0 [LockLevel]"
|
|
switch("warning", "LockLevel:off")
|
|
|