1# $Id: whats.mk,v 1.3 2017/10/19 06:09:14 sjg Exp $ 2# 3# @(#) Copyright (c) 2014, Simon J. Gerraty 4# 5# This file is provided in the hope that it will 6# be of use. There is absolutely NO WARRANTY. 7# Permission to copy, redistribute or otherwise 8# use this file is hereby granted provided that 9# the above copyright notice and this notice are 10# left intact. 11# 12# Please send copies of changes and bug-fixes to: 13# sjg@crufty.net 14# 15 16.if ${MK_WHATSTRING:Uno} != "no" 17what_build_exts?= o 18# it can be useful to embed a what(1) string in binaries 19# so that the build location can be seen from a core file. 20.if defined(PROG) && ${.MAKE.MAKEFILES:M*prog.mk} != "" 21what_thing?= ${PROGNAME:U${PROG}} 22what_build_thing?= ${PROG} 23.elif defined(LIB) && ${.MAKE.MAKEFILES:M*lib.mk} != "" 24# probably only makes sense for shared libs 25# and the plumbing needed varies depending on *lib.mk 26what_thing?= lib${LIB} 27.if !empty(SOBJS) 28_soe:= ${SOBJS:E:[1]} 29what_build_exts= ${_soe} 30SOBJS+= ${what_uuid}.${_soe} 31.endif 32.elif defined(KMOD) && ${.MAKE.MAKEFILES:M*kmod.mk} != "" 33what_thing?= ${KMOD} 34what_build_thing?= ${KMOD}.ko 35.endif 36 37.if !empty(what_thing) 38# a unique name that won't conflict with anything 39what_uuid = what_${what_thing}_${.CURDIR:T:hash} 40what_var = what_${.CURDIR:T:hash} 41 42.if !empty(what_build_thing) 43${what_build_thing}: ${what_build_exts:@e@${what_uuid}.$e@} 44.endif 45OBJS+= ${what_uuid}.o 46CLEANFILES+= ${what_uuid}.c 47 48# we do not need to capture this 49SUPPRESS_DEPEND+= *${what_uuid}.c 50 51SB?= ${SRCTOP:H} 52SB_LOCATION?= ${HOST}:${SB} 53what_location:= ${.OBJDIR:S,${SB},${SB_LOCATION},} 54 55# this works with clang and gcc 56_what_t= const char __attribute__ ((section(".data"))) 57_what1:= @(\#)${what_thing:tu} built ${%Y%m%d:L:localtime} by ${USER} 58_what2:= @(\#)${what_location} 59 60${what_uuid}.c: 61 echo '${_what_t} ${what_var}1[] = "${_what1}";' > $@ ${.OODATE:MNO_META_CMP} 62 echo '${_what_t} ${what_var}2[] = "${_what2}";' >> $@ 63.endif 64.endif 65