|--==> "BW" == Ben Wing <ben(a)666.com> writes:
BW> instead of doing this, you should rewrite XEmacs.rules so that auto-autoloads.el
BW> etc. always get
BW> added BEFORE anything in EARLY_GENERATED_LISP, e.g.
BW> EARLY_GENERATED_LISP := auto-autoloads.el ... $(EARLY_GENERATED_LISP)
OK, I think?
BW> the whole point of the rewrite was to eliminate assumptions from the Makefiles,
BW> and you've just added them back in [e.g. that files named
`auto-autoloads.el'
BW> and `custom-load.el' exist and that these are the only files that get built
BW> automatically at this stage -- what about custom-defines.el, for example?]
I tried to set up XEmacs.rules so that custom-defines.el is only built
if XEMACS_21_5 is 't' _AND_ a custom-load.el exists.
BW> as a general rule:
BW> -- no rules in package Makefiles
Fair enough.
BW> -- no mention of auto-autoloads.el or custom-load.el
I can't see how this can work. Every package without exception has a
auto-autoloads.el, but *MANY* packages *DON'T* have a custom-load.el.
So if you specify both in EARLY_GENERATED_LISP the install targets
(install, bindist) will fail when they try to copy a non-existent
custom-load.el.
What if we made the autoloads target touch(1) custom-load.el? Then we
could unconditionally specify custom-load.el in EARLY_GENERATED_LISP.
Would this cause any problems?
To clarify, in XEmacs.rules, you'd have:
EARLY_GENERATED_LISP = $(AUTOLOAD_PATH)/auto-autoloads.el \
$(AUTOLOAD_PATH)/custom-load.el
ifeq ($(XEMACS_21_5),t)
EARLY_GENERATED_LISP += $(AUTOLOAD_PATH)/custom-defines.el
endif
[...]
ifeq ($(XEMACS_21_5),t)
$(AUTOLOAD_PATH)/auto-autoloads.el: $(GENERATED_ELC_DEPENDENCIES)
$(AUTOLOAD_PATH)/_pkg.el
$(XEMACS) $(BATCH) -no-autoloads \
-l autoload -f batch-update-directory-autoloads \
$(PACKAGE) $(AUTOLOAD_PATH)
@touch $(AUTOLOAD_PATH)/custom-load.el
@rm -f $(AUTOLOAD_PATH)/auto-autoloads.el~
$(AUTOLOAD_PATH)/custom-defines.el: $(GENERATED_ELC_DEPENDENCIES)
$(XEMACS) $(BATCH) -no-autoloads \
-l autoload -f batch-update-directory-custom-defines \
$(PACKAGE) $(AUTOLOAD_PATH)
@rm -f $(AUTOLOAD_PATH)/custom-defines.el~
else
AUTOLOAD_PACKAGE_NAME = (setq autoload-package-name \"$(PACKAGE)\")
AUTOLOAD_FILE = (setq generated-autoload-file \
\"$(AUTOLOAD_PATH)/auto-autoloads.el\")
$(AUTOLOAD_PATH)/auto-autoloads.el: $(GENERATED_ELC_DEPENDENCIES)
$(AUTOLOAD_PATH)/_pkg.el
$(XEMACS) $(BATCH) -no-autoloads \
-eval "$(AUTOLOAD_PACKAGE_NAME)" \
-eval "$(AUTOLOAD_FILE)" \
-l autoload -f batch-update-autoloads $^
@touch $(AUTOLOAD_PATH)/custom-load.el
@rm -f $(AUTOLOAD_PATH)/auto-autoloads.el~
endif
In most package Makefiles you wouldn't need anything special.
In packages like Liece, for example, you'd have:
EARLY_GENERATED_LISP += $(AUTOLOAD_PATH)/liece-setup.el
Ben, would this be OK?
--
|---<Steve Youngs>---------------<GnuPG KeyID: 10D5C9C5>---|
| XEmacs - It's not just an editor. |
| It