1 cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
10 HOMEPAGE_URL https://github.com/karljj1/kdis
11 DESCRIPTION "Open source implementation of DIS (Distributed Interactive Simulation) IEEE 1278.1"
17 set(CMAKE_CXX_STANDARD 11)
18 set(CMAKE_CXX_STANDARD_REQUIRED ON)
19 set(CMAKE_CXX_EXTENSIONS OFF)
20 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
21 set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
26 # cmake-lint: disable=C0301
31 "DIS version. Possible values are 5 (IEEE 1278.1-1995), 6 (IEEE 1278.1A-1998), or 7 (IEEE 1278.1x-2012)"
33 # cmake-lint: disable=C0301
35 KDIS_USE_ENUM_DESCRIPTORS
36 "Enumeration descriptors. Allow enum values to be turned into their text labels. This increase the memory footprint of the library"
39 option(BUILD_SHARED_LIBS "Build shared library" ON)
40 option(BUILD_DOCS "Build documentation" OFF)
41 option(BUILD_EXAMPLES "Build examples" OFF)
42 option(BUILD_TESTS "Build tests" OFF)
47 if(NOT ${DIS_VERSION} EQUAL 5
48 AND NOT ${DIS_VERSION} EQUAL 6
49 AND NOT ${DIS_VERSION} EQUAL 7
51 message(FATAL_ERROR "Invalid DIS version ${DIS_VERSION}")
58 include(GNUInstallDirs)
64 ${CMAKE_CURRENT_SOURCE_DIR}/KConfig.hpp.in ${CMAKE_CURRENT_SOURCE_DIR}/include/KDIS/KConfig.hpp
71 set(KDIS_HEADERS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include/KDIS)
72 set(KDIS_SOURCES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)
75 ${KDIS_HEADERS_DIR}/KConfig.hpp ${KDIS_HEADERS_DIR}/KDataStream.hpp
76 ${KDIS_HEADERS_DIR}/KDefines.hpp ${KDIS_HEADERS_DIR}/KEncodersDecoders.hpp
77 ${KDIS_HEADERS_DIR}/KSymbolicNames.hpp
79 set(KDIS_SOURCES ${KDIS_SOURCES_DIR}/KDataStream.cpp)
82 set(KDIS_DATATYPES_HEADERS_DIR ${KDIS_HEADERS_DIR}/DataTypes)
83 set(KDIS_DATATYPES_SOURCES_DIR ${KDIS_SOURCES_DIR}/DataTypes)
89 ${KDIS_DATATYPES_HEADERS_DIR}/AirPlatformAppearance.hpp
90 ${KDIS_DATATYPES_HEADERS_DIR}/AntennaLocation.hpp
91 ${KDIS_DATATYPES_HEADERS_DIR}/ArticulatedPart.hpp
92 ${KDIS_DATATYPES_HEADERS_DIR}/AttachedPart.hpp
93 ${KDIS_DATATYPES_HEADERS_DIR}/ClockTime.hpp
94 ${KDIS_DATATYPES_HEADERS_DIR}/CryptoSystem.hpp
95 ${KDIS_DATATYPES_HEADERS_DIR}/CulturalFeatureAppearance.hpp
96 ${KDIS_DATATYPES_HEADERS_DIR}/DataTypeBase.hpp
97 ${KDIS_DATATYPES_HEADERS_DIR}/DeadReckoningParameter.hpp
98 ${KDIS_DATATYPES_HEADERS_DIR}/Descriptor.hpp
99 ${KDIS_DATATYPES_HEADERS_DIR}/EmissionSystem.hpp
100 ${KDIS_DATATYPES_HEADERS_DIR}/EmitterBeam.hpp
101 ${KDIS_DATATYPES_HEADERS_DIR}/EmitterSystem.hpp
102 ${KDIS_DATATYPES_HEADERS_DIR}/EncodingScheme.hpp
103 ${KDIS_DATATYPES_HEADERS_DIR}/EntityAppearance.hpp
104 ${KDIS_DATATYPES_HEADERS_DIR}/EntityCapabilities.hpp
105 ${KDIS_DATATYPES_HEADERS_DIR}/EntityIdentifier.hpp
106 ${KDIS_DATATYPES_HEADERS_DIR}/EntityMarking.hpp
107 ${KDIS_DATATYPES_HEADERS_DIR}/EntityType.hpp
108 ${KDIS_DATATYPES_HEADERS_DIR}/EnvironmentalsAppearance.hpp
109 ${KDIS_DATATYPES_HEADERS_DIR}/EulerAngles.hpp
110 ${KDIS_DATATYPES_HEADERS_DIR}/FactoryDecoder.hpp
111 ${KDIS_DATATYPES_HEADERS_DIR}/FixedDatum.hpp
112 ${KDIS_DATATYPES_HEADERS_DIR}/FundamentalParameterData.hpp
113 ${KDIS_DATATYPES_HEADERS_DIR}/GuidedMunitionsAppearance.hpp
114 ${KDIS_DATATYPES_HEADERS_DIR}/LandPlatformAppearance.hpp
115 ${KDIS_DATATYPES_HEADERS_DIR}/LifeFormAppearance.hpp
116 ${KDIS_DATATYPES_HEADERS_DIR}/ModulationType.hpp
117 ${KDIS_DATATYPES_HEADERS_DIR}/MunitionDescriptor.hpp
118 ${KDIS_DATATYPES_HEADERS_DIR}/NonHumanLifeFormAppearance.hpp
119 ${KDIS_DATATYPES_HEADERS_DIR}/RadioAppearance.hpp
120 ${KDIS_DATATYPES_HEADERS_DIR}/RadioEntityType.hpp
121 ${KDIS_DATATYPES_HEADERS_DIR}/SensorEmitterAppearance.hpp
122 ${KDIS_DATATYPES_HEADERS_DIR}/SimulationIdentifier.hpp
123 ${KDIS_DATATYPES_HEADERS_DIR}/SpacePlatformAppearance.hpp
124 ${KDIS_DATATYPES_HEADERS_DIR}/SubSurfacePlatformAppearance.hpp
125 ${KDIS_DATATYPES_HEADERS_DIR}/Supplies.hpp
126 ${KDIS_DATATYPES_HEADERS_DIR}/SurfacePlatformAppearance.hpp
127 ${KDIS_DATATYPES_HEADERS_DIR}/TimeStamp.hpp
128 ${KDIS_DATATYPES_HEADERS_DIR}/TrackJamTargetIdentifier.hpp
129 ${KDIS_DATATYPES_HEADERS_DIR}/VariableDatum.hpp
130 ${KDIS_DATATYPES_HEADERS_DIR}/VariableParameter.hpp
131 ${KDIS_DATATYPES_HEADERS_DIR}/Vector.hpp
132 ${KDIS_DATATYPES_HEADERS_DIR}/WorldCoordinates.hpp
133 ${KDIS_DATATYPES_HEADERS_DIR}/SupplyAppearance.hpp
134 ${KDIS_DATATYPES_HEADERS_DIR}/ExpendableAppearance.hpp
139 ${KDIS_DATATYPES_SOURCES_DIR}/AirPlatformAppearance.cpp
140 ${KDIS_DATATYPES_SOURCES_DIR}/AntennaLocation.cpp
141 ${KDIS_DATATYPES_SOURCES_DIR}/ArticulatedPart.cpp
142 ${KDIS_DATATYPES_SOURCES_DIR}/AttachedPart.cpp
143 ${KDIS_DATATYPES_SOURCES_DIR}/ClockTime.cpp
144 ${KDIS_DATATYPES_SOURCES_DIR}/CryptoSystem.cpp
145 ${KDIS_DATATYPES_SOURCES_DIR}/CulturalFeatureAppearance.cpp
146 ${KDIS_DATATYPES_SOURCES_DIR}/DataTypeBase.cpp
147 ${KDIS_DATATYPES_SOURCES_DIR}/DeadReckoningParameter.cpp
148 ${KDIS_DATATYPES_SOURCES_DIR}/Descriptor.cpp
149 ${KDIS_DATATYPES_SOURCES_DIR}/EmissionSystem.cpp
150 ${KDIS_DATATYPES_SOURCES_DIR}/EmitterBeam.cpp
151 ${KDIS_DATATYPES_SOURCES_DIR}/EmitterSystem.cpp
152 ${KDIS_DATATYPES_SOURCES_DIR}/EncodingScheme.cpp
153 ${KDIS_DATATYPES_SOURCES_DIR}/EntityAppearance.cpp
154 ${KDIS_DATATYPES_SOURCES_DIR}/EntityCapabilities.cpp
155 ${KDIS_DATATYPES_SOURCES_DIR}/EntityIdentifier.cpp
156 ${KDIS_DATATYPES_SOURCES_DIR}/EntityMarking.cpp
157 ${KDIS_DATATYPES_SOURCES_DIR}/EntityType.cpp
158 ${KDIS_DATATYPES_SOURCES_DIR}/EnvironmentalsAppearance.cpp
159 ${KDIS_DATATYPES_SOURCES_DIR}/EulerAngles.cpp
160 ${KDIS_DATATYPES_SOURCES_DIR}/FixedDatum.cpp
161 ${KDIS_DATATYPES_SOURCES_DIR}/FundamentalParameterData.cpp
162 ${KDIS_DATATYPES_SOURCES_DIR}/GuidedMunitionsAppearance.cpp
163 ${KDIS_DATATYPES_SOURCES_DIR}/LandPlatformAppearance.cpp
164 ${KDIS_DATATYPES_SOURCES_DIR}/LifeFormAppearance.cpp
165 ${KDIS_DATATYPES_SOURCES_DIR}/ModulationType.cpp
166 ${KDIS_DATATYPES_SOURCES_DIR}/MunitionDescriptor.cpp
167 ${KDIS_DATATYPES_SOURCES_DIR}/NonHumanLifeFormAppearance.cpp
168 ${KDIS_DATATYPES_SOURCES_DIR}/RadioAppearance.cpp
169 ${KDIS_DATATYPES_SOURCES_DIR}/RadioEntityType.cpp
170 ${KDIS_DATATYPES_SOURCES_DIR}/SensorEmitterAppearance.cpp
171 ${KDIS_DATATYPES_SOURCES_DIR}/SimulationIdentifier.cpp
172 ${KDIS_DATATYPES_SOURCES_DIR}/SpacePlatformAppearance.cpp
173 ${KDIS_DATATYPES_SOURCES_DIR}/SubSurfacePlatformAppearance.cpp
174 ${KDIS_DATATYPES_SOURCES_DIR}/Supplies.cpp
175 ${KDIS_DATATYPES_SOURCES_DIR}/SurfacePlatformAppearance.cpp
176 ${KDIS_DATATYPES_SOURCES_DIR}/TimeStamp.cpp
177 ${KDIS_DATATYPES_SOURCES_DIR}/TrackJamTargetIdentifier.cpp
178 ${KDIS_DATATYPES_SOURCES_DIR}/VariableDatum.cpp
179 ${KDIS_DATATYPES_SOURCES_DIR}/VariableParameter.cpp
180 ${KDIS_DATATYPES_SOURCES_DIR}/Vector.cpp
181 ${KDIS_DATATYPES_SOURCES_DIR}/WorldCoordinates.cpp
182 ${KDIS_DATATYPES_SOURCES_DIR}/SupplyAppearance.cpp
183 ${KDIS_DATATYPES_SOURCES_DIR}/ExpendableAppearance.cpp
187 if(${DIS_VERSION} GREATER_EQUAL 6)
191 ${KDIS_DATATYPES_HEADERS_DIR}/AcousticEmitterSystem.hpp
192 ${KDIS_DATATYPES_HEADERS_DIR}/AggregateIdentifier.hpp
193 ${KDIS_DATATYPES_HEADERS_DIR}/AggregateMarking.hpp
194 ${KDIS_DATATYPES_HEADERS_DIR}/AggregateType.hpp
195 ${KDIS_DATATYPES_HEADERS_DIR}/APA.hpp
196 ${KDIS_DATATYPES_HEADERS_DIR}/ArealObjectAppearance.hpp
197 ${KDIS_DATATYPES_HEADERS_DIR}/BeamData.hpp
198 ${KDIS_DATATYPES_HEADERS_DIR}/BoundingSphereRecord.hpp
199 ${KDIS_DATATYPES_HEADERS_DIR}/COMBICState.hpp
200 ${KDIS_DATATYPES_HEADERS_DIR}/CommunicationsChannelType.hpp
201 ${KDIS_DATATYPES_HEADERS_DIR}/ConeRecord1.hpp
202 ${KDIS_DATATYPES_HEADERS_DIR}/ConeRecord2.hpp
203 ${KDIS_DATATYPES_HEADERS_DIR}/EllipsoidRecord1.hpp
204 ${KDIS_DATATYPES_HEADERS_DIR}/EllipsoidRecord2.hpp
205 ${KDIS_DATATYPES_HEADERS_DIR}/EntityDestinationRecord.hpp
206 ${KDIS_DATATYPES_HEADERS_DIR}/EnvironmentRecord.hpp
207 ${KDIS_DATATYPES_HEADERS_DIR}/EnvironmentType.hpp
208 ${KDIS_DATATYPES_HEADERS_DIR}/FlareState.hpp
209 ${KDIS_DATATYPES_HEADERS_DIR}/FundamentalOperationalData.hpp
210 ${KDIS_DATATYPES_HEADERS_DIR}/FundamentalOperationalData_MarkXInterrogator.hpp
211 ${KDIS_DATATYPES_HEADERS_DIR}/FundamentalOperationalData_MarkXTransponder.hpp
212 ${KDIS_DATATYPES_HEADERS_DIR}/FundamentalOperationalData_RRB.hpp
213 ${KDIS_DATATYPES_HEADERS_DIR}/FundamentalOperationalData_Soviet.hpp
214 ${KDIS_DATATYPES_HEADERS_DIR}/GaussianPlumeRecord.hpp
215 ${KDIS_DATATYPES_HEADERS_DIR}/GaussianPuffRecord.hpp
216 ${KDIS_DATATYPES_HEADERS_DIR}/GED.hpp
217 ${KDIS_DATATYPES_HEADERS_DIR}/GED_BasicFixedWingAircraft.hpp
218 ${KDIS_DATATYPES_HEADERS_DIR}/GED_BasicGroundCombatSoldier.hpp
219 ${KDIS_DATATYPES_HEADERS_DIR}/GED_BasicGroundCombatVehicle.hpp
220 ${KDIS_DATATYPES_HEADERS_DIR}/GED_BasicRotorWingAircraft.hpp
221 ${KDIS_DATATYPES_HEADERS_DIR}/GED_EnhancedFixedWingAircraft.hpp
222 ${KDIS_DATATYPES_HEADERS_DIR}/GED_EnhancedGroundCombatSoldier.hpp
223 ${KDIS_DATATYPES_HEADERS_DIR}/GED_EnhancedGroundCombatVehicle.hpp
224 ${KDIS_DATATYPES_HEADERS_DIR}/GED_EnhancedRotaryWingAircraft.hpp
225 ${KDIS_DATATYPES_HEADERS_DIR}/GED_GroundLogisticsVehicle.hpp
226 ${KDIS_DATATYPES_HEADERS_DIR}/GridAxisIrregular.hpp
227 ${KDIS_DATATYPES_HEADERS_DIR}/GridAxisRegular.hpp
228 ${KDIS_DATATYPES_HEADERS_DIR}/GridData.hpp
229 ${KDIS_DATATYPES_HEADERS_DIR}/GridDataType0.hpp
230 ${KDIS_DATATYPES_HEADERS_DIR}/GridDataType1.hpp
231 ${KDIS_DATATYPES_HEADERS_DIR}/GridDataType2.hpp
232 ${KDIS_DATATYPES_HEADERS_DIR}/GroupAssignmentRecord.hpp
233 ${KDIS_DATATYPES_HEADERS_DIR}/GroupDestinationRecord.hpp
234 ${KDIS_DATATYPES_HEADERS_DIR}/IFF_ATC_NAVAIDS_FundamentalParameterData.hpp
235 ${KDIS_DATATYPES_HEADERS_DIR}/IFF_Layer2.hpp
236 ${KDIS_DATATYPES_HEADERS_DIR}/IntercomCommunicationParameters.hpp
237 ${KDIS_DATATYPES_HEADERS_DIR}/KFIXED.hpp
238 ${KDIS_DATATYPES_HEADERS_DIR}/LayerHeader.hpp
239 ${KDIS_DATATYPES_HEADERS_DIR}/LE_DeadReckoningParameter.hpp
240 ${KDIS_DATATYPES_HEADERS_DIR}/LE_EntityIdentifier.hpp
241 ${KDIS_DATATYPES_HEADERS_DIR}/LE_EulerAngles.hpp
242 ${KDIS_DATATYPES_HEADERS_DIR}/LE_Vector.hpp
243 ${KDIS_DATATYPES_HEADERS_DIR}/LinearObjectAppearance.hpp
244 ${KDIS_DATATYPES_HEADERS_DIR}/LinearSegmentParameter.hpp
245 ${KDIS_DATATYPES_HEADERS_DIR}/LineRecord1.hpp
246 ${KDIS_DATATYPES_HEADERS_DIR}/LineRecord2.hpp
247 ${KDIS_DATATYPES_HEADERS_DIR}/Mine.hpp
248 ${KDIS_DATATYPES_HEADERS_DIR}/MinefieldAppearance.hpp
249 ${KDIS_DATATYPES_HEADERS_DIR}/MinefieldDataFilter.hpp
250 ${KDIS_DATATYPES_HEADERS_DIR}/MineFusing.hpp
251 ${KDIS_DATATYPES_HEADERS_DIR}/MinePaintScheme.hpp
252 ${KDIS_DATATYPES_HEADERS_DIR}/NamedLocationIdentifier.hpp
253 ${KDIS_DATATYPES_HEADERS_DIR}/ObjectAppearance.hpp
254 ${KDIS_DATATYPES_HEADERS_DIR}/ObjectType.hpp
255 ${KDIS_DATATYPES_HEADERS_DIR}/OrientationError.hpp
256 ${KDIS_DATATYPES_HEADERS_DIR}/PerimeterPointCoordinate.hpp
257 ${KDIS_DATATYPES_HEADERS_DIR}/PointObjectAppearance.hpp
258 ${KDIS_DATATYPES_HEADERS_DIR}/PointRecord1.hpp
259 ${KDIS_DATATYPES_HEADERS_DIR}/PointRecord2.hpp
260 ${KDIS_DATATYPES_HEADERS_DIR}/PositionError.hpp
261 ${KDIS_DATATYPES_HEADERS_DIR}/PropulsionSystem.hpp
262 ${KDIS_DATATYPES_HEADERS_DIR}/RecordSet.hpp
263 ${KDIS_DATATYPES_HEADERS_DIR}/RectangularVolumeRecord1.hpp
264 ${KDIS_DATATYPES_HEADERS_DIR}/RectangularVolumeRecord2.hpp
265 ${KDIS_DATATYPES_HEADERS_DIR}/RectangularVolumeRecord3.hpp
266 ${KDIS_DATATYPES_HEADERS_DIR}/RelationshipRecord.hpp
267 ${KDIS_DATATYPES_HEADERS_DIR}/RelativeWorldCoordinates.hpp
268 ${KDIS_DATATYPES_HEADERS_DIR}/SecondaryOperationalData.hpp
269 ${KDIS_DATATYPES_HEADERS_DIR}/Shaft.hpp
270 ${KDIS_DATATYPES_HEADERS_DIR}/SilentAggregateSystem.hpp
271 ${KDIS_DATATYPES_HEADERS_DIR}/SilentEntitySystem.hpp
272 ${KDIS_DATATYPES_HEADERS_DIR}/SphereRecord1.hpp
273 ${KDIS_DATATYPES_HEADERS_DIR}/SphereRecord2.hpp
274 ${KDIS_DATATYPES_HEADERS_DIR}/SystemIdentifier.hpp
275 ${KDIS_DATATYPES_HEADERS_DIR}/UnderwaterAcousticEmitterBeam.hpp
276 ${KDIS_DATATYPES_HEADERS_DIR}/UnderwaterAcousticEmitterSystem.hpp
277 ${KDIS_DATATYPES_HEADERS_DIR}/UnderwaterAcousticFundamentalParameterData.hpp
278 ${KDIS_DATATYPES_HEADERS_DIR}/VectoringNozzleSystem.hpp
279 ${KDIS_DATATYPES_HEADERS_DIR}/SeparationPart.hpp
284 ${KDIS_DATATYPES_SOURCES_DIR}/AcousticEmitterSystem.cpp
285 ${KDIS_DATATYPES_SOURCES_DIR}/AggregateIdentifier.cpp
286 ${KDIS_DATATYPES_SOURCES_DIR}/AggregateMarking.cpp
287 ${KDIS_DATATYPES_SOURCES_DIR}/AggregateType.cpp
288 ${KDIS_DATATYPES_SOURCES_DIR}/APA.cpp
289 ${KDIS_DATATYPES_SOURCES_DIR}/ArealObjectAppearance.cpp
290 ${KDIS_DATATYPES_SOURCES_DIR}/BeamData.cpp
291 ${KDIS_DATATYPES_SOURCES_DIR}/BoundingSphereRecord.cpp
292 ${KDIS_DATATYPES_SOURCES_DIR}/COMBICState.cpp
293 ${KDIS_DATATYPES_SOURCES_DIR}/CommunicationsChannelType.cpp
294 ${KDIS_DATATYPES_SOURCES_DIR}/ConeRecord1.cpp
295 ${KDIS_DATATYPES_SOURCES_DIR}/ConeRecord2.cpp
296 ${KDIS_DATATYPES_SOURCES_DIR}/EllipsoidRecord1.cpp
297 ${KDIS_DATATYPES_SOURCES_DIR}/EllipsoidRecord2.cpp
298 ${KDIS_DATATYPES_SOURCES_DIR}/EntityDestinationRecord.cpp
299 ${KDIS_DATATYPES_SOURCES_DIR}/EnvironmentRecord.cpp
300 ${KDIS_DATATYPES_SOURCES_DIR}/EnvironmentType.cpp
301 ${KDIS_DATATYPES_SOURCES_DIR}/FlareState.cpp
302 ${KDIS_DATATYPES_SOURCES_DIR}/FundamentalOperationalData.cpp
303 ${KDIS_DATATYPES_SOURCES_DIR}/FundamentalOperationalData_MarkXInterrogator.cpp
304 ${KDIS_DATATYPES_SOURCES_DIR}/FundamentalOperationalData_MarkXTransponder.cpp
305 ${KDIS_DATATYPES_SOURCES_DIR}/FundamentalOperationalData_RRB.cpp
306 ${KDIS_DATATYPES_SOURCES_DIR}/FundamentalOperationalData_Soviet.cpp
307 ${KDIS_DATATYPES_SOURCES_DIR}/GaussianPlumeRecord.cpp
308 ${KDIS_DATATYPES_SOURCES_DIR}/GaussianPuffRecord.cpp
309 ${KDIS_DATATYPES_SOURCES_DIR}/GED_BasicFixedWingAircraft.cpp
310 ${KDIS_DATATYPES_SOURCES_DIR}/GED_BasicGroundCombatSoldier.cpp
311 ${KDIS_DATATYPES_SOURCES_DIR}/GED_BasicGroundCombatVehicle.cpp
312 ${KDIS_DATATYPES_SOURCES_DIR}/GED_BasicRotorWingAircraft.cpp
313 ${KDIS_DATATYPES_SOURCES_DIR}/GED_EnhancedFixedWingAircraft.cpp
314 ${KDIS_DATATYPES_SOURCES_DIR}/GED_EnhancedGroundCombatSoldier.cpp
315 ${KDIS_DATATYPES_SOURCES_DIR}/GED_EnhancedGroundCombatVehicle.cpp
316 ${KDIS_DATATYPES_SOURCES_DIR}/GED_EnhancedRotaryWingAircraft.cpp
317 ${KDIS_DATATYPES_SOURCES_DIR}/GED_GroundLogisticsVehicle.cpp
318 ${KDIS_DATATYPES_SOURCES_DIR}/GridAxisIrregular.cpp
319 ${KDIS_DATATYPES_SOURCES_DIR}/GridAxisRegular.cpp
320 ${KDIS_DATATYPES_SOURCES_DIR}/GridData.cpp
321 ${KDIS_DATATYPES_SOURCES_DIR}/GridDataType0.cpp
322 ${KDIS_DATATYPES_SOURCES_DIR}/GridDataType1.cpp
323 ${KDIS_DATATYPES_SOURCES_DIR}/GridDataType2.cpp
324 ${KDIS_DATATYPES_SOURCES_DIR}/GroupAssignmentRecord.cpp
325 ${KDIS_DATATYPES_SOURCES_DIR}/GroupDestinationRecord.cpp
326 ${KDIS_DATATYPES_SOURCES_DIR}/IFF_ATC_NAVAIDS_FundamentalParameterData.cpp
327 ${KDIS_DATATYPES_SOURCES_DIR}/IFF_Layer2.cpp
328 ${KDIS_DATATYPES_SOURCES_DIR}/IntercomCommunicationParameters.cpp
329 ${KDIS_DATATYPES_SOURCES_DIR}/KFIXED.cpp
330 ${KDIS_DATATYPES_SOURCES_DIR}/LayerHeader.cpp
331 ${KDIS_DATATYPES_SOURCES_DIR}/LE_DeadReckoningParameter.cpp
332 ${KDIS_DATATYPES_SOURCES_DIR}/LE_EntityIdentifier.cpp
333 ${KDIS_DATATYPES_SOURCES_DIR}/LE_EulerAngles.cpp
334 ${KDIS_DATATYPES_SOURCES_DIR}/LE_Vector.cpp
335 ${KDIS_DATATYPES_SOURCES_DIR}/LinearObjectAppearance.cpp
336 ${KDIS_DATATYPES_SOURCES_DIR}/LinearSegmentParameter.cpp
337 ${KDIS_DATATYPES_SOURCES_DIR}/LineRecord1.cpp
338 ${KDIS_DATATYPES_SOURCES_DIR}/LineRecord2.cpp
339 ${KDIS_DATATYPES_SOURCES_DIR}/Mine.cpp
340 ${KDIS_DATATYPES_SOURCES_DIR}/MinefieldAppearance.cpp
341 ${KDIS_DATATYPES_SOURCES_DIR}/MinefieldDataFilter.cpp
342 ${KDIS_DATATYPES_SOURCES_DIR}/MineFusing.cpp
343 ${KDIS_DATATYPES_SOURCES_DIR}/MinePaintScheme.cpp
344 ${KDIS_DATATYPES_SOURCES_DIR}/NamedLocationIdentifier.cpp
345 ${KDIS_DATATYPES_SOURCES_DIR}/ObjectAppearance.cpp
346 ${KDIS_DATATYPES_SOURCES_DIR}/ObjectType.cpp
347 ${KDIS_DATATYPES_SOURCES_DIR}/OrientationError.cpp
348 ${KDIS_DATATYPES_SOURCES_DIR}/PerimeterPointCoordinate.cpp
349 ${KDIS_DATATYPES_SOURCES_DIR}/PointObjectAppearance.cpp
350 ${KDIS_DATATYPES_SOURCES_DIR}/PointRecord1.cpp
351 ${KDIS_DATATYPES_SOURCES_DIR}/PointRecord2.cpp
352 ${KDIS_DATATYPES_SOURCES_DIR}/PositionError.cpp
353 ${KDIS_DATATYPES_SOURCES_DIR}/PropulsionSystem.cpp
354 ${KDIS_DATATYPES_SOURCES_DIR}/RecordSet.cpp
355 ${KDIS_DATATYPES_SOURCES_DIR}/RectangularVolumeRecord1.cpp
356 ${KDIS_DATATYPES_SOURCES_DIR}/RectangularVolumeRecord2.cpp
357 ${KDIS_DATATYPES_SOURCES_DIR}/RectangularVolumeRecord3.cpp
358 ${KDIS_DATATYPES_SOURCES_DIR}/RelationshipRecord.cpp
359 ${KDIS_DATATYPES_SOURCES_DIR}/RelativeWorldCoordinates.cpp
360 ${KDIS_DATATYPES_SOURCES_DIR}/SecondaryOperationalData.cpp
361 ${KDIS_DATATYPES_SOURCES_DIR}/Shaft.cpp
362 ${KDIS_DATATYPES_SOURCES_DIR}/SilentAggregateSystem.cpp
363 ${KDIS_DATATYPES_SOURCES_DIR}/SilentEntitySystem.cpp
364 ${KDIS_DATATYPES_SOURCES_DIR}/SphereRecord1.cpp
365 ${KDIS_DATATYPES_SOURCES_DIR}/SphereRecord2.cpp
366 ${KDIS_DATATYPES_SOURCES_DIR}/SystemIdentifier.cpp
367 ${KDIS_DATATYPES_SOURCES_DIR}/UnderwaterAcousticEmitterBeam.cpp
368 ${KDIS_DATATYPES_SOURCES_DIR}/UnderwaterAcousticEmitterSystem.cpp
369 ${KDIS_DATATYPES_SOURCES_DIR}/UnderwaterAcousticFundamentalParameterData.cpp
370 ${KDIS_DATATYPES_SOURCES_DIR}/VectoringNozzleSystem.cpp
371 ${KDIS_DATATYPES_SOURCES_DIR}/SeparationPart.cpp
376 if(${DIS_VERSION} GREATER_EQUAL 7)
380 ${KDIS_DATATYPES_HEADERS_DIR}/AttributeRecordSet.hpp
381 ${KDIS_DATATYPES_HEADERS_DIR}/BeamStatus.hpp
382 ${KDIS_DATATYPES_HEADERS_DIR}/CommunicationsNodeID.hpp
383 ${KDIS_DATATYPES_HEADERS_DIR}/DEAreaAimpoint.hpp
384 ${KDIS_DATATYPES_HEADERS_DIR}/EnhancedMode1Code.hpp
385 ${KDIS_DATATYPES_HEADERS_DIR}/ExplosionDescriptor.hpp
386 ${KDIS_DATATYPES_HEADERS_DIR}/ExpendableDescriptor.hpp
387 ${KDIS_DATATYPES_HEADERS_DIR}/IFF_Layer3.hpp
388 ${KDIS_DATATYPES_HEADERS_DIR}/IFF_Layer3Interrogator.hpp
389 ${KDIS_DATATYPES_HEADERS_DIR}/IFF_Layer3Transponder.hpp
390 ${KDIS_DATATYPES_HEADERS_DIR}/IOCommunicationsNode.hpp
391 ${KDIS_DATATYPES_HEADERS_DIR}/IOEffect.hpp
392 ${KDIS_DATATYPES_HEADERS_DIR}/JammingTechnique.hpp
393 ${KDIS_DATATYPES_HEADERS_DIR}/Mode5InterrogatorBasicData.hpp
394 ${KDIS_DATATYPES_HEADERS_DIR}/Mode5InterrogatorStatus.hpp
395 ${KDIS_DATATYPES_HEADERS_DIR}/Mode5TransponderBasicData.hpp
396 ${KDIS_DATATYPES_HEADERS_DIR}/Mode5TransponderStatus.hpp
397 ${KDIS_DATATYPES_HEADERS_DIR}/Mode5TransponderSupplementalData.hpp
398 ${KDIS_DATATYPES_HEADERS_DIR}/ModeXCodeRecord.hpp
399 ${KDIS_DATATYPES_HEADERS_DIR}/StandardVariable.hpp
404 ${KDIS_DATATYPES_SOURCES_DIR}/AttributeRecordSet.cpp
405 ${KDIS_DATATYPES_SOURCES_DIR}/BeamStatus.cpp
406 ${KDIS_DATATYPES_SOURCES_DIR}/CommunicationsNodeID.cpp
407 ${KDIS_DATATYPES_SOURCES_DIR}/DEAreaAimpoint.cpp
408 ${KDIS_DATATYPES_SOURCES_DIR}/EnhancedMode1Code.cpp
409 ${KDIS_DATATYPES_SOURCES_DIR}/ExplosionDescriptor.cpp
410 ${KDIS_DATATYPES_SOURCES_DIR}/ExpendableDescriptor.cpp
411 ${KDIS_DATATYPES_SOURCES_DIR}/IFF_Layer3.cpp
412 ${KDIS_DATATYPES_SOURCES_DIR}/IFF_Layer3Interrogator.cpp
413 ${KDIS_DATATYPES_SOURCES_DIR}/IFF_Layer3Transponder.cpp
414 ${KDIS_DATATYPES_SOURCES_DIR}/IOCommunicationsNode.cpp
415 ${KDIS_DATATYPES_SOURCES_DIR}/IOEffect.cpp
416 ${KDIS_DATATYPES_SOURCES_DIR}/JammingTechnique.cpp
417 ${KDIS_DATATYPES_SOURCES_DIR}/Mode5InterrogatorBasicData.cpp
418 ${KDIS_DATATYPES_SOURCES_DIR}/Mode5InterrogatorStatus.cpp
419 ${KDIS_DATATYPES_SOURCES_DIR}/Mode5TransponderBasicData.cpp
420 ${KDIS_DATATYPES_SOURCES_DIR}/Mode5TransponderStatus.cpp
421 ${KDIS_DATATYPES_SOURCES_DIR}/Mode5TransponderSupplementalData.cpp
422 ${KDIS_DATATYPES_SOURCES_DIR}/ModeXCodeRecord.cpp
423 ${KDIS_DATATYPES_SOURCES_DIR}/StandardVariable.cpp
428 set(KDIS_ENUMS_HEADERS_DIR ${KDIS_HEADERS_DIR}/DataTypes/Enums)
429 set(KDIS_ENUMS_SOURCES_DIR ${KDIS_SOURCES_DIR}/DataTypes/Enums)
435 ${KDIS_ENUMS_HEADERS_DIR}/EnumBurstDescriptor.hpp
436 ${KDIS_ENUMS_HEADERS_DIR}/EnumDescriptor.hpp
437 ${KDIS_ENUMS_HEADERS_DIR}/EnumDesignator.hpp
438 ${KDIS_ENUMS_HEADERS_DIR}/EnumDetonationResult.hpp
439 ${KDIS_ENUMS_HEADERS_DIR}/EnumEmitter.hpp
440 ${KDIS_ENUMS_HEADERS_DIR}/EnumEntityInfoInteraction.hpp
441 ${KDIS_ENUMS_HEADERS_DIR}/EnumEntityManagement.hpp
442 ${KDIS_ENUMS_HEADERS_DIR}/EnumHeader.hpp
443 ${KDIS_ENUMS_HEADERS_DIR}/EnumIFF.hpp
444 ${KDIS_ENUMS_HEADERS_DIR}/EnumMinefield.hpp
445 ${KDIS_ENUMS_HEADERS_DIR}/EnumRadio.hpp
446 ${KDIS_ENUMS_HEADERS_DIR}/EnumSimulationManagement.hpp
447 ${KDIS_ENUMS_HEADERS_DIR}/EnumSupply.hpp
448 ${KDIS_ENUMS_HEADERS_DIR}/EnumSyntheticEnvironment.hpp
449 ${KDIS_ENUMS_HEADERS_DIR}/EnumSystemIdentifier.hpp
450 ${KDIS_ENUMS_HEADERS_DIR}/KDISEnums.hpp
455 ${KDIS_ENUMS_SOURCES_DIR}/EnumBurstDescriptor.cpp
456 ${KDIS_ENUMS_SOURCES_DIR}/EnumDescriptor.cpp
457 ${KDIS_ENUMS_SOURCES_DIR}/EnumDesignator.cpp
458 ${KDIS_ENUMS_SOURCES_DIR}/EnumDetonationResult.cpp
459 ${KDIS_ENUMS_SOURCES_DIR}/EnumEmitter.cpp
460 ${KDIS_ENUMS_SOURCES_DIR}/EnumEntityInfoInteraction.cpp
461 ${KDIS_ENUMS_SOURCES_DIR}/EnumEntityManagement.cpp
462 ${KDIS_ENUMS_SOURCES_DIR}/EnumHeader.cpp
463 ${KDIS_ENUMS_SOURCES_DIR}/EnumIFF.cpp
464 ${KDIS_ENUMS_SOURCES_DIR}/EnumMinefield.cpp
465 ${KDIS_ENUMS_SOURCES_DIR}/EnumRadio.cpp
466 ${KDIS_ENUMS_SOURCES_DIR}/EnumSimulationManagement.cpp
467 ${KDIS_ENUMS_SOURCES_DIR}/EnumSupply.cpp
468 ${KDIS_ENUMS_SOURCES_DIR}/EnumSyntheticEnvironment.cpp
469 ${KDIS_ENUMS_SOURCES_DIR}/EnumSystemIdentifier.cpp
473 if(${DIS_VERSION} GREATER_EQUAL 7)
474 list(APPEND KDIS_HEADERS ${KDIS_ENUMS_HEADERS_DIR}/EnumInformationOperations.hpp)
475 list(APPEND KDIS_SOURCES ${KDIS_ENUMS_SOURCES_DIR}/EnumInformationOperations.cpp)
479 set(KDIS_PDU_BASE_HEADERS_DIR ${KDIS_HEADERS_DIR}/PDU)
480 set(KDIS_PDU_BASE_SOURCES_DIR ${KDIS_SOURCES_DIR}/PDU)
483 list(APPEND KDIS_HEADERS ${KDIS_PDU_BASE_HEADERS_DIR}/Header.hpp
484 ${KDIS_PDU_BASE_HEADERS_DIR}/Header6.hpp ${KDIS_PDU_BASE_HEADERS_DIR}/Bundle.hpp
486 list(APPEND KDIS_SOURCES ${KDIS_PDU_BASE_SOURCES_DIR}/Header6.cpp
487 ${KDIS_PDU_BASE_SOURCES_DIR}/Bundle.cpp
491 if(${DIS_VERSION} GREATER_EQUAL 7)
492 list(APPEND KDIS_HEADERS ${KDIS_PDU_BASE_HEADERS_DIR}/Header7.hpp)
493 list(APPEND KDIS_SOURCES ${KDIS_PDU_BASE_SOURCES_DIR}/Header7.cpp)
496 # PDU Distributed Emission Regeneration
497 set(KDIS_PDU_DISTRIBUTED_EMISSION_REGENERATION_HEADERS_DIR
498 ${KDIS_HEADERS_DIR}/PDU/Distributed_Emission_Regeneration
500 set(KDIS_PDU_DISTRIBUTED_EMISSION_REGENERATION_SOURCES_DIR
501 ${KDIS_SOURCES_DIR}/PDU/Distributed_Emission_Regeneration
504 # PDU Distributed Emission Regeneration DIS 5
505 list(APPEND KDIS_HEADERS
506 ${KDIS_PDU_DISTRIBUTED_EMISSION_REGENERATION_HEADERS_DIR}/Designator_PDU.hpp
507 ${KDIS_PDU_DISTRIBUTED_EMISSION_REGENERATION_HEADERS_DIR}/Electromagnetic_Emission_PDU.hpp
509 list(APPEND KDIS_SOURCES
510 ${KDIS_PDU_DISTRIBUTED_EMISSION_REGENERATION_SOURCES_DIR}/Designator_PDU.cpp
511 ${KDIS_PDU_DISTRIBUTED_EMISSION_REGENERATION_SOURCES_DIR}/Electromagnetic_Emission_PDU.cpp
514 # PDU Distributed Emission Regeneration DIS 6
515 if(${DIS_VERSION} GREATER_EQUAL 6)
516 list(APPEND KDIS_HEADERS ${KDIS_PDU_DISTRIBUTED_EMISSION_REGENERATION_HEADERS_DIR}/IFF_PDU.hpp
517 ${KDIS_PDU_DISTRIBUTED_EMISSION_REGENERATION_HEADERS_DIR}/SEES_PDU.hpp
518 ${KDIS_PDU_DISTRIBUTED_EMISSION_REGENERATION_HEADERS_DIR}/Underwater_Acoustic_PDU.hpp
520 list(APPEND KDIS_SOURCES ${KDIS_PDU_DISTRIBUTED_EMISSION_REGENERATION_SOURCES_DIR}/IFF_PDU.cpp
521 ${KDIS_PDU_DISTRIBUTED_EMISSION_REGENERATION_SOURCES_DIR}/SEES_PDU.cpp
522 ${KDIS_PDU_DISTRIBUTED_EMISSION_REGENERATION_SOURCES_DIR}/Underwater_Acoustic_PDU.cpp
526 # PDU Entity Info Interaction
527 set(KDIS_PDU_ENTITY_INFO_INTERACTION_HEADERS_DIR ${KDIS_HEADERS_DIR}/PDU/Entity_Info_Interaction)
528 set(KDIS_PDU_ENTITY_INFO_INTERACTION_SOURCES_DIR ${KDIS_SOURCES_DIR}/PDU/Entity_Info_Interaction)
530 # PDU Entity Info Interaction DIS 5
531 list(APPEND KDIS_HEADERS ${KDIS_PDU_ENTITY_INFO_INTERACTION_HEADERS_DIR}/Collision_PDU.hpp
532 ${KDIS_PDU_ENTITY_INFO_INTERACTION_HEADERS_DIR}/Entity_State_PDU.hpp
534 list(APPEND KDIS_SOURCES ${KDIS_PDU_ENTITY_INFO_INTERACTION_SOURCES_DIR}/Collision_PDU.cpp
535 ${KDIS_PDU_ENTITY_INFO_INTERACTION_SOURCES_DIR}/Entity_State_PDU.cpp
538 # PDU Entity Info Interaction DIS 6
539 if(${DIS_VERSION} GREATER_EQUAL 6)
540 list(APPEND KDIS_HEADERS
541 ${KDIS_PDU_ENTITY_INFO_INTERACTION_HEADERS_DIR}/Collision_Elastic_PDU.hpp
542 ${KDIS_PDU_ENTITY_INFO_INTERACTION_HEADERS_DIR}/Entity_State_Update_PDU.hpp
544 list(APPEND KDIS_SOURCES
545 ${KDIS_PDU_ENTITY_INFO_INTERACTION_SOURCES_DIR}/Collision_Elastic_PDU.cpp
546 ${KDIS_PDU_ENTITY_INFO_INTERACTION_SOURCES_DIR}/Entity_State_Update_PDU.cpp
550 # PDU Entity Info Interaction DIS 7
551 if(${DIS_VERSION} GREATER_EQUAL 7)
552 list(APPEND KDIS_HEADERS ${KDIS_PDU_ENTITY_INFO_INTERACTION_HEADERS_DIR}/Attribute_PDU.hpp)
553 list(APPEND KDIS_SOURCES ${KDIS_PDU_ENTITY_INFO_INTERACTION_SOURCES_DIR}/Attribute_PDU.cpp)
556 # PDU Entity Management
557 set(KDIS_PDU_ENTITY_MANAGEMENT_HEADERS_DIR ${KDIS_HEADERS_DIR}/PDU/Entity_Management)
558 set(KDIS_PDU_ENTITY_MANAGEMENT_SOURCES_DIR ${KDIS_SOURCES_DIR}/PDU/Entity_Management)
560 # PDU Entity Management DIS 6
561 if(${DIS_VERSION} GREATER_EQUAL 6)
565 ${KDIS_PDU_ENTITY_MANAGEMENT_HEADERS_DIR}/Aggregate_State_PDU.hpp
566 ${KDIS_PDU_ENTITY_MANAGEMENT_HEADERS_DIR}/IsGroupOf_PDU.hpp
567 ${KDIS_PDU_ENTITY_MANAGEMENT_HEADERS_DIR}/IsPartOf_PDU.hpp
568 ${KDIS_PDU_ENTITY_MANAGEMENT_HEADERS_DIR}/Transfer_Control_Request_PDU.hpp
573 ${KDIS_PDU_ENTITY_MANAGEMENT_SOURCES_DIR}/Aggregate_State_PDU.cpp
574 ${KDIS_PDU_ENTITY_MANAGEMENT_SOURCES_DIR}/IsGroupOf_PDU.cpp
575 ${KDIS_PDU_ENTITY_MANAGEMENT_SOURCES_DIR}/IsPartOf_PDU.cpp
576 ${KDIS_PDU_ENTITY_MANAGEMENT_SOURCES_DIR}/Transfer_Control_Request_PDU.cpp
581 set(KDIS_PDU_LIVE_ENTITY_HEADERS_DIR ${KDIS_HEADERS_DIR}/PDU/Live_Entity)
582 set(KDIS_PDU_LIVE_ENTITY_SOURCES_DIR ${KDIS_SOURCES_DIR}/PDU/Live_Entity)
584 # PDU Live Entity DIS 6
585 if(${DIS_VERSION} GREATER_EQUAL 6)
589 ${KDIS_PDU_LIVE_ENTITY_HEADERS_DIR}/Appearance_PDU.hpp
590 ${KDIS_PDU_LIVE_ENTITY_HEADERS_DIR}/Articulated_Parts_PDU.hpp
591 ${KDIS_PDU_LIVE_ENTITY_HEADERS_DIR}/LE_Detonation_PDU.hpp
592 ${KDIS_PDU_LIVE_ENTITY_HEADERS_DIR}/LE_Fire_PDU.hpp
593 ${KDIS_PDU_LIVE_ENTITY_HEADERS_DIR}/LE_Header.hpp
594 ${KDIS_PDU_LIVE_ENTITY_HEADERS_DIR}/TSPI_PDU.hpp
599 ${KDIS_PDU_LIVE_ENTITY_SOURCES_DIR}/Appearance_PDU.cpp
600 ${KDIS_PDU_LIVE_ENTITY_SOURCES_DIR}/Articulated_Parts_PDU.cpp
601 ${KDIS_PDU_LIVE_ENTITY_SOURCES_DIR}/LE_Detonation_PDU.cpp
602 ${KDIS_PDU_LIVE_ENTITY_SOURCES_DIR}/LE_Fire_PDU.cpp
603 ${KDIS_PDU_LIVE_ENTITY_SOURCES_DIR}/LE_Header.cpp
604 ${KDIS_PDU_LIVE_ENTITY_SOURCES_DIR}/TSPI_PDU.cpp
609 set(KDIS_PDU_LOGISTICS_HEADERS_DIR ${KDIS_HEADERS_DIR}/PDU/Logistics)
610 set(KDIS_PDU_LOGISTICS_SOURCES_DIR ${KDIS_SOURCES_DIR}/PDU/Logistics)
612 # PDU Logistics DIS 5
616 ${KDIS_PDU_LOGISTICS_HEADERS_DIR}/Logistics_Header.hpp
617 ${KDIS_PDU_LOGISTICS_HEADERS_DIR}/Repair_Complete_PDU.hpp
618 ${KDIS_PDU_LOGISTICS_HEADERS_DIR}/Repair_Response_PDU.hpp
619 ${KDIS_PDU_LOGISTICS_HEADERS_DIR}/Resupply_Cancel_PDU.hpp
620 ${KDIS_PDU_LOGISTICS_HEADERS_DIR}/Resupply_Offer_PDU.hpp
621 ${KDIS_PDU_LOGISTICS_HEADERS_DIR}/Resupply_Received_PDU.hpp
622 ${KDIS_PDU_LOGISTICS_HEADERS_DIR}/Service_Request_PDU.hpp
627 ${KDIS_PDU_LOGISTICS_SOURCES_DIR}/Logistics_Header.cpp
628 ${KDIS_PDU_LOGISTICS_SOURCES_DIR}/Repair_Complete_PDU.cpp
629 ${KDIS_PDU_LOGISTICS_SOURCES_DIR}/Repair_Response_PDU.cpp
630 ${KDIS_PDU_LOGISTICS_SOURCES_DIR}/Resupply_Cancel_PDU.cpp
631 ${KDIS_PDU_LOGISTICS_SOURCES_DIR}/Resupply_Offer_PDU.cpp
632 ${KDIS_PDU_LOGISTICS_SOURCES_DIR}/Resupply_Received_PDU.cpp
633 ${KDIS_PDU_LOGISTICS_SOURCES_DIR}/Service_Request_PDU.cpp
637 set(KDIS_PDU_MINEFIELD_HEADERS_DIR ${KDIS_HEADERS_DIR}/PDU/Minefield)
638 set(KDIS_PDU_MINEFIELD_SOURCES_DIR ${KDIS_SOURCES_DIR}/PDU/Minefield)
640 # PDU Minefield DIS 6
641 if(${DIS_VERSION} GREATER_EQUAL 6)
645 ${KDIS_PDU_MINEFIELD_HEADERS_DIR}/Minefield_Data_PDU.hpp
646 ${KDIS_PDU_MINEFIELD_HEADERS_DIR}/Minefield_Header.hpp
647 ${KDIS_PDU_MINEFIELD_HEADERS_DIR}/Minefield_Query_PDU.hpp
648 ${KDIS_PDU_MINEFIELD_HEADERS_DIR}/Minefield_Response_NACK_PDU.hpp
649 ${KDIS_PDU_MINEFIELD_HEADERS_DIR}/Minefield_State_PDU.hpp
654 ${KDIS_PDU_MINEFIELD_SOURCES_DIR}/Minefield_Data_PDU.cpp
655 ${KDIS_PDU_MINEFIELD_SOURCES_DIR}/Minefield_Header.cpp
656 ${KDIS_PDU_MINEFIELD_SOURCES_DIR}/Minefield_Query_PDU.cpp
657 ${KDIS_PDU_MINEFIELD_SOURCES_DIR}/Minefield_Response_NACK_PDU.cpp
658 ${KDIS_PDU_MINEFIELD_SOURCES_DIR}/Minefield_State_PDU.cpp
662 # PDU Radio Communications
663 set(KDIS_PDU_RADIO_COMMUNICATIONS_HEADERS_DIR ${KDIS_HEADERS_DIR}/PDU/Radio_Communications)
664 set(KDIS_PDU_RADIO_COMMUNICATIONS_SOURCES_DIR ${KDIS_SOURCES_DIR}/PDU/Radio_Communications)
666 # PDU Radio Communications DIS 5
670 ${KDIS_PDU_RADIO_COMMUNICATIONS_HEADERS_DIR}/Radio_Communications_Header.hpp
671 ${KDIS_PDU_RADIO_COMMUNICATIONS_HEADERS_DIR}/Receiver_PDU.hpp
672 ${KDIS_PDU_RADIO_COMMUNICATIONS_HEADERS_DIR}/Signal_PDU.hpp
673 ${KDIS_PDU_RADIO_COMMUNICATIONS_HEADERS_DIR}/Transmitter_PDU.hpp
678 ${KDIS_PDU_RADIO_COMMUNICATIONS_SOURCES_DIR}/Radio_Communications_Header.cpp
679 ${KDIS_PDU_RADIO_COMMUNICATIONS_SOURCES_DIR}/Receiver_PDU.cpp
680 ${KDIS_PDU_RADIO_COMMUNICATIONS_SOURCES_DIR}/Signal_PDU.cpp
681 ${KDIS_PDU_RADIO_COMMUNICATIONS_SOURCES_DIR}/Transmitter_PDU.cpp
684 # PDU Radio Communications DIS 6
685 if(${DIS_VERSION} GREATER_EQUAL 6)
686 list(APPEND KDIS_HEADERS ${KDIS_PDU_RADIO_COMMUNICATIONS_HEADERS_DIR}/Intercom_Control_PDU.hpp
687 ${KDIS_PDU_RADIO_COMMUNICATIONS_HEADERS_DIR}/Intercom_Signal_PDU.hpp
689 list(APPEND KDIS_SOURCES ${KDIS_PDU_RADIO_COMMUNICATIONS_SOURCES_DIR}/Intercom_Control_PDU.cpp
690 ${KDIS_PDU_RADIO_COMMUNICATIONS_SOURCES_DIR}/Intercom_Signal_PDU.cpp
694 # PDU Simulation Management
695 set(KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR ${KDIS_HEADERS_DIR}/PDU/Simulation_Management)
696 set(KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR ${KDIS_SOURCES_DIR}/PDU/Simulation_Management)
698 # PDU Simulation Management DIS 5
702 ${KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR}/Acknowledge_PDU.hpp
703 ${KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR}/Action_Request_PDU.hpp
704 ${KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR}/Action_Response_PDU.hpp
705 ${KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR}/Comment_PDU.hpp
706 ${KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR}/Create_Entity_PDU.hpp
707 ${KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR}/Data_PDU.hpp
708 ${KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR}/Data_Query_PDU.hpp
709 ${KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR}/Event_Report_PDU.hpp
710 ${KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR}/Remove_Entity_PDU.hpp
711 ${KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR}/Set_Data_PDU.hpp
712 ${KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR}/Simulation_Management_Header.hpp
713 ${KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR}/Start_Resume_PDU.hpp
714 ${KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR}/Stop_Freeze_PDU.hpp
719 ${KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR}/Acknowledge_PDU.cpp
720 ${KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR}/Action_Request_PDU.cpp
721 ${KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR}/Action_Response_PDU.cpp
722 ${KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR}/Comment_PDU.cpp
723 ${KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR}/Create_Entity_PDU.cpp
724 ${KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR}/Data_PDU.cpp
725 ${KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR}/Data_Query_PDU.cpp
726 ${KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR}/Event_Report_PDU.cpp
727 ${KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR}/Remove_Entity_PDU.cpp
728 ${KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR}/Set_Data_PDU.cpp
729 ${KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR}/Simulation_Management_Header.cpp
730 ${KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR}/Start_Resume_PDU.cpp
731 ${KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR}/Stop_Freeze_PDU.cpp
734 # PDU Simulation Management With Reliability
735 set(KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR
736 ${KDIS_HEADERS_DIR}/PDU/Simulation_Management_With_Reliability
738 set(KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR
739 ${KDIS_SOURCES_DIR}/PDU/Simulation_Management_With_Reliability
742 # PDU Simulation Management With Reliability DIS 6
743 if(${DIS_VERSION} GREATER_EQUAL 6)
747 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Acknowledge_R_PDU.hpp
748 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Action_Request_R_PDU.hpp
749 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Action_Response_R_PDU.hpp
750 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Comment_R_PDU.hpp
751 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Create_Entity_R_PDU.hpp
752 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Data_Query_R_PDU.hpp
753 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Data_R_PDU.hpp
754 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Event_Report_R_PDU.hpp
755 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Record_Query_R_PDU.hpp
756 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Record_R_PDU.hpp
757 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Reliability_Header.hpp
758 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Remove_Entity_R_PDU.hpp
759 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Set_Data_R_PDU.hpp
760 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Set_Record_R_PDU.hpp
761 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Start_Resume_R_PDU.hpp
762 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Stop_Freeze_R_PDU.hpp
767 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Acknowledge_R_PDU.cpp
768 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Action_Request_R_PDU.cpp
769 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Action_Response_R_PDU.cpp
770 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Comment_R_PDU.cpp
771 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Create_Entity_R_PDU.cpp
772 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Data_Query_R_PDU.cpp
773 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Data_R_PDU.cpp
774 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Event_Report_R_PDU.cpp
775 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Record_Query_R_PDU.cpp
776 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Record_R_PDU.cpp
777 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Reliability_Header.cpp
778 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Remove_Entity_R_PDU.cpp
779 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Set_Data_R_PDU.cpp
780 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Set_Record_R_PDU.cpp
781 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Start_Resume_R_PDU.cpp
782 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Stop_Freeze_R_PDU.cpp
786 # PDU Synthetic Environment
787 set(KDIS_PDU_SYNTHETIC_ENVIRONMENT_HEADERS_DIR ${KDIS_HEADERS_DIR}/PDU/Synthetic_Environment)
788 set(KDIS_PDU_SYNTHETIC_ENVIRONMENT_SOURCES_DIR ${KDIS_SOURCES_DIR}/PDU/Synthetic_Environment)
790 # PDU Synthetic Environment DIS 6
791 if(${DIS_VERSION} GREATER_EQUAL 6)
795 ${KDIS_PDU_SYNTHETIC_ENVIRONMENT_HEADERS_DIR}/Areal_Object_State_PDU.hpp
796 ${KDIS_PDU_SYNTHETIC_ENVIRONMENT_HEADERS_DIR}/Environmental_Process_PDU.hpp
797 ${KDIS_PDU_SYNTHETIC_ENVIRONMENT_HEADERS_DIR}/Gridded_Data_PDU.hpp
798 ${KDIS_PDU_SYNTHETIC_ENVIRONMENT_HEADERS_DIR}/Linear_Object_State_PDU.hpp
799 ${KDIS_PDU_SYNTHETIC_ENVIRONMENT_HEADERS_DIR}/Object_State_Header.hpp
800 ${KDIS_PDU_SYNTHETIC_ENVIRONMENT_HEADERS_DIR}/Point_Object_State_PDU.hpp
805 ${KDIS_PDU_SYNTHETIC_ENVIRONMENT_SOURCES_DIR}/Areal_Object_State_PDU.cpp
806 ${KDIS_PDU_SYNTHETIC_ENVIRONMENT_SOURCES_DIR}/Environmental_Process_PDU.cpp
807 ${KDIS_PDU_SYNTHETIC_ENVIRONMENT_SOURCES_DIR}/Gridded_Data_PDU.cpp
808 ${KDIS_PDU_SYNTHETIC_ENVIRONMENT_SOURCES_DIR}/Linear_Object_State_PDU.cpp
809 ${KDIS_PDU_SYNTHETIC_ENVIRONMENT_SOURCES_DIR}/Object_State_Header.cpp
810 ${KDIS_PDU_SYNTHETIC_ENVIRONMENT_SOURCES_DIR}/Point_Object_State_PDU.cpp
815 set(KDIS_PDU_WARFARE_HEADERS_DIR ${KDIS_HEADERS_DIR}/PDU/Warfare)
816 set(KDIS_PDU_WARFARE_SOURCES_DIR ${KDIS_SOURCES_DIR}/PDU/Warfare)
819 list(APPEND KDIS_HEADERS ${KDIS_PDU_WARFARE_HEADERS_DIR}/Detonation_PDU.hpp
820 ${KDIS_PDU_WARFARE_HEADERS_DIR}/Fire_PDU.hpp
821 ${KDIS_PDU_WARFARE_HEADERS_DIR}/Warfare_Header.hpp
823 list(APPEND KDIS_SOURCES ${KDIS_PDU_WARFARE_SOURCES_DIR}/Detonation_PDU.cpp
824 ${KDIS_PDU_WARFARE_SOURCES_DIR}/Fire_PDU.cpp
825 ${KDIS_PDU_WARFARE_SOURCES_DIR}/Warfare_Header.cpp
829 if(${DIS_VERSION} GREATER_EQUAL 7)
830 list(APPEND KDIS_HEADERS ${KDIS_PDU_WARFARE_HEADERS_DIR}/Directed_Energy_Fire_PDU.hpp
831 ${KDIS_PDU_WARFARE_HEADERS_DIR}/Entity_Damage_Status_PDU.hpp
833 list(APPEND KDIS_SOURCES ${KDIS_PDU_WARFARE_SOURCES_DIR}/Directed_Energy_Fire_PDU.cpp
834 ${KDIS_PDU_WARFARE_SOURCES_DIR}/Entity_Damage_Status_PDU.cpp
838 # PDU Information Operations
839 set(KDIS_PDU_INFORMATION_OPERATIONS_HEADERS_DIR ${KDIS_HEADERS_DIR}/PDU/Information_Operations)
840 set(KDIS_PDU_INFORMATION_OPERATIONS_SOURCES_DIR ${KDIS_SOURCES_DIR}/PDU/Information_Operations)
842 # PDU Information Operations DIS 7
843 if(${DIS_VERSION} GREATER_EQUAL 7)
844 list(APPEND KDIS_HEADERS ${KDIS_PDU_INFORMATION_OPERATIONS_HEADERS_DIR}/IO_Header.hpp
845 ${KDIS_PDU_INFORMATION_OPERATIONS_HEADERS_DIR}/IO_Action_PDU.hpp
846 ${KDIS_PDU_INFORMATION_OPERATIONS_HEADERS_DIR}/IO_Report_PDU.hpp
848 list(APPEND KDIS_SOURCES ${KDIS_PDU_INFORMATION_OPERATIONS_SOURCES_DIR}/IO_Header.cpp
849 ${KDIS_PDU_INFORMATION_OPERATIONS_SOURCES_DIR}/IO_Action_PDU.cpp
850 ${KDIS_PDU_INFORMATION_OPERATIONS_SOURCES_DIR}/IO_Report_PDU.cpp
855 set(KDIS_EXTRAS_HEADERS_DIR ${KDIS_HEADERS_DIR}/Extras)
856 set(KDIS_EXTRAS_SOURCES_DIR ${KDIS_SOURCES_DIR}/Extras)
861 ${KDIS_EXTRAS_HEADERS_DIR}/DeadReckoningCalculator.hpp
862 ${KDIS_EXTRAS_HEADERS_DIR}/DIS_Logger_Playback.hpp
863 ${KDIS_EXTRAS_HEADERS_DIR}/DIS_Logger_Record.hpp
864 ${KDIS_EXTRAS_HEADERS_DIR}/KConversions.hpp
865 ${KDIS_EXTRAS_HEADERS_DIR}/KRef_Ptr.hpp
866 ${KDIS_EXTRAS_HEADERS_DIR}/KUtils.hpp
867 ${KDIS_EXTRAS_HEADERS_DIR}/Math.hpp
868 ${KDIS_EXTRAS_HEADERS_DIR}/PDU_Factory.hpp
869 ${KDIS_EXTRAS_HEADERS_DIR}/PDU_Factory_Filters.hpp
871 list(APPEND KDIS_SOURCES ${KDIS_EXTRAS_SOURCES_DIR}/DeadReckoningCalculator.cpp
872 ${KDIS_EXTRAS_SOURCES_DIR}/DIS_Logger_Playback.cpp
873 ${KDIS_EXTRAS_SOURCES_DIR}/DIS_Logger_Record.cpp ${KDIS_EXTRAS_SOURCES_DIR}/PDU_Factory.cpp
877 set(KDIS_NETWORK_HEADERS_DIR ${KDIS_HEADERS_DIR}/Network)
878 set(KDIS_NETWORK_SOURCES_DIR ${KDIS_SOURCES_DIR}/Network)
880 list(APPEND KDIS_HEADERS ${KDIS_NETWORK_HEADERS_DIR}/Connection.hpp
881 ${KDIS_NETWORK_HEADERS_DIR}/ConnectionAddressFilter.hpp
882 ${KDIS_NETWORK_HEADERS_DIR}/ConnectionSubscriber.hpp
884 list(APPEND KDIS_SOURCES ${KDIS_NETWORK_SOURCES_DIR}/Connection.cpp
885 ${KDIS_NETWORK_SOURCES_DIR}/ConnectionAddressFilter.cpp
891 add_library(${CMAKE_PROJECT_NAME} ${KDIS_SOURCES})
892 add_library(${CMAKE_PROJECT_NAME}::${CMAKE_PROJECT_NAME} ALIAS ${CMAKE_PROJECT_NAME})
894 include(GenerateExportHeader)
895 generate_export_header(
896 ${CMAKE_PROJECT_NAME} EXPORT_FILE_NAME ${CMAKE_CURRENT_SOURCE_DIR}/include/KDIS/KExport.hpp
897 INCLUDE_GUARD_NAME KDIS_KEXPORT_HPP_
899 list(APPEND KDIS_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/include/KDIS/KExport.hpp)
900 # Include directories
901 target_include_directories(
902 ${CMAKE_PROJECT_NAME}
903 PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
904 $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
905 $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
907 # Compile definitions
908 target_compile_definitions(
909 ${CMAKE_PROJECT_NAME} PRIVATE DIS_VERSION=${DIS_VERSION}
910 $<$<BOOL:${KDIS_USE_ENUM_DESCRIPTORS}>:KDIS_USE_ENUM_DESCRIPTORS>
913 set_target_properties(
914 ${CMAKE_PROJECT_NAME} PROPERTIES VERSION ${CMAKE_PROJECT_VERSION} DEBUG_POSTFIX "d"
916 # TODO Compile options target_compile_options( ${CMAKE_PROJECT_NAME} PRIVATE
917 # $<$<CXX_COMPILER_ID:MSVC>:/W4 /WX> $<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-Wall -Wextra -Wpedantic
923 install(FILES ${KDIS_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/KDIS)
927 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
928 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
929 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
934 DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/KDIS
940 set(CPACK_GENERATOR DEB RPM TXZ TGZ)
941 set(CPACK_PACKAGE_VERSION ${CMAKE_PROJECT_VERSION})
942 set(CPACK_PACKAGE_NAME KDIS)
943 set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${CMAKE_PROJECT_DESCRIPTION})
944 set(CPACK_PACKAGE_FILE_NAME
945 "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}.${CMAKE_SYSTEM_PROCESSOR}"
947 set(CPACK_PACKAGE_RPM_DIR "${CMAKE_CURRENT_BINARY_DIR}/_CPack_Packages/Linux/RPM")
948 set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Karl Jones <Karljj1@yahoo.com>")
955 add_subdirectory(docs)
961 if(${BUILD_EXAMPLES})
962 add_subdirectory(examples)
969 add_subdirectory(tests)