From dacd0812bd9d26992f804a15c0e4381bc187fa60 Mon Sep 17 00:00:00 2001 From: Christopher Wellons Date: Sun, 5 Apr 2026 22:33:15 -0400 Subject: [PATCH] Introduce dcmake CMake debugger UI I wrote this new tool yesterday after reading about "cmake --debugger" the night before, and it's already been powerful and useful. In the past this would be a month-long project, but in 2026 it only takes a day. --- Dockerfile | 25 +++++++++++++++++++++++++ README.md | 3 ++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index be64299..ba2c78e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -183,6 +183,16 @@ RUN curl --insecure --location --remote-name-all --remote-header-name \ && mkdir cmake \ && tar xzf cmake-$CMAKE_VERSION.tar.gz -C cmake --strip-components=1 +FROM base AS dl-dcmake +ARG DCMAKE_VERSION=1.0.0 \ + DCMAKE_SHA256=3d29da8d7a689ed6a57d49b6f06df97423518acefbc85fc28c05b0c6fbb0143e +WORKDIR /dl +RUN curl --insecure --location --remote-name-all --remote-header-name \ + https://github.com/skeeto/dcmake/releases/download/v$DCMAKE_VERSION/dcmake-$DCMAKE_VERSION.tar.gz \ + && printf '%s %s\n' $DCMAKE_SHA256 dcmake-$DCMAKE_VERSION.tar.gz | sha256sum -c \ + && mkdir dcmake \ + && tar xzf dcmake-$DCMAKE_VERSION.tar.gz -C dcmake --strip-components=1 + FROM base AS dl-7z ARG Z7_VERSION=2301 \ Z7_SHA256=356071007360e5a1824d9904993e8b2480b51b570e8c9faf7c0f58ebe4bf9f74 @@ -723,6 +733,20 @@ RUN cmake -DCMAKE_BUILD_TYPE=Release \ && mkdir -p /out/bin \ && cp ninja.exe /out/bin/ +FROM cross AS build-dcmake +COPY --from=dl-dcmake /dl/ /dl/ + +WORKDIR /dcmake +RUN cmake -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_SYSTEM_NAME=Windows \ + -DCMAKE_CXX_COMPILER=$ARCH-g++ \ + -DCMAKE_RC_COMPILER=$ARCH-windres \ + -DCMAKE_EXE_LINKER_FLAGS="-s" \ + /dl/dcmake \ + && make -j$(nproc) \ + && mkdir -p /out/bin \ + && cp dcmake.exe /out/bin/ + FROM cross AS build-cmake COPY --from=dl-cmake /dl/ /dl/ COPY --from=build-pdcurses /deps/lib/libcurses.a /deps/lib/ @@ -777,6 +801,7 @@ COPY --from=build-ctags /out/ $PREFIX/ COPY --from=build-zstd /out/ $PREFIX/ COPY --from=build-ccache /out/ $PREFIX/ COPY --from=build-ninja /out/ $PREFIX/ +COPY --from=build-dcmake /out/ $PREFIX/ COPY --from=build-cmake /out$PREFIX/ $PREFIX/ COPY --from=build-7z /dl/7z/7z.sfx /7z/ diff --git a/README.md b/README.md index 58c7d06..6ed43a8 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Included tools: * [Mingw-w64 GCC][w64] : compilers, linker, assembler * [GDB][gdb] : debugger * [GNU Make][make] : standard build tool -* [CMake][cmake] with [Ninja][ninja]: build system +* [CMake][cmake] with [Ninja][ninja] and [a debugger][dcmake] : build system * [busybox-w32][bb] : standard unix utilities, including sh * [Vim][vim] : powerful text editor * [Universal Ctags][ctags] : source navigation @@ -222,6 +222,7 @@ binaries. [ccache]: https://ccache.dev/ [cmake]: https://cmake.org/ [crt]: https://nullprogram.com/blog/2023/02/15/ +[dcmake]: https://github.com/skeeto/dcmake [ctags]: https://github.com/universal-ctags/ctags [debugbreak]: https://nullprogram.com/blog/2022/07/31/ [doc-bb]: https://busybox.net/downloads/BusyBox.txt