From 1b2590708ea89eefde202c6f2732751fcf9f0f17 Mon Sep 17 00:00:00 2001
From: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
Date: Mon, 10 Aug 2020 10:22:07 -0400
Subject: [PATCH] qmake: fix for qt version and lrc path

Also configures an install prefix.

Gitlab: #581
Change-Id: Ia7496d0c8e27fa8174a797a3ab62384c13dce774
---
 jami-qt.pro    | 26 ++++++++++++++------------
 make-client.py | 34 ++++++++++++++++++++++++----------
 2 files changed, 38 insertions(+), 22 deletions(-)

diff --git a/jami-qt.pro b/jami-qt.pro
index 13a175624..2d6f5e532 100644
--- a/jami-qt.pro
+++ b/jami-qt.pro
@@ -81,22 +81,18 @@ unix {
     TARGET = jami-qt
     TEMPLATE = app
 
-    QT += quick quickwidgets widgets xml multimedia multimediawidgets network webenginewidgets svg quickcontrols2 webengine webenginecore sql dbus
+    QT += quick quickwidgets widgets xml multimedia multimediawidgets network \
+          webenginewidgets svg quickcontrols2 webengine webenginecore sql dbus
 
-    #check Qt version
-    QT_VERSION = $$[QT_VERSION]
-    QT_VERSION = $$split(QT_VERSION, ".")
-    QT_VER_MAJ = $$member(QT_VERSION, 0)
-    QT_VER_MIN = $$member(QT_VERSION, 1)
-
-    lessThan(QT_VER_MIN, 12) {
-        QMAKE_CXXFLAGS += -std=c++17
-    }
-    greaterThan(QT_VER_MIN, 12) | equals(QT_VER_MIN, 12) {
+    # Maj/min versions can be checked(if needed) using:
+    # equals(QT_MAJOR_VERSION, 5):lessThan(QT_MINOR_VERSION, 12) {}
+    versionAtLeast(QT_VERSION, 5.12.0) {
         CONFIG += c++17
+    } else {
+        QMAKE_CXXFLAGS += -std=c++17
     }
 
-    isEmpty(LRC) { LRC=../../install/lrc/ }
+    isEmpty(LRC) { LRC=$$PWD/../install/lrc/ }
 
     INCLUDEPATH += $${LRC}/include/libringclient
     INCLUDEPATH += $${LRC}/include
@@ -104,6 +100,10 @@ unix {
 
     LIBS += -L$${LRC}/lib -lringclient
     LIBS += -lqrencode
+
+    isEmpty(PREFIX) { PREFIX = /tmp/$${TARGET}/bin }
+    target.path = $$PREFIX/bin
+    INSTALLS += target
 }
 
 # Input
@@ -147,6 +147,7 @@ HEADERS += ./src/smartlistmodel.h \
         ./src/videoformatfpsmodel.h \
         ./src/videoformatresolutionmodel.h \
         ./src/audiomanagerlistmodel.h
+
 SOURCES += ./src/bannedlistmodel.cpp \
         ./src/accountlistmodel.cpp \
         ./src/runguard.cpp \
@@ -182,5 +183,6 @@ SOURCES += ./src/bannedlistmodel.cpp \
         ./src/videoformatfpsmodel.cpp \
         ./src/videoformatresolutionmodel.cpp \
         ./src/audiomanagerlistmodel.cpp
+
 RESOURCES += ./ressources.qrc \
              ./qml.qrc
diff --git a/make-client.py b/make-client.py
index a496e2eed..ad0e0440c 100644
--- a/make-client.py
+++ b/make-client.py
@@ -11,7 +11,7 @@ import re
 
 # vs help
 win_sdk_default = '10.0.16299.0'
-win_toolset_default = 'v141'
+win_toolset_default = 'v142'
 
 vs_where_path = os.path.join(
     os.environ['ProgramFiles(x86)'], 'Microsoft Visual Studio', 'Installer', 'vswhere.exe'
@@ -19,16 +19,18 @@ vs_where_path = os.path.join(
 
 host_is_64bit = (False, True)[platform.machine().endswith('64')]
 
+
 def execute_cmd(cmd, with_shell=False, env_vars={}):
     if(bool(env_vars)):
         p = subprocess.Popen(cmd, shell=with_shell,
-                            stdout=sys.stdout,
-                            env=env_vars)
+                             stdout=sys.stdout,
+                             env=env_vars)
     else:
         p = subprocess.Popen(cmd, shell=with_shell)
     _, _ = p.communicate()
     return p.returncode
 
+
 def getLatestVSVersion():
     args = [
         '-latest',
@@ -52,7 +54,8 @@ def findVSLatestDir():
         '-property installationPath'
     ]
     cmd = [vs_where_path] + args
-    output = subprocess.check_output(' '.join(cmd)).decode('utf-8', errors='ignore')
+    output = subprocess.check_output(
+        ' '.join(cmd)).decode('utf-8', errors='ignore')
     if output:
         return output.splitlines()[0]
     else:
@@ -76,6 +79,7 @@ def getVSEnv(arch='x64', platform='', version=''):
     out = stdout.decode('utf-8', errors='ignore').split("\r\n")[5:-1]
     return dict(s.split('=', 1) for s in out)
 
+
 def getVSEnvCmd(arch='x64', platform='', version=''):
     vcEnvInit = [findVSLatestDir() + r'\VC\Auxiliary\Build\"vcvarsall.bat']
     if platform != '':
@@ -87,6 +91,7 @@ def getVSEnvCmd(arch='x64', platform='', version=''):
     vcEnvInit = 'call \"' + ' '.join(vcEnvInit)
     return vcEnvInit
 
+
 def build_project(msbuild, msbuild_args, proj, env_vars):
     args = []
     args.extend(msbuild_args)
@@ -97,6 +102,7 @@ def build_project(msbuild, msbuild_args, proj, env_vars):
         print("Build failed when building ", proj)
         sys.exit(1)
 
+
 def replace_vs_prop(filename, prop, val):
     p = re.compile(r'(?s)<' + prop + r'\s?.*?>(.*?)<\/' + prop + r'>')
     val = r'<' + prop + r'>' + val + r'</' + prop + r'>'
@@ -104,6 +110,7 @@ def replace_vs_prop(filename, prop, val):
         for line in file:
             print(re.sub(p, val, line), end='')
 
+
 def deps(arch, toolset, qtver):
     print('Deps Qt Client Release|' + arch)
 
@@ -117,11 +124,13 @@ def deps(arch, toolset, qtver):
         print("Git clone failed when cloning from https://github.com/BlueDragon747/qrencode-win32.git")
         sys.exit(1)
     if(execute_cmd("cd qrencode-win32 && git checkout d6495a2aa74d058d54ae0f1b9e9e545698de66ce && " + apply_cmd + ' ..\\qrencode-win32.patch', True)):
-        print("Qrencode-win32 set up error")
+        print("qrencode-win32 set up error")
         sys.exit(1)
 
     print('Building qrcodelib')
-    build(arch, '', '', 'Release-Lib', '\\qrencode-win32\\qrencode-win32\\vc8\\qrcodelib\\qrcodelib.vcxproj', qtver, False)
+    build(arch, '', '', 'Release-Lib',
+          '\\qrencode-win32\\qrencode-win32\\vc8\\qrcodelib\\qrcodelib.vcxproj', qtver, False)
+
 
 def build(arch, toolset, sdk_version, config_str, project_path_under_current_path, qtver, force_option=True):
     configuration_type = 'StaticLibrary'
@@ -129,7 +138,7 @@ def build(arch, toolset, sdk_version, config_str, project_path_under_current_pat
     qtFolderDir = "msvc2017_64"
     qtverSplit = qtver.split('.')
 
-    if((int(qtverSplit[0]) >= 6) or((int(qtverSplit[0]) == 5) and (int(qtverSplit[1]) >= 15))):
+    if((int(qtverSplit[0]) >= 6) or ((int(qtverSplit[0]) == 5) and (int(qtverSplit[1]) >= 15))):
         qtFolderDir = "msvc2019_64"
 
     if (config_str == 'Release'):
@@ -190,6 +199,7 @@ def build(arch, toolset, sdk_version, config_str, project_path_under_current_pat
 
     build_project(msbuild, msbuild_args, qt_client_proj_path, vs_env_vars)
 
+
 def parse_args():
     ap = argparse.ArgumentParser(description="Windows Jami-lrc build tool")
     ap.add_argument(
@@ -237,13 +247,17 @@ def main():
         deps(parsed_args.arch, parsed_args.toolset, parsed_args.qtver)
 
     if parsed_args.build:
-        build(parsed_args.arch, parsed_args.toolset, parsed_args.sdk, 'Release', '\\jami-qt.vcxproj', parsed_args.qtver)
+        build(parsed_args.arch, parsed_args.toolset, parsed_args.sdk,
+              'Release', '\\jami-qt.vcxproj', parsed_args.qtver)
 
     if parsed_args.beta:
-        build(parsed_args.arch, parsed_args.toolset, parsed_args.sdk, 'Beta', '\\jami-qt.vcxproj', parsed_args.qtver)
+        build(parsed_args.arch, parsed_args.toolset, parsed_args.sdk,
+              'Beta', '\\jami-qt.vcxproj', parsed_args.qtver)
 
     if parsed_args.releasecompile:
-        build(parsed_args.arch, parsed_args.toolset, parsed_args.sdk, 'ReleaseCompile', '\\jami-qt.vcxproj', parsed_args.qtver)
+        build(parsed_args.arch, parsed_args.toolset, parsed_args.sdk,
+              'ReleaseCompile', '\\jami-qt.vcxproj', parsed_args.qtver)
+
 
 if __name__ == '__main__':
     main()
-- 
GitLab