aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorOlivier Hainque <hainque@adacore.com>2020-10-13 09:53:30 +0000
committerOlivier Hainque <hainque@adacore.com>2020-10-16 15:33:35 +0000
commit57dd4e7bb754db3f2ccdffd031d8f252d0a6d3bb (patch)
treea99c40d59417bee04a1a1adb87d4f3e0cf641a90 /gcc
parent90042c43a92c452a5f9f3afbfcdad511ea09a54f (diff)
downloadgcc-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.h20
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))