packages feed

h-raylib-4.6.0.4: h-raylib.cabal

cabal-version:      2.4
name:               h-raylib
version:            4.6.0.4
synopsis:           Raylib bindings for Haskell
category:           graphics
description:
  This library contains Haskell bindings to the Raylib library. It supports Windows, Mac, Linux, and BSD.

bug-reports:        https://github.com/Anut-py/h-raylib/issues
license:            Apache-2.0
license-file:       LICENSE
author:             Anut
maintainer:         Anut
extra-doc-files:
  CONTRIBUTING.md
  README.md
  ROADMAP.md

extra-source-files:
  CHANGELOG.md
  examples/**/*.frag
  examples/**/*.mtl
  examples/**/*.obj
  examples/**/*.png
  examples/**/*.vert
  lib/**/*.c
  lib/**/*.h
  lib/**/*.m
  raylib/**/*.c
  raylib/**/*.h
  raylib/**/*.m

flag detect-platform
  description:
    Detect platform and automatically add platform-specific configuration

  default:     True
  manual:      True

flag platform-windows
  description: Build for Windows
  default:     False
  manual:      True

flag platform-mac
  description: Build for macOS/OSX
  default:     False
  manual:      True

flag platform-linux
  description: Build for Linux
  default:     False
  manual:      True

flag platform-bsd
  description: Build for FreeBSD, OpenBSD, or NetBSD
  default:     False
  manual:      True

flag mingw-cross
  description:
    Cross-compiling for mingw (used in combination with Windows)

  default:     False
  manual:      True

flag examples
  description: Build the example projects
  default:     False
  manual:      True

flag ghci
  description: Used when running the program in GHCi
  default:     False
  manual:      True

common example-options
  default-language: Haskell2010

  if !flag(examples)
    buildable: False

  else
    build-depends:
      , base
      , h-raylib

-- core
executable basic-window
  import:         example-options
  hs-source-dirs: examples/basic-window/src
  main-is:        Main.hs

executable first-person-camera
  import:         example-options
  hs-source-dirs: examples/first-person-camera/src
  main-is:        Main.hs

executable camera-ray-collision
  import:         example-options
  hs-source-dirs: examples/camera-ray-collision/src
  main-is:        Main.hs

-- textures
executable basic-images
  import:         example-options
  hs-source-dirs: examples/basic-images/src
  main-is:        Main.hs

-- text
executable custom-font-text
  import:         example-options
  hs-source-dirs: examples/custom-font-text/src
  main-is:        Main.hs

-- models
executable basic-models
  import:         example-options
  hs-source-dirs: examples/basic-models/src
  main-is:        Main.hs

-- shaders
executable basic-shaders
  import:         example-options
  hs-source-dirs: examples/basic-shaders/src
  main-is:        Main.hs

executable postprocessing-effects
  import:         example-options
  hs-source-dirs: examples/postprocessing-effects/src
  main-is:        Main.hs

-- audio
executable basic-audio
  import:         example-options
  hs-source-dirs: examples/basic-audio/src
  main-is:        Main.hs

-- rlgl
executable basic-rlgl
  import:         example-options
  hs-source-dirs: examples/basic-rlgl/src
  main-is:        Main.hs

library
  exposed-modules:
    Raylib.Core
    Raylib.Core.Audio
    Raylib.Core.Camera
    Raylib.Core.Models
    Raylib.Core.Shapes
    Raylib.Core.Text
    Raylib.Core.Textures
    Raylib.Types
    Raylib.Util
    Raylib.Util.Camera
    Raylib.Util.Colors
    Raylib.Util.Lenses
    Raylib.Util.Math
    Raylib.Util.RLGL

  other-modules:
    Raylib.ForeignUtil
    Raylib.Internal
    Raylib.Native

  build-depends:
    , base        >=4.0   && <4.17.0
    , containers  >=0.6.0 && <0.6.7.0
    , lens        >=4.0   && <=5.2.2

  hs-source-dirs:   src
  default-language: Haskell2010
  other-extensions:
    CPP
    DeriveAnyClass
    ForeignFunctionInterface

  cc-options:       -Wno-discarded-qualifiers -DPLATFORM_DESKTOP

  if (flag(platform-windows) || (flag(detect-platform) && os(windows)))
    if flag(mingw-cross)
      extra-libraries:
        opengl32
        gdi32
        winmm
        shell32
        gcc
        gcc_eh

    else
      extra-libraries:
        opengl32
        gdi32
        winmm
        shell32
        gcc_eh

    cc-options: -D_ftelli64=ftello64 -D_fseeki64=fseeko64

  elif (flag(platform-linux) || (flag(detect-platform) && os(linux)))
    extra-libraries:
      GL
      c
      m
      pthread
      dl
      rt
      X11
      Xinerama
      Xcursor
      Xrandr
      Xi
      Xext

    cc-options:      -Wno-implicit-function-declaration -Wno-unused-result

  elif (flag(platform-mac) || (flag(detect-platform) && os(osx)))
    frameworks: OpenGL Cocoa IOKit CoreVideo CoreAudio CoreFoundation

  elif (flag(platform-bsd) || (flag(detect-platform) && ((os(freebsd) || os(netbsd)) || os(openbsd))))
    extra-libraries:
      GL
      pthread

  else

  -- Unsupported OS, do nothing. If you can get it working on an
  -- OS that isn't on here, please add it here.
  c-sources:
    lib/rl_bindings.c
    lib/rl_internal.c
    lib/rlgl_bindings.c
    raylib/src/raudio.c
    raylib/src/rcore.c
    raylib/src/rmodels.c
    raylib/src/rshapes.c
    raylib/src/rtext.c
    raylib/src/rtextures.c
    raylib/src/utils.c

  if (flag(platform-mac) || (flag(detect-platform) && os(osx)))
    -- Use rgflw.m instead of .c on Mac to force objective-c
    c-sources: lib/rglfw.m

  elif (flag(ghci) && (flag(platform-windows) || (flag(detect-platform) && os(windows))))
    c-sources: lib/glfw_patch/rglfw_patch.c

  else
    c-sources: raylib/src/rglfw.c

  if flag(ghci)
    cpp-options: -DGHCI

  include-dirs:
    lib raylib/src raylib/src/external/glfw/src
    raylib/src/external/glfw/include