chore(ci): better check action
[KDIS.git] / CMakeLists.txt
blobb7d1254769e51f8def8deb1c205dac80d559a928
1 cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
4 # Project
6 project(
7   KDIS
8   VERSION 3.0.0
9   LANGUAGES CXX
10   HOMEPAGE_URL https://github.com/karljj1/kdis
11   DESCRIPTION "Open source implementation of DIS (Distributed Interactive Simulation) IEEE 1278.1"
15 # Settings
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)
24 # Options
26 # cmake-lint: disable=C0301
27 set(DIS_VERSION
28     7
29     CACHE
30       STRING
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
34 option(
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"
37   ON
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)
45 # Checks
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}")
52 endif()
55 # Includes
57 include(CPM)
58 include(GNUInstallDirs)
61 # Configuration file
63 configure_file(
64   ${CMAKE_CURRENT_SOURCE_DIR}/KConfig.hpp.in ${CMAKE_CURRENT_SOURCE_DIR}/include/KDIS/KConfig.hpp
65   @ONLY
69 # Headers & Sources
71 set(KDIS_HEADERS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include/KDIS)
72 set(KDIS_SOURCES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)
74 set(KDIS_HEADERS
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)
81 # DataTypes
82 set(KDIS_DATATYPES_HEADERS_DIR ${KDIS_HEADERS_DIR}/DataTypes)
83 set(KDIS_DATATYPES_SOURCES_DIR ${KDIS_SOURCES_DIR}/DataTypes)
85 # DataTypes DIS 5
86 list(
87   APPEND
88   KDIS_HEADERS
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
136 list(
137   APPEND
138   KDIS_SOURCES
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
186 # DataTypes DIS 6
187 if(${DIS_VERSION} GREATER_EQUAL 6)
188   list(
189     APPEND
190     KDIS_HEADERS
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
280   )
281   list(
282     APPEND
283     KDIS_SOURCES
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
372   )
373 endif()
375 # DataTypes DIS 7
376 if(${DIS_VERSION} GREATER_EQUAL 7)
377   list(
378     APPEND
379     KDIS_HEADERS
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
400   )
401   list(
402     APPEND
403     KDIS_SOURCES
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
424   )
425 endif()
427 # Enums
428 set(KDIS_ENUMS_HEADERS_DIR ${KDIS_HEADERS_DIR}/DataTypes/Enums)
429 set(KDIS_ENUMS_SOURCES_DIR ${KDIS_SOURCES_DIR}/DataTypes/Enums)
431 # Enums DIS 5
432 list(
433   APPEND
434   KDIS_HEADERS
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
452 list(
453   APPEND
454   KDIS_SOURCES
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
472 # Enums DIS 7
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)
476 endif()
478 # PDU base
479 set(KDIS_PDU_BASE_HEADERS_DIR ${KDIS_HEADERS_DIR}/PDU)
480 set(KDIS_PDU_BASE_SOURCES_DIR ${KDIS_SOURCES_DIR}/PDU)
482 # PDU base DIS 5
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
490 # PDU base DIS 7
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)
494 endif()
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
519   )
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
523   )
524 endif()
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
543   )
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
547   )
548 endif()
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)
554 endif()
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)
562   list(
563     APPEND
564     KDIS_HEADERS
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
569   )
570   list(
571     APPEND
572     KDIS_SOURCES
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
577   )
578 endif()
580 # PDU Live Entity
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)
586   list(
587     APPEND
588     KDIS_HEADERS
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
595   )
596   list(
597     APPEND
598     KDIS_SOURCES
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
605   )
606 endif()
608 # PDU Logistics
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
613 list(
614   APPEND
615   KDIS_HEADERS
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
624 list(
625   APPEND
626   KDIS_SOURCES
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
636 # PDU Minefield
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)
642   list(
643     APPEND
644     KDIS_HEADERS
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
650   )
651   list(
652     APPEND
653     KDIS_SOURCES
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
659   )
660 endif()
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
667 list(
668   APPEND
669   KDIS_HEADERS
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
675 list(
676   APPEND
677   KDIS_SOURCES
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
688   )
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
691   )
692 endif()
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
699 list(
700   APPEND
701   KDIS_HEADERS
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
716 list(
717   APPEND
718   KDIS_SOURCES
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)
744   list(
745     APPEND
746     KDIS_HEADERS
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
763   )
764   list(
765     APPEND
766     KDIS_SOURCES
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
783   )
784 endif()
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)
792   list(
793     APPEND
794     KDIS_HEADERS
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
801   )
802   list(
803     APPEND
804     KDIS_SOURCES
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
811   )
812 endif()
814 # PDU Warfare
815 set(KDIS_PDU_WARFARE_HEADERS_DIR ${KDIS_HEADERS_DIR}/PDU/Warfare)
816 set(KDIS_PDU_WARFARE_SOURCES_DIR ${KDIS_SOURCES_DIR}/PDU/Warfare)
818 # PDU Warfare DIS 5
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
828 # PDU Warfare DIS 7
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
832   )
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
835   )
836 endif()
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
847   )
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
851   )
852 endif()
854 # Extras
855 set(KDIS_EXTRAS_HEADERS_DIR ${KDIS_HEADERS_DIR}/Extras)
856 set(KDIS_EXTRAS_SOURCES_DIR ${KDIS_SOURCES_DIR}/Extras)
858 list(
859   APPEND
860   KDIS_HEADERS
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
876 # Network
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
889 # Library
891 add_library(${CMAKE_PROJECT_NAME} ${KDIS_SOURCES})
892 add_library(${CMAKE_PROJECT_NAME}::${CMAKE_PROJECT_NAME} ALIAS ${CMAKE_PROJECT_NAME})
893 # Export header
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>
912 # Properties
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
918 # -Werror> )
921 # Install
923 install(FILES ${KDIS_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/KDIS)
924 install(
925   TARGETS KDIS
926   EXPORT KDISTargets
927   RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
928   LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
929   ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
931 install(
932   EXPORT KDISTargets
933   NAMESPACE KDIS::
934   DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/KDIS
938 # CPack
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>")
949 include(CPack)
952 # Documentation
954 if(${BUILD_DOCS})
955   add_subdirectory(docs)
956 endif()
959 # Examples
961 if(${BUILD_EXAMPLES})
962   add_subdirectory(examples)
963 endif()
966 # Tests
968 if(${BUILD_TESTS})
969   add_subdirectory(tests)
970 endif()