diff options
| author | Po Lu | 2023-01-13 15:53:08 +0800 |
|---|---|---|
| committer | Po Lu | 2023-01-13 15:53:08 +0800 |
| commit | f9732131cf3c67e24db74a3d49f256d3c189a7e3 (patch) | |
| tree | e44e097c0c4c513390f58fa0020c8662943fbac6 /java/Makefile.in | |
| parent | 2fa5583d96fe78ff66d6fd41f18e54e4e20ea7d6 (diff) | |
| download | emacs-f9732131cf3c67e24db74a3d49f256d3c189a7e3.tar.gz emacs-f9732131cf3c67e24db74a3d49f256d3c189a7e3.zip | |
Update Android port
* configure.ac (ANDROID_MIN_SDK): New variable.
(DX): Remove and replace with D8.
(XCONFIGURE): Check for the minimum version of Android the cross
compiler compiles for. Generate java/AndroidManifest.xml from
java/AndroidManifest.xml.in. Allow using Zlib on Android.
* java/AndroidManifest.xml.in: New file. Use the minimum SDK
detected by configure.
* java/Makefile.in (top_srcdir, version): New variables.
(DX, D8): Replace with D8.
(ANDROID_MIN_SDK, APK_NAME): New variables.
(.PHONY):
(.PRECIOUS):
(classes.dex):
(emacs.apk): Generate $(APK_NAME) instead of `emacs.apk'.
* java/debug.sh: New option --attach-existing. Attach to an
existing Emacs instance when specified.
* java/org/gnu/emacs/EmacsActivity.java (EmacsActivity): New
field `isPaused'.
(invalidateFocus1): Fix infinite recursion.
(detachWindow): Deiconify window.
(attachWindow): Iconify the window if the activity is paused.
(onCreate): Use the ``no title bar'' theme.
(onPause, onResume): New functions.
* java/org/gnu/emacs/EmacsNative.java (sendTouchUp, sendTouchDown)
(sendTouchMove, sendWheel, sendIconified, sendDeiconified): New
functions.
* java/org/gnu/emacs/EmacsSdk7FontDriver.java (Sdk7Typeface):
(list): Remove logging for code that is mostly going to be unused.
* java/org/gnu/emacs/EmacsService.java (ringBell, queryTree)
(getScreenWidth, getScreenHeight, detectMouse): New functions.
* java/org/gnu/emacs/EmacsSurfaceView.java (EmacsSurfaceView)
(surfaceChanged, surfaceCreated, surfaceDestroyed): Add extra
debug logging. Avoid deadlock in surfaceCreated.
* java/org/gnu/emacs/EmacsView.java (EmacsView): Try very hard
to make the SurfaceView respect Z order. It didn't work.
(handleDirtyBitmap): Copy over the contents from the old bitmap.
(explicitlyDirtyBitmap): New function.
(onLayout): Don't dirty bitmap if unnecessary.
(damageRect, swapBuffers): Don't synchronize so hard.
(onTouchEvent): Call window.onTouchEvent instead.
(moveChildToBack, raise, lower): New functions.
* java/org/gnu/emacs/EmacsWindow.java (Coordinate): New
subclass.
(pointerMap, isMapped, isIconified, dontFocusOnMap)
(dontAcceptFocus): New fields.
(EmacsWindow): Don't immediately register unmapped window.
(viewLayout): Send configure event outside the lock.
(requestViewLayout): Explicitly dirty the bitmap.
(mapWindow): Register the window now. Respect dontFocusOnMap.
(unmapWindow): Unregister the window now.
(figureChange, onTouchEvent): New functions.
(onSomeKindOfMotionEvent): Handle scroll wheel events.
(reparentTo, makeInputFocus, raise, lower, getWindowGeometry)
(noticeIconified, noticeDeiconified, setDontAcceptFocus)
(setDontFocusOnMap, getDontFocusOnMap): New functions.
* java/org/gnu/emacs/EmacsWindowAttachmentManager.java
(registerWindow, detachWindow): Synchronize.
(noticeIconified, noticeDeiconified): New functions.
(copyWindows): New function.
* lisp/frame.el (frame-geometry, frame-edges)
(mouse-absolute-pixel-position, set-mouse-absolute-pixel-position)
(frame-list-z-order, frame-restack, display-mouse-p)
(display-monitor-attributes-list): Implement on Android.
* lisp/mwheel.el (mouse-wheel-down-event):
(mouse-wheel-up-event):
(mouse-wheel-left-event):
(mouse-wheel-right-event): Define on Android.
* src/android.c (struct android_emacs_service): New methods
`ringBell', `queryTree', `getScreenWidth', `getScreenHeight',
and `detectMouse'.
(struct android_event_queue, android_init_events)
(android_next_event, android_write_event): Remove write limit.
(android_file_access_p): Handle directories correcty.
(android_close): Fix coding style.
(android_fclose): New function.
(android_init_emacs_service): Initialize new methods.
(android_reparent_window): Implement function.
(android_bell, android_set_input_focus, android_raise_window)
(android_lower_window, android_query_tree, android_get_geometry)
(android_get_screen_width, android_get_screen_height)
(android_get_mm_width, android_get_mm_height, android_detect_mouse)
(android_set_dont_focus_on_map, android_set_dont_accept_focus):
New functions.
(struct android_dir): New structure.
(android_opendir, android_readdir, android_closedir): New
functions.
(emacs_abort): Implement here on Android and poke debuggerd into
generating a tombstone.
* src/android.h: Update prototypes.
* src/androidfns.c (android_set_parent_frame): New function.
(android_default_font_parameter): Use sane font size by default.
(Fx_display_pixel_width, Fx_display_pixel_height)
(Fx_display_mm_width, Fx_display_mm_height)
(Fx_display_monitor_attributes_list): Rename to start with
`android-'. Implement. Fiddle with documentation to introduce
Android specific nuances.
(Fandroid_display_monitor_attributes_list): New function.
(Fx_frame_geometry, frame_geometry): New function.
(Fandroid_frame_geometry): Implement correctly.
(Fx_frame_list_z_order): Rename to start with `android-'.
(android_frame_list_z_order, Fandroid_frame_list_z_order):
Implement.
(Fx_frame_restack): Rename to start with `android-'.
(Fandroid_frame_restack): ``Implement''.
(Fx_mouse_absolute_pixel_position): Rename to start with
`android-'.
(Fandroid_mouse_absolute_pixel_position): ``Implement''.
(Fx_set_mouse_absolute_pixel_position): Rename to start with
`android-'.
(Fandroid_set_mouse_absolute_pixel_position): ``Implement''.
(Fandroid_detect_mouse): New function.
(android_set_menu_bar_lines): Use FRAME_ANDROID_DRAWABLE when
clearing area.
(android_set_no_focus_on_map, android_set_no_accept_focus): New
functions.
(android_frame_parm_handlers): Register new frame parameter
handlers.
(syms_of_androidfns): Update appropriately.
* src/androidfont.c (androidfont_draw): Use
FRAME_ANDROID_DRAWABLE instead of FRAME_ANDROID_WINDOW.
* src/androidgui.h (enum android_event_type): New events.
(struct android_touch_event, struct android_wheel_event)
(struct android_iconify_event): New structures.
(union android_event): Add new events.
* src/androidterm.c (android_clear_frame): Use
FRAME_ANDROID_DRAWABLE instead of FRAME_ANDROID_WINDOW.
(android_flash, android_ring_bell): Implement bell ringing.
(android_toggle_invisible_pointer): Don't TODO function that
can't be implemented.
(show_back_buffer, android_flush_dirty_back_buffer_on): Check if
a buffer flip is required before doing the flip.
(android_lower_frame, android_raise_frame): Implement functions.
(android_update_tools, android_find_tool): New functions.
(handle_one_android_event): Handle new iconification, wheel and
touch events.
(android_read_socket): Implement pending-autoraise-frames.
(android_frame_up_to_date): Implement bell ringing.
(android_buffer_flipping_unblocked_hook): Check if a buffer flip
is required before doing the flip.
(android_focus_frame, android_frame_highlight)
(android_frame_unhighlight): New function.
(android_frame_rehighlight): Implement functions.
(android_iconify_frame): Always display error.
(android_set_alpha): Update commentary.
(android_free_frame_resources): Free frame touch points.
(android_scroll_run, android_flip_and_flush)
(android_clear_rectangle, android_draw_fringe_bitmap)
(android_draw_glyph_string_background, android_fill_triangle)
(android_clear_point, android_draw_relief_rect)
(android_draw_box_rect, android_draw_glyph_string_bg_rect)
(android_draw_image_foreground, android_draw_stretch_glyph_string)
(android_draw_underwave, android_draw_glyph_string_foreground)
(android_draw_composite_glyph_string_foreground)
(android_draw_glyphless_glyph_string_foreground)
(android_draw_glyph_string, android_clear_frame_area)
(android_clear_under_internal_border, android_draw_hollow_cursor)
(android_draw_bar_cursor, android_draw_vertical_window_border)
(android_draw_window_divider): Use FRAME_ANDROID_DRAWABLE
instead of FRAME_ANDROID_WINDOW for drawing operations.
* src/androidterm.h (struct android_touch_point): New structure.
(struct android_output): New fields.
(FRAME_ANDROID_NEED_BUFFER_FLIP): New macro.
* src/dired.c (emacs_readdir, open_directory)
(directory_files_internal_unwind, read_dirent)
(directory_files_internal, file_name_completion): Add
indirection over readdir and opendir. Use android variants on
Android.
* src/dispnew.c (Fopen_termscript):
* src/fileio.c (fclose_unwind): Use emacs_fclose.
(Faccess_file): Call android_file_access_p.
(file_accessible_directory_p): Append right suffix to Android
assets directory.
(do_auto_save_unwind): Use emacs_fclose.
* src/keyboard.c (lispy_function_keys): Use right function key
for page up and page down.
(Fopen_dribble_file): Use emacs_fclose.
* src/lisp.h: New prototype emacs_fclose.
* src/lread.c (close_infile_unwind): Use emacs_fclose.
* src/sfnt.c (sfnt_curve_is_flat): Fix area-squared computation.
(sfnt_prepare_raster): Compute raster width and height
consistently with outline building.
(sfnt_build_outline_edges): Use the same offsets used to set
offy and offx.
(main): Adjust debug code.
* src/sfntfont-android.c (sfntfont_android_saturate32): Delete
function.
(sfntfont_android_blend, sfntfont_android_blendrgb): Remove
unnecessary debug code.
(sfntfont_android_composite_bitmap): Prevent out of bounds
write.
(sfntfont_android_put_glyphs): Use FRAME_ANDROID_DRAWABLE.
(init_sfntfont_android): Initialize Monospace Serif font to
something sensible.
* src/sfntfont.c (sfntfont_text_extents): Clear glyph metrics
before summing up pcm.
(sfntfont_draw): Use s->font instead of s->face->font.
* src/sysdep.c (emacs_fclose): Wrap around android_fclose on
android.
* src/term.c (Fsuspend_tty):
(delete_tty): Use emacs_fclose.
* src/verbose.mk.in (AM_V_DX): Replace with D8 version.
Diffstat (limited to 'java/Makefile.in')
| -rw-r--r-- | java/Makefile.in | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/java/Makefile.in b/java/Makefile.in index 31bd22b5a2e..05e61dede89 100644 --- a/java/Makefile.in +++ b/java/Makefile.in | |||
| @@ -18,13 +18,15 @@ | |||
| 18 | # along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. | 18 | # along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. |
| 19 | 19 | ||
| 20 | top_builddir = @top_builddir@ | 20 | top_builddir = @top_builddir@ |
| 21 | top_srcdir = @top_srcdir@ | ||
| 22 | version = @version@ | ||
| 21 | 23 | ||
| 22 | -include ${top_builddir}/src/verbose.mk | 24 | -include ${top_builddir}/src/verbose.mk |
| 23 | 25 | ||
| 24 | SHELL = @SHELL@ | 26 | SHELL = @SHELL@ |
| 25 | JAVAC = @JAVAC@ | 27 | JAVAC = @JAVAC@ |
| 26 | AAPT = @AAPT@ | 28 | AAPT = @AAPT@ |
| 27 | DX = @DX@ | 29 | D8 = @D8@ |
| 28 | ZIPALIGN = @ZIPALIGN@ | 30 | ZIPALIGN = @ZIPALIGN@ |
| 29 | JARSIGNER = @JARSIGNER@ | 31 | JARSIGNER = @JARSIGNER@ |
| 30 | ANDROID_JAR = @ANDROID_JAR@ | 32 | ANDROID_JAR = @ANDROID_JAR@ |
| @@ -39,6 +41,12 @@ SIGN_EMACS = -keystore emacs.keystore -storepass emacs1 | |||
| 39 | JAVA_FILES = $(shell find . -type f -name *.java) | 41 | JAVA_FILES = $(shell find . -type f -name *.java) |
| 40 | CLASS_FILES = $(foreach file,$(JAVA_FILES),$(basename $(file)).class) | 42 | CLASS_FILES = $(foreach file,$(JAVA_FILES),$(basename $(file)).class) |
| 41 | 43 | ||
| 44 | # Compute the name for the Emacs application package. This should be: | ||
| 45 | # emacs-<version>-<min-sdk>-<abi>.apk | ||
| 46 | |||
| 47 | ANDROID_MIN_SDK = @ANDROID_MIN_SDK@ | ||
| 48 | APK_NAME = emacs-$(version)-$(ANDROID_MIN_SDK)-$(ANDROID_ABI).apk | ||
| 49 | |||
| 42 | # How this stuff works. | 50 | # How this stuff works. |
| 43 | 51 | ||
| 44 | # emacs.apk depends on emacs.apk-in, which is simply a ZIP archive | 52 | # emacs.apk depends on emacs.apk-in, which is simply a ZIP archive |
| @@ -55,7 +63,7 @@ CLASS_FILES = $(foreach file,$(JAVA_FILES),$(basename $(file)).class) | |||
| 55 | # assets/lisp/ | 63 | # assets/lisp/ |
| 56 | 64 | ||
| 57 | .PHONY: emacs.apk-in all | 65 | .PHONY: emacs.apk-in all |
| 58 | all: emacs.apk | 66 | all: $(APK_NAME) |
| 59 | 67 | ||
| 60 | # Binaries to cross-compile. | 68 | # Binaries to cross-compile. |
| 61 | CROSS_BINS = ../xcompile/src/android-emacs ../xcompile/lib-src/ctags \ | 69 | CROSS_BINS = ../xcompile/src/android-emacs ../xcompile/lib-src/ctags \ |
| @@ -118,6 +126,18 @@ emacs.apk-in: $(CROSS_BINS) $(CROSS_LIBS) AndroidManifest.xml | |||
| 118 | pushd install_temp; $(AAPT) add ../$@ `find assets -type f`; popd | 126 | pushd install_temp; $(AAPT) add ../$@ `find assets -type f`; popd |
| 119 | rm -rf install_temp | 127 | rm -rf install_temp |
| 120 | 128 | ||
| 129 | # Makefile itself. | ||
| 130 | .PRECIOUS: ../config.status Makefile | ||
| 131 | ../config.status: $(top_srcdir)/configure.ac $(top_srcdir)/m4/*.m4 | ||
| 132 | $(MAKE) -C $(dir $@) $(notdir $@) | ||
| 133 | Makefile: ../config.status $(top_builddir)/java/Makefile.in | ||
| 134 | $(MAKE) -C .. java/$@ | ||
| 135 | |||
| 136 | # AndroidManifest.xml: | ||
| 137 | AndroidManifest.xml: $(top_srcdir)/configure.ac $(top_srcdir)/m4/*.m4 \ | ||
| 138 | AndroidManifest.xml.in | ||
| 139 | pushd ..; ./config.status java/AndroidManifest.xml; popd | ||
| 140 | |||
| 121 | .SUFFIXES: .java .class | 141 | .SUFFIXES: .java .class |
| 122 | .java.class &: | 142 | .java.class &: |
| 123 | $(AM_V_JAVAC) $(JAVAC) $(JAVAFLAGS) $< | 143 | $(AM_V_JAVAC) $(JAVAC) $(JAVAFLAGS) $< |
| @@ -126,7 +146,7 @@ emacs.apk-in: $(CROSS_BINS) $(CROSS_LIBS) AndroidManifest.xml | |||
| 126 | # nested classes. | 146 | # nested classes. |
| 127 | 147 | ||
| 128 | classes.dex: $(CLASS_FILES) | 148 | classes.dex: $(CLASS_FILES) |
| 129 | $(AM_V_DX) $(DX) --classpath $(ANDROID_JAR) \ | 149 | $(AM_V_D8) $(D8) --classpath $(ANDROID_JAR) \ |
| 130 | $(subst $$,\$$,$(shell find . -type f -name *.class)) | 150 | $(subst $$,\$$,$(shell find . -type f -name *.class)) |
| 131 | 151 | ||
| 132 | # When emacs.keystore expires, regenerate it with: | 152 | # When emacs.keystore expires, regenerate it with: |
| @@ -136,7 +156,7 @@ classes.dex: $(CLASS_FILES) | |||
| 136 | 156 | ||
| 137 | .PHONY: clean maintainer-clean | 157 | .PHONY: clean maintainer-clean |
| 138 | 158 | ||
| 139 | emacs.apk: classes.dex emacs.apk-in emacs.keystore | 159 | $(APK_NAME): classes.dex emacs.apk-in emacs.keystore |
| 140 | cp -f emacs.apk-in $@.unaligned | 160 | cp -f emacs.apk-in $@.unaligned |
| 141 | $(AAPT) add $@.unaligned classes.dex | 161 | $(AAPT) add $@.unaligned classes.dex |
| 142 | $(JARSIGNER) $(SIGN_EMACS) $@.unaligned "Emacs keystore" | 162 | $(JARSIGNER) $(SIGN_EMACS) $@.unaligned "Emacs keystore" |
| @@ -144,7 +164,7 @@ emacs.apk: classes.dex emacs.apk-in emacs.keystore | |||
| 144 | rm -f $@.unaligned | 164 | rm -f $@.unaligned |
| 145 | 165 | ||
| 146 | clean: | 166 | clean: |
| 147 | rm -f emacs.apk emacs.apk-in *.dex *.unaligned *.class | 167 | rm -f *.apk emacs.apk-in *.dex *.unaligned *.class |
| 148 | rm -rf install-temp | 168 | rm -rf install-temp |
| 149 | find . -name '*.class' -delete | 169 | find . -name '*.class' -delete |
| 150 | 170 | ||