load("@rules_cc//cc:defs.bzl", "cc_library") cc_library( name = "bundled_glfw", strip_include_prefix = "src/external/glfw/include", hdrs = glob([ "src/external/glfw/include/**/*.h", ]), linkopts = select({ "@platforms//os:windows": [ "/DEFAULTLIB:user32", "/DEFAULTLIB:gdi32", "/DEFAULTLIB:shell32", ], "//conditions:default": [], }), ) cc_library( name = "bundled_glfw_sources", deps = [":bundled_glfw"], hdrs = glob([ "src/external/glfw/src/**/*.h", "src/external/glfw/src/**/*.c", ]), ) cc_library( name = "bundled_external_misc", includes = ["src/external"], hdrs = glob(["src/external/*.h"], exclude = ["src/external/dirent.h"]) + [ # awkward "headers" "src/external/qoaplay.c", ] + select({ "@platforms//os:windows": ["src/external/dirent.h"], "//conditions:default": [], }), srcs = glob(["src/external/*.c"], exclude = ["src/external/qoaplay.c"]), ) cc_library( name = "rcore", hdrs = glob(["src/platforms/*.c"]), srcs = ["src/rcore.c"] + glob(["src/*.h"]), deps = [ ":bundled_glfw", ":bundled_external_misc", ], defines = select({ "@platforms//os:android": ["PLATFORM_ANDROID"], "@platforms//os:wasi": ["PLATFORM_WEB"], "@platforms//os:emscripten": ["PLATFORM_WEB"], "//conditions:default": ["PLATFORM_DESKTOP"], }), ) cc_library( name = "raylib", visibility = ["//visibility:public"], strip_include_prefix = "src", srcs = [ "src/rglfw.c", "src/rtext.c", "src/utils.c", "src/rshapes.c", "src/rtextures.c", "src/raudio.c", "src/rmodels.c", ], hdrs = [ "src/raylib.h", "src/rcamera.h", "src/raymath.h", "src/rlgl.h", ], deps = [ ":rcore", ":bundled_glfw", ":bundled_glfw_sources", ":bundled_external_misc", ], linkopts = select({ "@platforms//os:windows": [ "/DEFAULTLIB:winmm", ], "//conditions:default": [], }), ) cc_binary( name = "raylib.dll", visibility = ["//visibility:public"], linkshared = True, target_compatible_with = [ "@platforms//os:windows", ], linkopts = [ "/DEFAULTLIB:winmm", ], deps = [ ":rcore", ":bundled_glfw", ":bundled_glfw_sources", ":bundled_external_misc", ], ) cc_binary( name = "libraylib.so", visibility = ["//visibility:public"], linkshared = True, target_compatible_with = [ "@platforms//os:linux", ], deps = [ ":rcore", ":bundled_glfw", ":bundled_glfw_sources", ":bundled_external_misc", ], ) alias( name = "raylib_shared", actual = select({ "@platforms//os:windows": ":raylib.dll", "@platforms//os:linux": ":libraylib.so", }), )