Commit Graph

429 Commits (main)

Author SHA1 Message Date
Krzysztof Wolicki 12f4210558 Update required zig version to 0.12.0-dev.2063+804cee3b9 2024-01-07 20:42:30 +01:00
Krzysztof Wolicki 5776c54225 Update changed build.zig 2024-01-07 15:00:17 +01:00
Krzysztof Wolicki 710b02a2ab Merge branch 'main' of github.com:mitchellh/ghostty 2024-01-06 05:42:55 +01:00
widberg cc29f06863 Don't build with LTO on Windows 2024-01-04 21:24:15 -05:00
Krzysztof Wolicki 1d49492e04 build.zig: Make use of resolveTargetQuery for wasm_freestanding target 2024-01-04 13:29:43 +01:00
Krzysztof Wolicki 1913243c35 WIP: Update to new build module API after Zig PR #18160
Temporarily change dependency sources to forks until they update
2024-01-03 21:50:32 +01:00
Mitchell Hashimoto eb46161b5e
config: generate vim configs at comptime 2023-12-22 08:19:17 -08:00
Gregory Anders 4f01aafdba build: move Vim plugin file generation into a separate Step 2023-12-21 21:49:38 -06:00
Gregory Anders e9632a0f91 build: build Vim plugin files for Ghostty config file
Generate Vim syntax and ftplugin files for the Ghostty config file that
highlight Ghostty config keywords and offer completion for valid config
keys. The list of configuration keys is generated at compile time.

The plugin files are installed to ${prefix}/share/vim/vimfiles, which is
a standard location for installing 3rd party Vim plugin files.
2023-12-21 21:46:26 -06:00
Gregory Anders 8751502878
core: look for resources in "ghostty" subdirectory for "share" paths
Installing resources directly under ${prefix}/share causes conflicts
with other packages. This will become more problematic whenever Ghostty
is opened and becomes packaged in distributions.

Instead, install all resources under a "ghostty" subdirectory (i.e.
${prefix}/share/ghostty). This includes themes, shell integration, and
terminfo files.

Only "/usr/share" style paths use the "ghostty" subdirectory. On macOS,
Ghostty is already isolated within its app bundle, and if
$GHOSTTY_RESOURCES_DIR is set then we assume that points to the actual
resources dir (without needing to append "ghostty" to it).
2023-12-21 17:56:17 -08:00
Chris Marchesi 5e7e3be60a
build: use dedicated strings for conformance test keys
This uses separate strings for the keys for the conformance tests versus
just deriving them from the sliced path.

This fixed an issue for me where a few of the tests were showing up as
InvalidConformance (notably the "blocks" test), even though, oddly
enough, the key/value entries do appear to be there (e.g. if you iterated
over them). I did notice, though, that we currently sliced the key from
the file entry of the directory iterator, which is closed at the end of
conformanceSteps.
2023-12-14 21:35:04 -08:00
Mitchell Hashimoto 8f5f8fb0bd
update Zig version in Nix 2023-11-30 14:06:24 -08:00
Krzysztof Wolicki bfc688e96e Update required zig version to `0.12.0-dev.1767+1e42a3de8` 2023-11-30 21:41:42 +01:00
Krzysztof Wolicki 46699d53d1 Update to latest master 2023-11-30 21:40:01 +01:00
Mitchell Hashimoto af04d891ff
build: dynamically link oniguruma 2023-11-29 15:29:43 -08:00
Mitchell Hashimoto b85174c7ac
build: add oniguruma 2023-11-29 15:29:43 -08:00
Mitchell Hashimoto dde2339e4d
move back to zig pm 2023-11-28 08:11:34 -08:00
Mitchell Hashimoto c7a1e074dd
don't use package manager for iterm2 themes yet 2023-11-22 22:08:27 -08:00
Mitchell Hashimoto 7a91a23e40
build: add iterm2 themes repository, install into resources dir 2023-11-22 21:08:26 -08:00
Mitchell Hashimoto 8576acb89e
renderer/opengl: move opengl API to pkg/opengl 2023-11-17 21:51:04 -08:00
Mitchell Hashimoto 291ca16c20
build: add spirv-cross 2023-11-17 21:50:35 -08:00
Mitchell Hashimoto 1678c3a038
build: add glslang 2023-11-17 21:50:35 -08:00
Krzysztof Wolicki 44a48f62f1 change unmodified `var`s to `const`s in anticipation of zig changes 2023-11-17 15:46:46 +01:00
Mitchell Hashimoto 4781a83e4a
replace utf8proc with ziglyph 2023-11-07 13:17:56 -08:00
xdBronch 205b27dc80
remove deps that were already provided by other packages (#797) 2023-11-03 14:04:00 -07:00
Mitchell Hashimoto 1235c33db2
Merge pull request #794 from hqnna/main
Add option to enable or disable libadwaita
2023-11-02 22:14:59 -07:00
hanna 915f1f5e62
change option name and default value 2023-11-02 22:03:11 -07:00
hanna 63fe99809f
remove hard dependency on libadwaita 2023-11-02 21:54:05 -07:00
Mitchell Hashimoto 2275768383
font: if a codepoint is emoji presentation, prefer that for shaping
Fixes #787
2023-11-02 21:46:50 -07:00
Hanna 2d7e2c8345
Integrate libadwaita for the gtk backend (#792)
* When using gtk as the backend, link libadwaita

* Update c.zig

* Use libadwaita's theme manager for gtk

* update the documentation for window-theme

* build: add libadwaita to the nix devshell

* forgot to properly import libadwaita

* apprt/gtk: adwaita style change

---------

Co-authored-by: Mitchell Hashimoto <mitchell.hashimoto@gmail.com>
2023-11-02 21:29:29 -07:00
Mitchell Hashimoto 423d0d58c0
build: do not build glfw for gtk anymore 2023-10-27 15:11:04 -07:00
Mitchell Hashimoto efddef9d1c
build: add cimgui to build 2023-10-24 15:27:13 -07:00
Mitchell Hashimoto cbdf52864a
Merge pull request #704 from der-teufel-programming/windows-test
Get `zig build test` working on Windows
2023-10-23 08:52:43 -07:00
Mitchell Hashimoto b9b33ab25d
pkg/fontconfig: make iconv build param non-windows specific 2023-10-23 08:40:25 -07:00
Mitchell Hashimoto b6a47cef77
build: disable Tracy by default even for debug builds
Our usage has a memory leak and I don't know where it is and don't want
to spend the time finding it because we very rarely use the tracy
integration anyways.
2023-10-19 20:03:36 -07:00
Krzysztof Wolicki cf9f025a5b Don't enable iconv for fontconfig dep on windows 2023-10-19 17:10:24 +02:00
Krzysztof Wolicki 00c24e4ae6
Fix option name passed to fontconfig dep 2023-10-19 10:52:09 +02:00
Krzysztof Wolicki 3936b471a8 Disable iconv on Windows by default (enabled via cli flag).
Skip various tests not implemented on windows.
2023-10-19 09:39:20 +02:00
Mitchell Hashimoto 8f46d114c0
update zig 2023-10-17 12:45:35 -07:00
Mitchell Hashimoto 2b28106837
update zig 2023-10-02 08:18:35 -07:00
Mitchell Hashimoto 0b6cfac8b0
don't run dependency tests anymore 2023-10-01 18:34:51 -07:00
Mitchell Hashimoto 4e1b3b3224
fix failing test, freetype needs libpng 2023-10-01 18:33:37 -07:00
Mitchell Hashimoto e3a58526ce
fix dynamic build 2023-10-01 17:42:18 -07:00
Mitchell Hashimoto d71197dc59
no more system_sdk 2023-10-01 17:38:30 -07:00
Mitchell Hashimoto 3a4842a0a5
fix build on linux 2023-10-01 17:32:59 -07:00
Mitchell Hashimoto ccd6eee5fe
progress on glfw 2023-10-01 17:30:11 -07:00
Mitchell Hashimoto 8395bb7470
pkg/tracy 2023-10-01 17:11:04 -07:00
Mitchell Hashimoto 7bd4c96b41
remove unused deps 2023-10-01 17:04:17 -07:00
Mitchell Hashimoto aece38ecb2
macos: fix missing symbols in archive 2023-10-01 17:03:32 -07:00
Mitchell Hashimoto ec26fb7cee
pkg/macos 2023-10-01 17:02:12 -07:00
Mitchell Hashimoto fefbd7afbe
pkg/pixman, utf8proc 2023-10-01 16:59:24 -07:00
Mitchell Hashimoto 2237b43df0
pkg/freetype, harfbuzz modules 2023-10-01 16:57:45 -07:00
Mitchell Hashimoto bc0f5c3012
pkg/fontconfig module 2023-10-01 16:52:36 -07:00
Mitchell Hashimoto 8666ab81c3
libxev, zig-js, zig-objc 2023-10-01 16:49:02 -07:00
Mitchell Hashimoto 3ed6a02176
pkg/utf8proc 2023-10-01 16:45:39 -07:00
Mitchell Hashimoto 5feeac66b2
pkg/pixman 2023-10-01 15:04:55 -07:00
Mitchell Hashimoto d3746bc96f
add fontconfig 2023-10-01 12:46:17 -07:00
Mitchell Hashimoto 7edb86f9e1
pkg/fontconfig 2023-10-01 12:43:36 -07:00
Mitchell Hashimoto 2312c465c6
use package manager for font stack 2023-10-01 12:32:17 -07:00
Mitchell Hashimoto 6aef48288a
pkg/harfbuzz 2023-10-01 12:23:38 -07:00
Mitchell Hashimoto 7dc3fcc41e
pkg/freetype 2023-10-01 12:12:05 -07:00
Mitchell Hashimoto 6e2b7c607e
pkg/libpng, pkg/zlib use package manager 2023-10-01 11:25:18 -07:00
Mitchell Hashimoto 9e6cb63a1e
update zig 2023-10-01 09:11:57 -07:00
Nathan Youngman 73331887fe
fabs builtin was renamed
https://github.com/ziglang/zig/pull/17248

I just tried installing from source and ran into the error:

> error: invalid builtin function: '@fabs'
2023-09-28 15:29:08 -07:00
Mitchell Hashimoto 695c50a73a
update zig 2023-09-27 08:11:59 -07:00
Mitchell Hashimoto e644be3b25
update zig to 0.12.0-dev.464+a63a1c5cb 2023-09-21 11:03:34 -07:00
Mitchell Hashimoto f3662354e5
apprt/gtk: about window 2023-09-18 15:16:35 -07:00
Jonathan Marler a2e881ff4e windows: initial support for zig build test
Makes progress getting "zig build test" to work on windows.  Mostly
fixed issues around build configuration and added some branches throughout
the Zig code to return/throw errors for unimplemented parts.

I also added an initial implementation for getting the home dir.
2023-09-14 03:15:40 -06:00
Mitchell Hashimoto 63386e4a22
build: can select renderer with -Drenderer
Note that not all renderers work in all environments.
2023-08-25 08:12:31 -07:00
Mitchell Hashimoto ec69644de6
move stb to src/stb, add stb_image for png decoding 2023-08-20 22:03:20 -07:00
Mitchell Hashimoto 936befa1af
update to 0.12.0-dev.141+ddf5859c2 2023-08-20 09:04:42 -07:00
Mitchell Hashimoto 7ccf86b175
remove imgui and devmode
imgui has been a source of compilation challenges (our fault not theirs)
and devmode hasn't worked in awhile, so drop it.
2023-08-20 08:50:24 -07:00
Mitchell Hashimoto e8a6d09297
build: gtk needs imgui 2023-08-18 08:25:20 -07:00
Mitchell Hashimoto 3879f7c2e8
build: imgui should not be linked without an apprt 2023-08-18 08:24:09 -07:00
Mitchell Hashimoto 7659a2a733
build: fix linking bugs for macos test 2023-08-18 08:23:58 -07:00
Mitchell Hashimoto 68a9110d8e
build: make glfw opt-in on all platforms, default to GTK on Linux
The GLFW build has grown farther and farther in feature parity with GTK
on Linux. And on macOS, the GLFW build has been unstable (crashes) for
months.

I still find the GLFW build useful for testing some core terminal work,
but it is increasingly user-hostile in case someone just downloads the
project and does a `zig build`.

I keep GLFW as up to date as I can, but the features that are missing
are due to fundamental limitations:

  - GLFW has no tabs, splits, etc. because it has no UI elements.
    I am not interested in painting UI widgets from scratch.

  - GLFW cannot support keyboard layouts robustly because it has no
    hooks to detect keyboard layouts or functions to get keymaps.

  - GLFW cannot support the Kitty keyboard protocol because the
    key/char API is too high level and it provides no low-level
    alternatives.

  - GLFW crashes on macOS under certain scenarios (this is my problem).
    I'm not interested in fixing it because the AppKit-based build
    is highly recommended.

To build or run the GLFW build you must now explicitly pass in
`-Dapp-runtime=glfw` to `zig build`.
2023-08-17 16:27:03 -07:00
Mitchell Hashimoto b18e7393e1
build: remove hardcoded glibc, I don't think this error is happening 2023-08-13 11:57:43 -07:00
Mitchell Hashimoto e33f6c71de
update libxev to fix split writes on large writes (i.e. big paste)
Fixes #258

This was an upstream bug in libxev where partial the queueWrite
mechanism would not correctly handle partial write results:
https://github.com/mitchellh/libxev/pull/60
2023-08-09 08:18:43 -07:00
Kevin Hovsäter 22b8173164 Fix typos 2023-08-08 14:27:34 +02:00
Mitchell Hashimoto a348adf26b
build: dynamic link first (mode_first) 2023-08-07 10:49:50 -07:00
Mitchell Hashimoto d356d5ea38
build: add libxml2/libbuid for fontconfig dynamic link for CI 2023-08-07 10:33:00 -07:00
Mitchell Hashimoto 68cd53e82d
build: always add /usr/lib/{triple} to search path for Linux
This is a common location for dynamic libraries. We already searched it
for Flatpak but we need to do this more generally.
2023-08-07 10:20:20 -07:00
Thorsten Ball 89227a1aac flatpak: install icon files to `/apps` path
I couldn't get icons to work for the flatpak version, so I looked at the
reference here: https://docs.flatpak.org/en/latest/freedesktop-quick-reference.html

That says the path format is `share/icons/hicolor/<resolution>/apps/<icon>`.

That also matches what I have on my Ubuntu machines: icons are, for
example, located in these two locations:

- `/usr/share/icons/hicolor/128x128/apps`
- `~/.local/share/icons/hicolor/128x128/apps`

Note the `/apps`.
2023-08-06 18:54:45 +02:00
Mitchell Hashimoto 9e3d59534d
update build.zig required zig version 2023-08-02 16:18:27 -07:00
Mitchell Hashimoto dd18eaab5d
fix various build scripts 2023-08-02 15:06:24 -07:00
Mitchell Hashimoto d649b3f6d4
update zig 2023-08-02 14:39:19 -07:00
Mitchell Hashimoto 4b3b42bc54
update zig 2023-07-28 10:22:58 -07:00
Mitchell Hashimoto 848943770a
start shell-integration folder, copy into zig-out 2023-07-06 13:26:28 -07:00
Mitchell Hashimoto ce77002198
remove metal workaround completely 2023-07-01 15:19:13 -07:00
Mitchell Hashimoto f537d7aab1
renderer: remove metal workaround, this caused crashes on x86_64
And it now works.
2023-07-01 15:14:24 -07:00
Mitchell Hashimoto a212d811e7
build: update min required zig version 2023-06-30 13:24:01 -07:00
Mitchell Hashimoto b7b3b9e7f2
build.zig update min version 2023-06-25 11:18:09 -07:00
Mitchell Hashimoto 56f8e39e5b
Update zig, mach, fmt 2023-06-25 11:08:20 -07:00
Mitchell Hashimoto 701cb9f2f5
build: fix race condition in build on creating 'share' dir 2023-06-24 15:34:17 -07:00
Mitchell Hashimoto 7e51dbb7e5
build: fix race conditions, use actual filesource 2023-06-24 14:24:58 -07:00
Mitchell Hashimoto d9421b87b0
build: copy the terminfo db using cp so we get symlinks 2023-06-24 12:40:12 -07:00
Mitchell Hashimoto da1248d973
build: copy terminfo data into Mac app bundle 2023-06-24 11:41:16 -07:00
Mitchell Hashimoto aad8483323
build: use tic to compile terminfo into database format 2023-06-24 09:45:26 -07:00
Mitchell Hashimoto 21d922304b
build: build.zig encodes and writes the terminfo source 2023-06-24 09:12:42 -07:00
Mitchell Hashimoto 7116ce0806
update zig version 2023-05-29 08:24:12 -07:00
Mitchell Hashimoto 57d8754c85
update required zig version in build.zig 2023-05-27 09:31:47 -07:00
Mitchell Hashimoto 97d9157d22
update zig version 2023-05-07 20:50:51 -07:00
Mitchell Hashimoto 4de8ddbeb5
update build 2023-04-06 08:57:29 -07:00
Jakub Konka 29e93a8984 macos: force macOS 12 SDK for latest macOS 13 as Mach does not support it 2023-03-26 22:51:37 +02:00
Mitchell Hashimoto 86c5b04ff9
copy mac binary must depend on binary 2023-03-24 20:33:36 -07:00
Mitchell Hashimoto 3be86cc79a
don't prefix warning 2023-03-24 20:19:04 -07:00
Mitchell Hashimoto 19106575eb
use new build struct 2023-03-24 20:17:25 -07:00
Mitchell Hashimoto 7a6826ee0e
build: run tests 2023-03-24 19:51:17 -07:00
Mitchell Hashimoto 5dc98da9a0
build compiles at least 2023-03-24 19:39:50 -07:00
Mitchell Hashimoto 8e8aabf4c0
build.zig: detect build outside of Nix environment and provide warning 2023-03-13 11:12:12 -07:00
Mitchell Hashimoto d99cc0aec1
build.zig: automatically patchelf the rpath when in a nix shell 2023-03-13 10:59:30 -07:00
Mitchell Hashimoto 03f5addd34
build.zig handles tagged releases 2023-03-05 09:04:59 -08:00
Mitchell Hashimoto 0907da4eba
build: generate a version number, show in log on startup 2023-03-04 20:34:15 -08:00
Mitchell Hashimoto 06035e2f95
can now use -Dfont-backend to choose the font backend to use 2023-03-04 10:50:13 -08:00
Mitchell Hashimoto 2b73fbaa0d
iterating on the new for loop syntax 2023-02-27 21:53:09 -08:00
Mitchell Hashimoto 5db9854e63
build: install the proper linux desktop file depending on flatpak or not 2023-02-27 15:20:31 -08:00
Mitchell Hashimoto 533cfbc9b8
ci: add flatpak builder 2023-02-27 14:37:52 -08:00
Mitchell Hashimoto 52d22a140c
termio: exec uses new flatpak command, no more host-spawn 2023-02-27 11:26:31 -08:00
Mitchell Hashimoto 5b9bc9abdb
flatpak: build GTK version 2023-02-25 23:08:04 -08:00
Mitchell Hashimoto f18789da87
build: omit icon that is too large for freedesktop 2023-02-25 19:39:16 -08:00
Mitchell Hashimoto b927105959
build: add freedesktop file and icon 2023-02-25 14:57:48 -08:00
Mitchell Hashimoto 3dbb7e44bf
build: don't build bench by default 2023-02-25 14:57:48 -08:00
Mitchell Hashimoto 90bea1b742
gtk: get proper content scaling 2023-02-24 07:58:30 -08:00
Mitchell Hashimoto 48c9c65915
add app runtime option, add gtk backend 2023-02-24 07:58:29 -08:00
Mitchell Hashimoto ff9af8a07b
lots of progress running a surface but still crashes 2023-02-19 10:44:56 -08:00
Mitchell Hashimoto f30d80cabe
build: must set run condition to always now 2023-02-19 10:44:55 -08:00
Mitchell Hashimoto 1f9d4eb9f4
update to latest build API, rebase 2023-02-19 10:44:55 -08:00
Mitchell Hashimoto 2b3531378f
build: bundle compiler rt 2023-02-19 10:44:54 -08:00
Mitchell Hashimoto 9bd527fe00
macos: config API 2023-02-19 10:44:54 -08:00
Mitchell Hashimoto d2d21801d8
macos: need to link to libstdc++ 2023-02-19 10:44:54 -08:00
Mitchell Hashimoto d2dd3df86a
libtoolstep 2023-02-19 10:44:54 -08:00
Mitchell Hashimoto 8b80e65928
lots of broken stuff 2023-02-19 10:44:54 -08:00
Mitchell Hashimoto 1abaf87de9
build: LipoStep 2023-02-19 10:44:53 -08:00
Mitchell Hashimoto 55aff76922
build: remove SwiftBuildStep 2023-02-19 10:44:53 -08:00
Mitchell Hashimoto abd739f3ef
build: just copy xcframework 2023-02-19 10:44:53 -08:00
Mitchell Hashimoto 8035865596
build: ghostty lib, framework, build into app 2023-02-19 10:44:53 -08:00
Mitchell Hashimoto 4d09f8dba6
build: add SwiftBuildStep to run "swift build" 2023-02-19 10:44:52 -08:00
Mitchell Hashimoto b49634a57c
add TODO notes about arch 2023-02-19 10:44:52 -08:00
Mitchell Hashimoto 1f70181032
build: can build the app using Swift (noop) 2023-02-19 10:44:52 -08:00
Mitchell Hashimoto a2f17aa71a
fix tests, wasm build works again 2023-02-14 21:06:09 -08:00
Mitchell Hashimoto be75109a1d
new build system 2023-02-14 20:58:33 -08:00
Mitchell Hashimoto 4a1ff37d63
build conformance into dedicated directory 2023-02-10 08:43:32 -08:00
Mitchell Hashimoto 7d16acdf06
build: add comptime check to verify Zig version 2023-02-08 15:42:41 -08:00
Mitchell Hashimoto f07e21c22e
remove libuv from build 2023-02-04 17:37:51 -08:00
Mitchell Hashimoto 60fca27c33
vendor/libxev 2023-01-30 19:17:43 -08:00
Mitchell Hashimoto e9bf2a5680
pkg/objc: extract to zig-objc repo 2023-01-02 21:35:32 -08:00
Mitchell Hashimoto ce490e21ea
can specify a wasm target in build 2022-12-31 08:53:11 -08:00
Mitchell Hashimoto 241bfee7d4
wasm: use shared, imported memory
This switches our wasm build to use "shared" memory. Shared memory can
be shared across multiple web workers, which is something we'll want to
support for our multi-threaded behaviors later.

Shared memory has a number of different restrictions so this updates
zig-js to support it as well as updates some of our functions that need
to be aware of it.
2022-12-24 16:24:43 -08:00
Mitchell Hashimoto c34d911488
wasm: disable stack protector 2022-12-13 10:03:26 -08:00
Mitchell Hashimoto 2c5b5429e3
wasm: build.zig uses addDeps for wasm 2022-12-07 18:39:46 -08:00
Mitchell Hashimoto 2a74330911
font: begin making Group work with wasm 2022-12-05 16:08:20 -08:00
Mitchell Hashimoto 437f1772f1
logging works for wasm 2022-12-04 12:29:11 -08:00
Mitchell Hashimoto 940828ed97
font: web canvas creates a canvas element 2022-12-03 22:11:01 -08:00
Mitchell Hashimoto 21faf0b6fb
add zig-js 2022-12-03 21:46:00 -08:00
Mitchell Hashimoto 6b101c2293
support unit testing wasm via wasmtime 2022-12-01 13:02:17 -08:00
Mitchell Hashimoto 24cc01e055
move wasm main to src/, export an Atlas API
We don't need the Atlas API for wasm at all, but its a good way to test
things work incrementally and its a pretty cool thing to have as a wasm
library really.
2022-12-01 13:02:17 -08:00
Mitchell Hashimoto 5c58067489
add pixman package 2022-11-24 10:21:27 -08:00
Mitchell Hashimoto 894d36f28a
build: support for dynamic linking pixman 2022-11-24 10:21:27 -08:00
Mitchell Hashimoto 699370bd4a
pkg/pixman: starting API 2022-11-24 10:21:27 -08:00
Mitchell Hashimoto 30d62fc144
workaround for x86_64 ABI issue: https://github.com/ziglang/zig/issues/13598 2022-11-19 22:07:48 -08:00
Mitchell Hashimoto 81fbc94b3c
Add a benchmark exe for testing parser throughput 2022-11-13 11:29:05 -08:00
Mitchell Hashimoto 9d736985b3
Mac bundle, icons 2022-10-31 14:04:41 -07:00
Mitchell Hashimoto c1b70cb788
metal: devmode 2022-10-31 09:44:37 -07:00
Mitchell Hashimoto 090bab6798
metal: setup the render loop, draw the background color 2022-10-31 09:44:36 -07:00
Mitchell Hashimoto 10ee05b435
pkg/objc: selectors 2022-10-25 16:33:45 -07:00
Mitchell Hashimoto dd8fde52d9
pkg/objc starting 2022-10-25 16:21:11 -07:00
Mitchell Hashimoto 58c107dceb
freetype: resize glyphs that are too tall prior to storing in texture
Most emoji fonts are massive glyphs (128x128, 256x256, etc.). This means
the texture we need to store emoji is also massive. For a 128x128 emoji
font (both Apple and Noto), we can only store 12 emoji before resizing
prior to this commit.

This commit now threads through a max height through to the font face
and resizes the bitmap in memory before putting it in the atlas. This
results in significant savings. The max height is the cell height. We
allow the glyphs to be as wide as necessary due to double (and more)
wide glyphs.

For the unicode emoji test file, the atlas size before and after:

  Before: 262 MB
  After: 16 MB
2022-10-17 19:14:30 -07:00
Mitchell Hashimoto 20f1077e86
enable freetype with imgui 2022-10-17 11:41:46 -07:00
Mitchell Hashimoto f29393bca6
Imgui (#20)
* vendor/cimgui

* Add a "dev mode" window which for now is just imgui demo
2022-10-16 16:20:08 -07:00
Mitchell Hashimoto 699da6fcfe
update mach 2022-10-13 11:03:23 -07:00
Mitchell Hashimoto 939e6e7a65
pkg/harfbuzz: add coretext compilation on macOS 2022-10-02 11:05:40 -07:00
Mitchell Hashimoto 12c9482d48
Mac Font Discovery with CoreText (#17)
This implements font discovery so the `--font-family` flag works for macOS. Fonts are looked up using the Core Text API so any installed font on the Mac system can be used. 

We still use FreeType for rendering, and CoreText doesn't _quite_ give us all the information we need to build the exact face in FreeType. So a TODO after this is to now implement glyph _rendering_ using Core Text and Core Graphics. Until then, a couple fonts don't quite work (i.e. Monaco, a big one!) but many do!
2022-10-01 22:21:30 -07:00
Mitchell Hashimoto f9e1127317
pkg/macos: add CoreText 2022-09-30 14:48:06 -07:00
Mitchell Hashimoto ab4491a45d
pkg/macos: start core foundation bindings 2022-09-30 14:03:37 -07:00
Mitchell Hashimoto 68786814f8
-Dtest-exe flag to build and install test executables
This will be used to copy tests to other platforms.
2022-09-30 13:05:23 -07:00
Mitchell Hashimoto 141182aa13
start adding fontconfig conditional compilation 2022-09-23 14:12:38 -07:00
Mitchell Hashimoto 72105fc6cd
update to the latest stage2 compiler we can 2022-09-23 12:08:06 -07:00
Mitchell Hashimoto 77851b30a2
Revert "update to latest Zig nightly"
This reverts commit f3f2c3df26.
2022-09-14 19:39:10 -07:00
Mitchell Hashimoto f3f2c3df26
update to latest Zig nightly 2022-09-14 19:34:19 -07:00
Mitchell Hashimoto 4ca71eef7c
don't build fontconfig on mac 2022-09-13 14:46:33 -07:00
Mitchell Hashimoto 59191b05cd
build fontconfig 2022-09-13 14:34:40 -07:00
Mitchell Hashimoto 367aba62c4
Add harfbuzz build (not used yet) 2022-08-28 10:09:39 -07:00
Mitchell Hashimoto da79aae0ab
terminal: print wide characters 2022-08-20 16:11:48 -07:00
Mitchell Hashimoto ecf8353c74
support dynamic linking (not default) test in GH actions 2022-08-20 15:21:24 -07:00
Mitchell Hashimoto 32d96dd49b
add utf8proc so we can detect unicode char width 2022-08-20 10:48:54 -07:00
Mitchell Hashimoto 5ae450099d
freetype builds in png support, uses our own zlib 2022-08-20 10:33:57 -07:00
Mitchell Hashimoto 728df4af16
build libpng and link freetype to it 2022-08-20 10:24:49 -07:00
Mitchell Hashimoto e5c583ccf5
get rid of gb_math and create matrices from scratch 2022-08-18 11:33:28 -07:00
Mitchell Hashimoto ffa9ddc0d9
only build tracy if enabled 2022-08-17 17:03:38 -07:00
Mitchell Hashimoto 08292e58f3
add system SDK to build to enable cross compilation 2022-08-17 14:53:34 -07:00
Mitchell Hashimoto 5c2edf4d2a
Fix some stage2 compilation errors 2022-08-17 14:42:23 -07:00
Mitchell Hashimoto 2f36d5f715
pkg/tracy 2022-08-17 14:03:49 -07:00
Mitchell Hashimoto ea1e972a29
turn tracy into proper package 2022-08-17 14:02:09 -07:00
Mitchell Hashimoto 2457454b07
test wasm of the term package 2022-08-17 13:57:21 -07:00
Mitchell Hashimoto ead6e5a435
src/terminal can build into a minimal wasm library, I think 2022-08-17 12:25:53 -07:00
Mitchell Hashimoto f2d65d4524
move freetype into pkg 2022-08-17 11:20:31 -07:00
Mitchell Hashimoto b2192ea8f7
move libuv into pkg 2022-08-16 17:47:44 -07:00
Mitchell Hashimoto c09498318a
don't install conformance tests 2022-07-26 09:55:37 -07:00
Mitchell Hashimoto 079e5e6ccf
update to latest zig 2022-07-21 09:03:39 -07:00
Mitchell Hashimoto 312434a4b7
support building with musl, although it doesn't run currently 2022-07-17 19:40:48 -07:00
Mitchell Hashimoto 0dbd4d2ca6
only compile tracy on linux 2022-06-26 10:43:00 -07:00
Mitchell Hashimoto 989d23e9fc
update deps and fixes for NixOS 22.05 2022-06-01 18:00:37 -07:00
Mitchell Hashimoto afb8bb6d60
Add conformance apps 2022-05-09 17:28:14 -07:00
Mitchell Hashimoto 10736e2eb4
initial tracy support 2022-04-29 09:15:49 -07:00
Mitchell Hashimoto 70693872f7
use OpenGL on Mac 2022-04-23 14:28:01 -07:00
Mitchell Hashimoto 8b0d914ddc
improve building on darwin 2022-04-23 14:00:21 -07:00
Mitchell Hashimoto cca32c4d1c
embedded libuv loop. still some issues:
1. 100% CPU if no handles/requests
2. slow to exit cause it waits for the next tick
2022-04-22 10:01:52 -07:00
Mitchell Hashimoto 21ee510471
starting libuv bindings 2022-04-21 09:33:32 -07:00
Mitchell Hashimoto e672c9d7d5
calculate grid size in dedicated struct, tests 2022-04-15 08:16:22 -07:00
Mitchell Hashimoto 80490cb80d
remove ftgl build 2022-04-05 19:54:48 -07:00
Mitchell Hashimoto e33aeea723
starting FontAtlas 2022-04-05 17:57:09 -07:00
Mitchell Hashimoto c4fb335a6b
zig native atlas implementation 2022-04-05 12:04:10 -07:00
Mitchell Hashimoto 27f3e89316
Makefile with task for updating glad 2022-04-04 14:52:47 -07:00
Mitchell Hashimoto c6f1be3343
move from epoxy to glad 2022-04-04 14:35:19 -07:00
Mitchell Hashimoto c42bf7c663
build freetype-gl 2022-04-04 14:14:20 -07:00
Mitchell Hashimoto 1a40544220
gb_math 2022-04-04 11:11:24 -07:00
Mitchell Hashimoto e0b2aefad0
cglm 2022-04-04 09:51:58 -07:00
Mitchell Hashimoto 670af17a1b
getting closer to dumb font rendering 2022-04-03 22:04:42 -07:00
Mitchell Hashimoto 66c50b3815
don't build stb 2022-04-03 20:40:35 -07:00
Mitchell Hashimoto 3cb5dae9d8
fontconfig example 2022-04-03 20:08:29 -07:00
Mitchell Hashimoto 529a2c924c
build freetype from source 2022-04-03 13:40:21 -07:00
Mitchell Hashimoto 02848a0535
stb 2022-04-01 19:45:05 -07:00
Mitchell Hashimoto 387b0ff4a8
setup opengl 2022-04-01 10:49:54 -07:00
Mitchell Hashimoto cf956575c4
use waiting rather than polling on window 2022-03-31 17:51:00 -07:00
Mitchell Hashimoto a78e1894f8
minimal raylib window 2022-03-31 17:27:07 -07:00
Mitchell Hashimoto 83e5252c52
basics of setting up webgpu are up 2022-03-30 21:07:21 -07:00
Mitchell Hashimoto b23136fdaa
build gpu-dawn 2022-03-30 17:36:18 -07:00
Mitchell Hashimoto 112b13ae4d
build mach-glfw 2022-03-30 11:38:06 -07:00
Mitchell Hashimoto b8cee0a39e
initial glfw stuff working 2022-03-29 10:38:10 -07:00