Merge ~dirk.zimoch/epics-base:vxWorks5 into ~epics-core/epics-base/+git/epics-base:core/master

Proposed by Dirk Zimoch
Status: Rejected
Rejected by: Ralph Lange
Proposed branch: ~dirk.zimoch/epics-base:vxWorks5
Merge into: ~epics-core/epics-base/+git/epics-base:core/master
Diff against target: 128 lines (+57/-10)
3 files modified
configure/RULES_BUILD (+17/-0)
configure/os/CONFIG.Common.vxWorksCommon (+31/-10)
documentation/RELEASE_NOTES.html (+9/-0)
Reviewer Review Type Date Requested Status
Ralph Lange Needs Resubmitting
Review via email: mp+355499@code.launchpad.net

Description of the change

This change brings back the possibility to compile EPICS 7 for vxWorks 5 (actually up to 6.3).
It implements a mechanism to disable certain modules for specific target architecture using the Makefile variable SKIP_BUILDS with a pattern list of modules to skip. The variable can be set individually for each target architecture.

This change sets 'SKIP_BUILDS=pv% normativeTypes' for vxWorks targets with a gcc version lower than 3.4, that is vxWorks versions up to 6.3.

To post a comment you must log in.
Revision history for this message
Ralph Lange (ralph-lange) wrote :

core/master is dead since we re-united the base modules into a single branch.
7.0 is the default branch ever since.

review: Disapprove
Revision history for this message
Ralph Lange (ralph-lange) wrote :

Oops, I thought this was the same as your other merge proposal.
Please resubmit with 7.0 as target branch.

review: Needs Resubmitting

Unmerged commits

2f95169... by Dirk Zimoch

re-enable building vxWorks 5

3aa6c05... by Dirk Zimoch

Add mechanism to skip modules for selected architectures

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/configure/RULES_BUILD b/configure/RULES_BUILD
2index 9b8cbf0..daaae86 100644
3--- a/configure/RULES_BUILD
4+++ b/configure/RULES_BUILD
5@@ -84,6 +84,23 @@ endif
6 -include $(CONFIG)/RULES.Db
7
8 #---------------------------------------------------------------
9+# Do not build anything if current path matches SKIP_BUILD
10+
11+ifneq (,$(strip $(SKIP_BUILDS)))
12+CURRENT_MODULE=$(subst $(realpath $(TOP)/..)/,,$(subst $(realpath $(dir $(lastword $(MAKEFILE_LIST)))..)/,,$(realpath ..)))
13+ifneq ($(filter $(SKIP_BUILDS) $(addsuffix /%,$(SKIP_BUILDS)),$(CURRENT_MODULE)),)
14+$(info Skipping $(CURRENT_MODULE) for $(T_A))
15+PROD=
16+TESTPROD=
17+LIBRARY=
18+TESTLIBRARY=
19+LOADABLE_LIBRARY=
20+TESTS=
21+SRC_FILES=
22+endif
23+endif
24+
25+#---------------------------------------------------------------
26 # Include defines and rules for prod, library and test* targets
27
28 #ifneq (,$(strip $(PROD) $(TESTPROD) $(LIBRARY) $(TESTLIBRARY) $(LOADABLE_LIBRARY) ))
29diff --git a/configure/os/CONFIG.Common.vxWorksCommon b/configure/os/CONFIG.Common.vxWorksCommon
30index 50f6269..2a13656 100644
31--- a/configure/os/CONFIG.Common.vxWorksCommon
32+++ b/configure/os/CONFIG.Common.vxWorksCommon
33@@ -63,6 +63,7 @@ VXWORKS_MAJOR_VERSION = $(basename $(basename $(VXWORKS_VERSION)))
34
35 # These are needed for vxWorks 6.x; the GNU toolset version number
36 # is in the path to the compiler tools:
37+VX_GNU_VERSION_5 = 2.96
38 VX_GNU_VERSION_6.0 = 3.3.2
39 VX_GNU_VERSION_6.1 = 3.3.2
40 VX_GNU_VERSION_6.2 = 3.3.2
41@@ -73,9 +74,17 @@ VX_GNU_VERSION_6.6 = 4.1.2
42 VX_GNU_VERSION_6.7 = 4.1.2
43 VX_GNU_VERSION_6.8 = 4.1.2
44 VX_GNU_VERSION_6.9 = 4.3.3
45-VX_GNU_VERSION = $(VX_GNU_VERSION_$(VXWORKS_VERSION))
46+VX_GNU_VERSION_6 = $(VX_GNU_VERSION_$(VXWORKS_VERSION))
47+VX_GNU_VERSION = $(VX_GNU_VERSION_$(VXWORKS_MAJOR_VERSION))
48
49 VX_GNU_MAJOR_VERSION = $(basename $(basename $(VX_GNU_VERSION)))
50+VX_GNU_MINOR_VERSION = $(basename $(patsubst $(VX_GNU_MAJOR_VERSION).%,%,$(VX_GNU_VERSION)))
51+
52+# gcc version before 3.4 are "old" and need special treatment
53+VX_OLD_GCC_2 = OLD
54+VX_OLD_GCC_3.3 = OLD
55+VX_OLD_GCC_3 = $(VX_OLD_GCC_3.$(VX_GNU_MINOR_VERSION))
56+VX_OLD_GCC = $(VX_OLD_GCC_$(VX_GNU_MAJOR_VERSION))
57
58 #--------------------------------------------------
59 # Fix old Linux WIND_HOST_TYPE
60@@ -85,14 +94,20 @@ endif
61
62 #--------------------------------------------------
63 # vxWorks directory definitions
64-VX_DIR = $(WIND_BASE)/vxworks-$(VXWORKS_VERSION)
65+VX_DIR_5 = $(WIND_BASE)
66+VX_DIR_6 = $(WIND_BASE)/vxworks-$(VXWORKS_VERSION)
67+VX_DIR = $(VX_DIR_$(VXWORKS_MAJOR_VERSION))
68
69-GNU_TARGET_INCLUDE_DIR = $(VX_DIR)/target/h $(VX_DIR)/target/h/wrn/coreip
70+VX_INCLUDE_DIRS_5 = $(VX_DIR)/target/h
71+VX_INCLUDE_DIRS_6 = $(VX_DIR)/target/h $(VX_DIR)/target/h/wrn/coreip
72+GNU_TARGET_INCLUDE_DIR = $(VX_INCLUDE_DIRS_$(VXWORKS_MAJOR_VERSION))
73
74 #--------------------------------------------------
75 # vxWorks GNU directories
76
77-GNU_DIR = $(WIND_BASE)/gnu/$(VX_GNU_VERSION)-vxworks-$(VXWORKS_VERSION)/$(WIND_HOST_TYPE)
78+GNU_DIR_5 = $(WIND_BASE)/host/$(WIND_HOST_TYPE)
79+GNU_DIR_6 = $(WIND_BASE)/gnu/$(VX_GNU_VERSION)-vxworks-$(VXWORKS_VERSION)/$(WIND_HOST_TYPE)
80+GNU_DIR = $(GNU_DIR_$(VXWORKS_MAJOR_VERSION))
81
82 #--------------------------------------------------
83 # This finds nm on any supported VxWorks version
84@@ -133,12 +148,18 @@ OPT_CXXFLAGS_YES = -O2
85 # code flags
86 CODE_CFLAGS =
87 #
88-# For vxWorks versions before 6.3 we need this g++ compiler flag
89-CODE_CXXFLAGS_6.0 = -fno-implicit-templates
90-CODE_CXXFLAGS_6.1 = -fno-implicit-templates
91-CODE_CXXFLAGS_6.2 = -fno-implicit-templates
92-CODE_CXXFLAGS_6 = $(CODE_CXXFLAGS_$(VXWORKS_VERSION))
93-CODE_CXXFLAGS = $(CODE_CXXFLAGS_$(VXWORKS_MAJOR_VERSION))
94+# For gcc versions before 3.4 we need this g++ compiler flag
95+CODE_CXXFLAGS_OLD = -fno-implicit-templates
96+CODE_CXXFLAGS = $(CODE_CXXFLAGS_$(VX_OLD_GCC))
97+
98+#--------------------------------------------------
99+# Modules we cannot build with old compiler
100+
101+PV_MODULES = pv% normativeTypes
102+SKIP_BUILDS_5 = $(PV_MODULES)
103+SKIP_BUILDS_OLD = $(PV_MODULES)
104+SKIP_BUILDS_6 = $(SKIP_BUILDS_$(VX_OLD_GCC))
105+SKIP_BUILDS = $(SKIP_BUILDS_$(VXWORKS_MAJOR_VERSION))
106
107 #--------------------------------------------------
108 # no shared libs for vxWorks
109diff --git a/documentation/RELEASE_NOTES.html b/documentation/RELEASE_NOTES.html
110index d798b50..386f145 100644
111--- a/documentation/RELEASE_NOTES.html
112+++ b/documentation/RELEASE_NOTES.html
113@@ -18,6 +18,15 @@
114
115 -->
116
117+<h3>Skipping build of modules</h3>
118+
119+<p>Any module can be skipped during the build for a given architecture by setting
120+the variable <tt>SKIP_BUILDS</tt> to a list of patterns matching the
121+module directories to skip. For example to skip building any PV access related
122+modules set <code>SKIP_BUILDS=pv%&nbsp;normativeTypes</code> in the
123+CONFIG.Common.&lt;arch&gt; file for that architecture.
124+</p>
125+
126 <h1 align="center">EPICS Release 7.0.1.1</h1>
127
128 <h3>Changed SIML failure behavior</h3>

Subscribers

People subscribed via source and target branches