HOSTRANLIB := $(shell which $(HOSTRANLIB) || type -p $(HOSTRANLIB) || echo ranlib)
HOSTCC_VERSION := $(shell $(HOSTCC_NOCCACHE) --version | \
$(SED) -n -r 's/^.* ([0-9]*)\.([0-9]*)\.([0-9]*)[ ]*.*/\1 \2/p')
+HOSTUTC := $(shell date -u)
HOSTNAME := $(shell hostname -s)
HOSTUSER := $(shell whoami)
used for during compilation for the unikernel
image.
+ config LIBUKLIBID_INFO_COMPILEDATE
+ bool "Compile date"
+ default y
+ help
+ This option stores the compile date and time for
+ the unikernel image.
+
config LIBUKLIBID_INFO_UKCONFIGGZ
bool "Embed gzipped configuration (.config)"
help
help
Enables storing the C compiler ($(CC)) that was
used for each library.
+
+ config LIBUKLIBID_INFO_LIB_COMPILEDATE
+ bool "Compile date"
+ help
+ This option stores the compile date and time for
+ each library.
endmenu
menuconfig LIBUKLIBID_INFO_COMPILEDBY
ASFLAGS-$(CONFIG_OPTIMIZE_PIE) += -D__LIBUKLIBID_COMPILEOPT_PIE__=1
ASFLAGS-$(CONFIG_OPTIMIZE_LTO) += -D__LIBUKLIBID_COMPILEOPT_LTO__=1
ASFLAGS-$(CONFIG_OPTIMIZE_DEADELIM) += -D__LIBUKLIBID_COMPILEOPT_DCE__=1
+# NOTE: We hand-over $(HOSTUTC) instead of using __DATE__ and __TIME__ in order
+# to ensure recompilation of `libinfo.S` due to changed compile flags
+ASFLAGS-$(CONFIG_LIBUKLIBID_INFO_LIB_COMPILEDATE) += -D__LIBUKLIBID_UTCDATE__="$(HOSTUTC)"
ASFLAGS-$(CONFIG_LIBUKLIBID_INFO_COMPILEDBY_HOST) += -D__LIBUKLIBID_COMPILEDBY_HOST__="$(HOSTUSER)@$(HOSTNAME)"
LIBUKLIBID_SRCS-$(CONFIG_LIBUKLIBID_INFO) += $(LIBUKLIBID_BASE)/infosec.ld
LIBUKLIBID_SRCS-$(CONFIG_LIBUKLIBID_INFO) += $(LIBUKLIBID_BASE)/libinfo.S|global
LIBUKLIBID_LIBINFO_GLOBAL_FLAGS-y += -D__GLOBALINFO__
+LIBUKLIBID_LIBINFO_GLOBAL_FLAGS-$(CONFIG_LIBUKLIBID_INFO_COMPILEDATE) += -DUK_UTCDATE="$(HOSTUTC)"
LIBUKLIBID_LIBINFO_GLOBAL_CDEPS-$(CONFIG_LIBUKLIBID_INFO_UKCONFIGGZ) += $(LIBUKLIBID_BUILD)/config.gz
LIBUKLIBID_LIBINFO_GLOBAL_FLAGS-$(CONFIG_LIBUKLIBID_INFO_UKCONFIGGZ) += -DUK_CONFIGGZINC="$(LIBUKLIBID_BUILD)/config.gz"
RECORD(UKLI_REC_COMPILER,
.asciz STRINGIFY(__LIBUKLIBID_COMPILER__))
#endif /* CONFIG_LIBUKLIBID_INFO_COMPILER */
+#if CONFIG_LIBUKLIBID_INFO_COMPILEDATE
+ RECORD(UKLI_REC_COMPILEDATE,
+ .asciz STRINGIFY(UK_UTCDATE))
+#endif /* CONFIG_LIBUKLIBID_INFO_COMPILEDATE */
#if CONFIG_LIBUKLIBID_INFO_UKCONFIGGZ
RECORD(UKLI_REC_UKCONFIGGZ, .incbin STRINGIFY(UK_CONFIGGZINC))
#endif /* CONFIG_LIBUKLIBID_INFO_UKCONFIGGZ */
RECORD(UKLI_REC_COMPILER,
.asciz STRINGIFY(__LIBUKLIBID_COMPILER__))
#endif /* CONFIG_LIBUKLIBID_INFO_COMPILER */
+#if CONFIG_LIBUKLIBID_INFO_LIB_COMPILEDATE
+ RECORD(UKLI_REC_COMPILEDATE,
+ .asciz STRINGIFY(__LIBUKLIBID_UTCDATE__))
+#endif /* CONFIG_LIBUKLIBID_INFO_COMPILEDATE */
RECORD(UKLI_REC_COMPILEOPTS, .__u32 (
(!(!__LIBUKLIBID_COMPILEOPT_PIE__) * UKLI_REC_CO_PIE) |\
(!(!__LIBUKLIBID_COMPILEOPT_DCE__) * UKLI_REC_CO_DCE) |\