upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorVictorio Nascimento <155357371+Vic-Nas@users.noreply.github.com>2026-07-27 16:45:28 -0400
committerGitHub <noreply@github.com>2026-07-27 17:45:28 -0300
commit6ca1a1d6799474f8ca977b93ab630af7ace879c2 (patch)
treea0312ebc10fc6a56742d0e5caa85c31eb6d3eaa7 /Makefile
parent56df9830d5a002ff9ce3fac47e497673f8159e39 (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--Makefile148
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
7ROOT := $(shell pwd)
8NPROC := $(shell nproc 2>/dev/null || echo 2)
9SUDO := $(shell [ "$$(id -u)" = "0" ] && echo "" || echo "sudo")
10VERSION := 1.1.0
11
12# ---- Linux ----------------------------------------------------------------
13
14linux: deps-linux
15 $(MAKE) -C src -f Makefile -j$(NPROC)
16 strip src/bitflash
17 $(MAKE) -f Makefile appimage
18
19deps-linux: deps-apt deps-secp256k1 deps-randomx
20
21deps-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
31deps-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
45deps-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
58appimage: 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 "\
77from PIL import Image; \
78ico = Image.open('src/rc/bitcoin.ico'); \
79img = ico.convert('RGBA'); \
80img.save('/tmp/bitflash.AppDir/bitflash.png'); \
81import 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
94deps-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
129windows: 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
141clean:
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