view raylib_examples/raylib.bzl @ 22:947b81010aba

[Dowa & Seobeo] Updated so that Dowa hashmaps can use arena and not be broken. Split up web so taht it can handle different paths. Also fixes issues with hash collisions which was pain in the ass.
author June Park <parkjune1995@gmail.com>
date Tue, 07 Oct 2025 07:11:02 -0700
parents f33d9ff8b6e8
children
line wrap: on
line source

def raylib_binary(
        name,
        srcs,
        deps = [],
        deps_macos = [],
        deps_linux = [],
        linkopts_macos = [
          "-framework CoreVideo",
          "-framework IOKit",
          "-framework Cocoa",
          "-framework GLUT",
          "-framework OpenGL",
        ],
        linkopts_linux = [
          "-lGL",
          "-lm",
          "-lpthread",
          "-ldl",
          "-lrt",
          "-lX11",
        ]):
    """
    Raylib specific cross platform rules.

    Args:
        name: The logical name of the binary (alias).
        srcs: List of source files (common).
        deps: Mutual dependency.
        deps_macos: Extra deps for macOS.
        deps_linux: Extra deps for Linux.
        linkopts_macos: Extra linkopts for macOS.
        linkopts_linux: Extra linkopts for Linux.
    """

    macos_bin = name + "_macos"
    linux_bin = name + "_linux"

    native.cc_binary(
        name = macos_bin,
        srcs = srcs,
        deps = deps + deps_macos,
        linkopts = linkopts_macos,
    )

    native.cc_binary(
        name = linux_bin,
        srcs = srcs,
        deps = deps + deps_linux,
        linkopts = linkopts_linux,
    )

    native.alias(
        name = name,
        actual = select({
            "//config:macos": ":" + macos_bin,
            "//config:linux": ":" + linux_bin,
            "//conditions:default": ":" + linux_bin,  # fallback
        }),
    )