# Copyright (c) Intel Corporation, 2019-2024 All Rights Reserved.
cmake_minimum_required (VERSION 3.15)

add_library (CPPCIMFramework STATIC
  src/CimAnonymous.cpp
  src/CimBase.cpp
  src/CimClassFactory.cpp
  src/CimTypedUtils.cpp
  CPPClasses/Src/AMT_8021xCredentialContext.cpp
  CPPClasses/Src/AMT_8021XProfile.cpp
  CPPClasses/Src/AMT_ActiveFilterStatistics.cpp
  CPPClasses/Src/AMT_AgentPresenceCapabilities.cpp
  CPPClasses/Src/AMT_AgentPresenceInterfacePolicy.cpp
  CPPClasses/Src/AMT_AgentPresenceService.cpp
  CPPClasses/Src/AMT_AgentPresenceWatchdogAction.cpp
  CPPClasses/Src/AMT_AgentPresenceWatchdog.cpp
  CPPClasses/Src/AMT_AlarmClockService.cpp
  CPPClasses/Src/AMT_AssetTable.cpp
  CPPClasses/Src/AMT_AssetTableService.cpp
  CPPClasses/Src/AMT_AuditLog.cpp
  CPPClasses/Src/AMT_AuditPolicyRule.cpp
  CPPClasses/Src/AMT_AuthorizationService.cpp
  CPPClasses/Src/AMT_BootCapabilities.cpp
  CPPClasses/Src/AMT_BootSettingData.cpp
  CPPClasses/Src/AMT_ComplexFilterEntryBase.cpp
  CPPClasses/Src/AMT_CRL.cpp
  CPPClasses/Src/AMT_CryptographicCapabilities.cpp
  CPPClasses/Src/AMT_EACCredentialContext.cpp
  CPPClasses/Src/AMT_EndpointAccessControlService.cpp
  CPPClasses/Src/AMT_EnvironmentDetectionInterfacePolicy.cpp
  CPPClasses/Src/AMT_EnvironmentDetectionSettingData.cpp
  CPPClasses/Src/AMT_EthernetPortSettings.cpp
  CPPClasses/Src/AMT_EventLogEntry.cpp
  CPPClasses/Src/AMT_EventManagerService.cpp
  CPPClasses/Src/AMT_EventSubscriber.cpp
  CPPClasses/Src/AMT_FilterEntryBase.cpp
  CPPClasses/Src/AMT_FilterInSystemDefensePolicy.cpp
  CPPClasses/Src/AMT_GeneralSettings.cpp
  CPPClasses/Src/AMT_GeneralSystemDefenseCapabilities.cpp
  CPPClasses/Src/AMT_Hdr8021Filter.cpp
  CPPClasses/Src/AMT_InterfacePolicy.cpp
  CPPClasses/Src/AMT_IPHeadersFilter.cpp
  CPPClasses/Src/AMT_KerberosSettingData.cpp
  CPPClasses/Src/AMT_ManagementPresenceRemoteSAP.cpp
  CPPClasses/Src/AMT_MessageLog.cpp
  CPPClasses/Src/AMT_MPSUsernamePassword.cpp
  CPPClasses/Src/AMT_NetworkFilter.cpp
  CPPClasses/Src/AMT_NetworkPortDefaultSystemDefensePolicy.cpp
  CPPClasses/Src/AMT_NetworkPortSystemDefenseCapabilities.cpp
  CPPClasses/Src/AMT_NetworkPortSystemDefensePolicy.cpp
  CPPClasses/Src/AMT_PCIDevice.cpp
  CPPClasses/Src/AMT_PETCapabilities.cpp
  CPPClasses/Src/AMT_PETFilterForTarget.cpp
  CPPClasses/Src/AMT_PETFilterSetting.cpp
  CPPClasses/Src/AMT_ProvisioningCertificateHash.cpp
  CPPClasses/Src/AMT_PublicKeyCertificate.cpp
  CPPClasses/Src/AMT_PublicKeyManagementCapabilities.cpp
  CPPClasses/Src/AMT_PublicKeyManagementService.cpp
  CPPClasses/Src/AMT_PublicPrivateKeyPair.cpp
  CPPClasses/Src/AMT_RedirectionService.cpp
  CPPClasses/Src/AMT_RemoteAccessCapabilities.cpp
  CPPClasses/Src/AMT_RemoteAccessCredentialContext.cpp
  CPPClasses/Src/AMT_RemoteAccessPolicyAppliesToMPS.cpp
  CPPClasses/Src/AMT_RemoteAccessPolicyRule.cpp
  CPPClasses/Src/AMT_RemoteAccessService.cpp
  CPPClasses/Src/AMT_SetupAndConfigurationService.cpp
  CPPClasses/Src/AMT_SNMPEventSubscriber.cpp
  CPPClasses/Src/AMT_StateTransitionCondition.cpp
  CPPClasses/Src/AMT_SystemDefensePolicy.cpp
  CPPClasses/Src/AMT_SystemDefensePolicyInService.cpp
  CPPClasses/Src/AMT_SystemDefenseService.cpp
  CPPClasses/Src/AMT_SystemPowerScheme.cpp
  CPPClasses/Src/AMT_TimeSynchronizationService.cpp
  CPPClasses/Src/AMT_TLSCredentialContext.cpp
  CPPClasses/Src/AMT_TLSProtocolEndpointCollection.cpp
  CPPClasses/Src/AMT_TLSProtocolEndpoint.cpp
  CPPClasses/Src/AMT_TLSSettingData.cpp
  CPPClasses/Src/AMT_TrapTargetForService.cpp
  CPPClasses/Src/AMT_UserInitiatedConnectionService.cpp
  CPPClasses/Src/AMT_WebUIService.cpp
  CPPClasses/Src/AMT_WiFiPortConfigurationService.cpp
  CPPClasses/Src/CIM_AbstractIndicationSubscription.cpp
  CPPClasses/Src/CIM_Account.cpp
  CPPClasses/Src/CIM_AccountManagementCapabilities.cpp
  CPPClasses/Src/CIM_AccountManagementService.cpp
  CPPClasses/Src/CIM_AccountOnSystem.cpp
  CPPClasses/Src/CIM_AdminDomain.cpp
  CPPClasses/Src/CIM_AlertIndication.cpp
  CPPClasses/Src/CIM_AssignedIdentity.cpp
  CPPClasses/Src/CIM_AssociatedPowerManagementService.cpp
  CPPClasses/Src/CIM_AssociatedPrivilege.cpp
  CPPClasses/Src/CIM_AuthenticationService.cpp
  CPPClasses/Src/CIM_AuthorizationService.cpp
  CPPClasses/Src/CIM_AuthorizedPrivilege.cpp
  CPPClasses/Src/CIM_BIOSElement.cpp
  CPPClasses/Src/CIM_BIOSFeatureBIOSElements.cpp
  CPPClasses/Src/CIM_BIOSFeature.cpp
  CPPClasses/Src/CIM_BootConfigSetting.cpp
  CPPClasses/Src/CIM_BootService.cpp
  CPPClasses/Src/CIM_BootSettingData.cpp
  CPPClasses/Src/CIM_BootSourceSetting.cpp
  CPPClasses/Src/CIM_Capabilities.cpp
  CPPClasses/Src/CIM_Card.cpp
  CPPClasses/Src/CIM_Chassis.cpp
  CPPClasses/Src/CIM_Chip.cpp
  CPPClasses/Src/CimClassFactoryAutoGenerated.cpp
  CPPClasses/Src/CIM_Collection.cpp
  CPPClasses/Src/CIM_Component.cpp
  CPPClasses/Src/CIM_ComputerSystem.cpp
  CPPClasses/Src/CIM_ComputerSystemPackage.cpp
  CPPClasses/Src/CIM_ConcreteComponent.cpp
  CPPClasses/Src/CIM_ConcreteDependency.cpp
  CPPClasses/Src/CIM_ConcreteJob.cpp
  CPPClasses/Src/CIM_Controller.cpp
  CPPClasses/Src/CIM_CoolingDevice.cpp
  CPPClasses/Src/CIM_CredentialContext.cpp
  CPPClasses/Src/CIM_Credential.cpp
  CPPClasses/Src/CIM_CredentialManagementService.cpp
  CPPClasses/Src/CIM_Dependency.cpp
  CPPClasses/Src/CIM_DeviceSAPImplementation.cpp
  CPPClasses/Src/CIM_ElementCapabilities.cpp
  CPPClasses/Src/CIM_ElementConformsToProfile.cpp
  CPPClasses/Src/CIM_ElementLocation.cpp
  CPPClasses/Src/CIM_ElementSettingData.cpp
  CPPClasses/Src/CIM_ElementSoftwareIdentity.cpp
  CPPClasses/Src/CIM_ElementStatisticalData.cpp
  CPPClasses/Src/CIM_EnabledLogicalElementCapabilities.cpp
  CPPClasses/Src/CIM_EnabledLogicalElement.cpp
  CPPClasses/Src/CIM_Error.cpp
  CPPClasses/Src/CIM_EthernetPort.cpp
  CPPClasses/Src/CIM_Fan.cpp
  CPPClasses/Src/CIM_FilterCollection.cpp
  CPPClasses/Src/CIM_FilterCollectionSubscription.cpp
  CPPClasses/Src/CIM_HostedAccessPoint.cpp
  CPPClasses/Src/CIM_HostedDependency.cpp
  CPPClasses/Src/CIM_HostedService.cpp
  CPPClasses/Src/CIM_Identity.cpp
  CPPClasses/Src/CIM_IEEE8021xCapabilities.cpp
  CPPClasses/Src/CIM_IEEE8021xSettings.cpp
  CPPClasses/Src/CIM_Indication.cpp
  CPPClasses/Src/CIM_IndicationService.cpp
  CPPClasses/Src/CIM_InstalledSoftwareIdentity.cpp
  CPPClasses/Src/CIM_Job.cpp
  CPPClasses/Src/CIM_KVMRedirectionSAP.cpp
  CPPClasses/Src/CIM_LANEndpoint.cpp
  CPPClasses/Src/CIM_ListenerDestination.cpp
  CPPClasses/Src/CIM_ListenerDestinationWSManagement.cpp
  CPPClasses/Src/CIM_Location.cpp
  CPPClasses/Src/CIM_Log.cpp
  CPPClasses/Src/CIM_LogEntry.cpp
  CPPClasses/Src/CIM_LogicalDevice.cpp
  CPPClasses/Src/CIM_LogicalElement.cpp
  CPPClasses/Src/CIM_LogicalPortCapabilities.cpp
  CPPClasses/Src/CIM_LogicalPort.cpp
  CPPClasses/Src/CIM_LogManagesRecord.cpp
  CPPClasses/Src/CIM_ManagedCredential.cpp
  CPPClasses/Src/CIM_ManagedElement.cpp
  CPPClasses/Src/CIM_ManagedSystemElement.cpp
  CPPClasses/Src/CIM_MediaAccessDevice.cpp
  CPPClasses/Src/CIM_MemberOfCollection.cpp
  CPPClasses/Src/CIM_Memory.cpp
  CPPClasses/Src/CIM_MessageLog.cpp
  CPPClasses/Src/CIM_NetworkPortCapabilities.cpp
  CPPClasses/Src/CIM_NetworkPortConfigurationService.cpp
  CPPClasses/Src/CIM_NetworkPort.cpp
  CPPClasses/Src/CIM_OrderedComponent.cpp
  CPPClasses/Src/CIM_OwningCollectionElement.cpp
  CPPClasses/Src/CIM_OwningJobElement.cpp
  CPPClasses/Src/CIM_PCIController.cpp
  CPPClasses/Src/CIM_PhysicalComponent.cpp
  CPPClasses/Src/CIM_PhysicalConnector.cpp
  CPPClasses/Src/CIM_PhysicalElement.cpp
  CPPClasses/Src/CIM_PhysicalElementLocation.cpp
  CPPClasses/Src/CIM_PhysicalFrame.cpp
  CPPClasses/Src/CIM_PhysicalMemory.cpp
  CPPClasses/Src/CIM_PhysicalPackage.cpp
  CPPClasses/Src/CIM_PolicyAction.cpp
  CPPClasses/Src/CIM_PolicyCondition.cpp
  CPPClasses/Src/CIM_Policy.cpp
  CPPClasses/Src/CIM_PolicyInSystem.cpp
  CPPClasses/Src/CIM_PolicyRule.cpp
  CPPClasses/Src/CIM_PolicyRuleInSystem.cpp
  CPPClasses/Src/CIM_PolicySetAppliesToElement.cpp
  CPPClasses/Src/CIM_PolicySet.cpp
  CPPClasses/Src/CIM_PolicySetInSystem.cpp
  CPPClasses/Src/CIM_PowerManagementCapabilities.cpp
  CPPClasses/Src/CIM_PowerManagementService.cpp
  CPPClasses/Src/CIM_PowerSupply.cpp
  CPPClasses/Src/CIM_Privilege.cpp
  CPPClasses/Src/CIM_PrivilegeManagementCapabilities.cpp
  CPPClasses/Src/CIM_PrivilegeManagementService.cpp
  CPPClasses/Src/CIM_ProcessIndication.cpp
  CPPClasses/Src/CIM_Processor.cpp
  CPPClasses/Src/CIM_ProtocolEndpoint.cpp
  CPPClasses/Src/CIM_ProvidesServiceToElement.cpp
  CPPClasses/Src/CIM_Realizes.cpp
  CPPClasses/Src/CIM_RecordForLog.cpp
  CPPClasses/Src/CIM_RecordLog.cpp
  CPPClasses/Src/CIM_RedirectionService.cpp
  CPPClasses/Src/CIM_ReferencedProfile.cpp
  CPPClasses/Src/CIM_RegisteredProfile.cpp
  CPPClasses/Src/CIM_RemoteAccessAvailableToElement.cpp
  CPPClasses/Src/CIM_RemoteIdentity.cpp
  CPPClasses/Src/CIM_RemotePort.cpp
  CPPClasses/Src/CIM_RemoteServiceAccessPoint.cpp
  CPPClasses/Src/CIM_RoleBasedAuthorizationService.cpp
  CPPClasses/Src/CIM_RoleBasedManagementCapabilities.cpp
  CPPClasses/Src/CIM_Role.cpp
  CPPClasses/Src/CIM_RoleLimitedToTarget.cpp
  CPPClasses/Src/CIM_SAPAvailableForElement.cpp
  CPPClasses/Src/CIM_SecurityService.cpp
  CPPClasses/Src/CIM_Sensor.cpp
  CPPClasses/Src/CIM_ServiceAccessBySAP.cpp
  CPPClasses/Src/CIM_ServiceAccessPoint.cpp
  CPPClasses/Src/CIM_ServiceAffectsElement.cpp
  CPPClasses/Src/CIM_ServiceAvailableToElement.cpp
  CPPClasses/Src/CIM_Service.cpp
  CPPClasses/Src/CIM_ServiceSAPDependency.cpp
  CPPClasses/Src/CIM_ServiceServiceDependency.cpp
  CPPClasses/Src/CIM_SettingData.cpp
  CPPClasses/Src/CIM_SettingsDefineState.cpp
  CPPClasses/Src/CIM_SharedCredential.cpp
  CPPClasses/Src/CIM_SoftwareElement.cpp
  CPPClasses/Src/CIM_SoftwareFeature.cpp
  CPPClasses/Src/CIM_SoftwareFeatureSoftwareElements.cpp
  CPPClasses/Src/CIM_SoftwareIdentity.cpp
  CPPClasses/Src/CIM_StatisticalData.cpp
  CPPClasses/Src/CIM_StorageExtent.cpp
  CPPClasses/Src/CIM_SystemBIOS.cpp
  CPPClasses/Src/CIM_SystemComponent.cpp
  CPPClasses/Src/CIM_System.cpp
  CPPClasses/Src/CIM_SystemDevice.cpp
  CPPClasses/Src/CIM_SystemPackaging.cpp
  CPPClasses/Src/CIM_UseOfLog.cpp
  CPPClasses/Src/CIM_Watchdog.cpp
  CPPClasses/Src/CIM_WiFiEndpointCapabilities.cpp
  CPPClasses/Src/CIM_WiFiEndpoint.cpp
  CPPClasses/Src/CIM_WiFiEndpointSettings.cpp
  CPPClasses/Src/CIM_WiFiPortCapabilities.cpp
  CPPClasses/Src/CIM_WiFiPort.cpp
  CPPClasses/Src/IPS_8021xCredentialContext.cpp
  CPPClasses/Src/IPS_AdminProvisioningRecord.cpp
  CPPClasses/Src/IPS_AlarmClockOccurrence.cpp
  CPPClasses/Src/IPS_ClientProvisioningRecord.cpp
  CPPClasses/Src/IPS_DALProvisioningRecord.cpp
  CPPClasses/Src/IPS_HostBasedSetupService.cpp
  CPPClasses/Src/IPS_HostBootReason.cpp
  CPPClasses/Src/IPS_HostIPSettings.cpp
  CPPClasses/Src/IPS_HTTPProxyAccessPoint.cpp
  CPPClasses/Src/IPS_HTTPProxyService.cpp
  CPPClasses/Src/IPS_IderSessionUsingPort.cpp
  CPPClasses/Src/IPS_IEEE8021xSettings.cpp
  CPPClasses/Src/IPS_IPv6PortSettings.cpp
  CPPClasses/Src/IPS_KVMRedirectionSettingData.cpp
  CPPClasses/Src/IPS_KvmSessionUsingPort.cpp
  CPPClasses/Src/IPS_LANEndpoint.cpp
  CPPClasses/Src/IPS_ManualProvisioningRecord.cpp
  CPPClasses/Src/IPS_OptInService.cpp
  CPPClasses/Src/IPS_PowerManagementCapabilities.cpp
  CPPClasses/Src/IPS_PowerManagementService.cpp
  CPPClasses/Src/IPS_ProvisioningAuditRecord.cpp
  CPPClasses/Src/IPS_ProvisioningRecordLog.cpp
  CPPClasses/Src/IPS_RasSessionUsingPort.cpp
  CPPClasses/Src/IPS_ScreenConfigurationService.cpp
  CPPClasses/Src/IPS_ScreenSettingData.cpp
  CPPClasses/Src/IPS_SecIOService.cpp
  CPPClasses/Src/IPS_SessionUsingPort.cpp
  CPPClasses/Src/IPS_SolSessionUsingPort.cpp
  CPPClasses/Src/IPS_TLSProvisioningRecord.cpp
  CPPClasses/Src/IPS_WatchDogAction.cpp
)

file (GLOB CIMFRAMEWORK_INCLUDES
  include/*.h
  CPPClasses/Include/*.h
)

set_target_properties (CPPCIMFramework PROPERTIES POSITION_INDEPENDENT_CODE ON)
set_target_properties (CPPCIMFramework PROPERTIES PUBLIC_HEADER "${CIMFRAMEWORK_INCLUDES}")

target_link_libraries (CPPCIMFramework
  CPPCimFrameworkUntyped
)

target_include_directories (CPPCIMFramework PUBLIC
  "CPPClasses/Include/"
  "include/"
)
