mu4e: install non-byte-compiled elisp files
Even when we're not able to byte-compile some elisp files (mu4e-transient, mu4e-dbus), we should still install the corresponding el file, as the runtime emacs may be able to use it. Issue #2894.
This commit is contained in:
@ -73,18 +73,27 @@ mu4e_srcs=[
|
|||||||
'mu4e.el'
|
'mu4e.el'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# 'bc'->byte-compile. The above should always be byte-compiled.
|
||||||
|
mu4e_bc_srcs = mu4e_srcs
|
||||||
|
|
||||||
# emacs 28 is guaranteed to have transient
|
# emacs 28 is guaranteed to have transient
|
||||||
# not very elegant, but
|
# not very elegant, but
|
||||||
# https://stackoverflow.com/questions/49221792/byte-compile-file-only-when-library-is-found
|
# https://stackoverflow.com/questions/49221792/byte-compile-file-only-when-library-is-found
|
||||||
|
mu4e_srcs += 'mu4e-transient.el'
|
||||||
if emacs28.found()
|
if emacs28.found()
|
||||||
mu4e_srcs += 'mu4e-transient.el'
|
mu4e_bc_srcs += 'mu4e-transient.el'
|
||||||
|
else
|
||||||
|
message('mu4e-transient.el cannot be byte-compiled')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# do have we have dbus support?
|
# do have we have dbus support?
|
||||||
|
mu4e_srcs += 'mu4e-dbus.el'
|
||||||
emacs_dbus = run_command(emacs, '--batch', '--eval', '(kill-emacs (if (featurep \'dbusbind) 0 1))',
|
emacs_dbus = run_command(emacs, '--batch', '--eval', '(kill-emacs (if (featurep \'dbusbind) 0 1))',
|
||||||
check: false)
|
check: false)
|
||||||
if emacs_dbus.returncode() == 0
|
if emacs_dbus.returncode() == 0
|
||||||
mu4e_srcs += 'mu4e-dbus.el'
|
mu4e_bc_srcs += 'mu4e-dbus.el'
|
||||||
|
else
|
||||||
|
message('mu4e-dbus.el cannot be byte-compiled')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# note, we cannot compile mu4e-config.el without incurring
|
# note, we cannot compile mu4e-config.el without incurring
|
||||||
@ -94,17 +103,13 @@ endif
|
|||||||
#
|
#
|
||||||
#... so let's not do that!
|
#... so let's not do that!
|
||||||
|
|
||||||
foreach src : mu4e_srcs
|
# byte compile the sources that can be byte-compiled. This may exclude mu4e-transient.el and
|
||||||
|
# mu4e-dbus.el
|
||||||
|
foreach src : mu4e_bc_srcs
|
||||||
target_name= '@BASENAME@.elc'
|
target_name= '@BASENAME@.elc'
|
||||||
target_path = join_paths(meson.current_build_dir(), target_name)
|
target_path = join_paths(meson.current_build_dir(), target_name)
|
||||||
target_func = '(setq byte-compile-dest-file-function(lambda(_) "' + target_path + '"))'
|
target_func = '(setq byte-compile-dest-file-function(lambda(_) "' + target_path + '"))'
|
||||||
|
|
||||||
# hack-around for native compile issue: copy sources to builddir.
|
|
||||||
# see: https://debbugs.gnu.org/db/47/47987.html
|
|
||||||
configure_file(input: src, output:'@BASENAME@.el', copy:true,
|
|
||||||
install_mode: 'r--r--r--')
|
|
||||||
# seems meson ignores 'install_mode' for copy (1.5.1, 1.6.1)
|
|
||||||
|
|
||||||
custom_target(src.underscorify() + '_el',
|
custom_target(src.underscorify() + '_el',
|
||||||
build_by_default: true,
|
build_by_default: true,
|
||||||
input: src,
|
input: src,
|
||||||
@ -125,6 +130,14 @@ foreach src : mu4e_srcs
|
|||||||
'--funcall', 'batch-byte-compile', '@INPUT@'])
|
'--funcall', 'batch-byte-compile', '@INPUT@'])
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
|
# hack-around for native compile issue: copy sources to builddir.
|
||||||
|
# see: https://debbugs.gnu.org/db/47/47987.html
|
||||||
|
foreach src : mu4e_srcs
|
||||||
|
configure_file(input: src, output:'@BASENAME@.el', copy:true,
|
||||||
|
install_mode: 'r--r--r--')
|
||||||
|
# seems meson ignores 'install_mode' for copy (1.5.1, 1.6.1)
|
||||||
|
endforeach
|
||||||
|
|
||||||
# this depends on the above hack: all mu4e elisp files needs to be in builddir
|
# this depends on the above hack: all mu4e elisp files needs to be in builddir
|
||||||
mu4e_autoloads = configure_file(
|
mu4e_autoloads = configure_file(
|
||||||
output: 'mu4e-autoloads.el',
|
output: 'mu4e-autoloads.el',
|
||||||
|
|||||||
Reference in New Issue
Block a user