diff --git a/CMakeLists.txt b/CMakeLists.txt index b79a0a55a..307881044 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,7 +29,7 @@ foreach(var ${vars}) #message("${var} = [${${var}}] -- ${currentHelpString}") # uncomment to see the variables being processed list(APPEND USER_ARGS "-D${var}=${${var}}") if( "${var}" STREQUAL "CMAKE_PREFIX_PATH") - set(PREFIX_PATH "|${${var}}") + set(PREFIX_PATH ";${${var}}") endif() endif() endforeach() @@ -47,7 +47,9 @@ 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}") -set(PREFIX_PATH "${LINPHONE_OUTPUT_DIR}|${MINIZIP_OUTPUT_DIR}|${APPLICATION_OUTPUT_DIR}${PREFIX_PATH}") +set(CMAKE_PREFIX_PATH "${LINPHONE_OUTPUT_DIR};${MINIZIP_OUTPUT_DIR};${APPLICATION_OUTPUT_DIR}${PREFIX_PATH}") +string(REPLACE ";" "|" PREFIX_PATH "${CMAKE_PREFIX_PATH}") +#set(PREFIX_PATH "${LINPHONE_OUTPUT_DIR}|${MINIZIP_OUTPUT_DIR}|${APPLICATION_OUTPUT_DIR}${PREFIX_PATH}") # Avoid cmake warning if CMP0071 is not set. if (POLICY CMP0071) @@ -104,7 +106,7 @@ list(APPEND APP_OPTIONS "-DENABLE_RELATIVE_PREFIX=${ENABLE_RELATIVE_PREFIX}") list(APPEND APP_OPTIONS "-DLINPHONE_OUTPUT_DIR=${LINPHONE_OUTPUT_DIR}") include(ExternalProject) -set(PROJECT_BUILD_COMMAND "--verbose") +set(PROJECT_BUILD_COMMAND "") if(CMAKE_BUILD_PARALLEL_LEVEL) list(APPEND APP_OPTIONS "-DCMAKE_BUILD_PARALLEL_LEVEL=${CMAKE_BUILD_PARALLEL_LEVEL}") if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.12.0") #CMAKE_BUILD_PARALLEL_LEVEL will not always work for External projects @@ -131,7 +133,8 @@ ExternalProject_Add_Step(sdk force_build DEPENDERS build ALWAYS 1 ) -ExternalProject_Add(minizip PREFIX "${CMAKE_BINARY_DIR}/minizip" +#Don't use minizip as target name because it can be a conflict with link libraries names +ExternalProject_Add(miniziplib PREFIX "${CMAKE_BINARY_DIR}/minizip" SOURCE_DIR "${CMAKE_SOURCE_DIR}/submodules/externals/minizip" INSTALL_DIR "${MINIZIP_OUTPUT_DIR}" BUILD_ALWAYS ON @@ -140,17 +143,37 @@ ExternalProject_Add(minizip PREFIX "${CMAKE_BINARY_DIR}/minizip" LIST_SEPARATOR | # Use the alternate list separator CMAKE_ARGS ${APP_OPTIONS} ${USER_ARGS} -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_PREFIX_PATH=${PREFIX_PATH} ) -ExternalProject_Add(linphone-qt PREFIX "${CMAKE_BINARY_DIR}/linphoneqt" - SOURCE_DIR "${CMAKE_SOURCE_DIR}/linphone-desktop" - INSTALL_DIR "${APPLICATION_OUTPUT_DIR}" - DEPENDS minizip sdk - BUILD_COMMAND ${CMAKE_COMMAND} --build --config $ ${PROJECT_BUILD_COMMAND} - LIST_SEPARATOR | # Use the alternate list separator - CMAKE_ARGS ${APP_OPTIONS} ${USER_ARGS} -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_PREFIX_PATH=${PREFIX_PATH} - # ${APP_OPTIONS} - BUILD_ALWAYS ON -) -ExternalProject_Add(linphone-qt-only PREFIX "${CMAKE_BINARY_DIR}/linphoneqt" +include(FindPkgConfig) +find_package(LinphoneCxx CONFIG) +find_package(Linphone CONFIG) +find_package(bctoolbox CONFIG) +find_package(belcard CONFIG) +find_package(Mediastreamer2 CONFIG) +find_package(ortp CONFIG) +pkg_search_module(MINIZIP minizip) + +if(NOT (LinphoneCxx_FOUND) OR NOT (Linphone_FOUND) OR NOT (bctoolbox_FOUND) OR NOT (belcard_FOUND) OR NOT (Mediastreamer2_FOUND) OR NOT (ortp_FOUND) OR NOT(MINIZIP_FOUND) ) + message("Projects are set as External projects. You can start building them by using for example : cmake --build . --target all") + ExternalProject_Add(linphone-qt PREFIX "${CMAKE_BINARY_DIR}/linphoneqt" + SOURCE_DIR "${CMAKE_SOURCE_DIR}/linphone-desktop" + INSTALL_DIR "${APPLICATION_OUTPUT_DIR}" + DEPENDS miniziplib sdk + BUILD_COMMAND ${CMAKE_COMMAND} --build --config $ ${PROJECT_BUILD_COMMAND} + LIST_SEPARATOR | # Use the alternate list separator + CMAKE_ARGS ${APP_OPTIONS} ${USER_ARGS} -DCMAKE_INSTALL_PREFIX:PATH= -DCMAKE_PREFIX_PATH=${PREFIX_PATH} + # ${APP_OPTIONS} + BUILD_ALWAYS ON + ) + set(AUTO_REGENERATION auto_regeneration) + add_custom_target(${AUTO_REGENERATION} ALL + COMMAND ${CMAKE_COMMAND} ${CMAKE_CURRENT_SOURCE_DIR} + DEPENDS linphone-qt) +else() + message("Adding Linphone Desktop in an IDE-friendly state") + set(CMAKE_INSTALL_PREFIX "${APPLICATION_OUTPUT_DIR}") + add_subdirectory(${CMAKE_SOURCE_DIR}/linphone-desktop) +endif() +ExternalProject_Add(linphoneqt-only PREFIX "${CMAKE_BINARY_DIR}/linphoneqt" SOURCE_DIR "${CMAKE_SOURCE_DIR}/linphone-desktop" INSTALL_DIR "${APPLICATION_OUTPUT_DIR}" BUILD_COMMAND ${CMAKE_COMMAND} --build --config $ ${PROJECT_BUILD_COMMAND} diff --git a/linphone-desktop/CMakeLists.txt b/linphone-desktop/CMakeLists.txt index 709b1f974..0c9ab9817 100644 --- a/linphone-desktop/CMakeLists.txt +++ b/linphone-desktop/CMakeLists.txt @@ -62,7 +62,6 @@ find_package(ortp CONFIG) include(FindPkgConfig) pkg_search_module(MINIZIP minizip) set(MINIZIP_INCLUDE_DIRS "${MINIZIP_PREFIX}/${MINIZIP_INCLUDE_DIRS}") -#set(MINIZIP_LIBRARIES "${MINIZIP_PREFIX}/${MINIZIP_LIBRARIES}") message("MINIZIP : ${MINIZIP_INCLUDE_DIRS} => ${MINIZIP_LIBRARIES}") message("INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} FRAMEWORK_PATH=${CMAKE_FRAMEWORK_PATH}") @@ -296,12 +295,12 @@ endforeach () if (NOT WIN32) add_custom_target( check_qml DEPENDS ${QML_SOURCES} - COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/tools/check_qml_syntax" + COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/../tools/check_qml_syntax" ) endif() execute_process(COMMAND ${CMAKE_COMMAND} -E copy - "${CMAKE_CURRENT_SOURCE_DIR}/tools/private/pre-commit" + "${CMAKE_CURRENT_SOURCE_DIR}/../tools/private/pre-commit" "${CMAKE_CURRENT_SOURCE_DIR}/../.git/hooks/pre-commit" ) set(_QML_IMPORT_PATHS "") @@ -396,8 +395,8 @@ set_target_properties(${TARGET_NAME} PROPERTIES OUTPUT_NAME "${EXECUTABLE_NAME}" set(INCLUDED_DIRECTORIES "${LINPHONECXX_INCLUDE_DIRS}" "${MINIZIP_INCLUDE_DIRS}") -#set(LIBRARIES ${BCTOOLBOX_CORE_LIBRARIES} ${BELCARD_LIBRARIES} ${LINPHONE_LIBRARIES} ${LINPHONECXX_LIBRARIES} ${MEDIASTREAMER2_LIBRARIES} ${ORTP_LIBRARIES} ${OPUS_LIBRARIES} ${MINIZIP_LIBRARIES}) -set(LIBRARIES ${BCTOOLBOX_CORE_LIBRARIES} ${BELCARD_LIBRARIES} ${LINPHONE_LIBRARIES} ${LINPHONECXX_LIBRARIES} ${MEDIASTREAMER2_LIBRARIES} ${ORTP_LIBRARIES} ${OPUS_LIBRARIES} "minizip") +set(LIBRARIES ${BCTOOLBOX_CORE_LIBRARIES} ${BELCARD_LIBRARIES} ${LINPHONE_LIBRARIES} ${LINPHONECXX_LIBRARIES} ${MEDIASTREAMER2_LIBRARIES} ${ORTP_LIBRARIES} ${OPUS_LIBRARIES} ${MINIZIP_LIBRARIES}) +#set(LIBRARIES ${BCTOOLBOX_CORE_LIBRARIES} ${BELCARD_LIBRARIES} ${LINPHONE_LIBRARIES} ${LINPHONECXX_LIBRARIES} ${MEDIASTREAMER2_LIBRARIES} ${ORTP_LIBRARIES} ${OPUS_LIBRARIES} "minizip") message("LIBRARIES : ${LIBRARIES}") foreach (package ${QT5_PACKAGES}) diff --git a/linphone-desktop/cmake_builder/linphone_package/CMakeLists.txt b/linphone-desktop/cmake_builder/linphone_package/CMakeLists.txt index d3df8e7e3..7c05a0a03 100644 --- a/linphone-desktop/cmake_builder/linphone_package/CMakeLists.txt +++ b/linphone-desktop/cmake_builder/linphone_package/CMakeLists.txt @@ -175,8 +175,9 @@ elseif (APPLE) install( CODE "execute_process(COMMAND install_name_tool -add_rpath \"@executable_path/../Frameworks/\" \"\${CMAKE_INSTALL_PREFIX}/${APPLICATION_NAME}.app/Contents/MacOS/${EXECUTABLE_NAME}\")") install( CODE "execute_process(COMMAND install_name_tool -add_rpath \"@executable_path/../lib/\" \"\${CMAKE_INSTALL_PREFIX}/${APPLICATION_NAME}.app/Contents/MacOS/${EXECUTABLE_NAME}\")") - install( CODE "execute_process(COMMAND ${DEPLOYQT_PROGRAM} \${CMAKE_INSTALL_PREFIX}/${APPLICATION_NAME}.app -qmldir=${LINPHONE_QML_DIR})")# -verbose=2)" COMPONENT binary_application) - + if(ENABLE_APP_PACKAGING) + install( CODE "execute_process(COMMAND ${DEPLOYQT_PROGRAM} \${CMAKE_INSTALL_PREFIX}/${APPLICATION_NAME}.app -qmldir=${LINPHONE_QML_DIR})") + endif() if (LINPHONE_BUILDER_SIGNING_IDENTITY) file(GLOB FRAMEWORKS_NAMES "${CMAKE_CURRENT_BINARY_DIR}/${APPLICATION_NAME}.app/Contents/Frameworks/*") foreach (FRAMEWORK ${FRAMEWORKS_NAMES}) diff --git a/linphone-desktop/src/app/AppController.cpp b/linphone-desktop/src/app/AppController.cpp index 9a3473047..8ff45ec84 100644 --- a/linphone-desktop/src/app/AppController.cpp +++ b/linphone-desktop/src/app/AppController.cpp @@ -43,6 +43,7 @@ AppController::AppController (int &argc, char *argv[]) { // Disable QML cache. Avoid malformed cache. qputenv("QML_DISABLE_DISK_CACHE", "true"); + mApp = new App(argc, argv); // --------------------------------------------------------------------------- QGuiApplication::setAttribute(Qt::AA_DisableHighDpiScaling, true); @@ -57,10 +58,8 @@ AppController::AppController (int &argc, char *argv[]) { // Do not use APPLICATION_NAME here. // The EXECUTABLE_NAME will be used in qt standard paths. It's our goal. QCoreApplication::setApplicationName(EXECUTABLE_NAME); - QCoreApplication::setApplicationVersion(LINPHONE_QT_GIT_VERSION); + QCoreApplication::setApplicationVersion(LINPHONE_QT_GIT_VERSION); QApplication::setOrganizationDomain(APPLICATION_ID); - - mApp = new App(argc, argv); QQuickStyle::setStyle("Default"); if (mApp->isSecondary()) { #ifdef Q_OS_MACOS