diff options
| author | Victorio Nascimento <155357371+Vic-Nas@users.noreply.github.com> | 2026-07-27 16:45:28 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-07-27 17:45:28 -0300 |
| commit | 6ca1a1d6799474f8ca977b93ab630af7ace879c2 (patch) | |
| tree | a0312ebc10fc6a56742d0e5caa85c31eb6d3eaa7 /Makefile | |
| parent | 56df9830d5a002ff9ce3fac47e497673f8159e39 (diff) | |
Add Linux GUI installer via Wine (#3)
* Add Linux GUI installer via Wine
* Fix launcher creation and add BTF_RELAY env var support
* Pool server, Linux GUI, unified binary, README update
* Root Makefile: make linux / make windows, cleaner README
* Remove headless.cpp
* Fix XPM color count mismatch causing toolbar image errors on Linux
* XPM icons: same code on Windows and Linux, no ifdefs around image loading
* Fix GTK icon crash and Linux printf format
* btfrv: 10s socket timeout on relay connects
* Faster peer discovery: more dials per pass, shorter backoff and sleep
* Parallel btf peer connections
* Fix GetMyExternalIP - was disabled, now uses modern IP echo services
* Fix tunnel disconnect on idle and restore external IP detection
* Filter stale Nostr descriptors
* Sort peers by freshness, fresh first
* Pool: add .btf Stratum listener — miners connect via rendezvous, no port forwarding needed
* btf pool: self-replacing listeners, one per relay, no queuing between miners
* Mining modes: solo/operator/participant — pool server on-demand, participant Stratum client
* Status bar: show external IP and .btf address
* README: clean rewrite, concept-first, minimal
* make linux produces AppImage
* make linux produces AppImage
* Pool dashboard: connect instructions, tabs, share bars
* Perf fixes: GetMyExternalIP threaded, btf listener counted
* Perf fixes: GetMyExternalIP threaded, btf listener counted
* Fix pool payouts: defer until coinbase maturity
* Pool: clean mode switching, IP warning
* Pool: clean mode switching
* Fix gPoolRunning: remove static
* AppImage: use real icon from bitcoin.ico
* Fix exit crash; Mining menu
* Fix exit crash; Mining menu
* Fix exit crash; Mining menu
* Fix exit crash; Mining menu
* Fix exit crash; Mining menu
* Windows build: use mingw32-make
* Windows build: simpler make invocation
* Add deps-windows target
* Windows build fixes
* Windows build fixes
* Windows makefile: fix obj dir
* Windows: output to repo root
* Windows: bundle DLLs into zip
* Replace wxWidgets with ImGui+GLFW: same build on Linux and Windows
* Fix %I64d that slipped back through rebase (main.h, net.h)
* MinGW: add _mkdir shim for non-MSVC Windows; fix %I64d
* Fix gPoolRunning extern outside ifndef _WIN32
* Remove -lboost_system: boost is header-only in this codebase
* Status bar: copy buttons for IP and .btf address
* Windows: add app icon via windres, strip wx stuff from rc file
* Clean GUI: single Options menu item, bigger font, better spacing, cleaner options dialog; update README
* GUI: embed Roboto font at 16px for clear readability on all platforms
* Windows: windres depends on obj dir target
* Fix balance hidden off-screen: put on own line below address bar
* Windows: inline mkdir in every rule, remove dir target that confused make
* Windows: move all target to top so it's the default rule
* Fix pool server not starting: always start when operator selected, re-sync dialog state on open
* Write debug.log to data directory (AppData/Roaming/Bitflash on Windows)
* Participant miner: use wallet address as username so payouts go to wallet
* Add .gitattributes to lock LF line endings, prevent CRLF drift
* Refactor pool mining to btf-only transport
* Persist pool settings and startup wiring
* Prune stale peers and expose pool queries
* Fix build regressions and add CLI mode/arg parity
* Fix rpc miner stats declaration order
* Centralize pool runtime extern declarations
* Separate operator/participant dashboards and restore peer stats
* Add live telemetry strip and clearer per-mode runtime metrics
* Reduce mining dashboard clutter and remove manual pool entry
* Count only authorized pool miners
* Seed initial pool job on startup
* Use a real share target for pool work
* Switch pool accounting to round-based shares
* Fix nostr pool announcer stats call sites
* Fix pool stats definition order
* Improve pool worker status display
* Add mutex include for participant status
* Replace ImClamp in dashboard layout
* Clarify participant work status
* Log participant status transitions
* Reduce peer discovery log noise
* Add participant status badge
* Track participant auth acknowledgements
* Log and validate pool job delivery
---------
Co-authored-by: Bitflash Pool Dev <pool@bitflash>
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..7d655ff --- /dev/null +++ b/Makefile | |||
| @@ -0,0 +1,148 @@ | |||
| 1 | # Bitflash — top-level build | ||
| 2 | # | ||
| 3 | # make linux build Bitflash-*-x86_64.AppImage | ||
| 4 | # make windows build Bitflash-*-windows.zip (from MSYS2 UCRT64) | ||
| 5 | # make clean remove build artifacts | ||
| 6 | |||
| 7 | ROOT := $(shell pwd) | ||
| 8 | NPROC := $(shell nproc 2>/dev/null || echo 2) | ||
| 9 | SUDO := $(shell [ "$$(id -u)" = "0" ] && echo "" || echo "sudo") | ||
| 10 | VERSION := 1.1.0 | ||
| 11 | |||
| 12 | # ---- Linux ---------------------------------------------------------------- | ||
| 13 | |||
| 14 | linux: deps-linux | ||
| 15 | $(MAKE) -C src -f Makefile -j$(NPROC) | ||
| 16 | strip src/bitflash | ||
| 17 | $(MAKE) -f Makefile appimage | ||
| 18 | |||
| 19 | deps-linux: deps-apt deps-secp256k1 deps-randomx | ||
| 20 | |||
| 21 | deps-apt: | ||
| 22 | @if command -v apt-get >/dev/null 2>&1; then \ | ||
| 23 | $(SUDO) apt-get install -y build-essential cmake git pkg-config autoconf \ | ||
| 24 | libtool libssl-dev libdb5.3++-dev libsodium-dev nlohmann-json3-dev \ | ||
| 25 | libboost-system-dev libglfw3-dev libgl-dev; \ | ||
| 26 | else \ | ||
| 27 | echo "Not an apt system — install: g++ cmake git autoconf libtool"; \ | ||
| 28 | echo " libssl libdb++ libsodium nlohmann-json boost glfw3 opengl"; \ | ||
| 29 | fi | ||
| 30 | |||
| 31 | deps-secp256k1: | ||
| 32 | @if [ ! -f /usr/local/lib/libsecp256k1.a ]; then \ | ||
| 33 | echo "==> building libsecp256k1"; \ | ||
| 34 | rm -rf $(ROOT)/secp256k1-build; \ | ||
| 35 | git clone --depth 1 https://github.com/bitcoin-core/secp256k1 $(ROOT)/secp256k1-build; \ | ||
| 36 | cd $(ROOT)/secp256k1-build && ./autogen.sh && \ | ||
| 37 | ./configure --enable-module-schnorrsig --enable-module-extrakeys \ | ||
| 38 | --disable-shared --with-pic --disable-benchmark --disable-tests && \ | ||
| 39 | make -j$(NPROC) && $(SUDO) make install && $(SUDO) ldconfig; \ | ||
| 40 | echo "==> libsecp256k1 done"; \ | ||
| 41 | else \ | ||
| 42 | echo "==> libsecp256k1 already installed"; \ | ||
| 43 | fi | ||
| 44 | |||
| 45 | deps-randomx: | ||
| 46 | @if [ ! -f $(HOME)/RandomX/build/librandomx.a ]; then \ | ||
| 47 | echo "==> building RandomX"; \ | ||
| 48 | rm -rf $(HOME)/RandomX; \ | ||
| 49 | git clone --depth 1 https://github.com/tevador/RandomX $(HOME)/RandomX; \ | ||
| 50 | mkdir -p $(HOME)/RandomX/build; \ | ||
| 51 | cd $(HOME)/RandomX/build && cmake .. -DCMAKE_BUILD_TYPE=Release && \ | ||
| 52 | make -j$(NPROC) randomx; \ | ||
| 53 | echo "==> RandomX done"; \ | ||
| 54 | else \ | ||
| 55 | echo "==> RandomX already built"; \ | ||
| 56 | fi | ||
| 57 | |||
| 58 | appimage: src/bitflash | ||
| 59 | @echo "==> building AppImage" | ||
| 60 | @if [ ! -x /tmp/appimagetool ]; then \ | ||
| 61 | wget -q "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage" \ | ||
| 62 | -O /tmp/appimagetool && chmod +x /tmp/appimagetool; \ | ||
| 63 | fi | ||
| 64 | @rm -rf /tmp/bitflash.AppDir | ||
| 65 | @mkdir -p /tmp/bitflash.AppDir/usr/bin \ | ||
| 66 | /tmp/bitflash.AppDir/usr/lib \ | ||
| 67 | /tmp/bitflash.AppDir/usr/share/applications \ | ||
| 68 | /tmp/bitflash.AppDir/usr/share/icons/hicolor/256x256/apps | ||
| 69 | @cp src/bitflash /tmp/bitflash.AppDir/usr/bin/bitflash | ||
| 70 | @printf '#!/bin/sh\nHERE="$$(dirname "$$(readlink -f "$$0")")"\nexport LD_LIBRARY_PATH="$$HERE/usr/lib:$$LD_LIBRARY_PATH"\nexec "$$HERE/usr/bin/bitflash" "$$@"\n' \ | ||
| 71 | > /tmp/bitflash.AppDir/AppRun && chmod +x /tmp/bitflash.AppDir/AppRun | ||
| 72 | @printf '[Desktop Entry]\nName=Bitflash\nExec=bitflash\nIcon=bitflash\nType=Application\nCategories=Finance;\n' \ | ||
| 73 | > /tmp/bitflash.AppDir/bitflash.desktop | ||
| 74 | @cp /tmp/bitflash.AppDir/bitflash.desktop \ | ||
| 75 | /tmp/bitflash.AppDir/usr/share/applications/ | ||
| 76 | @python3 -c "\ | ||
| 77 | from PIL import Image; \ | ||
| 78 | ico = Image.open('src/rc/bitcoin.ico'); \ | ||
| 79 | img = ico.convert('RGBA'); \ | ||
| 80 | img.save('/tmp/bitflash.AppDir/bitflash.png'); \ | ||
| 81 | import shutil; shutil.copy('/tmp/bitflash.AppDir/bitflash.png', \ | ||
| 82 | '/tmp/bitflash.AppDir/usr/share/icons/hicolor/256x256/apps/bitflash.png')" | ||
| 83 | @for lib in libsodium.so.23 libdb_cxx-5.3.so libglfw.so.3; do \ | ||
| 84 | path=$$(ldconfig -p | grep " $$lib " | awk '{print $$NF}' | head -1); \ | ||
| 85 | [ -z "$$path" ] && path=$$(find /usr/lib /lib -name "$$lib" 2>/dev/null | head -1); \ | ||
| 86 | [ -n "$$path" ] && cp -L "$$path" /tmp/bitflash.AppDir/usr/lib/ && echo " bundled $$lib" || echo " missing $$lib"; \ | ||
| 87 | done | ||
| 88 | @ARCH=x86_64 /tmp/appimagetool --no-appstream /tmp/bitflash.AppDir \ | ||
| 89 | $(ROOT)/Bitflash-$(VERSION)-x86_64.AppImage 2>&1 | grep -E "^Built|^Error" || true | ||
| 90 | @echo "Built: Bitflash-$(VERSION)-x86_64.AppImage" | ||
| 91 | |||
| 92 | # ---- Windows (MSYS2 UCRT64) ----------------------------------------------- | ||
| 93 | |||
| 94 | deps-windows: | ||
| 95 | pacman -S --noconfirm --needed \ | ||
| 96 | mingw-w64-ucrt-x86_64-gcc \ | ||
| 97 | mingw-w64-ucrt-x86_64-make \ | ||
| 98 | mingw-w64-ucrt-x86_64-glfw \ | ||
| 99 | mingw-w64-ucrt-x86_64-openssl \ | ||
| 100 | mingw-w64-ucrt-x86_64-db \ | ||
| 101 | mingw-w64-ucrt-x86_64-libsodium \ | ||
| 102 | mingw-w64-ucrt-x86_64-nlohmann-json \ | ||
| 103 | mingw-w64-ucrt-x86_64-boost \ | ||
| 104 | mingw-w64-ucrt-x86_64-cmake \ | ||
| 105 | autoconf automake libtool | ||
| 106 | @if [ ! -f deps/lib/libsecp256k1.a ]; then \ | ||
| 107 | rm -rf secp256k1-build; \ | ||
| 108 | git clone --depth 1 https://github.com/bitcoin-core/secp256k1 secp256k1-build; \ | ||
| 109 | cd secp256k1-build && ./autogen.sh && \ | ||
| 110 | ./configure --prefix=$(ROOT)/deps \ | ||
| 111 | --enable-module-schnorrsig --enable-module-extrakeys \ | ||
| 112 | --disable-shared --with-pic --disable-benchmark --disable-tests && \ | ||
| 113 | make install; \ | ||
| 114 | echo "==> secp256k1 done"; \ | ||
| 115 | else \ | ||
| 116 | echo "==> secp256k1 already built"; \ | ||
| 117 | fi | ||
| 118 | @if [ ! -f RandomX/build/librandomx.a ]; then \ | ||
| 119 | rm -rf RandomX; \ | ||
| 120 | git clone --depth 1 https://github.com/tevador/RandomX; \ | ||
| 121 | mkdir -p RandomX/build; \ | ||
| 122 | cd RandomX/build && cmake .. -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release && \ | ||
| 123 | make randomx; \ | ||
| 124 | echo "==> RandomX done"; \ | ||
| 125 | else \ | ||
| 126 | echo "==> RandomX already built"; \ | ||
| 127 | fi | ||
| 128 | |||
| 129 | windows: deps-windows | ||
| 130 | cd src && make -f makefile.mingw | ||
| 131 | @rm -rf Bitflash-$(VERSION)-windows | ||
| 132 | @mkdir -p Bitflash-$(VERSION)-windows | ||
| 133 | @cp src/bitflash.exe Bitflash-$(VERSION)-windows/Bitflash.exe | ||
| 134 | @ldd src/bitflash.exe | grep ucrt64 | awk '{print $$3}' | \ | ||
| 135 | xargs -I{} cp {} Bitflash-$(VERSION)-windows/ 2>/dev/null || true | ||
| 136 | @zip -r Bitflash-$(VERSION)-windows.zip Bitflash-$(VERSION)-windows/ | ||
| 137 | @echo "Built: Bitflash-$(VERSION)-windows.zip" | ||
| 138 | |||
| 139 | # ---- Clean ---------------------------------------------------------------- | ||
| 140 | |||
| 141 | clean: | ||
| 142 | $(MAKE) -C src -f Makefile clean 2>/dev/null || true | ||
| 143 | cd src && make -f makefile.mingw clean 2>/dev/null || true | ||
| 144 | rm -f Bitflash-*.AppImage Bitflash-*.zip | ||
| 145 | rm -rf Bitflash-*-windows | ||
| 146 | |||
| 147 | .PHONY: linux windows clean appimage \ | ||
| 148 | deps-linux deps-windows deps-apt deps-secp256k1 deps-randomx | ||