diff options
Diffstat (limited to 'core/mk/macros.mk')
-rw-r--r-- | core/mk/macros.mk | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/core/mk/macros.mk b/core/mk/macros.mk new file mode 100644 index 0000000..f0e44cf --- /dev/null +++ b/core/mk/macros.mk @@ -0,0 +1,132 @@ +################################################################################ +# Embtoolkit +# Copyright(C) 2009-2014 Abdoulaye Walsimou GAYE. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +################################################################################ +# +# \file macros.mk +# \brief macros.mk of Embtoolkit +# \author Abdoulaye Walsimou GAYE <awg@embtoolkit.org> +# \date May 2009 +################################################################################ + +# Embtoolkit colors +__embtk_color_red = "\033[1;31m" +__embtk_color_green = "\033[1;32m" +__embtk_color_yellow = "\033[0;33m" +__embtk_color_blue = "\033[1;34m" +__embtk_no_color = "\033[0m" + +# +# echo colored text +# usage: $(call embtk_echo_{color},msg) +# +embtk_echo_red = printf $(__embtk_color_red)$(1)$(__embtk_no_color)"\n" +embtk_echo_green = printf $(__embtk_color_green)$(1)$(__embtk_no_color)"\n" +embtk_echo_yellow = printf $(__embtk_color_yellow)$(1)$(__embtk_no_color)"\n" +embtk_echo_blue = printf $(__embtk_color_blue)$(1)$(__embtk_no_color)"\n" + +__embtk_msg_h = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" + +# +# __embtk_streq: +# A macro for two strings comparison. It returns y if the strings are identical +# and nothing if not. +# Note: This macro strips passed parameters +# Usage: +# $(call __embtk_streq,str1,str2) +# +__embtk_streq = $(if $(subst $(1),,$(2))$(subst $(2),,$(1)),,y) + +# +# __embtk_strneq: +# A macro for two strings comparison. It returns y if the strings are different +# and nothing if they are the same. +# Note: This macro strips passed parameters +# Usage: +# $(call __embtk_strneq,str1,str2) +# +__embtk_strneq = $(if $(subst $(1),,$(2))$(subst $(2),,$(1)),y) + +# +# __embtk_mk_pathexist +# A macro to test if a path exists. It returns y if the path exists and nothing +# if not. +# Usage: $(call __embtk_mk_pathexist,/path/to/test) +# +__embtk_mk_pathexist = $(shell test -e $(1) && echo y) + +# +# __embtk_mk_pathnotexist +# A macro to test if a path does not exist. It returns y if the path does not +# exist and nothing if it exists. +# Usage: $(call __embtk_mk_pathnotexist,/path/to/test) +# +__embtk_mk_pathnotexist = $(shell test -e $(1) || echo y) + +# +# __embtk_mk_uquote +# A macro to unquote a string. +# Usage: $(call __embtk_mk_uquote,$(myquotedvar)) +# +__embtk_mk_uquote = $(subst ",,$(strip $(1))) + +# Macro to print messages +embtk_pwarning = $(call embtk_echo_yellow,"$(__embtk_msg_h)\\n~~ EmbToolkit ~~ WARNING: $(call __embtk_mk_uquote,$(1))\\n$(__embtk_msg_h)") +embtk_perror = $(call embtk_echo_red,"$(__embtk_msg_h)\\n~~ EmbToolkit ~~ ERROR: $(call __embtk_mk_uquote,$(1))\\n$(__embtk_msg_h)") +embtk_pinfo = $(call embtk_echo_blue,"$(__embtk_msg_h)\\n~~ EmbToolkit ~~ $(call __embtk_mk_uquote,$(1))\\n$(__embtk_msg_h)") +embtk_pdone = $(call embtk_echo_blue,"[✔] Done : $(call __embtk_mk_uquote,$(1))") +embtk_pfailed = $(call embtk_echo_red,"[✘] Failed: $(call __embtk_mk_uquote,$(1))") + +# Macros for emmpty, space and comma +embtk_empty := +embtk_space := $(embtk_empty) $(embtk_empty) +embtk_comma := , + +# +# Macros to change strings case (upper->lower or lower to upper) +# +[U-l] := A,a B,b C,c D,d E,e F,f G,g H,h I,i J,j K,k L,l M,m N,n O,o P,p Q,q R,r S,s T,t U,u V,v W,w X,x Y,y Z,z +[l-U] := a,A b,B c,C d,D e,E f,F g,G h,H i,I j,J k,K l,L m,M n,N o,O p,P q,Q r,R s,S t,T u,U v,V w,W x,X y,Y z,Z + +embtk_lcase = $(strip $(call __embtk_lcase,$(1))) +define __embtk_lcase + $(eval __lcase := $(1)) + $(foreach __c,$([U-l]), + $(eval __c1 := $(word 1,$(subst $(embtk_comma),$(embtk_space),$(__c)))) + $(eval __c2 := $(word 2,$(subst $(embtk_comma),$(embtk_space),$(__c)))) + $(eval __lcase := $(subst $(__c1),$(__c2),$(__lcase))))$(__lcase) +endef + +embtk_ucase = $(strip $(call __embtk_ucase,$(1))) +define __embtk_ucase + $(eval __ucase := $(1)) + $(foreach __c,$([l-U]), + $(eval __c1 := $(word 1,$(subst $(embtk_comma),$(embtk_space),$(__c)))) + $(eval __c2 := $(word 2,$(subst $(embtk_comma),$(embtk_space),$(__c)))) + $(eval __ucase := $(subst $(__c1),$(__c2),$(__ucase))))$(__ucase) +endef + +# +# Packages management macros +include core/mk/pkg-macros/vars.mk +include core/mk/pkg-macros/incl.mk +include core/mk/pkg-macros/pkg-config.mk +include core/mk/pkg-macros/libtool.mk +include core/mk/pkg-macros/download.mk +include core/mk/pkg-macros/configure.mk +include core/mk/pkg-macros/install.mk +include core/mk/pkg-macros/clean.mk |