No project description provided
Project description
pmakefile
Background
Makefile is a fundamental tool when it comes to building software. As a simple way to organize code compilation, it's been part of Unix world for over 40 years. However, it's not a perfect tool. Its cross-platform support is not native yet, and learning curves can be steep. This project aims to provide a practical alternative to Makefile subset for most common use cases.
Software can be reproducible, protable, and maintainable, for regular users and developers, with a simple "P-makefile".
Usage
See the example/
directory where we write a single make
in Python using pmakefile
and zig cc
to cross-compile the QuickJS project for Windows, Linux, and macOS (x86_64 and aarch64), which is a huge task and so far not achieved by any other known makefile written for QuickJS. With pmakefile
, writing make
promises us excellent portability, static type checking, and simplicity, while depending on only a standard Python distribution.
The pmakefile
Python module exports some useful functions, see builtin functions
The pmakefile structure can be given as follows:
from pmakefile import *
phony([
'all', 'clean', ... # phony targets
])
ROOT = Path(__file__).parent.relative_to(os.getcwd())
@recipe('dep1', 'dep2')
def my_recipe():
"""documentation for my_recipe"""
# some python statements
Then you can use it in your favorite shell:
pmk help
# pmk all
# pmk clean
Useful Helper Functions
get_os() -> 'windows' | 'linux' | 'macos'
log(msg: str, level: 'ok' | 'error' | 'info' | 'debug' | 'warn' | 'normal' = 'normal')
shell(command: str | list[str], *, env: dict | None = None, noprint: bool = False)
get_deps()
: get direct dependencies of current targetwith proft(title: str): ...
: profile the execution time of the code block and report with the giventitle
(when the environment variablePMAKEFILE_PROF
is set)get_dlext() -> str
: get platform-specific dynamic library file extension
License
MIT License is used for this project. See LICENSE for more details.
Project details
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
File details
Details for the file pmakefile-0.4.5.tar.gz
.
File metadata
- Download URL: pmakefile-0.4.5.tar.gz
- Upload date:
- Size: 7.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9c8ec5132b4605d5d8a2770e529b295ee8a40c898317fa40840661e487288f77 |
|
MD5 | c2ae1b05ca68b563f7c9523b5071405d |
|
BLAKE2b-256 | 4e6359f1f2d2864f8147ab9874091645cdf480fec4ea6bb78bdd96d98601ed3e |
File details
Details for the file pmakefile-0.4.5-py3-none-any.whl
.
File metadata
- Download URL: pmakefile-0.4.5-py3-none-any.whl
- Upload date:
- Size: 7.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5f721abd2d96a03959acfb253fc258ecabf2d1fbd03b8171282ac3877a3bb611 |
|
MD5 | 00215e922255ba1dba1ba6737f637b23 |
|
BLAKE2b-256 | bdeb6f3dd550abf22f8c7d9982047f705e596befe7c0af0b96fdccd095dfd885 |