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 TRUE)
19 set(CMAKE_CXX_EXTENSIONS FALSE)
20 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
21 set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE)
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(KDIS_BUILD_DOCS "Build documentation" FALSE)
40 option(KDIS_BUILD_EXAMPLES "Build examples" FALSE)
41 option(KDIS_BUILD_TESTS "Build tests" FALSE)
42 option(BUILD_SHARED_LIBS "Build shared library" TRUE)
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)
59 include(GenerateExportHeader)
60 include(CMakePackageConfigHelpers)
66 ${CMAKE_CURRENT_SOURCE_DIR}/KConfig.hpp.in
67 ${CMAKE_CURRENT_SOURCE_DIR}/include/${PROJECT_NAME}/KConfig.hpp @ONLY
73 set(KDIS_HEADERS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include/${PROJECT_NAME})
74 set(KDIS_SOURCES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)
77 ${KDIS_HEADERS_DIR}/KConfig.hpp ${KDIS_HEADERS_DIR}/KDataStream.hpp
78 ${KDIS_HEADERS_DIR}/KDefines.hpp ${KDIS_HEADERS_DIR}/KEncodersDecoders.hpp
79 ${KDIS_HEADERS_DIR}/KSymbolicNames.hpp
81 set(KDIS_SOURCES ${KDIS_SOURCES_DIR}/KDataStream.cpp)
84 set(KDIS_DATATYPES_HEADERS_DIR ${KDIS_HEADERS_DIR}/DataTypes)
85 set(KDIS_DATATYPES_SOURCES_DIR ${KDIS_SOURCES_DIR}/DataTypes)
91 ${KDIS_DATATYPES_HEADERS_DIR}/AirPlatformAppearance.hpp
92 ${KDIS_DATATYPES_HEADERS_DIR}/AntennaLocation.hpp
93 ${KDIS_DATATYPES_HEADERS_DIR}/ArticulatedPart.hpp
94 ${KDIS_DATATYPES_HEADERS_DIR}/AttachedPart.hpp
95 ${KDIS_DATATYPES_HEADERS_DIR}/ClockTime.hpp
96 ${KDIS_DATATYPES_HEADERS_DIR}/CryptoSystem.hpp
97 ${KDIS_DATATYPES_HEADERS_DIR}/CulturalFeatureAppearance.hpp
98 ${KDIS_DATATYPES_HEADERS_DIR}/DataTypeBase.hpp
99 ${KDIS_DATATYPES_HEADERS_DIR}/DeadReckoningParameter.hpp
100 ${KDIS_DATATYPES_HEADERS_DIR}/Descriptor.hpp
101 ${KDIS_DATATYPES_HEADERS_DIR}/EmissionSystem.hpp
102 ${KDIS_DATATYPES_HEADERS_DIR}/EmitterBeam.hpp
103 ${KDIS_DATATYPES_HEADERS_DIR}/EmitterSystem.hpp
104 ${KDIS_DATATYPES_HEADERS_DIR}/EncodingScheme.hpp
105 ${KDIS_DATATYPES_HEADERS_DIR}/EntityAppearance.hpp
106 ${KDIS_DATATYPES_HEADERS_DIR}/EntityCapabilities.hpp
107 ${KDIS_DATATYPES_HEADERS_DIR}/EntityIdentifier.hpp
108 ${KDIS_DATATYPES_HEADERS_DIR}/EntityMarking.hpp
109 ${KDIS_DATATYPES_HEADERS_DIR}/EntityType.hpp
110 ${KDIS_DATATYPES_HEADERS_DIR}/EnvironmentalsAppearance.hpp
111 ${KDIS_DATATYPES_HEADERS_DIR}/EulerAngles.hpp
112 ${KDIS_DATATYPES_HEADERS_DIR}/FactoryDecoder.hpp
113 ${KDIS_DATATYPES_HEADERS_DIR}/FixedDatum.hpp
114 ${KDIS_DATATYPES_HEADERS_DIR}/FundamentalParameterData.hpp
115 ${KDIS_DATATYPES_HEADERS_DIR}/GuidedMunitionsAppearance.hpp
116 ${KDIS_DATATYPES_HEADERS_DIR}/LandPlatformAppearance.hpp
117 ${KDIS_DATATYPES_HEADERS_DIR}/LifeFormAppearance.hpp
118 ${KDIS_DATATYPES_HEADERS_DIR}/ModulationType.hpp
119 ${KDIS_DATATYPES_HEADERS_DIR}/MunitionDescriptor.hpp
120 ${KDIS_DATATYPES_HEADERS_DIR}/NonHumanLifeFormAppearance.hpp
121 ${KDIS_DATATYPES_HEADERS_DIR}/RadioAppearance.hpp
122 ${KDIS_DATATYPES_HEADERS_DIR}/RadioEntityType.hpp
123 ${KDIS_DATATYPES_HEADERS_DIR}/SensorEmitterAppearance.hpp
124 ${KDIS_DATATYPES_HEADERS_DIR}/SimulationIdentifier.hpp
125 ${KDIS_DATATYPES_HEADERS_DIR}/SpacePlatformAppearance.hpp
126 ${KDIS_DATATYPES_HEADERS_DIR}/SubSurfacePlatformAppearance.hpp
127 ${KDIS_DATATYPES_HEADERS_DIR}/Supplies.hpp
128 ${KDIS_DATATYPES_HEADERS_DIR}/SurfacePlatformAppearance.hpp
129 ${KDIS_DATATYPES_HEADERS_DIR}/TimeStamp.hpp
130 ${KDIS_DATATYPES_HEADERS_DIR}/TrackJamTargetIdentifier.hpp
131 ${KDIS_DATATYPES_HEADERS_DIR}/VariableDatum.hpp
132 ${KDIS_DATATYPES_HEADERS_DIR}/VariableParameter.hpp
133 ${KDIS_DATATYPES_HEADERS_DIR}/Vector.hpp
134 ${KDIS_DATATYPES_HEADERS_DIR}/WorldCoordinates.hpp
135 ${KDIS_DATATYPES_HEADERS_DIR}/SupplyAppearance.hpp
136 ${KDIS_DATATYPES_HEADERS_DIR}/ExpendableAppearance.hpp
141 ${KDIS_DATATYPES_SOURCES_DIR}/AirPlatformAppearance.cpp
142 ${KDIS_DATATYPES_SOURCES_DIR}/AntennaLocation.cpp
143 ${KDIS_DATATYPES_SOURCES_DIR}/ArticulatedPart.cpp
144 ${KDIS_DATATYPES_SOURCES_DIR}/AttachedPart.cpp
145 ${KDIS_DATATYPES_SOURCES_DIR}/ClockTime.cpp
146 ${KDIS_DATATYPES_SOURCES_DIR}/CryptoSystem.cpp
147 ${KDIS_DATATYPES_SOURCES_DIR}/CulturalFeatureAppearance.cpp
148 ${KDIS_DATATYPES_SOURCES_DIR}/DataTypeBase.cpp
149 ${KDIS_DATATYPES_SOURCES_DIR}/DeadReckoningParameter.cpp
150 ${KDIS_DATATYPES_SOURCES_DIR}/Descriptor.cpp
151 ${KDIS_DATATYPES_SOURCES_DIR}/EmissionSystem.cpp
152 ${KDIS_DATATYPES_SOURCES_DIR}/EmitterBeam.cpp
153 ${KDIS_DATATYPES_SOURCES_DIR}/EmitterSystem.cpp
154 ${KDIS_DATATYPES_SOURCES_DIR}/EncodingScheme.cpp
155 ${KDIS_DATATYPES_SOURCES_DIR}/EntityAppearance.cpp
156 ${KDIS_DATATYPES_SOURCES_DIR}/EntityCapabilities.cpp
157 ${KDIS_DATATYPES_SOURCES_DIR}/EntityIdentifier.cpp
158 ${KDIS_DATATYPES_SOURCES_DIR}/EntityMarking.cpp
159 ${KDIS_DATATYPES_SOURCES_DIR}/EntityType.cpp
160 ${KDIS_DATATYPES_SOURCES_DIR}/EnvironmentalsAppearance.cpp
161 ${KDIS_DATATYPES_SOURCES_DIR}/EulerAngles.cpp
162 ${KDIS_DATATYPES_SOURCES_DIR}/FixedDatum.cpp
163 ${KDIS_DATATYPES_SOURCES_DIR}/FundamentalParameterData.cpp
164 ${KDIS_DATATYPES_SOURCES_DIR}/GuidedMunitionsAppearance.cpp
165 ${KDIS_DATATYPES_SOURCES_DIR}/LandPlatformAppearance.cpp
166 ${KDIS_DATATYPES_SOURCES_DIR}/LifeFormAppearance.cpp
167 ${KDIS_DATATYPES_SOURCES_DIR}/ModulationType.cpp
168 ${KDIS_DATATYPES_SOURCES_DIR}/MunitionDescriptor.cpp
169 ${KDIS_DATATYPES_SOURCES_DIR}/NonHumanLifeFormAppearance.cpp
170 ${KDIS_DATATYPES_SOURCES_DIR}/RadioAppearance.cpp
171 ${KDIS_DATATYPES_SOURCES_DIR}/RadioEntityType.cpp
172 ${KDIS_DATATYPES_SOURCES_DIR}/SensorEmitterAppearance.cpp
173 ${KDIS_DATATYPES_SOURCES_DIR}/SimulationIdentifier.cpp
174 ${KDIS_DATATYPES_SOURCES_DIR}/SpacePlatformAppearance.cpp
175 ${KDIS_DATATYPES_SOURCES_DIR}/SubSurfacePlatformAppearance.cpp
176 ${KDIS_DATATYPES_SOURCES_DIR}/Supplies.cpp
177 ${KDIS_DATATYPES_SOURCES_DIR}/SurfacePlatformAppearance.cpp
178 ${KDIS_DATATYPES_SOURCES_DIR}/TimeStamp.cpp
179 ${KDIS_DATATYPES_SOURCES_DIR}/TrackJamTargetIdentifier.cpp
180 ${KDIS_DATATYPES_SOURCES_DIR}/VariableDatum.cpp
181 ${KDIS_DATATYPES_SOURCES_DIR}/VariableParameter.cpp
182 ${KDIS_DATATYPES_SOURCES_DIR}/Vector.cpp
183 ${KDIS_DATATYPES_SOURCES_DIR}/WorldCoordinates.cpp
184 ${KDIS_DATATYPES_SOURCES_DIR}/SupplyAppearance.cpp
185 ${KDIS_DATATYPES_SOURCES_DIR}/ExpendableAppearance.cpp
189 if(${DIS_VERSION} GREATER_EQUAL 6)
193 ${KDIS_DATATYPES_HEADERS_DIR}/AcousticEmitterSystem.hpp
194 ${KDIS_DATATYPES_HEADERS_DIR}/AggregateIdentifier.hpp
195 ${KDIS_DATATYPES_HEADERS_DIR}/AggregateMarking.hpp
196 ${KDIS_DATATYPES_HEADERS_DIR}/AggregateType.hpp
197 ${KDIS_DATATYPES_HEADERS_DIR}/APA.hpp
198 ${KDIS_DATATYPES_HEADERS_DIR}/ArealObjectAppearance.hpp
199 ${KDIS_DATATYPES_HEADERS_DIR}/BeamData.hpp
200 ${KDIS_DATATYPES_HEADERS_DIR}/BoundingSphereRecord.hpp
201 ${KDIS_DATATYPES_HEADERS_DIR}/COMBICState.hpp
202 ${KDIS_DATATYPES_HEADERS_DIR}/CommunicationsChannelType.hpp
203 ${KDIS_DATATYPES_HEADERS_DIR}/ConeRecord1.hpp
204 ${KDIS_DATATYPES_HEADERS_DIR}/ConeRecord2.hpp
205 ${KDIS_DATATYPES_HEADERS_DIR}/EllipsoidRecord1.hpp
206 ${KDIS_DATATYPES_HEADERS_DIR}/EllipsoidRecord2.hpp
207 ${KDIS_DATATYPES_HEADERS_DIR}/EntityDestinationRecord.hpp
208 ${KDIS_DATATYPES_HEADERS_DIR}/EnvironmentRecord.hpp
209 ${KDIS_DATATYPES_HEADERS_DIR}/EnvironmentType.hpp
210 ${KDIS_DATATYPES_HEADERS_DIR}/FlareState.hpp
211 ${KDIS_DATATYPES_HEADERS_DIR}/FundamentalOperationalData.hpp
212 ${KDIS_DATATYPES_HEADERS_DIR}/FundamentalOperationalData_MarkXInterrogator.hpp
213 ${KDIS_DATATYPES_HEADERS_DIR}/FundamentalOperationalData_MarkXTransponder.hpp
214 ${KDIS_DATATYPES_HEADERS_DIR}/FundamentalOperationalData_RRB.hpp
215 ${KDIS_DATATYPES_HEADERS_DIR}/FundamentalOperationalData_Soviet.hpp
216 ${KDIS_DATATYPES_HEADERS_DIR}/GaussianPlumeRecord.hpp
217 ${KDIS_DATATYPES_HEADERS_DIR}/GaussianPuffRecord.hpp
218 ${KDIS_DATATYPES_HEADERS_DIR}/GED.hpp
219 ${KDIS_DATATYPES_HEADERS_DIR}/GED_BasicFixedWingAircraft.hpp
220 ${KDIS_DATATYPES_HEADERS_DIR}/GED_BasicGroundCombatSoldier.hpp
221 ${KDIS_DATATYPES_HEADERS_DIR}/GED_BasicGroundCombatVehicle.hpp
222 ${KDIS_DATATYPES_HEADERS_DIR}/GED_BasicRotorWingAircraft.hpp
223 ${KDIS_DATATYPES_HEADERS_DIR}/GED_EnhancedFixedWingAircraft.hpp
224 ${KDIS_DATATYPES_HEADERS_DIR}/GED_EnhancedGroundCombatSoldier.hpp
225 ${KDIS_DATATYPES_HEADERS_DIR}/GED_EnhancedGroundCombatVehicle.hpp
226 ${KDIS_DATATYPES_HEADERS_DIR}/GED_EnhancedRotaryWingAircraft.hpp
227 ${KDIS_DATATYPES_HEADERS_DIR}/GED_GroundLogisticsVehicle.hpp
228 ${KDIS_DATATYPES_HEADERS_DIR}/GridAxisIrregular.hpp
229 ${KDIS_DATATYPES_HEADERS_DIR}/GridAxisRegular.hpp
230 ${KDIS_DATATYPES_HEADERS_DIR}/GridData.hpp
231 ${KDIS_DATATYPES_HEADERS_DIR}/GridDataType0.hpp
232 ${KDIS_DATATYPES_HEADERS_DIR}/GridDataType1.hpp
233 ${KDIS_DATATYPES_HEADERS_DIR}/GridDataType2.hpp
234 ${KDIS_DATATYPES_HEADERS_DIR}/GroupAssignmentRecord.hpp
235 ${KDIS_DATATYPES_HEADERS_DIR}/GroupDestinationRecord.hpp
236 ${KDIS_DATATYPES_HEADERS_DIR}/IFF_ATC_NAVAIDS_FundamentalParameterData.hpp
237 ${KDIS_DATATYPES_HEADERS_DIR}/IFF_Layer2.hpp
238 ${KDIS_DATATYPES_HEADERS_DIR}/IntercomCommunicationParameters.hpp
239 ${KDIS_DATATYPES_HEADERS_DIR}/KFIXED.hpp
240 ${KDIS_DATATYPES_HEADERS_DIR}/LayerHeader.hpp
241 ${KDIS_DATATYPES_HEADERS_DIR}/LE_DeadReckoningParameter.hpp
242 ${KDIS_DATATYPES_HEADERS_DIR}/LE_EntityIdentifier.hpp
243 ${KDIS_DATATYPES_HEADERS_DIR}/LE_EulerAngles.hpp
244 ${KDIS_DATATYPES_HEADERS_DIR}/LE_Vector.hpp
245 ${KDIS_DATATYPES_HEADERS_DIR}/LinearObjectAppearance.hpp
246 ${KDIS_DATATYPES_HEADERS_DIR}/LinearSegmentParameter.hpp
247 ${KDIS_DATATYPES_HEADERS_DIR}/LineRecord1.hpp
248 ${KDIS_DATATYPES_HEADERS_DIR}/LineRecord2.hpp
249 ${KDIS_DATATYPES_HEADERS_DIR}/Mine.hpp
250 ${KDIS_DATATYPES_HEADERS_DIR}/MinefieldAppearance.hpp
251 ${KDIS_DATATYPES_HEADERS_DIR}/MinefieldDataFilter.hpp
252 ${KDIS_DATATYPES_HEADERS_DIR}/MineFusing.hpp
253 ${KDIS_DATATYPES_HEADERS_DIR}/MinePaintScheme.hpp
254 ${KDIS_DATATYPES_HEADERS_DIR}/NamedLocationIdentifier.hpp
255 ${KDIS_DATATYPES_HEADERS_DIR}/ObjectAppearance.hpp
256 ${KDIS_DATATYPES_HEADERS_DIR}/ObjectType.hpp
257 ${KDIS_DATATYPES_HEADERS_DIR}/OrientationError.hpp
258 ${KDIS_DATATYPES_HEADERS_DIR}/PerimeterPointCoordinate.hpp
259 ${KDIS_DATATYPES_HEADERS_DIR}/PointObjectAppearance.hpp
260 ${KDIS_DATATYPES_HEADERS_DIR}/PointRecord1.hpp
261 ${KDIS_DATATYPES_HEADERS_DIR}/PointRecord2.hpp
262 ${KDIS_DATATYPES_HEADERS_DIR}/PositionError.hpp
263 ${KDIS_DATATYPES_HEADERS_DIR}/PropulsionSystem.hpp
264 ${KDIS_DATATYPES_HEADERS_DIR}/RecordSet.hpp
265 ${KDIS_DATATYPES_HEADERS_DIR}/RectangularVolumeRecord1.hpp
266 ${KDIS_DATATYPES_HEADERS_DIR}/RectangularVolumeRecord2.hpp
267 ${KDIS_DATATYPES_HEADERS_DIR}/RectangularVolumeRecord3.hpp
268 ${KDIS_DATATYPES_HEADERS_DIR}/RelationshipRecord.hpp
269 ${KDIS_DATATYPES_HEADERS_DIR}/RelativeWorldCoordinates.hpp
270 ${KDIS_DATATYPES_HEADERS_DIR}/SecondaryOperationalData.hpp
271 ${KDIS_DATATYPES_HEADERS_DIR}/Shaft.hpp
272 ${KDIS_DATATYPES_HEADERS_DIR}/SilentAggregateSystem.hpp
273 ${KDIS_DATATYPES_HEADERS_DIR}/SilentEntitySystem.hpp
274 ${KDIS_DATATYPES_HEADERS_DIR}/SphereRecord1.hpp
275 ${KDIS_DATATYPES_HEADERS_DIR}/SphereRecord2.hpp
276 ${KDIS_DATATYPES_HEADERS_DIR}/SystemIdentifier.hpp
277 ${KDIS_DATATYPES_HEADERS_DIR}/UnderwaterAcousticEmitterBeam.hpp
278 ${KDIS_DATATYPES_HEADERS_DIR}/UnderwaterAcousticEmitterSystem.hpp
279 ${KDIS_DATATYPES_HEADERS_DIR}/UnderwaterAcousticFundamentalParameterData.hpp
280 ${KDIS_DATATYPES_HEADERS_DIR}/VectoringNozzleSystem.hpp
281 ${KDIS_DATATYPES_HEADERS_DIR}/SeparationPart.hpp
286 ${KDIS_DATATYPES_SOURCES_DIR}/AcousticEmitterSystem.cpp
287 ${KDIS_DATATYPES_SOURCES_DIR}/AggregateIdentifier.cpp
288 ${KDIS_DATATYPES_SOURCES_DIR}/AggregateMarking.cpp
289 ${KDIS_DATATYPES_SOURCES_DIR}/AggregateType.cpp
290 ${KDIS_DATATYPES_SOURCES_DIR}/APA.cpp
291 ${KDIS_DATATYPES_SOURCES_DIR}/ArealObjectAppearance.cpp
292 ${KDIS_DATATYPES_SOURCES_DIR}/BeamData.cpp
293 ${KDIS_DATATYPES_SOURCES_DIR}/BoundingSphereRecord.cpp
294 ${KDIS_DATATYPES_SOURCES_DIR}/COMBICState.cpp
295 ${KDIS_DATATYPES_SOURCES_DIR}/CommunicationsChannelType.cpp
296 ${KDIS_DATATYPES_SOURCES_DIR}/ConeRecord1.cpp
297 ${KDIS_DATATYPES_SOURCES_DIR}/ConeRecord2.cpp
298 ${KDIS_DATATYPES_SOURCES_DIR}/EllipsoidRecord1.cpp
299 ${KDIS_DATATYPES_SOURCES_DIR}/EllipsoidRecord2.cpp
300 ${KDIS_DATATYPES_SOURCES_DIR}/EntityDestinationRecord.cpp
301 ${KDIS_DATATYPES_SOURCES_DIR}/EnvironmentRecord.cpp
302 ${KDIS_DATATYPES_SOURCES_DIR}/EnvironmentType.cpp
303 ${KDIS_DATATYPES_SOURCES_DIR}/FlareState.cpp
304 ${KDIS_DATATYPES_SOURCES_DIR}/FundamentalOperationalData.cpp
305 ${KDIS_DATATYPES_SOURCES_DIR}/FundamentalOperationalData_MarkXInterrogator.cpp
306 ${KDIS_DATATYPES_SOURCES_DIR}/FundamentalOperationalData_MarkXTransponder.cpp
307 ${KDIS_DATATYPES_SOURCES_DIR}/FundamentalOperationalData_RRB.cpp
308 ${KDIS_DATATYPES_SOURCES_DIR}/FundamentalOperationalData_Soviet.cpp
309 ${KDIS_DATATYPES_SOURCES_DIR}/GaussianPlumeRecord.cpp
310 ${KDIS_DATATYPES_SOURCES_DIR}/GaussianPuffRecord.cpp
311 ${KDIS_DATATYPES_SOURCES_DIR}/GED_BasicFixedWingAircraft.cpp
312 ${KDIS_DATATYPES_SOURCES_DIR}/GED_BasicGroundCombatSoldier.cpp
313 ${KDIS_DATATYPES_SOURCES_DIR}/GED_BasicGroundCombatVehicle.cpp
314 ${KDIS_DATATYPES_SOURCES_DIR}/GED_BasicRotorWingAircraft.cpp
315 ${KDIS_DATATYPES_SOURCES_DIR}/GED_EnhancedFixedWingAircraft.cpp
316 ${KDIS_DATATYPES_SOURCES_DIR}/GED_EnhancedGroundCombatSoldier.cpp
317 ${KDIS_DATATYPES_SOURCES_DIR}/GED_EnhancedGroundCombatVehicle.cpp
318 ${KDIS_DATATYPES_SOURCES_DIR}/GED_EnhancedRotaryWingAircraft.cpp
319 ${KDIS_DATATYPES_SOURCES_DIR}/GED_GroundLogisticsVehicle.cpp
320 ${KDIS_DATATYPES_SOURCES_DIR}/GridAxisIrregular.cpp
321 ${KDIS_DATATYPES_SOURCES_DIR}/GridAxisRegular.cpp
322 ${KDIS_DATATYPES_SOURCES_DIR}/GridData.cpp
323 ${KDIS_DATATYPES_SOURCES_DIR}/GridDataType0.cpp
324 ${KDIS_DATATYPES_SOURCES_DIR}/GridDataType1.cpp
325 ${KDIS_DATATYPES_SOURCES_DIR}/GridDataType2.cpp
326 ${KDIS_DATATYPES_SOURCES_DIR}/GroupAssignmentRecord.cpp
327 ${KDIS_DATATYPES_SOURCES_DIR}/GroupDestinationRecord.cpp
328 ${KDIS_DATATYPES_SOURCES_DIR}/IFF_ATC_NAVAIDS_FundamentalParameterData.cpp
329 ${KDIS_DATATYPES_SOURCES_DIR}/IFF_Layer2.cpp
330 ${KDIS_DATATYPES_SOURCES_DIR}/IntercomCommunicationParameters.cpp
331 ${KDIS_DATATYPES_SOURCES_DIR}/KFIXED.cpp
332 ${KDIS_DATATYPES_SOURCES_DIR}/LayerHeader.cpp
333 ${KDIS_DATATYPES_SOURCES_DIR}/LE_DeadReckoningParameter.cpp
334 ${KDIS_DATATYPES_SOURCES_DIR}/LE_EntityIdentifier.cpp
335 ${KDIS_DATATYPES_SOURCES_DIR}/LE_EulerAngles.cpp
336 ${KDIS_DATATYPES_SOURCES_DIR}/LE_Vector.cpp
337 ${KDIS_DATATYPES_SOURCES_DIR}/LinearObjectAppearance.cpp
338 ${KDIS_DATATYPES_SOURCES_DIR}/LinearSegmentParameter.cpp
339 ${KDIS_DATATYPES_SOURCES_DIR}/LineRecord1.cpp
340 ${KDIS_DATATYPES_SOURCES_DIR}/LineRecord2.cpp
341 ${KDIS_DATATYPES_SOURCES_DIR}/Mine.cpp
342 ${KDIS_DATATYPES_SOURCES_DIR}/MinefieldAppearance.cpp
343 ${KDIS_DATATYPES_SOURCES_DIR}/MinefieldDataFilter.cpp
344 ${KDIS_DATATYPES_SOURCES_DIR}/MineFusing.cpp
345 ${KDIS_DATATYPES_SOURCES_DIR}/MinePaintScheme.cpp
346 ${KDIS_DATATYPES_SOURCES_DIR}/NamedLocationIdentifier.cpp
347 ${KDIS_DATATYPES_SOURCES_DIR}/ObjectAppearance.cpp
348 ${KDIS_DATATYPES_SOURCES_DIR}/ObjectType.cpp
349 ${KDIS_DATATYPES_SOURCES_DIR}/OrientationError.cpp
350 ${KDIS_DATATYPES_SOURCES_DIR}/PerimeterPointCoordinate.cpp
351 ${KDIS_DATATYPES_SOURCES_DIR}/PointObjectAppearance.cpp
352 ${KDIS_DATATYPES_SOURCES_DIR}/PointRecord1.cpp
353 ${KDIS_DATATYPES_SOURCES_DIR}/PointRecord2.cpp
354 ${KDIS_DATATYPES_SOURCES_DIR}/PositionError.cpp
355 ${KDIS_DATATYPES_SOURCES_DIR}/PropulsionSystem.cpp
356 ${KDIS_DATATYPES_SOURCES_DIR}/RecordSet.cpp
357 ${KDIS_DATATYPES_SOURCES_DIR}/RectangularVolumeRecord1.cpp
358 ${KDIS_DATATYPES_SOURCES_DIR}/RectangularVolumeRecord2.cpp
359 ${KDIS_DATATYPES_SOURCES_DIR}/RectangularVolumeRecord3.cpp
360 ${KDIS_DATATYPES_SOURCES_DIR}/RelationshipRecord.cpp
361 ${KDIS_DATATYPES_SOURCES_DIR}/RelativeWorldCoordinates.cpp
362 ${KDIS_DATATYPES_SOURCES_DIR}/SecondaryOperationalData.cpp
363 ${KDIS_DATATYPES_SOURCES_DIR}/Shaft.cpp
364 ${KDIS_DATATYPES_SOURCES_DIR}/SilentAggregateSystem.cpp
365 ${KDIS_DATATYPES_SOURCES_DIR}/SilentEntitySystem.cpp
366 ${KDIS_DATATYPES_SOURCES_DIR}/SphereRecord1.cpp
367 ${KDIS_DATATYPES_SOURCES_DIR}/SphereRecord2.cpp
368 ${KDIS_DATATYPES_SOURCES_DIR}/SystemIdentifier.cpp
369 ${KDIS_DATATYPES_SOURCES_DIR}/UnderwaterAcousticEmitterBeam.cpp
370 ${KDIS_DATATYPES_SOURCES_DIR}/UnderwaterAcousticEmitterSystem.cpp
371 ${KDIS_DATATYPES_SOURCES_DIR}/UnderwaterAcousticFundamentalParameterData.cpp
372 ${KDIS_DATATYPES_SOURCES_DIR}/VectoringNozzleSystem.cpp
373 ${KDIS_DATATYPES_SOURCES_DIR}/SeparationPart.cpp
378 if(${DIS_VERSION} GREATER_EQUAL 7)
382 ${KDIS_DATATYPES_HEADERS_DIR}/AttributeRecordSet.hpp
383 ${KDIS_DATATYPES_HEADERS_DIR}/BeamStatus.hpp
384 ${KDIS_DATATYPES_HEADERS_DIR}/CommunicationsNodeID.hpp
385 ${KDIS_DATATYPES_HEADERS_DIR}/DEAreaAimpoint.hpp
386 ${KDIS_DATATYPES_HEADERS_DIR}/EnhancedMode1Code.hpp
387 ${KDIS_DATATYPES_HEADERS_DIR}/ExplosionDescriptor.hpp
388 ${KDIS_DATATYPES_HEADERS_DIR}/ExpendableDescriptor.hpp
389 ${KDIS_DATATYPES_HEADERS_DIR}/IFF_Layer3.hpp
390 ${KDIS_DATATYPES_HEADERS_DIR}/IFF_Layer3Interrogator.hpp
391 ${KDIS_DATATYPES_HEADERS_DIR}/IFF_Layer3Transponder.hpp
392 ${KDIS_DATATYPES_HEADERS_DIR}/IOCommunicationsNode.hpp
393 ${KDIS_DATATYPES_HEADERS_DIR}/IOEffect.hpp
394 ${KDIS_DATATYPES_HEADERS_DIR}/JammingTechnique.hpp
395 ${KDIS_DATATYPES_HEADERS_DIR}/Mode5InterrogatorBasicData.hpp
396 ${KDIS_DATATYPES_HEADERS_DIR}/Mode5InterrogatorStatus.hpp
397 ${KDIS_DATATYPES_HEADERS_DIR}/Mode5TransponderBasicData.hpp
398 ${KDIS_DATATYPES_HEADERS_DIR}/Mode5TransponderStatus.hpp
399 ${KDIS_DATATYPES_HEADERS_DIR}/Mode5TransponderSupplementalData.hpp
400 ${KDIS_DATATYPES_HEADERS_DIR}/ModeXCodeRecord.hpp
401 ${KDIS_DATATYPES_HEADERS_DIR}/StandardVariable.hpp
406 ${KDIS_DATATYPES_SOURCES_DIR}/AttributeRecordSet.cpp
407 ${KDIS_DATATYPES_SOURCES_DIR}/BeamStatus.cpp
408 ${KDIS_DATATYPES_SOURCES_DIR}/CommunicationsNodeID.cpp
409 ${KDIS_DATATYPES_SOURCES_DIR}/DEAreaAimpoint.cpp
410 ${KDIS_DATATYPES_SOURCES_DIR}/EnhancedMode1Code.cpp
411 ${KDIS_DATATYPES_SOURCES_DIR}/ExplosionDescriptor.cpp
412 ${KDIS_DATATYPES_SOURCES_DIR}/ExpendableDescriptor.cpp
413 ${KDIS_DATATYPES_SOURCES_DIR}/IFF_Layer3.cpp
414 ${KDIS_DATATYPES_SOURCES_DIR}/IFF_Layer3Interrogator.cpp
415 ${KDIS_DATATYPES_SOURCES_DIR}/IFF_Layer3Transponder.cpp
416 ${KDIS_DATATYPES_SOURCES_DIR}/IOCommunicationsNode.cpp
417 ${KDIS_DATATYPES_SOURCES_DIR}/IOEffect.cpp
418 ${KDIS_DATATYPES_SOURCES_DIR}/JammingTechnique.cpp
419 ${KDIS_DATATYPES_SOURCES_DIR}/Mode5InterrogatorBasicData.cpp
420 ${KDIS_DATATYPES_SOURCES_DIR}/Mode5InterrogatorStatus.cpp
421 ${KDIS_DATATYPES_SOURCES_DIR}/Mode5TransponderBasicData.cpp
422 ${KDIS_DATATYPES_SOURCES_DIR}/Mode5TransponderStatus.cpp
423 ${KDIS_DATATYPES_SOURCES_DIR}/Mode5TransponderSupplementalData.cpp
424 ${KDIS_DATATYPES_SOURCES_DIR}/ModeXCodeRecord.cpp
425 ${KDIS_DATATYPES_SOURCES_DIR}/StandardVariable.cpp
430 set(KDIS_ENUMS_HEADERS_DIR ${KDIS_HEADERS_DIR}/DataTypes/Enums)
431 set(KDIS_ENUMS_SOURCES_DIR ${KDIS_SOURCES_DIR}/DataTypes/Enums)
437 ${KDIS_ENUMS_HEADERS_DIR}/EnumBurstDescriptor.hpp
438 ${KDIS_ENUMS_HEADERS_DIR}/EnumDescriptor.hpp
439 ${KDIS_ENUMS_HEADERS_DIR}/EnumDesignator.hpp
440 ${KDIS_ENUMS_HEADERS_DIR}/EnumDetonationResult.hpp
441 ${KDIS_ENUMS_HEADERS_DIR}/EnumEmitter.hpp
442 ${KDIS_ENUMS_HEADERS_DIR}/EnumEntityInfoInteraction.hpp
443 ${KDIS_ENUMS_HEADERS_DIR}/EnumEntityManagement.hpp
444 ${KDIS_ENUMS_HEADERS_DIR}/EnumHeader.hpp
445 ${KDIS_ENUMS_HEADERS_DIR}/EnumIFF.hpp
446 ${KDIS_ENUMS_HEADERS_DIR}/EnumMinefield.hpp
447 ${KDIS_ENUMS_HEADERS_DIR}/EnumRadio.hpp
448 ${KDIS_ENUMS_HEADERS_DIR}/EnumSimulationManagement.hpp
449 ${KDIS_ENUMS_HEADERS_DIR}/EnumSupply.hpp
450 ${KDIS_ENUMS_HEADERS_DIR}/EnumSyntheticEnvironment.hpp
451 ${KDIS_ENUMS_HEADERS_DIR}/EnumSystemIdentifier.hpp
452 ${KDIS_ENUMS_HEADERS_DIR}/KDISEnums.hpp
457 ${KDIS_ENUMS_SOURCES_DIR}/EnumBurstDescriptor.cpp
458 ${KDIS_ENUMS_SOURCES_DIR}/EnumDescriptor.cpp
459 ${KDIS_ENUMS_SOURCES_DIR}/EnumDesignator.cpp
460 ${KDIS_ENUMS_SOURCES_DIR}/EnumDetonationResult.cpp
461 ${KDIS_ENUMS_SOURCES_DIR}/EnumEmitter.cpp
462 ${KDIS_ENUMS_SOURCES_DIR}/EnumEntityInfoInteraction.cpp
463 ${KDIS_ENUMS_SOURCES_DIR}/EnumEntityManagement.cpp
464 ${KDIS_ENUMS_SOURCES_DIR}/EnumHeader.cpp
465 ${KDIS_ENUMS_SOURCES_DIR}/EnumIFF.cpp
466 ${KDIS_ENUMS_SOURCES_DIR}/EnumMinefield.cpp
467 ${KDIS_ENUMS_SOURCES_DIR}/EnumRadio.cpp
468 ${KDIS_ENUMS_SOURCES_DIR}/EnumSimulationManagement.cpp
469 ${KDIS_ENUMS_SOURCES_DIR}/EnumSupply.cpp
470 ${KDIS_ENUMS_SOURCES_DIR}/EnumSyntheticEnvironment.cpp
471 ${KDIS_ENUMS_SOURCES_DIR}/EnumSystemIdentifier.cpp
475 if(${DIS_VERSION} GREATER_EQUAL 7)
476 list(APPEND KDIS_HEADERS ${KDIS_ENUMS_HEADERS_DIR}/EnumInformationOperations.hpp)
477 list(APPEND KDIS_SOURCES ${KDIS_ENUMS_SOURCES_DIR}/EnumInformationOperations.cpp)
481 set(KDIS_PDU_BASE_HEADERS_DIR ${KDIS_HEADERS_DIR}/PDU)
482 set(KDIS_PDU_BASE_SOURCES_DIR ${KDIS_SOURCES_DIR}/PDU)
485 list(APPEND KDIS_HEADERS ${KDIS_PDU_BASE_HEADERS_DIR}/Header.hpp
486 ${KDIS_PDU_BASE_HEADERS_DIR}/Header6.hpp ${KDIS_PDU_BASE_HEADERS_DIR}/Bundle.hpp
488 list(APPEND KDIS_SOURCES ${KDIS_PDU_BASE_SOURCES_DIR}/Header6.cpp
489 ${KDIS_PDU_BASE_SOURCES_DIR}/Bundle.cpp
493 if(${DIS_VERSION} GREATER_EQUAL 7)
494 list(APPEND KDIS_HEADERS ${KDIS_PDU_BASE_HEADERS_DIR}/Header7.hpp)
495 list(APPEND KDIS_SOURCES ${KDIS_PDU_BASE_SOURCES_DIR}/Header7.cpp)
498 # PDU Distributed Emission Regeneration
499 set(KDIS_PDU_DISTRIBUTED_EMISSION_REGENERATION_HEADERS_DIR
500 ${KDIS_HEADERS_DIR}/PDU/Distributed_Emission_Regeneration
502 set(KDIS_PDU_DISTRIBUTED_EMISSION_REGENERATION_SOURCES_DIR
503 ${KDIS_SOURCES_DIR}/PDU/Distributed_Emission_Regeneration
506 # PDU Distributed Emission Regeneration DIS 5
507 list(APPEND KDIS_HEADERS
508 ${KDIS_PDU_DISTRIBUTED_EMISSION_REGENERATION_HEADERS_DIR}/Designator_PDU.hpp
509 ${KDIS_PDU_DISTRIBUTED_EMISSION_REGENERATION_HEADERS_DIR}/Electromagnetic_Emission_PDU.hpp
511 list(APPEND KDIS_SOURCES
512 ${KDIS_PDU_DISTRIBUTED_EMISSION_REGENERATION_SOURCES_DIR}/Designator_PDU.cpp
513 ${KDIS_PDU_DISTRIBUTED_EMISSION_REGENERATION_SOURCES_DIR}/Electromagnetic_Emission_PDU.cpp
516 # PDU Distributed Emission Regeneration DIS 6
517 if(${DIS_VERSION} GREATER_EQUAL 6)
518 list(APPEND KDIS_HEADERS ${KDIS_PDU_DISTRIBUTED_EMISSION_REGENERATION_HEADERS_DIR}/IFF_PDU.hpp
519 ${KDIS_PDU_DISTRIBUTED_EMISSION_REGENERATION_HEADERS_DIR}/SEES_PDU.hpp
520 ${KDIS_PDU_DISTRIBUTED_EMISSION_REGENERATION_HEADERS_DIR}/Underwater_Acoustic_PDU.hpp
522 list(APPEND KDIS_SOURCES ${KDIS_PDU_DISTRIBUTED_EMISSION_REGENERATION_SOURCES_DIR}/IFF_PDU.cpp
523 ${KDIS_PDU_DISTRIBUTED_EMISSION_REGENERATION_SOURCES_DIR}/SEES_PDU.cpp
524 ${KDIS_PDU_DISTRIBUTED_EMISSION_REGENERATION_SOURCES_DIR}/Underwater_Acoustic_PDU.cpp
528 # PDU Entity Info Interaction
529 set(KDIS_PDU_ENTITY_INFO_INTERACTION_HEADERS_DIR ${KDIS_HEADERS_DIR}/PDU/Entity_Info_Interaction)
530 set(KDIS_PDU_ENTITY_INFO_INTERACTION_SOURCES_DIR ${KDIS_SOURCES_DIR}/PDU/Entity_Info_Interaction)
532 # PDU Entity Info Interaction DIS 5
533 list(APPEND KDIS_HEADERS ${KDIS_PDU_ENTITY_INFO_INTERACTION_HEADERS_DIR}/Collision_PDU.hpp
534 ${KDIS_PDU_ENTITY_INFO_INTERACTION_HEADERS_DIR}/Entity_State_PDU.hpp
536 list(APPEND KDIS_SOURCES ${KDIS_PDU_ENTITY_INFO_INTERACTION_SOURCES_DIR}/Collision_PDU.cpp
537 ${KDIS_PDU_ENTITY_INFO_INTERACTION_SOURCES_DIR}/Entity_State_PDU.cpp
540 # PDU Entity Info Interaction DIS 6
541 if(${DIS_VERSION} GREATER_EQUAL 6)
542 list(APPEND KDIS_HEADERS
543 ${KDIS_PDU_ENTITY_INFO_INTERACTION_HEADERS_DIR}/Collision_Elastic_PDU.hpp
544 ${KDIS_PDU_ENTITY_INFO_INTERACTION_HEADERS_DIR}/Entity_State_Update_PDU.hpp
546 list(APPEND KDIS_SOURCES
547 ${KDIS_PDU_ENTITY_INFO_INTERACTION_SOURCES_DIR}/Collision_Elastic_PDU.cpp
548 ${KDIS_PDU_ENTITY_INFO_INTERACTION_SOURCES_DIR}/Entity_State_Update_PDU.cpp
552 # PDU Entity Info Interaction DIS 7
553 if(${DIS_VERSION} GREATER_EQUAL 7)
554 list(APPEND KDIS_HEADERS ${KDIS_PDU_ENTITY_INFO_INTERACTION_HEADERS_DIR}/Attribute_PDU.hpp)
555 list(APPEND KDIS_SOURCES ${KDIS_PDU_ENTITY_INFO_INTERACTION_SOURCES_DIR}/Attribute_PDU.cpp)
558 # PDU Entity Management
559 set(KDIS_PDU_ENTITY_MANAGEMENT_HEADERS_DIR ${KDIS_HEADERS_DIR}/PDU/Entity_Management)
560 set(KDIS_PDU_ENTITY_MANAGEMENT_SOURCES_DIR ${KDIS_SOURCES_DIR}/PDU/Entity_Management)
562 # PDU Entity Management DIS 6
563 if(${DIS_VERSION} GREATER_EQUAL 6)
567 ${KDIS_PDU_ENTITY_MANAGEMENT_HEADERS_DIR}/Aggregate_State_PDU.hpp
568 ${KDIS_PDU_ENTITY_MANAGEMENT_HEADERS_DIR}/IsGroupOf_PDU.hpp
569 ${KDIS_PDU_ENTITY_MANAGEMENT_HEADERS_DIR}/IsPartOf_PDU.hpp
570 ${KDIS_PDU_ENTITY_MANAGEMENT_HEADERS_DIR}/Transfer_Control_Request_PDU.hpp
575 ${KDIS_PDU_ENTITY_MANAGEMENT_SOURCES_DIR}/Aggregate_State_PDU.cpp
576 ${KDIS_PDU_ENTITY_MANAGEMENT_SOURCES_DIR}/IsGroupOf_PDU.cpp
577 ${KDIS_PDU_ENTITY_MANAGEMENT_SOURCES_DIR}/IsPartOf_PDU.cpp
578 ${KDIS_PDU_ENTITY_MANAGEMENT_SOURCES_DIR}/Transfer_Control_Request_PDU.cpp
583 set(KDIS_PDU_LIVE_ENTITY_HEADERS_DIR ${KDIS_HEADERS_DIR}/PDU/Live_Entity)
584 set(KDIS_PDU_LIVE_ENTITY_SOURCES_DIR ${KDIS_SOURCES_DIR}/PDU/Live_Entity)
586 # PDU Live Entity DIS 6
587 if(${DIS_VERSION} GREATER_EQUAL 6)
591 ${KDIS_PDU_LIVE_ENTITY_HEADERS_DIR}/Appearance_PDU.hpp
592 ${KDIS_PDU_LIVE_ENTITY_HEADERS_DIR}/Articulated_Parts_PDU.hpp
593 ${KDIS_PDU_LIVE_ENTITY_HEADERS_DIR}/LE_Detonation_PDU.hpp
594 ${KDIS_PDU_LIVE_ENTITY_HEADERS_DIR}/LE_Fire_PDU.hpp
595 ${KDIS_PDU_LIVE_ENTITY_HEADERS_DIR}/LE_Header.hpp
596 ${KDIS_PDU_LIVE_ENTITY_HEADERS_DIR}/TSPI_PDU.hpp
601 ${KDIS_PDU_LIVE_ENTITY_SOURCES_DIR}/Appearance_PDU.cpp
602 ${KDIS_PDU_LIVE_ENTITY_SOURCES_DIR}/Articulated_Parts_PDU.cpp
603 ${KDIS_PDU_LIVE_ENTITY_SOURCES_DIR}/LE_Detonation_PDU.cpp
604 ${KDIS_PDU_LIVE_ENTITY_SOURCES_DIR}/LE_Fire_PDU.cpp
605 ${KDIS_PDU_LIVE_ENTITY_SOURCES_DIR}/LE_Header.cpp
606 ${KDIS_PDU_LIVE_ENTITY_SOURCES_DIR}/TSPI_PDU.cpp
611 set(KDIS_PDU_LOGISTICS_HEADERS_DIR ${KDIS_HEADERS_DIR}/PDU/Logistics)
612 set(KDIS_PDU_LOGISTICS_SOURCES_DIR ${KDIS_SOURCES_DIR}/PDU/Logistics)
614 # PDU Logistics DIS 5
618 ${KDIS_PDU_LOGISTICS_HEADERS_DIR}/Logistics_Header.hpp
619 ${KDIS_PDU_LOGISTICS_HEADERS_DIR}/Repair_Complete_PDU.hpp
620 ${KDIS_PDU_LOGISTICS_HEADERS_DIR}/Repair_Response_PDU.hpp
621 ${KDIS_PDU_LOGISTICS_HEADERS_DIR}/Resupply_Cancel_PDU.hpp
622 ${KDIS_PDU_LOGISTICS_HEADERS_DIR}/Resupply_Offer_PDU.hpp
623 ${KDIS_PDU_LOGISTICS_HEADERS_DIR}/Resupply_Received_PDU.hpp
624 ${KDIS_PDU_LOGISTICS_HEADERS_DIR}/Service_Request_PDU.hpp
629 ${KDIS_PDU_LOGISTICS_SOURCES_DIR}/Logistics_Header.cpp
630 ${KDIS_PDU_LOGISTICS_SOURCES_DIR}/Repair_Complete_PDU.cpp
631 ${KDIS_PDU_LOGISTICS_SOURCES_DIR}/Repair_Response_PDU.cpp
632 ${KDIS_PDU_LOGISTICS_SOURCES_DIR}/Resupply_Cancel_PDU.cpp
633 ${KDIS_PDU_LOGISTICS_SOURCES_DIR}/Resupply_Offer_PDU.cpp
634 ${KDIS_PDU_LOGISTICS_SOURCES_DIR}/Resupply_Received_PDU.cpp
635 ${KDIS_PDU_LOGISTICS_SOURCES_DIR}/Service_Request_PDU.cpp
639 set(KDIS_PDU_MINEFIELD_HEADERS_DIR ${KDIS_HEADERS_DIR}/PDU/Minefield)
640 set(KDIS_PDU_MINEFIELD_SOURCES_DIR ${KDIS_SOURCES_DIR}/PDU/Minefield)
642 # PDU Minefield DIS 6
643 if(${DIS_VERSION} GREATER_EQUAL 6)
647 ${KDIS_PDU_MINEFIELD_HEADERS_DIR}/Minefield_Data_PDU.hpp
648 ${KDIS_PDU_MINEFIELD_HEADERS_DIR}/Minefield_Header.hpp
649 ${KDIS_PDU_MINEFIELD_HEADERS_DIR}/Minefield_Query_PDU.hpp
650 ${KDIS_PDU_MINEFIELD_HEADERS_DIR}/Minefield_Response_NACK_PDU.hpp
651 ${KDIS_PDU_MINEFIELD_HEADERS_DIR}/Minefield_State_PDU.hpp
656 ${KDIS_PDU_MINEFIELD_SOURCES_DIR}/Minefield_Data_PDU.cpp
657 ${KDIS_PDU_MINEFIELD_SOURCES_DIR}/Minefield_Header.cpp
658 ${KDIS_PDU_MINEFIELD_SOURCES_DIR}/Minefield_Query_PDU.cpp
659 ${KDIS_PDU_MINEFIELD_SOURCES_DIR}/Minefield_Response_NACK_PDU.cpp
660 ${KDIS_PDU_MINEFIELD_SOURCES_DIR}/Minefield_State_PDU.cpp
664 # PDU Radio Communications
665 set(KDIS_PDU_RADIO_COMMUNICATIONS_HEADERS_DIR ${KDIS_HEADERS_DIR}/PDU/Radio_Communications)
666 set(KDIS_PDU_RADIO_COMMUNICATIONS_SOURCES_DIR ${KDIS_SOURCES_DIR}/PDU/Radio_Communications)
668 # PDU Radio Communications DIS 5
672 ${KDIS_PDU_RADIO_COMMUNICATIONS_HEADERS_DIR}/Radio_Communications_Header.hpp
673 ${KDIS_PDU_RADIO_COMMUNICATIONS_HEADERS_DIR}/Receiver_PDU.hpp
674 ${KDIS_PDU_RADIO_COMMUNICATIONS_HEADERS_DIR}/Signal_PDU.hpp
675 ${KDIS_PDU_RADIO_COMMUNICATIONS_HEADERS_DIR}/Transmitter_PDU.hpp
680 ${KDIS_PDU_RADIO_COMMUNICATIONS_SOURCES_DIR}/Radio_Communications_Header.cpp
681 ${KDIS_PDU_RADIO_COMMUNICATIONS_SOURCES_DIR}/Receiver_PDU.cpp
682 ${KDIS_PDU_RADIO_COMMUNICATIONS_SOURCES_DIR}/Signal_PDU.cpp
683 ${KDIS_PDU_RADIO_COMMUNICATIONS_SOURCES_DIR}/Transmitter_PDU.cpp
686 # PDU Radio Communications DIS 6
687 if(${DIS_VERSION} GREATER_EQUAL 6)
688 list(APPEND KDIS_HEADERS ${KDIS_PDU_RADIO_COMMUNICATIONS_HEADERS_DIR}/Intercom_Control_PDU.hpp
689 ${KDIS_PDU_RADIO_COMMUNICATIONS_HEADERS_DIR}/Intercom_Signal_PDU.hpp
691 list(APPEND KDIS_SOURCES ${KDIS_PDU_RADIO_COMMUNICATIONS_SOURCES_DIR}/Intercom_Control_PDU.cpp
692 ${KDIS_PDU_RADIO_COMMUNICATIONS_SOURCES_DIR}/Intercom_Signal_PDU.cpp
696 # PDU Simulation Management
697 set(KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR ${KDIS_HEADERS_DIR}/PDU/Simulation_Management)
698 set(KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR ${KDIS_SOURCES_DIR}/PDU/Simulation_Management)
700 # PDU Simulation Management DIS 5
704 ${KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR}/Acknowledge_PDU.hpp
705 ${KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR}/Action_Request_PDU.hpp
706 ${KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR}/Action_Response_PDU.hpp
707 ${KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR}/Comment_PDU.hpp
708 ${KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR}/Create_Entity_PDU.hpp
709 ${KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR}/Data_PDU.hpp
710 ${KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR}/Data_Query_PDU.hpp
711 ${KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR}/Event_Report_PDU.hpp
712 ${KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR}/Remove_Entity_PDU.hpp
713 ${KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR}/Set_Data_PDU.hpp
714 ${KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR}/Simulation_Management_Header.hpp
715 ${KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR}/Start_Resume_PDU.hpp
716 ${KDIS_PDU_SIMULATION_MANAGEMENT_HEADERS_DIR}/Stop_Freeze_PDU.hpp
721 ${KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR}/Acknowledge_PDU.cpp
722 ${KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR}/Action_Request_PDU.cpp
723 ${KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR}/Action_Response_PDU.cpp
724 ${KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR}/Comment_PDU.cpp
725 ${KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR}/Create_Entity_PDU.cpp
726 ${KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR}/Data_PDU.cpp
727 ${KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR}/Data_Query_PDU.cpp
728 ${KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR}/Event_Report_PDU.cpp
729 ${KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR}/Remove_Entity_PDU.cpp
730 ${KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR}/Set_Data_PDU.cpp
731 ${KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR}/Simulation_Management_Header.cpp
732 ${KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR}/Start_Resume_PDU.cpp
733 ${KDIS_PDU_SIMULATION_MANAGEMENT_SOURCES_DIR}/Stop_Freeze_PDU.cpp
736 # PDU Simulation Management With Reliability
737 set(KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR
738 ${KDIS_HEADERS_DIR}/PDU/Simulation_Management_With_Reliability
740 set(KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR
741 ${KDIS_SOURCES_DIR}/PDU/Simulation_Management_With_Reliability
744 # PDU Simulation Management With Reliability DIS 6
745 if(${DIS_VERSION} GREATER_EQUAL 6)
749 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Acknowledge_R_PDU.hpp
750 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Action_Request_R_PDU.hpp
751 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Action_Response_R_PDU.hpp
752 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Comment_R_PDU.hpp
753 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Create_Entity_R_PDU.hpp
754 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Data_Query_R_PDU.hpp
755 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Data_R_PDU.hpp
756 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Event_Report_R_PDU.hpp
757 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Record_Query_R_PDU.hpp
758 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Record_R_PDU.hpp
759 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Reliability_Header.hpp
760 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Remove_Entity_R_PDU.hpp
761 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Set_Data_R_PDU.hpp
762 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Set_Record_R_PDU.hpp
763 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Start_Resume_R_PDU.hpp
764 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_HEADERS_DIR}/Stop_Freeze_R_PDU.hpp
769 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Acknowledge_R_PDU.cpp
770 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Action_Request_R_PDU.cpp
771 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Action_Response_R_PDU.cpp
772 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Comment_R_PDU.cpp
773 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Create_Entity_R_PDU.cpp
774 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Data_Query_R_PDU.cpp
775 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Data_R_PDU.cpp
776 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Event_Report_R_PDU.cpp
777 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Record_Query_R_PDU.cpp
778 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Record_R_PDU.cpp
779 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Reliability_Header.cpp
780 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Remove_Entity_R_PDU.cpp
781 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Set_Data_R_PDU.cpp
782 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Set_Record_R_PDU.cpp
783 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Start_Resume_R_PDU.cpp
784 ${KDIS_PDU_SIMULATION_MANAGEMENT_WITH_RELIABILITY_SOURCES_DIR}/Stop_Freeze_R_PDU.cpp
788 # PDU Synthetic Environment
789 set(KDIS_PDU_SYNTHETIC_ENVIRONMENT_HEADERS_DIR ${KDIS_HEADERS_DIR}/PDU/Synthetic_Environment)
790 set(KDIS_PDU_SYNTHETIC_ENVIRONMENT_SOURCES_DIR ${KDIS_SOURCES_DIR}/PDU/Synthetic_Environment)
792 # PDU Synthetic Environment DIS 6
793 if(${DIS_VERSION} GREATER_EQUAL 6)
797 ${KDIS_PDU_SYNTHETIC_ENVIRONMENT_HEADERS_DIR}/Areal_Object_State_PDU.hpp
798 ${KDIS_PDU_SYNTHETIC_ENVIRONMENT_HEADERS_DIR}/Environmental_Process_PDU.hpp
799 ${KDIS_PDU_SYNTHETIC_ENVIRONMENT_HEADERS_DIR}/Gridded_Data_PDU.hpp
800 ${KDIS_PDU_SYNTHETIC_ENVIRONMENT_HEADERS_DIR}/Linear_Object_State_PDU.hpp
801 ${KDIS_PDU_SYNTHETIC_ENVIRONMENT_HEADERS_DIR}/Object_State_Header.hpp
802 ${KDIS_PDU_SYNTHETIC_ENVIRONMENT_HEADERS_DIR}/Point_Object_State_PDU.hpp
807 ${KDIS_PDU_SYNTHETIC_ENVIRONMENT_SOURCES_DIR}/Areal_Object_State_PDU.cpp
808 ${KDIS_PDU_SYNTHETIC_ENVIRONMENT_SOURCES_DIR}/Environmental_Process_PDU.cpp
809 ${KDIS_PDU_SYNTHETIC_ENVIRONMENT_SOURCES_DIR}/Gridded_Data_PDU.cpp
810 ${KDIS_PDU_SYNTHETIC_ENVIRONMENT_SOURCES_DIR}/Linear_Object_State_PDU.cpp
811 ${KDIS_PDU_SYNTHETIC_ENVIRONMENT_SOURCES_DIR}/Object_State_Header.cpp
812 ${KDIS_PDU_SYNTHETIC_ENVIRONMENT_SOURCES_DIR}/Point_Object_State_PDU.cpp
817 set(KDIS_PDU_WARFARE_HEADERS_DIR ${KDIS_HEADERS_DIR}/PDU/Warfare)
818 set(KDIS_PDU_WARFARE_SOURCES_DIR ${KDIS_SOURCES_DIR}/PDU/Warfare)
821 list(APPEND KDIS_HEADERS ${KDIS_PDU_WARFARE_HEADERS_DIR}/Detonation_PDU.hpp
822 ${KDIS_PDU_WARFARE_HEADERS_DIR}/Fire_PDU.hpp
823 ${KDIS_PDU_WARFARE_HEADERS_DIR}/Warfare_Header.hpp
825 list(APPEND KDIS_SOURCES ${KDIS_PDU_WARFARE_SOURCES_DIR}/Detonation_PDU.cpp
826 ${KDIS_PDU_WARFARE_SOURCES_DIR}/Fire_PDU.cpp
827 ${KDIS_PDU_WARFARE_SOURCES_DIR}/Warfare_Header.cpp
831 if(${DIS_VERSION} GREATER_EQUAL 7)
832 list(APPEND KDIS_HEADERS ${KDIS_PDU_WARFARE_HEADERS_DIR}/Directed_Energy_Fire_PDU.hpp
833 ${KDIS_PDU_WARFARE_HEADERS_DIR}/Entity_Damage_Status_PDU.hpp
835 list(APPEND KDIS_SOURCES ${KDIS_PDU_WARFARE_SOURCES_DIR}/Directed_Energy_Fire_PDU.cpp
836 ${KDIS_PDU_WARFARE_SOURCES_DIR}/Entity_Damage_Status_PDU.cpp
840 # PDU Information Operations
841 set(KDIS_PDU_INFORMATION_OPERATIONS_HEADERS_DIR ${KDIS_HEADERS_DIR}/PDU/Information_Operations)
842 set(KDIS_PDU_INFORMATION_OPERATIONS_SOURCES_DIR ${KDIS_SOURCES_DIR}/PDU/Information_Operations)
844 # PDU Information Operations DIS 7
845 if(${DIS_VERSION} GREATER_EQUAL 7)
846 list(APPEND KDIS_HEADERS ${KDIS_PDU_INFORMATION_OPERATIONS_HEADERS_DIR}/IO_Header.hpp
847 ${KDIS_PDU_INFORMATION_OPERATIONS_HEADERS_DIR}/IO_Action_PDU.hpp
848 ${KDIS_PDU_INFORMATION_OPERATIONS_HEADERS_DIR}/IO_Report_PDU.hpp
850 list(APPEND KDIS_SOURCES ${KDIS_PDU_INFORMATION_OPERATIONS_SOURCES_DIR}/IO_Header.cpp
851 ${KDIS_PDU_INFORMATION_OPERATIONS_SOURCES_DIR}/IO_Action_PDU.cpp
852 ${KDIS_PDU_INFORMATION_OPERATIONS_SOURCES_DIR}/IO_Report_PDU.cpp
857 set(KDIS_EXTRAS_HEADERS_DIR ${KDIS_HEADERS_DIR}/Extras)
858 set(KDIS_EXTRAS_SOURCES_DIR ${KDIS_SOURCES_DIR}/Extras)
863 ${KDIS_EXTRAS_HEADERS_DIR}/DeadReckoningCalculator.hpp
864 ${KDIS_EXTRAS_HEADERS_DIR}/DIS_Logger_Playback.hpp
865 ${KDIS_EXTRAS_HEADERS_DIR}/DIS_Logger_Record.hpp
866 ${KDIS_EXTRAS_HEADERS_DIR}/KConversions.hpp
867 ${KDIS_EXTRAS_HEADERS_DIR}/KRef_Ptr.hpp
868 ${KDIS_EXTRAS_HEADERS_DIR}/KUtils.hpp
869 ${KDIS_EXTRAS_HEADERS_DIR}/Math.hpp
870 ${KDIS_EXTRAS_HEADERS_DIR}/PDU_Factory.hpp
871 ${KDIS_EXTRAS_HEADERS_DIR}/PDU_Factory_Filters.hpp
873 list(APPEND KDIS_SOURCES ${KDIS_EXTRAS_SOURCES_DIR}/DeadReckoningCalculator.cpp
874 ${KDIS_EXTRAS_SOURCES_DIR}/DIS_Logger_Playback.cpp
875 ${KDIS_EXTRAS_SOURCES_DIR}/DIS_Logger_Record.cpp ${KDIS_EXTRAS_SOURCES_DIR}/PDU_Factory.cpp
879 set(KDIS_NETWORK_HEADERS_DIR ${KDIS_HEADERS_DIR}/Network)
880 set(KDIS_NETWORK_SOURCES_DIR ${KDIS_SOURCES_DIR}/Network)
882 list(APPEND KDIS_HEADERS ${KDIS_NETWORK_HEADERS_DIR}/Connection.hpp
883 ${KDIS_NETWORK_HEADERS_DIR}/ConnectionAddressFilter.hpp
884 ${KDIS_NETWORK_HEADERS_DIR}/ConnectionSubscriber.hpp
886 list(APPEND KDIS_SOURCES ${KDIS_NETWORK_SOURCES_DIR}/Connection.cpp
887 ${KDIS_NETWORK_SOURCES_DIR}/ConnectionAddressFilter.cpp
893 add_library(${PROJECT_NAME} ${KDIS_SOURCES})
894 add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
896 generate_export_header(
897 ${PROJECT_NAME} EXPORT_FILE_NAME ${CMAKE_CURRENT_SOURCE_DIR}/include/${PROJECT_NAME}/KExport.hpp
898 INCLUDE_GUARD_NAME ${PROJECT_NAME}_KEXPORT_HPP_
900 list(APPEND KDIS_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/include/${PROJECT_NAME}/KExport.hpp)
901 # Include directories
902 target_include_directories(
904 PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
905 $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
906 $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
908 # Compile definitions
909 target_compile_definitions(
910 ${PROJECT_NAME} PRIVATE DIS_VERSION=${DIS_VERSION}
911 $<$<BOOL:${KDIS_USE_ENUM_DESCRIPTORS}>:KDIS_USE_ENUM_DESCRIPTORS>
914 set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION} DEBUG_POSTFIX "d")
915 # TODO Compile options target_compile_options( ${PROJECT_NAME} PRIVATE $<$<CXX_COMPILER_ID:MSVC>:/W4
916 # /WX> $<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-Wall -Wextra -Wpedantic -Werror> )
921 configure_package_config_file(
922 ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake.in
923 ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
924 INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
926 write_basic_package_version_file(
927 ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
928 VERSION ${PROJECT_VERSION}
929 COMPATIBILITY SameMajorVersion
935 install(FILES ${KDIS_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
936 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
937 ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
938 DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
941 TARGETS ${PROJECT_NAME}
942 EXPORT ${PROJECT_NAME}Targets
943 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
944 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
945 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
948 EXPORT ${PROJECT_NAME}Targets
949 NAMESPACE ${PROJECT_NAME}::
950 DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
956 set(CPACK_GENERATOR DEB RPM TXZ TGZ)
957 set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
958 set(CPACK_PACKAGE_NAME ${PROJECT_NAME})
959 set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJECT_DESCRIPTION})
960 set(CPACK_PACKAGE_FILE_NAME
961 "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}.${CMAKE_SYSTEM_PROCESSOR}"
963 set(CPACK_PACKAGE_RPM_DIR "${CMAKE_CURRENT_BINARY_DIR}/_CPack_Packages/Linux/RPM")
964 set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Karl Jones <Karljj1@yahoo.com>")
970 if(${KDIS_BUILD_DOCS})
971 add_subdirectory(docs)
977 if(${KDIS_BUILD_EXAMPLES})
978 add_subdirectory(examples)
984 if(${KDIS_BUILD_TESTS})
985 add_subdirectory(tests)