├── .github └── FUNDING.yml ├── LICENSE └── README.md /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: clue 2 | custom: https://clue.engineering/support 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2020 Christian Lück 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is furnished 10 | to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # clue/make.php 2 | 3 | A GNU Make clone written in pure PHP. Run your Makefiles no matter whether GNU make is available. 4 | 5 | **Table of contents** 6 | 7 | * [Why?](#why) 8 | * [Install](#install) 9 | * [License](#license) 10 | 11 | ## Why? 12 | 13 | GNU Make is a build automation tool that automatically builds (executable) programs 14 | or libraries from source code by reading a `Makefile` which specifies how to derive the target program. 15 | Besides building target programs, this is also often used to help automating 16 | repetitive work, such as the program setup, test environment and build deployment. 17 | 18 | Here's a simple `Makefile` with two build targets and a set of simple rules: 19 | 20 | ```makefile 21 | build: 22 | @echo -n . 23 | @sleep 1 24 | @echo -n . 25 | @sleep 1 26 | @echo -n . 27 | @sleep 1 28 | @echo OK 29 | 30 | test: 31 | vendor/bin/phpunit 32 | ``` 33 | 34 | If you have GNU Make installed, you can simply execute the first target like this: 35 | 36 | ```bash 37 | $ make build 38 | ...OK 39 | ``` 40 | 41 | However, not every system has GNU Make installed (think Docker containers, shared hosting, Windows machines etc.). 42 | That's where this project comes into play. 43 | 44 | Once [installed](#install), you can simply execute the first target like this: 45 | 46 | ```bash 47 | $ php vendor/bin/make.php build 48 | ...OK 49 | ``` 50 | 51 | You can reuse your existing `Makefile` without switching to a different build script language. 52 | Or in other words: *Run your Makefiles no matter whether GNU make is available.* 53 | 54 | ## Install 55 | 56 | [![A clue·access project](https://raw.githubusercontent.com/clue-access/clue-access/main/clue-access.png)](https://github.com/clue-access/clue-access) 57 | 58 | *This project is currently under active development, 59 | you're looking at a temporary placeholder repository.* 60 | 61 | The code is available in early access to my sponsors here: https://github.com/clue-access/make.php 62 | 63 | Do you sponsor me on GitHub? Thank you for supporting sustainable open-source, you're awesome! ❤️ Have fun with the code! 🎉 64 | 65 | Seeing a 404 (Not Found)? Sounds like you're not in the early access group. Consider becoming a [sponsor on GitHub](https://github.com/sponsors/clue) for early access. Check out [clue·access](https://github.com/clue-access/clue-access) for more details. 66 | 67 | This way, more people get a chance to take a look at the code before the public release. 68 | 69 | Rock on 🤘 70 | 71 | ## License 72 | 73 | This project will be released under the permissive [MIT license](LICENSE). 74 | 75 | > Did you know that I offer custom development services and issuing invoices for 76 | sponsorships of releases and for contributions? Contact me (@clue) for details. 77 | --------------------------------------------------------------------------------