Home > Archive > Unix Programming > December 2006 > how to do this with Makefile
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
how to do this with Makefile
|
|
|
| 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.
thank you
Qianqian
| |
| Pascal Bourguignon 2006-12-13, 7:04 pm |
| "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.
| |
| Måns Rullgård 2006-12-13, 10:04 pm |
| "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)
Make that last line read like this instead:
cjk cjk0 cjka: $(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.
--
Måns Rullgård
mru@inprovide.com
| |
|
| thank you, that's exactly what I am looking for.
Qianqian
M=E5ns Rullg=E5rd wrote:
> "FangQ" <fangqq@gmail.com> writes:
> Make that last line read like this instead:
>=20
> cjk cjk0 cjka: $(SLICE)
> --=20
> M=E5ns Rullg=E5rd
> mru@inprovide.com
|
|
|
|
|