The SONAME currently written to shared libraries is unversioned, e.g. libazure-core.so. The SDK's ABI is unstable, so replacing these .so files with newer versions will immediately break any consumers. Setting the VERSION property results in libazure-core.so being a symlink that is used at build time to point to the versioned library, e.g. libazure-core.so.1.14.0. Consumers point directly to the versioned library and continue to work against the older version when the library is upgraded. Once rebuilt, they then point to the newer version instead. It is more common to use an ABI version that is separate to the library version, but it makes sense to use the latter when the ABI is unstable. The Boost libraries do exactly this. This change has no effect on static libraries, which is the more common use case. See the CMake documentation for its wider effects. https://cmake.org/cmake/help/latest/prop_tgt/VERSION.html
131 lines
4.1 KiB
CMake
131 lines
4.1 KiB
CMake
# Copyright (c) Microsoft Corporation.
|
|
# Licensed under the MIT License.
|
|
|
|
# setting CMAKE_TOOLCHAIN_FILE must happen before creating the project
|
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../../cmake-modules")
|
|
include(AzureVcpkg)
|
|
az_vcpkg_integrate()
|
|
|
|
cmake_minimum_required (VERSION 3.13)
|
|
project(azure-security-keyvault-administration LANGUAGES CXX)
|
|
|
|
# Compile Options
|
|
option(FETCH_SOURCE_DEPS "build source dependencies" OFF)
|
|
|
|
set(CMAKE_CXX_STANDARD 14)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
|
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
|
|
|
if(FETCH_SOURCE_DEPS)
|
|
set(AZ_ALL_LIBRARIES ON)
|
|
include(FolderList)
|
|
SetCompileOptions(ADMINISTRATION)
|
|
endif()
|
|
|
|
include(AzureVersion)
|
|
include(AzureCodeCoverage)
|
|
include(AzureTransportAdapters)
|
|
include(AzureDoxygen)
|
|
include(AzureGlobalCompileOptions)
|
|
include(AzureConfigRTTI)
|
|
include(AzureBuildTargetForCI)
|
|
# Add create_map_file function
|
|
include(CreateMapFile)
|
|
|
|
if(FETCH_SOURCE_DEPS)
|
|
GetFolderList(ADMINISTRATION)
|
|
foreach(oneFolder IN LISTS BUILD_FOLDERS)
|
|
message("add folder ${oneFolder}")
|
|
add_subdirectory(${oneFolder})
|
|
endforeach()
|
|
elseif(NOT AZ_ALL_LIBRARIES)
|
|
find_package(azure-core-cpp CONFIG QUIET)
|
|
if(NOT azure-core-cpp_FOUND)
|
|
find_package(azure-core-cpp REQUIRED)
|
|
endif()
|
|
endif()
|
|
|
|
set(
|
|
AZURE_SECURITY_KEYVAULT_ADMINISTRATION_HEADER
|
|
inc/azure/keyvault/administration.hpp
|
|
inc/azure/keyvault/administration/backup_client.hpp
|
|
inc/azure/keyvault/administration/backup_operation.hpp
|
|
inc/azure/keyvault/administration/dll_import_export.hpp
|
|
inc/azure/keyvault/administration/rest_client_models.hpp
|
|
inc/azure/keyvault/administration/rtti.hpp
|
|
inc/azure/keyvault/administration/settings_client.hpp
|
|
inc/azure/keyvault/administration/settings_client_options.hpp
|
|
)
|
|
|
|
set(
|
|
AZURE_SECURITY_KEYVAULT_ADMINISTRATION_SOURCE
|
|
src/backup_client.cpp
|
|
src/backup_operation.cpp
|
|
src/keyvault_settings_common_request.cpp
|
|
src/private/administration_constants.hpp
|
|
src/private/keyvault_settings_common_request.hpp
|
|
src/private/package_version.hpp
|
|
src/settings_client.cpp
|
|
)
|
|
|
|
add_library(azure-security-keyvault-administration ${AZURE_SECURITY_KEYVAULT_ADMINISTRATION_HEADER} ${AZURE_SECURITY_KEYVAULT_ADMINISTRATION_SOURCE})
|
|
add_library(Azure::azure-security-keyvault-administration ALIAS azure-security-keyvault-administration)
|
|
create_per_service_target_build(keyvault azure-security-keyvault-administration)
|
|
|
|
target_include_directories(
|
|
azure-security-keyvault-administration
|
|
PUBLIC
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/inc>
|
|
$<INSTALL_INTERFACE:include>
|
|
)
|
|
|
|
# Include shared source code
|
|
# NOTE: Use shared-code only within .cpp files. DO NEVER consume the shared-code from header files.
|
|
target_include_directories(
|
|
azure-security-keyvault-administration
|
|
PRIVATE
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../azure-security-keyvault-shared/inc>
|
|
)
|
|
|
|
target_link_libraries(azure-security-keyvault-administration PUBLIC Azure::azure-core)
|
|
|
|
target_compile_definitions(azure-security-keyvault-administration PRIVATE _azure_BUILDING_SDK)
|
|
|
|
# coverage. Has no effect if BUILD_CODE_COVERAGE is OFF
|
|
create_code_coverage(keyvault azure-security-keyvault-administration azure-security-keyvault-administration-test "tests?/*;samples?/*")
|
|
|
|
get_az_version("${CMAKE_CURRENT_SOURCE_DIR}/src/private/package_version.hpp")
|
|
set_target_properties(azure-security-keyvault-administration PROPERTIES VERSION ${AZ_LIBRARY_VERSION})
|
|
generate_documentation(azure-security-keyvault-administration ${AZ_LIBRARY_VERSION})
|
|
if(BUILD_TESTING)
|
|
|
|
if (NOT AZ_ALL_LIBRARIES OR FETCH_SOURCE_DEPS)
|
|
include(AddGoogleTest)
|
|
enable_testing ()
|
|
endif()
|
|
|
|
add_subdirectory(test/ut)
|
|
endif()
|
|
|
|
if (BUILD_PERFORMANCE_TESTS)
|
|
#add_subdirectory(test/perf)
|
|
endif()
|
|
|
|
if(BUILD_SAMPLES)
|
|
add_subdirectory(samples)
|
|
endif()
|
|
|
|
az_vcpkg_export(
|
|
azure-security-keyvault-administration
|
|
SECURITY_KEYVAULT_ADMINISTRATION
|
|
azure/keyvault/administration/dll_import_export.hpp
|
|
)
|
|
|
|
az_rtti_setup(
|
|
azure-security-keyvault-administration
|
|
SECURITY_KEYVAULT_ADMINISTRATION
|
|
azure/keyvault/administration/rtti.hpp
|
|
)
|
|
|
|
unset(FETCH_SOURCE_DEPS CACHE)
|