[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: how to do this with Makefile
From: |
Pascal Bourguignon |
Subject: |
Re: how to do this with Makefile |
Date: |
Thu, 14 Dec 2006 01:39:33 +0100 |
User-agent: |
Gnus/5.11 (Gnus v5.11) Emacs/22.0.91 (gnu/linux) |
"FangQ" <fangqq@gmail.com> 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.