mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-06 06:20:55 -08:00
Add libtiff support to Android port
* INSTALL.android: Document how to build with libtiff. * build-aux/ndk-build-helper-1.mk (NDK_SO_NAME): * build-aux/ndk-build-helper-2.mk (NDK_A_NAME): * build-aux/ndk-build-helper-4.mk: Decrease number of duplicate dependencies found. * configure.ac (ANDROID_SDK_18_OR_EARLIER, XCONFIGURE, PNG_CFLAGS) (HAVE_TIFF): Allow using libtiff on Android. * cross/ndk-build/ndk-clear-vars.mk: Undefine additional variables. * cross/ndk-build/ndk-resolve.mk: Split CFLAGS resolution from a-name resolution, and do not recursively add archive or shared object names for dependencies of shared libraries. * src/Makefile.in (TIFF_CFLAGS): New variable. (EMACS_CFLAGS): Use it.
This commit is contained in:
parent
1ba1f277b6
commit
22749d69e5
8 changed files with 86 additions and 23 deletions
|
|
@ -187,6 +187,8 @@ Android systems:
|
||||||
|
|
||||||
gnutls, gmp - https://sourceforge.net/projects/android-ports-for-gnu-emacs
|
gnutls, gmp - https://sourceforge.net/projects/android-ports-for-gnu-emacs
|
||||||
(Please see the section GNUTLS near the end of this file.)
|
(Please see the section GNUTLS near the end of this file.)
|
||||||
|
libtiff - https://sourceforge.net/projects/android-ports-for-gnu-emacs
|
||||||
|
(Extract and point ``--with-ndk-path'' to tiff-4.5.0-emacs.tar.gz.)
|
||||||
|
|
||||||
We anticipate that most untested non-trivial ndk-build dependencies
|
We anticipate that most untested non-trivial ndk-build dependencies
|
||||||
will need adjustments in Emacs to work, as the Emacs build system
|
will need adjustments in Emacs to work, as the Emacs build system
|
||||||
|
|
@ -535,8 +537,16 @@ They have only been tested on arm64 Android systems running Android
|
||||||
5.0 or later, so your mileage may vary, especially if you are trying
|
5.0 or later, so your mileage may vary, especially if you are trying
|
||||||
to build Emacs for another kind of machine.
|
to build Emacs for another kind of machine.
|
||||||
|
|
||||||
To build Emacs with GnuTLS, you must unpack each tar archive in that
|
To build Emacs with GnuTLS, you must unpack each of the following tar
|
||||||
site, and add the resulting folder to ``--with-ndk-path''.
|
archives in that site:
|
||||||
|
|
||||||
|
gmp-6.2.1-emacs.tgz
|
||||||
|
gnutls-3.7.8-emacs.tar.gz
|
||||||
|
libtasn1-4.19.0-emacs.tar.gz
|
||||||
|
p11-kit-0.24.1-emacs.tar.gz
|
||||||
|
nettle-3.8-emacs.tar.gz
|
||||||
|
|
||||||
|
and add the resulting folders to ``--with-ndk-path''.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ else
|
||||||
NDK_SO_NAME = lib$(1)_emacs.so
|
NDK_SO_NAME = lib$(1)_emacs.so
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($$(NDK_SO_NAMES:$$(NDK_SO_NAME)=),$$(NDK_SO_NAMES))
|
ifeq ($$(findstring $$(NDK_SO_NAME),$$(NDK_SO_NAMES)),)
|
||||||
NDK_SO_NAMES := $$(NDK_SO_NAMES) $$(NDK_SO_NAME)
|
NDK_SO_NAMES := $$(NDK_SO_NAMES) $$(NDK_SO_NAME)
|
||||||
|
|
||||||
# Now recurse over this module's dependencies.
|
# Now recurse over this module's dependencies.
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ else
|
||||||
NDK_A_NAME = lib$(1).a
|
NDK_A_NAME = lib$(1).a
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($$(NDK_A_NAMES:$$(NDK_A_NAME)=),$$(NDK_A_NAMES))
|
ifeq ($$(findstring $$(NDK_A_NAME),$$(NDK_A_NAMES)),)
|
||||||
NDK_A_NAMES := $$(NDK_A_NAMES) $$(NDK_A_NAME)
|
NDK_A_NAMES := $$(NDK_A_NAMES) $$(NDK_A_NAME)
|
||||||
|
|
||||||
# Now recurse over this module's dependencies.
|
# Now recurse over this module's dependencies.
|
||||||
|
|
|
||||||
|
|
@ -34,5 +34,6 @@ undefine LOCAL_DISABLE_FORMAT_STRING_CHECKS
|
||||||
undefine LOCAL_EXPORT_CFLAGS
|
undefine LOCAL_EXPORT_CFLAGS
|
||||||
undefine LOCAL_EXPORT_CPPFLAGS
|
undefine LOCAL_EXPORT_CPPFLAGS
|
||||||
undefine LOCAL_EXPORT_C_INCLUDES
|
undefine LOCAL_EXPORT_C_INCLUDES
|
||||||
|
undefine LOCAL_EXPORT_C_INCLUDE_DIRS
|
||||||
undefine LOCAL_EXPORT_LDFLAGS
|
undefine LOCAL_EXPORT_LDFLAGS
|
||||||
undefine LOCAL_EXPORT_LDLIBS
|
undefine LOCAL_EXPORT_LDLIBS
|
||||||
|
|
|
||||||
35
configure.ac
35
configure.ac
|
|
@ -1062,6 +1062,7 @@ package will likely install on older systems but crash on startup.])
|
||||||
passthrough="$passthrough --with-xml2=$with_xml2"
|
passthrough="$passthrough --with-xml2=$with_xml2"
|
||||||
passthrough="$passthrough --with-sqlite3=$with_sqlite3"
|
passthrough="$passthrough --with-sqlite3=$with_sqlite3"
|
||||||
passthrough="$passthrough --with-gnutls=$with_gnutls"
|
passthrough="$passthrough --with-gnutls=$with_gnutls"
|
||||||
|
passthrough="$passthrough --with-tiff=$with_tiff"
|
||||||
|
|
||||||
AS_IF([XCONFIGURE=android ANDROID_CC="$ANDROID_CC" \
|
AS_IF([XCONFIGURE=android ANDROID_CC="$ANDROID_CC" \
|
||||||
ANDROID_SDK="$android_sdk" android_abi=$android_abi \
|
ANDROID_SDK="$android_sdk" android_abi=$android_abi \
|
||||||
|
|
@ -1120,7 +1121,6 @@ if test "$ANDROID" = "yes"; then
|
||||||
# disabled, both within the recursive invocation of configure and
|
# disabled, both within the recursive invocation of configure and
|
||||||
# outside.
|
# outside.
|
||||||
with_xpm=no
|
with_xpm=no
|
||||||
with_tiff=no
|
|
||||||
|
|
||||||
# Some of these dependencies are now supported within Android, so
|
# Some of these dependencies are now supported within Android, so
|
||||||
# they can be enabled.
|
# they can be enabled.
|
||||||
|
|
@ -1133,6 +1133,7 @@ if test "$ANDROID" = "yes"; then
|
||||||
with_xml2=no
|
with_xml2=no
|
||||||
with_sqlite3=no
|
with_sqlite3=no
|
||||||
with_gnutls=no
|
with_gnutls=no
|
||||||
|
with_tiff=no
|
||||||
fi
|
fi
|
||||||
|
|
||||||
with_rsvg=no
|
with_rsvg=no
|
||||||
|
|
@ -5028,6 +5029,7 @@ AC_SUBST([PNG_CFLAGS])
|
||||||
### mingw32 doesn't use -ltiff, since it loads the library dynamically.
|
### mingw32 doesn't use -ltiff, since it loads the library dynamically.
|
||||||
HAVE_TIFF=no
|
HAVE_TIFF=no
|
||||||
LIBTIFF=
|
LIBTIFF=
|
||||||
|
TIFF_CFLAGS=
|
||||||
if test "${opsys}" = "mingw32"; then
|
if test "${opsys}" = "mingw32"; then
|
||||||
if test "${with_tiff}" != "no"; then
|
if test "${with_tiff}" != "no"; then
|
||||||
AC_CHECK_HEADER([tiffio.h], [HAVE_TIFF=yes], [HAVE_TIFF=no])
|
AC_CHECK_HEADER([tiffio.h], [HAVE_TIFF=yes], [HAVE_TIFF=no])
|
||||||
|
|
@ -5038,24 +5040,37 @@ if test "${opsys}" = "mingw32"; then
|
||||||
fi
|
fi
|
||||||
elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes" \
|
elif test "${HAVE_X11}" = "yes" || test "${HAVE_W32}" = "yes" \
|
||||||
|| test "${HAVE_NS}" = "yes" || test "${HAVE_BE_APP}" = "yes" \
|
|| test "${HAVE_NS}" = "yes" || test "${HAVE_BE_APP}" = "yes" \
|
||||||
|| test "$window_system" = "pgtk"; then
|
|| test "$window_system" = "pgtk" \
|
||||||
|
|| test "${REALLY_ANDROID}" = "yes"; then
|
||||||
if test "${with_tiff}" != "no"; then
|
if test "${with_tiff}" != "no"; then
|
||||||
AC_CHECK_HEADER([tiffio.h],
|
if test "${REALLY_ANDROID}" != "yes"; then
|
||||||
[tifflibs="-lz -lm"
|
AC_CHECK_HEADER([tiffio.h],
|
||||||
# At least one tiff package requires the jpeg library.
|
[tifflibs="-lz -lm"
|
||||||
if test "${HAVE_JPEG}" = yes; then tifflibs="-ljpeg $tifflibs"; fi
|
# At least one tiff package requires the jpeg library.
|
||||||
AC_CHECK_LIB([tiff], [TIFFGetVersion], [HAVE_TIFF=yes], [],
|
if test "${HAVE_JPEG}" = yes; then tifflibs="-ljpeg $tifflibs"; fi
|
||||||
[$tifflibs])])
|
AC_CHECK_LIB([tiff], [TIFFGetVersion], [HAVE_TIFF=yes], [],
|
||||||
|
[$tifflibs])])
|
||||||
|
else
|
||||||
|
ndk_SEARCH_MODULE([libtiff], [TIFF], [HAVE_TIFF=yes])
|
||||||
|
|
||||||
|
if test "$HAVE_TIFF" = "yes"; then
|
||||||
|
LIBTIFF="$TIFF_LIBS"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "${HAVE_TIFF}" = "yes"; then
|
if test "${HAVE_TIFF}" = "yes"; then
|
||||||
AC_DEFINE([HAVE_TIFF], [1],
|
AC_DEFINE([HAVE_TIFF], [1],
|
||||||
[Define to 1 if you have the tiff library (-ltiff).])
|
[Define to 1 if you have the tiff library (-ltiff).])
|
||||||
dnl FIXME -lz -lm, as per libpng?
|
|
||||||
LIBTIFF=-ltiff
|
if test "$REALLY_ANDROID" != "yes"; then
|
||||||
|
dnl FIXME -lz -lm, as per libpng?
|
||||||
|
LIBTIFF=-ltiff
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
AC_SUBST([LIBTIFF])
|
AC_SUBST([LIBTIFF])
|
||||||
|
AC_SUBST([TIFF_CFLAGS])
|
||||||
|
|
||||||
### Use -lgif or -lungif if available, unless '--with-gif=no'.
|
### Use -lgif or -lungif if available, unless '--with-gif=no'.
|
||||||
### mingw32 doesn't use -lgif/-lungif, since it loads the library dynamically.
|
### mingw32 doesn't use -lgif/-lungif, since it loads the library dynamically.
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@ undefine LOCAL_DISABLE_FORMAT_STRING_CHECKS
|
||||||
undefine LOCAL_EXPORT_CFLAGS
|
undefine LOCAL_EXPORT_CFLAGS
|
||||||
undefine LOCAL_EXPORT_CPPFLAGS
|
undefine LOCAL_EXPORT_CPPFLAGS
|
||||||
undefine LOCAL_EXPORT_C_INCLUDES
|
undefine LOCAL_EXPORT_C_INCLUDES
|
||||||
|
undefine LOCAL_EXPORT_C_INCLUDE_DIRS
|
||||||
undefine LOCAL_EXPORT_LDFLAGS
|
undefine LOCAL_EXPORT_LDFLAGS
|
||||||
undefine LOCAL_EXPORT_LDLIBS
|
undefine LOCAL_EXPORT_LDLIBS
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,14 +36,38 @@ NDK_SO_EXTRA_FLAGS_$(LOCAL_MODULE) :=
|
||||||
|
|
||||||
# List of all dependencies resolved for this module thus far.
|
# List of all dependencies resolved for this module thus far.
|
||||||
# Used to avoid infinite recursion.
|
# Used to avoid infinite recursion.
|
||||||
|
# Separate the variable which lists modules for which CFLAGS
|
||||||
|
# have been resolved from the variable which lists modules
|
||||||
|
# for which library dependencies have been resolved, in order
|
||||||
|
# to catch the case where a library dependency is skipped
|
||||||
|
# despite its CFLAGS being added.
|
||||||
NDK_RESOLVED_$(LOCAL_MODULE) :=
|
NDK_RESOLVED_$(LOCAL_MODULE) :=
|
||||||
|
NDK_RESOLVED_CFLAGS_$(LOCAL_MODULE) :=
|
||||||
|
|
||||||
define ndk-resolve
|
define ndk-resolve
|
||||||
|
|
||||||
ifeq ($(patsubst $(1),,$(NDK_RESOLVED$(LOCAL_MODULE))),$(NDK_RESOLVED$(LOCAL_MODULE)))
|
ifeq ($$(filter $(1)$(and $(3),whole),$$(NDK_RESOLVED_CFLAGS_$(LOCAL_MODULE))),)
|
||||||
NDK_RESOLVED_$(LOCAL_MODULE) += $(1)
|
# Always mark this module's cflags as having been resolved, even if
|
||||||
|
# this is a whole library.
|
||||||
|
NDK_RESOLVED_CFLAGS_$(LOCAL_MODULE) += $(1)
|
||||||
|
|
||||||
NDK_CFLAGS_$(LOCAL_MODULE) += $(NDK_LOCAL_EXPORT_CFLAGS_$(1))
|
NDK_CFLAGS_$(LOCAL_MODULE) += $(NDK_LOCAL_EXPORT_CFLAGS_$(1))
|
||||||
NDK_CFLAGS_$(LOCAL_MODULE) += $(addprefix -I,$(NDK_LOCAL_EXPORT_C_INCLUDES_$(1)))
|
NDK_CFLAGS_$(LOCAL_MODULE) += $(addprefix -I,$(NDK_LOCAL_EXPORT_C_INCLUDES_$(1)))
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($$(filter $(1)$(and $(3),whole),$$(NDK_RESOLVED_$(LOCAL_MODULE))),)
|
||||||
|
# Now append local libraries, as long as this library isn't a shared
|
||||||
|
# library itself.
|
||||||
|
ifeq ($(4),)
|
||||||
|
|
||||||
|
# Mark this module's library dependencies as having been resolved.
|
||||||
|
NDK_RESOLVED_$(LOCAL_MODULE) += $(1)
|
||||||
|
|
||||||
|
# If this is a whole library, then mark this as resolved too, and
|
||||||
|
# remove the library from the normal static library list.
|
||||||
|
ifneq ($(3),)
|
||||||
|
NDK_RESOLVED_$(LOCAL_MODULE) += $(1)whole
|
||||||
|
endif
|
||||||
|
|
||||||
# If the module happens to be zlib, then add -lz to the shared library
|
# If the module happens to be zlib, then add -lz to the shared library
|
||||||
# flags.
|
# flags.
|
||||||
|
|
@ -113,15 +137,26 @@ NDK_WHOLE_A_NAMES_$(LOCAL_MODULE) += $(1).a
|
||||||
else
|
else
|
||||||
NDK_WHOLE_A_NAMES_$(LOCAL_MODULE) += lib$(1).a
|
NDK_WHOLE_A_NAMES_$(LOCAL_MODULE) += lib$(1).a
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Remove this archive from the regular archive list, should it already
|
||||||
|
# exists. Any given archive should only appear once, and if an
|
||||||
|
# archive has been specified as whole it should always be whole.
|
||||||
|
NDK_LOCAL_A_NAMES_$(LOCAL_MODULE) := $$(filter-out lib$(1).a,$$(NDK_LOCAL_A_NAMES_$(LOCAL_MODULE)))
|
||||||
|
NDK_LOCAL_A_NAMES_$(LOCAL_MODULE) := $$(filter-out $(1).a,$$(NDK_LOCAL_A_NAMES_$(LOCAL_MODULE)))
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$$(foreach module,$$(NDK_LOCAL_STATIC_LIBRARIES_$(1)),$$(eval $$(call ndk-resolve,$$(module),1,)))
|
$$(foreach module,$$(NDK_LOCAL_STATIC_LIBRARIES_$(1)),$$(eval $$(call ndk-resolve,$$(module),1,,$(or $(4),$(if $(2)$(3),,1)))))
|
||||||
$$(foreach module,$$(NDK_LOCAL_SHARED_LIBRARIES_$(1)),$$(eval $$(call ndk-resolve,$$(module),,)))
|
$$(foreach module,$$(NDK_LOCAL_SHARED_LIBRARIES_$(1)),$$(eval $$(call ndk-resolve,$$(module),,,$(or $(4),$(if $(2)$(3),,1)))))
|
||||||
$$(foreach module,$$(NDK_LOCAL_WHOLE_LIBRARIES_$(1)),$$(eval $$(call ndk-resolve,$$(module),,1)))
|
$$(foreach module,$$(NDK_LOCAL_WHOLE_LIBRARIES_$(1)),$$(eval $$(call ndk-resolve,$$(module),,1,$(or $(4),$(if $(2)$(3),,1)))))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
$(foreach module,$(LOCAL_SHARED_LIBRARIES),$(eval $(call ndk-resolve,$(module),,)))
|
# Add shared libraries to the shared object names when they appear as
|
||||||
$(foreach module,$(LOCAL_STATIC_LIBRARIES),$(eval $(call ndk-resolve,$(module),1,)))
|
# a top level dependency. However, do not recursively add the names
|
||||||
$(foreach module,$(LOCAL_WHOLE_STATIC_LIBRARIES), $(eval $(call ndk-resolve,$(module),,1)))
|
# of this module's shared library dependencies, if it is just a shared
|
||||||
|
# library, since it will link to those shared libraries itself.
|
||||||
|
$(foreach module,$(LOCAL_SHARED_LIBRARIES),$(eval $(call ndk-resolve,$(module),,,)))
|
||||||
|
$(foreach module,$(LOCAL_STATIC_LIBRARIES),$(eval $(call ndk-resolve,$(module),1,,)))
|
||||||
|
$(foreach module,$(LOCAL_WHOLE_STATIC_LIBRARIES), $(eval $(call ndk-resolve,$(module),,1,)))
|
||||||
|
|
|
||||||
|
|
@ -140,6 +140,7 @@ LIBIMAGE=@LIBTIFF@ @LIBJPEG@ @LIBPNG@ @LIBGIF@ @LIBXPM@ @WEBP_LIBS@
|
||||||
|
|
||||||
GIF_CFLAGS=@GIF_CFLAGS@
|
GIF_CFLAGS=@GIF_CFLAGS@
|
||||||
JPEG_CFLAGS=@JPEG_CFLAGS@
|
JPEG_CFLAGS=@JPEG_CFLAGS@
|
||||||
|
TIFF_CFLAGS=@TIFF_CFLAGS@
|
||||||
|
|
||||||
XCB_LIBS=@XCB_LIBS@
|
XCB_LIBS=@XCB_LIBS@
|
||||||
XFT_LIBS=@XFT_LIBS@
|
XFT_LIBS=@XFT_LIBS@
|
||||||
|
|
@ -436,7 +437,7 @@ EMACS_CFLAGS=-Demacs $(MYCPPFLAGS) -I. -I$(srcdir) \
|
||||||
$(LIBGNUTLS_CFLAGS) $(NOTIFY_CFLAGS) $(CAIRO_CFLAGS) \
|
$(LIBGNUTLS_CFLAGS) $(NOTIFY_CFLAGS) $(CAIRO_CFLAGS) \
|
||||||
$(WERROR_CFLAGS) $(HAIKU_CFLAGS) $(XCOMPOSITE_CFLAGS) $(XSHAPE_CFLAGS) \
|
$(WERROR_CFLAGS) $(HAIKU_CFLAGS) $(XCOMPOSITE_CFLAGS) $(XSHAPE_CFLAGS) \
|
||||||
$(ANDROID_CFLAGS) $(GIF_CFLAGS) $(JPEG_CFLAGS) $(SQLITE3_CFLAGS) \
|
$(ANDROID_CFLAGS) $(GIF_CFLAGS) $(JPEG_CFLAGS) $(SQLITE3_CFLAGS) \
|
||||||
$(LIBGMP_CFLAGS)
|
$(LIBGMP_CFLAGS) $(TIFF_CFLAGS)
|
||||||
ALL_CFLAGS = $(EMACS_CFLAGS) $(WARN_CFLAGS) $(CFLAGS)
|
ALL_CFLAGS = $(EMACS_CFLAGS) $(WARN_CFLAGS) $(CFLAGS)
|
||||||
ALL_OBJC_CFLAGS = $(EMACS_CFLAGS) \
|
ALL_OBJC_CFLAGS = $(EMACS_CFLAGS) \
|
||||||
$(filter-out $(NON_OBJC_CFLAGS),$(WARN_CFLAGS)) $(CFLAGS) \
|
$(filter-out $(NON_OBJC_CFLAGS),$(WARN_CFLAGS)) $(CFLAGS) \
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue