Menu

About

Brad Lanam

Wiki Home

About

I wrote mkconfig many years ago (see: di: wiki: History). mkconfig is a configuration tool written in portable shell script. It doesn't have any Makefile generation capabilities.

While writing BallroomDJ 4, I tried to update mkconfig to handle some paths with spaces in them, and failed. I switched to using cmake for my projects.

In February 2026, the new release of cmake-4 under Msys2 on Windows broke for me. I submitted a ticket for one problem. Apparently fatal errors are not fatal (though they get logged), and cmake was doing very strange things afterwards.

There is another issue in cmake that was causing my build on Windows to fail (I don't recall what). I have never bothered to try and debug the problem. I downloaded cmake-3 for Windows and am currently using it for the build. cmake-4 on MacOS appears to work ok.

So now this project, mkc.

  • Goals
    • Straightforward, understandable algol-like syntax.
      Both cmake and mkconfig have weird syntax.
      Use a grammar so that the syntax is regular and extendable.
    • UTF-8 support.
    • Cross platform support.
    • Be able to associate checks with particular profiles/targets.
    • Modern language support.
      Despite wanting to use mkc for di on legacy systems, I think
      it is better to just skip that and assume some modernity.
  • Phase 1
    • Check for compiler flags.
    • Check for headers (mostly not needed on modern systems).
    • Check for library functions.
    • Check for defines.
    • Check for types.
    • Check for structure members.
    • Check size of types.
    • Be able to name the checks.
      --name=variable-name
    • Configure a file.
    • Test this with the
      libmp4tag
      package.
  • Phase 2
    • Package support (via pkg-config files or .cmake files).
    • Test with di.
      di checks a lot of stuff. Many checks will be missing.
      Start adding these checks in.
  • Phase 3
    • Variable cache. The usual invalidation problem.
  • Phase 4
    • Build executables.
    • Build shared libraries.
    • Test with libmp4tag.
    • Test with di.
    • At this point, an alpha release could be made.
  • Phase 5
    • Generate Makefiles
      This will be difficult.
    • Installation process.
    • Test with libmp4tag.
    • Test with di.
    • alpha release.
  • Phase 6
    • Be able to include other mkc configuration files.
    • Test with BallroomDJ 4.
    • beta release.

Wiki Home


Related

Wiki: Home