Makefile.package.in: optimize UPPERCASE macro
As noticed by Thomas, we call the UPPERCASE macro a lot, and it slows down startup quite a bit. Optimize it by implementing it in make, rather than forking a shell + tr. The implementation is heavily based on the 'up' macro from gmsl (http://gmsl.sf.net) With this in place, startup time is ~5 times lower. Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
This commit is contained in:
parent
d701a82321
commit
4efdd9f3d9
@ -24,7 +24,21 @@
|
||||
|
||||
# UPPERCASE Macro -- transform its argument to uppercase and replace dots and
|
||||
# hyphens to underscores
|
||||
UPPERCASE = $(shell echo $(1) | tr "a-z.-" "A-Z__")
|
||||
|
||||
# Heavily inspired by the up macro from gmsl (http://gmsl.sf.net)
|
||||
# This is approx 5 times faster than forking a shell and tr, and
|
||||
# as this macro is used a lot it matters
|
||||
# This works by creating translation character pairs (E.G. a:A b:B)
|
||||
# and then looping though all of them running $(subst from,to,text)
|
||||
[FROM] := a b c d e f g h i j k l m n o p q r s t u v w x y z . -
|
||||
[TO] := A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ _
|
||||
|
||||
UPPERCASE = $(strip $(eval __tmp := $1) \
|
||||
$(foreach c, $(join $(addsuffix :,$([FROM])),$([TO])), \
|
||||
$(eval __tmp := \
|
||||
$(subst $(word 1,$(subst :, ,$c)),$(word 2,$(subst :, ,$c)),\
|
||||
$(__tmp)))) \
|
||||
$(__tmp))
|
||||
|
||||
# Define extrators for different archive suffixes
|
||||
INFLATE.bz2 = $(BZCAT)
|
||||
|
Loading…
Reference in New Issue
Block a user