[tex-live] Build/source/Makefile oddity in all target

Joachim Schrod jschrod at acm.org
Thu Jun 28 11:47:10 CEST 2007


In Build/source/Makefile.in we have:

all: @LIBSDEP@
all clean mostlyclean:
	esubdirs="$(LIBSDIRS) $(ESUBDIRS)"; \
	  for dir in $$esubdirs; do \
	    echo making $@ in $$dir; \
	    (if test -f $$dir/Makefile; then cd $$dir && $(MAKE) $@; else 
true; fi) || exit 1; \

where the first line expands to

all:  $(ZLIBDIR)/libz.a $(LIBPNGDIR)/libpng.a  $(LIBT1DIR)/libt1.a 
$(LIBT1DIR)/../type1/libtype1.a   $(FREETYPE2DIR)/.libs/libfreetype.a

in the generated Makefile. I'd like to inquire about the intent of 

$(LIBDIRS) has all the library directories that are in @LIBSDEP@, 
so these libraries will be made by the recursion in the all action 
anyhow. Nothing else is done before. So why was the @LIBSDEP@ 
dependency added explicitly?

That said, I find the target in itself very convenient: Currently I 
work only on drivers and not on anything web2c related. I.e., I 
don't want to compile the whole web2c shebang just to change the 
source of a dvi driver. When I change the first dependency line to

lib: @LIBSDEP@

(and maybe add lib as dependency to the rule below, even though 
that's superfluous owing to the recursion into $(LIBSDIRS)), then 
I'm able to call "make lib" in Build/source and thus get all 
prerequisites done to be able to go into a specific subdirectory 
(say, texk/dviljk/) and use make there without further problems.

Maybe such a change would meet general agreement by you?

Best, and TIA for any answer,


Joachim Schrod				Email: jschrod at acm.org
Roedermark, Germany

More information about the tex-live mailing list