diff third_party/raylib/raylib.bzl @ 26:a58a663dae68

[Sori] Making a simple game.
author June Park <parkjune1995@gmail.com>
date Thu, 09 Oct 2025 06:41:49 -0700
parents
children ccb42d5bf8fd
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/third_party/raylib/raylib.bzl	Thu Oct 09 06:41:49 2025 -0700
@@ -0,0 +1,59 @@
+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
+        }),
+    )