|
| 1 | +def my_android_binary(**kwargs): |
| 2 | + if "native_library_merge_map" in kwargs: |
| 3 | + kwargs["native_library_merge_glue"] = "//src/com/facebook/jnimerge:glue" |
| 4 | + kwargs["native_library_merge_code_generator"] = "//src/com/facebook/jnimerge:code-generator" |
| 5 | + kwargs["native_library_merge_localized_symbols"] = [ |
| 6 | + "__start_pre_merge_jni_libraries", |
| 7 | + "__stop_pre_merge_jni_libraries", |
| 8 | + ] |
| 9 | + else: |
| 10 | + kwargs["deps"] = kwargs["deps"] + ["//src/com/facebook/soloader:mapping-stub"] |
| 11 | + android_binary(**kwargs) |
| 12 | + |
| 13 | + |
| 14 | +def my_cxx_library(**kwargs): |
| 15 | + if kwargs.pop("allow_jni_merging", None): |
| 16 | + if "soname" not in kwargs: |
| 17 | + raise Exception( |
| 18 | + "JNI merging currently requires an explicit soname, " |
| 19 | + "but %s doesn't have one." |
| 20 | + % kwargs["name"]) |
| 21 | + kwargs["deps"] = kwargs.get("deps", []) + ["//src/com/facebook/jnimerge:jnimerge"] |
| 22 | + kwargs["platform_preprocessor_flags"] = \ |
| 23 | + kwargs.get("platform_preprocessor_flags", []) + [ |
| 24 | + (r'.*\bandroid\b.*', [ |
| 25 | + '-DORIGINAL_SONAME="%s"' % kwargs["soname"].replace("$(ext)", "so"), |
| 26 | + "-include", "jni_lib_merge.h", |
| 27 | + ])] |
| 28 | + kwargs["platform_linker_flags"] = kwargs.get("platform_linker_flags", []) + [ |
| 29 | + (r'.*\bandroid\b.*', [ |
| 30 | + "-Wl,--defsym=JNI_OnLoad=JNI_OnLoad_Weak", |
| 31 | + ])] |
| 32 | + cxx_library(**kwargs) |
| 33 | + |
0 commit comments