* [PATCH 1/1] EmbeddedPkg/TimeBaseLib: Add macros to get build year/month/day
@ 2020-07-24 16:37 Pete Batard
2020-08-03 12:09 ` Leif Lindholm
0 siblings, 1 reply; 4+ messages in thread
From: Pete Batard @ 2020-07-24 16:37 UTC (permalink / raw)
To: devel; +Cc: ard.biesheuvel, leif
These can be used, for instance, to automate the population of an SMBIOS
Type 0 BIOS Release Date when building a UEFI firmware (which is how we
plan to use these macros for the Raspberry Pi platform).
These macros should work for any compiler that follows ISO/IEC 9899, but
we add a check for the compiler we have tested to be on the safe side.
Note that we decided against adding a #error or #warn for compilers that
haven't been validated, as we don't want to introduce breakage for people
who may already be using the header with something else than gcc, MSVC or
Clang. Instead, we expect those to send a patch that adds their compiler
to the list, once they have tested the macros there.
Signed-off-by: Pete Batard <pete@akeo.ie>
---
EmbeddedPkg/Include/Library/TimeBaseLib.h | 32 ++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/EmbeddedPkg/Include/Library/TimeBaseLib.h b/EmbeddedPkg/Include/Library/TimeBaseLib.h
index 4103c89b3891..ee2f191d985b 100644
--- a/EmbeddedPkg/Include/Library/TimeBaseLib.h
+++ b/EmbeddedPkg/Include/Library/TimeBaseLib.h
@@ -12,6 +12,38 @@
#include <Uefi/UefiBaseType.h>
+//
+// Convenience macros to obtain a build date
+//
+// These macros should work for any compiler that follows ISO/IEC 9899,
+// in which case __DATE__ is defined as a "Mmm dd yyyy" 11 chars string,
+// but add an explicit filter for compilers that have been validated.
+//
+#if (defined(__GNUC__) || defined(_MSC_VER) || defined(__clang__))
+#define TIME_BUILD_YEAR (__DATE__[7] == '?' ? 1900 \
+ : (((__DATE__[7] - '0') * 1000 ) \
+ + (__DATE__[8] - '0') * 100 \
+ + (__DATE__[9] - '0') * 10 \
+ + __DATE__[10] - '0'))
+#define TIME_BUILD_MONTH ( __DATE__ [2] == '?' ? 1 \
+ : __DATE__ [2] == 'n' ? ( \
+ __DATE__ [1] == 'a' ? 1 : 6) \
+ : __DATE__ [2] == 'b' ? 2 \
+ : __DATE__ [2] == 'r' ? ( \
+ __DATE__ [0] == 'M' ? 3 : 4) \
+ : __DATE__ [2] == 'y' ? 5 \
+ : __DATE__ [2] == 'l' ? 7 \
+ : __DATE__ [2] == 'g' ? 8 \
+ : __DATE__ [2] == 'p' ? 9 \
+ : __DATE__ [2] == 't' ? 10 \
+ : __DATE__ [2] == 'v' ? 11 \
+ : 12)
+#define TIME_BUILD_DAY ( __DATE__[4] == '?' ? 1 \
+ : ((__DATE__[4] == ' ' ? 0 : \
+ ((__DATE__[4] - '0') * 10)) \
+ + __DATE__[5] - '0'))
+#endif
+
// Define EPOCH (1970-JANUARY-01) in the Julian Date representation
#define EPOCH_JULIAN_DATE 2440588
--
2.21.0.windows.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 1/1] EmbeddedPkg/TimeBaseLib: Add macros to get build year/month/day
2020-07-24 16:37 [PATCH 1/1] EmbeddedPkg/TimeBaseLib: Add macros to get build year/month/day Pete Batard
@ 2020-08-03 12:09 ` Leif Lindholm
2020-08-03 12:21 ` Pete Batard
0 siblings, 1 reply; 4+ messages in thread
From: Leif Lindholm @ 2020-08-03 12:09 UTC (permalink / raw)
To: Pete Batard; +Cc: devel, ard.biesheuvel
Hi Pete,
Well prodded (off-list).
I expect I saw that arrive, expected the corresponding RPi
resubmission to arrive shortly afterwards for me to test with and put
it soundly at the back of my mind. Presumably you were waiting for
this to be merged before resubmitting that one?
Anyway:
Reviewed-by: Leif Lindholm <leif@nuviainc.com>
Pushed as bbb8a8185838.
Regards,
Leif
On Fri, Jul 24, 2020 at 17:37:42 +0100, Pete Batard wrote:
> These can be used, for instance, to automate the population of an SMBIOS
> Type 0 BIOS Release Date when building a UEFI firmware (which is how we
> plan to use these macros for the Raspberry Pi platform).
>
> These macros should work for any compiler that follows ISO/IEC 9899, but
> we add a check for the compiler we have tested to be on the safe side.
>
> Note that we decided against adding a #error or #warn for compilers that
> haven't been validated, as we don't want to introduce breakage for people
> who may already be using the header with something else than gcc, MSVC or
> Clang. Instead, we expect those to send a patch that adds their compiler
> to the list, once they have tested the macros there.
>
> Signed-off-by: Pete Batard <pete@akeo.ie>
> ---
> EmbeddedPkg/Include/Library/TimeBaseLib.h | 32 ++++++++++++++++++++
> 1 file changed, 32 insertions(+)
>
> diff --git a/EmbeddedPkg/Include/Library/TimeBaseLib.h b/EmbeddedPkg/Include/Library/TimeBaseLib.h
> index 4103c89b3891..ee2f191d985b 100644
> --- a/EmbeddedPkg/Include/Library/TimeBaseLib.h
> +++ b/EmbeddedPkg/Include/Library/TimeBaseLib.h
> @@ -12,6 +12,38 @@
>
> #include <Uefi/UefiBaseType.h>
>
> +//
> +// Convenience macros to obtain a build date
> +//
> +// These macros should work for any compiler that follows ISO/IEC 9899,
> +// in which case __DATE__ is defined as a "Mmm dd yyyy" 11 chars string,
> +// but add an explicit filter for compilers that have been validated.
> +//
> +#if (defined(__GNUC__) || defined(_MSC_VER) || defined(__clang__))
> +#define TIME_BUILD_YEAR (__DATE__[7] == '?' ? 1900 \
> + : (((__DATE__[7] - '0') * 1000 ) \
> + + (__DATE__[8] - '0') * 100 \
> + + (__DATE__[9] - '0') * 10 \
> + + __DATE__[10] - '0'))
> +#define TIME_BUILD_MONTH ( __DATE__ [2] == '?' ? 1 \
> + : __DATE__ [2] == 'n' ? ( \
> + __DATE__ [1] == 'a' ? 1 : 6) \
> + : __DATE__ [2] == 'b' ? 2 \
> + : __DATE__ [2] == 'r' ? ( \
> + __DATE__ [0] == 'M' ? 3 : 4) \
> + : __DATE__ [2] == 'y' ? 5 \
> + : __DATE__ [2] == 'l' ? 7 \
> + : __DATE__ [2] == 'g' ? 8 \
> + : __DATE__ [2] == 'p' ? 9 \
> + : __DATE__ [2] == 't' ? 10 \
> + : __DATE__ [2] == 'v' ? 11 \
> + : 12)
> +#define TIME_BUILD_DAY ( __DATE__[4] == '?' ? 1 \
> + : ((__DATE__[4] == ' ' ? 0 : \
> + ((__DATE__[4] - '0') * 10)) \
> + + __DATE__[5] - '0'))
> +#endif
> +
> // Define EPOCH (1970-JANUARY-01) in the Julian Date representation
> #define EPOCH_JULIAN_DATE 2440588
>
> --
> 2.21.0.windows.1
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 1/1] EmbeddedPkg/TimeBaseLib: Add macros to get build year/month/day
2020-08-03 12:09 ` Leif Lindholm
@ 2020-08-03 12:21 ` Pete Batard
2020-08-03 13:00 ` Leif Lindholm
0 siblings, 1 reply; 4+ messages in thread
From: Pete Batard @ 2020-08-03 12:21 UTC (permalink / raw)
To: Leif Lindholm; +Cc: devel, ard.biesheuvel
Hi Leif,
On 2020.08.03 13:09, Leif Lindholm wrote:
> Hi Pete,
>
> Well prodded (off-list).
>
> I expect I saw that arrive, expected the corresponding RPi
> resubmission to arrive shortly afterwards for me to test with and put
> it soundly at the back of my mind. Presumably you were waiting for
> this to be merged before resubmitting that one?
Yes. I tend to find it inconvenient to reference to work that has not
yet been integrated, as I'm not sure how you're suppose to reference it.
Should you point to an edk2-devel post in the commit message? In the
cover letter? Something else?
As a result, provided the dependency should be simple enough to review
independently, I prefer to alleviate that issue by just waiting for it
to be integrated. But if that's a problem, I can certainly ensure that
future co-dependent patches are submitted together.
> Anyway:
> Reviewed-by: Leif Lindholm <leif@nuviainc.com>
> Pushed as bbb8a8185838.
Thanks!
/Pete
>
> Regards,
>
> Leif
>
> On Fri, Jul 24, 2020 at 17:37:42 +0100, Pete Batard wrote:
>> These can be used, for instance, to automate the population of an SMBIOS
>> Type 0 BIOS Release Date when building a UEFI firmware (which is how we
>> plan to use these macros for the Raspberry Pi platform).
>>
>> These macros should work for any compiler that follows ISO/IEC 9899, but
>> we add a check for the compiler we have tested to be on the safe side.
>>
>> Note that we decided against adding a #error or #warn for compilers that
>> haven't been validated, as we don't want to introduce breakage for people
>> who may already be using the header with something else than gcc, MSVC or
>> Clang. Instead, we expect those to send a patch that adds their compiler
>> to the list, once they have tested the macros there.
>>
>> Signed-off-by: Pete Batard <pete@akeo.ie>
>> ---
>> EmbeddedPkg/Include/Library/TimeBaseLib.h | 32 ++++++++++++++++++++
>> 1 file changed, 32 insertions(+)
>>
>> diff --git a/EmbeddedPkg/Include/Library/TimeBaseLib.h b/EmbeddedPkg/Include/Library/TimeBaseLib.h
>> index 4103c89b3891..ee2f191d985b 100644
>> --- a/EmbeddedPkg/Include/Library/TimeBaseLib.h
>> +++ b/EmbeddedPkg/Include/Library/TimeBaseLib.h
>> @@ -12,6 +12,38 @@
>>
>> #include <Uefi/UefiBaseType.h>
>>
>> +//
>> +// Convenience macros to obtain a build date
>> +//
>> +// These macros should work for any compiler that follows ISO/IEC 9899,
>> +// in which case __DATE__ is defined as a "Mmm dd yyyy" 11 chars string,
>> +// but add an explicit filter for compilers that have been validated.
>> +//
>> +#if (defined(__GNUC__) || defined(_MSC_VER) || defined(__clang__))
>> +#define TIME_BUILD_YEAR (__DATE__[7] == '?' ? 1900 \
>> + : (((__DATE__[7] - '0') * 1000 ) \
>> + + (__DATE__[8] - '0') * 100 \
>> + + (__DATE__[9] - '0') * 10 \
>> + + __DATE__[10] - '0'))
>> +#define TIME_BUILD_MONTH ( __DATE__ [2] == '?' ? 1 \
>> + : __DATE__ [2] == 'n' ? ( \
>> + __DATE__ [1] == 'a' ? 1 : 6) \
>> + : __DATE__ [2] == 'b' ? 2 \
>> + : __DATE__ [2] == 'r' ? ( \
>> + __DATE__ [0] == 'M' ? 3 : 4) \
>> + : __DATE__ [2] == 'y' ? 5 \
>> + : __DATE__ [2] == 'l' ? 7 \
>> + : __DATE__ [2] == 'g' ? 8 \
>> + : __DATE__ [2] == 'p' ? 9 \
>> + : __DATE__ [2] == 't' ? 10 \
>> + : __DATE__ [2] == 'v' ? 11 \
>> + : 12)
>> +#define TIME_BUILD_DAY ( __DATE__[4] == '?' ? 1 \
>> + : ((__DATE__[4] == ' ' ? 0 : \
>> + ((__DATE__[4] - '0') * 10)) \
>> + + __DATE__[5] - '0'))
>> +#endif
>> +
>> // Define EPOCH (1970-JANUARY-01) in the Julian Date representation
>> #define EPOCH_JULIAN_DATE 2440588
>>
>> --
>> 2.21.0.windows.1
>>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 1/1] EmbeddedPkg/TimeBaseLib: Add macros to get build year/month/day
2020-08-03 12:21 ` Pete Batard
@ 2020-08-03 13:00 ` Leif Lindholm
0 siblings, 0 replies; 4+ messages in thread
From: Leif Lindholm @ 2020-08-03 13:00 UTC (permalink / raw)
To: Pete Batard; +Cc: devel, ard.biesheuvel
Hi Pete,
On Mon, Aug 03, 2020 at 13:21:41 +0100, Pete Batard wrote:
> On 2020.08.03 13:09, Leif Lindholm wrote:
> > Hi Pete,
> >
> > Well prodded (off-list).
> >
> > I expect I saw that arrive, expected the corresponding RPi
> > resubmission to arrive shortly afterwards for me to test with and put
> > it soundly at the back of my mind. Presumably you were waiting for
> > this to be merged before resubmitting that one?
>
> Yes. I tend to find it inconvenient to reference to work that has not yet
> been integrated, as I'm not sure how you're suppose to reference it. Should
> you point to an edk2-devel post in the commit message? In the cover letter?
> Something else?
The cover letter is a good place to describe such dependencies.
We always merge edk2 portions before edk2-platforms, so once it's
merged the only ordering requirement is that your edk2 isn't older
than your edk2-platforms. Hence, we don't really need it in commit
messages.
> As a result, provided the dependency should be simple enough to review
> independently, I prefer to alleviate that issue by just waiting for it to be
> integrated. But if that's a problem, I can certainly ensure that future
> co-dependent patches are submitted together.
In this particular case, it wasn't actually important, we just ended
up with mismatched expectations. Since it was fairly isolated code
that I had already been able to test build in my environments when it
formed part of the original driver.
Regards,
Leif
> > Anyway:
> > Reviewed-by: Leif Lindholm <leif@nuviainc.com>
> > Pushed as bbb8a8185838.
>
> Thanks!
>
> /Pete
>
> >
> > Regards,
> >
> > Leif
> >
> > On Fri, Jul 24, 2020 at 17:37:42 +0100, Pete Batard wrote:
> > > These can be used, for instance, to automate the population of an SMBIOS
> > > Type 0 BIOS Release Date when building a UEFI firmware (which is how we
> > > plan to use these macros for the Raspberry Pi platform).
> > >
> > > These macros should work for any compiler that follows ISO/IEC 9899, but
> > > we add a check for the compiler we have tested to be on the safe side.
> > >
> > > Note that we decided against adding a #error or #warn for compilers that
> > > haven't been validated, as we don't want to introduce breakage for people
> > > who may already be using the header with something else than gcc, MSVC or
> > > Clang. Instead, we expect those to send a patch that adds their compiler
> > > to the list, once they have tested the macros there.
> > >
> > > Signed-off-by: Pete Batard <pete@akeo.ie>
> > > ---
> > > EmbeddedPkg/Include/Library/TimeBaseLib.h | 32 ++++++++++++++++++++
> > > 1 file changed, 32 insertions(+)
> > >
> > > diff --git a/EmbeddedPkg/Include/Library/TimeBaseLib.h b/EmbeddedPkg/Include/Library/TimeBaseLib.h
> > > index 4103c89b3891..ee2f191d985b 100644
> > > --- a/EmbeddedPkg/Include/Library/TimeBaseLib.h
> > > +++ b/EmbeddedPkg/Include/Library/TimeBaseLib.h
> > > @@ -12,6 +12,38 @@
> > > #include <Uefi/UefiBaseType.h>
> > > +//
> > > +// Convenience macros to obtain a build date
> > > +//
> > > +// These macros should work for any compiler that follows ISO/IEC 9899,
> > > +// in which case __DATE__ is defined as a "Mmm dd yyyy" 11 chars string,
> > > +// but add an explicit filter for compilers that have been validated.
> > > +//
> > > +#if (defined(__GNUC__) || defined(_MSC_VER) || defined(__clang__))
> > > +#define TIME_BUILD_YEAR (__DATE__[7] == '?' ? 1900 \
> > > + : (((__DATE__[7] - '0') * 1000 ) \
> > > + + (__DATE__[8] - '0') * 100 \
> > > + + (__DATE__[9] - '0') * 10 \
> > > + + __DATE__[10] - '0'))
> > > +#define TIME_BUILD_MONTH ( __DATE__ [2] == '?' ? 1 \
> > > + : __DATE__ [2] == 'n' ? ( \
> > > + __DATE__ [1] == 'a' ? 1 : 6) \
> > > + : __DATE__ [2] == 'b' ? 2 \
> > > + : __DATE__ [2] == 'r' ? ( \
> > > + __DATE__ [0] == 'M' ? 3 : 4) \
> > > + : __DATE__ [2] == 'y' ? 5 \
> > > + : __DATE__ [2] == 'l' ? 7 \
> > > + : __DATE__ [2] == 'g' ? 8 \
> > > + : __DATE__ [2] == 'p' ? 9 \
> > > + : __DATE__ [2] == 't' ? 10 \
> > > + : __DATE__ [2] == 'v' ? 11 \
> > > + : 12)
> > > +#define TIME_BUILD_DAY ( __DATE__[4] == '?' ? 1 \
> > > + : ((__DATE__[4] == ' ' ? 0 : \
> > > + ((__DATE__[4] - '0') * 10)) \
> > > + + __DATE__[5] - '0'))
> > > +#endif
> > > +
> > > // Define EPOCH (1970-JANUARY-01) in the Julian Date representation
> > > #define EPOCH_JULIAN_DATE 2440588
> > > --
> > > 2.21.0.windows.1
> > >
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-08-03 13:00 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-07-24 16:37 [PATCH 1/1] EmbeddedPkg/TimeBaseLib: Add macros to get build year/month/day Pete Batard
2020-08-03 12:09 ` Leif Lindholm
2020-08-03 12:21 ` Pete Batard
2020-08-03 13:00 ` Leif Lindholm
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox