Confidence: high · Effort: medium (1-3 d)
Problem
Four .bat files (build.bat, build_test.bat, build_bench.bat, build_ptxas.bat) each duplicate vswhere/vcvarsall setup and CUDA path detection. There is no IDE project, no dependency graph, no incremental rebuild. Contributors on Linux cannot even invoke nvcc against the project structure.
Files: build.bat, build_test.bat, build_bench.bat, build_ptxas.bat
Suggested fix
Add a top-level CMakeLists.txt using:
cmake_minimum_required(VERSION 3.18)
project(FSP.DMRCrack LANGUAGES C CUDA)
set(CMAKE_CUDA_ARCHITECTURES "75;86;89")
with targets:
dmrcrack (GUI, Windows-only behind BUILD_GUI=ON)
dmrcrack_cli (headless, all platforms — once the CLI issue lands)
test_strict_score, test_bench (test targets)
Keep build.bat as a one-line wrapper around cmake --build for muscle memory.
Why it matters
Hard prerequisite for cross-platform support and modern IDE integration. Unblocks the POSIX HAL and CLI mode issues.
Confidence: high · Effort: medium (1-3 d)
Problem
Four
.batfiles (build.bat,build_test.bat,build_bench.bat,build_ptxas.bat) each duplicate vswhere/vcvarsall setup and CUDA path detection. There is no IDE project, no dependency graph, no incremental rebuild. Contributors on Linux cannot even invokenvccagainst the project structure.Files:
build.bat,build_test.bat,build_bench.bat,build_ptxas.batSuggested fix
Add a top-level
CMakeLists.txtusing:with targets:
dmrcrack(GUI, Windows-only behindBUILD_GUI=ON)dmrcrack_cli(headless, all platforms — once the CLI issue lands)test_strict_score,test_bench(test targets)Keep
build.batas a one-line wrapper aroundcmake --buildfor muscle memory.Why it matters
Hard prerequisite for cross-platform support and modern IDE integration. Unblocks the POSIX HAL and CLI mode issues.