Makefile for reference:
override CFLAGS += -Wl,--entry=_start
override CFLAGS += -Wl,--gc-sections
override CFLAGS += -fdata-sections
override CFLAGS += -ffreestanding
override CFLAGS += -ffunction-sections
override CFLAGS += -fno-asynchronous-unwind-tables
override CFLAGS += -fno-builtin
override CFLAGS += -fno-exceptions
override CFLAGS += -fno-rtti
override CFLAGS += -fno-unwind-tables
override CFLAGS += -masm=intel
override CFLAGS += -nostdlib
override CFLAGS += -static
override CFLAGS += -std=gnu23
override CXXFLAGS := ${CFLAGS} -std=gnu++23 -nostdlib++
override MAKEFILE_DEPS := Makefile

SRC.c := ${wildcard *.c}
SRC.cpp := ${wildcard *.cpp}

c.out: ${patsubst %.c,%.c.o,${SRC.c}}
${LINK.c} -o $@ $^ ${LDLIBS}
strip -sR .comment $@

%.c.o: %.c ${MAKEFILE_DEPS}
${COMPILE.c} -o $@ $< -MMD -MP

cpp.out: ${patsubst %.cpp,%.cpp.o,${SRC.cpp}}
${LINK.cpp} -o $@ $^ ${LDLIBS}
strip -sR .comment $@

%.cpp.o: %.cpp ${MAKEFILE_DEPS}
${COMPILE.cpp} -o $@ $< -MMD -MP

.PHONY: clean
clean:
@git clean -dfX

-include ${wildcard *.d}

Ceethe and C++ope C--niles.