29 lines
992 B
Makefile
29 lines
992 B
Makefile
|
empty =
|
||
|
space = $(empty) $(empty)
|
||
|
comma = ,
|
||
|
quote = '
|
||
|
double-quote = "
|
||
|
|
||
|
define newline
|
||
|
|
||
|
|
||
|
endef
|
||
|
|
||
|
escape = $(subst $(space),\$(space),$(subst $(double-quote),\$(double-quote),$(1)))
|
||
|
|
||
|
list-join = $(if $(2),$(3)$(subst $(space),$(1),$(strip $(2)))$(4))
|
||
|
list-quote = $(call list-join,$(quote)$(comma)$(quote),$(1),$(2)$(quote),$(quote)$(3))
|
||
|
list-double-quote = $(call list-join,$(double-quote)$(space)$(double-quote),$(1),$(2)$(double-quote),$(double-quote)$(3))
|
||
|
|
||
|
head = $(word 1,$(1))
|
||
|
tail = $(wordlist 2,$(words $(1)),$(1))
|
||
|
|
||
|
translate = $(if $(1),$(call translate,$(call tail,$(1)),$(call tail,$(2)),$$(subst $(call head,$(1)),$(call head,$(2)),$(3))),$(3))
|
||
|
reverse = $(if $(1),$(call reverse,$(call tail,$(1)) $(call head,$(1))))
|
||
|
|
||
|
[lower] := 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 - .
|
||
|
[upper] := 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 _ _
|
||
|
|
||
|
$(eval toupper = $(call translate,$([lower]),$([upper]),$$(1)))
|
||
|
$(eval tolower = $(call translate,$([upper]),$([lower]),$$(1)))
|