Re: how to do this with Makefile

Pascal Bourguignon <[email protected]>
Newsgroups gmane.comp.gnu.utils
Organization Informatimago
Message-ID <[email protected]>
"FangQ" <[email protected]> writes:

> hi
>
> I am writing a Makefile to convert a bdf file into different pcf files
> corresponding to different unicode ranges, the striped down version of
> my Makefile looks like the following
>
> B2P=bdftopcf
> SLICE=bdfmerge.pl
>
> CJKBASIC=0x4E00--0x9FA5
> CJKEXTA=0x3400--0x4DB5
> CJK1=0x1100--0x11FF 0x2460--0x24EA
> CJK2=0x2605--0x2606 0x262F--0x2637
> CJK3=0x3105--0x312C 0x3131--0x318E
>
> RANGE=$(CJKBASIC) $(CJKEXTA) $(CJK1) $(CJK2) $(CJK3)
>
> cjk0: RANGE=$(CJKBASIC)
> cjka: RANGE=$(CJKEXTA)
> cjk: $(SLICE)
> 	$(SLICE) $(RANGE) $(R9).bdf  > $(R9)_cjk.bdf
> 	$(SLICE) $(RANGE) $(R10).bdf > $(R10)_cjk.bdf
> 	$(SLICE) $(RANGE) $(R11).bdf > $(R11)_cjk.bdf
> 	$(B2P) $(R9)_cjk.bdf  > $(R9).pcf
> 	$(B2P) $(R10)_cjk.bdf > $(R10).pcf
> 	$(B2P) $(R11)_cjk.bdf > $(R11).pcf
>
> (the above code snip does not work, as you may notice)
>
> what I want to do is when user make different targets, I want the
> variable RANGE to change its value correspondingly. However, I don't
> want to repeat the command block for each target.
>
> I believe there must be an elegant way of doing this, i.e. set
> variables differently for each target and execute a common set of
> commands. However, I can not find it after an hour of search, so I hope
> someone can help me up.

What I do:

cjk0:
	$(MAKE) $(MFLAGS) RANGE=$(CJKBASIC) cjk

cjka:
	$(MAKE) $(MFLAGS) RANGE=$(CJKEXTA)  cjk

cjk: $(SLICE)
	[ -z $(RANGE) ] && (echo must define RANGE ; exit 1) || true
 	$(SLICE) $(RANGE) $(R9).bdf  > $(R9)_cjk.bdf
 	$(SLICE) $(RANGE) $(R10).bdf > $(R10)_cjk.bdf
 	$(SLICE) $(RANGE) $(R11).bdf > $(R11)_cjk.bdf
 	$(B2P) $(R9)_cjk.bdf  > $(R9).pcf
 	$(B2P) $(R10)_cjk.bdf > $(R10).pcf
 	$(B2P) $(R11)_cjk.bdf > $(R11).pcf

-- 
__Pascal Bourguignon__                     http://www.informatimago.com/
You're always typing.
Well, let's see you ignore my
sitting on your hands.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.