h-raylib: Raylib bindings for Haskell

[ apache, graphics, library ] [ Propose Tags ]

This library contains Haskell bindings to the Raylib library. It supports Windows, Mac, Linux, and BSD.


[Skip to Readme]

Flags

Manual Flags

NameDescriptionDefault
detect-platform

Detect platform and automatically add platform-specific configuration

Enabled
platform-windows

Build for Windows

Disabled
platform-mac

Build for macOS/OSX

Disabled
platform-linux

Build for Linux

Disabled
platform-bsd

Build for FreeBSD, OpenBSD, or NetBSD

Disabled
platform-nixos

Build for Nix (use external GLFW)

Disabled
platform-web

Build for web

Disabled
mingw-cross

Cross-compiling for mingw (used in combination with Windows)

Disabled
examples

Build the example projects

Disabled
ghci

Used when running the program in GHCi

Disabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 4.5.0.1, 4.5.0.2, 4.5.0.3, 4.5.0.4, 4.5.0.5, 4.5.0.6, 4.5.0.7, 4.5.0.8, 4.5.0.9, 4.5.0.10, 4.5.0.11, 4.5.0.12, 4.5.1.0, 4.5.1.1, 4.5.2.0, 4.5.3.0, 4.5.3.1, 4.5.3.2, 4.5.3.3, 4.5.3.4, 4.6.0.1, 4.6.0.2, 4.6.0.3, 4.6.0.4, 4.6.0.5, 4.6.0.6, 4.6.0.7, 5.1.0.1, 5.1.1.0, 5.1.2.0, 5.1.3.0
Change log CHANGELOG.md
Dependencies base (>=4.0 && <4.20), bytestring (>=0.11.0 && <0.13), containers (>=0.6.0 && <0.7.0), exceptions (>=0.10.4 && <0.10.8), lens (>=4.0 && <5.2.4), template-haskell (>=2.16.0.0 && <2.22.0.0), text (>=2.0 && <2.2) [details]
License Apache-2.0
Author Anut
Maintainer Anut
Category graphics
Bug tracker https://github.com/Anut-py/h-raylib/issues
Source repo head: git clone git://github.com/Anut-py/h-raylib.git
Uploaded by Anut at 2024-04-13T23:24:17Z
Distributions
Reverse Dependencies 1 direct, 0 indirect [details]
Executables raygui-suite, basic-rlgl, basic-audio, postprocessing-effects, basic-shaders, basic-models, custom-font-text, bunnymark, basic-images, camera-ray-collision, first-person-camera, basic-automation-events, basic-callbacks, basic-window
Downloads 1632 total (118 in the last 30 days)
Rating 2.5 (votes: 3) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for h-raylib-5.1.3.0

[back to package description]

h-raylib: Haskell bindings for Raylib

cabal-build nix-build Hackage Version

This library includes Haskell bindings to the Raylib library.

Basic usage | Platform specific requirements | Advanced usage | GHCi | Documentation | FAQ and help

Basic usage

To use this package, include it as a dependency in your cabal file.

build-depends:
  base,
  # ...
  h-raylib

It should work out of the box. See Advanced usage for more complex use cases.

Platform specific requirements

This library is known to work on Windows, Linux, and Mac. It may not work properly on other platforms, so don't hesitate to report issues on the GitHub repository.

Windows/Mac

h-raylib should automatically work if you do not disable the detect-platform flag. In that case, you may skip this step.

If you do disable the detect-platform flag when building, use the platform-windows or platform-mac flag when building.

Linux

You may need to run the following to install X11 (a window manager for Linux).

sudo apt-get install libx11-dev libxrandr-dev libxi-dev libxcursor-dev libxinerama-dev

Now, h-raylib should automatically work if you do not disable the detect-platform flag. In that case, you may skip the following.

If you do disable the detect-platform flag when building, use the platform-linux flag when building

BSD (Experimental)

h-raylib should automatically work if you do not disable the detect-platform flag. In that case, you may skip this step.

If you do disable the detect-platform flag when building, use the platform-bsd flag when building.

Other platforms

This library has not yet been tested on other platforms (raylib supports Android, Raspberry Pi, and DRM, all of which have not been implemented in h-raylib). Anybody willing to try is welcome.

Web support has not been finalized yet.

If you get it working on other platforms, please create a pull request in the GitHub repository and update h-raylib.cabal with the relevant config.

Advanced usage

Your platform-specific dependencies will automatically be built by default. You may want to disable this behavior. You can disable the detect-platform flag to achieve this.

You can do this through the command line when running your project, like so

cabal run --constraint="h-raylib -detect-platform"

Or you can add it to your cabal.project file.

package h-raylib
  flags: -detect-platform

The flags platform-windows, platform-mac, platform-linux, and platform-bsd are also supported if you want to build for a different platform.

Running in GHCi

You can use this library in GHCi just like any other library, but you will need to add --constraint="h-raylib +ghci" to the command. For example, in the root folder of this repository, you could use the command below to use the library through GHCi.

cabal repl --constraint="h-raylib +ghci"

You may need to use :set -fno-ghci-sandbox after entering the REPL to fix problems with multithreaded execution.

On Windows, you may lose joystick support when running in GHCi.

Documentation

For documentation: DOCUMENTATION.md.

For contributors: CONTRIBUTING.md.

If you want to request a feature, create an issue in the GitHub repo. Please check the roadmap to see if the feature has already been planned.

FAQ and help

  • When I try to run an h-raylib program I get the error The code execution cannot proceed because libwinpthread-1.dll was not found. Reinstalling the program may fix this problem.

  • When I try to compile an h-raylib program I get the error Missing (or bad) C libraries: gcc_eh

If you find a bug, please create an issue on GitHub.

If you have a question about the library that is not related to a bug, ask it on GitHub discussions or in the Haskell GameDev Discord server.

License

This project is licensed under the Apache License 2.0. See more in LICENSE.