Small build system
Project description
Mapyr v.0.8.10
Mapyr is a small build system written in Python 3. It uses Python for build files (no new languages required) and inherits the Makefile rule system, extending and complementing it.
Advantages of Mapyr:
- Small size
- Project system
- Simple hierarchy
- Modular addon system for easily adding support for new languages (language modules are provided for convenience, but not required)
Quick start
C/C++ example:
build.py:
#!/usr/bin/env python
from mapyr import *
def get_project(name:str) -> ProjectBase:
cfg = c.Config()
# Dirs to find source files
cfg.SRC_DIRS = ['src']
# Create project ( name, output filename, config )
project = c.Project('main','bin/main',cfg)
# Default rules for C project like: build, clean, and executable
c.add_default_rules(project)
return project
if __name__ == "__main__":
process(get_project)
Run ./build.py
Install
pip install mapyr
Usage
Mapyr starts with a build.py file, call process funcution and which calls get_project.
Rule System
Mapyr's rule system is derived from GNU Make:
- Target: A file (or phony target) that must exist or be built.
- Prerequisites: A list of rules that must be built before this rule.
- Execution: The commands to build the target.
If any prerequisite is newer than the target, the rule is rebuilt.
Projects
Projects are used to share configurations. A project groups multiple rules into a single unit, managing private, protected, and public configurations. This is similar to access modifiers in C++, but less strict. You choose which configurations to inherit from subprojects. The separation helps clarify a project's public interface versus its internal implementation.
- Private: Accessible only within the project.
- Protected: Accessible within the project and its children.
- Public: Accessible to any project that includes this one as a subproject.
Examples
See the examples in the test directory.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mapyr-0.8.10.tar.gz.
File metadata
- Download URL: mapyr-0.8.10.tar.gz
- Upload date:
- Size: 10.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.10.12 Linux/5.15.0-133-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8252ec62e8ffdbfba6e66a1f8c171a5966bf5661a06a703c9ef0ab81944279f7
|
|
| MD5 |
c5f58295b084ec4096e68c987b72ef47
|
|
| BLAKE2b-256 |
cf648bf59553a4c6ac1c07e1d3c5324c33585425fc4ec1781d841c7621a6943c
|
File details
Details for the file mapyr-0.8.10-py2.py3-none-any.whl.
File metadata
- Download URL: mapyr-0.8.10-py2.py3-none-any.whl
- Upload date:
- Size: 11.8 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.10.12 Linux/5.15.0-133-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8b3d3fbb937f516ec8ef5c4432ff8bd9cfaa0987a51a8958fa1201f97f52ae4f
|
|
| MD5 |
61823249ee3956ca82adb9e44d2ccc2e
|
|
| BLAKE2b-256 |
01cad2190a9313006ad30e1c13aa666b135d632d926bc85e25d419f2171a1e44
|