forked from OPCFoundation/UA-ModelCompiler
-
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathBuildStandardTypes.bat
More file actions
228 lines (196 loc) · 10.9 KB
/
Copy pathBuildStandardTypes.bat
File metadata and controls
228 lines (196 loc) · 10.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
@ECHO off
SETLOCAL
set MODELCOMPILER=.\Bin\Release\OOI.ModelCompilerUI.exe
set OUTPUT=.\Bin\nodesets
set INPUT=.\Opc.Ua.ModelCompiler\Design
set CSVINPUT=.\Opc.Ua.ModelCompiler\CSVs
IF NOT "%1"=="" (set OUTPUT=%OUTPUT%\%1) else (set OUTPUT=%OUTPUT%\master)
IF NOT "%1"=="" (set INPUT=%INPUT%.%1) else (set INPUT=%INPUT%.v104)
IF NOT "%1"=="" (set VERSION=-version %1) else (set VERSION=-version v104)
IF NOT "%2"=="" set EXCLUDE=-exclude %2
IF "%1"=="v103" set CSVINPUT=%INPUT%
REM Set the following values to automatically copy the generated source code to your relevant stack locations
REM
REM for example:
REM set ANSIC_TARGET=..\..\uastack\Source\Ansi C Stack\
REM set DOTNET_TARGET=..\..\uastack\Source\Common\Core\
REM set DI_TARGET=..\..\uastack\Source\Common\Core\Stack\Generated\
REM set ADI_TARGET=..\..\uastack\Source\Common\Core\Stack\Generated\
REM
REM in order to update the nodeset of the UA stack set:
REM set DOTNET_TARGET=..\UA-.NETStandard\Stack\Opc.Ua.Core
REM set GDS_TARGET=..\UA-.NETStandard\Libraries\Opc.Ua.Gds.Server.Common
REM then: 'BuildStandardTypes v104'
REM
REM Leaving these fields empty will skip the operation
set ANSIC_TARGET=
set DOTNET_TARGET=.\Bin\Stack
set DOTNET_TARGETOpcUaCore=%DOTNET_TARGET%\Opc.Ua.Core
IF NOT EXIST %DOTNET_TARGET% (
MKDIR %DOTNET_TARGET%
MKDIR %DOTNET_TARGETOpcUaCore%
MKDIR %DOTNET_TARGETOpcUaCore%\Schema
MKDIR %DOTNET_TARGETOpcUaCore%\Stack
MKDIR %DOTNET_TARGETOpcUaCore%\Stack\Generated
MKDIR %DOTNET_TARGETOpcUaCore%\Types
MKDIR %DOTNET_TARGETOpcUaCore%\Types\Generated
MKDIR %DOTNET_TARGETOpcUaCore%\Types\Schemas
)
set GDS_TARGET=
set DI_TARGET=
set ADI_TARGET=
set NODESET_TARGET=.\Tests\NodeSetTest
set DEMOMODEL_TARGET=.\Tests\DemoModel
set PROVISIONING_TARGET=D:\Work\OPC\UA-.NETStandard-Prototypes\Libraries\Opc.Ua.Gds.Server.Common\Provisioning\
set USEALLOWSUBTYPES=
REM set USEALLOWSUBTYPES=-useAllowSubtypes
REM Make sure that all of our output locations exist.
REM IF NOT "%1"=="v104" (set DOTNET_TARGET=)
IF NOT EXIST %MODELCOMPILER% GOTO noModelCompiler
IF NOT EXIST %OUTPUT% MKDIR %OUTPUT%
IF NOT EXIST %OUTPUT%\Schema MKDIR %OUTPUT%\Schema
IF NOT EXIST %OUTPUT%\DotNet MKDIR %OUTPUT%\DotNet
IF NOT EXIST %OUTPUT%\AnsiC MKDIR %OUTPUT%\AnsiC
REM STEP 1) Generate all of our files first...
SET PARTNAME="StandardTypes"
ECHO Building Model %PARTNAME%
ECHO %MODELCOMPILER% -d2 "%INPUT%\StandardTypes.xml" %VERSION% %EXCLUDE% -d2 "%INPUT%\UA Core Services.xml" -c "%CSVINPUT%\StandardTypes.csv" -o2 "%OUTPUT%\Schema\" -stack "%OUTPUT%\DotNet\" -ansic "%OUTPUT%\AnsiC\" %USEALLOWSUBTYPES%
%MODELCOMPILER% -d2 "%INPUT%\StandardTypes.xml" %VERSION% %EXCLUDE% -d2 "%INPUT%\UA Core Services.xml" -c "%CSVINPUT%\StandardTypes.csv" -o2 "%OUTPUT%\Schema\" -stack "%OUTPUT%\DotNet\" -ansic "%OUTPUT%\AnsiC\" %USEALLOWSUBTYPES%
IF %ERRORLEVEL% NEQ 0 ( ECHO Failed %PARTNAME% & EXIT /B 1 )
IF EXIST %INPUT%\DemoModel.xml CALL PublishModel DemoModel DemoModel %1 %2
IF "%3"=="all" (
CALL PublishModel OpcUaGdsModel GDS %1 %2
CALL PublishModel OpcUaDiModel DI %1 %2
CALL PublishModel OpcUaAdiModel ADI %1 %2
CALL PublishModel OpcUaPLCopenModel PLCopen %1 %2
CALL PublishModel MTConnectModel MTConnect %1 %2
CALL PublishModel OpcUaFDIPart5Model FDI %1 %2
CALL PublishModel OpcUaFDIPart7Model FDI %1 %2
CALL PublishModel SercosModel Sercos %1 %2
)
ECHO Updating License
ECHO ON
%MODELCOMPILER% -input %OUTPUT% -pattern *.xml -license MITXML -silent
%MODELCOMPILER% -input %OUTPUT% -pattern *.xsd -license MITXML -silent
%MODELCOMPILER% -input %OUTPUT% -pattern *.bsd -license MITXML -silent
%MODELCOMPILER% -input %OUTPUT% -pattern *.cs -license MIT -silent
%MODELCOMPILER% -input %OUTPUT% -pattern *.h -license MIT -silent
%MODELCOMPILER% -input %OUTPUT% -pattern *.c -license MIT -silent
REM @ECHO OFF
REM SET PARTNAME="DemoModel"
REM ECHO Building %PARTNAME%
REM IF NOT EXIST %OUTPUT%\DemoModel MKDIR %OUTPUT%\DemoModel
REM %MODELCOMPILER% -d2 "%INPUT%\DemoModel.xml" -cg "%INPUT%\DemoModel.csv" -o2 "%OUTPUT%\DemoModel\"
REM IF %ERRORLEVEL% NEQ 0 ( ECHO Failed %PARTNAME% & EXIT /B 5 )
REM STEP 2) Copy the generated files to the OUTPUT directory which is how our nodeset files are created...
ECHO Copying CSV files to %OUTPUT%\Schema
ECHO ON
TYPE "%CSVINPUT%\StandardTypes.csv" | FINDSTR /V /E Unspecified > "%OUTPUT%\Schema\NodeIds.csv"
COPY "%CSVINPUT%\UA Attributes.csv" "%OUTPUT%\Schema\AttributeIds.csv"
COPY "%CSVINPUT%\UA ServerCapabilities.csv" "%OUTPUT%\Schema\ServerCapabilities.csv"
COPY "%OUTPUT%\DotNet\Opc.Ua.StatusCodes.csv" "%OUTPUT%\Schema\StatusCode.csv"
COPY ".\Schemas\UANodeSet.xsd" "%OUTPUT%\Schema\UANodeSet.xsd"
COPY ".\Schemas\SecuredApplication.xsd" "%OUTPUT%\Schema\SecuredApplication.xsd"
COPY ".\Schemas\OPCBinarySchema.xsd" "%OUTPUT%\Schema\OPCBinarySchema.xsd"
REM @ECHO OFF
ECHO Copying CSV files to %DOTNET_TARGETOpcUaCore%\Schema\
ECHO ON
COPY "%OUTPUT%\Schema\NodeIds.csv" "%DOTNET_TARGETOpcUaCore%\Schema\NodeIds.csv"
COPY "%OUTPUT%\Schema\AttributeIds.csv" "%DOTNET_TARGETOpcUaCore%\Schema\AttributeIds.csv"
COPY "%OUTPUT%\Schema\ServerCapabilities.csv" "%DOTNET_TARGETOpcUaCore%\Schema\ServerCapabilities.csv"
COPY "%OUTPUT%\Schema\StatusCode.csv" "%DOTNET_TARGETOpcUaCore%\Schema\Opc.Ua.StatusCodes.csv"
COPY ".\Schemas\UANodeSet.xsd" "%DOTNET_TARGETOpcUaCore%\Schema\UANodeSet.xsd"
COPY ".\Schemas\SecuredApplication.xsd" "%DOTNET_TARGETOpcUaCore%\Schema\SecuredApplication.xsd"
COPY ".\Schemas\OPCBinarySchema.xsd" "%DOTNET_TARGETOpcUaCore%\Types\Schemas\OPCBinarySchema.xsd"
REM @ECHO OFF
REM STEP 2a) Copy code to ANSIC
IF "%ANSIC_TARGET%" NEQ "" (
ECHO Copying ANSIC code to %ANSIC_TARGET%
ECHO ON
COPY "%OUTPUT%\AnsiC\opcua_statuscodes.h" "%ANSIC_TARGET%\core\"
COPY "%OUTPUT%\AnsiC\opcua_exclusions.h" "%ANSIC_TARGET%\core\"
COPY "%OUTPUT%\AnsiC\opcua_attributes.h" "%ANSIC_TARGET%\stackcore\"
COPY "%OUTPUT%\AnsiC\opcua_browsenames.h" "%ANSIC_TARGET%\stackcore\"
COPY "%OUTPUT%\AnsiC\opcua_identifiers.h" "%ANSIC_TARGET%\stackcore\"
COPY "%OUTPUT%\AnsiC\opcua_types.c" "%ANSIC_TARGET%\stackcore\"
COPY "%OUTPUT%\AnsiC\opcua_types.h" "%ANSIC_TARGET%\stackcore\"
COPY "%OUTPUT%\AnsiC\opcua_clientapi.h" "%ANSIC_TARGET%\proxystub\clientproxy\"
COPY "%OUTPUT%\AnsiC\opcua_clientapi.c" "%ANSIC_TARGET%\proxystub\clientproxy\"
COPY "%OUTPUT%\AnsiC\opcua_serverapi.h" "%ANSIC_TARGET%\proxystub\serverstub\"
COPY "%OUTPUT%\AnsiC\opcua_serverapi.c" "%ANSIC_TARGET%\proxystub\serverstub\"
REM @ECHO OFF
)
REM STEP 2b) Copy code to .NET
ECHO ON
REM IF "%DOTNET_TARGET%" NEQ "" (
ECHO Copying .NET code to %DOTNET_TARGET% and %DOTNET_TARGETOpcUaCore%
COPY "%OUTPUT%\Schema\AttributeIds.csv" "%DOTNET_TARGETOpcUaCore%\Schema\AttributeIds.csv"
COPY "%OUTPUT%\Schema\NodeIds.csv" "%DOTNET_TARGETOpcUaCore%\Schema\NodeIds.csv"
COPY "%OUTPUT%\Schema\ServerCapabilities.csv" "%DOTNET_TARGETOpcUaCore%\Schema\ServerCapabilities.csv"
COPY "%OUTPUT%\Schema\Opc.Ua.NodeSet.xml" "%DOTNET_TARGETOpcUaCore%\Schema\Opc.Ua.NodeSet.xml"
COPY "%OUTPUT%\Schema\Opc.Ua.NodeSet2.xml" "%DOTNET_TARGETOpcUaCore%\Schema\Opc.Ua.NodeSet2.xml"
COPY "%OUTPUT%\Schema\Opc.Ua.Types.bsd" "%DOTNET_TARGETOpcUaCore%\Schema\Opc.Ua.Types.bsd"
COPY "%OUTPUT%\Schema\Opc.Ua.Types.xsd" "%DOTNET_TARGETOpcUaCore%\Schema\Opc.Ua.Types.xsd"
COPY "%OUTPUT%\DotNet\Opc.Ua.Endpoints.wsdl" "%DOTNET_TARGETOpcUaCore%\Schema\Opc.Ua.Endpoints.wsdl"
COPY "%OUTPUT%\DotNet\Opc.Ua.Services.wsdl" "%DOTNET_TARGETOpcUaCore%\Schema\Opc.Ua.Services.wsdl"
COPY "%OUTPUT%\DotNet\Opc.Ua.Channels.cs" "%DOTNET_TARGETOpcUaCore%\Stack\Generated\Opc.Ua.Channels.cs"
COPY "%OUTPUT%\DotNet\Opc.Ua.Client.cs" "%DOTNET_TARGETOpcUaCore%\Stack\Generated\Opc.Ua.Client.cs"
COPY "%OUTPUT%\DotNet\Opc.Ua.Endpoints.cs" "%DOTNET_TARGETOpcUaCore%\Stack\Generated\Opc.Ua.Endpoints.cs"
COPY "%OUTPUT%\DotNet\Opc.Ua.Interfaces.cs" "%DOTNET_TARGETOpcUaCore%\Stack\Generated\Opc.Ua.Interfaces.cs"
COPY "%OUTPUT%\DotNet\Opc.Ua.Messages.cs" "%DOTNET_TARGETOpcUaCore%\Stack\Generated\Opc.Ua.Messages.cs"
COPY "%OUTPUT%\DotNet\Opc.Ua.ServerBase.cs" "%DOTNET_TARGETOpcUaCore%\Stack\Generated\Opc.Ua.ServerBase.cs"
COPY "%OUTPUT%\DotNet\Opc.Ua.StatusCodes.cs" "%DOTNET_TARGETOpcUaCore%\Types\Generated\Opc.Ua.StatusCodes.cs"
COPY "%OUTPUT%\DotNet\Opc.Ua.Attributes.cs" "%DOTNET_TARGETOpcUaCore%\Types\Generated\Opc.Ua.Attributes.cs"
COPY "%OUTPUT%\Schema\Opc.Ua.Classes.cs" "%DOTNET_TARGETOpcUaCore%\Stack\Generated\Opc.Ua.Classes.cs"
COPY "%OUTPUT%\Schema\Opc.Ua.Constants.cs" "%DOTNET_TARGETOpcUaCore%\Stack\Generated\Opc.Ua.Constants.cs"
COPY "%OUTPUT%\Schema\Opc.Ua.DataTypes.cs" "%DOTNET_TARGETOpcUaCore%\Stack\Generated\Opc.Ua.DataTypes.cs"
COPY "%OUTPUT%\Schema\Opc.Ua.PredefinedNodes.uanodes" "%DOTNET_TARGETOpcUaCore%\Stack\Generated\Opc.Ua.PredefinedNodes.uanodes"
COPY "%OUTPUT%\Schema\Opc.Ua.PredefinedNodes.xml" "%DOTNET_TARGETOpcUaCore%\Stack\Generated\Opc.Ua.PredefinedNodes.xml"
REM )
REM STEP 2b) Copy code to GDS
IF "%GDS_TARGET%" NEQ "" (
ECHO Copying %OUTPUT%\GDS code to %GDS_TARGET% and %DOTNET_TARGETOpcUaCore%
COPY "%OUTPUT%\GDS\Opc.Ua.Gds.Types.bsd" "%DOTNET_TARGETOpcUaCore%\Schema\Opc.Ua.Gds.Types.bsd"
COPY "%OUTPUT%\GDS\Opc.Ua.Gds.Types.xsd" "%DOTNET_TARGETOpcUaCore%\Schema\Opc.Ua.Gds.Types.xsd"
COPY "%OUTPUT%\GDS\Opc.Ua.Gds.NodeSet2.xml" "%DOTNET_TARGETOpcUaCore%\Schema\Opc.Ua.Gds.NodeSet2.xml"
COPY "%OUTPUT%\GDS\Opc.Ua.Gds.Constants.cs" "%DOTNET_TARGETOpcUaCore%\Stack\Generated\Opc.Ua.Gds.Constants.cs"
COPY "%OUTPUT%\GDS\Opc.Ua.Gds.DataTypes.cs" "%DOTNET_TARGETOpcUaCore%\Stack\Generated\Opc.Ua.Gds.DataTypes.cs"
COPY "%OUTPUT%\GDS\Opc.Ua.Gds.Classes.cs" "%GDS_TARGET%\Model\Opc.Ua.Gds.Classes.cs"
COPY "%OUTPUT%\GDS\Opc.Ua.Gds.PredefinedNodes.uanodes" "%GDS_TARGET%\Model\Opc.Ua.Gds.PredefinedNodes.uanodes"
COPY "%OUTPUT%\GDS\Opc.Ua.Gds.PredefinedNodes.xml" "%GDS_TARGET%\Model\Opc.Ua.Gds.PredefinedNodes.xml"
)
REM STEP 2c) Copy remaining collaboration outputs to their respective locations...
IF "%DI_TARGET%" NEQ "" (
COPY "%OUTPUT%\DI\*.*" "%DI_TARGET%"
)
IF "%ADI_TARGET%" NEQ "" (
COPY "%OUTPUT%\ADI\*.*" "%ADI_TARGET%"
)
IF EXIST %INPUT%\OpcUaProvisioningModel.xml (
IF EXIST "%PROVISIONING_TARGET%" (
ECHO Copying .NET code to %PROVISIONING_TARGET%
COPY "%OUTPUT%\Provisioning\*.*" "%PROVISIONING_TARGET%"
)
)
IF EXIST %INPUT%\OpcUaNodeSetModel.xml (
IF EXIST "%NODESET_TARGET%" (
ECHO Copying .NET code to %NODESET_TARGET%
COPY "%OUTPUT%\NodeSet\*.*" "%NODESET_TARGET%"
)
)
IF EXIST %INPUT%\DemoModel.xml (
IF EXIST "%DEMOMODEL_TARGET%" (
ECHO Copying .NET code to %DEMOMODEL_TARGET%
ECHO COPY "%OUTPUT%\DemoModel\*.*" "%DEMOMODEL_TARGET%"
)
)
IF "%PLCOPEN_TARGET%" NEQ "" (
COPY "%OUTPUT%\ADI\*.*" "%PLCOPEN_TARGET%"
)
GOTO theEnd
:noModelCompiler
ECHO.
ECHO ModelCompiler not found. Please make sure it is compiled in RELEASE mode.
ECHO Searched for: %MODELCOMPILER%
:theEnd
ENDLOCAL