diff options
| author | Po Lu | 2024-03-17 19:32:15 +0800 |
|---|---|---|
| committer | Po Lu | 2024-03-17 19:34:09 +0800 |
| commit | 7a0f4de3c18cab43b5bff47fdab4944e006c68e4 (patch) | |
| tree | 4890695c9df02465a5ca16dab0b74750b44f7ae8 /java | |
| parent | 445e2499baa1b8ef21e8edcc13692b5d78912922 (diff) | |
| download | emacs-7a0f4de3c18cab43b5bff47fdab4944e006c68e4.tar.gz emacs-7a0f4de3c18cab43b5bff47fdab4944e006c68e4.zip | |
Improve C++ standard library detection on Android
* configure.ac: Stop relaying --with-ndk-cxx-shared to the
nested invocation of configure.
* build-aux/ndk-build-helper-1.mk (SYSTEM_LIBRARIES):
* build-aux/ndk-build-helper-2.mk (SYSTEM_LIBRARIES): Insert all
of the C++ libraries available on Android.
* configure.ac: Call ndk_LATE and ndk_LATE_EARLY within if
statement at toplevel, averting needless calls to AC_PROG_CXX.
* cross/ndk-build/Makefile.in (NDK_BUILD_CXX_STL)
(NDK_BUILD_CXX_LDFLAGS):
* cross/ndk-build/ndk-build.mk.in (NDK_BUILD_CXX_STL)
(NDK_BUILD_CXX_LDFLAGS): New variables.
* cross/ndk-build/ndk-resolve.mk (NDK_SYSTEM_LIBRARIES):
Introduce several other C++ libraries sometimes present on
Android.
(NDK_SO_EXTRA_FLAGS_$(LOCAL_MODULE)): Insert NDK_BUILD_CXX_STL
when any of these new C++ libraries are requested.
* m4/ndk-build.m4: Completely rewrite C++ compiler and library
detection.
* java/org/gnu/emacs/EmacsNative.java (EmacsNative): Attempt to
load more libraries from static initializer.
* java/INSTALL: Remove obsolete information.
Diffstat (limited to 'java')
| -rw-r--r-- | java/INSTALL | 34 | ||||
| -rw-r--r-- | java/org/gnu/emacs/EmacsNative.java | 6 |
2 files changed, 19 insertions, 21 deletions
diff --git a/java/INSTALL b/java/INSTALL index 175ff2826b2..f1063b40c25 100644 --- a/java/INSTALL +++ b/java/INSTALL | |||
| @@ -166,25 +166,21 @@ than a compressed package for a newer version of Android. | |||
| 166 | 166 | ||
| 167 | BUILDING C++ DEPENDENCIES | 167 | BUILDING C++ DEPENDENCIES |
| 168 | 168 | ||
| 169 | With a new version of the NDK, dependencies containing C++ code should | 169 | In normal circumstances, Emacs should automatically detect and configure |
| 170 | build without any further configuration. However, older versions | 170 | one of the C++ standard libraries part of the NDK when such a library is |
| 171 | require that you use the ``make_standalone_toolchain.py'' script in | 171 | required to build a dependency specified under `--with-ndk-path'. |
| 172 | the NDK distribution to create a ``standalone toolchain'', and use | 172 | |
| 173 | that instead, in order for C++ headers to be found. | 173 | Nevertheless, this process is not infalliable, and with certain versions |
| 174 | 174 | of the NDK is liable to fail to locate a C++ compiler, requiring that | |
| 175 | See https://developer.android.com/ndk/guides/standalone_toolchain for | 175 | you run the `make_standalone_toolchain.py' script in the NDK |
| 176 | more details; when a ``standalone toolchain'' is specified, the | 176 | distribution to create a ``standalone toolchain'' and substitute the |
| 177 | configure script will try to determine the location of the C++ | 177 | same for the regular compiler toolchain. See |
| 178 | compiler based on the C compiler specified. If that automatic | 178 | https://developer.android.com/ndk/guides/standalone_toolchain for |
| 179 | detection does not work, you can specify a C++ compiler yourself, like | 179 | further details. |
| 180 | so: | 180 | |
| 181 | 181 | Some versions of the NDK that ship GCC 4.9.x exhibit a bug where the | |
| 182 | ./configure --with-ndk-cxx=/path/to/toolchain/bin/i686-linux-android-g++ | 182 | compiler cannot locate `stddef.h' after being copied to a standalone |
| 183 | 183 | toolchain. To work around this problem, add: | |
| 184 | Some versions of the NDK have a bug, where GCC fails to locate | ||
| 185 | ``stddef.h'' after being copied to a standalone toolchain. To work | ||
| 186 | around this problem (which normally exhibits itself when building C++ | ||
| 187 | code), add: | ||
| 188 | 184 | ||
| 189 | -isystem /path/to/toolchain/include/c++/4.9.x | 185 | -isystem /path/to/toolchain/include/c++/4.9.x |
| 190 | 186 | ||
diff --git a/java/org/gnu/emacs/EmacsNative.java b/java/org/gnu/emacs/EmacsNative.java index 6845f833908..898eaef41a7 100644 --- a/java/org/gnu/emacs/EmacsNative.java +++ b/java/org/gnu/emacs/EmacsNative.java | |||
| @@ -323,7 +323,9 @@ public final class EmacsNative | |||
| 323 | Every time you add a new shared library dependency to Emacs, | 323 | Every time you add a new shared library dependency to Emacs, |
| 324 | please add it here as well. */ | 324 | please add it here as well. */ |
| 325 | 325 | ||
| 326 | libraryDeps = new String[] { "png_emacs", "selinux_emacs", | 326 | libraryDeps = new String[] { "c++_shared", "gnustl_shared", |
| 327 | "stlport_shared", "gabi++_shared", | ||
| 328 | "png_emacs", "selinux_emacs", | ||
| 327 | "crypto_emacs", "pcre_emacs", | 329 | "crypto_emacs", "pcre_emacs", |
| 328 | "packagelistparser_emacs", | 330 | "packagelistparser_emacs", |
| 329 | "gnutls_emacs", "gmp_emacs", | 331 | "gnutls_emacs", "gmp_emacs", |
| @@ -331,7 +333,7 @@ public final class EmacsNative | |||
| 331 | "tasn1_emacs", "hogweed_emacs", | 333 | "tasn1_emacs", "hogweed_emacs", |
| 332 | "jansson_emacs", "jpeg_emacs", | 334 | "jansson_emacs", "jpeg_emacs", |
| 333 | "tiff_emacs", "xml2_emacs", | 335 | "tiff_emacs", "xml2_emacs", |
| 334 | "icuuc_emacs", | 336 | "icuuc_emacs", "harfbuzz_emacs", |
| 335 | "tree-sitter_emacs", }; | 337 | "tree-sitter_emacs", }; |
| 336 | 338 | ||
| 337 | for (String dependency : libraryDeps) | 339 | for (String dependency : libraryDeps) |