CMakeLists.txt (2175B)
1 # Copyright (c) Microsoft Corporation. 2 # Licensed under the MIT License. 3 4 project(IntegrationDOClient LANGUAGES CXX) 5 6 # Settings for do-client library 7 set(DO_INCLUDE_SDK 8 ON 9 CACHE BOOL "" FORCE) 10 set(DO_BUILD_TESTS 11 OFF 12 CACHE BOOL "" FORCE) 13 if(NOT DEFINED CMAKE_BUILD_TYPE) 14 set(CMAKE_BUILD_TYPE debug) 15 endif() 16 17 if(MSVC) 18 set(DO_PATCH_COMMAND "") 19 else() 20 # Populate LSB_RELEASE_ID_SHORT with the linux distro if available 21 find_program(LSB_RELEASE_EXEC lsb_release) 22 execute_process( 23 COMMAND ${LSB_RELEASE_EXEC} -is 24 OUTPUT_VARIABLE LSB_RELEASE_ID_SHORT 25 OUTPUT_STRIP_TRAILING_WHITESPACE) 26 27 if(LSB_RELEASE_ID_SHORT STREQUAL "Ubuntu") 28 # 1. Run bootstrap script to install Linux dependencies 29 # 2. Build & install DO Agent, which acts as a service for the REST API 30 set(DO_PATCH_COMMAND 31 cd <SOURCE_DIR> && sudo ./build/scripts/bootstrap.sh --install 32 build && python3 ./build/build.py --project agent --package-for deb 33 && cd /tmp/build-deliveryoptimization-agent/linux-debug && sudo 34 dpkg -i deliveryoptimization-agent_1.1.0_amd64.deb) 35 else() 36 message(FATAL_ERROR "Unsupported platform ${LSB_RELEASE_ID_SHORT}") 37 endif() 38 endif() 39 40 # Include the capability of fetching external content 41 include(FetchContent) 42 43 FetchContent_Declare( 44 do-client 45 GIT_REPOSITORY https://github.com/microsoft/do-client.git 46 GIT_TAG d71ade6f692dd8bc319ec3228c956517e9b29292 # v1.1.0 47 PATCH_COMMAND "${DO_PATCH_COMMAND}") 48 FetchContent_MakeAvailable(do-client) 49 50 add_executable(${PROJECT_NAME}) 51 52 target_sources(${PROJECT_NAME} PRIVATE IntegrationDOClient.cpp) 53 54 set(SFS_CLIENT_LIB_NAME "Microsoft::${CMAKE_PROJECT_NAME}") 55 add_dependencies(${PROJECT_NAME} ${SFS_CLIENT_LIB_NAME}) 56 target_link_libraries(${PROJECT_NAME} PRIVATE ${SFS_CLIENT_LIB_NAME}) 57 58 set(DO_SDK_LIB_NAME "Microsoft::deliveryoptimization") 59 add_dependencies(${PROJECT_NAME} ${DO_SDK_LIB_NAME}) 60 target_link_libraries(${PROJECT_NAME} PRIVATE ${DO_SDK_LIB_NAME}) 61 62 target_include_directories(${PROJECT_NAME} PUBLIC ../../client/include)