aboutsummaryrefslogtreecommitdiff
path: root/libcpp/macro.c
diff options
context:
space:
mode:
Diffstat (limited to 'libcpp/macro.c')
-rw-r--r--libcpp/macro.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/libcpp/macro.c b/libcpp/macro.c
index c2a8376..a3b8348 100644
--- a/libcpp/macro.c
+++ b/libcpp/macro.c
@@ -358,9 +358,13 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node,
struct tm *tb = NULL;
/* Set a reproducible timestamp for __DATE__ and __TIME__ macro
- usage if SOURCE_DATE_EPOCH is defined. */
- if (pfile->source_date_epoch != (time_t) -1)
- tb = gmtime (&pfile->source_date_epoch);
+ if SOURCE_DATE_EPOCH is defined. */
+ if (pfile->source_date_epoch == (time_t) -2
+ && pfile->cb.get_source_date_epoch != NULL)
+ pfile->source_date_epoch = pfile->cb.get_source_date_epoch (pfile);
+
+ if (pfile->source_date_epoch >= (time_t) 0)
+ tb = gmtime (&pfile->source_date_epoch);
else
{
/* (time_t) -1 is a legitimate value for "number of seconds