| load("@fbcode_macros//build_defs:cpp_library.bzl", "cpp_library") |
| load("@fbcode_macros//build_defs:native_rules.bzl", "cxx_genrule") |
| load("@fbcode_macros//build_defs:python_binary.bzl", "python_binary") |
| |
| # @lint-ignore-every BUCKLINT |
| load("@fbsource//tools/build_defs:fb_native_wrapper.bzl", "fb_native") |
| |
| def build_unity(name, **kwargs): |
| python_binary(name = name, **kwargs) |
| |
| cxx_genrule( |
| name = "{}_build_python_app_lib".format(name), |
| out = "python_app.a", |
| cmd = """\ |
| cp $(location :""" + name + """) python_app |
| ld -r -b binary -o ${TMP}/python_app.o python_app |
| # rename the .data section to .torch_deploy_payload.unity. |
| # don't set the alloc/load flags for the section so it will not join |
| # the party of relocation. |
| # Also strip the _binary_python_app_start/end/size symbols to avoid |
| # confusion. |
| objcopy --rename-section .data=.torch_deploy_payload.unity,readonly,contents -N _binary_python_app_start -N _binary_python_app_end -N _binary_python_app_size ${TMP}/python_app.o |
| ar rcs ${OUT} ${TMP}/python_app.o |
| """, |
| ) |
| |
| fb_native.prebuilt_cxx_library( |
| name = "{}_python_app_lib".format(name), |
| visibility = ["PUBLIC"], |
| link_whole = True, |
| preferred_linkage = "static", |
| static_lib = ":{}_build_python_app_lib".format(name), |
| ) |
| |
| cpp_library( |
| name = "{}_unity_lib".format(name), |
| srcs = [ |
| ], |
| linker_flags = [ |
| "--export-dynamic", |
| ], |
| exported_deps = [ |
| "//caffe2/torch/csrc/deploy/unity:unity_core", |
| ":{}_python_app_lib".format(name), |
| ], |
| ) |