all: move standalone libraries to libs/ subdirectory
The root dir of our repository has grown quite a lot the past few months.
I'd like to make it more clear where the bulk of the engine lives (`src/`) and
also make it more clear which Mach libraries are consumable as standalone projects.
As for the name of this directory, `libs` was my first choice but there's a bit of
a convention of that being external libraries in Zig projects _today_, while these
are libraries maintained as part of Mach in this repository - not external ones.
We will name this directory `libs`, and if we have a need for external libraries
we will use `external` or `deps` for that directory name. I considered other names
such as `components`, `systems`, `modules` (which are bad as they overlap with
major ECS / engine concepts), and it seems likely the official Zig package manager
will break the convention of using a `libs` dir anyway.
Performed via:
```sh
mkdir libs/
git mv freetype libs/
git mv basisu libs/
git mv gamemode libs/
git mv glfw libs/
git mv gpu libs/
git mv gpu-dawn libs/
git mv sysaudio libs/
git mv sysjs libs/
git mv ecs libs/
```
git-subtree-dir: glfw
git-subtree-mainline: 0d5b853443
git-subtree-split: 572d1144f11b353abdb64fff828b25a4f0fbb7ca
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
git mv ecs libs/
Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
parent
79ec61396f
commit
0645429df9
240 changed files with 6 additions and 6 deletions
105
libs/freetype/README.md
Normal file
105
libs/freetype/README.md
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
# mach/freetype - Ziggified FreeType 2 bindings [](https://github.com/hexops/mach-freetype/actions) <a href="https://hexops.com"><img align="right" alt="Hexops logo" src="https://raw.githubusercontent.com/hexops/media/main/readme.svg"></img></a>
|
||||
|
||||
Ziggified FreeType 2 bindings that [Mach engine](https://github.com/hexops/mach) uses, with zero-fuss installation, cross compilation, and more.
|
||||
|
||||
This repository is a separate copy of the same library in the [main Mach repository](https://github.com/hexops/mach), and is automatically kept in sync, so that anyone can use this library in their own project / engine if they like!
|
||||
|
||||
## Zero fuss installation, cross compilation, and more
|
||||
|
||||
[Just as with Mach](https://github.com/hexops/mach#zero-fuss-installation--cross-compilation), you get zero fuss installation & cross compilation using these Freetype bindings. **only `zig` and `git` are needed to build from any OS and produce binaries for every OS.** No system dependencies at all.
|
||||
|
||||
## Usage
|
||||
|
||||
## Getting started
|
||||
|
||||
### Adding dependency (using Git)
|
||||
|
||||
In a `libs` subdirectory of the root of your project:
|
||||
|
||||
```sh
|
||||
git clone https://github.com/hexops/mach-freetype
|
||||
```
|
||||
|
||||
Then in your `build.zig` add:
|
||||
|
||||
```zig
|
||||
...
|
||||
const freetype = @import("libs/mach-freetype/build.zig");
|
||||
|
||||
pub fn build(b: *Builder) void {
|
||||
...
|
||||
exe.addPackage(freetype.pkg);
|
||||
freetype.link(b, exe, .{});
|
||||
}
|
||||
```
|
||||
|
||||
and optionaly add harfbuzz:
|
||||
|
||||
```zig
|
||||
exe.addPackage(freetype.harfbuzz_pkg);
|
||||
freetype.link(b, exe, .{ .harfbuzz = .{} });
|
||||
```
|
||||
|
||||
You can also optionally build brotli compression (for WOFF2 font support):
|
||||
|
||||
```zig
|
||||
exe.addPackage(freetype.pkg);
|
||||
freetype.link(b, exe, .{ .freetype = .{ .brotli = true } });
|
||||
```
|
||||
|
||||
<details>
|
||||
<description>Optional: Using Gyro dependency manager</description>
|
||||
|
||||
```sh
|
||||
gyro add --src github hexops/mach-freetype --root src/main.zig --alias freetype
|
||||
gyro add --build-dep --src github hexops/mach-freetype --root build.zig --alias build-freetype
|
||||
```
|
||||
|
||||
Then in your `build.zig` add:
|
||||
|
||||
```zig
|
||||
...
|
||||
const pkgs = @import("deps.zig").pkgs;
|
||||
const freetype = @import("build-freetype");
|
||||
|
||||
pub fn build(b: *Builder) void {
|
||||
...
|
||||
|
||||
exe.addPackage(pkgs.freetype);
|
||||
freetype.link(b, exe, .{});
|
||||
}
|
||||
```
|
||||
|
||||
**WARNING: You should use `gyro build` instead of `zig build` now!**
|
||||
|
||||
</details>
|
||||
|
||||
Now you can import in code:
|
||||
|
||||
```zig
|
||||
const freetype = @import("freetype");
|
||||
```
|
||||
|
||||
## Examples
|
||||
|
||||
See the `examples/` directory. for running each example do:
|
||||
|
||||
```sh
|
||||
zig build run-example-<name> # e.g run-example-single-glyph
|
||||
```
|
||||
|
||||
## Join the community
|
||||
|
||||
Join the Mach engine community [on Matrix chat](https://matrix.to/#/#hexops:matrix.org) to discuss this project, ask questions, get help, etc.
|
||||
|
||||
## Issues
|
||||
|
||||
Issues are tracked in the [main Mach repository](https://github.com/hexops/mach/issues?q=is%3Aissue+is%3Aopen+label%3Afreetype).
|
||||
|
||||
## Contributing
|
||||
|
||||
Contributions are very welcome. Pull requests must be sent to [the main repository](https://github.com/hexops/mach/tree/main/freetype) to avoid some complex merge conflicts we'd get by accepting contributions in both repositories. Once the changes are merged there, they'll get sync'd to this repository automatically.
|
||||
|
||||
# Thanks
|
||||
|
||||
Special thanks to [@alichraghi](https://github.com/alichraghi), original author of these bindings who contributed them to Mach!
|
||||
Loading…
Add table
Add a link
Reference in a new issue