Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build.zig: Fix various issues around -Dconfig #4398

Merged
merged 2 commits into from
Oct 20, 2024

Conversation

sagehane
Copy link
Contributor

Here is a PR with issues 1, 2, and 3 from #4393 (comment) addressed.

I didn't bother implementing 4 because there seemed to be multiple possible solutions to it, the way I originally attempted it was quite hacky and caused breaking changes.

Breaking changes:
Now, valid flags like "-x c++" will be treated as "-x" "c++" and thus behave incorrectly. I found this to be a non-issue as Zig currently doesn't accept those flags, and I believe "-xc++" is a valid alternative. I don't know enough C to know if there are other possibly useful flags that often come with spaces between.

src/build.zig Outdated Show resolved Hide resolved
@Yerdun
Copy link

Yerdun commented Oct 20, 2024

> Here is a PR with issues 1, 2, and 3 from #4393 (comment) addressed.

It's worth noting that issues 1 and 2 (the dependency problem) still occur when using @embedFile() over pathFromRootDir(). But since the goal of this commit is purely to resolve the -Dconfig problems, not the dependency problem, I think it's perfectly fine as-is. Not to mention, one can just uncomment those two lines should the need arise.

My bad was looking at the wrong comment, gotta reread before I actually respond to this

Also, if you don't mind explaining, could I ask how @embedFile() "bloats the size of the binary"? I'm reading the Zig documentation and it sounds like the bloat comes from creating a very long string, is that right?

@sagehane
Copy link
Contributor Author

sagehane commented Oct 20, 2024

Wait, are you still experiencing breakage for your use-case?

Also, if you don't mind explaining, could I ask how @embedfile() "bloats the size of the binary"?

Yes, if you have any values defined at comptime and is used at runtime, it will be added to the binary. Since src/config.h is about 16 KiB, it means any program embedding it AND using the value at runtime should become 16 KiB larger. Note, the "program" here is the build system and it will have no result in the final binary people should care about.

Anyhow, I thought of something that seems okay to me. Should be far smaller than embedding the entire file; also probably easier to debug. I need to check if this actually does reduce the binary size compared to just using @embedFile though. Maybe debug mode might not be smart enough to optimise it out.

/// A list of all flags from `src/config.h` that one may override
const config_h_flags = outer: {
    // Set this value higher if compile errors happen as `src/config.h` gets larger
    @setEvalBranchQuota(1 << 20);

    const config_h = @embedFile("config.h");
    var flags: []const []const u8 = &.{};

    var lines = std.mem.tokenizeScalar(u8, config_h, '\n');
    while (lines.next()) |line| {
        if (!std.mem.containsAtLeast(u8, line, 1, "SUPPORT")) continue;
        if (std.mem.startsWith(u8, line, "//")) continue;
        if (std.mem.startsWith(u8, line, "#if")) continue;

        var flag = std.mem.trimLeft(u8, line, " \t"); // Trim whitespace
        flag = flag["#define ".len - 1 ..]; // Remove #define
        flag = std.mem.trimLeft(u8, flag, " \t"); // Trim whitespace
        flag = flag[0 .. std.mem.indexOf(u8, flag, " ") orelse continue]; // Flag is only one word, so capture till space
        flag = "-D" ++ flag; // Prepend with -D

        flags = @as([]const []const u8, flags ++ [1][]const u8{flag});
    }

    @compileLog(flags);
    break :outer flags;
};
$ zig build
/home/plumeus/repos/raylib/zig_patch_2/src/build.zig:98:5: error: found compile log statement
    @compileLog(flags);
    ^~~~~~~~~~~~~~~~~~

Compile Log Output:
@as([]const []const u8, &.{ "-DSUPPORT_MODULE_RSHAPES"[0..24], "-DSUPPORT_MODULE_RTEXTURES"[0..26], "-DSUPPORT_MODULE_RTEXT"[0..22], "-DSUPPORT_MODULE_RMODELS"[0..24], "-DSUPPORT_MODULE_RAUDIO"[0..23], "-DSUPPORT_CAMERA_SYSTEM"[0..23], "-DSUPPORT_GESTURES_SYSTEM"[0..25], "-DSUPPORT_RPRAND_GENERATOR"[0..26], "-DSUPPORT_MOUSE_GESTURES"[0..24], "-DSUPPORT_SSH_KEYBOARD_RPI"[0..26], "-DSUPPORT_WINMM_HIGHRES_TIMER"[0..29], "-DSUPPORT_PARTIALBUSY_WAIT_LOOP"[0..31], "-DSUPPORT_SCREEN_CAPTURE"[0..24], "-DSUPPORT_GIF_RECORDING"[0..23], "-DSUPPORT_COMPRESSION_API"[0..25], "-DSUPPORT_AUTOMATION_EVENTS"[0..27], "-DRL_SUPPORT_MESH_GPU_SKINNING"[0..30], "-DSUPPORT_QUADS_DRAW_MODE"[0..25], "-DSUPPORT_FILEFORMAT_PNG"[0..24], "-DSUPPORT_FILEFORMAT_GIF"[0..24], "-DSUPPORT_FILEFORMAT_QOI"[0..24], "-DSUPPORT_FILEFORMAT_DDS"[0..24], "-DSUPPORT_IMAGE_EXPORT"[0..22], "-DSUPPORT_IMAGE_GENERATION"[0..26], "-DSUPPORT_IMAGE_MANIPULATION"[0..28], "-DSUPPORT_DEFAULT_FONT"[0..22], "-DSUPPORT_FILEFORMAT_TTF"[0..24], "-DSUPPORT_FILEFORMAT_FNT"[0..24], "-DSUPPORT_TEXT_MANIPULATION"[0..27], "-DSUPPORT_FONT_ATLAS_WHITE_REC"[0..30], "-DSUPPORT_FILEFORMAT_OBJ"[0..24], "-DSUPPORT_FILEFORMAT_MTL"[0..24], "-DSUPPORT_FILEFORMAT_IQM"[0..24], "-DSUPPORT_FILEFORMAT_GLTF"[0..25], "-DSUPPORT_FILEFORMAT_VOX"[0..24], "-DSUPPORT_FILEFORMAT_M3D"[0..24], "-DSUPPORT_MESH_GENERATION"[0..25], "-DSUPPORT_FILEFORMAT_WAV"[0..24], "-DSUPPORT_FILEFORMAT_OGG"[0..24], "-DSUPPORT_FILEFORMAT_MP3"[0..24], "-DSUPPORT_FILEFORMAT_QOA"[0..24], "-DSUPPORT_FILEFORMAT_XM"[0..23], "-DSUPPORT_FILEFORMAT_MOD"[0..24], "-DSUPPORT_STANDARD_FILEIO"[0..25], "-DSUPPORT_TRACELOG"[0..18] }[0..45])

@Yerdun
Copy link

Yerdun commented Oct 20, 2024

Wait, are you still experiencing breakage for your use-case?

When using @embedFile() instead of pathFromRoot(), yes. It still duplicates the submodule's file path:

/tmp/raylib-zig-dep-bug % zig build
install
└─ install raylib-zig-dep-bug
   └─ zig build-exe raylib-zig-dep-bug Debug native
      └─ WriteFile raylib.h failure
error: FileNotFound: /tmp/raylib-zig-dep-bug/raylib/raylib/src/raylib.h

But it's easily solvable by uncommenting the two pathFromRoot() lines, so I think it's perfectly fine. Not to mention, should src/build.zig ever be moved to the root directory in the future, that would also solve the problem.

Note, the "program" here is the build system and it will have no result in the final binary people should care about.

Oh, I thought it would affect the actual library binary that was outputted. That would be perfectly fine, then.

Don't know enough to comment on your other proposal regarding reading config.h, but if it makes the build script easier to debug, that sounds good to me.

@sagehane
Copy link
Contributor Author

sagehane commented Oct 20, 2024

When using @embedFile() instead of pathFromRoot(), yes. It still duplicates the submodule's file path:

Sorry to hear that. I'll try your repo with this again. This is why merging src/build.zig to build.zig simplifies a lot of things and makes it easier to debug too.

File size differences with usage of @embedFile:

test1.zig:

const std = @import("std");

pub fn main() void {
    var x = @embedFile("config.h");
    _ = &x;
}

test2.zig:

const std = @import("std");

/// A list of all flags from `src/config.h` that one may override
const config_h_flags = outer: {
    // Set this value higher if compile errors happen as `src/config.h` gets larger
    @setEvalBranchQuota(1 << 20);

    const config_h = @embedFile("config.h");
    var flags: []const []const u8 = &.{};

    var lines = std.mem.tokenizeScalar(u8, config_h, '\n');
    while (lines.next()) |line| {
        if (!std.mem.containsAtLeast(u8, line, 1, "SUPPORT")) continue;
        if (std.mem.startsWith(u8, line, "//")) continue;
        if (std.mem.startsWith(u8, line, "#if")) continue;

        var flag = std.mem.trimLeft(u8, line, " \t"); // Trim whitespace
        flag = flag["#define ".len - 1 ..]; // Remove #define
        flag = std.mem.trimLeft(u8, flag, " \t"); // Trim whitespace
        flag = flag[0 .. std.mem.indexOf(u8, flag, " ") orelse continue]; // Flag is only one word, so capture till space
        flag = "-D" ++ flag; // Prepend with -D

        flags = @as([]const []const u8, flags ++ [1][]const u8{flag});
    }

    break :outer flags;
};

pub fn main() void {
    var x = config_h_flags;
    _ = &x;
}
$ zig build-exe test1.zig && zig build-exe test2.zig && du -b test1 test2
2454400	test1
2444984	test2

$ zig build-exe test1.zig -fstrip && zig build-exe test2.zig -fstrip && du -b test1 test2
201056	test1
186992	test2

$ strings test1 | rg RTEXT
#define SUPPORT_MODULE_RTEXTURES        1
#define SUPPORT_MODULE_RTEXT            1       // WARNING: It requires SUPPORT_MODULE_RTEXTURES to load sprite font textures

$ strings test2 | rg RTEXT
-DSUPPORT_MODULE_RTEXTURES
-DSUPPORT_MODULE_RTEXT

Okay, the difference is negligible here. But I still think the latter is easier to debug so I would prefer it that way.

@Yerdun
Copy link

Yerdun commented Oct 20, 2024

Sorry to hear that. I'll try your repo with this again.

Oh, really, don't worry about it. Your code already has an opt-in fix: like I mentioned earlier, it works perfectly fine when uncommenting the pathFromRoot() lines.

This is why merging src/build.zig to build.zig simplifies a lot of things and makes it easier to debug too.

Yup. So I wouldn't worry about introducing temporary fixes to the dependency problem right now, since just moving src/build.zig to root is a far more graceful way of handling it.

@sagehane
Copy link
Contributor Author

sagehane commented Oct 20, 2024

Weird, when trying to use your repo on Zig 0.12.1 and 0.13.0, I get the following:

$ zig build
install
└─ install raylib
   └─ zig build-lib raylib Debug native
      └─ run wayland-scanner (xdg-shell-client-protocol-code.h) failure
error: FileNotFound: /tmp/raylib-zig-dep-bug/raylib/raylib/src/external/glfw/deps/wayland/xdg-shell.xml
<omitted>

I didn't notice this until now as I'm used to using the master branch of Zig, where everything compiles without any problems (including the @embedFile portion). And it's a different and more serious compile error that should be affecting more users than those passing -Dconfig... I wonder why you aren't encountering this... ugh, I really want to merge src/build.zig to build.zig. I'm getting headaches.

@sagehane
Copy link
Contributor Author

sagehane commented Oct 20, 2024

Okay, fine, I'll just give up and call it a day and be satisfied that this repo successfully builds from the root and src dir for all versions of Zig from 0.12.0 and onwards. I also added the commit on parsing src/config.h at comptime.

I plan to use #4393 to actually bring the logic over from src/build.zig to build.zig as I'm not sure how to get this working for all intended use-cases otherwise.

@sagehane sagehane marked this pull request as ready for review October 20, 2024 05:13
@Yerdun
Copy link

Yerdun commented Oct 20, 2024

I wonder why you aren't encountering this...

Oh, I am actually. That's the same problem I mentioned earlier, where using pathFromRoot instead of @embedFile (or moving src/build.zig to build.zig`) makes it work.

I'm used to using the master branch of Zig, where everything compiles without any problems

Huh, didn't know that. I probably should have mentioned I was using 0.12, my bad.

And it's a different and more serious compile error that should be affecting more users than those passing -Dconfig
ugh, I really want to merge src/build.zig to build.zig. I'm getting headaches.

Oh, I was thinking to just not worry about it until we try proposing the move to a single build.zig. As I was writing this, I just saw that you made a new commit. Sorry about that, didn't mean to make you work harder.

I'll go and test it with my repo in a bit.

@sagehane
Copy link
Contributor Author

sagehane commented Oct 20, 2024

As I was writing this, I just saw that you made a new commit. Sorry about that, didn't mean to make you work harder.

Oh, that commit is totally unrelated so it won't fix your immediate problems.

Anyhow, @raysan5, I think this PR is ready to be merged and I'll fix the other existing problems with #4393.

@Yerdun
Copy link

Yerdun commented Oct 20, 2024

Oh, that commit is totally unrelated so it won't fix your immediate problems.

Ah, gotcha. No worries, you've accomplished your goals for this commit already. And the fix on my end is very easy, anyway.

Thanks for everything you've done.

@raysan5 raysan5 merged commit ce9259c into raysan5:master Oct 20, 2024
14 checks passed
@raysan5
Copy link
Owner

raysan5 commented Oct 20, 2024

@sagehane Thanks for the review! Merged!

psxdev pushed a commit to raylib4Consoles/raylib that referenced this pull request Nov 18, 2024
* build.zig: Fix various issues around `-Dconfig`

* build.zig: Parse all relevant flags from `src/config.h` at comptime
Qoen1 added a commit to Qoen1/raylib-cpp-group-h that referenced this pull request Dec 26, 2024
* ADDED: `isGpuReady` flag, allow font loading with no GPU acceleration

* [RCORE] Update comments on fullscreen and boderless window to describe what they do (raysan5#4280)

* Update raylib_api.* by CI

* update fullscreen and borderless comments to better describe what they do.

* Update raylib_api.* by CI

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* [rcore][desktop_glfw] Keeping CORE.Window.position properly in sync with glfw window position (raysan5#4190)

* WindowPosCallback added.

CORE.Window.position is now properly kept in sync with the glfw window position.

* Update rcore_desktop_glfw.c

Comments updated.

* Setting CORE.Window.position correctly in InitPlatform() as well.

This also fixes not centering the window correctly when the high dpi flag was enabled.

* Fixes centering the window in the SetWindowMonitor() function.

Here the render size has to be used again in case the high dpi flag is enabled.

* Update Window Position

Update Window Position right away in ToggleFullscreen() & ToggleBorderlessWindowed() functions

* rlgl.h: glint64 did not exist before OpenGL 3.2 (raysan5#4284)

Compilation breaks on rlgl.h for early OpenGL versions.
Glint64 did not exist on those versions (< OpenGL 3.2)

* Examples makefiles: align /usr/local with /src Makefile (raysan5#4286)

* align /usr/local with src Makefile

Align /usr/local with the /src Makefile, where it can be overriden.

* /usr/local: allow override

align /usr/local with the /src Makefile, where it can be overriden

* Update raylib.h

* ADDED: more uniform data type options raysan5#4137

* Update rlgl.h

* Update rtext.c

* [rModels] Correctly split obj meshes by material (raysan5#4285)

* Correctly split meshes from tinyobj by material so they can be represented by raylib correctly

* PR Feedback

* fix(rcore/android): Allow main() to return it its caller on configuration changes. (raysan5#4288)

* Fix missing equal sign (raysan5#4294)

I just noticed there is a missing equal sign. This PR fixes this.

* Add uConsole mapping (raysan5#4297)

* fix: In certain cases the connector status is reported UNKNOWN, should be conisdered as CONNECTED (raysan5#4305)

Co-authored-by: Michal Jaskolski <[email protected]>

* Fix seg fault with long comment lines (raysan5#4306)

raysan5#4304

* Change implicit conversion to explicit conversion to remove warning (raysan5#4308)

* fix vld1q_f16 undeclared in arm on stb_image_resize2.h v2.10 (raysan5#4309)

* Update BINDINGS.md (raysan5#4311)

I've updated the bindings

* fix for hardcoded index values in vboID array (raysan5#4312)

changing any of the #defines in CONFIG.H would cause issues when rendering.

* chore: GetApplicationDirectory definition for FreeBSD (raysan5#4318)

* [rtextures] add MixColors. a function to mix 2 colors together (raysan5#4310)

* added MixColors function to mix 2 colors together (Line 1428 raylib.h and Line 4995 in rtextures.c)

* renamed MixColors to ColorLerp (raysan5#4310 (comment))

* changed ColorLerp to be more like other functions

---------

Co-authored-by: CI <[email protected]>

* Update raylib_api.* by CI

* REVIEWED: `ColorLerp()` formatting raysan5#4310

* Update raylib_api.* by CI

* Update rtextures.c

* [rcore] Add filtering folders to `LoadDirectoryFilesEx()`/`ScanDirectoryFiles()` (raysan5#4302)

* Add filtering folders in ScanDirectoryFiles and ScanDirectoryFilesRecursively

Add define FILTER_FOLDER for that purpose
Fix folder names matching filter being added to result

* Move FILTER_FOLDER define to internals of rcore and document option in comment

* Update raylib_api.* by CI

* REVIEWED: `DrawTexturePro()` to avoid negative dest rec raysan5#4316

* REVIEWED: Directory filter tag raysan5#4323

* Reviewed raysan5#4323

* Update raylib.h

* Update raylib_api.* by CI

* [BINDINGS.md] Added raylib-bqn, moved rayed-bqn (raysan5#4331)

* [BINDINGS.md] Added raylib-bqn, moved rayed-bqn

rayed-bqn has had a lot of progress and I've realized it has diverged too much from raylib, and so I made raylib-bqn to be a simple binding, while rayed-bqn will be a utility wrapper.

* removed accidental newline

* [rmodels] Optional GPU skinning (raysan5#4321)

* Added optional GPU skinning

* Added skinned bone matrices support for different file formats.

* Moved new shader locations to end of enum to avoid breaking existing examples. Added gpu skinning on drawing of instanced meshes.

* Added GPU skinning example.

* Removed variable declaration to avoid shadowing warning.

* Update raylib_api.* by CI

* Some minor tweaks

* Fix rlgl standalone defaults (raysan5#4334)

* Projects: Fix CMake example project  (raysan5#4332)

* Update CMakeLists.txt

Add missing link flags

* Update README.md

Remove unneeded flag because this flag is defined in the updated CMakeList file

* Update CMakeLists.txt

* Update parser's readme to mirror fixed help text (raysan5#4336)

* Update BINDINGS.md (raysan5#4337)

Updated Lean4 bindings

* `LoadFontDefault()`: Initialize glyphs and recs to zero raysan5#4319

* ADDED: `MakeDirectory()`

* Update raylib_api.* by CI

* Update rcore.c

* Update rcore.c

* Update rcore.c

* Update rcore.c

* Update rcore.c

* Fix isGpuReady flag on android (raysan5#4340)

* [SHAPES] Add more detail to comment for DrawPixel (raysan5#4344)

* Update raylib_api.* by CI

* Add comment that draw pixel uses geometry and may be slow

* Update raylib_api.* by CI

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Fix raysan5#4349

* [MODELS] Disable GPU skinning for MacOS platform (raysan5#4348)

* Update raylib_api.* by CI

* Disable GPU skinning on MacOS
Add GPU skinning example to MSVC Projects.

* Update raylib_api.* by CI

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Complements the raysan5#4348 GPU skinning fix (raysan5#4352)

* Fixes GetClipboardText() memory leak for PLATFORM_DESKTOP_SDL (raysan5#4354)

* [MODELS] Better fix for GPU skinning issues (raysan5#4353)

* Make the max VBO match the animation flag.

* re-enable GPU skinning for mac, and fix the max buffer to be correct based on the GPU skinning support flag.

* [rlgl] Fix rlgl standalone defaults (raysan5#4357)

* Fix rlgl standalone defaults

* Fix rmodels

* Typo fix (raysan5#4356)

Seemed to be a typo. Hope this helps.

* Allow Zig build script to change desktop backend (raysan5#4358)

* [build] CMake: Fix GRAPHICS check (raysan5#4359)

* updated camera speeds with GetFrameTime (raysan5#4362)

* taken from FluxFlus PR (raysan5#4363)

* Fix raysan5#4355

* [example] Input virtual controls example (raysan5#4342)

* Add files via upload

* Update core_input_gamepad_virtual.c

* Add files via upload

* Update and rename core_input_gamepad_virtual.c to core_virtual_Dpad.c

* Update and rename core_virtual_Dpad.c to core_input_virtual_controls.c

* Delete examples/core/core_input_gamepad_virtual.png

* Add files via upload

* Update Makefile

* Update Makefile.Web

* Update README.md

* Update README.md

* Create core_input_virtual_controls.vcxproj

* Delete projects/VS2022/examples/core_input_virtual_controls.vcxproj

* [zig] Fix build.zig bug (raysan5#4366)

* fixed zig config.h bug

* zig fmt

* removed old comment (raysan5#4370)

* Update CHANGELOG

* updated makefile to disable wayland by default (raysan5#4369)

* Update RGFW  (raysan5#4372)

* (rcore_desktop_rgfw.c) fix errors when compiling with mingw

* define WideCharToMultiByte

* update RGFW

* move stdcall def to windows only

* fix raw cursor input

* Removed tabs and triple line-breaks

* Some update to gltf loading (raysan5#4373)

Only warns when there are more animations than currently implemented
Allows mesh indices to be unsigned char

* Fix build.zig (raysan5#4374)

* build.zig: Improve logic (raysan5#4375)

* build.zig: Fix `@src` logic

* build.zig: Clarify build error

* build.zig: Add option for enabling `raygui`

* build.zig: Expose `Options` type

* `WARNING`: REMOVED: SVG files loading and drawing, moving it to raylib-extras

* REMOVED: `LoadImageSvg()`

* Update raylib_api.* by CI

* Update BINDINGS.md (raysan5#4378)

* build.zig: Fix `@src` logic and a few things (raysan5#4380)

* REVIEWED: `CodepointToUTF8()`, clean static buffer raysan5#4379

* build.zig: Very minor fixes (raysan5#4381)

* Fix the type mismatch caused due to unsupported `?[]const u8` (raysan5#4383)

Co-authored-by: Yuval Herman <[email protected]>

* qoi: Added support for image of channels 3 (raysan5#4384)

* Fix rectangle width and height check to account for squares (raysan5#4382)

* ADDED: Utility functions: `ComputeCRC32()` and `ComputeMD5()`

* Update raylib_api.* by CI

* WARNING: BREAKING: Renamed several functions for data validation raysan5#3930

* Update raylib_api.* by CI

* Fix raysan5#4388 (raysan5#4392)

* Fix VSCode Makefile to support multiple .c files (raysan5#4391)

Updated the VSCode Makefile to allow compilation of multiple .c files instead of just one (main.c).
- Replaced `SRC` and `OBJS` definitions to dynamically include all .c and .h files in the project.
- This change enables automatic handling of any number of source files specifically in the VSCode setup.

* [rcore] added sha1 implementation (raysan5#4390)

* added sha1 implementation

* added missing part

* fixed issue

* fix to match other implementations

* Update raylib_api.* by CI

* build.zig: Clean up my mess (raysan5#4387)

* [rl_gputex] Correctly load mipmaps from DDS files (raysan5#4399)

* correction of comments (raysan5#4400)

The indication of locations for bone ids and bone weights did not correspond to their default values ​​in config.h

* build.zig: Fix various issues around `-Dconfig` (raysan5#4398)

* build.zig: Fix various issues around `-Dconfig`

* build.zig: Parse all relevant flags from `src/config.h` at comptime

* Adds MaximizeWindow() and RestoreWindow() implementation for PLATFORM_WEB (raysan5#4397)

* [rtextures] ImageDraw(): Don't try to blend images without alpha (raysan5#4395)

* removed extra update command (raysan5#4401)

* [rcore] [web] Updates `SetWindowState()` and `ClearWindowState()` to handle `FLAG_WINDOW_MAXIMIZED` for `PLATFORM_WEB` (raysan5#4402)

* Updates SetWindowState() and ClearWindowState() to handle FLAG_WINDOW_MAXIMIZED for PLATFORM_WEB

* Update MaximizeWindow() and RestoreWindow() to set/unset the FLAG_WINDOW_MAXIMIZED

* Fix MaximizeWindow() for PLATFORM_WEB (raysan5#4404)

* Adds SetWindowOpacity() implementation for PLATFORM_WEB (raysan5#4403)

* build.zig: Merge `src/build.zig` to `build.zig` (raysan5#4393)

* build.zig: Move `src/build.zig` to `build.zig`

* build.zig: Remove uses of `@src`

* build.zig: Update entry point

* [Raymath] Add C++ operator overloads for common math function (raysan5#4385)

* Update raylib_api.* by CI

* Add math operators for C++ to raymath

* better #define for disabling C++ operators

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* REVIEWED: Formatting and raymath version raysan5#4385

* Updated instanced rendering support loading (raysan5#4408)

* Reviewed formatting raysan5#4408

* Removed trailing spaces

* Update raymath.h

* [Raymath] Add matrix operators to raymath for C++ (raysan5#4409)

* Add matrix operators to raymath for C++

* Fix spaces

* REVIEWED: `GetGestureHoldDuration()` comments

* Update raylib_api.* by CI

* [rcore] Adds implementation to `SetGamepadVibration()` on `PLATFORM_WEB` and updates it on `PLATFORM_DESKTOP_SDL` to handle duration (raysan5#4410)

* Updates SetGamepadVibration()

* Handle MAX_GAMEPAD_VIBRATION_TIME

* Revert low/high parameters back to left/rightMotor

* Fix missin semicolon

* Convert duration to seconds

* Add SetGamepadVibration() implementation to PLATFORM_WEB

* Update raylib_api.* by CI

* moved update out of draw area (raysan5#4413)

* REVIEWED: skinning shader for GLSL 100 raysan5#4412

* build.zig: Better specify Linux dependencies (raysan5#4406)

* Simplify EmscriptenResizeCallback() (raysan5#4415)

* build.zig: Re-add OpenGL to Linux deps (raysan5#4417)

* build.zig: Fix a minor issue with `-Dconfig` (raysan5#4418)

* Reviewed skinning shaders raysan5#4412

* Update config.h

* Update raylib.h

* Update raylib_api.* by CI

* Update core_input_gamepad example (raysan5#4416)

* [rcore] Fix raysan5#4405 (raysan5#4420)

* Fix raysan5#4405 at runtime

* Add parameter validation

* Remove default global deadzone

* [examples] Add deadzone handling to `core_input_gamepad` example (raysan5#4422)

* Add deadzone handling to core_input_gamepad example

* Rename variables

* Grammar fix in CONTRIBUTING.md (raysan5#4423)

"Can you write some tutorial/example?"
"Can you write some tutorials/examples?"

* Fix typo in rshapes.c (raysan5#4421)

* Add drawing for generic gamepad on core_input_gamepad example (raysan5#4424)

* Update skinning.fs

* Reviewed and reverted unneeded module check, `rtextures` should not depend on `rtext`

* ADDED: CHANGELOG for raylib 5.5 -WIP-

* Update CHANGELOG

* Update Makefile

* Update Makefile

* [RTEXTURES] Remove the panorama cubemap layout option (raysan5#4425)

* Remove the panorama cubemap layout, it was not implemented.
Left a todo in the code for some aspiring developer to finish.

* Update raylib_api.* by CI

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Update HISTORY.md

* Update CHANGELOG

* Update raylib.h

* Update raylib_api.* by CI

* Update CHANGELOG

* Update raylib.h

* Update Makefile

* Update raylib_api.* by CI

* Update raylib.h

* Update raylib_api.* by CI

* REVIEWED: GPU skninning on Web, some gotchas! raysan5#4412

* Update rlgl.h

* REVIEWED: `UpdateModelAnimationBoneMatrices()` comments

* Update raylib_api.* by CI

* Update emsdk paths to latest versions

* [rshapes] Review `DrawRectangleLines()` pixel offset (raysan5#4261)

* [rshapes] Remove `DrawRectangleLines()`'s + 1 offset

* ... and replace it with a -/+ 0.5 offset divided by current cam's zoom.

* REVIEWED: `DrawRectangleLines()`, considering view matrix for lines "alignment"

* Use free camera in model shader example (raysan5#4428)

* Add shadow map example to MSVC projects (raysan5#4430)

* Use the vertex color as part of the base shader in GLSL330 (raysan5#4431)

* Add input_virtual_controls to MSVC projects (raysan5#4433)

Fix input_virtual_controls example to use correct default font sizes

* [build] CMake: Don't build for wayland by default (raysan5#4432)

This is to align with the behavior of raysan5#4369, see raysan5#4371 for rationale on
disabling Wayland by default.

* [build] [web] Fix examples `Makefile` for `PLATFORM_WEB` (raysan5#4434)

* Fix examples Makefile for PLATFORM_WEB

* Replace shell with assignment operator

* Replace tab with spaces

* Update Makefile.Web

* REVIEWED: WebGL2 (OpenGL ES 3.0) backend flags (PLATFORM_WEB) raysan5#4330

* Minor format tweaks

* Use mingw32-make for Windows (raysan5#4436)

* [rtextures/rlgl] Load mipmaps for cubemaps (raysan5#4429)

* [rlgl] Load cubemap mipmaps

* [rtextures] Only generate mipmaps that don't already exist

* [rtextures] ImageDraw(): Implement drawing to mipmaps

* [rtextures] Load cubemap mipmaps

* Reviewed formating to follow raylib conventions raysan5#4429

* Reviewed formatting, remove end-line points, for consistency with comments

* Update cgltf.h

* Update dr_mp3.h

* Update dr_wav.h

* Update qoa.h

* Update stb_image.h

* Update stb_image_resize2.h

* Update stb_truetype.h

* Fix examples Makefile for NetBSD (raysan5#4438)

* fix makefile

* moving to LDPATHS

* fix clean and ldlibs stuff

* Update Makefile

* REVIEWED: `LoadTextureCubemap()` to avoid crash raysan5#4429

* fix (raysan5#4440)

* [rtextures] LoadTextureCubemap(): Copy image before generating mipmaps, to avoid dangling re-allocated pointers (raysan5#4439)

* Fix MSVC errors for PLATFORM_DESKTOP_RGFW (raysan5#4441)

* (rcore_desktop_rgfw.c) fix errors when compiling with mingw

* define WideCharToMultiByte

* update RGFW

* move stdcall def to windows only

* fix raw cursor input

* Fix warnings, update RGFW, fix msvc errors (make sure windows macro _WIN32 is correct)

* Fix signed/unsigned mismatch in rlgl (raysan5#4443)

* Update README.md

* Fix empty input string for MeasureTextEx (raysan5#4448)

* Fix inconsistent dll linkage warning on windows (raysan5#4447)

* Update rcore_desktop_glfw.c

* Update rtext.c

* [shapes] Add `shapes_rectangle_advanced ` example implementing a `DrawRectangleRoundedGradientH` function (raysan5#4435)

* [rshapes] Add  function

* "[shapes] rectangle advanced: fix screen width and height to fit with other examples"

* fix the issue with GetScreenWidth/GetScreenHeight that was identified on other platforms (raysan5#4451)

* Fix SetWindowSize() for PLATFORM_WEB (raysan5#4452)

* Update HISTORY.md

* Update Makefile

* Update rmodels.c - 'fix' for GenMeshSphere artifact (raysan5#4460)

When creating a new sphere mesh with high number of slices/rings the top and bottom parts of the generated sphere are removed. This happens because the triangles in those parts, due to high resolution, end up being very small and are removed as part of the 'par_shapes' library's optimization. Adding par_shapes_set_epsilon_degenerate_sphere(0.0); before generating the sphere mesh sets the threshold for removal of small triangles is removed and the sphere is returned to raylib correctly.

* Added last week commits info

* RENAMED: `UpdateModelAnimationBoneMatrices()` to `UpdateModelAnimationBones()`

Still, not fully convinced of those functions naming, despite quite descriptive, sounds a bit confusing to me...

* Update raylib_api.* by CI

* Fix for issue 4454, MatrixDecompose() gave incorrect output for certain combinations of scale and rotation (raysan5#4461)

* Update CHANGELOG

* implemented new linear gradient generation function (raysan5#4462)

* Update Makefile.Web

* Update core_2d_camera_mouse_zoom.c

* fix float casting warnings (raysan5#4471)

* UpdateModelAnimation speedup (raysan5#4470)

If we borrow from the GPU skinned animation code, we can just multiply the vertex by the matrix * weight and shave a chunk of CPU time.

* Improve cross-compilation with zig builds (raysan5#4468)

- Add xcode_frameworks when cross compiling for mac (ref:
https://github.com/hexops/mach/blob/main/build.zig)
- Add emsdk when cross compiling for wasm (ref:
https://github.com/floooh/sokol-zig/blob/master/build.zig)

Signed-off-by: Tomas Slusny <[email protected]>

* [rcore]  Clipboard Image Support  (raysan5#4459)

* [rcore] add 'GetClipboardImage' for windows

* [rcore] GetClipboardImage removed some unneeded defines

* [rcore] PLATFORM_SDL: create a compatility layer for SDL3

* external: add win32_clipboard.h header only lib

* [rcore] using win32_clipboard on platforms rlfw and rgfw

* [rcore] fix warnings in SDL3 compatibility layer

* Makefile: Allow specifying SDL_LIBRARIES to link, this helps with SDL3

* Makefile: examples makefile now compile others/rlgl_standalone only when TARGET_PLATFORM is PLATFORM_DESKTOP_GFLW

* Makefile: examples makefile now compile others/rlgl_standalone only when TARGET_PLATFORM is PLATFORM_DESKTOP_GFLW

* [rcore]: PLATFORM_SDL: improve clipboard data retrieval

* external: remove unused function from win32_clipboard.h

* Makefile: allow for extra flags necessary when compiling for SDL3

* [rcore]: fix string typo

* [rcore]: Properly handle NULL dpi passing. As is allowed in SDL2

* external: fix arch finding on win32_clipboard.h to allow compilation on msvc cmake CI

* [rcore]: PLATFORM_SDL: Treat monitor as an ID in SDL3 as opposed to an index as in SDL2

* [rcore]: typo

* Update raylib_api.* by CI

* build.zig: Remove addRaylib and fix raygui builds when using raylib as dep (raysan5#4475)

- addRaylib just duplicates what adding raylib as dependency already does
  so it do not needs to exist
- move raygui build to standard build process when flag is enabled. this
  works correctly when using raylib as dependency and having raygui as
  dependency as well. problem with previous approach was that raygui was in
  options but it was doing nothing because you had to also use addRaygui for
  it to be effective

Signed-off-by: Tomas Slusny <[email protected]>

* Improved logos size

* Fix the X axis of the second vertex of the Y negative cap of a cylinders, triangle fan (raysan5#4478)

* Fix a typecast warning in glfw clipboard access (raysan5#4479)

* [rcore]: Issue an warning instead of an error when checking SUPPORT_CLIPBOARD_IMAGE necessary support detection (raysan5#4477)

* Fix the example lighting shaders to use both frag and diffuse colors so they work with shapes and meshes. (raysan5#4482)

* Update CHANGELOG

* build.zig: remove raygui from options and re add adding raygui as a (raysan5#4485)

function

* Fix Makefile.Web (raysan5#4487)

* Update CHANGELOG

* Update HISTORY.md

* Update CHANGELOG

* Fix touch count reset (raysan5#4488)

* Update raygui.h

* Updated Notepad++ autocomplete list for raylib 5.5

* Commented code issuing warnings on w64devkit (GCC)

Tested with w64devkit/MSVC and all seem to work as expected

* Updated raylib resource data

* Update raylib.ico

* Update emsdk path on Windows to match new raylib installer package

* Fix warnings in examples (raysan5#4492)

Move shapes/shapes_rectangle_advanced to the correct folder in MSVC project
Add core_input_virtual_controls.vcxproj back into sln file

* Fix typo in BINDINGS.md (raysan5#4493)

* Fixing an OBJ loader bug that fragmented the loaded meshes (raysan5#4494)

The nextShapeEnd integer is a pointer in the OBJ data structures.
The faceVertIndex is a vertex index counter for the mesh we are
about to create. Both integers are not compatible, which causes
the code to finish the meshes too early, thus writing the OBJ data
incompletely into the target meshes.

It wasn't noticed because for the last mesh, it process all remaining
data, causing the last mesh to contain all remaining triangles.

This would have been noticed if the OBJ meshes used different textures
for each mesh.

* Update CHANGELOG

* Update HISTORY.md

* Thanks @everyone for everything 😄

* Update HISTORY.md

* Update core_basic_window.c

* Update raylib.h

* Update raylib_api.* by CI

* Update webassembly.yml

* Update HISTORY.md

* removed workflows

* merge master

---------

Signed-off-by: Tomas Slusny <[email protected]>
Co-authored-by: Ray <[email protected]>
Co-authored-by: Jeffery Myers <[email protected]>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Dave Green <[email protected]>
Co-authored-by: Tchan0 <[email protected]>
Co-authored-by: Hesham Abourgheba <[email protected]>
Co-authored-by: hanaxars <[email protected]>
Co-authored-by: carverdamien <[email protected]>
Co-authored-by: Michał Jaskólski <[email protected]>
Co-authored-by: Michal Jaskolski <[email protected]>
Co-authored-by: Chris Warren-Smith <[email protected]>
Co-authored-by: masnm <[email protected]>
Co-authored-by: Alex <[email protected]>
Co-authored-by: Jett <[email protected]>
Co-authored-by: base <[email protected]>
Co-authored-by: SusgUY446 <[email protected]>
Co-authored-by: CI <[email protected]>
Co-authored-by: foxblock <[email protected]>
Co-authored-by: Brian E <[email protected]>
Co-authored-by: Daniel Holden <[email protected]>
Co-authored-by: Asdqwe <[email protected]>
Co-authored-by: Ridge3Dproductions <[email protected]>
Co-authored-by: Daniil Kisel <[email protected]>
Co-authored-by: Menno van der Graaf <[email protected]>
Co-authored-by: Ashley Chekhov <[email protected]>
Co-authored-by: Nikolas <[email protected]>
Co-authored-by: Kacper Zybała <[email protected]>
Co-authored-by: Anthony Carbajal <[email protected]>
Co-authored-by: Magnus Oblerion <[email protected]>
Co-authored-by: Visen <[email protected]>
Co-authored-by: Colleague Riley <[email protected]>
Co-authored-by: Harald Scheirich <[email protected]>
Co-authored-by: William Culver <[email protected]>
Co-authored-by: Sage Hane <[email protected]>
Co-authored-by: Anand Swaroop <[email protected]>
Co-authored-by: yuval_dev <[email protected]>
Co-authored-by: Yuval Herman <[email protected]>
Co-authored-by: R-YaTian <[email protected]>
Co-authored-by: Jojaby <[email protected]>
Co-authored-by: Alan Arrecis <[email protected]>
Co-authored-by: Le Juez Victor <[email protected]>
Co-authored-by: Rapha <[email protected]>
Co-authored-by: Cypress <[email protected]>
Co-authored-by: Franz <[email protected]>
Co-authored-by: RadsammyT <[email protected]>
Co-authored-by: IcyLeave6109 <[email protected]>
Co-authored-by: Peter0x44 <[email protected]>
Co-authored-by: NishiOwO <[email protected]>
Co-authored-by: mpv-enjoyer <[email protected]>
Co-authored-by: Everton Jr. <[email protected]>
Co-authored-by: Arche Washi <[email protected]>
Co-authored-by: MikiZX1 <[email protected]>
Co-authored-by: waveydave <[email protected]>
Co-authored-by: decromo <[email protected]>
Co-authored-by: Tomas Slusny <[email protected]>
Co-authored-by: kimierik <[email protected]>
Co-authored-by: Oussama Teyib <[email protected]>
Co-authored-by: Eike Decker <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants