Mercurial > hg > xemacs-beta
view lwlib/Makefile.in.in @ 5566:4654c01af32b
Improve the implementation, documentation of #'labels, #'flet.
lisp/ChangeLog addition:
2011-09-07 Aidan Kehoe <kehoea@parhasard.net>
* bytecomp.el:
* bytecomp.el (for-effect): Move this earlier in the file, it's
referenced in byte-compile-initial-macro-environment.
* bytecomp.el (byte-compile-initial-macro-environment):
In the byte-compile-macro-environment definition for #'labels, put
off the compiling the lambda bodies until the point where the rest
of the form is being compiled, allowing the lambda bodies to
access appropriate values for byte-compile-bound-variables, and
reducing excessive warning about free variables.
Add a byte-compile-macro-environment definition for #'flet. This
modifies byte-compile-function-environment appropriately, and
warns about bindings of functions that have macro definitions in
the current environment, about functions that have byte codes, and
about functions that have byte-compile methods (which may not do
what the user wants at runtime).
* bytecomp.el (byte-compile-funcall):
If FUNCTION is constant, call #'byte-compile-callargs-warn if
that's appropriate, giving warnings about problems with calling
functions bound with #'labels.
* cl-macs.el:
* cl-macs.el (flet):
Mention the main difference from Common Lisp, that the bindings
are dynamic, not lexical. Counsel the use of #'labels, not #'flet,
for this and other reasons. Explain the limited single use case for
#'flet. Cross-reference to bytecomp.el in a comment.
* cl-macs.el (labels):
Go into detail on which functions may be called from
where. Explain how to access the function definition of a label
within FORM. Add a comment cross-referencing to bytecomp.el.
man/ChangeLog addition:
2011-09-07 Aidan Kehoe <kehoea@parhasard.net>
* cl.texi (Function Bindings):
Move #'labels first, describe it in more detail, explaining that
it is to be preferred over #'flet, and explaining why.
Explain that dynamic bindings with #'flet will also not work when
functions are accessed through their bytecodes.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Wed, 07 Sep 2011 16:26:45 +0100 |
parents | 4aa8ee813265 |
children |
line wrap: on
line source
## Makefile for Lucid Widget Library ## Copyright (C) 1994 Lucid, Inc. ## Copyright (C) 1995 Tinker Systems and INS Engineering Corp. ## Copyright (C) 1994, 1995 Board of Trustees, University of Illinois ## Copyright (C) 1996, 1997 Sun Microsystems, Inc. ## Copyright (C) 2005 Ben Wing. ## This file is part of Lucid Widget Library. ## The Lucid Widget Library 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. ## The Lucid Widget Library 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 the Lucid Widget Library. If not, see ## <http://www.gnu.org/licenses/>. DESTDIR= ## For performance and consistency, no built-in rules .SUFFIXES: .SUFFIXES: .c .h .o .i .s srcdir=@srcdir@ @SET_MAKE@ SHELL=/bin/sh RM = rm -f AR = ar cq CC=@XEMACS_CC@ CPP=@CPP@ CFLAGS=@XE_CFLAGS@ CPPFLAGS=@CPPFLAGS@ RANLIB=@RANLIB@ #define NOT_C_CODE #include "../src/config.h" #ifdef USE_GNU_MAKE vpath %.c @srcdir@ vpath %.h @srcdir@ #else VPATH=@srcdir@ #endif objs = lwlib.o lwlib-utils.o lwlib-colors.o lwlib-fonts.o @lwlib_objs@ all: liblw.a c_switch_all=@c_switch_all@ cppflags = $(CPPFLAGS) -I. -I$(srcdir)/../src $(c_switch_all) cflags = $(CFLAGS) $(cppflags) #ifdef SOLARIS2 %.o : %.c #else .c.o: #endif $(CC) -c $(cflags) $< ## Create preprocessor output (debugging purposes only) .c.i: #ifdef __GNUC__ $(CC) -E $(cppflags) -o $@ $< #else /* works on Solaris; what about other systems? */ $(CC) -P $(cppflags) $< #endif /* compiler */ ## Create assembler output (debugging purposes only) .c.s: $(CC) -S -c $(cflags) $< liblw.a: $(objs) $(RM) $@ $(AR) $@ $(objs) @-test -n "$(RANLIB)" && $(RANLIB) $@ .PHONY: mostlyclean clean distclean realclean extraclean .PHONY: distclean-noconfig realclean-noconfig extraclean-noconfig mostlyclean: -$(RM) liblw.a liblw_pure_*.a *.o *.i core clean: mostlyclean distclean-noconfig: clean -$(RM) config.h TAGS ## This is used in making a distribution. ## Do not use it on development directories! distclean: distclean-noconfig -$(RM) GNUmakefile Makefile Makefile.in realclean-noconfig: distclean-noconfig realclean: distclean extraclean-noconfig: realclean-noconfig -$(RM) *~ \#* extraclean: realclean -$(RM) *~ \#* CONFIG_H = ../src/config.h config.h ## Following correct as of 19980312 lwlib-Xaw.o: $(CONFIG_H) lwlib-Xaw.h lwlib-internal.h lwlib.h xlwmenu.h xlwradio.h \ xlwgauge.h xlwcheckbox.h lwlib-Xlw.o: $(CONFIG_H) lwlib-Xlw.h lwlib-internal.h lwlib.h xlwmenu.h xlwscrollbar.h \ xlwtabs.h xlwgcs.h lwlib-Xm.o: $(CONFIG_H) lwlib-Xm.h lwlib-internal.h lwlib-utils.h lwlib.h xlwmenu.h lwlib-utils.o: $(CONFIG_H) lwlib-utils.h lwlib-colors.o: $(CONFIG_H) lwlib-colors.h lwlib-fonts.o: $(CONFIG_H) lwlib-fonts.h lwlib.o: $(CONFIG_H) lwlib-Xaw.h lwlib-Xlw.h lwlib-Xm.h lwlib-internal.h lwlib-utils.h lwlib.h xlwmenu.h xlwmenu.o: $(CONFIG_H) lwlib.h xlwmenu.h xlwmenuP.h xlwscrollbar.o: $(CONFIG_H) xlwscrollbar.h xlwscrollbarP.h xlwtabs.o: $(CONFIG_H) xlwtabs.h xlwtabsP.h xlwradio.o: $(CONFIG_H) xlwradio.h xlwradioP.h xlwcheckbox.o: $(CONFIG_H) xlwcheckbox.h xlwcheckboxP.h xlwgauge.o: $(CONFIG_H) xlwgauge.h xlwgaugeP.h xlwgcs.o: $(CONFIG_H) xlwgcs.h