mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-30 09:00:31 -08:00
* .gitignore: Add binaries specific to Haiku. * Makefie.in (HAVE_BE_APP): New variable. (install-arch-dep): Install Emacs and Emacs.pdmp when using Haiku. * configure.ac: Detect and configure for Haiku and various related configurations. (be-app, be-freetype, be-cairo): New options. (HAVE_BE_APP, HAIKU_OBJ, HAIKU_CXX_OBJ) (HAIKU_LIBS, HAIKU_CFLAGS): New variables. (HAIKU, HAVE_TINY_SPEED_T): New define. (emacs_config_features): Add BE_APP. * doc/emacs/Makefile.in (EMACSSOURCES): Add Haiku appendix. * doc/emacs/emacs.texi: Add Haiku appendix to menus and include it. * doc/emacs/haiku.texi: New Haiku appendix. * doc/lispref/display.texi (Defining Faces, Window Systems): Explain meaning of `haiku' as a window system identifier. (haiku-use-system-tooltips): Explain meaning of system tooltips on Haiku. * doc/lispref/frames.texi (Multiple Terminals): Explain meaning of haiku as a display type. (Frame Layout): Clarify section for Haiku frames. (Size Parameters): Explain limitations of fullwidth and fullheight on Haiku. (Management Parameters): Explain limitations of inhibiting double buffering on builds with Cairo, and the inability of frames with no-accept-focus to receive keyboard input on Haiku. (Font and Color Parameters): Explain the different font backends available on Haiku. (Raising and Lowering): Explain that lowering and restacking frames doesn't work on Haiku. (Child Frames): Explain oddities of child frame visibility on Haiku. * doc/lispref/os.texi (System Environment): Explain meaning of haiku. * etc/MACHINES: Add appropriate notices for Haiku. * etc/NEWS: Document changes. * etc/PROBLEMS: Document font spacing bug on Haiku. * lib-src/Makefile.in: Build be-resources binary on Haiku. (CXX, CXXFLAGS, NON_CXX_FLAGS, ALL_CXXFLAGS) (HAVE_BE_APP, HAIKU_LIBS, HAIKU_CFLAGS): New variables. (DONT_INSTALL): Add be-resources binary if on Haiku. (be-resources): New target. * lib-src/be_resources: Add helper binary for setting resources on the Emacs application. * lib-src/emacsclient.c (decode_options): Set alt_display to "be" on Haiku. * lisp/cus-edit.el (custom-button, custom-button-mouse) (custom-button-unraised, custom-button-pressed): Update face definitions for Haiku. * lisp/cus-start.el: Add haiku-debug-on-fatal-error and haiku-use-system-tooltips. * lisp/faces.el (face-valid-attribute-values): Clarify attribute comment for Haiku. (tool-bar): Add appropriate toolbar color for Haiku. * lisp/frame.el (haiku-frame-geometry) (haiku-mouse-absolute-pixel-position) (haiku-set-mouse-absolute-pixel-position) (haiku-frame-edges) (haiku-frame-list-z-order): New function declarations. (frame-geometry, frame-edges) (mouse-absolute-pixel-position) (set-mouse-absolute-pixel-position) (frame-list-z-order): Call appropriate window system functions on Haiku. (display-mouse-p, display-graphic-p) (display-images-p, display-pixel-height) (display-pixel-width, display-mm-height) (display-mm-width, display-backing-store) (display-save-under, display-planes) (display-color-cells, display-visual-class): Update type tests for Haiku. * lisp/international/mule-cmds.el (set-coding-system-map): Also prevent set-terminal-coding-system from appearing in the menu bar on Haiku. * lisp/loadup.el: Load Haiku-specific files when built with Haiku, and don't rename newly built Emacs on Haiku as BFS doesn't support hard links. * lisp/menu-bar.el (menu-bar-open): Add for Haiku. * lisp/mwheel.el (mouse-wheel-down-event): Expect wheel-up on Haiku. (mouse-wheel-up-event): Expect wheel-down on Haiku. (mouse-wheel-left-event): Expect wheel-left on Haiku. (mouse-wheel-right-event): Expect wheel-right on Haiku. * lisp/net/browse-url.el (browse-url--browser-defcustom-type): Add option for WebPositive. (browse-url-webpositive-program): New variable. (browse-url-default-program): Search for WebPositive. (browse-url-webpositive): New function. * lisp/net/eww.el (eww-form-submit, eww-form-file) (eww-form-checkbox, eww-form-select): Define faces appropriately for Haiku. * lisp/term/haiku-win.el: New file. * lisp/tooltip.el (menu-or-popup-active-p): New function declaration. (tooltip-show-help): Don't use tooltips on Haiku when a menu is active. * lisp/version.el (haiku-get-version-string): New function declaration. (emacs-version): Add Haiku version string if appropriate. * src/Makefile.in: Also produce binary named "Emacs" with Haiku resources set. (CXX, HAIKU_OBJ, HAIKU_CXX_OBJ, HAIKU_LIBS) (HAIKU_CFLAGS, HAVE_BE_APP, NON_CXX_FLAGS) (ALL_CXX_FLAGS): New variables. (.SUFFIXES): Add .cc. (.cc.o): New target. (base_obj): Add Haiku C objects. (doc_obj, obj): Split objects that should scanned for documentation into doc_obj. (SOME_MACHINE_OBJECTS): Add appropriate Haiku C objects. (all): Depend on Emacs and Emacs.pdmp on Haiku. (LIBES): Add Haiku libraries. (gl-stamp) ($(etc)/DOC): Scan doc_obj instead of obj (temacs$(EXEEXT): Use C++ linker on Haiku. (ctagsfiles3): New variable. (TAGS): Scan C++ files. * src/alloc.c (garbage_collect): Mark Haiku display. * src/dispextern.h (HAVE_NATIVE_TRANSFORMS): Also enable on Haiku. (struct image): Add fields for Haiku transforms. (RGB_PIXEL_COLOR): Define to unsigned long on Haiku as well. (sit_for): Also check USABLE_SIGPOLL. (init_display_interactive): Set initial window system to Haiku on Haiku builds. * src/emacs.c (main): Define Haiku syms and init haiku clipboard. (shut_down_emacs): Quit BApplication on Haiku and trigger debug on aborts if haiku_debug_on_fatal_error. (Vsystem_type): Update docstring. * src/fileio.c (next-read-file-uses-dialog-p): Enable on Haiku. * src/filelock.c (WTMP_FILE): Only define if BOOT_TIME is also defined. * src/floatfns.c (double_integer_scale): Work around Haiku libroot brain damage. * src/font.c (syms_of_font): Define appropriate font driver symbols for Haiku builds with various options. * src/font.h: Also enable ftcrfont on Haiku builds with Cairo. (font_data_structures_may_be_ill_formed): Also enable on Haiku builds that have Cairo. * src/frame.c (Fframep): Update doc-string for Haiku builds and return haiku if appropriate. (syms_of_frame): New symbol `haiku'. * src/frame.h (struct frame): Add output data for Haiku. (FRAME_HAIKU_P): New macro. (FRAME_WINDOW_P): Test for Haiku frames as well. * src/ftcrfont.c (RED_FROM_ULONG, GREEN_FROM_ULONG) (BLUE_FROM_ULONG): New macros. (ftcrfont_draw): Add haiku specific code for Haiku builds with Cairo. * src/ftfont.c (ftfont_open): Set face. (ftfont_has_char, ftfont_text_extents): Work around crash. (syms_of_ftfont): New symbol `mono'. * src/ftfont.h (struct font_info): Enable Cairo-specific fields for Cairo builds on Haiku. * src/haiku_draw_support.cc: * src/haiku_font_support.cc: * src/haiku_io.c: * src/haiku_select.cc: * src/haiku_support.cc: * src/haiku_support.h: * src/haikufns.c: * src/haikufont.c: * src/haikugui.h: * src/haikuimage.c: * src/haikumenu.c: * src/haikuselect.c: * src/haikuselect.h: * src/haikuterm.c: * src/haikuterm.h: Add new files for Haiku windowing support. * src/haiku.c: Add new files for Haiku operating system support. * src/image.c: Implement image transforms and native XPM support on Haiku. (GET_PIXEL, PUT_PIXEL, NO_PIXMAP) (PIX_MASK_RETAIN, PIX_MASK_DRAW) (RGB_TO_ULONG, RED_FROM_ULONG, GREEN_FROM_ULONG) (BLUE_FROM_ULONG, RED16_FROM_ULONG, GREEN16_FROM_ULONG) (BLUE16_FROM_ULONG): Define to appropriate values on Haiku. (image_create_bitmap_from_data): Add Haiku support. (image_create_bitmap_from_file): Add TODO on Haiku. (free_bitmap_record): Free bitmap on Haiku. (image_size_in_bytes): Implement for Haiku bitmaps. (image_set_transform): Implement on Haiku. (image_create_x_image_and_pixmap_1): Implement on Haiku, 24-bit or 1-bit only. (image_destroy_x_image, image_get_x_image): Use correct img and pixmap values on Haiku. (lookup_rgb_color): Use correct macro on Haiku. (image_to_emacs_colors): Implement on Haiku. (image_disable_image): Disable on Haiku. (image_can_use_native_api): Test for translator presence on Haiku. (native_image_load): Use translator on Haiku. (imagemagick_load_image): Add Haiku-specific quirks. (Fimage_transforms_p): Allow rotate90 on Haiku. (image_types): Enable native XPM support on Haiku. (syms_of_image): Enable XPM images on Haiku. * src/keyboard.c (kbd_buffer_get_event) (handle_async_input, handle_input_available_signal) (handle_user_signal, Fset_input_interrupt_mode) (init_keyboard): Check for USABLE_SIGPOLL along with USABLE_SIGIO. * src/lisp.h (pD): Work around broken Haiku headers. (HAVE_EXT_MENU_BAR): Define on Haiku. (handle_input_available_signal): Enable if we just have SIGPOLL as well. * src/menu.c (have_boxes): Return true on Haiku. (single_menu_item): Enable toolkit menus on Haiku. (find_and_call_menu_selection): Also enable on Haiku. * src/process.c (keyboard_bit_set): Enable with only usable SIGPOLL. (wait_reading_process_output): Test for SIGPOLL as well as SIGIO availability. * src/sound.c (sound_perror, vox_open) (vox_configure, vox_close): Enable for usable SIGPOLL as well. * src/sysdep.c (sys_subshell): Enable for usable SIGPOLL. (reset_sigio): Make conditional on F_SETOWN. (request_sigio, unrequest_sigio) (emacs_sigaction_init): Also handle SIGPOLLs. (init_sys_modes): Disable TCXONC usage on Haiku, as it doesn't have any ttys other than pseudo ttys, which don't support C-s/C-q flow control, and causes compiler warnings. (speeds): Disable high speeds if HAVE_TINY_SPEED_T. * src/termhooks.h (enum output_method): Add output_haiku. (struct terminal): Add Haiku display info. (TERMINAL_FONT_CACHE): Enable for Haiku. * src/terminal.c (Fterminal_live_p): Return `haiku' if appropriate. * src/verbose.mk.in (AM_V_CXX, AM_V_CXXLD): New logging variables. * src/xdisp.c (redisplay_internal) (note_mouse_highlight): Return on Haiku if a popup is activated. (display_menu_bar): Return on Haiku if frame is a Haiku frame. * src/xfaces.c (GCGraphicsExposures): Enable correctly on Haiku. (x_create_gc): Enable dummy GC code on Haiku. * src/xfns.c (x-server-version, x-file-dialog): Add Haiku specifics to doc strings. * src/xterm.c (syms_of_xterm): Add Haiku information to doc string.
160 lines
6 KiB
Text
160 lines
6 KiB
Text
Emacs machines list
|
||
|
||
Copyright (C) 1989-1990, 1992-1993, 1998, 2001-2021 Free Software
|
||
Foundation, Inc.
|
||
See the end of the file for license conditions.
|
||
|
||
This is a list of the status of GNU Emacs on various machines and systems.
|
||
|
||
Information about older releases, and platforms that are no longer
|
||
supported, has been removed. Consult older versions of this file if
|
||
you are interested in this information.
|
||
|
||
The 'configure' script uses the configuration name, and the results of
|
||
testing the system, to decide which options to use in src/config.h and
|
||
elsewhere (eg Makefiles).
|
||
|
||
If you add support for a new configuration, add a section to this
|
||
file, and edit the 'configure.ac' source as needed.
|
||
|
||
Some obsolete platforms are unsupported beginning with Emacs 23.1. See
|
||
the list at the end of this file.
|
||
|
||
|
||
* Here are notes about some of the systems supported:
|
||
|
||
** GNU/Linux
|
||
|
||
Most of the complete systems which use the Linux kernel are close
|
||
enough to the GNU system to be considered variant GNU systems. We
|
||
call them "Linux-based GNU systems," or GNU/Linux for short.
|
||
|
||
It is not coincidence that many of the other components used with
|
||
Linux--including GNU Emacs--were developed specifically for the GNU
|
||
project. The GNU project was launched in 1984 to develop a free
|
||
complete Unix-like operating system. To reach this goal, we had to
|
||
develop whatever system components were not available as freely
|
||
redistributable software from some other source.
|
||
|
||
The GNU project wants users of GNU/Linux systems to be aware of how
|
||
these systems relate to the GNU project, because that will help
|
||
spread the GNU idea that software should be free--and thus encourage
|
||
people to write more free software. For more information, see
|
||
<https://www.gnu.org/gnu/linux-and-gnu.html>.
|
||
|
||
*** 64-bit GNU/Linux
|
||
|
||
No special procedures should be needed to build a 64-bit Emacs on a
|
||
64-bit GNU/Linux system. To build a 32-bit Emacs, first ensure that
|
||
the necessary 32-bit system libraries and include files are
|
||
installed. Then use:
|
||
|
||
./configure CC='gcc -m32' --build=i386-linux-gnu \
|
||
--x-libraries=/usr/X11R6/lib
|
||
|
||
(using the location of the 32-bit X libraries on your system).
|
||
|
||
*** IBM System/390 running GNU/Linux (s390-*-linux-gnu)
|
||
|
||
As of Emacs 21.2, a 31-bit only version is supported on this system.
|
||
|
||
*** SuperH (sh[34]*-*-linux-gnu)
|
||
|
||
Emacs 23.0.60 was reported to work on GNU/Linux (October 2008).
|
||
This was tested on a little-endian sh4 system (cpu type SH7751R) running
|
||
Gentoo Linux 2008.0.
|
||
|
||
** macOS
|
||
|
||
Mac OS X 10.6 or newer. Both AArch64 (Arm) and x86-64 systems are
|
||
supported, but PowerPC is not supported. For installation
|
||
instructions see the file nextstep/INSTALL.
|
||
|
||
** Microsoft Windows
|
||
|
||
For installation instructions see the file nt/INSTALL.
|
||
|
||
** MS-DOS
|
||
|
||
For installation instructions see the file msdos/INSTALL.
|
||
See the "MS-DOS" chapter of the manual for information about using
|
||
Emacs on MS-DOS.
|
||
|
||
** Solaris
|
||
|
||
On Solaris it is also possible to use either GCC or Oracle Developer
|
||
Studio to build Emacs, by pointing ./configure to the right compiler:
|
||
|
||
./configure # Defaults to 'gcc' if available.
|
||
./configure CC='cc' # Oracle Developer Studio
|
||
|
||
On Solaris, do not use /usr/ucb/cc. Use Oracle Developer Studio.
|
||
Make sure that /usr/ccs/bin and the Oracle Developer Studio bin
|
||
directory (e.g., /opt/developerstudio12.6/bin) are in your PATH
|
||
before /usr/ucb. (Most free software packages have the same
|
||
requirement on Solaris.) With this compiler, use 'cc -E' as the
|
||
preprocessor. If this inserts extra whitespace into its output (see
|
||
the PROBLEMS file), add the option '-Xs'.
|
||
|
||
To build a 64-bit Emacs (with larger maximum buffer size) on a
|
||
Solaris system that defaults to 32-bit executables, specify the -m64
|
||
compiler option. For example:
|
||
|
||
./configure CC='gcc -m64' # GCC
|
||
./configure CC='cc -m64' # Oracle Developer Studio
|
||
|
||
** Haiku
|
||
|
||
On 32-bit Haiku it is required that the newer GCC 8 be used, instead
|
||
of the legacy GCC 2 used by default. This can be achieved by
|
||
invoking configure inside a shell launched by the 'setarch' program
|
||
invoked as 'setarch x86'.
|
||
|
||
When building with packages discovered through pkg-config, such as
|
||
libpng, on a GCC 2/GCC 8 hybrid system, simply evaluating 'setarch
|
||
x86' is insufficient to ensure that all required libraries are found
|
||
at their correct locations. To avoid this problem, set the
|
||
environment variable 'PKG_CONFIG_PATH' to the GCC 8 pkg-config
|
||
directory at '/system/develop/lib/x86/pkgconfig/' before configuring
|
||
Emacs.
|
||
|
||
If GCC complains about not being able to resolve symbols such as
|
||
"BHandler::LockLooper", you are almost certainly experiencing this
|
||
problem.
|
||
|
||
Haiku running on non-x86 systems has not been tested. It is
|
||
anticipated that Haiku running on big-endian systems will experience
|
||
problems when Emacs is built with Haiku windowing support, but there
|
||
doesn't seem to be any reliable way to get Haiku running on a
|
||
big-endian system at present.
|
||
|
||
The earliest release of Haiku that will successfully compile Emacs
|
||
is R1/Beta2. For windowing support, R1/Beta3 or later is required.
|
||
|
||
|
||
* Obsolete platforms
|
||
|
||
Support for many obsolete platforms was removed in Emacs 23.1.
|
||
If for some reason you encounter an ancient machine where current
|
||
Emacs does not compile, try an older release like Emacs 22.3.
|
||
|
||
|
||
Local variables:
|
||
mode: outline
|
||
fill-prefix: " "
|
||
End:
|
||
|
||
This file is part of GNU Emacs.
|
||
|
||
GNU Emacs is free software: you can redistribute it and/or modify
|
||
it under the terms of the GNU General Public License as published by
|
||
the Free Software Foundation, either version 3 of the License, or
|
||
(at your option) any later version.
|
||
|
||
GNU Emacs is distributed in the hope that it will be useful,
|
||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License
|
||
along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|