# -*- Makefile -*- # $Id: xfig.mk.in.in,v 1.14 2010/03/12 21:21:41 dan Exp $ # # Makefile fragment for processing xfig files to produce postscript # # Copyright (c) 2002, 2003, 2004, 2005, 2006 Dan McMahill # All rights reserved. # # This code is derived from software written by Dan McMahill # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. All advertising materials mentioning features or use of this software # must display the following acknowledgement: # This product includes software developed by Dan McMahill # 4. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED # AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # ####################################### # # README: # # To use this makefile fragment, set the variable: # XFIGSRCS = the xfig drawing files (.fig files) # in your top level Makefile. You can also specify # XFIGDIRS which is a list of directories containing # xfig files. All xfig files in the specified directories # are added to XFIGSRCS # # The following variables may be overridden in your top level Makefile # # FIG2DEV = the fig2dev executable # FIG2DEV_FLAGS = flags passed to fig2dev for all exporting # FIG2DEV_EPS_FLAGS = flags passed to fig2dev for exporting to eps # FIG2DEV_PDF_FLAGS = flags passed to fig2dev for exporting to pdf # ####################################### # how to call fig2dev to convert xfig files to postscript FIG2DEV?= @FIG2DEV@ FIG2DEV_FLAGS?= FIG2DEV_EPS_FLAGS?= -L eps FIG2DEV_PDF_FLAGS?= -L pdf ####################################### # # Process XFIGDIRS, adding to XFIGSRCS # ####################################### BMK:.if defined(XFIGDIRS) BMK:.for __tmp__ in ${XFIGDIRS} BMK:.if exists(${__tmp__}) BMK:_XFIG_ADD_${__tmp__}!= ls ${__tmp__}/*.fig BMK:XFIGSRCS+= ${_XFIG_ADD_${__tmp__}} BMK:.endif BMK:.endfor BMK:.endif GMK:ifdef XFIGDIRS GMK:XFIGSRCS+= $(foreach __tmp__,$(XFIGDIRS),$(wildcard $(__tmp__)/*.fig)) GMK:endif ####################################### # # Process proj_XFIGDIRS, adding to proj_XFIGSRCS # ####################################### BMK:.for __name__ in ${NAME} BMK:.if defined(${__name__}_XFIGDIRS) BMK:.for __tmp__ in ${${__name__}_XFIGDIRS} BMK:.if exists(${__tmp__}) BMK:_XFIG_ADD2_${__tmp__}!= ls ${__tmp__}/*.fig BMK:${__name__}_XFIGSRCS+= ${_XFIG_ADD2_${__tmp__}} BMK:.endif BMK:.endfor BMK:.endif BMK:.endfor GMK:define xfigdirs_template GMK:ifdef $(1)_XFIGDIRS GMK:$(1)_XFIGSRCS+= $(foreach __tmp2__,$($(1)_XFIGDIRS),$(wildcard $(__tmp2__)/*.fig)) GMK:endif GMK:endef GMK:$(foreach __tmp__,$(NAME),$(eval $(call xfigdirs_template,$(__tmp__)))) ####################################### # # Process proj_XFIGSRCS to add to # proj_OTHER dependencies # ####################################### # if we are using pdflatex, then don't bother with the .eps files # but create .pdf files instead BMK:.if defined(USE_PDFLATEX) GMK:ifdef USE_PDFLATEX XFIGOBJS?= $(XFIGSRCS:.fig=.pdf) BMK:.else GMK:else XFIGOBJS?= $(XFIGSRCS:.fig=.eps) BMK:.endif GMK:endif ALLXFIGOBJS+= $(XFIGOBJS) BMK:.for __tmp__ in ${NAME} BMK:.if defined(${__tmp__}_XFIGSRCS) BMK:.if defined(USE_PDFLATEX) BMK:${__tmp__}_XFIGOBJS?= ${${__tmp__}_XFIGSRCS:.fig=.pdf} BMK:.else BMK:${__tmp__}_XFIGOBJS?= ${${__tmp__}_XFIGSRCS:.fig=.eps} BMK:.endif BMK:${__tmp__}_OTHER+= ${${__tmp__}_XFIGOBJS} BMK:ALLXFIGOBJS+= ${${__tmp__}_XFIGOBJS} BMK:.endif BMK:${__tmp__}_DIST+= ${${__tmp__}_XFIGSRCS} ${XFIGSRCS} BMK:.endfor GMK:# note, this had to be done in two steps (create proj_XFIGOBJS, GMK:# and then add to proj_OTHER and ALLXFIGOBJS) with GNU make 3.80 GMK:# don't really know why. GMK:define xfigobjs_template GMK:ifdef $(1)_XFIGSRCS GMK:ifdef USE_PDFLATEX GMK:$(1)_XFIGOBJS?= ${$(1)_XFIGSRCS:.fig=.pdf} GMK:else GMK:$(1)_XFIGOBJS?= ${$(1)_XFIGSRCS:.fig=.eps} GMK:endif GMK:endif GMK:$(1)_DIST+= ${$(1)_XFIGSRCS} ${XFIGSRCS} GMK:endef GMK:$(foreach __tmp__,$(NAME),$(eval $(call xfigobjs_template,$(__tmp__)))) GMK:define xfigdeps_template GMK:ifdef $(1)_XFIGSRCS GMK:$(1)_OTHER+= ${$(1)_XFIGOBJS} GMK:ALLXFIGOBJS+= ${$(1)_XFIGOBJS} GMK:endif GMK:endef GMK:$(foreach __tmp__,$(NAME),$(eval $(call xfigdeps_template,$(__tmp__)))) ####################################### # # Add the dependencies # ####################################### OTHER+= $(XFIGOBJS) all:: $(ALLXFIGOBJS) clean:: BMK:.for __tmp__ in $(ALLXFIGOBJS) BMK: $(RM) -f $(__tmp__:Q) BMK:.endfor GMK: $(RM) -f $(ALLXFIGOBJS) ####################################### # # The suffix rules # ####################################### .SUFFIXES : .fig .eps .pdf .fig.eps : BMK: $(FIG2DEV:Q) $(FIG2DEV_FLAGS) $(FIG2DEV_EPS_FLAGS) $*.fig $*.eps GMK: $(FIG2DEV) $(FIG2DEV_FLAGS) $(FIG2DEV_EPS_FLAGS) $*.fig $*.eps .fig.pdf : BMK: $(FIG2DEV:Q) $(FIG2DEV_FLAGS) $(FIG2DEV_PDF_FLAGS) $*.fig $*.pdf GMK: $(FIG2DEV) $(FIG2DEV_FLAGS) $(FIG2DEV_PDF_FLAGS) $*.fig $*.pdf