From b4cbbf96edc5f886f01339c0b2badca253202924 Mon Sep 17 00:00:00 2001 From: Julien Wadel Date: Wed, 12 Feb 2020 12:02:33 +0100 Subject: [PATCH] Update options and explanations on error application path --- CMakeLists.txt | 57 +++++++++++++++++++++-------------------- src/app/paths/Paths.cpp | 18 +++++++++++-- 2 files changed, 45 insertions(+), 30 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index eca42bb2b..9a83d4b8f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -58,36 +58,37 @@ set(ASSETS_DIR "assets") option(ENABLE_UPDATE_CHECK "Enable update check." NO) option(ENABLE_UNIT_TESTS "Enable unit test of SDK." NO ) option(ENABLE_TOOLS "Enable tools of SDK" NO) - -#option(ENABLE_GPL_THIRD_PARTIES "" YES) -#option(ENABLE_NON_FREE_CODECS "Allow inclusion of non-free codecs in the build." YES) -#option(ENABLE_AMRNB "" YES) -#option(ENABLE_AMRWB "" YES) -#option(ENABLE_BV16 "Build mediastreamer2 with the BV16 codec." YES) -#option(ENABLE_G729 "Build mediastreamer2 with the G726 codec." YES) -##option(ENABLE_G729B_CNG "Build mediastreamer2 with G729 annex B cng." NO) -#option(ENABLE_GSM "Build mediastreamer2 with the GSM codec." YES) -#option(ENABLE_ILBC "" YES) -#option(ENABLE_ISAC "" YES) -#option(ENABLE_SILK "" YES) -##option(ENABLE_SPEEX "" YES) -#option(ENABLE_SPEEX_CODEC "Build mediastreamer2 with the SPEEX codec." YES) -#option(ENABLE_SPEEX_DSP "Build mediastreamer2 with the SPEEX DSP support." YES) -#option(ENABLE_H263 "" YES) -#option(ENABLE_H263P "" YES) -#option(ENABLE_MPEG4 "" YES) -#option(ENABLE_OPENH264 "Embedded OpenH264" YES) -#option(ENABLE_VPX "Build mediastreamer2 with VPX codec." YES) -#option(ENABLE_MKV "Enable support of MKV files reading and writing." YES) -#if(WIN32 OR APPLE) - #option(ENABLE_FFMPEG "Build mediastreamer2 with ffmpeg video support." YES) - #option(ENABLE_OPUS "Build mediastreamer2 with the OPUS codec." YES) -#else()##Opus crash on Linux. The version for 4.3 is old. We have to use a switch in configuration to select the newest version for desktop. -# option(ENABLE_OPUS "Build mediastreamer2 with the OPUS codec." YES) - #option(ENABLE_FFMPEG "Build mediastreamer2 with ffmpeg video support." NO) -#endif() +option(ENABLE_GPL_THIRD_PARTIES "" YES) +option(ENABLE_NON_FREE_CODECS "Allow inclusion of non-free codecs in the build." YES) +option(ENABLE_AMRNB "" YES) +option(ENABLE_AMRWB "" YES) +option(ENABLE_BV16 "Build mediastreamer2 with the BV16 codec." YES) +option(ENABLE_G729 "Build mediastreamer2 with the G726 codec." YES) +option(ENABLE_G729B_CNG "Build mediastreamer2 with G729 annex B cng." NO) +option(ENABLE_GSM "Build mediastreamer2 with the GSM codec." YES) +option(ENABLE_ILBC "" YES) +option(ENABLE_ISAC "" YES) +option(ENABLE_SILK "" YES) +option(ENABLE_SPEEX "" YES) +option(ENABLE_SPEEX_CODEC "Build mediastreamer2 with the SPEEX codec." YES) +option(ENABLE_SPEEX_DSP "Build mediastreamer2 with the SPEEX DSP support." YES) +option(ENABLE_H263 "" YES) +option(ENABLE_H263P "" YES) +option(ENABLE_LIME_X3DH "Enable lime X3DH support." YES) +option(ENABLE_MPEG4 "" YES) +option(ENABLE_OPENH264 "Embedded OpenH264" YES) +option(ENABLE_VPX "Build mediastreamer2 with VPX codec." YES) +option(ENABLE_V4L "Ability to capture and display video using libv4l2 or libv4l." YES) +option(ENABLE_MKV "Enable support of MKV files reading and writing." YES) +option(ENABLE_FFMPEG "Build mediastreamer2 with ffmpeg video support." YES) +if(WIN32 OR APPLE) + option(ENABLE_OPUS "Build mediastreamer2 with the OPUS codec." YES) +else()##Opus crash on Linux. The version for 4.3 is old. We have to use a switch in configuration to select the newest version for desktop. + option(ENABLE_OPUS "Build mediastreamer2 with the OPUS codec." NO) +endif() +option(ENABLE_RELATIVE_PREFIX "Set Internal packages relative to the binary" YES) include(GNUInstallDirs) include(CheckCXXCompilerFlag) diff --git a/src/app/paths/Paths.cpp b/src/app/paths/Paths.cpp index 5554a4676..abfcc733a 100644 --- a/src/app/paths/Paths.cpp +++ b/src/app/paths/Paths.cpp @@ -42,7 +42,7 @@ namespace { constexpr char PathCaptures[] = "/" EXECUTABLE_NAME "/captures/"; constexpr char PathCodecs[] = "/codecs/"; constexpr char PathLogs[] = "/logs/"; - constexpr char PathPlugins[] = "/plugins/"; + //constexpr char PathPlugins[] = "/plugins/"; // Unused constexpr char PathThumbnails[] = "/thumbnails/"; constexpr char PathUserCertificates[] = "/usr-crt/"; @@ -103,6 +103,17 @@ static inline string getWritableFilePath (const QString &filename) { } // ----------------------------------------------------------------------------- +// On Windows or Linux, the folders of the application are : +// bin/linphone +// lib/ +// lib64/ +// share/ + +// But in some cases, it can be : +// /linphone +// lib/ +// lib64/ +// share/ static inline QDir getAppPackageDir () { QDir dir(QCoreApplication::applicationDirPath()); @@ -113,8 +124,11 @@ static inline QDir getAppPackageDir () { dir.mkdir("Resources"); dir.cd("Resources"); } - } else + } else if( !dir.exists("lib") && !dir.exists("lib64")){// Check if these folders are in the current path dir.cdUp(); + if(!dir.exists("lib") && !dir.exists("lib64")) + qWarning() << QObject::tr("The application's location is not correct: You have to put your 'bin/' folder next to 'lib/' folder."); + } return dir; }