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:
Stephen Gutekanst 2022-08-26 13:29:04 -07:00 committed by Stephen Gutekanst
parent 79ec61396f
commit 0645429df9
240 changed files with 6 additions and 6 deletions

105
libs/freetype/README.md Normal file
View file

@ -0,0 +1,105 @@
# mach/freetype - Ziggified FreeType 2 bindings [![CI](https://github.com/hexops/mach-freetype/workflows/CI/badge.svg)](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!