From 72b558532112e14ece308291bcf61d04657b5009 Mon Sep 17 00:00:00 2001 From: epochryphon Date: Mon, 31 Aug 2026 17:11:29 +0200 Subject: [PATCH] Update README.md --- README.md | 43 +++++++++++++++++++------------------------ 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 607b0cf..745e8a4 100644 --- a/README.md +++ b/README.md @@ -1,46 +1,41 @@ **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. +makemake is a lightweight/dependency-free C build system built entirely around standard POSIX tools. It brings a python-style virtual environment to your C projects using a simple shell script. It tracks your compiler, linker flags, project version, 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. +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. +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. +`. 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. +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 +* **init** sets up the required folder structure and generates the activation script. +* **debug** compiles your code using your configured debug flags (typically with debug symbols enabled and optimization turned off). +* **build** compiles your code using your configured build flags (typically used for optimized production binaries). +* **clean** removes all intermediate object files, generated makefiles, and output binaries. **Example env_set Commands** -You can adjust your toolchain and compiler options dynamically using the `env_set` function while the environment is active. - +You can adjust your toolchain, compiler options, and project version 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 -``` + +* `env_set CC cc` +* `env_set VERSION _v1.0.0` +* `env_set CFLAGS -std=c17 -pedantic -Wall -Wextra` +* `env_set DEBUG_FLAGS -g3 -O0` +* `env_set BUILD_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) \ No newline at end of file +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). \ No newline at end of file