| load("@rules_cc//cc:defs.bzl", "cc_library") |
| load("//python:py_test.bzl", "py_test") |
| |
| # buildifier: disable=bzl-visibility |
| load("//python/cc:py_extension.bzl", "py_extension") |
| load(":py_extension_tests.bzl", "py_extension_analysis_test_suite") |
| |
| package( |
| default_testonly = True, |
| default_visibility = ["//visibility:private"], |
| ) |
| |
| licenses(["notice"]) |
| |
| py_extension( |
| name = "ext_static", |
| ##srcs = ["ext_static.c"], |
| static_deps = [":static_dep"], |
| ) |
| |
| py_extension( |
| name = "ext_shared", |
| dynamic_deps = [ |
| ":add_one", |
| ], |
| static_deps = [ |
| ":ext_shared_impl", |
| ], |
| ) |
| |
| cc_library( |
| name = "ext_shared_impl", |
| srcs = ["ext_shared.c"], |
| copts = [ |
| # Gemini says PIC is needed |
| "-fPIC", |
| "-fvisibility=hidden", |
| ], |
| deps = [ |
| ":add_one_headers", |
| # todo: if we put this here, we statically link add_one into the |
| # extension. |
| #":add_one_impl", |
| "@rules_python//python/cc:current_py_cc_headers", |
| ], |
| ) |
| |
| cc_library( |
| name = "static_dep", |
| srcs = ["static_dep.c"], |
| hdrs = ["static_dep.h"], |
| ) |
| |
| cc_library( |
| name = "add_one_headers", |
| hdrs = ["add_one.h"], |
| ) |
| |
| cc_library( |
| name = "add_one", |
| srcs = ["add_one.c"], |
| ) |
| |
| py_test( |
| name = "py_extension_test", |
| srcs = ["py_extension_test.py"], |
| deps = [ |
| ":ext_shared", |
| "@dev_pip//pyelftools", |
| "@rules_python//python/runfiles", |
| ], |
| ) |
| |
| py_extension_analysis_test_suite( |
| name = "py_extension_analysis_tests", |
| ) |