diff options
author | Olivier Hainque <hainque@adacore.com> | 2020-10-13 09:53:30 +0000 |
---|---|---|
committer | Olivier Hainque <hainque@adacore.com> | 2020-10-16 15:33:35 +0000 |
commit | 57dd4e7bb754db3f2ccdffd031d8f252d0a6d3bb (patch) | |
tree | a99c40d59417bee04a1a1adb87d4f3e0cf641a90 /gcc | |
parent | 90042c43a92c452a5f9f3afbfcdad511ea09a54f (diff) | |
download | gcc-57dd4e7bb754db3f2ccdffd031d8f252d0a6d3bb.zip gcc-57dd4e7bb754db3f2ccdffd031d8f252d0a6d3bb.tar.gz gcc-57dd4e7bb754db3f2ccdffd031d8f252d0a6d3bb.tar.bz2 |
Allow self configured definition of _WRS_VXWORKS_MAJOR
This conditions the use of system headers to fetch a
_WRS_VXWORKS_MAJOR macro on the non definition of that
macro. This allows builds where a specific value is
predefined, e.g. with a self spec, useful in environments
where the system headers don't actually define that macro
(e.g. vxworks 5 or 653).
In addition, _WRS_VXWORKS_MINOR is only provided by the
system headers when really meaningful, e.g. from 6.4 to 6.9.
We just pick a conservative default to 0 for all the cases
where it is not exposed by the system headers or otherwise.
2020-10-15 Olivier Hainque <hainque@adacore.com>
gcc/
* config/vxworks/_vxworks-versions.h: Only include
version.h if _WRS_VXWORKS_MAJOR is not defined.
Provide a default _WRS_VXWORKS_MINOR (0).
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/vxworks/_vxworks-versions.h | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/gcc/config/vxworks/_vxworks-versions.h b/gcc/config/vxworks/_vxworks-versions.h index 0aaf547..15e8bfe 100644 --- a/gcc/config/vxworks/_vxworks-versions.h +++ b/gcc/config/vxworks/_vxworks-versions.h @@ -22,17 +22,29 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see #ifndef _VXWORKS_VERSIONS_H #define _VXWORKS_VERSIONS_H 1 -/* All we need is access to the bare _WRS_VXWORKS_MAJOR/MINOR macros - exposed by version.h. Cheat a bit to make sure we don't drag additional - header files, which can easily cause #include ordering nightmares. */ +/* All we need is access to the bare _WRS_VXWORKS_MAJOR/MINOR macros, + exposed by version.h or already provided somehow (e.g. with a self + spec for some reason). When resorting to system headers, cheat a + bit to make sure we don't drag additional header files, which can + easily cause #include ordering nightmares. */ +#if !defined(_WRS_VXWORKS_MAJOR) #pragma push_macro("_WRS_KERNEL") #undef _WRS_KERNEL #include <version.h> #pragma pop_macro("_WRS_KERNEL") +#endif + +/* A lot depends on the MAJOR so we really need to make sure we have + that. MINOR is less critical and many environments don't actually + define it unless it is really meaningful (e.g. 6.4 through 6.9). */ #if !defined(_WRS_VXWORKS_MAJOR) -#error "VxWorks version macros needed but not defined" +#error "_WRS_VXWORKS_MAJOR undefined" +#endif + +#if !defined(_WRS_VXWORKS_MINOR) +#define _WRS_VXWORKS_MINOR 0 #endif #define _VXWORKS_MAJOR_GT(MAJOR) (_WRS_VXWORKS_MAJOR > (MAJOR)) |