[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] Export major version of latest Emacs supported by emacs-module.h

From: Philipp Stephani
Subject: [PATCH] Export major version of latest Emacs supported by emacs-module.h.
Date: Wed, 24 Apr 2019 10:31:40 +0200

This is useful if module authors want to support multiple versions of

* configure.ac (emacs_major_version): Define substitution.

* src/emacs-module.h.in (EMACS_MAJOR_VERSION): Define macro.

* doc/lispref/internals.texi (Module Initialization): Document
EMACS_MODULE_VERSION preprocessor macro.
 configure.ac               |  2 ++
 doc/lispref/internals.texi | 11 +++++++++++
 etc/NEWS                   |  3 +++
 src/emacs-module.h.in      |  2 ++
 4 files changed, 18 insertions(+)

diff --git a/configure.ac b/configure.ac
index 810c3219e4..79fe0c98c6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3697,6 +3697,8 @@ AC_DEFUN
 ### Use -lpng if available, unless '--with-png=no'.
diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi
index 25892d4b57..d4adb1d7d9 100644
--- a/doc/lispref/internals.texi
+++ b/doc/lispref/internals.texi
@@ -1191,6 +1191,17 @@ Module Initialization
 can use only the parts of the module @acronym{API} that existed in
 that version, since those parts are identical in later versions.
address@hidden defines a preprocessor macro
address@hidden  It expands to an integer literal which
+is the latest major version of Emacs supported by the header.
address@hidden Info}.  Note that the value of
address@hidden is a compile-time constant and does not
+represent the version of Emacs that is currently running and has
+loaded your module.  If you want your module to be compatible with
+various versions of @file{emacs-module.h} as well as various versions
+of Emacs, you can use conditional compilation based on
 We recommend that modules always perform the compatibility
 verification, unless they do their job entirely in the initialization
 function, and don't access any Lisp objects or use any Emacs functions
diff --git a/etc/NEWS b/etc/NEWS
index b13ab47768..483f1dc958 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1910,6 +1910,9 @@ returns a regexp that never matches anything, which is an 
identity for
 this operation.  Previously, the empty string was returned in this
+** emacs-module.h now defines a macro EMACS_MAJOR_VERSION that expands
+to the major version of the latest Emacs supported by the header.
 * Changes in Emacs 27.1 on Non-Free Operating Systems
diff --git a/src/emacs-module.h.in b/src/emacs-module.h.in
index 009d1583fe..dad4453cd8 100644
--- a/src/emacs-module.h.in
+++ b/src/emacs-module.h.in
@@ -27,6 +27,8 @@ along with GNU Emacs.  If not, see 
<https://www.gnu.org/licenses/>.  */
 #include <stdbool.h>
+#define EMACS_MAJOR_VERSION @emacs_major_version@
 #if defined __cplusplus && __cplusplus >= 201103L
 # define EMACS_NOEXCEPT noexcept
2.20.1 (Apple Git-117)

reply via email to

[Prev in Thread] Current Thread [Next in Thread]