Skip to content

raylib libc dependency

Ray edited this page Apr 30, 2020 · 7 revisions

raylib is a C library and inevitably it depends on some implementation of C standard library (libc).

While working on raylib 3.0 I took some time to analyze that dependency in detail, no plans to remove it (maybe minimize it a bit) but I think it could be useful to have the knowledge where it is required.

stdlib.h

module libc function raylib function
core srand() InitTimer()
core abs(), rand() GetRandomValue()
core atexit() InitKeyboard()
InitTerminal()
shapes fabs() CheckCollisionCircleRec()
GetCollisionRec()
utils exit() TraceLog()

stdio.h

Note that file loading functionality is currently being centralized to LoadFileData()/SaveFileData(), most of the file access calls below will disappear soon, replaced by memory buffers parsing (Issue #1232.

module libc function raylib function
text fopen(), fseek(), fread(), fwrite(), fclose() LoadBMFont()
text fgets() LoadBMFont()
textures fopen(), fseek(), fread(), fwrite(), fclose() ExportImageAsCode()
LoadDDS()
LoadPKM()
LoadKTX()
SaveKTX()
LoadPVR()
LoadASTC()
models fopen(), fseek(), fread(), fwrite(), fclose() LoadIQM()
ExportMesh()
LoadModelAnimations()
audio fopen(), fseek(), fread(), fwrite(), fclose() ExportWaveAsCode()
LoadWAV()
SaveWAV()
utils sprintf() TraceLog()
utils fopen(), fseek(), fread(), fwrite(), fclose() LoadFileData()
SaveFileData()

string.h

module libc function raylib function
core strlen() GetFileNameWithoutExt()
GetDirectoryPath()
GetPrevDirectoryPath()
OpenURL()
InitEvdevInput()
core strrchr() GetExtension()
EventThreadSpawn()
core strcmp() IsGamepadName()
EmscriptenKeyboardCallback()
text strcmp() TextIsEqual()
text strcpy() TextAppend()
TextReplace()
text strncpy() TextToUtf8()
TextReplace()
text strcat() TextJoin()
text strstr() several funcs.
textures strlen() ImageTextEx()
raudio strcmp() IsFileExtension()

math.h

module libc function raylib function
models, shapes, camera sinf(), asinf(), cosf()
acosf(), sqrtf(), atan2f()
several funcs.
raymath sinf(), cosf(), acosf(), tan()
fabs(), sqrtf(), fminf(), fmaxf()
several funcs.
core tan() BeginMode3D()
rlgl atan2() SetVrConfiguration()
text sqrtf() GenImageFontAtlas()

stdarg.h

module libc function raylib function
text va_list, va_start(), vsprintf(), va_end() TextFormat()
utils va_list, va_start(), vsprintf(), va_end() TraceLog()

Considering the size of raylib, there is not much dependency on libc... that's an interesting consideration for embedded devices development where custom libc implementations could be used.

Clone this wiki locally