diff --git a/WORKSPACE b/WORKSPACE index db35abe..ee6ddca 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -2,6 +2,21 @@ workspace(name = "abrasion") load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") +http_archive( + name = "rules_python", + url = "https://github.com/bazelbuild/rules_python/releases/download/0.3.0/rules_python-0.3.0.tar.gz", + sha256 = "934c9ceb552e84577b0faf1e5a2f0450314985b4d8712b2b70717dc679fdc01b", +) + +load("@rules_python//python:pip.bzl", "pip_parse") + +pip_parse( + name = "pydeps", + requirements_lock = "//third_party/py:requirements.txt", +) + +load("@pydeps//:requirements.bzl", "install_deps") +install_deps() http_archive( name = "rules_rust", strip_prefix = "rules_rust-feaeb7ab712da45c1c94f7950e799d79e367ddeb", @@ -47,16 +62,14 @@ http_archive( http_archive( name = "com_github_q3k_q3d", - sha256 = "7631310022b09447279ac227cf84045b8b552f9c863d6fe17d459e506058a9b7", - strip_prefix = "q3d-360206ac7487da4a6d86fd22f9e74e8731454f43", + sha256 = "6cfbbd8111e78ae99d631f147cc2314f088409320619660c8003cd52bcc4577e", + strip_prefix = "q3d-e507a91e1b4966d0d4425e6078f6f1feda68a2b5", urls = [ - "https://github.com/q3k/q3d/archive/360206ac7487da4a6d86fd22f9e74e8731454f43.tar.gz", + "https://github.com/q3k/q3d/archive/e507a91e1b4966d0d4425e6078f6f1feda68a2b5.tar.gz", ], - build_file = "//third_party/q3d:BUILD", + build_file = "//third_party/q3d:BUILD.external", ) -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - http_archive( name = "io_bazel_rules_go", sha256 = "69de5c704a05ff37862f7e0f5534d4f479418afc21806c887db544a316f3cb6b", @@ -72,8 +85,6 @@ go_rules_dependencies() go_register_toolchains(version = "1.16") -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - http_archive( name = "com_google_protobuf", sha256 = "9748c0d90e54ea09e5e75fb7fac16edce15d2028d4356f32211cfa3c0e956564", @@ -83,4 +94,4 @@ http_archive( load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps") -protobuf_deps() \ No newline at end of file +protobuf_deps() diff --git a/third_party/py/BUILD.bazel b/third_party/py/BUILD.bazel new file mode 100644 index 0000000..e69de29 diff --git a/third_party/py/requirements.txt b/third_party/py/requirements.txt new file mode 100644 index 0000000..9c97e40 --- /dev/null +++ b/third_party/py/requirements.txt @@ -0,0 +1 @@ +flatbuffers==2.0 diff --git a/third_party/q3d/BUILD b/third_party/q3d/BUILD deleted file mode 100644 index 9b8242b..0000000 --- a/third_party/q3d/BUILD +++ /dev/null @@ -1,26 +0,0 @@ -load("@rules_rust//rust:rust.bzl", "rust_library") -load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_library_public") - -flatbuffer_library_public( - name = "q3d_rs_src", - srcs = [ - ":q3d_object.fbs", - ], - outs = [ - "q3d_object_generated.rs", - ], - language_flag = "--rust", -) - -rust_library( - name = "q3d_rs", - edition = "2018", - srcs = [ - ":q3d_rs_src", - ], - visibility = ["//visibility:public"], - deps = [ - # ew. - "@//third_party/cargo:flatbuffers", - ], -) diff --git a/third_party/q3d/BUILD.bazel b/third_party/q3d/BUILD.bazel new file mode 100644 index 0000000..0210e1c --- /dev/null +++ b/third_party/q3d/BUILD.bazel @@ -0,0 +1,32 @@ +load("@rules_rust//rust:rust.bzl", "rust_library") + +genrule( + name = "q3d_rs_layout", + srcs = [ + "@com_github_q3k_q3d//:q3d_object_generated.rs", + "@com_github_q3k_q3d//:q3d_model_generated.rs", + "lib_.rs", + ], + outs = [ + "q3d_object_generated.rs", + "q3d_model_generated.rs", + "lib.rs", + ], + cmd_bash = """ + cp $(location @com_github_q3k_q3d//:q3d_object_generated.rs) $(location q3d_object_generated.rs) + cp $(location @com_github_q3k_q3d//:q3d_model_generated.rs) $(location q3d_model_generated.rs) + cp $(location lib_.rs) $(location lib.rs) + """, +) + +rust_library( + name = "q3d_rs", + edition = "2018", + srcs = [ + ":q3d_rs_layout", + ], + visibility = ["//visibility:public"], + deps = [ + "@abrasion//third_party/cargo:flatbuffers", + ], +) diff --git a/third_party/q3d/BUILD.external b/third_party/q3d/BUILD.external new file mode 100644 index 0000000..3feb101 --- /dev/null +++ b/third_party/q3d/BUILD.external @@ -0,0 +1,65 @@ +load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_library_public") +load("@rules_python//python:defs.bzl", "py_library") + +package( + default_visibility = [ + "//visibility:public", + ], +) + +flatbuffer_library_public( + name = "q3d_rs_src", + srcs = [ + ":q3d_object.fbs", + ":q3d_model.fbs", + ], + outs = [ + "q3d_object_generated.rs", + "q3d_model_generated.rs", + ], + language_flag = "--rust", +) + +flatbuffer_library_public( + name = "q3d_py_src", + srcs = [ + ":q3d_object.fbs", + ":q3d_model.fbs", + ], + flatc_args = [ + "--gen-object-api", + "--gen-compare", + "--gen-mutable", + "--reflect-names", + "--cpp-ptr-type flatbuffers::unique_ptr", + ], + outs = [ + "Q3DObject/__init__.py", + "Q3DObject/Color.py", + "Q3DObject/ITriangle.py", + "Q3DObject/Material.py", + "Q3DObject/Mesh.py", + "Q3DObject/Object.py", + "Q3DObject/Triangle.py", + "Q3DObject/UV.py", + "Q3DObject/Vector3.py", + "Q3DObject/Vector4.py", + "Q3DObject/Vertex.py", + "Q3DModel/__init__.py", + "Q3DModel/Matrix4.py", + "Q3DModel/Model.py", + "Q3DModel/Node.py", + ], + language_flag = "--python", +) + +py_library( + name = "q3d_py", + visibility = [ + "//visibility:public", + ], + srcs = [ + ":q3d_py_src", + ], + imports = ["."], +) diff --git a/third_party/q3d/lib_.rs b/third_party/q3d/lib_.rs new file mode 100644 index 0000000..fa36a9b --- /dev/null +++ b/third_party/q3d/lib_.rs @@ -0,0 +1,5 @@ +mod q3d_object_generated; +mod q3d_model_generated; + +pub use q3d_object_generated::*; +pub use q3d_model_generated::*;