🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: comp.unix.programmer
3 messages
3 total messages Started by FangQ Thu, 14 Dec 2006 00:34
how to do this with Makefile
#3715
Author: FangQ
Date: Thu, 14 Dec 2006 00:34
41 lines
2446 bytes
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
Re: how to do this with Makefile
#3716
Author: Pascal Bourguignon
Date: Thu, 14 Dec 2006 00:39
62 lines
3382 bytes
"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.
Re: how to do this with Makefile
#3717
Author: Måns Rullgård
Date: Thu, 14 Dec 2006 01:22
43 lines
2160 bytes
"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
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads