From 01e57fc4a9861041cfab8c09a79bb603cc12c867 Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 19 Apr 2021 23:43:49 +0200 Subject: [PATCH] Updated raylib dependencies (markdown) --- raylib-dependencies.md | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/raylib-dependencies.md b/raylib-dependencies.md index 848df48..455c1ee 100644 --- a/raylib-dependencies.md +++ b/raylib-dependencies.md @@ -1,6 +1,4 @@ -While raylib uses libraries that were developed by other people (for specific tasks, like supporting a particular file format), this is all internal. raylib has no *external* dependencies. All of the required libraries are [bundled with the raylib sources](https://github.com/raysan5/raylib/tree/master/src/external). - -The following table lists the raylib dependencies. Most are [single-header, public-domain libraries](https://github.com/nothings/stb). +The following table lists the raylib dependencies. Most of them are single-file header-only public-domain libraries. All those libraries are included with raylib in [`src/external`](https://github.com/raysan5/raylib/tree/master/src/external) directory and they are compiled with raylib. **NOTE**: *Last updated on 14th April 2021 for the raylib 3.7 release.* @@ -28,21 +26,29 @@ Library | Version | raylib module | Notes [tinyobj_loader_c](https://github.com/raysan5/raylib/blob/master/src/external/tinyobj_loader_c.h) | ? (Ray) | [models](https://github.com/raysan5/raylib/blob/master/src/models.c) | OBJ/MTL data loading (*) [cgltf](https://github.com/raysan5/raylib/blob/master/src/external/cgltf.h) | 1.10 | [models](https://github.com/raysan5/raylib/blob/master/src/models.c) | glTF models data loading -Note that some of the dependencies listed above are specific to one of the platforms that raylib supports. +Note that some of the dependencies listed above are specific to only one of the platforms that raylib supports. + + - `PLATFORM_DESKTOP`: raylib uses on [core](https://github.com/raysan5/raylib/blob/master/src/core.c) module the outstanding [GLFW3](http://www.glfw.org/) library, embedded in the form of [rglfw](https://github.com/raysan5/raylib/blob/master/src/rglfw.c). + + - `PLATFORM_ANDROID`: raylib uses on [core](https://github.com/raysan5/raylib/blob/master/src/core.c) module the `native_app_glue` library (provided by Android NDK). Also, native Android libraries are used to manage window/context, inputs and activity life cycle. + + - `PLATFORM_RPI (RPI 0,1,2,3 - native)`: raylib uses on [core](https://github.com/raysan5/raylib/blob/master/src/core.c) module the native `VideoCore` library and `EGL` for window/context management. Inputs are processed using directly `evdev` Linux libraries. + + - `PLATFORM_DRM (RPI 4 - native)`: raylib uses on [core](https://github.com/raysan5/raylib/blob/master/src/core.c) module the native `DRM subsystem` and `GBM API` libraries for window/context management. Inputs are processed using `evdev` Linux libraries. -As mentioned above, some of the listed libraries are included with raylib as single-file, header-only libraries, and only depend on the C standard library for the target platform (msvcrt, libc, bionic, ...). They are compiled together with raylib (no need to manually link libraries). + - `PLATFORM_WEB (HTML5)`: raylib uses on [core](https://github.com/raysan5/raylib/blob/master/src/core.c) module the `emscripten SDK` provided libraries for several input events management, specially noticeable the touch events support. -Though raylib has no external dependencies, there are some platform-specific system libraries that do need to be linked when compiling [the collection of examples](https://github.com/raysan5/raylib/tree/master/examples). The following table lists the required libraries. +There are also some platform-specific system libraries that do need to be linked when compiling [raylib examples](https://github.com/raysan5/raylib/tree/master/examples). The following table lists the required system libraries. PLATFORM | platform dependencies | Notes --- | :---: | --- -DESKTOP:Windows | `OpenGL`, `winmm`, `gdi32`, `user32`, `kernel32` | Required for window creation -DESKTOP:Linux | `OpenGL`, `X11` | Also requires linkage with `libm`(math), `pthreads`(POSIX threads), `dl`(dynamic loading) and `X11` window system specific libs: `X11`, `Xrandr`, `Xinerama`, `Xi`, `Xxf86vm` and `Xcursor` -DESKTOP:FreeBSD | `OpenGL`, `X11` | Also requires linkage with `libm`(math), `pthreads`(POSIX threads), `dl`(dynamic loading) and `X11` window system specific libs: `X11`, `Xrandr`, `Xinerama`, `Xi`, `Xxf86vm` and `Xcursor` -DESKTOP:macOS | `OpenGL`, `Cocoa` | Required for window creation -ANDROID | `EGL`, `OpenGLES2.0`, `OpenSLES` | Code must be compiled using `Android NDK` libraries. Requires linkage with `native_app_glue`, `log`, `android`, `atomic`, `libc`, `libm`(math) and `dl`(dynamic loading) -RASPBERRY_PI | `EGL`, `OpenGLES2.0`, `bcm_host` | Graphics run in native mode using `bcm_host` (no `XWindows` required) and inputs are also natively read (no `XWindows` input events), also requires linkage with `libm`(math), `pthreads`(POSIX threads) and `dl`(dynamic loading). -RASPBERRY_PI:DRM | `EGL`, `OpenGLES2.0`, `DRM`, `GBM` | Graphics run in native mode using `DRM` (no `XWindows` required) and inputs are also natively read (no `XWindows` input events), also requires linkage with `libm`(math), `pthreads`(POSIX threads) and `dl`(dynamic loading). -WEB (HTML5) | `WebGL` | Code must be compiled using `emscripten SDK`, dependencies linkage is automatically detected. +`PLATFORM_DESKTOP:Windows` | `OpenGL`, `WinMM`, `GDI32`, `user32`, `kernel32` | Required for window creation. Note that `WinMM` is only used to get a hi-res timer and it can be avoided commenting [`SUPPORT_WINMM_HIGHRES_TIMER`](https://github.com/raysan5/raylib/blob/master/src/config.h#L45) config flag. +`PLATFORM_DESKTOP:Linux` | `OpenGL`, `X11` | Also requires linkage with `libm`(math), `pthreads`(POSIX threads), `dl`(dynamic loading) and `X11` window system specific libs: `X11`, `Xrandr`, `Xinerama`, `Xi`, `Xxf86vm` and `Xcursor` +`PLATFORM_DESKTOP:FreeBSD` | `OpenGL`, `X11` | Also requires linkage with `libm`(math), `pthreads`(POSIX threads), `dl`(dynamic loading) and `X11` window system specific libs: `X11`, `Xrandr`, `Xinerama`, `Xi`, `Xxf86vm` and `Xcursor` +`PLATFORM_DESKTOP:macOS` | `OpenGL`, `Cocoa` | Required for window creation +`PLATFORM_ANDROID` | `EGL`, `OpenGLES2.0`, `OpenSLES` | Code must be compiled using `Android NDK` libraries. Requires linkage with `native_app_glue`, `log`, `android`, `atomic`, `libc`, `libm`(math) and `dl`(dynamic loading) +`PLATFORM_RPI` | `EGL`, `OpenGLES2.0`, `bcm_host` | Graphics run in native mode using `bcm_host` (no `XWindows` required) and inputs are also natively read (no `XWindows` input events), also requires linkage with `libm`(math), `pthreads`(POSIX threads) and `dl`(dynamic loading). +`PLATFORM_DRM` | `EGL`, `OpenGLES2.0`, `DRM`, `GBM` | Graphics run in native mode using `DRM` (no `XWindows` required) and inputs are also natively read (no `XWindows` input events), also requires linkage with `libm`(math), `pthreads`(POSIX threads) and `dl`(dynamic loading). +`PLATFORM_WEB (HTML5)` | `WebGL` | Code must be compiled using `emscripten SDK`, dependencies linkage is automatically detected. raylib is [highly modular by design](https://github.com/raysan5/raylib/wiki/raylib-architecture). Many modules can be omitted when they are not being used, and consequently, the libraries used by those modules will also be redundant. \ No newline at end of file