Skip to content

Commit 64796c2

Browse files
committed
Merge branch 'main' of github.com:mxstack/mxmake
2 parents 0ab9b6f + 980a0ed commit 64796c2

28 files changed

+451
-108
lines changed

.github/dependabot.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# To get started with Dependabot version updates, you'll need to specify which
2+
# package ecosystems to update and where the package manifests are located.
3+
# Please see the documentation for all configuration options:
4+
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
5+
6+
version: 2
7+
updates:
8+
# Enable version updates for GitHub Actions
9+
- package-ecosystem: "github-actions"
10+
# Workflow files stored in the default location of `.github/workflows`
11+
# You don't need to specify `/.github/workflows` for `directory`. You can use `directory: "/"`.
12+
directory: "/"
13+
schedule:
14+
interval: "weekly"

.github/workflows/docs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
run: make docs
2727

2828
- name: Deploy Docs
29-
uses: peaceiris/actions-gh-pages@v3
29+
uses: peaceiris/actions-gh-pages@v4
3030
if: ${{ github.event_name == 'workflow_dispatch' }}
3131
with:
3232
publish_branch: gh-pages

.github/workflows/typecheck.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ jobs:
1212
steps:
1313
- uses: actions/checkout@v4
1414

15-
- name: Set up Python 3.12
15+
- name: Set up Python 3.13
1616
uses: actions/setup-python@v5
1717
with:
18-
python-version: 3.12
18+
python-version: 3.13
1919

2020
- name: Install Project
2121
run: make install

.github/workflows/variants.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
python-version:
1414
# we test on lowest and highest supported versions
1515
- "3.9"
16-
- "3.12"
16+
- "3.13"
1717
os:
1818
- ubuntu-latest
1919
- macos-latest

CHANGES.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
# Changelog
22

3-
## 1.1.0 (unreleased)
3+
## 1.2.0 (unreleased)
4+
5+
- add pyrefly type checker support
6+
7+
## 1.1.0 (2025-03-20)
8+
9+
- Chore: Build-system update and minor cleanups.
10+
11+
- Feature: Add help system (make help).
412

513
- Feature: Add target `zope-adduser` to create an emergency user.
614

Makefile

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
# DOMAINS:
55
#: applications.zest-releaser
66
#: core.base
7+
#: core.help
78
#: core.mxenv
89
#: core.mxfiles
910
#: core.packages
@@ -166,6 +167,12 @@ MYPY_SRC?=src
166167
# Default: types-setuptools
167168
MYPY_REQUIREMENTS?=types-setuptools types-docutils types-PyYAML
168169

170+
## core.help
171+
172+
# Request to show all targets, descriptions and arguments for a given domain.
173+
# No default value.
174+
HELP_DOMAIN?=
175+
169176
## applications.zest-releaser
170177

171178
# Options to pass to zest.releaser prerelease command.
@@ -594,6 +601,14 @@ TYPECHECK_TARGETS+=mypy
594601
CLEAN_TARGETS+=mypy-clean
595602
DIRTY_TARGETS+=mypy-dirty
596603

604+
##############################################################################
605+
# help
606+
##############################################################################
607+
608+
.PHONY: help
609+
help: $(MXENV_TARGET)
610+
@mxmake help-generator
611+
597612
##############################################################################
598613
# zest-releaser
599614
##############################################################################

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<img src="docs/source/_static/mxmake-logo.svg?raw=true"
1+
<img src="https://mxstack.github.io/mxmake/_images/mxmake-logo.svg"
22
alt="mxmake logo"
33
align="right"
44
style="float: right; margin-left: 10px; margin-bottom: 10px; width: 25%" /> *mxmake* [mɪks meɪk] generates a project-specific Makefile by using an extensible library of configurable Makefile snippets.

docs/source/getting-started.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,14 @@ They will be lost on next `mxmake init` respective `mxmake update` run.
6565

6666
## How to use on the Windows operating system
6767

68-
mxmake on Windows needs a bash shell.
69-
Fortunatly the GIT VCS comes with the git-bash.
68+
mxmake works excellent on Windows!
69+
70+
On Windows it needs a Bash shell.
71+
Fortunately the GIT VCS comes with the a fully function Bash, the git-bash.
7072
Please follow [GIT's official installation instructions](https://git-scm.com/download/win).
7173

7274
Install [make as described here](https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058#make)
7375

7476
Further you need a [Python >=3.9 installation.](https://www.python.org/downloads/windows/).
7577

76-
Dependent on the topics and domains you use, you might need to install additional software.
78+
Dependent on the topics and domains you use, you may need to install additional software, but this is no different from Linux/OSX.

docs/source/index.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,4 @@ extending
2929
dependencies
3030
make
3131
contributing
32-
usage-old
3332
```

docs/source/make.md

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -19,24 +19,26 @@ If the dependencies are up-to-date, "make" will skip the build process for the t
1919

2020
This way, "make" can handle the complex and interdependent steps to form processes of a project, automatically handling the correct order of steps and avoiding unnecessary execution of steps.
2121

22-
## The "phony" target
22+
## The "PHONY" target
2323

24-
In "make", a "phony" target is a special type of target that is used to define a target that is not a file or directory. Phony targets are used to describe actions that need to be performed but do not result in a file that can be used as a target in another rule.
24+
In "make", a "PHONY" target is a special type of target that is used to define a target that is not a file or directory.
25+
Phony targets are used to describe actions that need to be performed but do not result in a file that can be used as a target in another rule.
2526

26-
For example, a common use case for a phony target is to define a "clean" target that removes all generated files.
27-
A makefile could have a rule like the following:
27+
For example, a common use case for a PHONY target is to define a "clean" target that removes all generated files.
28+
A Makefile could have a rule like the following:
2829

29-
```makefile
30+
```Makefile
3031
.PHONY: clean
3132

3233
clean:
3334
rm -rf build
3435
```
3536

36-
The ".PHONY" line indicates that the "clean" target is a phony target. When "make clean" is run, the command in the rule will be executed to remove the "build" directory.
37+
The ".PHONY" line indicates that the "clean" target is a PHONY target.
38+
When "make clean" is run, the command in the rule will be executed to remove the "build" directory.
3739

38-
Phony targets are useful because they provide a way to define targets that don't correspond to files and can be used to perform arbitrary actions such as cleaning the build directory or running tests.
39-
Additionally, "make" considers phony targets to always be out-of-date, so the commands for a phony target will always be executed, even if its dependencies are up-to-date.
40+
PHONY targets are useful because they provide a way to define targets that don't correspond to files and can be used to perform arbitrary actions such as cleaning the build directory or running tests.
41+
Additionally, "make" considers PHONY targets to always be out-of-date, so the commands for a PHONY target will always be executed, even if its dependencies are up-to-date.
4042
This can be useful when you want to guarantee that an action is performed, such as cleaning the build directory before a build.
4143

4244
(make-sentinel-files)=
@@ -52,32 +54,32 @@ To overcome this challenge, other methods, such as using sentinel files, can be
5254
Sentinel files are used to indicate whether a target has been built, or if a process has been completed.
5355
```
5456

55-
For example, a makefile could use a sentinel file to track the state of a build process.
56-
The makefile could contain a rule like the following:
57+
For example, a Makefile could use a sentinel file to track the state of a build process.
58+
The Makefile could contain a rule like the following:
5759

58-
```makefile
60+
```Makefile
5961

6062
build: sentinel
6163
# build commands go here
6264

6365
sentinel:
64-
# build commands go here
6566
touch sentinel
6667
```
6768

68-
In this example, the "sentinel" file is used to track the state of the build. If the "sentinel" file exists, it means that the build has been completed and the build commands will be skipped.
69+
In this example, the "sentinel" file is used to track the state of the build.
70+
If the "sentinel" file exists, it means that the build has been completed and the build commands will be skipped.
6971
If the "sentinel" file does not exist, the build commands will be executed and the "sentinel" file will be created to indicate that the build has been completed.
7072

7173
Sentinel files are useful in "make" because they provide a way to track the state of a build or process, allowing "make" to determine if a target needs to be rebuilt.
7274
This helps to avoid unnecessary rebuilds, which can save time and resources.
7375

7476
## Variables
7577

76-
In "make", variables are used to store values that can be referenced in multiple places throughout the makefile. Variables are defined by assigning a value to a name and can be used in rules, dependencies, and commands.
78+
In "make", variables are used to store values that can be referenced in multiple places throughout the Makefile. Variables are defined by assigning a value to a name and can be used in rules, dependencies, and commands.
7779

78-
For example, the following makefile uses a variable to store the name of the compiler:
80+
For example, the following Makefile uses a variable to store the name of the compiler:
7981

80-
```makefile
82+
```Makefile
8183

8284
CC = gcc
8385

@@ -86,11 +88,11 @@ main: main.c
8688
```
8789

8890
In this example, the "CC" variable is defined with the value "gcc", which is then used in the command to compile the "main.c" file.
89-
This allows for easy modification of the compiler if needed, as the change only needs to be made in one place, instead of throughout the entire makefile.
91+
This allows for easy modification of the compiler if needed, as the change only needs to be made in one place, instead of throughout the entire Makefile.
9092

9193
Variables can also be used to store values that are generated dynamically, such as the result of a shell command. For example:
9294

93-
```makefile
95+
```Makefile
9496

9597
OBJECTS = $(shell ls *.c | sed s/.c/.o/g)
9698

@@ -102,13 +104,13 @@ In this example, the "OBJECTS" variable is defined as the result of a shell comm
102104
The "OBJECTS" variable can then be used in the dependencies and command of the "main" target.
103105

104106
Variables in "make" can also be overridden on the command line, allowing for easy customization of the build process.
105-
For example, the following command would use a different compiler than the one defined in the makefile:
107+
For example, the following command would use a different compiler than the one defined in the Makefile further above:
106108

107109
```shell
108110
make CC=clang
109111
```
110112

111-
This way, "make" variables provide a flexible and convenient way to manage build configurations and reuse values throughout the makefile.
113+
This way, "make" variables provide a flexible and convenient way to manage build configurations and reuse values throughout the Makefile.
112114

113115
There are many more details about variables in the GNU Make Manual.
114116

0 commit comments

Comments
 (0)