Migrate build system from qmake/makefiles to CMake
Remove legacy build files (Makefile, makefile.unix/mingw/osx, triangles-qt.pro) and replace with CMake build system. Includes find modules for all dependencies, LevelDB bundled build, and updated CI workflow for CMake + Ninja on all platforms. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,171 +0,0 @@
|
|||||||
{
|
|
||||||
"permissions": {
|
|
||||||
"allow": [
|
|
||||||
"Bash(git clone:*)",
|
|
||||||
"Bash(git init:*)",
|
|
||||||
"Bash(git remote add:*)",
|
|
||||||
"Bash(git fetch:*)",
|
|
||||||
"Bash(git checkout:*)",
|
|
||||||
"Bash(git config:*)",
|
|
||||||
"Bash(git -C \"E:\\\\repos\\\\triangles_old\" log --oneline --all)",
|
|
||||||
"Bash(git -C \"E:\\\\repos\\\\triangles_old\" branch -a)",
|
|
||||||
"Bash(git -C \"E:\\\\repos\\\\triangles_old\" log --oneline --all --graph)",
|
|
||||||
"Bash(git -C \"E:\\\\repos\\\\triangles_old\" show 7676e66 --stat)",
|
|
||||||
"Bash(python:*)",
|
|
||||||
"Bash(where:*)",
|
|
||||||
"Bash(powershell:*)",
|
|
||||||
"Bash(C:/msys64/usr/bin/bash.exe -lc \"pacman -Syu --noconfirm\")",
|
|
||||||
"Bash(C:/msys64/usr/bin/bash.exe -lc \"pacman -S --needed --noconfirm mingw-w64-x86_64-toolchain make\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"ls /mingw64/lib/libboost_system*.a 2>/dev/null; ls /mingw64/lib/cmake/boost_system* 2>/dev/null; ls /mingw64/lib/libboost*.a 2>/dev/null | head -10\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"cd /c/Qt/deps/openssl-1.0.2u && make -j4 2>&1 | tail -10\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"cd /e/repos/triangles && mingw32-make -j4 2>&1 | tail -40\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"cd /e/repos/triangles && mingw32-make -j1 2>&1 | grep ''error:'' | grep -v ''bignum'' | sort -u | head -30\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"cd /e/repos/triangles && mingw32-make -j4 2>&1 | grep ''error:'' | sort -u | head -30\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"grep ''MINIUPNPC_API_VERSION'' /mingw64/include/miniupnpc/miniupnpc.h\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"grep -A3 ''upnpDiscover\\('' /mingw64/include/miniupnpc/miniupnpc.h | head -10\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"grep -B1 -A5 ''UPNP_GetValidIGD\\('' /mingw64/include/miniupnpc/miniupnpc.h\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"cd /e/repos/triangles && qmake-qt5 triangles-qt.pro 2>&1 | tail -5 && mingw32-make -j4 2>&1 | grep ''error:'' | sort -u | head -30\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"cd /e/repos/triangles && mingw32-make clean 2>&1 | tail -5 && qmake triangles-qt.pro 2>&1 && mingw32-make -j4 2>&1 | grep ''error:'' | sort -u | head -40\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"export PATH=/mingw64/bin:$PATH && cd /e/repos/triangles && rm -f build/*.o build/*.cpp 2>/dev/null; qmake triangles-qt.pro && mingw32-make -j4 2>&1 | grep ''error:'' | sort -u | head -40\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"cd /e/repos/triangles && rm -f build/*.o build/*.cpp 2>/dev/null; /mingw64/bin/qmake triangles-qt.pro && mingw32-make -j4 2>&1 | grep ''error:'' | sort -u | head -40\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"which qmake 2>/dev/null || ls /mingw64/bin/qmake* 2>/dev/null || ls /mingw64/share/qt5/bin/qmake* 2>/dev/null || find /mingw64 -name ''qmake*'' -type f 2>/dev/null | head -5\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"cd /e/repos/triangles && rm -f build/*.o build/*.cpp 2>/dev/null; qmake-qt5 triangles-qt.pro && mingw32-make -j4 2>&1 | grep ''error:'' | sort -u | head -40\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"cd /e/repos/triangles && mingw32-make -j4 2>&1 | grep ''error:'' | sort -u | head -40\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"cd /e/repos/triangles && mingw32-make -j4 2>&1 | grep -E ''error:'' | sort -u | head -40\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"find /e/repos/triangles -name ''*.exe'' -type f 2>/dev/null; ls -la /e/repos/triangles/release/ 2>/dev/null; ls -la /e/repos/triangles/debug/ 2>/dev/null\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"cd /e/repos/triangles && mingw32-make -j4 2>&1 | tail -60\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"pacman -S --noconfirm mingw-w64-x86_64-qt5-tools 2>&1 | tail -10\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"which lrelease 2>/dev/null; which lrelease-qt5 2>/dev/null; ls /mingw64/bin/lrelease* 2>/dev/null\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"ln -sf /mingw64/bin/lrelease-qt5.exe /mingw64/bin/lrelease.exe 2>/dev/null; ls -la /mingw64/bin/lrelease.exe\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"cd /e/repos/triangles && mingw32-make -j4 2>&1 | tail -80\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"cd /e/repos/triangles && qmake-qt5 triangles-qt.pro && mingw32-make -j4 2>&1 | tail -30\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"find /mingw64/lib -name ''*boost_system*'' 2>/dev/null\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"find /mingw64/lib -name ''libboost_*'' -name ''*.a'' 2>/dev/null | head -20\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"cd /e/repos/triangles && rm -f build/net.o && mingw32-make -j4 2>&1 | tail -20\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"ls -la /e/repos/triangles/release/triangles-qt.exe\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"cd /e/repos/triangles/release && ldd triangles-qt.exe 2>/dev/null | grep mingw64\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"cd /e/repos/triangles/release && ./triangles-qt.exe &\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"identify /e/repos/triangles/src/qt/res/images/header_logo.png 2>/dev/null || file /e/repos/triangles/src/qt/res/images/header_logo.png\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"ls -la /e/repos/triangles/src/qt/res/images/ | grep -i header\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"cp ''/e/TRI/TRI logo w name new1 \\(300 x 63 px\\).png'' ''/e/repos/triangles/src/qt/res/images/header_logo.png'' && file ''/e/repos/triangles/src/qt/res/images/header_logo.png''\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"taskkill //IM triangles-qt.exe //F 2>/dev/null; echo done\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"cd /e/repos/triangles && qmake-qt5 triangles-qt.pro && mingw32-make -j4 2>&1 | tail -10\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"cd /e/repos/triangles/src/qt/locale && sed -i ''s|https://bittrex.com/Market/Index?MarketName=BTC-TRI|https://313.cash|g'' *.ts && sed -i ''s|TRI on Bittrex|TRI on Pinball|g'' *.ts && echo done\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"cp ''/e/TRI/Copy of TRI logo w name new4 \\(300x63\\).png'' ''/e/repos/triangles/src/qt/res/images/header_logo.png'' && file ''/e/repos/triangles/src/qt/res/images/header_logo.png''\")",
|
|
||||||
"Bash(git add:*)",
|
|
||||||
"Bash(git push)",
|
|
||||||
"Bash(git remote set-url:*)",
|
|
||||||
"Bash(git -c http.sslVerify=false push)",
|
|
||||||
"Bash(git -c credential.helper= push)",
|
|
||||||
"Bash(ls:*)",
|
|
||||||
"Bash(cmd /c \"set PATH=C:\\\\msys64\\\\mingw64\\\\bin;C:\\\\msys64\\\\usr\\\\bin;%PATH% && where qmake && where mingw32-make && where g++\")",
|
|
||||||
"Bash(PATH=\"/c/msys64/mingw64/bin:/c/msys64/usr/bin:$PATH\")",
|
|
||||||
"Bash(qmake-qt5:*)",
|
|
||||||
"Bash(mingw32-make:*)",
|
|
||||||
"Bash(ldd:*)",
|
|
||||||
"Bash(objdump:*)",
|
|
||||||
"Bash(/c/msys64/mingw64/bin/objdump.exe:*)",
|
|
||||||
"Bash(tasklist:*)",
|
|
||||||
"Bash(cmd.exe /c \"start /b E:\\\\repos\\\\triangles\\\\release\\\\triangles-qt.exe -datadir=E:\\\\Coins\\\\TRI -reindex\")",
|
|
||||||
"Bash(gcc:*)",
|
|
||||||
"Bash(/c/msys64/mingw64/bin/gcc.exe:*)",
|
|
||||||
"Bash(cmd.exe:*)",
|
|
||||||
"Bash(PATH=\"/c/msys64/mingw64/bin:$PATH\" /e/repos/triangles/scan_chain_tip.exe:*)",
|
|
||||||
"Bash(PATH=\"/c/msys64/mingw64/bin:$PATH\" /c/msys64/mingw64/bin/qmake.exe:*)",
|
|
||||||
"Bash(PATH=\"/c/msys64/mingw64/bin:$PATH\" qmake-qt5:*)",
|
|
||||||
"Bash(PATH=\"/c/msys64/mingw64/bin:$PATH\" mingw32-make:*)",
|
|
||||||
"Bash(export PATH=\"/c/msys64/mingw64/bin:$PATH\")",
|
|
||||||
"Bash(\"C:/msys64/mingw64/bin/qmake-qt5.exe\" triangles-qt.pro -o Makefile)",
|
|
||||||
"Bash(gh release create:*)",
|
|
||||||
"Bash(gh repo view:*)",
|
|
||||||
"Bash(gh repo create:*)",
|
|
||||||
"Bash(git commit:*)",
|
|
||||||
"Bash(git branch:*)",
|
|
||||||
"Bash(git push:*)",
|
|
||||||
"Bash(gh repo fork:*)",
|
|
||||||
"Bash(gh api:*)",
|
|
||||||
"Bash(gh auth:*)",
|
|
||||||
"Bash(1 <<'EOF'\n{\"visibility\":\"public\"}\nEOF)",
|
|
||||||
"Bash(findstr:*)",
|
|
||||||
"Bash(gh workflow run:*)",
|
|
||||||
"Bash(gh run watch:*)",
|
|
||||||
"Bash(gh run view:*)",
|
|
||||||
"Bash(gh release view:*)",
|
|
||||||
"Bash(gh run download:*)",
|
|
||||||
"Bash(gh release upload:*)",
|
|
||||||
"Bash(gh release delete-asset:*)",
|
|
||||||
"Bash(C:/msys64/mingw64/bin/mingw32-make.exe:*)",
|
|
||||||
"Bash(C:/msys64/usr/bin/env.exe MSYSTEM=MINGW64 PATH=\"/mingw64/bin:/usr/bin:/bin\" /usr/bin/bash -lc \"cd /e/repos/triangles/src && mingw32-make -f makefile.mingw -j8 all 2>&1 | tail -60\")",
|
|
||||||
"Bash(C:/msys64/usr/bin/env.exe MSYSTEM=MINGW64 /usr/bin/bash -lc \"ls /mingw64/lib/libboost_system*\")",
|
|
||||||
"Bash(C:/msys64/usr/bin/env.exe MSYSTEM=MINGW64 PATH=\"/mingw64/bin:/usr/bin:/bin\" /usr/bin/bash -lc \"cd /e/repos/triangles/src && mingw32-make -f makefile.mingw trianglesd.exe 2>&1 | tail -20\")",
|
|
||||||
"Bash(C:/msys64/usr/bin/env.exe MSYSTEM=MINGW64 PATH=\"/mingw64/bin:/usr/bin:/bin\" /usr/bin/bash -lc \"cd /e/repos/triangles/src && mingw32-make -f makefile.mingw trianglesd.exe 2>&1 | tail -10\")",
|
|
||||||
"Bash(gh run list:*)",
|
|
||||||
"Bash(git rm:*)",
|
|
||||||
"Bash(wc:*)",
|
|
||||||
"Bash(C:/msys64/usr/bin/bash.exe -lc \"cd /e/repos/triangles/src && make -f makefile.mingw obj/rest.o 2>&1 | head -80\")",
|
|
||||||
"Bash(C:/msys64/usr/bin/bash.exe -lc \"cd /e/repos/triangles/src && make -f makefile.mingw obj/trianglesrpc.o 2>&1 | tail -20\")",
|
|
||||||
"Bash(C:/msys64/usr/bin/bash.exe -lc \"cd /e/repos/triangles/src && make -f makefile.mingw 2>&1 | tail -30\")",
|
|
||||||
"Bash(node --version:*)",
|
|
||||||
"Bash(npm --version:*)",
|
|
||||||
"Bash(npm install:*)",
|
|
||||||
"Bash(npx svelte-kit sync:*)",
|
|
||||||
"Bash(npx vite build)",
|
|
||||||
"Bash(nslookup:*)",
|
|
||||||
"Bash(tailscale ping:*)",
|
|
||||||
"Bash(del /f \"%APPDATA%\\\\triangles\\\\peers.dat\")",
|
|
||||||
"Bash(C:msys64usrbinbash.exe -l -c \"cd ''e:/repos/triangles'' && qmake triangles-qt.pro ''USE_QRCODE=1'' ''USE_UPNP=-'' 2>&1 | tail -20\")",
|
|
||||||
"Bash(C:msys64msys2_shell.cmd -mingw64 -defterm -no-start -c \"cd /e/repos/triangles && qmake triangles-qt.pro ''USE_QRCODE=1'' ''USE_UPNP=-'' 2>&1 | tail -20\")",
|
|
||||||
"Bash(\"C:\\\\msys64\\\\mingw64\\\\bin\\\\bash.exe\" -c \"export PATH=/mingw64/bin:/usr/bin:$PATH && cd /e/repos/triangles && qmake triangles-qt.pro ''USE_QRCODE=1'' ''USE_UPNP=-'' 2>&1\")",
|
|
||||||
"Bash(C:/msys64/mingw64/bin/qmake.exe:*)",
|
|
||||||
"Bash(/c/msys64/mingw64/bin/qmake-qt5.exe:*)",
|
|
||||||
"Bash(/c/msys64/usr/bin/env.exe MSYSTEM=MINGW64 /c/msys64/usr/bin/bash.exe -l -c \"cd /e/repos/triangles && qmake triangles-qt.pro ''USE_QRCODE=1'' ''USE_UPNP=-'' 2>&1 | tail -5\")",
|
|
||||||
"Bash(export PATH=\"/c/msys64/mingw64/bin:/c/msys64/usr/bin:$PATH\")",
|
|
||||||
"Bash(/c/msys64/usr/bin/env.exe MSYSTEM=MINGW64 /c/msys64/usr/bin/bash.exe:*)",
|
|
||||||
"Bash(C:/msys64/usr/bin/bash.exe -l -c \"cd /e/repos/triangles && make release 2>&1 | grep -E ''error|Error|undefined|cannot find'' | head -20\")",
|
|
||||||
"Bash(C:/msys64/usr/bin/bash.exe -l -c \"pacman -Qs qrencode\")",
|
|
||||||
"Bash(C:/msys64/usr/bin/bash.exe -l -c \"pacman -S --noconfirm mingw-w64-x86_64-qrencode\")",
|
|
||||||
"Bash(C:/msys64/usr/bin/bash.exe -l -c \"cd /e/repos/triangles && qmake-qt5 -o Makefile triangles-qt.pro USE_QRCODE=0 USE_UPNP=- 2>&1\")",
|
|
||||||
"Bash(C:/msys64/usr/bin/bash.exe -l -c \"ls /mingw64/lib/libqrencode*\")",
|
|
||||||
"Bash(C:/msys64/usr/bin/bash.exe -l -c \"pacman -S --noconfirm mingw-w64-x86_64-cmake\")",
|
|
||||||
"Bash(C:/msys64/usr/bin/bash.exe -l -c \"cd /tmp && pacman -Sp mingw-w64-x86_64-qrencode 2>/dev/null\")",
|
|
||||||
"Bash(C:/msys64/usr/bin/bash.exe -l -c \"cd /e/repos/triangles && mkdir -p dist && cp release/triangles-qt.exe dist/ && cd dist && strip triangles-qt.exe && ls -lh triangles-qt.exe\")",
|
|
||||||
"Bash(C:/msys64/usr/bin/bash.exe -l -c \"cd /e/repos/triangles/dist && ldd triangles-qt.exe | grep mingw64 | awk ''{print $3}''\")",
|
|
||||||
"Bash(C:/msys64/usr/bin/bash.exe -l -c 'cd /e/repos/triangles/dist && ldd triangles-qt.exe | grep mingw64 | awk \"\"{print \\\\$3}\"\"')",
|
|
||||||
"Bash(C:/msys64/usr/bin/bash.exe -l -c \"cd /e/repos/triangles/dist && ldd triangles-qt.exe | grep mingw64\")",
|
|
||||||
"Bash(C:/msys64/usr/bin/bash.exe -l -c 'cd /e/repos/triangles/dist && ldd triangles-qt.exe | grep mingw64 | sed \"\"s/.*=> //\"\" | sed \"\"s/ \\(.*//\"\"> dlls.txt && while read dll; do cp \"\"$dll\"\" .; done < dlls.txt && ls *.dll | wc -l && echo \"\"DLLs copied\"\"')",
|
|
||||||
"Bash(C:/msys64/usr/bin/bash.exe -l -c 'cd /e/repos/triangles/dist && mkdir -p platforms && cp /mingw64/share/qt5/plugins/platforms/qwindows.dll platforms/ && echo \"\"Qt platform plugin copied\"\"')",
|
|
||||||
"Bash(C:/msys64/usr/bin/bash.exe -l -c 'cd /e/repos/triangles && rm -f Triangles-v5.1.8-win-x64.zip && cd dist && 7z a ../Triangles-v5.1.8-win-x64.zip triangles-qt.exe *.dll platforms/ && echo \"\"ZIP created\"\"')",
|
|
||||||
"Bash(C:/msys64/usr/bin/bash.exe -l -c \"cd /e/repos/triangles && make -j4 2>&1 | tail -15\")",
|
|
||||||
"Bash(pacman:*)",
|
|
||||||
"Bash(tar:*)",
|
|
||||||
"WebFetch(domain:src-ref.docs.torproject.org)",
|
|
||||||
"WebFetch(domain:gitlab.torproject.org)",
|
|
||||||
"Bash(git status:*)",
|
|
||||||
"Bash(git stash:*)",
|
|
||||||
"Bash(git pull:*)",
|
|
||||||
"Bash(git stash pop:*)",
|
|
||||||
"Bash(find:*)",
|
|
||||||
"Read(//e/repos/triangles/**)",
|
|
||||||
"Bash(curl:*)",
|
|
||||||
"Bash(qmake:*)",
|
|
||||||
"Bash(/c/msys64/mingw64/bin/mingw32-make.exe:*)",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"cd /e/repos/triangles && make -j1 2>&1 | tail -30\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -defterm -no-start -mingw64 -c \"cd /e/repos/triangles && rm -f build/main.o && mingw32-make -f Makefile.Release build/main.o 2>&1 | grep -E ''^\\(src/|.*error\\)'' | head -10\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -defterm -no-start -mingw64 -c \"cd /e/repos/triangles && ls -la build/main.o 2>&1\")",
|
|
||||||
"Bash(git -C \"e:\\\\repos\\\\triangles\" log --oneline -20)",
|
|
||||||
"Bash(git -C \"e:\\\\repos\\\\triangles\" describe --tags --abbrev=0)",
|
|
||||||
"Bash(git -C \"e:\\\\repos\\\\triangles\" rev-parse --short HEAD)",
|
|
||||||
"Bash(PATH=\"/c/msys64/mingw64/bin:$PATH\" which make:*)",
|
|
||||||
"Bash(export PATH=\"/mingw64/bin:$PATH\")",
|
|
||||||
"Bash(make:*)",
|
|
||||||
"Bash(C:/msys64/usr/bin/env.exe PATH=\"C:/msys64/mingw64/bin:C:/msys64/usr/bin\" C:/msys64/usr/bin/make.exe:*)",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -c \"cd /e/repos/triangles && make -f Makefile.Release -j8 2>&1 | tail -40\")",
|
|
||||||
"Bash(C:/msys64/msys2_shell.cmd -mingw64 -defterm -no-start -here -c \"make 2>&1 | tail -10\")",
|
|
||||||
"Bash(gh pr list:*)",
|
|
||||||
"Bash(gh pr view:*)",
|
|
||||||
"Bash(cmd //C \"powershell -NoProfile -Command \"\"Get-Process | Where-Object { $_.Path -like ''*triangles*'' } | Format-Table Id, ProcessName, Path\"\"\")",
|
|
||||||
"Bash(cmd //C \"tasklist /FI \"\"IMAGENAME eq triangles-qt.exe\"\"\")",
|
|
||||||
"Bash(MSYS_NO_PATHCONV=1 tasklist:*)"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+110
-114
@@ -18,21 +18,24 @@ jobs:
|
|||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y build-essential libboost-all-dev \
|
sudo apt-get install -y build-essential cmake ninja-build \
|
||||||
libssl-dev libdb++-dev libleveldb-dev libevent-dev libminiupnpc-dev
|
libboost-all-dev libssl-dev libdb++-dev libleveldb-dev \
|
||||||
|
libevent-dev libminiupnpc-dev zlib1g-dev
|
||||||
|
|
||||||
- name: Build LevelDB
|
- name: Configure
|
||||||
run: |
|
run: |
|
||||||
cd src/leveldb
|
cmake -B build -G Ninja \
|
||||||
chmod +x build_detect_platform
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
make clean || true
|
-DBUILD_QT=OFF \
|
||||||
make OPT="-O2" libleveldb.a libmemenv.a
|
-DBUILD_DAEMON=ON \
|
||||||
|
-DBUILD_TESTS=ON \
|
||||||
|
-DUSE_UPNP=OFF
|
||||||
|
|
||||||
- name: Build and run unit tests
|
- name: Build
|
||||||
run: |
|
run: cmake --build build -j$(nproc)
|
||||||
cd src
|
|
||||||
make -f makefile.unix test -j$(nproc)
|
- name: Run unit tests
|
||||||
./test_triangles --log_level=test_suite 2>&1 || true
|
run: cd build && ctest --output-on-failure || true
|
||||||
|
|
||||||
build-windows-qt:
|
build-windows-qt:
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
@@ -48,6 +51,8 @@ jobs:
|
|||||||
update: true
|
update: true
|
||||||
install: >-
|
install: >-
|
||||||
mingw-w64-x86_64-gcc
|
mingw-w64-x86_64-gcc
|
||||||
|
mingw-w64-x86_64-cmake
|
||||||
|
mingw-w64-x86_64-ninja
|
||||||
mingw-w64-x86_64-qt5-base
|
mingw-w64-x86_64-qt5-base
|
||||||
mingw-w64-x86_64-qt5-tools
|
mingw-w64-x86_64-qt5-tools
|
||||||
mingw-w64-x86_64-boost
|
mingw-w64-x86_64-boost
|
||||||
@@ -55,13 +60,7 @@ jobs:
|
|||||||
mingw-w64-x86_64-db
|
mingw-w64-x86_64-db
|
||||||
mingw-w64-x86_64-libevent
|
mingw-w64-x86_64-libevent
|
||||||
mingw-w64-x86_64-miniupnpc
|
mingw-w64-x86_64-miniupnpc
|
||||||
make
|
mingw-w64-x86_64-zlib
|
||||||
|
|
||||||
- name: Create Qt5 tool symlinks
|
|
||||||
run: |
|
|
||||||
ln -sf /mingw64/bin/qmake-qt5.exe /mingw64/bin/qmake.exe 2>/dev/null || true
|
|
||||||
ln -sf /mingw64/bin/lrelease-qt5.exe /mingw64/bin/lrelease.exe 2>/dev/null || true
|
|
||||||
ln -sf /mingw64/bin/windeployqt-qt5.exe /mingw64/bin/windeployqt.exe 2>/dev/null || true
|
|
||||||
|
|
||||||
- name: Set VERSION from source
|
- name: Set VERSION from source
|
||||||
run: |
|
run: |
|
||||||
@@ -70,25 +69,23 @@ jobs:
|
|||||||
REV=$(grep 'CLIENT_VERSION_REVISION' src/clientversion.h | awk '{print $3}')
|
REV=$(grep 'CLIENT_VERSION_REVISION' src/clientversion.h | awk '{print $3}')
|
||||||
echo "VERSION=${MAJOR}.${MINOR}.${REV}" >> $GITHUB_ENV
|
echo "VERSION=${MAJOR}.${MINOR}.${REV}" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Clean stale build artifacts
|
- name: Configure
|
||||||
run: rm -rf build/*.o build/*.h
|
|
||||||
|
|
||||||
- name: Build LevelDB
|
|
||||||
run: |
|
run: |
|
||||||
cd src/leveldb
|
cmake -B build -G Ninja \
|
||||||
make clean || true
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
CC=gcc CXX=g++ TARGET_OS=OS_WINDOWS_CROSSCOMPILE make OPT="-fno-keep-inline-dllexport -march=nocona -msahf -mtune=generic -Wa,-mbig-obj -O2" libleveldb.a libmemenv.a
|
-DBUILD_QT=ON \
|
||||||
|
-DBUILD_DAEMON=OFF \
|
||||||
- name: Run qmake
|
-DBUILD_TESTS=OFF \
|
||||||
run: qmake triangles-qt.pro "RELEASE=1"
|
-DUSE_UPNP=ON \
|
||||||
|
-DUSE_QRCODE=OFF
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: make -j$(nproc)
|
run: cmake --build build -j$(nproc)
|
||||||
|
|
||||||
- name: Package
|
- name: Package
|
||||||
run: |
|
run: |
|
||||||
mkdir -p dist
|
mkdir -p dist
|
||||||
cp release/triangles-qt.exe dist/
|
cp build/bin/triangles-qt.exe dist/
|
||||||
windeployqt dist/triangles-qt.exe || true
|
windeployqt dist/triangles-qt.exe || true
|
||||||
|
|
||||||
# Copy ALL runtime DLLs the binary needs
|
# Copy ALL runtime DLLs the binary needs
|
||||||
@@ -199,34 +196,36 @@ jobs:
|
|||||||
update: true
|
update: true
|
||||||
install: >-
|
install: >-
|
||||||
mingw-w64-x86_64-gcc
|
mingw-w64-x86_64-gcc
|
||||||
|
mingw-w64-x86_64-cmake
|
||||||
|
mingw-w64-x86_64-ninja
|
||||||
mingw-w64-x86_64-boost
|
mingw-w64-x86_64-boost
|
||||||
mingw-w64-x86_64-openssl
|
mingw-w64-x86_64-openssl
|
||||||
mingw-w64-x86_64-db
|
mingw-w64-x86_64-db
|
||||||
mingw-w64-x86_64-libevent
|
mingw-w64-x86_64-libevent
|
||||||
mingw-w64-x86_64-miniupnpc
|
mingw-w64-x86_64-miniupnpc
|
||||||
make
|
mingw-w64-x86_64-zlib
|
||||||
|
|
||||||
- name: Build LevelDB
|
- name: Configure
|
||||||
run: |
|
run: |
|
||||||
cd src/leveldb
|
cmake -B build -G Ninja \
|
||||||
make clean || true
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
CC=gcc CXX=g++ TARGET_OS=OS_WINDOWS_CROSSCOMPILE make OPT="-fno-keep-inline-dllexport -march=nocona -msahf -mtune=generic -Wa,-mbig-obj -O2" libleveldb.a libmemenv.a
|
-DBUILD_QT=OFF \
|
||||||
|
-DBUILD_DAEMON=ON \
|
||||||
|
-DBUILD_TESTS=OFF \
|
||||||
|
-DUSE_UPNP=ON
|
||||||
|
|
||||||
- name: Build daemon
|
- name: Build
|
||||||
run: |
|
run: |
|
||||||
set -eo pipefail
|
cmake --build build -j$(nproc)
|
||||||
cd src
|
strip --strip-all build/bin/trianglesd.exe
|
||||||
mkdir -p obj
|
|
||||||
make -f makefile.mingw DEPSDIR=/mingw64 all -j$(nproc) 2>&1
|
|
||||||
strip --strip-all trianglesd.exe
|
|
||||||
|
|
||||||
- name: Package daemon with DLLs
|
- name: Package daemon with DLLs
|
||||||
run: |
|
run: |
|
||||||
mkdir -p daemon-dist/tor
|
mkdir -p daemon-dist/tor
|
||||||
cp src/trianglesd.exe daemon-dist/
|
cp build/bin/trianglesd.exe daemon-dist/
|
||||||
|
|
||||||
# Copy all linked DLLs from MSYS2
|
# Copy all linked DLLs from MSYS2
|
||||||
ldd src/trianglesd.exe | grep '/mingw64' | awk '{print $3}' | while read dll; do
|
ldd build/bin/trianglesd.exe | grep '/mingw64' | awk '{print $3}' | while read dll; do
|
||||||
cp "$dll" daemon-dist/ 2>/dev/null || true
|
cp "$dll" daemon-dist/ 2>/dev/null || true
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -263,28 +262,25 @@ jobs:
|
|||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y build-essential qt5-qmake qtbase5-dev \
|
sudo apt-get install -y build-essential cmake ninja-build \
|
||||||
qttools5-dev-tools libboost-all-dev libssl-dev libdb++-dev \
|
qtbase5-dev qttools5-dev-tools \
|
||||||
libleveldb-dev libevent-dev libminiupnpc-dev
|
libboost-all-dev libssl-dev libdb++-dev \
|
||||||
|
libleveldb-dev libevent-dev libminiupnpc-dev zlib1g-dev
|
||||||
|
|
||||||
- name: Build LevelDB
|
- name: Configure
|
||||||
run: |
|
run: |
|
||||||
cd src/leveldb
|
cmake -B build -G Ninja \
|
||||||
chmod +x build_detect_platform
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
make clean || true
|
-DBUILD_QT=ON \
|
||||||
make OPT="-O2" libleveldb.a libmemenv.a
|
-DBUILD_DAEMON=OFF \
|
||||||
|
-DBUILD_TESTS=OFF \
|
||||||
- name: Clean stale build artifacts
|
-DUSE_UPNP=ON
|
||||||
run: rm -rf build/*.o
|
|
||||||
|
|
||||||
- name: Run qmake
|
|
||||||
run: qmake triangles-qt.pro "RELEASE=1"
|
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: make -j$(nproc)
|
run: cmake --build build -j$(nproc)
|
||||||
|
|
||||||
- name: Strip binary
|
- name: Strip binary
|
||||||
run: strip --strip-all triangles-qt
|
run: strip --strip-all build/bin/triangles-qt
|
||||||
|
|
||||||
- name: Build .deb package (fully self-contained)
|
- name: Build .deb package (fully self-contained)
|
||||||
run: |
|
run: |
|
||||||
@@ -300,13 +296,13 @@ jobs:
|
|||||||
mkdir -p ${PKG}/usr/share/applications
|
mkdir -p ${PKG}/usr/share/applications
|
||||||
mkdir -p ${PKG}/usr/share/pixmaps
|
mkdir -p ${PKG}/usr/share/pixmaps
|
||||||
|
|
||||||
cp triangles-qt ${PKG}/usr/lib/cryptographic-triangles/
|
cp build/bin/triangles-qt ${PKG}/usr/lib/cryptographic-triangles/
|
||||||
cp tor-extract/tor/tor ${PKG}/usr/lib/cryptographic-triangles/tor/
|
cp tor-extract/tor/tor ${PKG}/usr/lib/cryptographic-triangles/tor/
|
||||||
chmod +x ${PKG}/usr/lib/cryptographic-triangles/tor/tor
|
chmod +x ${PKG}/usr/lib/cryptographic-triangles/tor/tor
|
||||||
[ -d tor-extract/data ] && cp -r tor-extract/data ${PKG}/usr/lib/cryptographic-triangles/tor/data
|
[ -d tor-extract/data ] && cp -r tor-extract/data ${PKG}/usr/lib/cryptographic-triangles/tor/data
|
||||||
|
|
||||||
# Bundle ALL shared library dependencies (except glibc/kernel)
|
# Bundle ALL shared library dependencies (except glibc/kernel)
|
||||||
ldd triangles-qt | grep '=> /' | awk '{print $3}' | while read lib; do
|
ldd build/bin/triangles-qt | grep '=> /' | awk '{print $3}' | while read lib; do
|
||||||
case "$lib" in
|
case "$lib" in
|
||||||
/lib/x86_64-linux-gnu/libc.so*|/lib/x86_64-linux-gnu/libm.so*|/lib/x86_64-linux-gnu/libpthread.so*|/lib/x86_64-linux-gnu/libdl.so*|/lib/x86_64-linux-gnu/librt.so*|/lib/x86_64-linux-gnu/ld-linux*|/lib64/ld-linux*)
|
/lib/x86_64-linux-gnu/libc.so*|/lib/x86_64-linux-gnu/libm.so*|/lib/x86_64-linux-gnu/libpthread.so*|/lib/x86_64-linux-gnu/libdl.so*|/lib/x86_64-linux-gnu/librt.so*|/lib/x86_64-linux-gnu/ld-linux*|/lib64/ld-linux*)
|
||||||
;; # Skip glibc core — always present
|
;; # Skip glibc core — always present
|
||||||
@@ -379,24 +375,24 @@ jobs:
|
|||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
sudo apt-get install -y build-essential libboost-all-dev \
|
sudo apt-get install -y build-essential cmake ninja-build \
|
||||||
libssl-dev libdb++-dev libleveldb-dev libevent-dev libminiupnpc-dev
|
libboost-all-dev libssl-dev libdb++-dev libleveldb-dev \
|
||||||
|
libevent-dev libminiupnpc-dev zlib1g-dev
|
||||||
|
|
||||||
- name: Build LevelDB
|
- name: Configure
|
||||||
run: |
|
run: |
|
||||||
cd src/leveldb
|
cmake -B build -G Ninja \
|
||||||
chmod +x build_detect_platform
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
make clean || true
|
-DBUILD_QT=OFF \
|
||||||
make OPT="-O2" libleveldb.a libmemenv.a
|
-DBUILD_DAEMON=ON \
|
||||||
|
-DBUILD_TESTS=OFF \
|
||||||
|
-DUSE_UPNP=ON
|
||||||
|
|
||||||
- name: Build daemon
|
- name: Build
|
||||||
run: |
|
run: cmake --build build -j$(nproc)
|
||||||
cd src
|
|
||||||
mkdir -p obj
|
|
||||||
make -f makefile.unix trianglesd -j$(nproc)
|
|
||||||
|
|
||||||
- name: Strip binary
|
- name: Strip binary
|
||||||
run: strip --strip-all src/trianglesd
|
run: strip --strip-all build/bin/trianglesd
|
||||||
|
|
||||||
- name: Build .deb package (fully self-contained)
|
- name: Build .deb package (fully self-contained)
|
||||||
run: |
|
run: |
|
||||||
@@ -411,13 +407,13 @@ jobs:
|
|||||||
mkdir -p ${PKG}/usr/bin
|
mkdir -p ${PKG}/usr/bin
|
||||||
mkdir -p ${PKG}/etc/systemd/system
|
mkdir -p ${PKG}/etc/systemd/system
|
||||||
|
|
||||||
cp src/trianglesd ${PKG}/usr/lib/cryptographic-triangles/
|
cp build/bin/trianglesd ${PKG}/usr/lib/cryptographic-triangles/
|
||||||
cp tor-extract/tor/tor ${PKG}/usr/lib/cryptographic-triangles/tor/
|
cp tor-extract/tor/tor ${PKG}/usr/lib/cryptographic-triangles/tor/
|
||||||
chmod +x ${PKG}/usr/lib/cryptographic-triangles/tor/tor
|
chmod +x ${PKG}/usr/lib/cryptographic-triangles/tor/tor
|
||||||
[ -d tor-extract/data ] && cp -r tor-extract/data ${PKG}/usr/lib/cryptographic-triangles/tor/data
|
[ -d tor-extract/data ] && cp -r tor-extract/data ${PKG}/usr/lib/cryptographic-triangles/tor/data
|
||||||
|
|
||||||
# Bundle ALL shared library dependencies (except glibc/kernel)
|
# Bundle ALL shared library dependencies (except glibc/kernel)
|
||||||
ldd src/trianglesd | grep '=> /' | awk '{print $3}' | while read lib; do
|
ldd build/bin/trianglesd | grep '=> /' | awk '{print $3}' | while read lib; do
|
||||||
case "$lib" in
|
case "$lib" in
|
||||||
/lib/x86_64-linux-gnu/libc.so*|/lib/x86_64-linux-gnu/libm.so*|/lib/x86_64-linux-gnu/libpthread.so*|/lib/x86_64-linux-gnu/libdl.so*|/lib/x86_64-linux-gnu/librt.so*|/lib/x86_64-linux-gnu/ld-linux*|/lib64/ld-linux*)
|
/lib/x86_64-linux-gnu/libc.so*|/lib/x86_64-linux-gnu/libm.so*|/lib/x86_64-linux-gnu/libpthread.so*|/lib/x86_64-linux-gnu/libdl.so*|/lib/x86_64-linux-gnu/librt.so*|/lib/x86_64-linux-gnu/ld-linux*|/lib64/ld-linux*)
|
||||||
;; # Skip glibc core — always present
|
;; # Skip glibc core — always present
|
||||||
@@ -504,50 +500,48 @@ jobs:
|
|||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
brew install qt@5 openssl@3 boost berkeley-db@5 leveldb libevent miniupnpc
|
brew install cmake ninja qt@5 openssl@3 boost berkeley-db@5 leveldb libevent miniupnpc
|
||||||
|
|
||||||
- name: Clean stale build artifacts
|
- name: Configure
|
||||||
run: rm -rf build/*.o build/*.h
|
|
||||||
|
|
||||||
- name: Build LevelDB
|
|
||||||
run: |
|
|
||||||
cd src/leveldb
|
|
||||||
chmod +x build_detect_platform
|
|
||||||
make clean || true
|
|
||||||
CC=clang CXX=clang++ make OPT="-O2" libleveldb.a libmemenv.a
|
|
||||||
|
|
||||||
- name: Run qmake
|
|
||||||
run: |
|
run: |
|
||||||
export PATH="/opt/homebrew/opt/qt@5/bin:$PATH"
|
export PATH="/opt/homebrew/opt/qt@5/bin:$PATH"
|
||||||
qmake triangles-qt.pro -spec macx-clang \
|
cmake -B build -G Ninja \
|
||||||
"BOOST_INCLUDE_PATH=/opt/homebrew/opt/boost/include" \
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
"BOOST_LIB_PATH=/opt/homebrew/opt/boost/lib" \
|
-DBUILD_QT=ON \
|
||||||
"BDB_INCLUDE_PATH=/opt/homebrew/opt/berkeley-db@5/include" \
|
-DBUILD_DAEMON=OFF \
|
||||||
"BDB_LIB_PATH=/opt/homebrew/opt/berkeley-db@5/lib" \
|
-DBUILD_TESTS=OFF \
|
||||||
"BDB_LIB_SUFFIX=" \
|
-DUSE_UPNP=ON \
|
||||||
"OPENSSL_INCLUDE_PATH=/opt/homebrew/opt/openssl@3/include" \
|
-DBOOST_ROOT=/opt/homebrew/opt/boost \
|
||||||
"OPENSSL_LIB_PATH=/opt/homebrew/opt/openssl@3/lib" \
|
-DBDB_INCLUDE_PATH=/opt/homebrew/opt/berkeley-db@5/include \
|
||||||
"MINIUPNPC_INCLUDE_PATH=/opt/homebrew/opt/miniupnpc/include" \
|
-DBDB_LIB_PATH=/opt/homebrew/opt/berkeley-db@5/lib \
|
||||||
"MINIUPNPC_LIB_PATH=/opt/homebrew/opt/miniupnpc/lib" \
|
-DOPENSSL_ROOT_DIR=/opt/homebrew/opt/openssl@3 \
|
||||||
"EVENT_INCLUDE_PATH=/opt/homebrew/opt/libevent/include" \
|
-DEVENT_INCLUDE_PATH=/opt/homebrew/opt/libevent/include \
|
||||||
"EVENT_LIB_PATH=/opt/homebrew/opt/libevent/lib" \
|
-DEVENT_LIB_PATH=/opt/homebrew/opt/libevent/lib \
|
||||||
"RELEASE=1"
|
-DMINIUPNPC_INCLUDE_PATH=/opt/homebrew/opt/miniupnpc/include \
|
||||||
|
-DMINIUPNPC_LIB_PATH=/opt/homebrew/opt/miniupnpc/lib \
|
||||||
|
-DQt5_DIR=/opt/homebrew/opt/qt@5/lib/cmake/Qt5
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: |
|
run: cmake --build build -j$(sysctl -n hw.ncpu)
|
||||||
export PATH="/opt/homebrew/opt/qt@5/bin:$PATH"
|
|
||||||
make -j$(sysctl -n hw.ncpu)
|
|
||||||
|
|
||||||
- name: Create .app bundle
|
- name: Create .app bundle
|
||||||
run: |
|
run: |
|
||||||
export PATH="/opt/homebrew/opt/qt@5/bin:$PATH"
|
export PATH="/opt/homebrew/opt/qt@5/bin:$PATH"
|
||||||
macdeployqt Triangles-Qt.app -verbose=1
|
macdeployqt build/bin/Triangles-Qt.app -verbose=1 || \
|
||||||
|
macdeployqt build/bin/triangles-qt.app -verbose=1 || true
|
||||||
|
|
||||||
- name: Bundle non-Qt dylibs into app
|
- name: Bundle non-Qt dylibs into app
|
||||||
run: |
|
run: |
|
||||||
FRAMEWORKS="Triangles-Qt.app/Contents/Frameworks"
|
# Find the .app bundle
|
||||||
MACOS="Triangles-Qt.app/Contents/MacOS"
|
APP=$(find build/bin -name "*.app" -maxdepth 1 | head -1)
|
||||||
BINARY="$MACOS/Triangles-Qt"
|
if [ -z "$APP" ]; then
|
||||||
|
echo "No .app bundle found, creating one manually..."
|
||||||
|
APP="build/bin/Triangles-Qt.app"
|
||||||
|
mkdir -p "$APP/Contents/MacOS" "$APP/Contents/Frameworks"
|
||||||
|
cp build/bin/triangles-qt "$APP/Contents/MacOS/Triangles-Qt"
|
||||||
|
fi
|
||||||
|
FRAMEWORKS="$APP/Contents/Frameworks"
|
||||||
|
BINARY=$(find "$APP/Contents/MacOS" -type f -perm +111 | head -1)
|
||||||
|
|
||||||
# Copy Homebrew dylibs that macdeployqt doesn't handle
|
# Copy Homebrew dylibs that macdeployqt doesn't handle
|
||||||
for lib in boost_system boost_filesystem boost_thread boost_program_options boost_chrono; do
|
for lib in boost_system boost_filesystem boost_thread boost_program_options boost_chrono; do
|
||||||
@@ -575,15 +569,17 @@ jobs:
|
|||||||
TOR_VERSION="15.0.8"
|
TOR_VERSION="15.0.8"
|
||||||
curl -sL "https://dist.torproject.org/torbrowser/${TOR_VERSION}/tor-expert-bundle-macos-aarch64-${TOR_VERSION}.tar.gz" -o tor-bundle.tar.gz
|
curl -sL "https://dist.torproject.org/torbrowser/${TOR_VERSION}/tor-expert-bundle-macos-aarch64-${TOR_VERSION}.tar.gz" -o tor-bundle.tar.gz
|
||||||
mkdir -p tor-extract && tar -xzf tor-bundle.tar.gz -C tor-extract
|
mkdir -p tor-extract && tar -xzf tor-bundle.tar.gz -C tor-extract
|
||||||
mkdir -p Triangles-Qt.app/Contents/MacOS/tor
|
APP=$(find build/bin -name "*.app" -maxdepth 1 | head -1)
|
||||||
cp tor-extract/tor/tor Triangles-Qt.app/Contents/MacOS/tor/
|
mkdir -p "$APP/Contents/MacOS/tor"
|
||||||
chmod +x Triangles-Qt.app/Contents/MacOS/tor/tor
|
cp tor-extract/tor/tor "$APP/Contents/MacOS/tor/"
|
||||||
[ -d tor-extract/data ] && cp -r tor-extract/data Triangles-Qt.app/Contents/MacOS/tor/data
|
chmod +x "$APP/Contents/MacOS/tor/tor"
|
||||||
|
[ -d tor-extract/data ] && cp -r tor-extract/data "$APP/Contents/MacOS/tor/data"
|
||||||
|
|
||||||
- name: Create DMG
|
- name: Create DMG
|
||||||
run: |
|
run: |
|
||||||
|
APP=$(find build/bin -name "*.app" -maxdepth 1 | head -1)
|
||||||
mkdir -p dmg_contents
|
mkdir -p dmg_contents
|
||||||
cp -R Triangles-Qt.app dmg_contents/
|
cp -R "$APP" dmg_contents/
|
||||||
ln -s /Applications dmg_contents/Applications
|
ln -s /Applications dmg_contents/Applications
|
||||||
hdiutil create -volname "Cryptographic Triangles" \
|
hdiutil create -volname "Cryptographic Triangles" \
|
||||||
-srcfolder dmg_contents \
|
-srcfolder dmg_contents \
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ blocks/
|
|||||||
# IDE
|
# IDE
|
||||||
.vscode/
|
.vscode/
|
||||||
.idea/
|
.idea/
|
||||||
|
.claude/
|
||||||
*.swp
|
*.swp
|
||||||
*.swo
|
*.swo
|
||||||
*~
|
*~
|
||||||
|
|||||||
+116
@@ -0,0 +1,116 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.16)
|
||||||
|
|
||||||
|
# Silence CMP0167 warning (FindBoost removed in CMake 3.30+, use BoostConfig)
|
||||||
|
if(POLICY CMP0167)
|
||||||
|
cmake_policy(SET CMP0167 NEW)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
project(Triangles
|
||||||
|
VERSION 5.5.6.0
|
||||||
|
DESCRIPTION "Cryptographic Triangles Wallet"
|
||||||
|
LANGUAGES C CXX
|
||||||
|
)
|
||||||
|
|
||||||
|
# ── C++ Standard ──
|
||||||
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||||
|
set(CMAKE_C_STANDARD 11)
|
||||||
|
|
||||||
|
# ── Output directories ──
|
||||||
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
|
||||||
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
|
||||||
|
|
||||||
|
# ── Custom module path ──
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
||||||
|
|
||||||
|
# ── User-facing options ──
|
||||||
|
option(BUILD_QT "Build triangles-qt (Qt5 GUI wallet)" ON)
|
||||||
|
option(BUILD_DAEMON "Build trianglesd (headless daemon)" ON)
|
||||||
|
option(BUILD_TESTS "Build test_triangles (Boost.Test unit tests)" ON)
|
||||||
|
option(USE_UPNP "Enable UPnP support via miniupnpc" ON)
|
||||||
|
option(USE_IPV6 "Enable IPv6 support" ON)
|
||||||
|
option(USE_QRCODE "Enable QR code generation via libqrencode" OFF)
|
||||||
|
option(USE_DBUS "Enable D-Bus notifications (Linux only)" ON)
|
||||||
|
option(USE_ZMQ "Enable ZMQ publisher support" OFF)
|
||||||
|
option(USE_TOR_EMBEDDED "Enable embedded Tor library linking" OFF)
|
||||||
|
option(USE_O3 "Use -O3 optimization instead of -O2" OFF)
|
||||||
|
option(ENABLE_PIE "Build position-independent executables" OFF)
|
||||||
|
option(ENABLE_STATIC "Prefer static linking (Linux release builds)" OFF)
|
||||||
|
|
||||||
|
# Cache variables for custom dependency paths
|
||||||
|
set(BDB_INCLUDE_PATH "" CACHE PATH "Path to Berkeley DB headers")
|
||||||
|
set(BDB_LIB_PATH "" CACHE PATH "Path to Berkeley DB libraries")
|
||||||
|
set(EVENT_INCLUDE_PATH "" CACHE PATH "Path to libevent headers")
|
||||||
|
set(EVENT_LIB_PATH "" CACHE PATH "Path to libevent libraries")
|
||||||
|
set(MINIUPNPC_INCLUDE_PATH "" CACHE PATH "Path to miniupnpc headers")
|
||||||
|
set(MINIUPNPC_LIB_PATH "" CACHE PATH "Path to miniupnpc libraries")
|
||||||
|
set(TOR_SOURCE_ROOT "" CACHE PATH "Path to Tor source tree (for USE_TOR_EMBEDDED)")
|
||||||
|
|
||||||
|
# ── Compiler/linker flags ──
|
||||||
|
include(AddCompilerFlags)
|
||||||
|
|
||||||
|
# ── Find required dependencies ──
|
||||||
|
find_package(OpenSSL REQUIRED)
|
||||||
|
find_package(Boost 1.75 REQUIRED COMPONENTS
|
||||||
|
filesystem program_options thread chrono system
|
||||||
|
)
|
||||||
|
if(BUILD_TESTS)
|
||||||
|
find_package(Boost REQUIRED COMPONENTS unit_test_framework)
|
||||||
|
endif()
|
||||||
|
find_package(BerkeleyDB REQUIRED)
|
||||||
|
find_package(Libevent REQUIRED)
|
||||||
|
find_package(ZLIB REQUIRED)
|
||||||
|
find_package(Threads REQUIRED)
|
||||||
|
|
||||||
|
# ── Find optional dependencies ──
|
||||||
|
if(USE_UPNP)
|
||||||
|
find_package(Miniupnpc REQUIRED)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(USE_QRCODE)
|
||||||
|
find_package(QRencode REQUIRED)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(USE_ZMQ)
|
||||||
|
find_package(PkgConfig REQUIRED)
|
||||||
|
pkg_check_modules(ZMQ REQUIRED IMPORTED_TARGET libzmq)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(BUILD_QT)
|
||||||
|
find_package(Qt5 5.9 REQUIRED COMPONENTS Core Gui Widgets)
|
||||||
|
find_package(Qt5 COMPONENTS LinguistTools QUIET)
|
||||||
|
if(USE_DBUS AND UNIX AND NOT APPLE)
|
||||||
|
find_package(Qt5 COMPONENTS DBus QUIET)
|
||||||
|
if(NOT Qt5DBus_FOUND)
|
||||||
|
message(STATUS "Qt5 DBus not found -- disabling D-Bus notifications")
|
||||||
|
set(USE_DBUS OFF CACHE BOOL "" FORCE)
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
set(USE_DBUS OFF CACHE BOOL "" FORCE)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# ── Build bundled LevelDB ──
|
||||||
|
include(BuildLevelDB)
|
||||||
|
|
||||||
|
# ── Generate build.h from git describe ──
|
||||||
|
include(GenerateBuildInfo)
|
||||||
|
|
||||||
|
# ── Descend into source tree ──
|
||||||
|
add_subdirectory(src)
|
||||||
|
|
||||||
|
# ── Configuration summary ──
|
||||||
|
message(STATUS "")
|
||||||
|
message(STATUS "Triangles ${PROJECT_VERSION} build configuration:")
|
||||||
|
message(STATUS " Build Qt GUI: ${BUILD_QT}")
|
||||||
|
message(STATUS " Build daemon: ${BUILD_DAEMON}")
|
||||||
|
message(STATUS " Build tests: ${BUILD_TESTS}")
|
||||||
|
message(STATUS " UPnP: ${USE_UPNP}")
|
||||||
|
message(STATUS " IPv6: ${USE_IPV6}")
|
||||||
|
message(STATUS " QR code: ${USE_QRCODE}")
|
||||||
|
message(STATUS " D-Bus: ${USE_DBUS}")
|
||||||
|
message(STATUS " ZMQ: ${USE_ZMQ}")
|
||||||
|
message(STATUS " Embedded Tor: ${USE_TOR_EMBEDDED}")
|
||||||
|
message(STATUS " Static linking: ${ENABLE_STATIC}")
|
||||||
|
message(STATUS "")
|
||||||
@@ -1,284 +0,0 @@
|
|||||||
#############################################################################
|
|
||||||
# Makefile for building: triangles-qt
|
|
||||||
# Generated by qmake (3.1) (Qt 5.15.18)
|
|
||||||
# Project: triangles-qt.pro
|
|
||||||
# Template: app
|
|
||||||
# Command: C:/msys64/mingw64/bin/qmake-qt5.exe -o Makefile triangles-qt.pro
|
|
||||||
#############################################################################
|
|
||||||
|
|
||||||
MAKEFILE = Makefile
|
|
||||||
|
|
||||||
EQ = =
|
|
||||||
|
|
||||||
first: release
|
|
||||||
install: release-install
|
|
||||||
uninstall: release-uninstall
|
|
||||||
QMAKE = C:/msys64/mingw64/bin/qmake-qt5.exe
|
|
||||||
DEL_FILE = rm -f
|
|
||||||
CHK_DIR_EXISTS= test -d
|
|
||||||
MKDIR = mkdir -p
|
|
||||||
COPY = cp -f
|
|
||||||
COPY_FILE = cp -f
|
|
||||||
COPY_DIR = cp -f -R
|
|
||||||
INSTALL_FILE = cp -f
|
|
||||||
INSTALL_PROGRAM = cp -f
|
|
||||||
INSTALL_DIR = cp -f -R
|
|
||||||
QINSTALL = C:/msys64/mingw64/bin/qmake-qt5.exe -install qinstall
|
|
||||||
QINSTALL_PROGRAM = C:/msys64/mingw64/bin/qmake-qt5.exe -install qinstall -exe
|
|
||||||
DEL_FILE = rm -f
|
|
||||||
SYMLINK = $(QMAKE) -install ln -f -s
|
|
||||||
DEL_DIR = rmdir
|
|
||||||
MOVE = mv -f
|
|
||||||
IDC = idc
|
|
||||||
IDL = widl
|
|
||||||
ZIP =
|
|
||||||
DEF_FILE =
|
|
||||||
RES_FILE = build/triangles-qt_res.o
|
|
||||||
SED = sed
|
|
||||||
MOVE = mv -f
|
|
||||||
SUBTARGETS = \
|
|
||||||
release \
|
|
||||||
debug
|
|
||||||
|
|
||||||
|
|
||||||
release: FORCE
|
|
||||||
$(MAKE) -f $(MAKEFILE).Release
|
|
||||||
release-make_first: FORCE
|
|
||||||
$(MAKE) -f $(MAKEFILE).Release
|
|
||||||
release-all: FORCE
|
|
||||||
$(MAKE) -f $(MAKEFILE).Release all
|
|
||||||
release-clean: FORCE
|
|
||||||
$(MAKE) -f $(MAKEFILE).Release clean
|
|
||||||
release-distclean: FORCE
|
|
||||||
$(MAKE) -f $(MAKEFILE).Release distclean
|
|
||||||
release-install: FORCE
|
|
||||||
$(MAKE) -f $(MAKEFILE).Release install
|
|
||||||
release-uninstall: FORCE
|
|
||||||
$(MAKE) -f $(MAKEFILE).Release uninstall
|
|
||||||
debug: FORCE
|
|
||||||
$(MAKE) -f $(MAKEFILE).Debug
|
|
||||||
debug-make_first: FORCE
|
|
||||||
$(MAKE) -f $(MAKEFILE).Debug
|
|
||||||
debug-all: FORCE
|
|
||||||
$(MAKE) -f $(MAKEFILE).Debug all
|
|
||||||
debug-clean: FORCE
|
|
||||||
$(MAKE) -f $(MAKEFILE).Debug clean
|
|
||||||
debug-distclean: FORCE
|
|
||||||
$(MAKE) -f $(MAKEFILE).Debug distclean
|
|
||||||
debug-install: FORCE
|
|
||||||
$(MAKE) -f $(MAKEFILE).Debug install
|
|
||||||
debug-uninstall: FORCE
|
|
||||||
$(MAKE) -f $(MAKEFILE).Debug uninstall
|
|
||||||
|
|
||||||
Makefile: triangles-qt.pro C:/msys64/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf C:/msys64/mingw64/share/qt5/mkspecs/features/spec_pre.prf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/qdevice.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/device_config.prf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/common/sanitize.conf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/common/gcc-base.conf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/common/g++-base.conf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/common/angle.conf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/win32/windows_vulkan_sdk.prf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/common/windows-vulkan.conf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/common/g++-win32.conf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/common/windows-desktop.conf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/qconfig.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_core.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_core_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_designer.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_designer_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_edid_support_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_fb_support_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_gui.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_gui_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_help.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_help_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_network.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_network_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_sql.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_sql_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_uiplugin.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_windowsuiautomation_support_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_xml.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_xml_private.pri \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/qt_functions.prf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/qt_config.prf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/spec_post.prf \
|
|
||||||
.qmake.stash \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/exclusive_builds.prf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/toolchain.prf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/default_pre.prf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/win32/default_pre.prf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/resolve_config.prf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/exclusive_builds_post.prf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/default_post.prf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/precompile_header.prf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/warn_on.prf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/qt.prf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/resources_functions.prf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/resources.prf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/moc.prf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/win32/opengl.prf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/uic.prf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/qmake_use.prf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/file_copies.prf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/win32/windows.prf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/testcase_targets.prf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/exceptions.prf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/yacc.prf \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/lex.prf \
|
|
||||||
triangles-qt.pro \
|
|
||||||
C:/msys64/mingw64/lib/qtmain.prl \
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/build_pass.prf \
|
|
||||||
src/qt/triangles.qrc
|
|
||||||
$(QMAKE) -o Makefile triangles-qt.pro
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/spec_pre.prf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/qdevice.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/device_config.prf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/common/sanitize.conf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/common/gcc-base.conf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/common/g++-base.conf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/common/angle.conf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/win32/windows_vulkan_sdk.prf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/common/windows-vulkan.conf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/common/g++-win32.conf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/common/windows-desktop.conf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/qconfig.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_concurrent_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_core.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_core_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_dbus_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_designer.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_designer_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_edid_support_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_fb_support_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_gui.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_gui_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_help.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_help_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_network.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_network_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_opengl_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_printsupport_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_sql.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_sql_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_testlib_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_theme_support_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_uiplugin.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_uitools_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_widgets_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_windowsuiautomation_support_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_xml.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/modules/qt_lib_xml_private.pri:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/qt_functions.prf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/qt_config.prf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/win32-g++/qmake.conf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/spec_post.prf:
|
|
||||||
.qmake.stash:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/exclusive_builds.prf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/toolchain.prf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/default_pre.prf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/win32/default_pre.prf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/resolve_config.prf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/exclusive_builds_post.prf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/default_post.prf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/precompile_header.prf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/warn_on.prf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/qt.prf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/resources_functions.prf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/resources.prf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/moc.prf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/win32/opengl.prf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/uic.prf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/qmake_use.prf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/file_copies.prf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/win32/windows.prf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/testcase_targets.prf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/exceptions.prf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/yacc.prf:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/lex.prf:
|
|
||||||
triangles-qt.pro:
|
|
||||||
C:/msys64/mingw64/lib/qtmain.prl:
|
|
||||||
C:/msys64/mingw64/share/qt5/mkspecs/features/build_pass.prf:
|
|
||||||
src/qt/triangles.qrc:
|
|
||||||
qmake: FORCE
|
|
||||||
@$(QMAKE) -o Makefile triangles-qt.pro
|
|
||||||
|
|
||||||
qmake_all: FORCE
|
|
||||||
|
|
||||||
make_first: release-make_first debug-make_first FORCE
|
|
||||||
all: release-all debug-all FORCE
|
|
||||||
clean: release-clean debug-clean FORCE
|
|
||||||
-$(DEL_FILE) E:/repos/triangles/src/leveldb/libleveldb.a;
|
|
||||||
-$(DEL_FILE) cd
|
|
||||||
-$(DEL_FILE) E:/repos/triangles/src/leveldb
|
|
||||||
-$(DEL_FILE) ;
|
|
||||||
-$(DEL_FILE) clean
|
|
||||||
distclean: release-distclean debug-distclean FORCE
|
|
||||||
-$(DEL_FILE) Makefile
|
|
||||||
-$(DEL_FILE) .qmake.stash
|
|
||||||
|
|
||||||
E:/repos/triangles/src/leveldb/libleveldb.a: FORCE
|
|
||||||
cd E:/repos/triangles/src/leveldb && CC=gcc CXX=g++ TARGET_OS=OS_WINDOWS_CROSSCOMPILE $(MAKE) OPT="-fno-keep-inline-dllexport -march=nocona -msahf -mtune=generic -Wa,-mbig-obj -O2" libleveldb.a libmemenv.a && ranlib E:/repos/triangles/src/leveldb/libleveldb.a && ranlib E:/repos/triangles/src/leveldb/libmemenv.a
|
|
||||||
|
|
||||||
release-mocclean:
|
|
||||||
$(MAKE) -f $(MAKEFILE).Release mocclean
|
|
||||||
debug-mocclean:
|
|
||||||
$(MAKE) -f $(MAKEFILE).Debug mocclean
|
|
||||||
mocclean: release-mocclean debug-mocclean
|
|
||||||
|
|
||||||
release-mocables:
|
|
||||||
$(MAKE) -f $(MAKEFILE).Release mocables
|
|
||||||
debug-mocables:
|
|
||||||
$(MAKE) -f $(MAKEFILE).Debug mocables
|
|
||||||
mocables: release-mocables debug-mocables
|
|
||||||
|
|
||||||
check: first
|
|
||||||
|
|
||||||
benchmark: first
|
|
||||||
FORCE:
|
|
||||||
|
|
||||||
$(MAKEFILE).Release: Makefile
|
|
||||||
$(MAKEFILE).Debug: Makefile
|
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
# cmake/AddCompilerFlags.cmake
|
||||||
|
# Shared compiler and linker flag configuration for all Triangles targets.
|
||||||
|
|
||||||
|
# ── Common warning flags ──
|
||||||
|
add_compile_options(
|
||||||
|
-Wall -Wextra -Wno-ignored-qualifiers
|
||||||
|
-Wformat -Wformat-security -Wno-unused-parameter
|
||||||
|
)
|
||||||
|
|
||||||
|
# ── Common defines ──
|
||||||
|
add_compile_definitions(
|
||||||
|
BOOST_SPIRIT_THREADSAFE
|
||||||
|
BOOST_THREAD_USE_LIB
|
||||||
|
BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN
|
||||||
|
BOOST_BIND_GLOBAL_PLACEHOLDERS
|
||||||
|
__NO_SYSTEM_INCLUDES
|
||||||
|
)
|
||||||
|
|
||||||
|
# ── Hardening (non-Windows) ──
|
||||||
|
if(NOT WIN32)
|
||||||
|
# Ubuntu bug #691722 workaround: reset before re-enabling
|
||||||
|
add_compile_options(-fno-stack-protector)
|
||||||
|
add_compile_options(-fstack-protector-all -Wstack-protector)
|
||||||
|
add_compile_definitions(_FORTIFY_SOURCE=2)
|
||||||
|
add_link_options(-Wl,-z,relro -Wl,-z,now)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# ── PIE (position-independent executables) ──
|
||||||
|
if(ENABLE_PIE AND NOT WIN32)
|
||||||
|
add_compile_options(-fPIE)
|
||||||
|
add_link_options(-pie)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# ── Optimization override ──
|
||||||
|
if(USE_O3)
|
||||||
|
string(REPLACE "-O2" "-O3" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
|
||||||
|
string(REPLACE "-O2" "-O3" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
|
||||||
|
string(REPLACE "-O2" "-O3" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
|
||||||
|
string(REPLACE "-O2" "-O3" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# ── 32-bit SSE2 ──
|
||||||
|
if(CMAKE_SYSTEM_PROCESSOR MATCHES "i[3-6]86")
|
||||||
|
add_compile_options(-msse2)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# ── Platform: Windows (MSYS2 MinGW64) ──
|
||||||
|
if(WIN32)
|
||||||
|
add_compile_options(-Wa,-mbig-obj)
|
||||||
|
add_compile_options(-Wno-deprecated-declarations -Wno-reserved-user-defined-literal)
|
||||||
|
add_link_options(-static -static-libgcc -static-libstdc++)
|
||||||
|
add_compile_definitions(WIN32 _MT)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# ── Platform: macOS ──
|
||||||
|
if(APPLE)
|
||||||
|
set(CMAKE_OSX_DEPLOYMENT_TARGET "11.0" CACHE STRING "Minimum macOS version")
|
||||||
|
add_compile_options(-Wno-reserved-user-defined-literal -Wno-deprecated-declarations)
|
||||||
|
add_compile_definitions(MAC_OSX MSG_NOSIGNAL=0)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# ── Platform: Linux ──
|
||||||
|
if(UNIX AND NOT APPLE)
|
||||||
|
add_compile_definitions(LINUX)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# ── Static linking (Linux release builds) ──
|
||||||
|
if(ENABLE_STATIC AND UNIX AND NOT APPLE)
|
||||||
|
add_link_options(-static)
|
||||||
|
endif()
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# cmake/BuildLevelDB.cmake
|
||||||
|
# Builds the bundled LevelDB via its native CMake sub-build.
|
||||||
|
# Exposes leveldb_lib, leveldb_memenv, leveldb_bundled, and build_leveldb.
|
||||||
|
|
||||||
|
set(LEVELDB_SOURCE_DIR "${CMAKE_SOURCE_DIR}/src/leveldb")
|
||||||
|
set(LEVELDB_BINARY_DIR "${CMAKE_BINARY_DIR}/leveldb")
|
||||||
|
|
||||||
|
if(NOT TARGET leveldb_lib)
|
||||||
|
add_subdirectory("${LEVELDB_SOURCE_DIR}" "${LEVELDB_BINARY_DIR}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT TARGET build_leveldb)
|
||||||
|
add_custom_target(build_leveldb DEPENDS leveldb_lib leveldb_memenv)
|
||||||
|
endif()
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
# cmake/FindBerkeleyDB.cmake
|
||||||
|
# Finds Berkeley DB C++ headers and library.
|
||||||
|
#
|
||||||
|
# User can set BDB_INCLUDE_PATH and BDB_LIB_PATH to guide search.
|
||||||
|
#
|
||||||
|
# Creates imported target: BerkeleyDB::BerkeleyDB
|
||||||
|
# Sets: BerkeleyDB_FOUND, BerkeleyDB_INCLUDE_DIR, BerkeleyDB_LIBRARY
|
||||||
|
|
||||||
|
find_path(BerkeleyDB_INCLUDE_DIR
|
||||||
|
NAMES db_cxx.h
|
||||||
|
HINTS
|
||||||
|
${BDB_INCLUDE_PATH}
|
||||||
|
ENV BDB_INCLUDE_PATH
|
||||||
|
PATHS
|
||||||
|
/opt/homebrew/opt/berkeley-db@5/include
|
||||||
|
/opt/homebrew/opt/berkeley-db/include
|
||||||
|
/usr/include/db5
|
||||||
|
/usr/local/include/db5
|
||||||
|
/usr/include
|
||||||
|
/usr/local/include
|
||||||
|
C:/msys64/mingw64/include
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(BerkeleyDB_LIBRARY
|
||||||
|
NAMES db_cxx db_cxx-5 db_cxx-5.3 db_cxx-4.8
|
||||||
|
HINTS
|
||||||
|
${BDB_LIB_PATH}
|
||||||
|
ENV BDB_LIB_PATH
|
||||||
|
PATHS
|
||||||
|
/opt/homebrew/opt/berkeley-db@5/lib
|
||||||
|
/opt/homebrew/opt/berkeley-db/lib
|
||||||
|
/usr/lib/x86_64-linux-gnu
|
||||||
|
/usr/lib
|
||||||
|
/usr/local/lib
|
||||||
|
C:/msys64/mingw64/lib
|
||||||
|
)
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args(BerkeleyDB
|
||||||
|
REQUIRED_VARS BerkeleyDB_LIBRARY BerkeleyDB_INCLUDE_DIR
|
||||||
|
)
|
||||||
|
|
||||||
|
if(BerkeleyDB_FOUND AND NOT TARGET BerkeleyDB::BerkeleyDB)
|
||||||
|
add_library(BerkeleyDB::BerkeleyDB UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(BerkeleyDB::BerkeleyDB PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${BerkeleyDB_LIBRARY}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${BerkeleyDB_INCLUDE_DIR}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
mark_as_advanced(BerkeleyDB_INCLUDE_DIR BerkeleyDB_LIBRARY)
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
# cmake/FindLibevent.cmake
|
||||||
|
# Finds libevent headers and library.
|
||||||
|
#
|
||||||
|
# User can set EVENT_INCLUDE_PATH and EVENT_LIB_PATH.
|
||||||
|
#
|
||||||
|
# Creates imported target: Libevent::Libevent
|
||||||
|
|
||||||
|
find_path(Libevent_INCLUDE_DIR
|
||||||
|
NAMES event2/event.h
|
||||||
|
HINTS
|
||||||
|
${EVENT_INCLUDE_PATH}
|
||||||
|
ENV EVENT_INCLUDE_PATH
|
||||||
|
PATHS
|
||||||
|
/opt/homebrew/include
|
||||||
|
/usr/include
|
||||||
|
/usr/local/include
|
||||||
|
C:/msys64/mingw64/include
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(Libevent_LIBRARY
|
||||||
|
NAMES event libevent
|
||||||
|
HINTS
|
||||||
|
${EVENT_LIB_PATH}
|
||||||
|
ENV EVENT_LIB_PATH
|
||||||
|
PATHS
|
||||||
|
/opt/homebrew/lib
|
||||||
|
/usr/lib/x86_64-linux-gnu
|
||||||
|
/usr/lib
|
||||||
|
/usr/local/lib
|
||||||
|
C:/msys64/mingw64/lib
|
||||||
|
)
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args(Libevent
|
||||||
|
REQUIRED_VARS Libevent_LIBRARY Libevent_INCLUDE_DIR
|
||||||
|
)
|
||||||
|
|
||||||
|
if(Libevent_FOUND AND NOT TARGET Libevent::Libevent)
|
||||||
|
add_library(Libevent::Libevent UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(Libevent::Libevent PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${Libevent_LIBRARY}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${Libevent_INCLUDE_DIR}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
mark_as_advanced(Libevent_INCLUDE_DIR Libevent_LIBRARY)
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
# cmake/FindMiniupnpc.cmake
|
||||||
|
# Finds miniupnpc headers and library.
|
||||||
|
#
|
||||||
|
# User can set MINIUPNPC_INCLUDE_PATH and MINIUPNPC_LIB_PATH.
|
||||||
|
#
|
||||||
|
# Creates imported target: Miniupnpc::Miniupnpc
|
||||||
|
|
||||||
|
find_path(Miniupnpc_INCLUDE_DIR
|
||||||
|
NAMES miniupnpc/miniupnpc.h
|
||||||
|
HINTS
|
||||||
|
${MINIUPNPC_INCLUDE_PATH}
|
||||||
|
ENV MINIUPNPC_INCLUDE_PATH
|
||||||
|
PATHS
|
||||||
|
/opt/homebrew/include
|
||||||
|
/usr/include
|
||||||
|
/usr/local/include
|
||||||
|
C:/msys64/mingw64/include
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(Miniupnpc_LIBRARY
|
||||||
|
NAMES miniupnpc
|
||||||
|
HINTS
|
||||||
|
${MINIUPNPC_LIB_PATH}
|
||||||
|
ENV MINIUPNPC_LIB_PATH
|
||||||
|
PATHS
|
||||||
|
/opt/homebrew/lib
|
||||||
|
/usr/lib/x86_64-linux-gnu
|
||||||
|
/usr/lib
|
||||||
|
/usr/local/lib
|
||||||
|
C:/msys64/mingw64/lib
|
||||||
|
)
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args(Miniupnpc
|
||||||
|
REQUIRED_VARS Miniupnpc_LIBRARY Miniupnpc_INCLUDE_DIR
|
||||||
|
)
|
||||||
|
|
||||||
|
if(Miniupnpc_FOUND AND NOT TARGET Miniupnpc::Miniupnpc)
|
||||||
|
add_library(Miniupnpc::Miniupnpc UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(Miniupnpc::Miniupnpc PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${Miniupnpc_LIBRARY}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${Miniupnpc_INCLUDE_DIR}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
mark_as_advanced(Miniupnpc_INCLUDE_DIR Miniupnpc_LIBRARY)
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
# cmake/FindQRencode.cmake
|
||||||
|
# Finds libqrencode headers and library.
|
||||||
|
#
|
||||||
|
# Creates imported target: QRencode::QRencode
|
||||||
|
|
||||||
|
find_path(QRencode_INCLUDE_DIR
|
||||||
|
NAMES qrencode.h
|
||||||
|
PATHS
|
||||||
|
/opt/homebrew/include
|
||||||
|
/usr/include
|
||||||
|
/usr/local/include
|
||||||
|
C:/msys64/mingw64/include
|
||||||
|
)
|
||||||
|
|
||||||
|
find_library(QRencode_LIBRARY
|
||||||
|
NAMES qrencode
|
||||||
|
PATHS
|
||||||
|
/opt/homebrew/lib
|
||||||
|
/usr/lib/x86_64-linux-gnu
|
||||||
|
/usr/lib
|
||||||
|
/usr/local/lib
|
||||||
|
C:/msys64/mingw64/lib
|
||||||
|
)
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args(QRencode
|
||||||
|
REQUIRED_VARS QRencode_LIBRARY QRencode_INCLUDE_DIR
|
||||||
|
)
|
||||||
|
|
||||||
|
if(QRencode_FOUND AND NOT TARGET QRencode::QRencode)
|
||||||
|
add_library(QRencode::QRencode UNKNOWN IMPORTED)
|
||||||
|
set_target_properties(QRencode::QRencode PROPERTIES
|
||||||
|
IMPORTED_LOCATION "${QRencode_LIBRARY}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES "${QRencode_INCLUDE_DIR}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
mark_as_advanced(QRencode_INCLUDE_DIR QRencode_LIBRARY)
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# cmake/GenerateBuildInfo.cmake
|
||||||
|
# Sets up a custom target that generates build.h from git describe,
|
||||||
|
# equivalent to share/genbuild.sh.
|
||||||
|
|
||||||
|
set(BUILD_HEADER_DIR "${CMAKE_BINARY_DIR}/generated")
|
||||||
|
set(BUILD_HEADER "${BUILD_HEADER_DIR}/build.h")
|
||||||
|
file(MAKE_DIRECTORY "${BUILD_HEADER_DIR}")
|
||||||
|
|
||||||
|
# Custom command runs on every build to regenerate build.h if git state changed
|
||||||
|
add_custom_target(generate_build_info ALL
|
||||||
|
COMMAND ${CMAKE_COMMAND}
|
||||||
|
-DSOURCE_DIR=${CMAKE_SOURCE_DIR}
|
||||||
|
-DOUTPUT_FILE=${BUILD_HEADER}
|
||||||
|
-P "${CMAKE_SOURCE_DIR}/cmake/GenerateBuildInfoScript.cmake"
|
||||||
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||||
|
COMMENT "Generating build.h from git describe..."
|
||||||
|
BYPRODUCTS "${BUILD_HEADER}"
|
||||||
|
VERBATIM
|
||||||
|
)
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
# cmake/GenerateBuildInfoScript.cmake
|
||||||
|
# Called at build time by the custom target in GenerateBuildInfo.cmake.
|
||||||
|
# Replicates the logic of share/genbuild.sh.
|
||||||
|
|
||||||
|
# Read existing build.h first line if it exists
|
||||||
|
set(OLD_LINE "")
|
||||||
|
if(EXISTS "${OUTPUT_FILE}")
|
||||||
|
file(STRINGS "${OUTPUT_FILE}" _lines LIMIT_COUNT 1)
|
||||||
|
if(_lines)
|
||||||
|
list(GET _lines 0 OLD_LINE)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Try exact tag match first (release builds)
|
||||||
|
execute_process(
|
||||||
|
COMMAND git describe --tags --exact-match
|
||||||
|
WORKING_DIRECTORY "${SOURCE_DIR}"
|
||||||
|
OUTPUT_VARIABLE GIT_DESC
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
ERROR_QUIET
|
||||||
|
RESULT_VARIABLE _result
|
||||||
|
)
|
||||||
|
|
||||||
|
# Fall back to tag + commit distance
|
||||||
|
if(NOT _result EQUAL 0)
|
||||||
|
execute_process(
|
||||||
|
COMMAND git describe --tags --dirty
|
||||||
|
WORKING_DIRECTORY "${SOURCE_DIR}"
|
||||||
|
OUTPUT_VARIABLE GIT_DESC
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
ERROR_QUIET
|
||||||
|
RESULT_VARIABLE _result
|
||||||
|
)
|
||||||
|
if(NOT _result EQUAL 0)
|
||||||
|
set(GIT_DESC "")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Get commit timestamp
|
||||||
|
execute_process(
|
||||||
|
COMMAND git log -n 1 --format=%ci
|
||||||
|
WORKING_DIRECTORY "${SOURCE_DIR}"
|
||||||
|
OUTPUT_VARIABLE GIT_TIME
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
ERROR_QUIET
|
||||||
|
)
|
||||||
|
|
||||||
|
# Build new content
|
||||||
|
if(GIT_DESC)
|
||||||
|
set(NEW_LINE "#define BUILD_DESC \"${GIT_DESC}\"")
|
||||||
|
else()
|
||||||
|
set(NEW_LINE "// No build information available")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Only write if changed
|
||||||
|
if(NOT "${OLD_LINE}" STREQUAL "${NEW_LINE}")
|
||||||
|
file(WRITE "${OUTPUT_FILE}"
|
||||||
|
"${NEW_LINE}\n"
|
||||||
|
"#define BUILD_DATE \"${GIT_TIME}\"\n"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
@@ -0,0 +1,401 @@
|
|||||||
|
# src/CMakeLists.txt
|
||||||
|
# Defines all build targets: libraries and executables.
|
||||||
|
|
||||||
|
# ═══════════════════════════════════════════════════════════════════════════════
|
||||||
|
# 1. Hash9 cryptographic primitives (pure C)
|
||||||
|
# ═══════════════════════════════════════════════════════════════════════════════
|
||||||
|
add_library(hash9_crypto STATIC
|
||||||
|
blake.c
|
||||||
|
groestl.c
|
||||||
|
jh.c
|
||||||
|
keccak.c
|
||||||
|
skein.c
|
||||||
|
aes_helper.c
|
||||||
|
bmw.c
|
||||||
|
cubehash.c
|
||||||
|
echo.c
|
||||||
|
fugue.c
|
||||||
|
hamsi.c
|
||||||
|
hamsi_helper.c
|
||||||
|
luffa.c
|
||||||
|
shavite.c
|
||||||
|
simd.c
|
||||||
|
)
|
||||||
|
target_include_directories(hash9_crypto PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||||
|
set_target_properties(hash9_crypto PROPERTIES LINKER_LANGUAGE C)
|
||||||
|
|
||||||
|
# ═══════════════════════════════════════════════════════════════════════════════
|
||||||
|
# 2. JSON library (header-only nlohmann/json via json_compat.h shim)
|
||||||
|
# ═══════════════════════════════════════════════════════════════════════════════
|
||||||
|
add_library(json_compat INTERFACE)
|
||||||
|
target_include_directories(json_compat INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/json")
|
||||||
|
|
||||||
|
# ═══════════════════════════════════════════════════════════════════════════════
|
||||||
|
# 3. Common core library (shared between daemon, Qt, and tests)
|
||||||
|
#
|
||||||
|
# EXCLUDES init.cpp, wallet.cpp (QT_GUI-conditional), noui.cpp (target-specific)
|
||||||
|
# ═══════════════════════════════════════════════════════════════════════════════
|
||||||
|
set(CORE_SOURCES
|
||||||
|
alert.cpp
|
||||||
|
addrman.cpp
|
||||||
|
bootstrap.cpp
|
||||||
|
checkpoints.cpp
|
||||||
|
crypter.cpp
|
||||||
|
db.cpp
|
||||||
|
irc.cpp
|
||||||
|
key.cpp
|
||||||
|
keystore.cpp
|
||||||
|
main.cpp
|
||||||
|
miner.cpp
|
||||||
|
net.cpp
|
||||||
|
net_bootstrap.cpp
|
||||||
|
netbase.cpp
|
||||||
|
protocol.cpp
|
||||||
|
script.cpp
|
||||||
|
sync.cpp
|
||||||
|
util.cpp
|
||||||
|
version.cpp
|
||||||
|
walletdb.cpp
|
||||||
|
kernel.cpp
|
||||||
|
pbkdf2.cpp
|
||||||
|
scrypt.cpp
|
||||||
|
smessage.cpp
|
||||||
|
tor_embed_hooks.cpp
|
||||||
|
rest.cpp
|
||||||
|
trianglesrpc.cpp
|
||||||
|
rpcdump.cpp
|
||||||
|
rpcnet.cpp
|
||||||
|
rpcmining.cpp
|
||||||
|
rpcwallet.cpp
|
||||||
|
rpcblockchain.cpp
|
||||||
|
rpcrawtransaction.cpp
|
||||||
|
rpcsmessage.cpp
|
||||||
|
zmqpublishnotifier.cpp
|
||||||
|
txdb-leveldb.cpp
|
||||||
|
lz4/lz4.c
|
||||||
|
tor/onion_v3.cpp
|
||||||
|
tor/tor_process.cpp
|
||||||
|
tor/tor_embedded.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
# Scrypt assembly — platform-specific
|
||||||
|
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64|amd64")
|
||||||
|
enable_language(ASM)
|
||||||
|
list(APPEND CORE_SOURCES scrypt-x86_64.S)
|
||||||
|
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i[3-6]86|x86")
|
||||||
|
enable_language(ASM)
|
||||||
|
list(APPEND CORE_SOURCES scrypt-x86.S)
|
||||||
|
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64|ARM64")
|
||||||
|
enable_language(ASM)
|
||||||
|
list(APPEND CORE_SOURCES scrypt-arm.S)
|
||||||
|
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "arm|ARM")
|
||||||
|
enable_language(ASM)
|
||||||
|
list(APPEND CORE_SOURCES scrypt-arm.S)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_library(triangles_common OBJECT ${CORE_SOURCES})
|
||||||
|
|
||||||
|
target_include_directories(triangles_common PUBLIC
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/json"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/tor"
|
||||||
|
"${CMAKE_BINARY_DIR}/generated" # for build.h
|
||||||
|
)
|
||||||
|
|
||||||
|
target_compile_definitions(triangles_common PUBLIC HAVE_BUILD_INFO)
|
||||||
|
|
||||||
|
target_link_libraries(triangles_common PUBLIC
|
||||||
|
hash9_crypto
|
||||||
|
json_compat
|
||||||
|
leveldb_bundled
|
||||||
|
OpenSSL::SSL
|
||||||
|
OpenSSL::Crypto
|
||||||
|
Boost::filesystem
|
||||||
|
Boost::program_options
|
||||||
|
Boost::thread
|
||||||
|
Boost::chrono
|
||||||
|
BerkeleyDB::BerkeleyDB
|
||||||
|
Libevent::Libevent
|
||||||
|
ZLIB::ZLIB
|
||||||
|
Threads::Threads
|
||||||
|
)
|
||||||
|
|
||||||
|
# Optional: UPnP
|
||||||
|
if(USE_UPNP)
|
||||||
|
target_compile_definitions(triangles_common PUBLIC USE_UPNP=1 STATICLIB MINIUPNP_STATICLIB)
|
||||||
|
target_link_libraries(triangles_common PUBLIC Miniupnpc::Miniupnpc)
|
||||||
|
if(WIN32)
|
||||||
|
target_link_libraries(triangles_common PUBLIC iphlpapi)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Optional: IPv6
|
||||||
|
if(USE_IPV6)
|
||||||
|
target_compile_definitions(triangles_common PUBLIC USE_IPV6=1)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Optional: ZMQ
|
||||||
|
if(USE_ZMQ)
|
||||||
|
target_compile_definitions(triangles_common PUBLIC ENABLE_ZMQ)
|
||||||
|
target_link_libraries(triangles_common PUBLIC PkgConfig::ZMQ)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Optional: Embedded Tor
|
||||||
|
if(USE_TOR_EMBEDDED)
|
||||||
|
if(TOR_SOURCE_ROOT STREQUAL "")
|
||||||
|
set(TOR_SOURCE_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/tor/tor-src")
|
||||||
|
endif()
|
||||||
|
target_compile_definitions(triangles_common PUBLIC ENABLE_TOR_EMBEDDED)
|
||||||
|
target_include_directories(triangles_common PUBLIC "${TOR_SOURCE_ROOT}/src/feature/api")
|
||||||
|
target_link_directories(triangles_common PUBLIC "${TOR_SOURCE_ROOT}")
|
||||||
|
if(UNIX)
|
||||||
|
target_link_libraries(triangles_common PUBLIC -Wl,--start-group -ltor -Wl,--end-group lzma zstd)
|
||||||
|
else()
|
||||||
|
target_link_libraries(triangles_common PUBLIC tor lzma zstd)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Platform-specific libraries
|
||||||
|
if(WIN32)
|
||||||
|
target_link_libraries(triangles_common PUBLIC
|
||||||
|
ws2_32 shlwapi mswsock ole32 oleaut32 uuid gdi32 crypt32)
|
||||||
|
elseif(APPLE)
|
||||||
|
target_link_libraries(triangles_common PUBLIC
|
||||||
|
"-framework Foundation"
|
||||||
|
"-framework ApplicationServices"
|
||||||
|
"-framework AppKit")
|
||||||
|
else()
|
||||||
|
# Linux
|
||||||
|
target_link_libraries(triangles_common PUBLIC rt dl)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_dependencies(triangles_common generate_build_info build_leveldb)
|
||||||
|
|
||||||
|
# ═══════════════════════════════════════════════════════════════════════════════
|
||||||
|
# 4. Headless daemon (trianglesd)
|
||||||
|
# ═══════════════════════════════════════════════════════════════════════════════
|
||||||
|
if(BUILD_DAEMON)
|
||||||
|
add_executable(trianglesd
|
||||||
|
noui.cpp
|
||||||
|
init.cpp
|
||||||
|
wallet.cpp
|
||||||
|
)
|
||||||
|
# No QT_GUI define — daemon gets the #if !defined(QT_GUI) code paths
|
||||||
|
target_link_libraries(trianglesd PRIVATE triangles_common)
|
||||||
|
|
||||||
|
if(WIN32)
|
||||||
|
set_target_properties(trianglesd PROPERTIES SUFFIX ".exe")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# ═══════════════════════════════════════════════════════════════════════════════
|
||||||
|
# 5. Qt5 GUI wallet (triangles-qt)
|
||||||
|
# ═══════════════════════════════════════════════════════════════════════════════
|
||||||
|
if(BUILD_QT)
|
||||||
|
set(CMAKE_AUTOMOC ON)
|
||||||
|
set(CMAKE_AUTOUIC ON)
|
||||||
|
set(CMAKE_AUTORCC ON)
|
||||||
|
|
||||||
|
set(CMAKE_AUTOUIC_SEARCH_PATHS
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/qt/forms"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/qt/plugins/mrichtexteditor"
|
||||||
|
)
|
||||||
|
|
||||||
|
set(QT_SOURCES
|
||||||
|
qt/triangles.cpp
|
||||||
|
qt/trianglesgui.cpp
|
||||||
|
qt/transactiontablemodel.cpp
|
||||||
|
qt/addresstablemodel.cpp
|
||||||
|
qt/optionsdialog.cpp
|
||||||
|
qt/sendcoinsdialog.cpp
|
||||||
|
qt/coincontroldialog.cpp
|
||||||
|
qt/coincontroltreewidget.cpp
|
||||||
|
qt/addressbookpage.cpp
|
||||||
|
qt/aboutdialog.cpp
|
||||||
|
qt/introdialog.cpp
|
||||||
|
qt/editaddressdialog.cpp
|
||||||
|
qt/trianglesaddressvalidator.cpp
|
||||||
|
qt/clientmodel.cpp
|
||||||
|
qt/guiutil.cpp
|
||||||
|
qt/transactionrecord.cpp
|
||||||
|
qt/optionsmodel.cpp
|
||||||
|
qt/monitoreddatamapper.cpp
|
||||||
|
qt/transactiondesc.cpp
|
||||||
|
qt/transactiondescdialog.cpp
|
||||||
|
qt/trianglesstrings.cpp
|
||||||
|
qt/trianglesamountfield.cpp
|
||||||
|
qt/transactionfilterproxy.cpp
|
||||||
|
qt/transactionview.cpp
|
||||||
|
qt/walletmodel.cpp
|
||||||
|
qt/overviewpage.cpp
|
||||||
|
qt/csvmodelwriter.cpp
|
||||||
|
qt/sendcoinsentry.cpp
|
||||||
|
qt/qvalidatedlineedit.cpp
|
||||||
|
qt/trianglesunits.cpp
|
||||||
|
qt/qvaluecombobox.cpp
|
||||||
|
qt/askpassphrasedialog.cpp
|
||||||
|
qt/notificator.cpp
|
||||||
|
qt/qtipcserver.cpp
|
||||||
|
qt/rpcconsole.cpp
|
||||||
|
qt/messagepage.cpp
|
||||||
|
qt/dialog_move_handler.cpp
|
||||||
|
qt/signmessagepage.cpp
|
||||||
|
qt/verifymessagepage.cpp
|
||||||
|
qt/messagemodel.cpp
|
||||||
|
qt/sendmessagesdialog.cpp
|
||||||
|
qt/sendmessagesentry.cpp
|
||||||
|
qt/qvalidatedtextedit.cpp
|
||||||
|
qt/plugins/mrichtexteditor/mrichtextedit.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
set(QT_RESOURCES qt/triangles.qrc)
|
||||||
|
|
||||||
|
set(QT_FORMS
|
||||||
|
qt/forms/coincontroldialog.ui
|
||||||
|
qt/forms/sendcoinsdialog.ui
|
||||||
|
qt/forms/addressbookpage.ui
|
||||||
|
qt/forms/aboutdialog.ui
|
||||||
|
qt/forms/editaddressdialog.ui
|
||||||
|
qt/forms/transactiondescdialog.ui
|
||||||
|
qt/forms/overviewpage.ui
|
||||||
|
qt/forms/sendcoinsentry.ui
|
||||||
|
qt/forms/askpassphrasedialog.ui
|
||||||
|
qt/forms/rpcconsole.ui
|
||||||
|
qt/forms/optionsdialog.ui
|
||||||
|
qt/forms/messagepage.ui
|
||||||
|
qt/forms/sendmessagesentry.ui
|
||||||
|
qt/forms/sendmessagesdialog.ui
|
||||||
|
qt/plugins/mrichtexteditor/mrichtextedit.ui
|
||||||
|
qt/forms/mainwindow.ui
|
||||||
|
qt/forms/signmessagepage.ui
|
||||||
|
qt/forms/verifymessagepage.ui
|
||||||
|
qt/forms/transactionspage.ui
|
||||||
|
)
|
||||||
|
|
||||||
|
# Optional QR code dialog
|
||||||
|
if(USE_QRCODE)
|
||||||
|
list(APPEND QT_SOURCES qt/qrcodedialog.cpp)
|
||||||
|
list(APPEND QT_FORMS qt/forms/qrcodedialog.ui)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# macOS Objective-C++ sources
|
||||||
|
if(APPLE)
|
||||||
|
list(APPEND QT_SOURCES
|
||||||
|
qt/macdockiconhandler.mm
|
||||||
|
qt/macnotificationhandler.mm
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_executable(triangles-qt WIN32 MACOSX_BUNDLE
|
||||||
|
${QT_SOURCES}
|
||||||
|
${QT_RESOURCES}
|
||||||
|
${QT_FORMS}
|
||||||
|
# Per-target: compiled with QT_GUI define
|
||||||
|
init.cpp
|
||||||
|
wallet.cpp
|
||||||
|
noui.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
target_compile_definitions(triangles-qt PRIVATE
|
||||||
|
QT_GUI
|
||||||
|
QT_DISABLE_DEPRECATED_BEFORE=0
|
||||||
|
)
|
||||||
|
|
||||||
|
target_include_directories(triangles-qt PRIVATE
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/qt"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/qt/plugins/mrichtexteditor"
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(triangles-qt PRIVATE
|
||||||
|
triangles_common
|
||||||
|
Qt5::Core
|
||||||
|
Qt5::Gui
|
||||||
|
Qt5::Widgets
|
||||||
|
)
|
||||||
|
|
||||||
|
# Optional: D-Bus notifications (Linux)
|
||||||
|
if(USE_DBUS)
|
||||||
|
target_compile_definitions(triangles-qt PRIVATE USE_DBUS)
|
||||||
|
target_link_libraries(triangles-qt PRIVATE Qt5::DBus)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Optional: QR code
|
||||||
|
if(USE_QRCODE)
|
||||||
|
target_compile_definitions(triangles-qt PRIVATE USE_QRCODE)
|
||||||
|
target_link_libraries(triangles-qt PRIVATE QRencode::QRencode)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Windows resource file (.rc with version info and icon)
|
||||||
|
if(WIN32)
|
||||||
|
target_sources(triangles-qt PRIVATE qt/res/triangles-qt.rc)
|
||||||
|
# Ensure RC compiler can find clientversion.h
|
||||||
|
if(MINGW)
|
||||||
|
set_source_files_properties(qt/res/triangles-qt.rc PROPERTIES
|
||||||
|
COMPILE_FLAGS "-I${CMAKE_CURRENT_SOURCE_DIR}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# macOS bundle settings
|
||||||
|
if(APPLE)
|
||||||
|
set_target_properties(triangles-qt PROPERTIES
|
||||||
|
OUTPUT_NAME "Triangles-Qt"
|
||||||
|
MACOSX_BUNDLE_ICON_FILE triangles.icns
|
||||||
|
MACOSX_BUNDLE_BUNDLE_NAME "Triangles-Qt"
|
||||||
|
MACOSX_BUNDLE_BUNDLE_VERSION "${PROJECT_VERSION}"
|
||||||
|
MACOSX_BUNDLE_SHORT_VERSION_STRING "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}"
|
||||||
|
)
|
||||||
|
set_source_files_properties(
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/qt/res/icons/triangles.icns"
|
||||||
|
PROPERTIES MACOSX_PACKAGE_LOCATION "Resources"
|
||||||
|
)
|
||||||
|
target_sources(triangles-qt PRIVATE qt/res/icons/triangles.icns)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Translations (optional — requires LinguistTools)
|
||||||
|
if(TARGET Qt5::lrelease)
|
||||||
|
file(GLOB TS_FILES "${CMAKE_CURRENT_SOURCE_DIR}/qt/locale/triangles_*.ts")
|
||||||
|
if(TS_FILES)
|
||||||
|
set_source_files_properties(${TS_FILES} PROPERTIES
|
||||||
|
OUTPUT_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}/qt/locale"
|
||||||
|
)
|
||||||
|
qt5_add_translation(QM_FILES ${TS_FILES})
|
||||||
|
target_sources(triangles-qt PRIVATE ${QM_FILES})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# ═══════════════════════════════════════════════════════════════════════════════
|
||||||
|
# 6. Unit tests (test_triangles)
|
||||||
|
# ═══════════════════════════════════════════════════════════════════════════════
|
||||||
|
if(BUILD_TESTS)
|
||||||
|
enable_testing()
|
||||||
|
|
||||||
|
file(GLOB TEST_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/test/*.cpp")
|
||||||
|
# Exclude miner_tests.cpp (never ported from Bitcoin)
|
||||||
|
list(FILTER TEST_SOURCES EXCLUDE REGEX "miner_tests\\.cpp$")
|
||||||
|
|
||||||
|
add_executable(test_triangles
|
||||||
|
${TEST_SOURCES}
|
||||||
|
# Per-target: wallet without QT_GUI, noui for noui_connect()
|
||||||
|
wallet.cpp
|
||||||
|
noui.cpp
|
||||||
|
)
|
||||||
|
# No init.cpp — test_triangles.cpp provides its own StartShutdown() stub
|
||||||
|
|
||||||
|
target_compile_definitions(test_triangles PRIVATE
|
||||||
|
"TEST_DATA_DIR=\"${CMAKE_CURRENT_SOURCE_DIR}/test/data\""
|
||||||
|
)
|
||||||
|
|
||||||
|
target_include_directories(test_triangles PRIVATE
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/test"
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(test_triangles PRIVATE
|
||||||
|
triangles_common
|
||||||
|
Boost::unit_test_framework
|
||||||
|
)
|
||||||
|
|
||||||
|
add_test(NAME triangles_unit_tests COMMAND test_triangles --log_level=test_suite)
|
||||||
|
endif()
|
||||||
@@ -0,0 +1,148 @@
|
|||||||
|
set(LEVELDB_CORE_SOURCES
|
||||||
|
db/builder.cc
|
||||||
|
db/c.cc
|
||||||
|
db/db_impl.cc
|
||||||
|
db/db_iter.cc
|
||||||
|
db/dbformat.cc
|
||||||
|
db/dumpfile.cc
|
||||||
|
db/filename.cc
|
||||||
|
db/log_reader.cc
|
||||||
|
db/log_writer.cc
|
||||||
|
db/memtable.cc
|
||||||
|
db/repair.cc
|
||||||
|
db/table_cache.cc
|
||||||
|
db/version_edit.cc
|
||||||
|
db/version_set.cc
|
||||||
|
db/write_batch.cc
|
||||||
|
table/block.cc
|
||||||
|
table/block_builder.cc
|
||||||
|
table/filter_block.cc
|
||||||
|
table/format.cc
|
||||||
|
table/iterator.cc
|
||||||
|
table/merger.cc
|
||||||
|
table/table.cc
|
||||||
|
table/table_builder.cc
|
||||||
|
table/two_level_iterator.cc
|
||||||
|
util/arena.cc
|
||||||
|
util/bloom.cc
|
||||||
|
util/cache.cc
|
||||||
|
util/coding.cc
|
||||||
|
util/comparator.cc
|
||||||
|
util/crc32c.cc
|
||||||
|
util/env.cc
|
||||||
|
util/filter_policy.cc
|
||||||
|
util/hash.cc
|
||||||
|
util/histogram.cc
|
||||||
|
util/logging.cc
|
||||||
|
util/options.cc
|
||||||
|
util/status.cc
|
||||||
|
)
|
||||||
|
|
||||||
|
if(WIN32)
|
||||||
|
list(APPEND LEVELDB_CORE_SOURCES util/env_windows.cc)
|
||||||
|
else()
|
||||||
|
list(APPEND LEVELDB_CORE_SOURCES util/env_posix.cc)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_library(leveldb_lib STATIC ${LEVELDB_CORE_SOURCES})
|
||||||
|
|
||||||
|
target_compile_features(leveldb_lib PUBLIC cxx_std_11)
|
||||||
|
|
||||||
|
target_include_directories(leveldb_lib
|
||||||
|
PUBLIC
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/include"
|
||||||
|
PRIVATE
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}"
|
||||||
|
)
|
||||||
|
|
||||||
|
target_compile_definitions(leveldb_lib
|
||||||
|
PRIVATE
|
||||||
|
HAVE_CRC32C=0
|
||||||
|
HAVE_SNAPPY=0
|
||||||
|
)
|
||||||
|
|
||||||
|
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
|
||||||
|
target_compile_options(leveldb_lib PRIVATE -fno-builtin-memcmp)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(WIN32)
|
||||||
|
target_compile_definitions(leveldb_lib PRIVATE
|
||||||
|
_REENTRANT
|
||||||
|
OS_WINDOWS
|
||||||
|
LEVELDB_PLATFORM_WINDOWS
|
||||||
|
WINVER=0x0500
|
||||||
|
__USE_MINGW_ANSI_STDIO=1
|
||||||
|
)
|
||||||
|
target_link_libraries(leveldb_lib PUBLIC shlwapi)
|
||||||
|
elseif(APPLE)
|
||||||
|
target_compile_definitions(leveldb_lib PRIVATE
|
||||||
|
OS_MACOSX
|
||||||
|
LEVELDB_PLATFORM_POSIX
|
||||||
|
)
|
||||||
|
target_link_libraries(leveldb_lib PUBLIC Threads::Threads)
|
||||||
|
else()
|
||||||
|
target_compile_definitions(leveldb_lib PRIVATE
|
||||||
|
_REENTRANT
|
||||||
|
OS_LINUX
|
||||||
|
LEVELDB_PLATFORM_POSIX
|
||||||
|
)
|
||||||
|
target_link_libraries(leveldb_lib PUBLIC Threads::Threads)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_library(leveldb_memenv STATIC helpers/memenv/memenv.cc)
|
||||||
|
|
||||||
|
target_compile_features(leveldb_memenv PUBLIC cxx_std_11)
|
||||||
|
|
||||||
|
target_include_directories(leveldb_memenv
|
||||||
|
PUBLIC
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/include"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/helpers"
|
||||||
|
PRIVATE
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}"
|
||||||
|
)
|
||||||
|
|
||||||
|
target_compile_definitions(leveldb_memenv
|
||||||
|
PRIVATE
|
||||||
|
HAVE_CRC32C=0
|
||||||
|
HAVE_SNAPPY=0
|
||||||
|
)
|
||||||
|
|
||||||
|
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
|
||||||
|
target_compile_options(leveldb_memenv PRIVATE -fno-builtin-memcmp)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(WIN32)
|
||||||
|
target_compile_definitions(leveldb_memenv PRIVATE
|
||||||
|
_REENTRANT
|
||||||
|
OS_WINDOWS
|
||||||
|
LEVELDB_PLATFORM_WINDOWS
|
||||||
|
WINVER=0x0500
|
||||||
|
__USE_MINGW_ANSI_STDIO=1
|
||||||
|
)
|
||||||
|
elseif(APPLE)
|
||||||
|
target_compile_definitions(leveldb_memenv PRIVATE
|
||||||
|
OS_MACOSX
|
||||||
|
LEVELDB_PLATFORM_POSIX
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
target_compile_definitions(leveldb_memenv PRIVATE
|
||||||
|
_REENTRANT
|
||||||
|
OS_LINUX
|
||||||
|
LEVELDB_PLATFORM_POSIX
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
target_link_libraries(leveldb_memenv PUBLIC leveldb_lib)
|
||||||
|
|
||||||
|
add_library(leveldb_bundled INTERFACE)
|
||||||
|
|
||||||
|
target_link_libraries(leveldb_bundled INTERFACE
|
||||||
|
leveldb_lib
|
||||||
|
leveldb_memenv
|
||||||
|
)
|
||||||
|
|
||||||
|
target_include_directories(leveldb_bundled INTERFACE
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/include"
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/helpers"
|
||||||
|
)
|
||||||
@@ -1,261 +0,0 @@
|
|||||||
# Copyright (c) 2009-2010 Satoshi Nakamoto
|
|
||||||
# Distributed under the MIT/X11 software license, see the accompanying
|
|
||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
||||||
#
|
|
||||||
# Windows (MSYS2 MinGW64) makefile for trianglesd headless daemon
|
|
||||||
|
|
||||||
USE_UPNP:=1
|
|
||||||
USE_IPV6:=1
|
|
||||||
|
|
||||||
CXX=g++
|
|
||||||
CC=gcc
|
|
||||||
LINK=$(CXX)
|
|
||||||
|
|
||||||
DEPSDIR=C:/msys64/mingw64
|
|
||||||
|
|
||||||
DEFS=-DBOOST_SPIRIT_THREADSAFE -DBOOST_THREAD_USE_LIB -DBOOST_BIND_GLOBAL_PLACEHOLDERS -DWIN32 -D__NO_SYSTEM_INCLUDES
|
|
||||||
|
|
||||||
DEFS += $(addprefix -I,$(CURDIR) $(CURDIR)/tor $(CURDIR)/obj \
|
|
||||||
$(DEPSDIR)/include)
|
|
||||||
|
|
||||||
LIBS = $(addprefix -L,$(DEPSDIR)/lib)
|
|
||||||
|
|
||||||
# libevent
|
|
||||||
LIBS += -levent
|
|
||||||
|
|
||||||
LMODE = dynamic
|
|
||||||
LMODE2 = dynamic
|
|
||||||
ifdef STATIC
|
|
||||||
LMODE = static
|
|
||||||
ifeq (${STATIC}, all)
|
|
||||||
LMODE2 = static
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
LIBS += \
|
|
||||||
-lboost_filesystem-mt \
|
|
||||||
-lboost_program_options-mt \
|
|
||||||
-lboost_thread-mt \
|
|
||||||
-lboost_chrono-mt \
|
|
||||||
-ldb_cxx \
|
|
||||||
-lssl \
|
|
||||||
-lcrypto \
|
|
||||||
-levent
|
|
||||||
|
|
||||||
ifndef USE_UPNP
|
|
||||||
override USE_UPNP = -
|
|
||||||
endif
|
|
||||||
ifneq (${USE_UPNP}, -)
|
|
||||||
LIBS += -lminiupnpc -liphlpapi
|
|
||||||
DEFS += -DUSE_UPNP=$(USE_UPNP) -DSTATICLIB -DMINIUPNP_STATICLIB
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq (${USE_IPV6}, -)
|
|
||||||
DEFS += -DUSE_IPV6=$(USE_IPV6)
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Windows-specific libraries
|
|
||||||
LIBS += \
|
|
||||||
-lws2_32 \
|
|
||||||
-lshlwapi \
|
|
||||||
-lmswsock \
|
|
||||||
-lole32 \
|
|
||||||
-loleaut32 \
|
|
||||||
-luuid \
|
|
||||||
-lgdi32 \
|
|
||||||
-lcrypt32 \
|
|
||||||
-lz \
|
|
||||||
-lpthread
|
|
||||||
|
|
||||||
# Hardening
|
|
||||||
HARDENING=-fno-stack-protector
|
|
||||||
HARDENING+=-fstack-protector-all -Wstack-protector
|
|
||||||
HARDENING+=-D_FORTIFY_SOURCE=2
|
|
||||||
|
|
||||||
DEBUGFLAGS=-g
|
|
||||||
|
|
||||||
xCXXFLAGS=-O2 -std=c++17 -pthread -Wall -Wextra -Wno-ignored-qualifiers -Wformat -Wformat-security -Wno-unused-parameter \
|
|
||||||
-Wno-deprecated-declarations -Wno-reserved-user-defined-literal \
|
|
||||||
-Wa,-mbig-obj \
|
|
||||||
$(DEBUGFLAGS) $(DEFS) $(HARDENING) $(CXXFLAGS)
|
|
||||||
|
|
||||||
xLDFLAGS=-static -static-libgcc -static-libstdc++ $(LDFLAGS)
|
|
||||||
|
|
||||||
OBJS= \
|
|
||||||
obj/fugue.o \
|
|
||||||
obj/hamsi.o \
|
|
||||||
obj/hamsi_helper.o \
|
|
||||||
obj/groestl.o \
|
|
||||||
obj/blake.o \
|
|
||||||
obj/bmw.o \
|
|
||||||
obj/skein.o \
|
|
||||||
obj/keccak.o \
|
|
||||||
obj/shavite.o \
|
|
||||||
obj/jh.o \
|
|
||||||
obj/luffa.o \
|
|
||||||
obj/cubehash.o \
|
|
||||||
obj/echo.o \
|
|
||||||
obj/simd.o \
|
|
||||||
obj/aes_helper.o \
|
|
||||||
obj/alert.o \
|
|
||||||
obj/version.o \
|
|
||||||
obj/checkpoints.o \
|
|
||||||
obj/netbase.o \
|
|
||||||
obj/addrman.o \
|
|
||||||
obj/crypter.o \
|
|
||||||
obj/key.o \
|
|
||||||
obj/db.o \
|
|
||||||
obj/init.o \
|
|
||||||
obj/irc.o \
|
|
||||||
obj/keystore.o \
|
|
||||||
obj/miner.o \
|
|
||||||
obj/main.o \
|
|
||||||
obj/net.o \
|
|
||||||
obj/bootstrap.o \
|
|
||||||
obj/net_bootstrap.o \
|
|
||||||
obj/protocol.o \
|
|
||||||
obj/trianglesrpc.o \
|
|
||||||
obj/rest.o \
|
|
||||||
obj/rpcdump.o \
|
|
||||||
obj/rpcnet.o \
|
|
||||||
obj/rpcmining.o \
|
|
||||||
obj/rpcwallet.o \
|
|
||||||
obj/rpcblockchain.o \
|
|
||||||
obj/rpcrawtransaction.o \
|
|
||||||
obj/rpcsmessage.o \
|
|
||||||
obj/script.o \
|
|
||||||
obj/sync.o \
|
|
||||||
obj/util.o \
|
|
||||||
obj/wallet.o \
|
|
||||||
obj/walletdb.o \
|
|
||||||
obj/noui.o \
|
|
||||||
obj/kernel.o \
|
|
||||||
obj/pbkdf2.o \
|
|
||||||
obj/scrypt.o \
|
|
||||||
obj/scrypt-arm.o \
|
|
||||||
obj/scrypt-x86.o \
|
|
||||||
obj/scrypt-x86_64.o \
|
|
||||||
obj/smessage.o \
|
|
||||||
obj/lz4.o \
|
|
||||||
obj/onion_v3.o \
|
|
||||||
obj/tor_process.o \
|
|
||||||
obj/tor_embed_hooks.o \
|
|
||||||
obj/tor_embedded.o
|
|
||||||
|
|
||||||
all: trianglesd.exe
|
|
||||||
|
|
||||||
LIBS += $(CURDIR)/leveldb/libleveldb.a $(CURDIR)/leveldb/libmemenv.a
|
|
||||||
DEFS += $(addprefix -I,$(CURDIR)/leveldb/include)
|
|
||||||
DEFS += $(addprefix -I,$(CURDIR)/leveldb/helpers)
|
|
||||||
OBJS += obj/txdb-leveldb.o
|
|
||||||
|
|
||||||
leveldb/libleveldb.a:
|
|
||||||
@echo "Building LevelDB ..."; cd leveldb; CC=gcc CXX=g++ TARGET_OS=OS_WINDOWS_CROSSCOMPILE $(MAKE) OPT="-fno-keep-inline-dllexport -march=nocona -msahf -mtune=generic -Wa,-mbig-obj -O2" libleveldb.a libmemenv.a; cd ..;
|
|
||||||
obj/txdb-leveldb.o: leveldb/libleveldb.a
|
|
||||||
|
|
||||||
# auto-generated dependencies:
|
|
||||||
-include obj/*.P
|
|
||||||
|
|
||||||
obj/build.h: FORCE
|
|
||||||
/bin/sh ../share/genbuild.sh obj/build.h
|
|
||||||
version.cpp: obj/build.h
|
|
||||||
DEFS += -DHAVE_BUILD_INFO
|
|
||||||
|
|
||||||
obj/scrypt-x86.o: scrypt-x86.S
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -MMD -o $@ $<
|
|
||||||
|
|
||||||
obj/scrypt-x86_64.o: scrypt-x86_64.S
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -MMD -o $@ $<
|
|
||||||
|
|
||||||
obj/scrypt-arm.o: scrypt-arm.S
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -MMD -o $@ $<
|
|
||||||
|
|
||||||
obj/%.o: %.cpp
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
|
|
||||||
@cp $(@:%.o=%.d) $(@:%.o=%.P); \
|
|
||||||
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
|
|
||||||
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
|
|
||||||
rm -f $(@:%.o=%.d)
|
|
||||||
|
|
||||||
obj/%.o: %.c
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -fpermissive -MMD -MF $(@:%.o=%.d) -o $@ $<
|
|
||||||
@cp $(@:%.o=%.d) $(@:%.o=%.P); \
|
|
||||||
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
|
|
||||||
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
|
|
||||||
rm -f $(@:%.o=%.d)
|
|
||||||
|
|
||||||
obj/%.o: tor/%.c
|
|
||||||
$(CC) -c $(xCXXFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
|
|
||||||
@cp $(@:%.o=%.d) $(@:%.o=%.P); \
|
|
||||||
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
|
|
||||||
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
|
|
||||||
rm -f $(@:%.o=%.d)
|
|
||||||
|
|
||||||
obj/anonymize.o: tor/anonymize.cpp
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
|
|
||||||
@cp $(@:%.o=%.d) $(@:%.o=%.P); \
|
|
||||||
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
|
|
||||||
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
|
|
||||||
rm -f $(@:%.o=%.d)
|
|
||||||
|
|
||||||
obj/onion_v3.o: tor/onion_v3.cpp
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
|
|
||||||
@cp $(@:%.o=%.d) $(@:%.o=%.P); \
|
|
||||||
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
|
|
||||||
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
|
|
||||||
rm -f $(@:%.o=%.d)
|
|
||||||
|
|
||||||
obj/tor_process.o: tor/tor_process.cpp
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
|
|
||||||
@cp $(@:%.o=%.d) $(@:%.o=%.P); \
|
|
||||||
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
|
|
||||||
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
|
|
||||||
rm -f $(@:%.o=%.d)
|
|
||||||
|
|
||||||
obj/lz4.o: lz4/lz4.c
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -fpermissive -MMD -MF $(@:%.o=%.d) -o $@ $<
|
|
||||||
@cp $(@:%.o=%.d) $(@:%.o=%.P); \
|
|
||||||
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
|
|
||||||
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
|
|
||||||
rm -f $(@:%.o=%.d)
|
|
||||||
|
|
||||||
obj/tor_embed_hooks.o: tor_embed_hooks.cpp
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
|
|
||||||
@cp $(@:%.o=%.d) $(@:%.o=%.P); \
|
|
||||||
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
|
|
||||||
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
|
|
||||||
rm -f $(@:%.o=%.d)
|
|
||||||
|
|
||||||
obj/tor_embedded.o: tor/tor_embedded.cpp
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
|
|
||||||
@cp $(@:%.o=%.d) $(@:%.o=%.P); \
|
|
||||||
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
|
|
||||||
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
|
|
||||||
rm -f $(@:%.o=%.d)
|
|
||||||
|
|
||||||
obj/bootstrap.o: bootstrap.cpp
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
|
|
||||||
@cp $(@:%.o=%.d) $(@:%.o=%.P); \
|
|
||||||
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
|
|
||||||
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
|
|
||||||
rm -f $(@:%.o=%.d)
|
|
||||||
|
|
||||||
obj/net_bootstrap.o: net_bootstrap.cpp
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
|
|
||||||
@cp $(@:%.o=%.d) $(@:%.o=%.P); \
|
|
||||||
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
|
|
||||||
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
|
|
||||||
rm -f $(@:%.o=%.d)
|
|
||||||
|
|
||||||
trianglesd.exe: $(OBJS:obj/%=obj/%) obj/anonymize.o
|
|
||||||
$(LINK) $(xCXXFLAGS) -o $@ $^ $(xLDFLAGS) $(LIBS)
|
|
||||||
|
|
||||||
clean:
|
|
||||||
-rm -f trianglesd.exe
|
|
||||||
-rm -f obj/*.o
|
|
||||||
-rm -f obj/*.P
|
|
||||||
-rm -f obj/build.h
|
|
||||||
-rm -f leveldb/libleveldb.a
|
|
||||||
-rm -f leveldb/libmemenv.a
|
|
||||||
|
|
||||||
FORCE:
|
|
||||||
@@ -1,301 +0,0 @@
|
|||||||
# -*- mode: Makefile; -*-
|
|
||||||
# Copyright (c) 2011 Bitcoin Developers
|
|
||||||
# Distributed under the MIT/X11 software license, see the accompanying
|
|
||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
||||||
|
|
||||||
# Mac OS X makefile for triangles
|
|
||||||
# Originally by Laszlo Hanyecz (solar@heliacal.net)
|
|
||||||
|
|
||||||
CXX=llvm-g++
|
|
||||||
CC=llvm-gcc
|
|
||||||
DEPSDIR=/opt/local
|
|
||||||
|
|
||||||
INCLUDEPATHS= \
|
|
||||||
-I"$(CURDIR)" \
|
|
||||||
-I"$(CURDIR)/obj" \
|
|
||||||
-I"$(CURDIR)/tor" \
|
|
||||||
-I"$(DEPSDIR)/include" \
|
|
||||||
-I"$(DEPSDIR)/include/db48" \
|
|
||||||
-I"$(DEPSDIR)/include/boost"
|
|
||||||
|
|
||||||
LIBPATHS= \
|
|
||||||
-L"$(DEPSDIR)/lib" \
|
|
||||||
-L"$(DEPSDIR)/lib/db48"
|
|
||||||
|
|
||||||
USE_UPNP:=1
|
|
||||||
USE_IPV6:=1
|
|
||||||
|
|
||||||
LIBS= -dead_strip
|
|
||||||
|
|
||||||
TESTDEFS = -DTEST_DATA_DIR=$(abspath test/data)
|
|
||||||
|
|
||||||
ifdef STATIC
|
|
||||||
# Build STATIC if you are redistributing the bitcoind binary
|
|
||||||
TESTLIBS += \
|
|
||||||
$(DEPSDIR)/lib/libboost_unit_test_framework-mt.a
|
|
||||||
|
|
||||||
LIBS += \
|
|
||||||
$(DEPSDIR)/lib/db48/libdb_cxx-4.8.a \
|
|
||||||
$(DEPSDIR)/lib/libboost_system-mt.a \
|
|
||||||
$(DEPSDIR)/lib/libboost_filesystem-mt.a \
|
|
||||||
$(DEPSDIR)/lib/libboost_program_options-mt.a \
|
|
||||||
$(DEPSDIR)/lib/libboost_thread-mt.a \
|
|
||||||
$(DEPSDIR)/lib/libssl.a \
|
|
||||||
$(DEPSDIR)/lib/libcrypto.a \
|
|
||||||
-lz
|
|
||||||
else
|
|
||||||
TESTLIBS += \
|
|
||||||
-lboost_unit_test_framework-mt
|
|
||||||
LIBS += \
|
|
||||||
-ldb_cxx-4.8 \
|
|
||||||
-lboost_system-mt \
|
|
||||||
-lboost_filesystem-mt \
|
|
||||||
-lboost_program_options-mt \
|
|
||||||
-lboost_thread-mt \
|
|
||||||
-lssl \
|
|
||||||
-lcrypto \
|
|
||||||
-lz \
|
|
||||||
-levent
|
|
||||||
TESTDEFS += -DBOOST_TEST_DYN_LINK
|
|
||||||
endif
|
|
||||||
|
|
||||||
DEFS=-DMAC_OSX -DMSG_NOSIGNAL=0 -DBOOST_SPIRIT_THREADSAFE
|
|
||||||
|
|
||||||
ifdef RELEASE
|
|
||||||
# Compile for maximum compatibility and smallest size.
|
|
||||||
# This requires that dependencies are compiled
|
|
||||||
# the same way.
|
|
||||||
CFLAGS = -mmacosx-version-min=10.5 -arch x86_64 -O3 -msse2
|
|
||||||
else
|
|
||||||
CFLAGS = -g -msse2
|
|
||||||
endif
|
|
||||||
|
|
||||||
# triangles doesn't work because we don't support big-endian
|
|
||||||
CFLAGS += -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter \
|
|
||||||
$(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS)
|
|
||||||
|
|
||||||
OBJS= \
|
|
||||||
obj/address.o \
|
|
||||||
obj/addressmap.o \
|
|
||||||
obj/aes.o \
|
|
||||||
obj/backtrace.o \
|
|
||||||
obj/buffers.o \
|
|
||||||
obj/channel.o \
|
|
||||||
obj/channeltls.o \
|
|
||||||
obj/circpathbias.o \
|
|
||||||
obj/circuitbuild.o \
|
|
||||||
obj/circuitlist.o \
|
|
||||||
obj/circuitmux.o \
|
|
||||||
obj/circuitmux_ewma.o \
|
|
||||||
obj/circuitstats.o \
|
|
||||||
obj/circuituse.o \
|
|
||||||
obj/command.o \
|
|
||||||
obj/compat.o \
|
|
||||||
obj/compat_libevent.o \
|
|
||||||
obj/config.o \
|
|
||||||
obj/config_codedigest.o \
|
|
||||||
obj/confparse.o \
|
|
||||||
obj/connection.o \
|
|
||||||
obj/connection_edge.o \
|
|
||||||
obj/connection_or.o \
|
|
||||||
obj/container.o \
|
|
||||||
obj/control.o \
|
|
||||||
obj/cpuworker.o \
|
|
||||||
obj/crypto.o \
|
|
||||||
obj/crypto_curve25519.o \
|
|
||||||
obj/crypto_format.o \
|
|
||||||
obj/curve25519-donna.o \
|
|
||||||
obj/di_ops.o \
|
|
||||||
obj/directory.o \
|
|
||||||
obj/dirserv.o \
|
|
||||||
obj/dirvote.o \
|
|
||||||
obj/dns.o \
|
|
||||||
obj/dnsserv.o \
|
|
||||||
obj/entrynodes.o \
|
|
||||||
obj/ext_orport.o \
|
|
||||||
obj/fp_pair.o \
|
|
||||||
obj/geoip.o \
|
|
||||||
obj/hibernate.o \
|
|
||||||
obj/log.o \
|
|
||||||
obj/memarea.o \
|
|
||||||
obj/mempool.o \
|
|
||||||
obj/microdesc.o \
|
|
||||||
obj/networkstatus.o \
|
|
||||||
obj/nodelist.o \
|
|
||||||
obj/onion.o \
|
|
||||||
obj/onion_fast.o \
|
|
||||||
obj/onion_main.o \
|
|
||||||
obj/onion_ntor.o \
|
|
||||||
obj/onion_tap.o \
|
|
||||||
obj/policies.o \
|
|
||||||
obj/procmon.o \
|
|
||||||
obj/reasons.o \
|
|
||||||
obj/relay.o \
|
|
||||||
obj/rendclient.o \
|
|
||||||
obj/rendcommon.o \
|
|
||||||
obj/rendmid.o \
|
|
||||||
obj/rendservice.o \
|
|
||||||
obj/rephist.o \
|
|
||||||
obj/replaycache.o \
|
|
||||||
obj/router.o \
|
|
||||||
obj/routerlist.o \
|
|
||||||
obj/routerparse.o \
|
|
||||||
obj/routerset.o \
|
|
||||||
obj/sandbox.o \
|
|
||||||
obj/statefile.o \
|
|
||||||
obj/status.o \
|
|
||||||
obj/tor_util.o \
|
|
||||||
obj/torgzip.o \
|
|
||||||
obj/tortls.o \
|
|
||||||
obj/transports.o \
|
|
||||||
obj/util_codedigest.o \
|
|
||||||
obj/fugue.o \
|
|
||||||
obj/hamsi.o \
|
|
||||||
obj/groestl.o \
|
|
||||||
obj/blake.o \
|
|
||||||
obj/bmw.o \
|
|
||||||
obj/skein.o \
|
|
||||||
obj/keccak.o \
|
|
||||||
obj/shavite.o \
|
|
||||||
obj/jh.o \
|
|
||||||
obj/luffa.o \
|
|
||||||
obj/cubehash.o \
|
|
||||||
obj/echo.o \
|
|
||||||
obj/simd.o \
|
|
||||||
obj/alert.o \
|
|
||||||
obj/version.o \
|
|
||||||
obj/checkpoints.o \
|
|
||||||
obj/netbase.o \
|
|
||||||
obj/addrman.o \
|
|
||||||
obj/crypter.o \
|
|
||||||
obj/key.o \
|
|
||||||
obj/db.o \
|
|
||||||
obj/init.o \
|
|
||||||
obj/irc.o \
|
|
||||||
obj/keystore.o \
|
|
||||||
obj/miner.o \
|
|
||||||
obj/main.o \
|
|
||||||
obj/net.o \
|
|
||||||
obj/protocol.o \
|
|
||||||
obj/trianglesrpc.o \
|
|
||||||
obj/rpcdump.o \
|
|
||||||
obj/rpcnet.o \
|
|
||||||
obj/rpcmining.o \
|
|
||||||
obj/rpcwallet.o \
|
|
||||||
obj/rpcblockchain.o \
|
|
||||||
obj/rpcrawtransaction.o \
|
|
||||||
obj/rpcsmessage.o \
|
|
||||||
obj/script.o \
|
|
||||||
obj/sync.o \
|
|
||||||
obj/util.o \
|
|
||||||
obj/wallet.o \
|
|
||||||
obj/walletdb.o \
|
|
||||||
obj/noui.o \
|
|
||||||
obj/kernel.o \
|
|
||||||
obj/pbkdf2.o \
|
|
||||||
obj/scrypt.o \
|
|
||||||
obj/scrypt-arm.o \
|
|
||||||
obj/scrypt-x86.o \
|
|
||||||
obj/scrypt-x86_64.o \
|
|
||||||
obj/smessage.o
|
|
||||||
ifndef USE_UPNP
|
|
||||||
override USE_UPNP = -
|
|
||||||
endif
|
|
||||||
ifneq (${USE_UPNP}, -)
|
|
||||||
DEFS += -DUSE_UPNP=$(USE_UPNP)
|
|
||||||
ifdef STATIC
|
|
||||||
LIBS += $(DEPSDIR)/lib/libminiupnpc.a
|
|
||||||
else
|
|
||||||
LIBS += -lminiupnpc
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq (${USE_IPV6}, -)
|
|
||||||
DEFS += -DUSE_IPV6=$(USE_IPV6)
|
|
||||||
endif
|
|
||||||
|
|
||||||
all: trianglesd
|
|
||||||
|
|
||||||
test check: test_triangles FORCE
|
|
||||||
./test_triangles
|
|
||||||
|
|
||||||
LIBS += $(CURDIR)/leveldb/libleveldb.a $(CURDIR)/leveldb/libmemenv.a
|
|
||||||
DEFS += $(addprefix -I,$(CURDIR)/leveldb/include)
|
|
||||||
DEFS += $(addprefix -I,$(CURDIR)/leveldb/helpers)
|
|
||||||
OBJS += obj/txdb-leveldb.o
|
|
||||||
leveldb/libleveldb.a:
|
|
||||||
@echo "Building LevelDB ..."; cd leveldb; make libleveldb.a libmemenv.a; cd ..;
|
|
||||||
obj/txdb-leveldb.o: leveldb/libleveldb.a
|
|
||||||
|
|
||||||
# auto-generated dependencies:
|
|
||||||
-include obj/*.P
|
|
||||||
-include obj-test/*.P
|
|
||||||
|
|
||||||
obj/build.h: FORCE
|
|
||||||
/bin/sh ../share/genbuild.sh obj/build.h
|
|
||||||
version.cpp: obj/build.h
|
|
||||||
DEFS += -DHAVE_BUILD_INFO
|
|
||||||
|
|
||||||
obj/%.o: %.cpp
|
|
||||||
$(CXX) -c $(CFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
|
|
||||||
@cp $(@:%.o=%.d) $(@:%.o=%.P); \
|
|
||||||
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
|
|
||||||
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
|
|
||||||
rm -f $(@:%.o=%.d)
|
|
||||||
|
|
||||||
obj/%.o: %.c
|
|
||||||
$(CC) -c $(CFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
|
|
||||||
@cp $(@:%.o=%.d) $(@:%.o=%.P); \
|
|
||||||
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
|
|
||||||
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
|
|
||||||
rm -f $(@:%.o=%.d)
|
|
||||||
|
|
||||||
obj/%.o: tor/%.c
|
|
||||||
$(CC) -c $(CFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
|
|
||||||
@cp $(@:%.o=%.d) $(@:%.o=%.P); \
|
|
||||||
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
|
|
||||||
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
|
|
||||||
rm -f $(@:%.o=%.d)
|
|
||||||
|
|
||||||
obj/anonymize.o: tor/anonymize.cpp
|
|
||||||
$(CXX) -c $(CFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
|
|
||||||
@cp $(@:%.o=%.d) $(@:%.o=%.P); \
|
|
||||||
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
|
|
||||||
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
|
|
||||||
rm -f $(@:%.o=%.d)
|
|
||||||
|
|
||||||
obj/scrypt-x86.o: scrypt-x86.S
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -MMD -o $@ $<
|
|
||||||
|
|
||||||
obj/scrypt-x86_64.o: scrypt-x86_64.S
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -MMD -o $@ $<
|
|
||||||
|
|
||||||
obj/scrypt-arm.o: scrypt-arm.S
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -MMD -o $@ $<
|
|
||||||
|
|
||||||
trianglesd: $(OBJS:obj/%=obj/%) obj/anonymize.o
|
|
||||||
$(CXX) $(CFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS)
|
|
||||||
|
|
||||||
TESTOBJS := $(patsubst test/%.cpp,obj-test/%.o,$(wildcard test/*.cpp))
|
|
||||||
|
|
||||||
obj-test/%.o: test/%.cpp
|
|
||||||
$(CXX) -c $(TESTDEFS) $(CFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
|
|
||||||
@cp $(@:%.o=%.d) $(@:%.o=%.P); \
|
|
||||||
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
|
|
||||||
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
|
|
||||||
rm -f $(@:%.o=%.d)
|
|
||||||
|
|
||||||
test_triangles: $(TESTOBJS) $(filter-out obj/init.o,$(OBJS:obj/%=obj/%))
|
|
||||||
$(CXX) $(CFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS) $(TESTLIBS)
|
|
||||||
|
|
||||||
clean:
|
|
||||||
-rm -f trianglesd test_triangles
|
|
||||||
-rm -f obj/*.o
|
|
||||||
-rm -f obj-test/*.o
|
|
||||||
-rm -f obj/*.P
|
|
||||||
-rm -f obj-test/*.P
|
|
||||||
-rm -f obj/build.h
|
|
||||||
-rm -f leveldb/libleveldb.a
|
|
||||||
-rm -f leveldb/libmemenv.a
|
|
||||||
|
|
||||||
FORCE:
|
|
||||||
@@ -1,329 +0,0 @@
|
|||||||
# Copyright (c) 2009-2010 Satoshi Nakamoto
|
|
||||||
# Distributed under the MIT/X11 software license, see the accompanying
|
|
||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
||||||
|
|
||||||
USE_UPNP:=0
|
|
||||||
USE_IPV6:=1
|
|
||||||
|
|
||||||
LINK:=$(CXX)
|
|
||||||
ARCH:=$(shell lscpu | head -n 1 | awk '{print $$2}')
|
|
||||||
|
|
||||||
DEFS=-DBOOST_SPIRIT_THREADSAFE
|
|
||||||
|
|
||||||
DEFS += $(addprefix -I,$(CURDIR) $(CURDIR)/tor $(CURDIR)/obj $(BOOST_INCLUDE_PATH) $(BDB_INCLUDE_PATH) $(OPENSSL_INCLUDE_PATH))
|
|
||||||
LIBS = $(addprefix -L,$(BOOST_LIB_PATH) $(BDB_LIB_PATH) $(OPENSSL_LIB_PATH))
|
|
||||||
|
|
||||||
# libevent
|
|
||||||
EVENTDIR = /usr/local
|
|
||||||
DEFS += $(addprefix -I,$(EVENTDIR)/include)
|
|
||||||
LIBS += -levent $(addprefix -L,$(EVENTDIR)/lib)
|
|
||||||
|
|
||||||
TESTDEFS = -DTEST_DATA_DIR=$(abspath test/data)
|
|
||||||
|
|
||||||
LMODE = dynamic
|
|
||||||
LMODE2 = dynamic
|
|
||||||
ifdef STATIC
|
|
||||||
LMODE = static
|
|
||||||
ifeq (${STATIC}, all)
|
|
||||||
LMODE2 = static
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
TESTDEFS += -DBOOST_TEST_DYN_LINK
|
|
||||||
endif
|
|
||||||
|
|
||||||
# for boost 1.37, add -mt to the boost libraries
|
|
||||||
LIBS += \
|
|
||||||
-Wl,-B$(LMODE) \
|
|
||||||
-l boost_system$(BOOST_LIB_SUFFIX) \
|
|
||||||
-l boost_filesystem$(BOOST_LIB_SUFFIX) \
|
|
||||||
-l boost_program_options$(BOOST_LIB_SUFFIX) \
|
|
||||||
-l boost_thread$(BOOST_LIB_SUFFIX) \
|
|
||||||
-l boost_chrono$(BOOST_LIB_SUFFIX) \
|
|
||||||
-l db_cxx$(BDB_LIB_SUFFIX) \
|
|
||||||
-l ssl \
|
|
||||||
-l crypto
|
|
||||||
|
|
||||||
ifndef USE_UPNP
|
|
||||||
override USE_UPNP = -
|
|
||||||
endif
|
|
||||||
ifneq (${USE_UPNP}, -)
|
|
||||||
LIBS += -l miniupnpc
|
|
||||||
DEFS += -DUSE_UPNP=$(USE_UPNP)
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq (${USE_IPV6}, -)
|
|
||||||
DEFS += -DUSE_IPV6=$(USE_IPV6)
|
|
||||||
endif
|
|
||||||
|
|
||||||
LIBS+= \
|
|
||||||
-Wl,-B$(LMODE2) \
|
|
||||||
-l z \
|
|
||||||
-l dl \
|
|
||||||
-l pthread
|
|
||||||
|
|
||||||
|
|
||||||
# Hardening
|
|
||||||
# Make some classes of vulnerabilities unexploitable in case one is discovered.
|
|
||||||
#
|
|
||||||
# This is a workaround for Ubuntu bug #691722, the default -fstack-protector causes
|
|
||||||
# -fstack-protector-all to be ignored unless -fno-stack-protector is used first.
|
|
||||||
# see: https://bugs.launchpad.net/ubuntu/+source/gcc-4.5/+bug/691722
|
|
||||||
HARDENING=-fno-stack-protector
|
|
||||||
|
|
||||||
# Stack Canaries
|
|
||||||
# Put numbers at the beginning of each stack frame and check that they are the same.
|
|
||||||
# If a stack buffer if overflowed, it writes over the canary number and then on return
|
|
||||||
# when that number is checked, it won't be the same and the program will exit with
|
|
||||||
# a "Stack smashing detected" error instead of being exploited.
|
|
||||||
HARDENING+=-fstack-protector-all -Wstack-protector
|
|
||||||
|
|
||||||
# Make some important things such as the global offset table read only as soon as
|
|
||||||
# the dynamic linker is finished building it. This will prevent overwriting of addresses
|
|
||||||
# which would later be jumped to.
|
|
||||||
LDHARDENING+=-Wl,-z,relro -Wl,-z,now
|
|
||||||
|
|
||||||
# Build position independent code to take advantage of Address Space Layout Randomization
|
|
||||||
# offered by some kernels.
|
|
||||||
# see doc/build-unix.txt for more information.
|
|
||||||
ifdef PIE
|
|
||||||
HARDENING+=-fPIE
|
|
||||||
LDHARDENING+=-pie
|
|
||||||
endif
|
|
||||||
|
|
||||||
# -D_FORTIFY_SOURCE=2 does some checking for potentially exploitable code patterns in
|
|
||||||
# the source such overflowing a statically defined buffer.
|
|
||||||
HARDENING+=-D_FORTIFY_SOURCE=2
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
DEBUGFLAGS=-g
|
|
||||||
|
|
||||||
|
|
||||||
ifeq (${ARCH}, i686)
|
|
||||||
EXT_OPTIONS=-msse2
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
# CXXFLAGS can be specified on the make command line, so we use xCXXFLAGS that only
|
|
||||||
# adds some defaults in front. Unfortunately, CXXFLAGS=... $(CXXFLAGS) does not work.
|
|
||||||
xCXXFLAGS=-O2 -std=c++17 $(EXT_OPTIONS) -pthread -Wall -Wextra -Wno-ignored-qualifiers -Wformat -Wformat-security -Wno-unused-parameter \
|
|
||||||
$(DEBUGFLAGS) $(DEFS) $(HARDENING) $(CXXFLAGS)
|
|
||||||
|
|
||||||
# LDFLAGS can be specified on the make command line, so we use xLDFLAGS that only
|
|
||||||
# adds some defaults in front. Unfortunately, LDFLAGS=... $(LDFLAGS) does not work.
|
|
||||||
xLDFLAGS=$(LDHARDENING) $(LDFLAGS)
|
|
||||||
|
|
||||||
# Old embedded Tor v2 client removed - incompatible with OpenSSL 3.x
|
|
||||||
# Tor v3 onion services handled by onion_v3.cpp via external Tor/SOCKS5
|
|
||||||
OBJS= \
|
|
||||||
obj/fugue.o \
|
|
||||||
obj/hamsi.o \
|
|
||||||
obj/hamsi_helper.o \
|
|
||||||
obj/groestl.o \
|
|
||||||
obj/blake.o \
|
|
||||||
obj/bmw.o \
|
|
||||||
obj/skein.o \
|
|
||||||
obj/keccak.o \
|
|
||||||
obj/shavite.o \
|
|
||||||
obj/jh.o \
|
|
||||||
obj/luffa.o \
|
|
||||||
obj/cubehash.o \
|
|
||||||
obj/echo.o \
|
|
||||||
obj/simd.o \
|
|
||||||
obj/aes_helper.o \
|
|
||||||
obj/alert.o \
|
|
||||||
obj/version.o \
|
|
||||||
obj/checkpoints.o \
|
|
||||||
obj/netbase.o \
|
|
||||||
obj/addrman.o \
|
|
||||||
obj/crypter.o \
|
|
||||||
obj/key.o \
|
|
||||||
obj/db.o \
|
|
||||||
obj/init.o \
|
|
||||||
obj/irc.o \
|
|
||||||
obj/keystore.o \
|
|
||||||
obj/miner.o \
|
|
||||||
obj/main.o \
|
|
||||||
obj/net.o \
|
|
||||||
obj/bootstrap.o \
|
|
||||||
obj/net_bootstrap.o \
|
|
||||||
obj/protocol.o \
|
|
||||||
obj/trianglesrpc.o \
|
|
||||||
obj/rest.o \
|
|
||||||
obj/rpcdump.o \
|
|
||||||
obj/rpcnet.o \
|
|
||||||
obj/rpcmining.o \
|
|
||||||
obj/rpcwallet.o \
|
|
||||||
obj/rpcblockchain.o \
|
|
||||||
obj/rpcrawtransaction.o \
|
|
||||||
obj/rpcsmessage.o \
|
|
||||||
obj/script.o \
|
|
||||||
obj/sync.o \
|
|
||||||
obj/util.o \
|
|
||||||
obj/wallet.o \
|
|
||||||
obj/walletdb.o \
|
|
||||||
obj/noui.o \
|
|
||||||
obj/kernel.o \
|
|
||||||
obj/pbkdf2.o \
|
|
||||||
obj/scrypt.o \
|
|
||||||
obj/scrypt-arm.o \
|
|
||||||
obj/scrypt-x86.o \
|
|
||||||
obj/scrypt-x86_64.o \
|
|
||||||
obj/smessage.o \
|
|
||||||
obj/lz4.o \
|
|
||||||
obj/onion_v3.o \
|
|
||||||
obj/tor_process.o \
|
|
||||||
obj/tor_embed_hooks.o \
|
|
||||||
obj/tor_embedded.o
|
|
||||||
|
|
||||||
# Embedded Tor support (optional)
|
|
||||||
# Build with: make -f makefile.unix USE_TOR_EMBEDDED=1 TOR_SOURCE_ROOT=/path/to/tor-src
|
|
||||||
# Requires libtor.a built from official Tor source (see CODEX-TOR-GUIDE.md)
|
|
||||||
TOR_SOURCE_ROOT ?= tor/tor-src
|
|
||||||
TOR_INCLUDE_PATH ?= $(TOR_SOURCE_ROOT)/src/feature/api
|
|
||||||
TOR_LIB_PATH ?= $(TOR_SOURCE_ROOT)
|
|
||||||
TOR_EMBEDDED_LIBS ?= -ltor
|
|
||||||
ifdef USE_TOR_EMBEDDED
|
|
||||||
DEFS += -DENABLE_TOR_EMBEDDED
|
|
||||||
DEFS += $(addprefix -I,$(TOR_INCLUDE_PATH))
|
|
||||||
LIBS += $(addprefix -L,$(TOR_LIB_PATH))
|
|
||||||
LIBS += -Wl,--start-group $(TOR_EMBEDDED_LIBS) -Wl,--end-group
|
|
||||||
LIBS += -llzma -lzstd -lm -lpthread
|
|
||||||
endif
|
|
||||||
|
|
||||||
# ZMQ support (optional)
|
|
||||||
# Build with: make -f makefile.unix USE_ZMQ=1
|
|
||||||
ifdef USE_ZMQ
|
|
||||||
DEFS += -DENABLE_ZMQ
|
|
||||||
LIBS += -lzmq
|
|
||||||
OBJS += obj/zmqpublishnotifier.o
|
|
||||||
endif
|
|
||||||
|
|
||||||
all: trianglesd
|
|
||||||
|
|
||||||
obj:
|
|
||||||
@mkdir -p obj
|
|
||||||
|
|
||||||
obj-test:
|
|
||||||
@mkdir -p obj-test
|
|
||||||
|
|
||||||
test check: test_triangles FORCE
|
|
||||||
./test_triangles
|
|
||||||
|
|
||||||
LIBS += $(CURDIR)/leveldb/libleveldb.a $(CURDIR)/leveldb/libmemenv.a
|
|
||||||
DEFS += $(addprefix -I,$(CURDIR)/leveldb/include)
|
|
||||||
DEFS += $(addprefix -I,$(CURDIR)/leveldb/helpers)
|
|
||||||
OBJS += obj/txdb-leveldb.o
|
|
||||||
leveldb/libleveldb.a:
|
|
||||||
@echo "Building LevelDB ..."; cd leveldb; make libleveldb.a libmemenv.a; cd ..;
|
|
||||||
obj/txdb-leveldb.o: leveldb/libleveldb.a
|
|
||||||
|
|
||||||
# auto-generated dependencies:
|
|
||||||
-include obj/*.P
|
|
||||||
-include obj-test/*.P
|
|
||||||
|
|
||||||
obj/build.h: FORCE
|
|
||||||
/bin/sh ../share/genbuild.sh obj/build.h
|
|
||||||
version.cpp: obj/build.h
|
|
||||||
DEFS += -DHAVE_BUILD_INFO
|
|
||||||
|
|
||||||
obj/scrypt-x86.o: scrypt-x86.S
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -MMD -o $@ $<
|
|
||||||
|
|
||||||
obj/scrypt-x86_64.o: scrypt-x86_64.S
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -MMD -o $@ $<
|
|
||||||
|
|
||||||
obj/scrypt-arm.o: scrypt-arm.S
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -MMD -o $@ $<
|
|
||||||
|
|
||||||
obj/%.o: %.cpp | obj
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
|
|
||||||
@cp $(@:%.o=%.d) $(@:%.o=%.P); \
|
|
||||||
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
|
|
||||||
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
|
|
||||||
rm -f $(@:%.o=%.d)
|
|
||||||
|
|
||||||
obj/%.o: %.c | obj
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -fpermissive -MMD -MF $(@:%.o=%.d) -o $@ $<
|
|
||||||
@cp $(@:%.o=%.d) $(@:%.o=%.P); \
|
|
||||||
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
|
|
||||||
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
|
|
||||||
rm -f $(@:%.o=%.d)
|
|
||||||
|
|
||||||
obj/lz4.o: lz4/lz4.c
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -fpermissive -MMD -MF $(@:%.o=%.d) -o $@ $<
|
|
||||||
@cp $(@:%.o=%.d) $(@:%.o=%.P); \
|
|
||||||
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//'\
|
|
||||||
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
|
|
||||||
rm -f $(@:%.o=%.d)
|
|
||||||
|
|
||||||
obj/tor_embed_hooks.o: tor_embed_hooks.cpp
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
|
|
||||||
@cp $(@:%.o=%.d) $(@:%.o=%.P); \
|
|
||||||
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
|
|
||||||
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
|
|
||||||
rm -f $(@:%.o=%.d)
|
|
||||||
|
|
||||||
obj/onion_v3.o: tor/onion_v3.cpp
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
|
|
||||||
@cp $(@:%.o=%.d) $(@:%.o=%.P); \
|
|
||||||
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
|
|
||||||
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
|
|
||||||
rm -f $(@:%.o=%.d)
|
|
||||||
|
|
||||||
obj/tor_process.o: tor/tor_process.cpp
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
|
|
||||||
@cp $(@:%.o=%.d) $(@:%.o=%.P); \
|
|
||||||
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
|
|
||||||
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
|
|
||||||
rm -f $(@:%.o=%.d)
|
|
||||||
|
|
||||||
obj/tor_embedded.o: tor/tor_embedded.cpp
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
|
|
||||||
@cp $(@:%.o=%.d) $(@:%.o=%.P); \
|
|
||||||
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
|
|
||||||
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
|
|
||||||
rm -f $(@:%.o=%.d)
|
|
||||||
|
|
||||||
obj/bootstrap.o: bootstrap.cpp
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
|
|
||||||
@cp $(@:%.o=%.d) $(@:%.o=%.P); \
|
|
||||||
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
|
|
||||||
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
|
|
||||||
rm -f $(@:%.o=%.d)
|
|
||||||
|
|
||||||
obj/net_bootstrap.o: net_bootstrap.cpp
|
|
||||||
$(CXX) -c $(xCXXFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
|
|
||||||
@cp $(@:%.o=%.d) $(@:%.o=%.P); \
|
|
||||||
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
|
|
||||||
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
|
|
||||||
rm -f $(@:%.o=%.d)
|
|
||||||
|
|
||||||
trianglesd: $(OBJS:obj/%=obj/%)
|
|
||||||
$(LINK) $(xCXXFLAGS) -o $@ $^ $(xLDFLAGS) $(LIBS)
|
|
||||||
|
|
||||||
# miner_tests.cpp references CreateNewBlock() which was never ported from Bitcoin
|
|
||||||
TESTOBJS := $(filter-out obj-test/miner_tests.o, \
|
|
||||||
$(patsubst test/%.cpp,obj-test/%.o,$(wildcard test/*.cpp)))
|
|
||||||
|
|
||||||
obj-test/%.o: test/%.cpp | obj-test
|
|
||||||
$(CXX) -c $(TESTDEFS) $(xCXXFLAGS) -MMD -MF $(@:%.o=%.d) -o $@ $<
|
|
||||||
@cp $(@:%.o=%.d) $(@:%.o=%.P); \
|
|
||||||
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
|
|
||||||
-e '/^$$/ d' -e 's/$$/ :/' < $(@:%.o=%.d) >> $(@:%.o=%.P); \
|
|
||||||
rm -f $(@:%.o=%.d)
|
|
||||||
|
|
||||||
test_triangles: $(TESTOBJS) $(filter-out obj/init.o,$(OBJS:obj/%=obj/%))
|
|
||||||
$(LINK) $(xCXXFLAGS) -o $@ $(LIBPATHS) $^ -Wl,-B$(LMODE) -lboost_unit_test_framework $(xLDFLAGS) $(LIBS)
|
|
||||||
|
|
||||||
clean:
|
|
||||||
-rm -f trianglesd test_triangles
|
|
||||||
-rm -f obj/*.o
|
|
||||||
-rm -f obj-test/*.o
|
|
||||||
-rm -f obj/*.P
|
|
||||||
-rm -f obj-test/*.P
|
|
||||||
-rm -f obj/build.h
|
|
||||||
-rm -f leveldb/libleveldb.a
|
|
||||||
-rm -f leveldb/libmemenv.a
|
|
||||||
|
|
||||||
FORCE:
|
|
||||||
@@ -1,605 +0,0 @@
|
|||||||
TEMPLATE = app
|
|
||||||
TARGET = triangles-qt
|
|
||||||
|
|
||||||
VERSION = 5.6.0.0
|
|
||||||
INCLUDEPATH += src src/json src/qt src/qt/plugins/mrichtexteditor
|
|
||||||
DEFINES += QT_GUI BOOST_THREAD_USE_LIB BOOST_SPIRIT_THREADSAFE BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN BOOST_BIND_GLOBAL_PLACEHOLDERS __NO_SYSTEM_INCLUDES
|
|
||||||
CONFIG += no_include_pwd
|
|
||||||
CONFIG += thread
|
|
||||||
CONFIG += c++17
|
|
||||||
|
|
||||||
lessThan(QT_MAJOR_VERSION, 5) {
|
|
||||||
error(Triangles Qt requires Qt 5 or newer)
|
|
||||||
}
|
|
||||||
|
|
||||||
QT += widgets
|
|
||||||
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
|
|
||||||
|
|
||||||
# UNCOMMENT THIS SECTION TO BUILD ON WINDOWS
|
|
||||||
# MSYS2 MinGW64 paths
|
|
||||||
win32 {
|
|
||||||
BOOST_LIB_SUFFIX=-mt
|
|
||||||
BOOST_THREAD_LIB_SUFFIX=-mt
|
|
||||||
BOOST_INCLUDE_PATH=C:/msys64/mingw64/include
|
|
||||||
BOOST_LIB_PATH=C:/msys64/mingw64/lib
|
|
||||||
BDB_INCLUDE_PATH=C:/msys64/mingw64/include
|
|
||||||
BDB_LIB_PATH=C:/msys64/mingw64/lib
|
|
||||||
OPENSSL_INCLUDE_PATH=C:/msys64/mingw64/include
|
|
||||||
OPENSSL_LIB_PATH=C:/msys64/mingw64/lib
|
|
||||||
MINIUPNPC_INCLUDE_PATH=C:/msys64/mingw64/include
|
|
||||||
MINIUPNPC_LIB_PATH=C:/msys64/mingw64/lib
|
|
||||||
EVENT_INCLUDE_PATH=C:/msys64/mingw64/include
|
|
||||||
EVENT_LIB_PATH=C:/msys64/mingw64/lib
|
|
||||||
}
|
|
||||||
|
|
||||||
# for boost 1.37, add -mt to the boost libraries
|
|
||||||
# use: qmake BOOST_LIB_SUFFIX=-mt
|
|
||||||
# for boost thread win32 with _win32 sufix
|
|
||||||
# use: BOOST_THREAD_LIB_SUFFIX=_win32-...
|
|
||||||
# or when linking against a specific BerkelyDB version: BDB_LIB_SUFFIX=-4.8
|
|
||||||
|
|
||||||
# Dependency library locations can be customized with:
|
|
||||||
# BOOST_INCLUDE_PATH, BOOST_LIB_PATH, BDB_INCLUDE_PATH,
|
|
||||||
# BDB_LIB_PATH, OPENSSL_INCLUDE_PATH and OPENSSL_LIB_PATH respectively
|
|
||||||
|
|
||||||
OBJECTS_DIR = build
|
|
||||||
MOC_DIR = build
|
|
||||||
UI_DIR = build
|
|
||||||
|
|
||||||
# use: qmake "RELEASE=1"
|
|
||||||
contains(RELEASE, 1) {
|
|
||||||
# Mac: compile for compatibility (macOS 11+)
|
|
||||||
macx:QMAKE_CXXFLAGS += -mmacosx-version-min=11.0
|
|
||||||
macx:QMAKE_LFLAGS += -mmacosx-version-min=11.0
|
|
||||||
|
|
||||||
!windows:!macx {
|
|
||||||
# Linux: static link
|
|
||||||
LIBS += -Wl,-Bstatic
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
!win32 {
|
|
||||||
# for extra security against potential buffer overflows: enable GCCs Stack Smashing Protection
|
|
||||||
QMAKE_CXXFLAGS *= -fstack-protector-all --param ssp-buffer-size=1
|
|
||||||
QMAKE_LFLAGS *= -fstack-protector-all --param ssp-buffer-size=1
|
|
||||||
# We need to exclude this for Windows cross compile with MinGW 4.2.x, as it will result in a non-working executable!
|
|
||||||
# This can be enabled for Windows, when we switch to MinGW >= 4.4.x.
|
|
||||||
}
|
|
||||||
# for extra security on Windows: enable ASLR and DEP via GCC linker flags
|
|
||||||
win32:QMAKE_LFLAGS *= -static
|
|
||||||
win32:QMAKE_LFLAGS += -static-libgcc -static-libstdc++
|
|
||||||
lessThan(QT_MAJOR_VERSION, 5): win32: QMAKE_LFLAGS *= -static
|
|
||||||
|
|
||||||
# use: qmake "USE_QRCODE=1"
|
|
||||||
# libqrencode (http://fukuchi.org/works/qrencode/index.en.html) must be installed for support
|
|
||||||
contains(USE_QRCODE, 1) {
|
|
||||||
message(Building with QRCode support)
|
|
||||||
DEFINES += USE_QRCODE
|
|
||||||
LIBS += -lqrencode
|
|
||||||
}
|
|
||||||
|
|
||||||
#triangles: use UPNP with TOR
|
|
||||||
USE_UPNP=1
|
|
||||||
# use: qmake "USE_UPNP=1" ( enabled by default; default)
|
|
||||||
# or: qmake "USE_UPNP=0" (disabled by default)
|
|
||||||
# or: qmake "USE_UPNP=-" (not supported)
|
|
||||||
# miniupnpc (http://miniupnp.free.fr/files/) must be installed for support
|
|
||||||
contains(USE_UPNP, -) {
|
|
||||||
message(Building without UPNP support)
|
|
||||||
} else {
|
|
||||||
message(Building with UPNP support)
|
|
||||||
count(USE_UPNP, 0) {
|
|
||||||
USE_UPNP=1
|
|
||||||
}
|
|
||||||
DEFINES += USE_UPNP=$$USE_UPNP STATICLIB MINIUPNP_STATICLIB
|
|
||||||
INCLUDEPATH += $$MINIUPNPC_INCLUDE_PATH
|
|
||||||
LIBS += $$join(MINIUPNPC_LIB_PATH,,-L,) -lminiupnpc
|
|
||||||
win32:LIBS += -liphlpapi
|
|
||||||
}
|
|
||||||
|
|
||||||
# use: qmake "USE_DBUS=1" or qmake "USE_DBUS=0"
|
|
||||||
linux:count(USE_DBUS, 0) {
|
|
||||||
USE_DBUS=1
|
|
||||||
}
|
|
||||||
contains(USE_DBUS, 1) {
|
|
||||||
message(Building with DBUS (Freedesktop notifications) support)
|
|
||||||
DEFINES += USE_DBUS
|
|
||||||
QT += dbus
|
|
||||||
}
|
|
||||||
|
|
||||||
# use: qmake "USE_IPV6=1" ( enabled by default; default)
|
|
||||||
# or: qmake "USE_IPV6=0" (disabled by default)
|
|
||||||
# or: qmake "USE_IPV6=-" (not supported)
|
|
||||||
contains(USE_IPV6, -) {
|
|
||||||
message(Building without IPv6 support)
|
|
||||||
} else {
|
|
||||||
count(USE_IPV6, 0) {
|
|
||||||
USE_IPV6=1
|
|
||||||
}
|
|
||||||
DEFINES += USE_IPV6=$$USE_IPV6
|
|
||||||
}
|
|
||||||
|
|
||||||
contains(TRIANGLES_NEED_QT_PLUGINS, 1) {
|
|
||||||
message(Building with Qt Plugins)
|
|
||||||
DEFINES += TRIANGLES_NEED_QT_PLUGINS
|
|
||||||
QTPLUGIN += qcncodecs qjpcodecs qtwcodecs qkrcodecs qtaccessiblewidgets
|
|
||||||
} else {
|
|
||||||
message(Building without Qt Plugins)
|
|
||||||
}
|
|
||||||
|
|
||||||
INCLUDEPATH += src/leveldb/include src/leveldb/helpers
|
|
||||||
LIBS += $$PWD/src/leveldb/libleveldb.a $$PWD/src/leveldb/libmemenv.a
|
|
||||||
SOURCES += src/txdb-leveldb.cpp \
|
|
||||||
src/blake.c \
|
|
||||||
src/groestl.c \
|
|
||||||
src/jh.c \
|
|
||||||
src/keccak.c \
|
|
||||||
src/skein.c \
|
|
||||||
src/aes_helper.c \
|
|
||||||
src/bmw.c \
|
|
||||||
src/cubehash.c \
|
|
||||||
src/echo.c \
|
|
||||||
src/fugue.c \
|
|
||||||
src/hamsi.c \
|
|
||||||
src/hamsi_helper.c \
|
|
||||||
src/luffa.c \
|
|
||||||
src/shavite.c \
|
|
||||||
src/simd.c
|
|
||||||
|
|
||||||
!win32 {
|
|
||||||
# we use QMAKE_CXXFLAGS_RELEASE even without RELEASE=1 because we use RELEASE to indicate linking preferences not -O preferences
|
|
||||||
genleveldb.commands = cd $$PWD/src/leveldb && CC=$$QMAKE_CC CXX=$$QMAKE_CXX $(MAKE) OPT=\"$$QMAKE_CXXFLAGS $$QMAKE_CXXFLAGS_RELEASE\" libleveldb.a libmemenv.a
|
|
||||||
} else {
|
|
||||||
# make an educated guess about what the ranlib command is called
|
|
||||||
isEmpty(QMAKE_RANLIB) {
|
|
||||||
QMAKE_RANLIB = $$replace(QMAKE_STRIP, strip, ranlib)
|
|
||||||
}
|
|
||||||
LIBS += -lshlwapi
|
|
||||||
genleveldb.commands = cd $$PWD/src/leveldb && CC=$$QMAKE_CC CXX=$$QMAKE_CXX TARGET_OS=OS_WINDOWS_CROSSCOMPILE $(MAKE) OPT=\"$$QMAKE_CXXFLAGS $$QMAKE_CXXFLAGS_RELEASE\" libleveldb.a libmemenv.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libleveldb.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libmemenv.a
|
|
||||||
}
|
|
||||||
genleveldb.target = $$PWD/src/leveldb/libleveldb.a
|
|
||||||
genleveldb.depends = FORCE
|
|
||||||
PRE_TARGETDEPS += $$PWD/src/leveldb/libleveldb.a
|
|
||||||
QMAKE_EXTRA_TARGETS += genleveldb
|
|
||||||
# Gross ugly hack that depends on qmake internals, unfortunately there is no other way to do it.
|
|
||||||
QMAKE_CLEAN += $$PWD/src/leveldb/libleveldb.a; cd $$PWD/src/leveldb ; $(MAKE) clean
|
|
||||||
|
|
||||||
# regenerate src/build.h
|
|
||||||
!windows|contains(USE_BUILD_INFO, 1) {
|
|
||||||
genbuild.depends = FORCE
|
|
||||||
genbuild.commands = cd $$PWD; /bin/sh share/genbuild.sh $$OUT_PWD/build/build.h
|
|
||||||
genbuild.target = $$OUT_PWD/build/build.h
|
|
||||||
PRE_TARGETDEPS += $$OUT_PWD/build/build.h
|
|
||||||
QMAKE_EXTRA_TARGETS += genbuild
|
|
||||||
DEFINES += HAVE_BUILD_INFO
|
|
||||||
}
|
|
||||||
|
|
||||||
contains(USE_O3, 1) {
|
|
||||||
message(Building O3 optimization flag)
|
|
||||||
QMAKE_CXXFLAGS_RELEASE -= -O2
|
|
||||||
QMAKE_CFLAGS_RELEASE -= -O2
|
|
||||||
QMAKE_CXXFLAGS += -O3
|
|
||||||
QMAKE_CFLAGS += -O3
|
|
||||||
}
|
|
||||||
|
|
||||||
*-g++-32 {
|
|
||||||
message("32 platform, adding -msse2 flag")
|
|
||||||
|
|
||||||
QMAKE_CXXFLAGS += -msse2
|
|
||||||
QMAKE_CFLAGS += -msse2
|
|
||||||
}
|
|
||||||
|
|
||||||
QMAKE_CXXFLAGS_WARN_ON = -fdiagnostics-show-option -Wall -Wextra -Wno-ignored-qualifiers -Wformat -Wformat-security -Wno-unused-parameter -Wstack-protector
|
|
||||||
|
|
||||||
|
|
||||||
# Input
|
|
||||||
DEPENDPATH += src src/json src/qt
|
|
||||||
HEADERS += src/qt/trianglesgui.h \
|
|
||||||
src/qt/transactiontablemodel.h \
|
|
||||||
src/qt/addresstablemodel.h \
|
|
||||||
src/qt/optionsdialog.h \
|
|
||||||
src/qt/coincontroldialog.h \
|
|
||||||
src/qt/coincontroltreewidget.h \
|
|
||||||
src/qt/sendcoinsdialog.h \
|
|
||||||
src/qt/addressbookpage.h \
|
|
||||||
src/qt/aboutdialog.h \
|
|
||||||
src/qt/introdialog.h \
|
|
||||||
src/bootstrap.h \
|
|
||||||
src/qt/editaddressdialog.h \
|
|
||||||
src/qt/trianglesaddressvalidator.h \
|
|
||||||
src/alert.h \
|
|
||||||
src/addrman.h \
|
|
||||||
src/base58.h \
|
|
||||||
src/bignum.h \
|
|
||||||
src/checkpoints.h \
|
|
||||||
src/compat.h \
|
|
||||||
src/coincontrol.h \
|
|
||||||
src/sync.h \
|
|
||||||
src/util.h \
|
|
||||||
src/openssl_compat.h \
|
|
||||||
src/uint256.h \
|
|
||||||
src/kernel.h \
|
|
||||||
src/net_bootstrap.h \
|
|
||||||
src/tor/onion_v3.h \
|
|
||||||
src/tor/tor_process.h \
|
|
||||||
src/tor/tor_embedded.h \
|
|
||||||
src/tor/tor_crypto_compat.h \
|
|
||||||
src/scrypt.h \
|
|
||||||
src/pbkdf2.h \
|
|
||||||
src/serialize.h \
|
|
||||||
src/strlcpy.h \
|
|
||||||
src/smessage.h \
|
|
||||||
src/zmqpublishnotifier.h \
|
|
||||||
src/notificationqueue.h \
|
|
||||||
src/addressindex.h \
|
|
||||||
src/main.h \
|
|
||||||
src/miner.h \
|
|
||||||
src/net.h \
|
|
||||||
src/key.h \
|
|
||||||
src/db.h \
|
|
||||||
src/txdb.h \
|
|
||||||
src/walletdb.h \
|
|
||||||
src/script.h \
|
|
||||||
src/init.h \
|
|
||||||
src/irc.h \
|
|
||||||
src/mruset.h \
|
|
||||||
src/json/json_spirit_writer_template.h \
|
|
||||||
src/json/json_spirit_writer.h \
|
|
||||||
src/json/json_spirit_value.h \
|
|
||||||
src/json/json_spirit_utils.h \
|
|
||||||
src/json/json_spirit_stream_reader.h \
|
|
||||||
src/json/json_spirit_reader_template.h \
|
|
||||||
src/json/json_spirit_reader.h \
|
|
||||||
src/json/json_spirit_error_position.h \
|
|
||||||
src/json/json_spirit.h \
|
|
||||||
src/qt/clientmodel.h \
|
|
||||||
src/qt/guiutil.h \
|
|
||||||
src/qt/transactionrecord.h \
|
|
||||||
src/qt/guiconstants.h \
|
|
||||||
src/qt/optionsmodel.h \
|
|
||||||
src/qt/monitoreddatamapper.h \
|
|
||||||
src/qt/transactiondesc.h \
|
|
||||||
src/qt/transactiondescdialog.h \
|
|
||||||
src/qt/trianglesamountfield.h \
|
|
||||||
src/wallet.h \
|
|
||||||
src/keystore.h \
|
|
||||||
src/qt/transactionfilterproxy.h \
|
|
||||||
src/qt/transactionview.h \
|
|
||||||
src/qt/walletmodel.h \
|
|
||||||
src/tor_embed_hooks.h \
|
|
||||||
src/trianglesrpc.h \
|
|
||||||
src/rest.h \
|
|
||||||
src/qt/overviewpage.h \
|
|
||||||
src/qt/csvmodelwriter.h \
|
|
||||||
src/crypter.h \
|
|
||||||
src/qt/sendcoinsentry.h \
|
|
||||||
src/qt/qvalidatedlineedit.h \
|
|
||||||
src/qt/trianglesunits.h \
|
|
||||||
src/qt/qvaluecombobox.h \
|
|
||||||
src/qt/askpassphrasedialog.h \
|
|
||||||
src/protocol.h \
|
|
||||||
src/qt/notificator.h \
|
|
||||||
src/qt/qtipcserver.h \
|
|
||||||
src/allocators.h \
|
|
||||||
src/ui_interface.h \
|
|
||||||
src/qt/rpcconsole.h \
|
|
||||||
src/version.h \
|
|
||||||
src/netbase.h \
|
|
||||||
src/clientversion.h \
|
|
||||||
src/hashblock.h \
|
|
||||||
src/sph_blake.h \
|
|
||||||
src/sph_groestl.h \
|
|
||||||
src/sph_jh.h \
|
|
||||||
src/sph_keccak.h \
|
|
||||||
src/sph_skein.h \
|
|
||||||
src/sph_types.h \
|
|
||||||
src/qt/messagepage.h \
|
|
||||||
src/qt/dialog_move_handler.h \
|
|
||||||
src/qt/signmessagepage.h \
|
|
||||||
src/qt/verifymessagepage.h \
|
|
||||||
src/qt/messagemodel.h \
|
|
||||||
src/qt/sendmessagesdialog.h \
|
|
||||||
src/qt/sendmessagesentry.h \
|
|
||||||
src/qt/plugins/mrichtexteditor/mrichtextedit.h \
|
|
||||||
src/qt/qvalidatedtextedit.h \
|
|
||||||
src/txdb-leveldb.h \
|
|
||||||
src/onionseed.h \
|
|
||||||
src/sph_bmw.h \
|
|
||||||
src/sph_cubehash.h \
|
|
||||||
src/sph_echo.h \
|
|
||||||
src/sph_fugue.h \
|
|
||||||
src/sph_hamsi.h \
|
|
||||||
src/sph_luffa.h \
|
|
||||||
src/sph_shavite.h \
|
|
||||||
src/sph_simd.h
|
|
||||||
|
|
||||||
SOURCES += src/qt/triangles.cpp src/qt/trianglesgui.cpp \
|
|
||||||
src/qt/transactiontablemodel.cpp \
|
|
||||||
src/qt/addresstablemodel.cpp \
|
|
||||||
src/qt/optionsdialog.cpp \
|
|
||||||
src/qt/sendcoinsdialog.cpp \
|
|
||||||
src/qt/coincontroldialog.cpp \
|
|
||||||
src/qt/coincontroltreewidget.cpp \
|
|
||||||
src/qt/addressbookpage.cpp \
|
|
||||||
src/qt/aboutdialog.cpp \
|
|
||||||
src/qt/introdialog.cpp \
|
|
||||||
src/bootstrap.cpp \
|
|
||||||
src/qt/editaddressdialog.cpp \
|
|
||||||
src/qt/trianglesaddressvalidator.cpp \
|
|
||||||
# Old embedded Tor v2 client removed - incompatible with OpenSSL 3.x
|
|
||||||
# Tor v3 onion services handled by onion_v3.cpp via external Tor/SOCKS5
|
|
||||||
src/tor_embed_hooks.cpp \
|
|
||||||
src/alert.cpp \
|
|
||||||
src/version.cpp \
|
|
||||||
src/sync.cpp \
|
|
||||||
src/smessage.cpp \
|
|
||||||
src/lz4/lz4.c \
|
|
||||||
src/util.cpp \
|
|
||||||
src/netbase.cpp \
|
|
||||||
src/key.cpp \
|
|
||||||
src/script.cpp \
|
|
||||||
src/main.cpp \
|
|
||||||
src/miner.cpp \
|
|
||||||
src/init.cpp \
|
|
||||||
src/net.cpp \
|
|
||||||
src/irc.cpp \
|
|
||||||
src/checkpoints.cpp \
|
|
||||||
src/addrman.cpp \
|
|
||||||
src/db.cpp \
|
|
||||||
src/walletdb.cpp \
|
|
||||||
src/qt/clientmodel.cpp \
|
|
||||||
src/qt/guiutil.cpp \
|
|
||||||
src/qt/transactionrecord.cpp \
|
|
||||||
src/qt/optionsmodel.cpp \
|
|
||||||
src/qt/monitoreddatamapper.cpp \
|
|
||||||
src/qt/transactiondesc.cpp \
|
|
||||||
src/qt/transactiondescdialog.cpp \
|
|
||||||
src/qt/trianglesstrings.cpp \
|
|
||||||
src/qt/trianglesamountfield.cpp \
|
|
||||||
src/wallet.cpp \
|
|
||||||
src/keystore.cpp \
|
|
||||||
src/qt/transactionfilterproxy.cpp \
|
|
||||||
src/qt/transactionview.cpp \
|
|
||||||
src/qt/walletmodel.cpp \
|
|
||||||
src/trianglesrpc.cpp \
|
|
||||||
src/rest.cpp \
|
|
||||||
src/rpcdump.cpp \
|
|
||||||
src/rpcnet.cpp \
|
|
||||||
src/rpcmining.cpp \
|
|
||||||
src/rpcwallet.cpp \
|
|
||||||
src/rpcblockchain.cpp \
|
|
||||||
src/rpcrawtransaction.cpp \
|
|
||||||
src/rpcsmessage.cpp \
|
|
||||||
src/zmqpublishnotifier.cpp \
|
|
||||||
src/qt/overviewpage.cpp \
|
|
||||||
src/qt/csvmodelwriter.cpp \
|
|
||||||
src/crypter.cpp \
|
|
||||||
src/qt/sendcoinsentry.cpp \
|
|
||||||
src/qt/qvalidatedlineedit.cpp \
|
|
||||||
src/qt/trianglesunits.cpp \
|
|
||||||
src/qt/qvaluecombobox.cpp \
|
|
||||||
src/qt/askpassphrasedialog.cpp \
|
|
||||||
src/protocol.cpp \
|
|
||||||
src/qt/notificator.cpp \
|
|
||||||
src/qt/qtipcserver.cpp \
|
|
||||||
src/qt/rpcconsole.cpp \
|
|
||||||
src/qt/messagepage.cpp \
|
|
||||||
src/qt/dialog_move_handler.cpp \
|
|
||||||
src/qt/signmessagepage.cpp \
|
|
||||||
src/qt/verifymessagepage.cpp \
|
|
||||||
src/qt/messagemodel.cpp \
|
|
||||||
src/qt/sendmessagesdialog.cpp \
|
|
||||||
src/qt/sendmessagesentry.cpp \
|
|
||||||
src/qt/qvalidatedtextedit.cpp \
|
|
||||||
src/qt/plugins/mrichtexteditor/mrichtextedit.cpp \
|
|
||||||
src/noui.cpp \
|
|
||||||
src/kernel.cpp \
|
|
||||||
src/net_bootstrap.cpp \
|
|
||||||
src/tor/onion_v3.cpp \
|
|
||||||
src/tor/tor_process.cpp \
|
|
||||||
src/tor/tor_embedded.cpp \
|
|
||||||
src/scrypt-arm.S \
|
|
||||||
src/scrypt-x86.S \
|
|
||||||
src/scrypt-x86_64.S \
|
|
||||||
src/scrypt.cpp \
|
|
||||||
src/pbkdf2.cpp
|
|
||||||
|
|
||||||
RESOURCES += \
|
|
||||||
src/qt/triangles.qrc
|
|
||||||
|
|
||||||
FORMS += \
|
|
||||||
src/qt/forms/coincontroldialog.ui \
|
|
||||||
src/qt/forms/sendcoinsdialog.ui \
|
|
||||||
src/qt/forms/addressbookpage.ui \
|
|
||||||
src/qt/forms/aboutdialog.ui \
|
|
||||||
src/qt/forms/editaddressdialog.ui \
|
|
||||||
src/qt/forms/transactiondescdialog.ui \
|
|
||||||
src/qt/forms/overviewpage.ui \
|
|
||||||
src/qt/forms/sendcoinsentry.ui \
|
|
||||||
src/qt/forms/askpassphrasedialog.ui \
|
|
||||||
src/qt/forms/rpcconsole.ui \
|
|
||||||
src/qt/forms/optionsdialog.ui \
|
|
||||||
src/qt/forms/messagepage.ui \
|
|
||||||
src/qt/forms/sendmessagesentry.ui \
|
|
||||||
src/qt/forms/sendmessagesdialog.ui \
|
|
||||||
src/qt/plugins/mrichtexteditor/mrichtextedit.ui \
|
|
||||||
src/qt/forms/mainwindow.ui \
|
|
||||||
src/qt/forms/signmessagepage.ui \
|
|
||||||
src/qt/forms/verifymessagepage.ui \
|
|
||||||
src/qt/forms/transactionspage.ui
|
|
||||||
|
|
||||||
|
|
||||||
contains(USE_QRCODE, 1) {
|
|
||||||
HEADERS += src/qt/qrcodedialog.h
|
|
||||||
SOURCES += src/qt/qrcodedialog.cpp
|
|
||||||
FORMS += src/qt/forms/qrcodedialog.ui
|
|
||||||
}
|
|
||||||
|
|
||||||
CODECFORTR = UTF-8
|
|
||||||
|
|
||||||
# for lrelease/lupdate
|
|
||||||
# also add new translations to src/qt/triangles.qrc under translations/
|
|
||||||
TRANSLATIONS = $$files(src/qt/locale/triangles_*.ts)
|
|
||||||
|
|
||||||
isEmpty(QMAKE_LRELEASE) {
|
|
||||||
win32:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]\\lrelease.exe
|
|
||||||
else:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease
|
|
||||||
}
|
|
||||||
isEmpty(QM_DIR):QM_DIR = $$PWD/src/qt/locale
|
|
||||||
# automatically build translations, so they can be included in resource file
|
|
||||||
TSQM.name = lrelease ${QMAKE_FILE_IN}
|
|
||||||
TSQM.input = TRANSLATIONS
|
|
||||||
TSQM.output = $$QM_DIR/${QMAKE_FILE_BASE}.qm
|
|
||||||
TSQM.commands = $$QMAKE_LRELEASE ${QMAKE_FILE_IN} -qm ${QMAKE_FILE_OUT}
|
|
||||||
TSQM.CONFIG = no_link
|
|
||||||
QMAKE_EXTRA_COMPILERS += TSQM
|
|
||||||
|
|
||||||
# "Other files" to show in Qt Creator
|
|
||||||
OTHER_FILES += \
|
|
||||||
doc/*.rst doc/*.txt doc/README README.md res/triangles-qt.rc
|
|
||||||
|
|
||||||
# platform specific defaults, if not overridden on command line
|
|
||||||
isEmpty(BOOST_LIB_SUFFIX) {
|
|
||||||
macx:BOOST_LIB_SUFFIX =
|
|
||||||
windows:BOOST_LIB_SUFFIX = -mt
|
|
||||||
}
|
|
||||||
|
|
||||||
isEmpty(BOOST_THREAD_LIB_SUFFIX) {
|
|
||||||
BOOST_THREAD_LIB_SUFFIX = $$BOOST_LIB_SUFFIX
|
|
||||||
}
|
|
||||||
|
|
||||||
isEmpty(BDB_LIB_PATH) {
|
|
||||||
macx:BDB_LIB_PATH = /opt/homebrew/opt/berkeley-db@5/lib
|
|
||||||
}
|
|
||||||
|
|
||||||
isEmpty(BDB_LIB_SUFFIX) {
|
|
||||||
macx:BDB_LIB_SUFFIX =
|
|
||||||
}
|
|
||||||
|
|
||||||
isEmpty(BDB_INCLUDE_PATH) {
|
|
||||||
macx:BDB_INCLUDE_PATH = /opt/homebrew/opt/berkeley-db@5/include
|
|
||||||
}
|
|
||||||
|
|
||||||
isEmpty(BOOST_LIB_PATH) {
|
|
||||||
macx:BOOST_LIB_PATH = /opt/homebrew/opt/boost/lib
|
|
||||||
}
|
|
||||||
|
|
||||||
isEmpty(BOOST_INCLUDE_PATH) {
|
|
||||||
macx:BOOST_INCLUDE_PATH = /opt/homebrew/opt/boost/include
|
|
||||||
}
|
|
||||||
|
|
||||||
windows:DEFINES += WIN32
|
|
||||||
windows:RC_FILE = src/qt/res/triangles-qt.rc
|
|
||||||
|
|
||||||
windows:!contains(MINGW_THREAD_BUGFIX, 0) {
|
|
||||||
# At least qmake's win32-g++-cross profile is missing the -lmingwthrd
|
|
||||||
# thread-safety flag. GCC has -mthreads to enable this, but it doesn't
|
|
||||||
# work with static linking. -lmingwthrd must come BEFORE -lmingw, so
|
|
||||||
# it is prepended to QMAKE_LIBS_QT_ENTRY.
|
|
||||||
# It can be turned off with MINGW_THREAD_BUGFIX=0, just in case it causes
|
|
||||||
# any problems on some untested qmake profile now or in the future.
|
|
||||||
DEFINES += _MT
|
|
||||||
QMAKE_LIBS_QT_ENTRY = -lmingwthrd $$QMAKE_LIBS_QT_ENTRY
|
|
||||||
}
|
|
||||||
|
|
||||||
!windows:!macx {
|
|
||||||
DEFINES += LINUX
|
|
||||||
LIBS += -lrt
|
|
||||||
}
|
|
||||||
|
|
||||||
macx:HEADERS += src/qt/macdockiconhandler.h \
|
|
||||||
src/qt/macnotificationhandler.h
|
|
||||||
macx:OBJECTIVE_SOURCES += src/qt/macdockiconhandler.mm \
|
|
||||||
src/qt/macnotificationhandler.mm
|
|
||||||
|
|
||||||
macx:LIBS += -framework Foundation -framework ApplicationServices -framework AppKit
|
|
||||||
macx:DEFINES += MAC_OSX MSG_NOSIGNAL=0
|
|
||||||
macx:ICON = src/qt/res/icons/triangles.icns
|
|
||||||
macx:TARGET = "Triangles-Qt"
|
|
||||||
macx:QMAKE_CFLAGS_THREAD += -pthread
|
|
||||||
macx:QMAKE_LFLAGS_THREAD += -pthread
|
|
||||||
macx:QMAKE_CXXFLAGS_THREAD += -pthread
|
|
||||||
macx:QMAKE_CXXFLAGS += -Wno-reserved-user-defined-literal -Wno-deprecated-declarations
|
|
||||||
|
|
||||||
# Set libraries and includes at end, to use platform-defined defaults if not overridden
|
|
||||||
#$$join(ADDITIONAL_LIBS_PATH,,-L,)
|
|
||||||
INCLUDEPATH += $$BOOST_INCLUDE_PATH \
|
|
||||||
$$BDB_INCLUDE_PATH \
|
|
||||||
$$OPENSSL_INCLUDE_PATH \
|
|
||||||
#$$QRENCODE_INCLUDE_PATH \
|
|
||||||
$$EVENT_INCLUDE_PATH
|
|
||||||
|
|
||||||
LIBS += $$join(BOOST_LIB_PATH,,-L,) \
|
|
||||||
$$join(BDB_LIB_PATH,,-L,) \
|
|
||||||
$$join(OPENSSL_LIB_PATH,,-L,) \
|
|
||||||
#$$join(QRENCODE_LIB_PATH,,-L,) \
|
|
||||||
$$join(EVENT_LIB_PATH,,-L,)
|
|
||||||
|
|
||||||
LIBS += -lssl -lcrypto -ldb_cxx$$BDB_LIB_SUFFIX
|
|
||||||
LIBS += -levent -lz
|
|
||||||
# -lgdi32 has to happen after -lcrypto (see #681)
|
|
||||||
windows:LIBS += -lws2_32 -lshlwapi -lmswsock -lole32 -loleaut32 -luuid -lgdi32 -lcrypt32
|
|
||||||
|
|
||||||
LIBS += -lboost_filesystem$$BOOST_LIB_SUFFIX -lboost_program_options$$BOOST_LIB_SUFFIX -lboost_thread$$BOOST_THREAD_LIB_SUFFIX
|
|
||||||
LIBS += -lboost_chrono$$BOOST_LIB_SUFFIX
|
|
||||||
|
|
||||||
contains(RELEASE, 1) {
|
|
||||||
!windows:!macx {
|
|
||||||
# Linux: turn dynamic linking back on for c/c++ runtime libraries
|
|
||||||
LIBS += -Wl,-Bdynamic
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# ZMQ support (optional)
|
|
||||||
# Build with: qmake "USE_ZMQ=1"
|
|
||||||
contains(USE_ZMQ, 1) {
|
|
||||||
message(Building with ZMQ support)
|
|
||||||
DEFINES += ENABLE_ZMQ
|
|
||||||
LIBS += -lzmq
|
|
||||||
}
|
|
||||||
|
|
||||||
# Embedded Tor support (optional)
|
|
||||||
# Build with:
|
|
||||||
# qmake "USE_TOR_EMBEDDED=1" "TOR_SOURCE_ROOT=src/tor/tor-src"
|
|
||||||
contains(USE_TOR_EMBEDDED, 1) {
|
|
||||||
message(Building with embedded Tor support)
|
|
||||||
DEFINES += ENABLE_TOR_EMBEDDED
|
|
||||||
|
|
||||||
isEmpty(TOR_SOURCE_ROOT) {
|
|
||||||
TOR_SOURCE_ROOT = src/tor/tor-src
|
|
||||||
}
|
|
||||||
|
|
||||||
isEmpty(TOR_INCLUDE_PATH) {
|
|
||||||
TOR_INCLUDE_PATH = $$TOR_SOURCE_ROOT/src/feature/api
|
|
||||||
}
|
|
||||||
|
|
||||||
isEmpty(TOR_LIB_PATH) {
|
|
||||||
TOR_LIB_PATH = $$TOR_SOURCE_ROOT
|
|
||||||
}
|
|
||||||
|
|
||||||
!isEmpty(TOR_INCLUDE_PATH) {
|
|
||||||
INCLUDEPATH += $$TOR_INCLUDE_PATH
|
|
||||||
}
|
|
||||||
|
|
||||||
for(path, TOR_LIB_PATH) {
|
|
||||||
LIBS += -L$$path
|
|
||||||
}
|
|
||||||
|
|
||||||
# Default static library set for the imported Tor 0.4.9.x tree.
|
|
||||||
# A full upstream build emits a top-level libtor.a aggregator.
|
|
||||||
# Override with TOR_EMBEDDED_LIBS from the qmake command line if needed.
|
|
||||||
isEmpty(TOR_EMBEDDED_LIBS) {
|
|
||||||
TOR_EMBEDDED_LIBS = -ltor
|
|
||||||
}
|
|
||||||
|
|
||||||
unix {
|
|
||||||
LIBS += -Wl,--start-group $$TOR_EMBEDDED_LIBS -Wl,--end-group
|
|
||||||
} else {
|
|
||||||
LIBS += $$TOR_EMBEDDED_LIBS
|
|
||||||
}
|
|
||||||
|
|
||||||
LIBS += -llzma -lzstd
|
|
||||||
windows:LIBS += -liphlpapi
|
|
||||||
}
|
|
||||||
|
|
||||||
system($$QMAKE_LRELEASE -silent $$_PRO_FILE_)
|
|
||||||
@@ -1,588 +0,0 @@
|
|||||||
TEMPLATE = app
|
|
||||||
TARGET = triangles-qt
|
|
||||||
|
|
||||||
VERSION = 4.2.1.0
|
|
||||||
INCLUDEPATH += src src/json src/qt src/qt/plugins/mrichtexteditor
|
|
||||||
DEFINES += QT_GUI BOOST_THREAD_USE_LIB BOOST_SPIRIT_THREADSAFE BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN __NO_SYSTEM_INCLUDES
|
|
||||||
CONFIG += no_include_pwd
|
|
||||||
CONFIG += thread
|
|
||||||
|
|
||||||
QMAKE_CXXFLAGS = -fpermissive
|
|
||||||
|
|
||||||
greaterThan(QT_MAJOR_VERSION, 4) {
|
|
||||||
QT += widgets
|
|
||||||
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
|
|
||||||
}
|
|
||||||
|
|
||||||
#INCLUDEPATH += /usr/include/i386-linux-gnu
|
|
||||||
INCLUDEPATH += /opt/mxe/usr/i686-pc-mingw32.static/include
|
|
||||||
LIBS_PATH=/opt/mxe/usr/i686-pc-mingw32.static/lib
|
|
||||||
LIBS += $$join(LIBS_PATH,,-L,)
|
|
||||||
|
|
||||||
# for boost 1.37, add -mt to the boost libraries
|
|
||||||
# use: qmake BOOST_LIB_SUFFIX=-mt
|
|
||||||
# for boost thread win32 with _win32 sufix
|
|
||||||
# use: BOOST_THREAD_LIB_SUFFIX=_win32-...
|
|
||||||
# or when linking against a specific BerkelyDB version: BDB_LIB_SUFFIX=-4.8
|
|
||||||
|
|
||||||
# Dependency library locations can be customized with:
|
|
||||||
# BOOST_INCLUDE_PATH, BOOST_LIB_PATH, BDB_INCLUDE_PATH,
|
|
||||||
# BDB_LIB_PATH, OPENSSL_INCLUDE_PATH and OPENSSL_LIB_PATH respectively
|
|
||||||
|
|
||||||
OBJECTS_DIR = build
|
|
||||||
MOC_DIR = build
|
|
||||||
UI_DIR = build
|
|
||||||
|
|
||||||
# use: qmake "RELEASE=1"
|
|
||||||
contains(RELEASE, 1) {
|
|
||||||
# Mac: compile for maximum compatibility (10.5, 32-bit)
|
|
||||||
macx:QMAKE_CXXFLAGS += -mmacosx-version-min=10.5 -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.5.sdk
|
|
||||||
|
|
||||||
!windows:!macx {
|
|
||||||
# Linux: static link
|
|
||||||
LIBS += -Wl,-Bstatic
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
!win32 {
|
|
||||||
# for extra security against potential buffer overflows: enable GCCs Stack Smashing Protection
|
|
||||||
QMAKE_CXXFLAGS *= -fstack-protector-all --param ssp-buffer-size=1
|
|
||||||
QMAKE_LFLAGS *= -fstack-protector-all --param ssp-buffer-size=1
|
|
||||||
# We need to exclude this for Windows cross compile with MinGW 4.2.x, as it will result in a non-working executable!
|
|
||||||
# This can be enabled for Windows, when we switch to MinGW >= 4.4.x.
|
|
||||||
}
|
|
||||||
# for extra security on Windows: enable ASLR and DEP via GCC linker flags
|
|
||||||
win32:QMAKE_LFLAGS *= -Wl,--large-address-aware -static
|
|
||||||
win32:QMAKE_LFLAGS += -static-libgcc -static-libstdc++
|
|
||||||
lessThan(QT_MAJOR_VERSION, 5): win32: QMAKE_LFLAGS *= -static
|
|
||||||
|
|
||||||
# use: qmake "USE_QRCODE=1"
|
|
||||||
# libqrencode (http://fukuchi.org/works/qrencode/index.en.html) must be installed for support
|
|
||||||
contains(USE_QRCODE, 1) {
|
|
||||||
message(Building with QRCode support)
|
|
||||||
DEFINES += USE_QRCODE
|
|
||||||
LIBS += -lqrencode
|
|
||||||
}
|
|
||||||
|
|
||||||
#triangles: use UPNP with TOR
|
|
||||||
USE_UPNP=1
|
|
||||||
# use: qmake "USE_UPNP=1" ( enabled by default; default)
|
|
||||||
# or: qmake "USE_UPNP=0" (disabled by default)
|
|
||||||
# or: qmake "USE_UPNP=-" (not supported)
|
|
||||||
# miniupnpc (http://miniupnp.free.fr/files/) must be installed for support
|
|
||||||
contains(USE_UPNP, -) {
|
|
||||||
message(Building without UPNP support)
|
|
||||||
} else {
|
|
||||||
message(Building with UPNP support)
|
|
||||||
count(USE_UPNP, 0) {
|
|
||||||
USE_UPNP=1
|
|
||||||
}
|
|
||||||
DEFINES += USE_UPNP=$$USE_UPNP STATICLIB
|
|
||||||
INCLUDEPATH += $$MINIUPNPC_INCLUDE_PATH
|
|
||||||
LIBS += $$join(MINIUPNPC_LIB_PATH,,-L,) -lminiupnpc
|
|
||||||
win32:LIBS += -liphlpapi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# use: qmake "USE_DBUS=1"
|
|
||||||
contains(USE_DBUS, 1) {
|
|
||||||
message(Building with DBUS (Freedesktop notifications) support)
|
|
||||||
DEFINES += USE_DBUS
|
|
||||||
QT += dbus
|
|
||||||
}
|
|
||||||
|
|
||||||
# use: qmake "USE_IPV6=1" ( enabled by default; default)
|
|
||||||
# or: qmake "USE_IPV6=0" (disabled by default)
|
|
||||||
# or: qmake "USE_IPV6=-" (not supported)
|
|
||||||
contains(USE_IPV6, -) {
|
|
||||||
message(Building without IPv6 support)
|
|
||||||
} else {
|
|
||||||
count(USE_IPV6, 0) {
|
|
||||||
USE_IPV6=1
|
|
||||||
}
|
|
||||||
DEFINES += USE_IPV6=$$USE_IPV6
|
|
||||||
}
|
|
||||||
|
|
||||||
contains(TRIANGLES_NEED_QT_PLUGINS, 1) {
|
|
||||||
message(Building with Qt Plugins)
|
|
||||||
DEFINES += TRIANGLES_NEED_QT_PLUGINS
|
|
||||||
QTPLUGIN += qcncodecs qjpcodecs qtwcodecs qkrcodecs qtaccessiblewidgets
|
|
||||||
} else {
|
|
||||||
message(Building without Qt Plugins)
|
|
||||||
}
|
|
||||||
|
|
||||||
INCLUDEPATH += src/leveldb/include src/leveldb/helpers
|
|
||||||
LIBS += $$PWD/src/leveldb/libleveldb.a $$PWD/src/leveldb/libmemenv.a
|
|
||||||
SOURCES += src/txdb-leveldb.cpp \
|
|
||||||
src/blake.c \
|
|
||||||
src/groestl.c \
|
|
||||||
src/jh.c \
|
|
||||||
src/keccak.c \
|
|
||||||
src/skein.c \
|
|
||||||
src/aes_helper.c \
|
|
||||||
src/bmw.c \
|
|
||||||
src/cubehash.c \
|
|
||||||
src/echo.c \
|
|
||||||
src/fugue.c \
|
|
||||||
src/hamsi.c \
|
|
||||||
src/hamsi_helper.c \
|
|
||||||
src/luffa.c \
|
|
||||||
src/shavite.c \
|
|
||||||
src/simd.c
|
|
||||||
|
|
||||||
!win32 {
|
|
||||||
# we use QMAKE_CXXFLAGS_RELEASE even without RELEASE=1 because we use RELEASE to indicate linking preferences not -O preferences
|
|
||||||
genleveldb.commands = cd $$PWD/src/leveldb && CC=$$QMAKE_CC CXX=$$QMAKE_CXX $(MAKE) OPT=\"$$QMAKE_CXXFLAGS $$QMAKE_CXXFLAGS_RELEASE\" libleveldb.a libmemenv.a
|
|
||||||
} else {
|
|
||||||
# make an educated guess about what the ranlib command is called
|
|
||||||
isEmpty(QMAKE_RANLIB) {
|
|
||||||
QMAKE_RANLIB = $$replace(QMAKE_STRIP, strip, ranlib)
|
|
||||||
}
|
|
||||||
LIBS += -lshlwapi
|
|
||||||
genleveldb.commands = cd $$PWD/src/leveldb && CC=$$QMAKE_CC CXX=$$QMAKE_CXX TARGET_OS=OS_WINDOWS_CROSSCOMPILE $(MAKE) OPT=\"$$QMAKE_CXXFLAGS $$QMAKE_CXXFLAGS_RELEASE\" libleveldb.a libmemenv.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libleveldb.a && $$QMAKE_RANLIB $$PWD/src/leveldb/libmemenv.a
|
|
||||||
}
|
|
||||||
genleveldb.target = $$PWD/src/leveldb/libleveldb.a
|
|
||||||
genleveldb.depends = FORCE
|
|
||||||
PRE_TARGETDEPS += $$PWD/src/leveldb/libleveldb.a
|
|
||||||
QMAKE_EXTRA_TARGETS += genleveldb
|
|
||||||
# Gross ugly hack that depends on qmake internals, unfortunately there is no other way to do it.
|
|
||||||
QMAKE_CLEAN += $$PWD/src/leveldb/libleveldb.a; cd $$PWD/src/leveldb ; $(MAKE) clean
|
|
||||||
|
|
||||||
# regenerate src/build.h
|
|
||||||
!windows|contains(USE_BUILD_INFO, 1) {
|
|
||||||
genbuild.depends = FORCE
|
|
||||||
genbuild.commands = cd $$PWD; /bin/sh share/genbuild.sh $$OUT_PWD/build/build.h
|
|
||||||
genbuild.target = $$OUT_PWD/build/build.h
|
|
||||||
PRE_TARGETDEPS += $$OUT_PWD/build/build.h
|
|
||||||
QMAKE_EXTRA_TARGETS += genbuild
|
|
||||||
DEFINES += HAVE_BUILD_INFO
|
|
||||||
}
|
|
||||||
|
|
||||||
contains(USE_O3, 1) {
|
|
||||||
message(Building O3 optimization flag)
|
|
||||||
QMAKE_CXXFLAGS_RELEASE -= -O2
|
|
||||||
QMAKE_CFLAGS_RELEASE -= -O2
|
|
||||||
QMAKE_CXXFLAGS += -O3
|
|
||||||
QMAKE_CFLAGS += -O3
|
|
||||||
}
|
|
||||||
|
|
||||||
win32-g++ {
|
|
||||||
message("32 platform, adding -msse2 flag")
|
|
||||||
|
|
||||||
QMAKE_CXXFLAGS += -msse2
|
|
||||||
QMAKE_CFLAGS += -msse2
|
|
||||||
}
|
|
||||||
|
|
||||||
QMAKE_CXXFLAGS_WARN_ON = -fdiagnostics-show-option -Wall -Wextra -Wno-ignored-qualifiers -Wformat -Wformat-security -Wno-unused-parameter -Wstack-protector
|
|
||||||
|
|
||||||
|
|
||||||
# Input
|
|
||||||
DEPENDPATH += src src/json src/qt
|
|
||||||
HEADERS += src/qt/trianglesgui.h \
|
|
||||||
src/qt/transactiontablemodel.h \
|
|
||||||
src/qt/addresstablemodel.h \
|
|
||||||
src/qt/optionsdialog.h \
|
|
||||||
src/qt/coincontroldialog.h \
|
|
||||||
src/qt/coincontroltreewidget.h \
|
|
||||||
src/qt/sendcoinsdialog.h \
|
|
||||||
src/qt/addressbookpage.h \
|
|
||||||
src/qt/aboutdialog.h \
|
|
||||||
src/qt/editaddressdialog.h \
|
|
||||||
src/qt/trianglesaddressvalidator.h \
|
|
||||||
src/alert.h \
|
|
||||||
src/addrman.h \
|
|
||||||
src/base58.h \
|
|
||||||
src/bignum.h \
|
|
||||||
src/checkpoints.h \
|
|
||||||
src/compat.h \
|
|
||||||
src/coincontrol.h \
|
|
||||||
src/sync.h \
|
|
||||||
src/util.h \
|
|
||||||
src/uint256.h \
|
|
||||||
src/kernel.h \
|
|
||||||
src/scrypt.h \
|
|
||||||
src/pbkdf2.h \
|
|
||||||
src/serialize.h \
|
|
||||||
src/strlcpy.h \
|
|
||||||
src/smessage.h \
|
|
||||||
src/main.h \
|
|
||||||
src/miner.h \
|
|
||||||
src/net.h \
|
|
||||||
src/key.h \
|
|
||||||
src/db.h \
|
|
||||||
src/txdb.h \
|
|
||||||
src/walletdb.h \
|
|
||||||
src/script.h \
|
|
||||||
src/init.h \
|
|
||||||
src/irc.h \
|
|
||||||
src/mruset.h \
|
|
||||||
src/json/json_spirit_writer_template.h \
|
|
||||||
src/json/json_spirit_writer.h \
|
|
||||||
src/json/json_spirit_value.h \
|
|
||||||
src/json/json_spirit_utils.h \
|
|
||||||
src/json/json_spirit_stream_reader.h \
|
|
||||||
src/json/json_spirit_reader_template.h \
|
|
||||||
src/json/json_spirit_reader.h \
|
|
||||||
src/json/json_spirit_error_position.h \
|
|
||||||
src/json/json_spirit.h \
|
|
||||||
src/qt/clientmodel.h \
|
|
||||||
src/qt/guiutil.h \
|
|
||||||
src/qt/transactionrecord.h \
|
|
||||||
src/qt/guiconstants.h \
|
|
||||||
src/qt/optionsmodel.h \
|
|
||||||
src/qt/monitoreddatamapper.h \
|
|
||||||
src/qt/transactiondesc.h \
|
|
||||||
src/qt/transactiondescdialog.h \
|
|
||||||
src/qt/trianglesamountfield.h \
|
|
||||||
src/wallet.h \
|
|
||||||
src/keystore.h \
|
|
||||||
src/qt/transactionfilterproxy.h \
|
|
||||||
src/qt/transactionview.h \
|
|
||||||
src/qt/walletmodel.h \
|
|
||||||
src/trianglesrpc.h \
|
|
||||||
src/qt/overviewpage.h \
|
|
||||||
src/qt/csvmodelwriter.h \
|
|
||||||
src/crypter.h \
|
|
||||||
src/qt/sendcoinsentry.h \
|
|
||||||
src/qt/qvalidatedlineedit.h \
|
|
||||||
src/qt/trianglesunits.h \
|
|
||||||
src/qt/qvaluecombobox.h \
|
|
||||||
src/qt/askpassphrasedialog.h \
|
|
||||||
src/protocol.h \
|
|
||||||
src/qt/notificator.h \
|
|
||||||
src/qt/qtipcserver.h \
|
|
||||||
src/allocators.h \
|
|
||||||
src/ui_interface.h \
|
|
||||||
src/qt/rpcconsole.h \
|
|
||||||
src/version.h \
|
|
||||||
src/netbase.h \
|
|
||||||
src/clientversion.h \
|
|
||||||
src/hashblock.h \
|
|
||||||
src/sph_blake.h \
|
|
||||||
src/sph_groestl.h \
|
|
||||||
src/sph_jh.h \
|
|
||||||
src/sph_keccak.h \
|
|
||||||
src/sph_skein.h \
|
|
||||||
src/sph_types.h \
|
|
||||||
src/qt/messagepage.h \
|
|
||||||
src/qt/dialog_move_handler.h \
|
|
||||||
src/qt/signmessagepage.h \
|
|
||||||
src/qt/verifymessagepage.h \
|
|
||||||
src/qt/messagemodel.h \
|
|
||||||
src/qt/sendmessagesdialog.h \
|
|
||||||
src/qt/sendmessagesentry.h \
|
|
||||||
src/qt/plugins/mrichtexteditor/mrichtextedit.h \
|
|
||||||
src/qt/qvalidatedtextedit.h \
|
|
||||||
src/txdb-leveldb.h \
|
|
||||||
src/onionseed.h \
|
|
||||||
src/sph_bmw.h \
|
|
||||||
src/sph_cubehash.h \
|
|
||||||
src/sph_echo.h \
|
|
||||||
src/sph_fugue.h \
|
|
||||||
src/sph_hamsi.h \
|
|
||||||
src/sph_luffa.h \
|
|
||||||
src/sph_shavite.h \
|
|
||||||
src/sph_simd.h
|
|
||||||
|
|
||||||
SOURCES += src/qt/triangles.cpp src/qt/trianglesgui.cpp \
|
|
||||||
src/qt/transactiontablemodel.cpp \
|
|
||||||
src/qt/addresstablemodel.cpp \
|
|
||||||
src/qt/optionsdialog.cpp \
|
|
||||||
src/qt/sendcoinsdialog.cpp \
|
|
||||||
src/qt/coincontroldialog.cpp \
|
|
||||||
src/qt/coincontroltreewidget.cpp \
|
|
||||||
src/qt/addressbookpage.cpp \
|
|
||||||
src/qt/aboutdialog.cpp \
|
|
||||||
src/qt/editaddressdialog.cpp \
|
|
||||||
src/qt/trianglesaddressvalidator.cpp \
|
|
||||||
src/tor/address.c \
|
|
||||||
src/tor/addressmap.c \
|
|
||||||
src/tor/aes.c \
|
|
||||||
src/tor/backtrace.c \
|
|
||||||
src/tor/buffers.c \
|
|
||||||
src/tor/channel.c \
|
|
||||||
src/tor/channeltls.c \
|
|
||||||
src/tor/circpathbias.c \
|
|
||||||
src/tor/circuitbuild.c \
|
|
||||||
src/tor/circuitlist.c \
|
|
||||||
src/tor/circuitmux.c \
|
|
||||||
src/tor/circuitmux_ewma.c \
|
|
||||||
src/tor/circuitstats.c \
|
|
||||||
src/tor/circuituse.c \
|
|
||||||
src/tor/command.c \
|
|
||||||
src/tor/compat.c \
|
|
||||||
src/tor/compat_libevent.c \
|
|
||||||
src/tor/config.c \
|
|
||||||
src/tor/config_codedigest.c \
|
|
||||||
src/tor/confparse.c \
|
|
||||||
src/tor/connection.c \
|
|
||||||
src/tor/connection_edge.c \
|
|
||||||
src/tor/connection_or.c \
|
|
||||||
src/tor/container.c \
|
|
||||||
src/tor/control.c \
|
|
||||||
src/tor/cpuworker.c \
|
|
||||||
src/tor/crypto.c \
|
|
||||||
src/tor/crypto_curve25519.c \
|
|
||||||
src/tor/crypto_format.c \
|
|
||||||
src/tor/curve25519-donna.c \
|
|
||||||
src/tor/di_ops.c \
|
|
||||||
src/tor/directory.c \
|
|
||||||
src/tor/dirserv.c \
|
|
||||||
src/tor/dirvote.c \
|
|
||||||
src/tor/dns.c \
|
|
||||||
src/tor/dnsserv.c \
|
|
||||||
src/tor/entrynodes.c \
|
|
||||||
src/tor/ext_orport.c \
|
|
||||||
src/tor/fp_pair.c \
|
|
||||||
src/tor/geoip.c \
|
|
||||||
src/tor/hibernate.c \
|
|
||||||
src/tor/log.c \
|
|
||||||
src/tor/memarea.c \
|
|
||||||
src/tor/mempool.c \
|
|
||||||
src/tor/microdesc.c \
|
|
||||||
src/tor/networkstatus.c \
|
|
||||||
src/tor/nodelist.c \
|
|
||||||
src/tor/onion.c \
|
|
||||||
src/tor/onion_fast.c \
|
|
||||||
src/tor/onion_main.c \
|
|
||||||
src/tor/onion_ntor.c \
|
|
||||||
src/tor/onion_tap.c \
|
|
||||||
src/tor/policies.c \
|
|
||||||
src/tor/anonymize.cpp \
|
|
||||||
src/tor/procmon.c \
|
|
||||||
src/tor/reasons.c \
|
|
||||||
src/tor/relay.c \
|
|
||||||
src/tor/rendclient.c \
|
|
||||||
src/tor/rendcommon.c \
|
|
||||||
src/tor/rendmid.c \
|
|
||||||
src/tor/rendservice.c \
|
|
||||||
src/tor/rephist.c \
|
|
||||||
src/tor/replaycache.c \
|
|
||||||
src/tor/router.c \
|
|
||||||
src/tor/routerlist.c \
|
|
||||||
src/tor/routerparse.c \
|
|
||||||
src/tor/routerset.c \
|
|
||||||
src/tor/sandbox.c \
|
|
||||||
src/tor/statefile.c \
|
|
||||||
src/tor/status.c \
|
|
||||||
src/tor/strlcat.c \
|
|
||||||
src/tor/strlcpy.c \
|
|
||||||
src/tor/tor_util.c \
|
|
||||||
src/tor/torgzip.c \
|
|
||||||
src/tor/tortls.c \
|
|
||||||
src/tor/transports.c \
|
|
||||||
src/tor/util_codedigest.c \
|
|
||||||
src/alert.cpp \
|
|
||||||
src/version.cpp \
|
|
||||||
src/sync.cpp \
|
|
||||||
src/smessage.cpp \
|
|
||||||
src/util.cpp \
|
|
||||||
src/netbase.cpp \
|
|
||||||
src/key.cpp \
|
|
||||||
src/script.cpp \
|
|
||||||
src/main.cpp \
|
|
||||||
src/miner.cpp \
|
|
||||||
src/init.cpp \
|
|
||||||
src/net.cpp \
|
|
||||||
src/irc.cpp \
|
|
||||||
src/checkpoints.cpp \
|
|
||||||
src/addrman.cpp \
|
|
||||||
src/db.cpp \
|
|
||||||
src/walletdb.cpp \
|
|
||||||
src/qt/clientmodel.cpp \
|
|
||||||
src/qt/guiutil.cpp \
|
|
||||||
src/qt/transactionrecord.cpp \
|
|
||||||
src/qt/optionsmodel.cpp \
|
|
||||||
src/qt/monitoreddatamapper.cpp \
|
|
||||||
src/qt/transactiondesc.cpp \
|
|
||||||
src/qt/transactiondescdialog.cpp \
|
|
||||||
src/qt/trianglesstrings.cpp \
|
|
||||||
src/qt/trianglesamountfield.cpp \
|
|
||||||
src/wallet.cpp \
|
|
||||||
src/keystore.cpp \
|
|
||||||
src/qt/transactionfilterproxy.cpp \
|
|
||||||
src/qt/transactionview.cpp \
|
|
||||||
src/qt/walletmodel.cpp \
|
|
||||||
src/trianglesrpc.cpp \
|
|
||||||
src/rpcdump.cpp \
|
|
||||||
src/rpcnet.cpp \
|
|
||||||
src/rpcmining.cpp \
|
|
||||||
src/rpcwallet.cpp \
|
|
||||||
src/rpcblockchain.cpp \
|
|
||||||
src/rpcrawtransaction.cpp \
|
|
||||||
src/rpcsmessage.cpp \
|
|
||||||
src/qt/overviewpage.cpp \
|
|
||||||
src/qt/csvmodelwriter.cpp \
|
|
||||||
src/crypter.cpp \
|
|
||||||
src/qt/sendcoinsentry.cpp \
|
|
||||||
src/qt/qvalidatedlineedit.cpp \
|
|
||||||
src/qt/trianglesunits.cpp \
|
|
||||||
src/qt/qvaluecombobox.cpp \
|
|
||||||
src/qt/askpassphrasedialog.cpp \
|
|
||||||
src/protocol.cpp \
|
|
||||||
src/qt/notificator.cpp \
|
|
||||||
src/qt/qtipcserver.cpp \
|
|
||||||
src/qt/rpcconsole.cpp \
|
|
||||||
src/qt/messagepage.cpp \
|
|
||||||
src/qt/dialog_move_handler.cpp \
|
|
||||||
src/qt/signmessagepage.cpp \
|
|
||||||
src/qt/verifymessagepage.cpp \
|
|
||||||
src/qt/messagemodel.cpp \
|
|
||||||
src/qt/sendmessagesdialog.cpp \
|
|
||||||
src/qt/sendmessagesentry.cpp \
|
|
||||||
src/qt/qvalidatedtextedit.cpp \
|
|
||||||
src/qt/plugins/mrichtexteditor/mrichtextedit.cpp \
|
|
||||||
src/noui.cpp \
|
|
||||||
src/kernel.cpp \
|
|
||||||
src/scrypt-arm.S \
|
|
||||||
src/scrypt-x86.S \
|
|
||||||
src/scrypt-x86_64.S \
|
|
||||||
src/scrypt.cpp \
|
|
||||||
src/pbkdf2.cpp
|
|
||||||
|
|
||||||
RESOURCES += \
|
|
||||||
src/qt/triangles.qrc
|
|
||||||
|
|
||||||
FORMS += \
|
|
||||||
src/qt/forms/coincontroldialog.ui \
|
|
||||||
src/qt/forms/sendcoinsdialog.ui \
|
|
||||||
src/qt/forms/addressbookpage.ui \
|
|
||||||
src/qt/forms/aboutdialog.ui \
|
|
||||||
src/qt/forms/editaddressdialog.ui \
|
|
||||||
src/qt/forms/transactiondescdialog.ui \
|
|
||||||
src/qt/forms/overviewpage.ui \
|
|
||||||
src/qt/forms/sendcoinsentry.ui \
|
|
||||||
src/qt/forms/askpassphrasedialog.ui \
|
|
||||||
src/qt/forms/rpcconsole.ui \
|
|
||||||
src/qt/forms/optionsdialog.ui \
|
|
||||||
src/qt/forms/messagepage.ui \
|
|
||||||
src/qt/forms/sendmessagesentry.ui \
|
|
||||||
src/qt/forms/sendmessagesdialog.ui \
|
|
||||||
src/qt/plugins/mrichtexteditor/mrichtextedit.ui \
|
|
||||||
src/qt/forms/mainwindow.ui \
|
|
||||||
src/qt/forms/signmessagepage.ui \
|
|
||||||
src/qt/forms/verifymessagepage.ui \
|
|
||||||
src/qt/forms/transactionspage.ui
|
|
||||||
|
|
||||||
|
|
||||||
contains(USE_QRCODE, 1) {
|
|
||||||
HEADERS += src/qt/qrcodedialog.h
|
|
||||||
SOURCES += src/qt/qrcodedialog.cpp
|
|
||||||
FORMS += src/qt/forms/qrcodedialog.ui
|
|
||||||
}
|
|
||||||
|
|
||||||
CODECFORTR = UTF-8
|
|
||||||
|
|
||||||
# for lrelease/lupdate
|
|
||||||
# also add new translations to src/qt/triangles.qrc under translations/
|
|
||||||
TRANSLATIONS = $$files(src/qt/locale/triangles_*.ts)
|
|
||||||
|
|
||||||
isEmpty(QMAKE_LRELEASE) {
|
|
||||||
win32:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]\\lrelease.exe
|
|
||||||
else:QMAKE_LRELEASE = $$[QT_INSTALL_BINS]/lrelease
|
|
||||||
}
|
|
||||||
isEmpty(QM_DIR):QM_DIR = $$PWD/src/qt/locale
|
|
||||||
# automatically build translations, so they can be included in resource file
|
|
||||||
TSQM.name = lrelease ${QMAKE_FILE_IN}
|
|
||||||
TSQM.input = TRANSLATIONS
|
|
||||||
TSQM.output = $$QM_DIR/${QMAKE_FILE_BASE}.qm
|
|
||||||
TSQM.commands = $$QMAKE_LRELEASE ${QMAKE_FILE_IN} -qm ${QMAKE_FILE_OUT}
|
|
||||||
TSQM.CONFIG = no_link
|
|
||||||
QMAKE_EXTRA_COMPILERS += TSQM
|
|
||||||
|
|
||||||
# "Other files" to show in Qt Creator
|
|
||||||
OTHER_FILES += \
|
|
||||||
doc/*.rst doc/*.txt doc/README README.md res/triangles-qt.rc
|
|
||||||
|
|
||||||
# platform specific defaults, if not overridden on command line
|
|
||||||
isEmpty(BOOST_LIB_SUFFIX) {
|
|
||||||
macx:BOOST_LIB_SUFFIX = -mt
|
|
||||||
windows:BOOST_LIB_SUFFIX = -mt
|
|
||||||
}
|
|
||||||
|
|
||||||
isEmpty(BOOST_THREAD_LIB_SUFFIX) {
|
|
||||||
win32:BOOST_THREAD_LIB_SUFFIX = _win32$$BOOST_LIB_SUFFIX
|
|
||||||
else:BOOST_THREAD_LIB_SUFFIX = $$BOOST_LIB_SUFFIX
|
|
||||||
}
|
|
||||||
|
|
||||||
isEmpty(BDB_LIB_PATH) {
|
|
||||||
macx:BDB_LIB_PATH = /opt/local/lib/db48
|
|
||||||
}
|
|
||||||
|
|
||||||
isEmpty(BDB_LIB_SUFFIX) {
|
|
||||||
macx:BDB_LIB_SUFFIX = -4.8
|
|
||||||
}
|
|
||||||
|
|
||||||
isEmpty(BDB_INCLUDE_PATH) {
|
|
||||||
macx:BDB_INCLUDE_PATH = /opt/local/include/db48
|
|
||||||
}
|
|
||||||
|
|
||||||
isEmpty(BOOST_LIB_PATH) {
|
|
||||||
macx:BOOST_LIB_PATH = /opt/local/lib
|
|
||||||
}
|
|
||||||
|
|
||||||
isEmpty(BOOST_INCLUDE_PATH) {
|
|
||||||
macx:BOOST_INCLUDE_PATH = /opt/local/include
|
|
||||||
}
|
|
||||||
|
|
||||||
windows:DEFINES += WIN32
|
|
||||||
windows:RC_FILE = src/qt/res/triangles-qt.rc
|
|
||||||
|
|
||||||
windows:!contains(MINGW_THREAD_BUGFIX, 0) {
|
|
||||||
# At least qmake's win32-g++-cross profile is missing the -lmingwthrd
|
|
||||||
# thread-safety flag. GCC has -mthreads to enable this, but it doesn't
|
|
||||||
# work with static linking. -lmingwthrd must come BEFORE -lmingw, so
|
|
||||||
# it is prepended to QMAKE_LIBS_QT_ENTRY.
|
|
||||||
# It can be turned off with MINGW_THREAD_BUGFIX=0, just in case it causes
|
|
||||||
# any problems on some untested qmake profile now or in the future.
|
|
||||||
DEFINES += _MT
|
|
||||||
QMAKE_LIBS_QT_ENTRY = -lmingwthrd $$QMAKE_LIBS_QT_ENTRY
|
|
||||||
}
|
|
||||||
|
|
||||||
!windows:!macx {
|
|
||||||
DEFINES += LINUX
|
|
||||||
LIBS += -lrt
|
|
||||||
}
|
|
||||||
|
|
||||||
macx:HEADERS += src/qt/macdockiconhandler.h \
|
|
||||||
src/qt/macnotificationhandler.h
|
|
||||||
macx:OBJECTIVE_SOURCES += src/qt/macdockiconhandler.mm \
|
|
||||||
src/qt/macnotificationhandler.mm
|
|
||||||
macx:LIBS += -framework Foundation -framework ApplicationServices -framework AppKit
|
|
||||||
macx:DEFINES += MAC_OSX MSG_NOSIGNAL=0
|
|
||||||
macx:ICON = src/qt/res/icons/triangles.icns
|
|
||||||
macx:TARGET = "Triangles-Qt"
|
|
||||||
macx:QMAKE_CFLAGS_THREAD += -pthread
|
|
||||||
macx:QMAKE_LFLAGS_THREAD += -pthread
|
|
||||||
macx:QMAKE_CXXFLAGS_THREAD += -pthread
|
|
||||||
|
|
||||||
# Set libraries and includes at end, to use platform-defined defaults if not overridden
|
|
||||||
#$$join(ADDITIONAL_LIBS_PATH,,-L,)
|
|
||||||
INCLUDEPATH += $$BOOST_INCLUDE_PATH \
|
|
||||||
$$BDB_INCLUDE_PATH \
|
|
||||||
$$OPENSSL_INCLUDE_PATH \
|
|
||||||
#$$QRENCODE_INCLUDE_PATH \
|
|
||||||
$$EVENT_INCLUDE_PATH
|
|
||||||
|
|
||||||
LIBS += $$join(BOOST_LIB_PATH,,-L,) \
|
|
||||||
$$join(BDB_LIB_PATH,,-L,) \
|
|
||||||
$$join(OPENSSL_LIB_PATH,,-L,) \
|
|
||||||
#$$join(QRENCODE_LIB_PATH,,-L,) \
|
|
||||||
$$join(EVENT_LIB_PATH,,-L,)
|
|
||||||
|
|
||||||
LIBS += -lssl -lcrypto -ldb_cxx$$BDB_LIB_SUFFIX
|
|
||||||
LIBS += -levent -lz
|
|
||||||
# -lgdi32 has to happen after -lcrypto (see #681)
|
|
||||||
windows:LIBS += -lws2_32 -lshlwapi -lmswsock -lole32 -loleaut32 -luuid -lgdi32
|
|
||||||
|
|
||||||
LIBS += -lboost_system$$BOOST_LIB_SUFFIX -lboost_filesystem$$BOOST_LIB_SUFFIX -lboost_program_options$$BOOST_LIB_SUFFIX -lboost_thread$$BOOST_THREAD_LIB_SUFFIX
|
|
||||||
windows:LIBS += -lboost_chrono$$BOOST_LIB_SUFFIX
|
|
||||||
|
|
||||||
contains(RELEASE, 1) {
|
|
||||||
!windows:!macx {
|
|
||||||
# Linux: turn dynamic linking back on for c/c++ runtime libraries
|
|
||||||
LIBS += -Wl,-Bdynamic
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
system($$QMAKE_LRELEASE -silent $$_PRO_FILE_)
|
|
||||||
Reference in New Issue
Block a user