1 # $Id: whats.mk,v 1.1 2014/08/30 22:40:47 sjg Exp $
3 # @(#) Copyright (c) 2014, Simon J. Gerraty
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
12 # Please send copies of changes and bug-fixes to:
16 .if
${MK_WHATSTRING
:Uno
} != "no"
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
} != ""
21 what_thing?
= ${PROGNAME
:U
${PROG}}
22 what_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
26 what_thing?
= lib
${LIB}
29 what_build_exts
= ${_soe}
30 SOBJS
+= ${what_uuid}.
${_soe}
32 .elif defined
(KMOD
) && ${.MAKE.MAKEFILES
:M
*kmod.mk
} != ""
34 what_build_thing?
= ${KMOD}.ko
37 .if
!empty
(what_thing
)
38 # a unique name that won't conflict with anything
39 what_uuid
= what_
${.CURDIR
:T
:hash
}
41 .if
!empty
(what_build_thing
)
42 ${what_build_thing}: ${what_build_exts
:@e@
${what_uuid}.
$e@
}
45 CLEANFILES
+= ${what_uuid}.c
47 # we do not need to capture this
48 SUPPRESS_DEPEND
+= *${what_uuid}.c
51 SB_LOCATION?
= ${HOST}:${SB}
52 what_location
:= ${.OBJDIR
:S
,${SB},${SB_LOCATION},}
54 # this works with clang and gcc
55 _what_t
= const char __attribute__
((section
(".data")))
56 _what1
:= @
(\
#)${what_thing:tu} built ${%Y%m%d:L:localtime} by ${USER}
57 _what2
:= @
(\
#)${what_location}
60 echo
'${_what_t} ${what_uuid}1[] = "${_what1}";' > $@
${.OODATE
:MNO_META_CMP
}
61 echo
'${_what_t} ${what_uuid}2[] = "${_what2}";' >> $@