1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-04 11:00:45 -08:00

Update Android port

* INSTALL.android: Explain how to build selinux.
* configure.ac: Enable selinux on Android.
* cross/ndk-build/ndk-build-shared-library.mk: ($(call
objname,$(LOCAL_MODULE),$(basename $(1))))::($$(error
Unsupported suffix)::(NDK_CFLAGS_$(LOCAL_MODULE)):
* cross/ndk-build/ndk-build-static-library.mk: ($(call
objname,$(LOCAL_MODULE),$(basename $(1))))::($$(error
Unsupported suffix)::(NDK_CFLAGS_$(LOCAL_MODULE)): Correctly
handle files with a .cc suffix, and clang-specific asflags.
* cross/ndk-build/ndk-clear-vars.mk: Handle AOSP extensions
LOCAL_ADDITIONAL_DEPENDENCIES,
LOCAL_CLANG_ASFLAGS_$(NDK_BUILD_ARCH) and LOCAL_IS_HOST_MODULE.

* doc/emacs/android.texi (Android Startup): Explain emacsclient
wrapper.

* java/org/gnu/emacs/EmacsView.java (EmacsView): New flag
`isCurrentlyTextEditor'.
(showOnScreenKeyboard, hideOnScreenKeyboard): Set as
appropriate.
(onCheckIsTextEditor): Return its value.

* lisp/touch-screen.el (touch-screen-handle-scroll): Don't ding
at buffer limits.
* m4/ndk-build.m4: Improve doc.

* src/Makefile.in (LIBSELINUX_CFLAGS): New variable.
(EMACS_CFLAGS): Add it.
This commit is contained in:
Po Lu 2023-02-05 23:02:14 +08:00
parent 1b8beed960
commit 98c90135fe
10 changed files with 194 additions and 52 deletions

View file

@ -171,6 +171,13 @@ work, along with what has to be patched to make them work:
sqlite3 - https://android.googlesource.com/platform/external/sqlite/ sqlite3 - https://android.googlesource.com/platform/external/sqlite/
(You must apply the patch at the end of this file, and add the `dist' (You must apply the patch at the end of this file, and add the `dist'
directory to ``--with-ndk-path''.) directory to ``--with-ndk-path''.)
libselinux - https://android.googlesource.com/platform/external/libselinux
(You must apply the patches at the end of the file, and obtain
the following three dependencies.)
libpackagelistparser
https://android.googlesource.com/platform/system/core/+/refs/heads/nougat-mr1-dev/libpackagelistparser/
libpcre - https://android.googlesource.com/platform/external/pcre
libcrypto - https://android.googlesource.com/platform/external/boringssl
Many of these dependencies have been migrated over to the Many of these dependencies have been migrated over to the
``Android.bp'' build system now used to build Android itself. ``Android.bp'' build system now used to build Android itself.
@ -663,3 +670,66 @@ index c7bcb0f5..d4da1704 100644
else else
NEON := c NEON := c
endif endif
PATCHES FOR SELINUX
diff --git a/Android.mk b/Android.mk
index 659232e..1e64fd6 100644
--- a/Android.mk
+++ b/Android.mk
@@ -116,3 +116,7 @@ LOCAL_STATIC_LIBRARIES := libselinux
LOCAL_WHOLE_STATIC_LIBRARIES := libpcre
LOCAL_C_INCLUDES := external/pcre
include $(BUILD_HOST_EXECUTABLE)
+
+$(call import-module,libpcre)
+$(call import-module,libpackagelistparser)
+$(call import-module,libcrypto)
diff --git a/src/android.c b/src/android.c
index 5206a9f..b351ffc 100644
--- a/src/android.c
+++ b/src/android.c
@@ -21,8 +21,7 @@
#include <selinux/label.h>
#include <selinux/avc.h>
#include <openssl/sha.h>
-#include <private/android_filesystem_config.h>
-#include <log/log.h>
+#include <android/log.h>
#include "policy.h"
#include "callbacks.h"
#include "selinux_internal.h"
@@ -686,6 +685,7 @@ static int seapp_context_lookup(enum seapp_kind kind,
seinfo = parsedseinfo;
}
+#if 0
userid = uid / AID_USER;
isOwner = (userid == 0);
appid = uid % AID_USER;
@@ -702,9 +702,13 @@ static int seapp_context_lookup(enum seapp_kind kind,
username = "_app";
appid -= AID_APP;
} else {
+#endif
username = "_isolated";
+ appid = 0;
+#if 0
appid -= AID_ISOLATED_START;
}
+#endif
if (appid >= CAT_MAPPING_MAX_ID || userid >= CAT_MAPPING_MAX_ID)
goto err;
@@ -1662,8 +1666,10 @@ int selinux_log_callback(int type, const char *fmt, ...)
va_start(ap, fmt);
if (vasprintf(&strp, fmt, ap) != -1) {
+#if 0
LOG_PRI(priority, "SELinux", "%s", strp);
LOG_EVENT_STRING(AUDITD_LOG_TAG, strp);
+#endif
free(strp);
}
va_end(ap);

View file

@ -1063,6 +1063,7 @@ package will likely install on older systems but crash on startup.])
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" passthrough="$passthrough --with-tiff=$with_tiff"
passthrough="$passthrough --with-selinux=$with_selinux"
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 \
@ -1134,6 +1135,7 @@ if test "$ANDROID" = "yes"; then
with_sqlite3=no with_sqlite3=no
with_gnutls=no with_gnutls=no
with_tiff=no with_tiff=no
with_selinux=no
fi fi
with_rsvg=no with_rsvg=no
@ -1148,7 +1150,6 @@ if test "$ANDROID" = "yes"; then
with_gpm=no with_gpm=no
with_dbus=no with_dbus=no
with_gsettings=no with_gsettings=no
with_selinux=no
with_modules=no with_modules=no
with_threads=no with_threads=no
@ -3709,19 +3710,29 @@ if test "${HAVE_GTK}" = "yes"; then
fi fi
AC_SUBST([USE_STARTUP_NOTIFICATION]) AC_SUBST([USE_STARTUP_NOTIFICATION])
dnl SELinux is available for GNU/Linux only. dnl SELinux is available for Linux kernel based systems only.
dnl These include GNU/Linux and Android.
HAVE_LIBSELINUX=no HAVE_LIBSELINUX=no
LIBSELINUX_LIBS= LIBSELINUX_LIBS=
LIBSELINUX_CFLAGS=
if test "${with_selinux}" = "yes"; then if test "${with_selinux}" = "yes"; then
if test "$REALLY_ANDROID" = "yes"; then
ndk_SEARCH_MODULE([libselinux], [LIBSELINUX],
[HAVE_LIBSELINUX=yes])
else
AC_CHECK_LIB([selinux], [lgetfilecon], AC_CHECK_LIB([selinux], [lgetfilecon],
[HAVE_LIBSELINUX=yes], [HAVE_LIBSELINUX=yes],
[HAVE_LIBSELINUX=no]) [HAVE_LIBSELINUX=no])
fi
if test "$HAVE_LIBSELINUX" = yes; then if test "$HAVE_LIBSELINUX" = yes; then
AC_DEFINE([HAVE_LIBSELINUX], [1], [Define to 1 if using SELinux.]) AC_DEFINE([HAVE_LIBSELINUX], [1], [Define to 1 if using SELinux.])
if test "$REALLY_ANDROID" != "yes"; then
LIBSELINUX_LIBS=-lselinux LIBSELINUX_LIBS=-lselinux
fi fi
fi fi
fi
AC_SUBST([LIBSELINUX_LIBS]) AC_SUBST([LIBSELINUX_LIBS])
AC_SUBST([LIBSELINUX_CFLAGS])
HAVE_GNUTLS=no HAVE_GNUTLS=no
if test "${with_gnutls}" != "no" ; then if test "${with_gnutls}" != "no" ; then

View file

@ -51,7 +51,14 @@ $(call objname,$(LOCAL_MODULE),$(basename $(1))): $(LOCAL_PATH)/$(1)
else else
ifneq (x$(suffix $(1)),x.asm) ifneq (x$(suffix $(1)),x.asm)
ifeq (x$(suffix $(1)),x.cc)
$(call objname,$(LOCAL_MODULE),$(basename $(1))): $(LOCAL_PATH)/$(1)
$(NDK_BUILD_CC) -c $$< -o $$@ $(NDK_CFLAGS_$(LOCAL_MODULE)) $(NDK_CXXFLAGS_$(LOCAL_MODULE))
else
$$(error Unsupported suffix: $(suffix $(1))) $$(error Unsupported suffix: $(suffix $(1)))
endif
else else
ifneq (x$(LOCAL_ASM_RULE_DEFINED),x) ifneq (x$(LOCAL_ASM_RULE_DEFINED),x)
# Call this function to define a rule that will generate $(1) from # Call this function to define a rule that will generate $(1) from
@ -82,7 +89,7 @@ endef
# $(LOCAL_PATH). # $(LOCAL_PATH).
NDK_CFLAGS_$(LOCAL_MODULE) := $(addprefix -I,$(LOCAL_C_INCLUDES)) NDK_CFLAGS_$(LOCAL_MODULE) := $(addprefix -I,$(LOCAL_C_INCLUDES))
NDK_CFLAGS_$(LOCAL_MODULE) += -fPIC -iquote $(LOCAL_PATH) $(LOCAL_EXPORT_CFLAGS) $(LOCAL_CFLAGS) $(LOCAL_CFLAGS_$(NDK_BUILD_ARCH)) NDK_CFLAGS_$(LOCAL_MODULE) += -fPIC -iquote $(LOCAL_PATH) $(LOCAL_EXPORT_CFLAGS) $(LOCAL_CFLAGS) $(LOCAL_CFLAGS_$(NDK_BUILD_ARCH))
NDK_ASFLAGS_$(LOCAL_MODULE) := $(LOCAL_ASFLAGS) $(LOCAL_ASFLAGS_$(NDK_BUILD_ARCH)) NDK_ASFLAGS_$(LOCAL_MODULE) := $(LOCAL_ASFLAGS) $(LOCAL_ASFLAGS_$(NDK_BUILD_ARCH)) $(and $(findstring clang,$(NDK_BUILD_CC)),$(LOCAL_CLANG_ASFLAGS_$(NDK_BUILD_ARCH)))
NDK_LDFLAGS_$(LOCAL_MODULE) := $(LOCAL_LDLIBS) $(LOCAL_LDFLAGS) NDK_LDFLAGS_$(LOCAL_MODULE) := $(LOCAL_LDLIBS) $(LOCAL_LDFLAGS)
NDK_CXXFLAGS_$(LOCAL_MODULE) := $(LOCAL_CPPFLAGS) $(LOCAL_RTTI_FLAG) NDK_CXXFLAGS_$(LOCAL_MODULE) := $(LOCAL_CPPFLAGS) $(LOCAL_RTTI_FLAG)

View file

@ -43,7 +43,14 @@ $(call objname,$(LOCAL_MODULE),$(basename $(1))): $(LOCAL_PATH)/$(1)
else else
ifneq (x$(suffix $(1)),x.asm) ifneq (x$(suffix $(1)),x.asm)
ifeq (x$(suffix $(1)),x.cc)
$(call objname,$(LOCAL_MODULE),$(basename $(1))): $(LOCAL_PATH)/$(1)
$(NDK_BUILD_CC) -c $$< -o $$@ $(NDK_CFLAGS_$(LOCAL_MODULE)) $(NDK_CXXFLAGS_$(LOCAL_MODULE))
else
$$(error Unsupported suffix: $(suffix $(1))) $$(error Unsupported suffix: $(suffix $(1)))
endif
else else
ifneq (x$(LOCAL_ASM_RULE_DEFINED),x) ifneq (x$(LOCAL_ASM_RULE_DEFINED),x)
# Call this function to define a rule that will generate $(1) from # Call this function to define a rule that will generate $(1) from
@ -71,7 +78,7 @@ endef
NDK_CFLAGS_$(LOCAL_MODULE) := $(addprefix -I,$(LOCAL_C_INCLUDES)) NDK_CFLAGS_$(LOCAL_MODULE) := $(addprefix -I,$(LOCAL_C_INCLUDES))
NDK_CFLAGS_$(LOCAL_MODULE) += -fPIC -iquote $(LOCAL_PATH) $(LOCAL_EXPORT_CFLAGS) $(LOCAL_CFLAGS) $(LOCAL_CFLAGS_$(NDK_BUILD_ARCH)) NDK_CFLAGS_$(LOCAL_MODULE) += -fPIC -iquote $(LOCAL_PATH) $(LOCAL_EXPORT_CFLAGS) $(LOCAL_CFLAGS) $(LOCAL_CFLAGS_$(NDK_BUILD_ARCH))
NDK_ASFLAGS_$(LOCAL_MODULE) := $(LOCAL_ASFLAGS) $(LOCAL_ASFLAGS_$(NDK_BUILD_ARCH)) NDK_ASFLAGS_$(LOCAL_MODULE) := $(LOCAL_ASFLAGS) $(LOCAL_ASFLAGS_$(NDK_BUILD_ARCH)) $(and $(findstring clang,$(NDK_BUILD_CC)),$(LOCAL_CLANG_ASFLAGS_$(NDK_BUILD_ARCH)))
NDK_LDFLAGS_$(LOCAL_MODULE) := $(LOCAL_LDLIBS) $(LOCAL_LDFLAGS) NDK_LDFLAGS_$(LOCAL_MODULE) := $(LOCAL_LDLIBS) $(LOCAL_LDFLAGS)
NDK_CXXFLAGS_$(LOCAL_MODULE) := $(LOCAL_CPPFLAGS) $(LOCAL_RTTI_FLAG) NDK_CXXFLAGS_$(LOCAL_MODULE) := $(LOCAL_CPPFLAGS) $(LOCAL_RTTI_FLAG)
ALL_OBJECT_FILES$(LOCAL_MODULE) := ALL_OBJECT_FILES$(LOCAL_MODULE) :=

View file

@ -43,9 +43,13 @@ undefine LOCAL_EXPORT_C_INCLUDE_DIRS
undefine LOCAL_EXPORT_LDFLAGS undefine LOCAL_EXPORT_LDFLAGS
undefine LOCAL_EXPORT_LDLIBS undefine LOCAL_EXPORT_LDLIBS
# AOSP extensions.
undefine LOCAL_SRC_FILES_$(NDK_BUILD_ARCH) undefine LOCAL_SRC_FILES_$(NDK_BUILD_ARCH)
undefine LOCAL_ASFLAGS_$(NDK_BUILD_ARCH) undefine LOCAL_ASFLAGS_$(NDK_BUILD_ARCH)
undefine LOCAL_CFLAGS_$(NDK_BUILD_ARCH) undefine LOCAL_CFLAGS_$(NDK_BUILD_ARCH)
undefine LOCAL_ADDITIONAL_DEPENDENCIES
undefine LOCAL_CLANG_ASFLAGS_$(NDK_BUILD_ARCH)
undefine LOCAL_IS_HOST_MODULE
# Emacs extensions! # Emacs extensions!
undefine LOCAL_ASM_RULE_DEFINED undefine LOCAL_ASM_RULE_DEFINED

View file

@ -109,6 +109,22 @@ corrupted, Emacs can crash. If that happens, the dump file stored in
the Emacs files directory can be erased through the same preferences the Emacs files directory can be erased through the same preferences
screen. screen.
@cindex emacsclient wrapper, android
Since there is no other way to start the @cmd{emacsclient} program
(@pxref{Emacs Server}) from another Android program, Emacs provides a
wrapper around the @cmd{emacsclient} program, which is registered with
the system as an application that can open all text files.
When that wrapper is selected as the program with which to open a
file, it invokes @cmd{emacsclient} with the options
@cmd{--reuse-frame}, @cmd{--timeout=10}, @cmd{--no-wait}, and the name
of the file being opened. Then, upon success, the focus is
transferred to any open Emacs frame.
It is sadly impossible to open certain kinds of files which are
provided by a ``content provider''. When that is the case, a dialog
is displayed with an explanation of the error.
@node Android File System @node Android File System
@section What files Emacs can access under Android @section What files Emacs can access under Android
@cindex /assets directory, android @cindex /assets directory, android

View file

@ -106,6 +106,10 @@ public class EmacsView extends ViewGroup
/* Whether or not this view is attached to a window. */ /* Whether or not this view is attached to a window. */
public boolean isAttachedToWindow; public boolean isAttachedToWindow;
/* Whether or not this view should have the on screen keyboard
displayed whenever possible. */
public boolean isCurrentlyTextEditor;
public public
EmacsView (EmacsWindow window) EmacsView (EmacsWindow window)
{ {
@ -597,6 +601,7 @@ public class EmacsView extends ViewGroup
/* Specifying no flags at all tells the system the user asked for /* Specifying no flags at all tells the system the user asked for
the input method to be displayed. */ the input method to be displayed. */
imManager.showSoftInput (this, 0); imManager.showSoftInput (this, 0);
isCurrentlyTextEditor = true;
} }
public void public void
@ -604,6 +609,7 @@ public class EmacsView extends ViewGroup
{ {
imManager.hideSoftInputFromWindow (this.getWindowToken (), imManager.hideSoftInputFromWindow (this.getWindowToken (),
0); 0);
isCurrentlyTextEditor = false;
} }
public void public void
@ -636,4 +642,13 @@ public class EmacsView extends ViewGroup
screen keyboard to work correctly. */ screen keyboard to work correctly. */
return null; return null;
} }
@Override
public boolean
onCheckIsTextEditor ()
{
/* If value is true, then the system will display the on screen
keyboard. */
return isCurrentlyTextEditor;
}
}; };

View file

@ -96,20 +96,22 @@ to the frame that they belong in."
Perform vertical scrolling by DY, using `pixel-scroll-precision' Perform vertical scrolling by DY, using `pixel-scroll-precision'
if `touch-screen-precision-scroll' is enabled. Next, perform if `touch-screen-precision-scroll' is enabled. Next, perform
horizontal scrolling according to the movement in DX." horizontal scrolling according to the movement in DX."
;; Perform vertical scrolling first. ;; Perform vertical scrolling first. Do not ding at buffer limits.
;; Show a message instead.
(condition-case nil
(if touch-screen-precision-scroll (if touch-screen-precision-scroll
(if (> dy 0) (if (> dy 0)
(pixel-scroll-precision-scroll-down-page dy) (pixel-scroll-precision-scroll-down-page dy)
(pixel-scroll-precision-scroll-up-page (- dy))) (pixel-scroll-precision-scroll-up-page (- dy)))
;; Start conventional scrolling. First, determine the direction ;; Start conventional scrolling. First, determine the
;; in which the scrolling is taking place. Load the accumulator ;; direction in which the scrolling is taking place. Load the
;; value. ;; accumulator value.
(let ((accumulator (or (nth 5 touch-screen-current-tool) 0)) (let ((accumulator (or (nth 5 touch-screen-current-tool) 0))
(window (cadr touch-screen-current-tool)) (window (cadr touch-screen-current-tool))
(lines-vscrolled (or (nth 7 touch-screen-current-tool) 0))) (lines-vscrolled (or (nth 7 touch-screen-current-tool) 0)))
(setq accumulator (+ accumulator dy)) ; Add dy. (setq accumulator (+ accumulator dy)) ; Add dy.
;; Figure out how much it has scrolled and how much remains on ;; Figure out how much it has scrolled and how much remains
;; the top or bottom of the window. ;; on the top or bottom of the window.
(while (catch 'again (while (catch 'again
(let* ((line-height (window-default-line-height window))) (let* ((line-height (window-default-line-height window)))
(if (and (< accumulator 0) (if (and (< accumulator 0)
@ -119,8 +121,8 @@ horizontal scrolling according to the movement in DX."
(scroll-down 1) (scroll-down 1)
(setq lines-vscrolled (1+ lines-vscrolled)) (setq lines-vscrolled (1+ lines-vscrolled))
(when (not (zerop accumulator)) (when (not (zerop accumulator))
;; If there is still an outstanding amount to ;; If there is still an outstanding
;; scroll, do this again. ;; amount to scroll, do this again.
(throw 'again t))) (throw 'again t)))
(when (and (> accumulator 0) (when (and (> accumulator 0)
(>= accumulator line-height)) (>= accumulator line-height))
@ -128,15 +130,20 @@ horizontal scrolling according to the movement in DX."
(scroll-up 1) (scroll-up 1)
(setq lines-vscrolled (1+ lines-vscrolled)) (setq lines-vscrolled (1+ lines-vscrolled))
(when (not (zerop accumulator)) (when (not (zerop accumulator))
;; If there is still an outstanding amount to ;; If there is still an outstanding amount
;; scroll, do this again. ;; to scroll, do this again.
(throw 'again t))))) (throw 'again t)))))
;; Scrolling is done. Move the accumulator back to ;; Scrolling is done. Move the accumulator back to
;; touch-screen-current-tool and break out of the loop. ;; touch-screen-current-tool and break out of the
;; loop.
(setcar (nthcdr 5 touch-screen-current-tool) accumulator) (setcar (nthcdr 5 touch-screen-current-tool) accumulator)
(setcar (nthcdr 7 touch-screen-current-tool) (setcar (nthcdr 7 touch-screen-current-tool)
lines-vscrolled) lines-vscrolled)
nil)))) nil))))
(beginning-of-buffer
(message (error-message-string '(beginning-of-buffer))))
(end-of-buffer
(message (error-message-string '(end-of-buffer)))))
;; Perform horizontal scrolling by DX, as this does not signal at ;; Perform horizontal scrolling by DX, as this does not signal at
;; the beginning of the buffer. ;; the beginning of the buffer.

View file

@ -90,6 +90,8 @@ ndk_replace_pkg_config_package () {
done done
} }
# ndk_parse_pkg_config_string PKG_CONFIG_STRING
# ---------------------------------------------
# Parse a pkg-config style list of modules. Place the resulting list # Parse a pkg-config style list of modules. Place the resulting list
# in ndk_modules. # in ndk_modules.
@ -109,8 +111,10 @@ ndk_parse_pkg_config_string () {
done done
} }
# Resolve $1, a single import. Prepend its makefile to ndk_MAKEFILES # ndk_resolve_import_module MODULE
# if found. Also, prepend all includes to the variable # --------------------------------
# Resolve MODULE, a single import. Prepend its makefile to
# ndk_MAKEFILES if found. Also, prepend all includes to the variable
# ndk_import_includes. # ndk_import_includes.
ndk_resolve_import_module () { ndk_resolve_import_module () {

View file

@ -349,6 +349,7 @@ CM_OBJ=@CM_OBJ@
LIBGPM = @LIBGPM@ LIBGPM = @LIBGPM@
LIBSELINUX_LIBS = @LIBSELINUX_LIBS@ LIBSELINUX_LIBS = @LIBSELINUX_LIBS@
LIBSELINUX_CFLAGS = @LIBSELINUX_CFLAGS@
LIBGNUTLS_LIBS = @LIBGNUTLS_LIBS@ LIBGNUTLS_LIBS = @LIBGNUTLS_LIBS@
LIBGNUTLS_CFLAGS = @LIBGNUTLS_CFLAGS@ LIBGNUTLS_CFLAGS = @LIBGNUTLS_CFLAGS@
@ -437,7 +438,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) $(TIFF_CFLAGS) $(LIBGMP_CFLAGS) $(TIFF_CFLAGS) $(LIBSELINUX_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) \