diff --git a/CMakeLists.txt b/CMakeLists.txt index a7455821f..b437bae29 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -43,7 +43,6 @@ set(MINIZIP_BUILD_DIR "${CMAKE_BINARY_DIR}/minizip_BUILD") set(MINIZIP_OUTPUT_DIR "${CMAKE_BINARY_DIR}/minizip_OUTPUT") set(APPLICATION_OUTPUT_DIR "${CMAKE_BINARY_DIR}/OUTPUT") message("minizip=${MINIZIP_OUTPUT_DIR} sdk=${LINPHONE_OUTPUT_DIR}") -#list(APPEND CMAKE_PREFIX_PATH "${LINPHONE_OUTPUT_DIR};${MINIZIP_OUTPUT_DIR};${APPLICATION_OUTPUT_DIR}") set(PREFIX_PATH "${LINPHONE_OUTPUT_DIR}|${MINIZIP_OUTPUT_DIR}|${APPLICATION_OUTPUT_DIR}") # Avoid cmake warning if CMP0071 is not set. @@ -77,7 +76,6 @@ option(ENABLE_TOOLS "Enable tools of SDK" NO) option(ENABLE_STRICT "Build with strict compilator flags e.g. -Wall -Werror" NO) option(ENABLE_FFMPEG "Build mediastreamer2 with ffmpeg video support." YES) -option(ENABLE_OPUS "Build mediastreamer2 with the OPUS codec." YES) if(WIN32 OR APPLE) else() @@ -86,29 +84,36 @@ endif() option(ENABLE_RELATIVE_PREFIX "Set Internal packages relative to the binary" YES) -set(ALL_OPTIONS "-DENABLE_UPDATE_CHECK=${ENABLE_UPDATE_CHECK}") -list(APPEND ALL_OPTIONS "-DENABLE_APP_PACKAGING=${ENABLE_APP_PACKAGING}") -list(APPEND ALL_OPTIONS "-DENABLE_UNIT_TESTS=${ENABLE_UNIT_TESTS}") -list(APPEND ALL_OPTIONS "-DENABLE_TESTS=${ENABLE_TESTS}") -list(APPEND ALL_OPTIONS "-DENABLE_TESTS_COMPONENTS=${ENABLE_TESTS_COMPONENTS}") -list(APPEND ALL_OPTIONS "-DENABLE_TOOLS=${ENABLE_TOOLS}") -list(APPEND ALL_OPTIONS "-DENABLE_STRICT=${ENABLE_STRICT}") -list(APPEND ALL_OPTIONS "-DENABLE_FFMPEG=${ENABLE_FFMPEG}") -list(APPEND ALL_OPTIONS "-DENABLE_OPUS=${ENABLE_OPUS}") +set(APP_OPTIONS "-DENABLE_UPDATE_CHECK=${ENABLE_UPDATE_CHECK}") +list(APPEND APP_OPTIONS "-DENABLE_APP_PACKAGING=${ENABLE_APP_PACKAGING}") +list(APPEND APP_OPTIONS "-DENABLE_UNIT_TESTS=${ENABLE_UNIT_TESTS}") +list(APPEND APP_OPTIONS "-DENABLE_TESTS=${ENABLE_TESTS}") +list(APPEND APP_OPTIONS "-DENABLE_TESTS_COMPONENTS=${ENABLE_TESTS_COMPONENTS}") +list(APPEND APP_OPTIONS "-DENABLE_TOOLS=${ENABLE_TOOLS}") +list(APPEND APP_OPTIONS "-DENABLE_STRICT=${ENABLE_STRICT}") +list(APPEND APP_OPTIONS "-DENABLE_FFMPEG=${ENABLE_FFMPEG}") +list(APPEND APP_OPTIONS "-DENABLE_OPUS=${ENABLE_OPUS}") if(ENABLE_V4L) - list(APPEND ALL_OPTIONS "-DENABLE_V4L=${ENABLE_V4L}") + list(APPEND APP_OPTIONS "-DENABLE_V4L=${ENABLE_V4L}") endif() -list(APPEND ALL_OPTIONS "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}") -list(APPEND ALL_OPTIONS "-DLINPHONE_OUTPUT_DIR=${LINPHONE_OUTPUT_DIR}") +list(APPEND APP_OPTIONS "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}") +list(APPEND APP_OPTIONS "-DLINPHONE_OUTPUT_DIR=${LINPHONE_OUTPUT_DIR}") include(ExternalProject) -if(${CMAKE_VERSION} VERSION_LESS "3.12.0") - set(PROJECT_BUILD_COMMAND "") -else() - list(APPEND PROJECT_BUILD_COMMAND "--parallel" "10") +#Get all CMAKE_* variables to pass them to external projects +include(linphone-sdk/cmake/LinphoneSdkUtils.cmake) +linphone_sdk_get_inherited_cmake_args() +list(APPEND APP_OPTIONS ${_inherited_cmake_args}) +set(PROJECT_BUILD_COMMAND "") +if(CMAKE_BUILD_PARALLEL_LEVEL) + list(APPEND APP_OPTIONS "-DCMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL}") #add it because it was not added by the SDK + if(${CMAKE_VERSION} VERSION_LESS "3.12.0") #CMAKE_BUILD_PARALLEL_LEVEL will not always work for External projects + list(APPEND PROJECT_BUILD_COMMAND "--parallel" "${CMAKE_BUILD_PARALLEL_LEVEL}") + endif() endif() + ExternalProject_Add(sdk PREFIX "${CMAKE_BINARY_DIR}/sdk" SOURCE_DIR "${CMAKE_SOURCE_DIR}/linphone-sdk" INSTALL_DIR "${LINPHONE_OUTPUT_DIR}" @@ -118,7 +123,7 @@ ExternalProject_Add(sdk PREFIX "${CMAKE_BINARY_DIR}/sdk" BUILD_COMMAND ${CMAKE_COMMAND} --build --config $ ${PROJECT_BUILD_COMMAND} INSTALL_COMMAND cmake -E echo "Skipping install step." LIST_SEPARATOR | # Use the alternate list separator - CMAKE_ARGS ${ALL_OPTIONS} -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_PREFIX_PATH=${PREFIX_PATH} ${USER_ARGS} + CMAKE_ARGS ${APP_OPTIONS} -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_PREFIX_PATH=${PREFIX_PATH} ${USER_ARGS} #BUILD_ALWAYS NO #${DO_BUILD} ) ExternalProject_Add_Step(sdk force_build @@ -134,7 +139,7 @@ ExternalProject_Add(minizip PREFIX "${CMAKE_BINARY_DIR}/minizip" DEPENDS sdk BUILD_COMMAND ${CMAKE_COMMAND} --build --config $ ${PROJECT_BUILD_COMMAND} LIST_SEPARATOR | # Use the alternate list separator - CMAKE_ARGS ${ALL_OPTIONS} -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_PREFIX_PATH=${PREFIX_PATH} ${USER_ARGS} + CMAKE_ARGS ${APP_OPTIONS} -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_PREFIX_PATH=${PREFIX_PATH} ${USER_ARGS} ) ExternalProject_Add(linphone-qt PREFIX "${CMAKE_BINARY_DIR}/linphoneqt" SOURCE_DIR "${CMAKE_SOURCE_DIR}/linphone-desktop" @@ -142,7 +147,7 @@ ExternalProject_Add(linphone-qt PREFIX "${CMAKE_BINARY_DIR}/linphoneqt" DEPENDS minizip sdk BUILD_COMMAND ${CMAKE_COMMAND} --build --config $ ${PROJECT_BUILD_COMMAND} LIST_SEPARATOR | # Use the alternate list separator - CMAKE_ARGS ${ALL_OPTIONS} -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_PREFIX_PATH=${PREFIX_PATH} ${USER_ARGS} + CMAKE_ARGS ${APP_OPTIONS} -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_PREFIX_PATH=${PREFIX_PATH} ${USER_ARGS} BUILD_ALWAYS ON ) ExternalProject_Add(linphone-qt-only PREFIX "${CMAKE_BINARY_DIR}/linphoneqt" @@ -150,6 +155,6 @@ ExternalProject_Add(linphone-qt-only PREFIX "${CMAKE_BINARY_DIR}/linphoneqt" INSTALL_DIR "${APPLICATION_OUTPUT_DIR}" BUILD_COMMAND ${CMAKE_COMMAND} --build --config $ ${PROJECT_BUILD_COMMAND} LIST_SEPARATOR | # Use the alternate list separator - CMAKE_ARGS ${ALL_OPTIONS} -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_PREFIX_PATH=${PREFIX_PATH} ${USER_ARGS} + CMAKE_ARGS ${APP_OPTIONS} -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_PREFIX_PATH=${PREFIX_PATH} ${USER_ARGS} EXCLUDE_FROM_ALL ON )