aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorPo Lu2024-03-17 19:32:15 +0800
committerPo Lu2024-03-17 19:34:09 +0800
commit7a0f4de3c18cab43b5bff47fdab4944e006c68e4 (patch)
tree4890695c9df02465a5ca16dab0b74750b44f7ae8 /java
parent445e2499baa1b8ef21e8edcc13692b5d78912922 (diff)
downloademacs-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/INSTALL34
-rw-r--r--java/org/gnu/emacs/EmacsNative.java6
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
167BUILDING C++ DEPENDENCIES 167BUILDING C++ DEPENDENCIES
168 168
169With a new version of the NDK, dependencies containing C++ code should 169In normal circumstances, Emacs should automatically detect and configure
170build without any further configuration. However, older versions 170one of the C++ standard libraries part of the NDK when such a library is
171require that you use the ``make_standalone_toolchain.py'' script in 171required to build a dependency specified under `--with-ndk-path'.
172the NDK distribution to create a ``standalone toolchain'', and use 172
173that instead, in order for C++ headers to be found. 173Nevertheless, this process is not infalliable, and with certain versions
174 174of the NDK is liable to fail to locate a C++ compiler, requiring that
175See https://developer.android.com/ndk/guides/standalone_toolchain for 175you run the `make_standalone_toolchain.py' script in the NDK
176more details; when a ``standalone toolchain'' is specified, the 176distribution to create a ``standalone toolchain'' and substitute the
177configure script will try to determine the location of the C++ 177same for the regular compiler toolchain. See
178compiler based on the C compiler specified. If that automatic 178https://developer.android.com/ndk/guides/standalone_toolchain for
179detection does not work, you can specify a C++ compiler yourself, like 179further details.
180so: 180
181 181Some 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++ 182compiler cannot locate `stddef.h' after being copied to a standalone
183 183toolchain. To work around this problem, add:
184Some versions of the NDK have a bug, where GCC fails to locate
185``stddef.h'' after being copied to a standalone toolchain. To work
186around this problem (which normally exhibits itself when building C++
187code), 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)