1*b1cdbd2cSJim Jagielski#************************************************************** 2*b1cdbd2cSJim Jagielski# 3*b1cdbd2cSJim Jagielski# Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski# or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski# distributed with this work for additional information 6*b1cdbd2cSJim Jagielski# regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski# to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski# "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski# with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski# 11*b1cdbd2cSJim Jagielski# http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski# 13*b1cdbd2cSJim Jagielski# Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski# software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski# KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski# specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski# under the License. 19*b1cdbd2cSJim Jagielski# 20*b1cdbd2cSJim Jagielski#************************************************************** 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski# user notifications and formatting 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielskidefine gb_Output__format_type 27*b1cdbd2cSJim Jagielski[ $(word 2,$(1) build clean) $(2) ] 28*b1cdbd2cSJim Jagielskiendef 29*b1cdbd2cSJim Jagielski 30*b1cdbd2cSJim Jagielskidefine gb_Output__format_target 31*b1cdbd2cSJim Jagielski$(1) 32*b1cdbd2cSJim Jagielskiendef 33*b1cdbd2cSJim Jagielski 34*b1cdbd2cSJim Jagielskidefine gb_Output_error 35*b1cdbd2cSJim Jagielski$(error $(1)) 36*b1cdbd2cSJim Jagielskiendef 37*b1cdbd2cSJim Jagielski 38*b1cdbd2cSJim Jagielskidefine gb_Output_announce_title 39*b1cdbd2cSJim Jagielskiendef 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielskidefine gb_Output_announce_bell 42*b1cdbd2cSJim Jagielskiendef 43*b1cdbd2cSJim Jagielski 44*b1cdbd2cSJim Jagielskidefine gb_Output_info 45*b1cdbd2cSJim Jagielski$(info [ info $(2) ] $(1)) 46*b1cdbd2cSJim Jagielskiendef 47*b1cdbd2cSJim Jagielski 48*b1cdbd2cSJim Jagielskidefine gb_Output_warn 49*b1cdbd2cSJim Jagielski$(warning $(NEWLINE)[ WARN $(2) ] !!!$(NEWLINE)[ WARN $(2) ] !!! $(1)$(NEWLINE)[ WARN $(2) ] !!!) 50*b1cdbd2cSJim Jagielskiendef 51*b1cdbd2cSJim Jagielski 52*b1cdbd2cSJim Jagielskigb_Output_ESCAPE := $(shell echo|awk 'BEGIN { printf "%c", 27 }' -) 53*b1cdbd2cSJim Jagielskigb_Output_BELL := $(shell echo|awk 'BEGIN { printf "%c", 7 }' -) 54*b1cdbd2cSJim Jagielski 55*b1cdbd2cSJim Jagielski# only enable colorized output if 56*b1cdbd2cSJim Jagielski# - gb_COLOR is set 57*b1cdbd2cSJim Jagielski# - we have a known term 58*b1cdbd2cSJim Jagielskiifneq ($(strip $(gb_COLOR)),) 59*b1cdbd2cSJim Jagielskiifneq ($(filter $(TERM),Eterm aterm gnome kterm linux rxvt rxvt-unicode screen xterm xterm-color),) 60*b1cdbd2cSJim Jagielski 61*b1cdbd2cSJim Jagielskigb_Output_COLOR_RESET := $(gb_Output_ESCAPE)[0m 62*b1cdbd2cSJim Jagielskigb_Output_COLOR_RESETANDESCAPE := $(gb_Output_COLOR_RESET)$(gb_Output_ESCAPE) 63*b1cdbd2cSJim Jagielski 64*b1cdbd2cSJim Jagielskigb_Output_COLOR_OUTBUILD_LEVEL1 := $(gb_Output_COLOR_RESETANDESCAPE)[37;40m 65*b1cdbd2cSJim Jagielskigb_Output_COLOR_OUTBUILD_LEVEL2 := $(gb_Output_COLOR_RESETANDESCAPE)[37;40m 66*b1cdbd2cSJim Jagielskigb_Output_COLOR_OUTBUILD_LEVEL3 := $(gb_Output_COLOR_RESETANDESCAPE)[37;40m 67*b1cdbd2cSJim Jagielskigb_Output_COLOR_OUTBUILD_LEVEL4 := $(gb_Output_COLOR_RESETANDESCAPE)[37;40m 68*b1cdbd2cSJim Jagielskigb_Output_COLOR_OUTBUILD_LEVEL5 := $(gb_Output_COLOR_RESETANDESCAPE)[37;1;46m 69*b1cdbd2cSJim Jagielskigb_Output_COLOR_OUTBUILD_LEVEL6 := $(gb_Output_COLOR_RESETANDESCAPE)[37;1;44m 70*b1cdbd2cSJim Jagielski 71*b1cdbd2cSJim Jagielskigb_Output_COLOR_INBUILD_LEVEL1 := $(gb_Output_COLOR_RESETANDESCAPE)[36;40m 72*b1cdbd2cSJim Jagielskigb_Output_COLOR_INBUILD_LEVEL2 := $(gb_Output_COLOR_RESETANDESCAPE)[36;1;40m 73*b1cdbd2cSJim Jagielskigb_Output_COLOR_INBUILD_LEVEL3 := $(gb_Output_COLOR_RESETANDESCAPE)[32;40m 74*b1cdbd2cSJim Jagielskigb_Output_COLOR_INBUILD_LEVEL4 := $(gb_Output_COLOR_RESETANDESCAPE)[32;1;40m 75*b1cdbd2cSJim Jagielskigb_Output_COLOR_INBUILD_LEVEL5 := $(gb_Output_COLOR_RESETANDESCAPE)[37;1;46m 76*b1cdbd2cSJim Jagielskigb_Output_COLOR_INBUILD_LEVEL6 := $(gb_Output_COLOR_RESETANDESCAPE)[37;1;44m 77*b1cdbd2cSJim Jagielski 78*b1cdbd2cSJim Jagielskigb_Output_COLOR_OUTCLEAN_LEVEL1 := $(gb_Output_COLOR_RESETANDESCAPE)[37;40m 79*b1cdbd2cSJim Jagielskigb_Output_COLOR_OUTCLEAN_LEVEL2 := $(gb_Output_COLOR_RESETANDESCAPE)[37;40m 80*b1cdbd2cSJim Jagielskigb_Output_COLOR_OUTCLEAN_LEVEL3 := $(gb_Output_COLOR_RESETANDESCAPE)[37;40m 81*b1cdbd2cSJim Jagielskigb_Output_COLOR_OUTCLEAN_LEVEL4 := $(gb_Output_COLOR_RESETANDESCAPE)[37;40m 82*b1cdbd2cSJim Jagielskigb_Output_COLOR_OUTCLEAN_LEVEL5 := $(gb_Output_COLOR_RESETANDESCAPE)[33;1;41m 83*b1cdbd2cSJim Jagielskigb_Output_COLOR_OUTCLEAN_LEVEL6 := $(gb_Output_COLOR_RESETANDESCAPE)[37;1;41m 84*b1cdbd2cSJim Jagielski 85*b1cdbd2cSJim Jagielskigb_Output_COLOR_INCLEAN_LEVEL1 := $(gb_Output_COLOR_RESETANDESCAPE)[33;40m 86*b1cdbd2cSJim Jagielskigb_Output_COLOR_INCLEAN_LEVEL2 := $(gb_Output_COLOR_RESETANDESCAPE)[33;1;40m 87*b1cdbd2cSJim Jagielskigb_Output_COLOR_INCLEAN_LEVEL3 := $(gb_Output_COLOR_RESETANDESCAPE)[31;40m 88*b1cdbd2cSJim Jagielskigb_Output_COLOR_INCLEAN_LEVEL4 := $(gb_Output_COLOR_RESETANDESCAPE)[31;1;40m 89*b1cdbd2cSJim Jagielskigb_Output_COLOR_INCLEAN_LEVEL5 := $(gb_Output_COLOR_RESETANDESCAPE)[33;1;41m 90*b1cdbd2cSJim Jagielskigb_Output_COLOR_INCLEAN_LEVEL6 := $(gb_Output_COLOR_RESETANDESCAPE)[37;1;41m 91*b1cdbd2cSJim Jagielski 92*b1cdbd2cSJim Jagielskigb_Output_COLOR_ERROR := $(gb_Output_COLOR_RESETANDESCAPE)[37;1;41m 93*b1cdbd2cSJim Jagielski 94*b1cdbd2cSJim Jagielskidefine gb_Output__format_type 95*b1cdbd2cSJim Jagielski$(subst :, ,$(word 2,$(1) \ 96*b1cdbd2cSJim Jagielski $(gb_Output_COLOR_OUTBUILD_LEVEL$(3))[:$(gb_Output_COLOR_INBUILD_LEVEL$(3))build:$(subst $(WHITESPACE),:,$(2))$(gb_Output_COLOR_OUTBUILD_LEVEL$(3)):] \ 97*b1cdbd2cSJim Jagielski $(gb_Output_COLOR_OUTCLEAN_LEVEL$(3))[:$(gb_Output_COLOR_INCLEAN_LEVEL$(3))clean:$(subst $(WHITESPACE),:,$(2))$(gb_Output_COLOR_OUTCLEAN_LEVEL$(3)):]))$(gb_Output_COLOR_RESET) 98*b1cdbd2cSJim Jagielskiendef 99*b1cdbd2cSJim Jagielski 100*b1cdbd2cSJim Jagielskidefine gb_Output_info 101*b1cdbd2cSJim Jagielski$(info $(gb_Output_COLOR_OUTBUILD_LEVEL6)[ $(gb_Output_COLOR_INBUILD_LEVEL6)info $(2)$(gb_Output_COLOR_OUTBUILD_LEVEL6) ]$(gb_Output_COLOR_RESET) $(1)) 102*b1cdbd2cSJim Jagielskiendef 103*b1cdbd2cSJim Jagielski 104*b1cdbd2cSJim Jagielskidefine gb_Output_warn 105*b1cdbd2cSJim Jagielski$(warning $(NEWLINE)$(gb_Output_COLOR_OUTCLEAN_LEVEL6)[ $(gb_Output_COLOR_INCLEAN_LEVEL6)WARN $(2)$(gb_Output_COLOR_OUTCLEAN_LEVEL6) ]$(gb_Output_COLOR_RESET) !!!$(NEWLINE)$(gb_Output_COLOR_OUTCLEAN_LEVEL6)[ $(gb_Output_COLOR_INCLEAN_LEVEL6)WARN $(2)$(gb_Output_COLOR_OUTCLEAN_LEVEL6) ]$(gb_Output_COLOR_RESET) !!! $(1)$(NEWLINE)$(gb_Output_COLOR_OUTCLEAN_LEVEL6)[ $(gb_Output_COLOR_INCLEAN_LEVEL6)WARN $(2)$(gb_Output_COLOR_OUTCLEAN_LEVEL6) ]$(gb_Output_COLOR_RESET) !!!) 106*b1cdbd2cSJim Jagielskiendef 107*b1cdbd2cSJim Jagielski 108*b1cdbd2cSJim Jagielskidefine gb_Output_error 109*b1cdbd2cSJim Jagielski$(error $(gb_Output_COLOR_ERROR)$(1)$(gb_Output_COLOR_RESET)) 110*b1cdbd2cSJim Jagielskiendef 111*b1cdbd2cSJim Jagielski 112*b1cdbd2cSJim Jagielskiendif 113*b1cdbd2cSJim Jagielskiendif 114*b1cdbd2cSJim Jagielski 115*b1cdbd2cSJim Jagielski# only enable title output if 116*b1cdbd2cSJim Jagielski# - gb_TITLES is set 117*b1cdbd2cSJim Jagielski# - we have a known term 118*b1cdbd2cSJim Jagielskiifneq ($(strip $(gb_TITLES)),) 119*b1cdbd2cSJim Jagielskiifneq ($(filter $(TERM),Eterm aterm gnome kterm rxvt rxvt-unicode screen xterm xterm-color),) 120*b1cdbd2cSJim Jagielskidefine gb_Output_announce_title 121*b1cdbd2cSJim Jagielski$(info $(gb_Output_ESCAPE)]2;gbuild: $(1)$(gb_Output_BELL)$(gb_Output_ESCAPE)[A) 122*b1cdbd2cSJim Jagielskiendef 123*b1cdbd2cSJim Jagielski 124*b1cdbd2cSJim Jagielski$(call gb_Output_announce_title,...) 125*b1cdbd2cSJim Jagielski 126*b1cdbd2cSJim Jagielskiendif 127*b1cdbd2cSJim Jagielskiendif 128*b1cdbd2cSJim Jagielski 129*b1cdbd2cSJim Jagielski# only enable bell output if 130*b1cdbd2cSJim Jagielski# - gb_BELL is set 131*b1cdbd2cSJim Jagielski# - gb_TTY is true (not piping to a file) 132*b1cdbd2cSJim Jagielskiifneq ($(strip $(gb_BELL)),) 133*b1cdbd2cSJim Jagielskidefine gb_Output_announce_bell 134*b1cdbd2cSJim Jagielski$(info $(gb_Output_BELL)$(gb_Output_ESCAPE)[A) 135*b1cdbd2cSJim Jagielskiendef 136*b1cdbd2cSJim Jagielskiendif 137*b1cdbd2cSJim Jagielski 138*b1cdbd2cSJim Jagielskidefine gb_Output_announce 139*b1cdbd2cSJim Jagielski$(info $(call gb_Output__format_type,$(2),$(3),$(4)) $(call gb_Output__format_target,$(1))) 140*b1cdbd2cSJim Jagielskiendef 141*b1cdbd2cSJim Jagielski 142*b1cdbd2cSJim Jagielski 143*b1cdbd2cSJim Jagielski# vim: set noet sw=4 ts=4: 144