blob: e38c8c086b87f84035bd58ac724963631d089194 [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required(VERSION 3.10)
project(Apache.Geode CXX)
if(NOT "${STRONG_NAME_PUBLIC_KEY}" STREQUAL "")
set(STRONG_NAME_PUBLIC_KEY_ATTRIBUTE ", PublicKey=${STRONG_NAME_PUBLIC_KEY}")
endif()
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/impl/AssemblyInfo.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/impl/AssemblyInfo.cpp)
list(APPEND CONFIGURE_IN_FILES ${CMAKE_CURRENT_SOURCE_DIR}/impl/AssemblyInfo.cpp.in)
list(APPEND CONFIGURE_OUT_FILES ${CMAKE_CURRENT_BINARY_DIR}/impl/AssemblyInfo.cpp)
add_library(${PROJECT_NAME} SHARED
Apache.Geode.rc
AttributesMutator.cpp
AttributesMutator.hpp
begin_native.hpp
Cache.cpp
Cache.hpp
CacheableArrayList.hpp
CacheableBuiltins.hpp
CacheableDate.cpp
CacheableDate.hpp
CacheableFileName.cpp
CacheableFileName.hpp
CacheableHashMap.cpp
CacheableHashMap.hpp
CacheableHashSet.hpp
CacheableHashTable.hpp
CacheableIdentityHashMap.hpp
CacheableKey.cpp
CacheableKey.hpp
CacheableLinkedList.hpp
CacheableObject.cpp
CacheableObject.hpp
CacheableObjectArray.cpp
CacheableObjectArray.hpp
CacheableObjectXml.cpp
CacheableObjectXml.hpp
CacheableStack.cpp
CacheableStack.hpp
CacheableString.cpp
CacheableString.hpp
CacheableStringArray.cpp
CacheableStringArray.hpp
CacheableUndefined.cpp
CacheableUndefined.hpp
CacheableVector.cpp
CacheableVector.hpp
CacheFactory.cpp
CacheFactory.hpp
CacheListenerAdapter.hpp
CacheStatistics.cpp
CacheStatistics.hpp
CacheTransactionManager.cpp
CacheTransactionManager.hpp
CacheWriterAdapter.hpp
CMakeLists.txt
CqAttributes.cpp
CqAttributes.hpp
CqAttributesFactory.cpp
CqAttributesFactory.hpp
CqAttributesMutator.cpp
CqAttributesMutator.hpp
CqEvent.cpp
CqEvent.hpp
CqOperation.hpp
CqQuery.cpp
CqQuery.hpp
CqServiceStatistics.cpp
CqServiceStatistics.hpp
CqState.hpp
CqStatistics.cpp
CqStatistics.hpp
DataInput.cpp
DataInput.hpp
DataOutput.cpp
DataOutput.hpp
DiskPolicyType.hpp
DistributedSystem.cpp
DistributedSystem.hpp
end_native.hpp
EntryEvent.cpp
EntryEvent.hpp
ExceptionTypes.cpp
ExceptionTypes.hpp
Execution.cpp
Execution.hpp
ExpirationAction.hpp
FunctionService.cpp
FunctionService.hpp
GeodeClassIds.hpp
geode_defs.hpp
geode_includes.cpp
geode_includes.hpp
IAuthInitialize.hpp
ICacheableKey.hpp
ICacheListener.hpp
ICacheLoader.hpp
ICacheWriter.hpp
ICqAttributes.hpp
ICqEvent.hpp
ICqListener.hpp
ICqResults.hpp
ICqStatusListener.hpp
IDataSerializable.hpp
IDataSerializableFixedId.hpp
IDataSerializableInternal.hpp
IDataSerializablePrimitive.hpp
IFixedPartitionResolver.hpp
IGeodeCache.hpp
IDelta.hpp
ISerializable.hpp
IPartitionResolver.hpp
IPdxInstance.hpp
IPdxInstanceFactory.hpp
IPdxReader.hpp
IPdxSerializable.hpp
IPdxSerializer.hpp
IPdxTypeMapper.hpp
IPdxUnreadFields.hpp
IPdxWriter.hpp
IPersistenceManager.hpp
IRegion.hpp
IRegionService.hpp
IResultCollector.hpp
ISelectResults.hpp
ISubscriptionService.hpp
ITransactionListener.hpp
ITransactionWriter.hpp
IWritablePdxInstance.hpp
LocalRegion.cpp
LocalRegion.hpp
Log.cpp
Log.hpp
ManagedDataSerializableHandler.hpp
ManagedPdxTypeHandler.hpp
native_conditional_shared_ptr.hpp
native_conditional_unique_ptr.hpp
native_shared_ptr.hpp
native_unique_ptr.hpp
PdxIdentityFieldAttribute.hpp
Pool.cpp
Pool.hpp
PoolFactory.cpp
PoolFactory.hpp
PoolManager.cpp
PoolManager.hpp
Properties.cpp
Properties.hpp
Query.cpp
Query.hpp
QueryService.cpp
QueryService.hpp
ReflectionBasedAutoSerializer.cpp
ReflectionBasedAutoSerializer.hpp
Region.cpp
Region.hpp
RegionAttributes.cpp
RegionAttributes.hpp
RegionAttributesFactory.cpp
RegionAttributesFactory.hpp
RegionEntry.cpp
RegionEntry.hpp
RegionEvent.cpp
RegionEvent.hpp
RegionFactory.cpp
RegionFactory.hpp
RegionShortcut.hpp
ResultCollector.cpp
ResultCollector.hpp
ResultSet.cpp
ResultSet.hpp
SelectResultsIterator.cpp
SelectResultsIterator.hpp
Serializable.cpp
Serializable.hpp
Struct.cpp
Struct.hpp
StructSet.cpp
StructSet.hpp
SystemProperties.cpp
SystemProperties.hpp
TimeUtils.hpp
TransactionEvent.cpp
TransactionEvent.hpp
TransactionId.hpp
TransactionListenerAdapter.hpp
TransactionWriterAdapter.hpp
TypeRegistry.cpp
TypeRegistry.hpp
UserFunctionExecutionException.cpp
UserFunctionExecutionException.hpp
Utils.cpp
Utils.hpp
impl/AppDomainContext.cpp
impl/AppDomainContext.hpp
impl/AssemblyInfo.cpp.in
impl/AuthenticatedView.cpp
impl/AuthenticatedView.hpp
impl/CacheListener.hpp
impl/CacheLoader.hpp
impl/CacheResolver.cpp
impl/CacheResolver.hpp
impl/CacheWriter.hpp
impl/CliCallbackDelgate.cpp
impl/CliCallbackDelgate.hpp
impl/CqListenerProxy.hpp
impl/CqStatusListenerProxy.hpp
impl/DelegateWrapper.hpp
impl/DotNetTypes.hpp
impl/EnumInfo.cpp
impl/EnumInfo.hpp
impl/FixedPartitionResolver.hpp
impl/GeodeDataInputStream.hpp
impl/GeodeDataOutputStream.hpp
impl/GeodeNullStream.hpp
impl/ManagedAuthInitialize.cpp
impl/ManagedAuthInitialize.hpp
impl/ManagedCacheableDelta.cpp
impl/ManagedCacheableDelta.hpp
impl/ManagedCacheableKey.cpp
impl/ManagedCacheableKey.hpp
impl/ManagedCacheListener.cpp
impl/ManagedCacheListener.hpp
impl/ManagedCacheLoader.cpp
impl/ManagedCacheLoader.hpp
impl/ManagedCacheWriter.cpp
impl/ManagedCacheWriter.hpp
impl/ManagedCqListener.cpp
impl/ManagedCqListener.hpp
impl/ManagedCqStatusListener.cpp
impl/ManagedCqStatusListener.hpp
impl/ManagedFixedPartitionResolver.cpp
impl/ManagedFixedPartitionResolver.hpp
impl/ManagedPartitionResolver.cpp
impl/ManagedPartitionResolver.hpp
impl/ManagedPersistenceManager.cpp
impl/ManagedPersistenceManager.hpp
impl/ManagedResultCollector.cpp
impl/ManagedResultCollector.hpp
impl/ManagedString.hpp
impl/ManagedTransactionListener.cpp
impl/ManagedTransactionListener.hpp
impl/ManagedTransactionWriter.cpp
impl/ManagedTransactionWriter.hpp
impl/ManagedVisitor.cpp
impl/ManagedVisitor.hpp
impl/MemoryPressureHandler.cpp
impl/MemoryPressureHandler.hpp
impl/PartitionResolver.hpp
impl/PdxFieldType.cpp
impl/PdxFieldType.hpp
impl/PdxHelper.cpp
impl/PdxHelper.hpp
impl/PdxInstanceFactoryImpl.cpp
impl/PdxInstanceFactoryImpl.hpp
impl/PdxInstanceImpl.cpp
impl/PdxInstanceImpl.hpp
impl/PdxLocalReader.cpp
impl/PdxLocalReader.hpp
impl/PdxLocalWriter.cpp
impl/PdxLocalWriter.hpp
impl/PdxManagedCacheableKey.cpp
impl/PdxManagedCacheableKey.hpp
impl/PdxReaderWithTypeCollector.cpp
impl/PdxReaderWithTypeCollector.hpp
impl/PdxRemotePreservedData.hpp
impl/PdxRemoteReader.cpp
impl/PdxRemoteReader.hpp
impl/PdxRemoteWriter.cpp
impl/PdxRemoteWriter.hpp
impl/PdxType.cpp
impl/PdxType.hpp
impl/PdxTypeRegistry.cpp
impl/PdxTypeRegistry.hpp
impl/PdxWrapper.hpp
impl/PdxWriterWithTypeCollector.cpp
impl/PdxWriterWithTypeCollector.hpp
impl/PersistenceManagerProxy.hpp
impl/RegionImpl.cpp
impl/RegionImpl.hpp
impl/ResultCollectorProxy.hpp
impl/SafeConvert.hpp
impl/TransactionListener.hpp
impl/TransactionWriter.hpp
impl/WeakhashMap.hpp
${CONFIGURE_OUT_FILES}
)
set_target_properties(${PROJECT_NAME} PROPERTIES
COMMON_LANGUAGE_RUNTIME ""
OUTPUT_NAME ${PRODUCT_DLL_NAME}
VS_GLOBAL_CLRSupport "true"
VS_GLOBAL_KEYWORD "ManagedCProj"
VS_GLOBAL_PROJECT_TYPES "{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}"
VS_GLOBAL_ROOTNAMESPACE ${PROJECT_NAME}
VS_DOTNET_REFERENCES "System;System.Xml;System.Core"
FOLDER cli
)
target_compile_options(${PROJECT_NAME}
PRIVATE
/bigobj # C1128 - large number of templates causes too many section.
/Zm32 # C3859 - internal heap limit reached
#/doc # Documents to xml
# warnings as error
/we4488 # interfaces fully implemented.
# disabled warnings
/wd4947 /wd4251 /wd4635
)
target_include_directories(${PROJECT_NAME}
PRIVATE
$<TARGET_PROPERTY:apache-geode,SOURCE_DIR>/../src
)
target_link_libraries(${PROJECT_NAME}
PUBLIC
psapi
PRIVATE
c++cli
c++11
apache-geode-static
_WarningsAsError
)
string(REPLACE "/RTC1" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${SHARED_LINKER_FLAGS_STRONG_KEY}")
include(PrecompiledHeader)
add_precompiled_header(${PROJECT_NAME} geode_includes.hpp FORCEINCLUDE)
install(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
)
IF(MSVC)
INSTALL (
FILES $<TARGET_PDB_FILE:${PROJECT_NAME}>
DESTINATION bin
CONFIGURATIONS Debug RelWithDebInfo
)
ENDIF(MSVC)
add_dependencies(client-libraries ${PROJECT_NAME})
add_subdirectory(templates)
# For Visual Studio organization
source_group("Configure In Files" FILES ${CONFIGURE_IN_FILES})
source_group("Configure Out Files" FILES ${CONFIGURE_OUT_FILES})