🟢 🔁 Stable | A collection of makefiles "libraries", to use in (almost) all your projects.
Find a file
2024-01-06 12:05:47 +01:00
docs docs: update logo1 2024-01-06 12:05:36 +01:00
.gitattributes chore: enable git LFS 2024-01-06 11:41:03 +01:00
graphviz.mk fix: remove useless mkdir line 2024-01-06 11:39:32 +01:00
Makefile feat: add sample Makefile which uses the modules 2024-01-05 23:03:29 +01:00
mocodo.mk fix: add missing target mocodo-info 2024-01-05 23:02:01 +01:00
mypaint.mk feat: add new module for mypaint 2024-01-05 23:02:16 +01:00
plantuml.mk fix: make sure there is no inconsistency in variable names 2024-01-05 23:37:10 +01:00
README.md doc: fix error in README 2024-01-05 23:38:44 +01:00

Build Status License LGPL3.0-or-later Donate on patreon

This project is available on our self-hosted server and on CodeBerg and GitHub as mirrors. For the latest updates and comprehensive version of our project, please visit our primary repository at: https://code.apps.glenux.net/glenux/makefiles-forever.

Makefiles Forever

A drop-in collection of makefiles libraries for your projects

Description

  • plantuml.mk — Automate the building plantuml diagrams.
  • graphviz.mk — Streamline the creation of graphviz graph diagrams.
  • mocodo.mk — Facilitate the development of mocodo entity-relation and logical diagrams.
  • mypaint.mk - Automate the conversion of mypaint openraster images to usual image formats.

Usage

Adding to your project

To include 'Makefiles Forever' in your project, add this repository as a GIT submodule:

$ git submodule add https://github.com/glenux/makefiles-forever .makefiles

Configuring your makefiles

In your project's makefile, include the necessary modules. The include instructions must be located after your existing targets.

# [...variable definitions...]

# Include as many Makefiles Forever features as your want
include .makefiles/plantuml.mk
include .makefiles/mocodo.mk
# [...include as many modules as you want...]

# [...targets definitions...]

Declare API variables (ex: *_SRC_DIR, *_DEST_DIR) for each module

# PlantUML Configuration
PLANTUML_SRC_DIR=/path/to/plantuml/files
PLANTUML_DEST_DIR=/path/to/output/directory

# Mocodo Configuration
MOCODO_SRC_DIR=/path/to/mocodo/files
MOCODO_DEST_DIR=/path/to/output/directory

# [...you the external variables of the modules you included...]

# [ ... etc ...]

Use pre-defined targets in your build process, as dependencies of your existing targets:


build: plantuml-build mocodo-build graphviz-build

clean: plantuml-clean mocodo-clean graphviz-clean

Feature files usually define more targets than just build and clean, and you can use those too!

Best practices used in our .mk modules

  • Parallel Execution: We ensure targets are available from the root makefile and avoid descending into subdirectories for parallel execution.
  • Modular Design: We keep our makefiles modular for easy maintenance and scalability.
  • Documentation: We comment our makefiles for clarity and ease of use by others.

Contributing

Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

Troubleshooting and Support

If you encounter any issues or need support, please open an issue in the project's issue tracker. We strive to be responsive and helpful.

License

Distributed under the LGPL-3.0-or-later License. See LICENSE file for more information.

Acknowledgments

  • A special thanks to all contributors and users of this project for their valuable feedback and support.