Skip to content

Commit 405abed

Browse files
authored
docs: Fill README
1 parent b007a38 commit 405abed

File tree

1 file changed

+49
-2
lines changed

1 file changed

+49
-2
lines changed

README.md

Lines changed: 49 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,49 @@
1-
# MakeForWindows
2-
Pre-Built binaries of GNU Make for Windows
1+
# GNU Make for Windows (x86_64)
2+
This repository is meant to provide an easy way to cross-compile [GNU Make](https://www.gnu.org/software/make/) for Windows as trusted binaries of the most recent version were previously hard to find.
3+
4+
## Using the Binaries
5+
Head to the [Releases](https://github.com/maweil/MakeForWindows/releases) page to download `make.exe` together with any required `.dll` files as a `.zip`-file. Create a new directory, e.g. `C:\GNUMake` where you can later extract the archive to. Now unpack the downloaded archive to this directory using the Windows explorer (or another file compression utility of your choice).
6+
7+
To make sure that you can invoke the `make` command from a shell, add the directory you created previously to your PATH environment variable first.
8+
You may have to restart your shell (or your system just to make sure) afterwards. You can then test whether `make` is installed properly by entering `make --version` into a shell.
9+
10+
The output should look similar to this:
11+
```txt
12+
GNU Make 4.4
13+
Built for x86_64-w64-mingw32
14+
Copyright (C) 1988-2022 Free Software Foundation, Inc.
15+
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
16+
This is free software: you are free to change and redistribute it.
17+
There is NO WARRANTY, to the extent permitted by law.
18+
```
19+
20+
## Building Locally
21+
This part was tested on Fedora 37 only so far, so you may have to adapt the package names or install additional ones.
22+
1. Install mingw64-gcc
23+
2. Clone this repository
24+
3. Download the `tar.gz` file of the GNU Make release
25+
26+
Fetch the tarball you would like to build from the [project website](https://www.gnu.org/software/make/) or one of the mirrors listed there.
27+
28+
4. (Optional, but recommended): Verify the integrity of the downloaded file
29+
30+
Download the corresponding by downloading the corresponding `tar.gz.sig` file as well.
31+
Import the public key of the developer who signed the file. As of writing, the latest key for signing the releases was announced [here](https://lists.gnu.org/archive/html/bug-make/2016-12/msg00002.html). You can now verify the signature by running `gpg --verify make-*.tar.gz.sig`.
32+
33+
5. (Optional): Update the `build_version.sha256sum` file
34+
35+
If you would like to build a version of GNU Make that differs from the latest one used here, you have to update the `build_version.tar.gz` file because it determines the filename and hash which the build-script uses later. To update it, run the following command (adapt to your make version number).
36+
```bash
37+
sha256sum make-4.4.tar.gz > ./build_version.sha256sum
38+
```
39+
5. Compile
40+
41+
Open a shell and run the `cross_build_w64.sh` script included in this repository.
42+
43+
44+
If everything went well, you can find `make.exe` and its dependent `.dll` files in the `make-<your version>/dist` directory.
45+
46+
## Known Limitations
47+
- The built binaries come without the [Guile Integration](https://www.gnu.org/software/make/manual/html_node/Guile-Integration.html) of GNU Make.
48+
- Currently the builds are not reproducible. I'm still investigating what causes the differences. If you have an idea, how to adapt this repo to produce reproducible artifacts, PRs are welcome :smile:
49+
- Limited Testing: I'm only using a tiny subset of Make's functionalities. If you encounter issues related to how these binaries are built, feel free to [create an issue](https://github.com/maweil/MakeForWindows/issues/new/choose). Please note however that I'm not a maintainer of GNU Make itself, I only have built this repository.

0 commit comments

Comments
 (0)