2026-08-31 05:31:17 +02:00
2026-08-29 04:09:18 +02:00
2026-08-31 05:10:53 +02:00
2026-08-31 05:31:17 +02:00

Basic Overview This is a lightweight/dependency free C build system built entirely around standard POSIX tools. It introduces a python style virtual environment for your C projects using a simple shell script. It tracks your compiler, linker flags, and build options in a local state file without needing cmake or other heavy build generators.

Example Use To get started with a fresh project create your directory and run the initialization command.

make init

Next activate your virtual environment by sourcing the configuration script into your current shell session.

. config/activate (or source config/activate) the former is simply POSIX compliant.

Once you are inside the environment you can run your builds and clean up whenever you want.

make debug make build make release make clean

What Each Build Target Does

  • init sets up the required folder structure and generates the activation script
  • debug compiles your code with debug symbols enabled and optimization turned off
  • build compiles your code for regular development use using your custom flags
  • release updates the internal version timestamp and compiles an optimized production binary
  • clean removes all intermediate object files and generated makefiles

Example env_set Commands You can adjust your toolchain and compiler options dynamically using the env_set function while the environment is active.

Example uses:

env_set CC cc
env_set CFLAGS -std=c17 -pedantic -Wall -Wextra
env_set DEBUG_FLAGS -g3 -O0
env_set RELEASE_FLAGS -O2 -DNDEBUG
env_set LIBS -lm

Tips

1: If you update a .h file you MUST do a make clean before building again otherwise the header changes will not be used.

2: if you remove a .c file, you MUST do a make clean or manually remove .o files, otherwise they will never be wiped (even if they are no longer linked, it will just waste some disk-space)

Description
a sub 200 line POSIX makefile which simplifies the make process for C projects.
Readme AGPL-3.0 69 KiB
Languages
Makefile 100%