1
0
Fork 0
mirror of https://git.jami.net/savoirfairelinux/jami-client-qt.git synced 2025-07-22 16:35:26 +02:00

build: use cmake entirely for windows

GitLab: #352

Change-Id: Ib373811c9d47164954a19633fd0da389eff5aac6
This commit is contained in:
Ming Rui Zhang 2021-04-09 15:00:12 -04:00
parent b1d7d54002
commit c19fb112bb
13 changed files with 809 additions and 953 deletions

View file

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.7)
cmake_minimum_required(VERSION 3.15)
project(jami-qt)
@ -13,22 +13,12 @@ set(CMAKE_AUTOUIC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(SRC_DIR ${PROJECT_SOURCE_DIR}/src)
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}
${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS})
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS})
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH true)
set(QML_RESOURCES ${PROJECT_SOURCE_DIR}/resources.qrc)
set(QML_RESOURCES_QML ${PROJECT_SOURCE_DIR}/qml.qrc)
set(QML_LIBS
Qt5::Quick
Qt5::QuickWidgets
Qt5::Network
Qt5::Svg
Qt5::QuickControls2
Qt5::WebEngine
Qt5::DBus
Qt5::Core)
# library compatibility (boost, libnotify, etc.)
add_definitions(-DQT_NO_KEYWORDS)
@ -69,8 +59,6 @@ set(COMMON_SOURCES
${SRC_DIR}/audiomanagerlistmodel.cpp
${SRC_DIR}/qmlregister.cpp
${SRC_DIR}/utilsadapter.cpp
${SRC_DIR}/dbuserrorhandler.cpp
${SRC_DIR}/xrectsel.c
${SRC_DIR}/moderatorlistmodel.cpp
${SRC_DIR}/screensaver.cpp
${SRC_DIR}/systemtray.cpp
@ -122,29 +110,156 @@ set(COMMON_HEADERS
${SRC_DIR}/quickimageproviderbase.h
${SRC_DIR}/qtutils.h
${SRC_DIR}/utilsadapter.h
${SRC_DIR}/dbuserrorhandler.h
${SRC_DIR}/xrectsel.h
${SRC_DIR}/moderatorlistmodel.h
${SRC_DIR}/screensaver.h
${SRC_DIR}/systemtray.h
${SRC_DIR}/appsettingsmanager.h
${SRC_DIR}/lrcinstance.h)
find_package(PkgConfig REQUIRED)
set(QML_LIBS
Qt5::Quick
Qt5::QuickWidgets
Qt5::Network
Qt5::Svg
Qt5::Sql
Qt5::Concurrent
Qt5::QuickControls2
Qt5::WebEngine
Qt5::Core)
pkg_check_modules(LIBNM libnm)
if(LIBNM_FOUND)
add_definitions(-DUSE_LIBNM)
endif()
pkg_check_modules(LIBNOTIFY libnotify>=0.7.6)
if(LIBNOTIFY_FOUND)
add_definitions(-DUSE_LIBNOTIFY)
add_definitions(${LIBNOTIFY_CFLAGS})
pkg_check_modules(LIBGDKPIXBUF gdk-pixbuf-2.0>=2.40.0)
add_definitions(${LIBGDKPIXBUF_CFLAGS})
set(QML_LIBS_LIST
Core
Concurrent
Quick
QuickWidgets
Network
Svg
Sql
QuickControls2
WebEngine)
if(MSVC)
# preprocessor defines
add_definitions(-DUNICODE -DQT_NO_DEBUG -DNDEBUG)
# dependencies
set(LRC ${PROJECT_SOURCE_DIR}/../lrc)
set(DRING ${PROJECT_SOURCE_DIR}/../daemon)
set(QRENCODE ${PROJECT_SOURCE_DIR}/qrencode-win32/qrencode-win32)
# compiler options
add_compile_options(/wd4068 /wd4099 /wd4189 /wd4267 /wd4577 /wd4467 /wd4715 /wd4828)
add_compile_options(/MP /GS /W3 /Gy /Zc:wchar_t /Zi /Gm- /O2 /Zc:inline /fp:precise /errorReport:prompt)
add_compile_options(/Gd /Oi /MD /std:c++17 /FC /EHsc /nologo /sdl)
# linker options
add_link_options("/IGNORE:4006,4049,4078,4098" "/FORCE:MULTIPLE" "/INCREMENTAL:NO" "/DEBUG" "/LTCG" "/NODEFAULTLIB:LIBCMT")
# client deps
set(QRENCODE_LIB ${QRENCODE}/vc8/qrcodelib/x64/Release-Lib/qrcodelib.lib)
# lrc
set(LRC_SRC_PATH ${LRC}/src)
set(RINGCLIENT_STATIC_LIB ${LRC}/build/release/ringclient_static.lib)
set(QTWRAPPER_LIB ${LRC}/build/src/qtwrapper/Release/qtwrapper.lib)
# daemon
set(DRING_SRC_PATH ${DRING}/contrib/msvc/include)
set(DRING_LIB ${DRING}/build/x64/ReleaseLib_win32/bin/dring.lib)
set(GNUTLS_LIB ${DRING}/contrib/msvc/lib/x64/libgnutls.lib)
# ReleaseCompile config
if(ReleaseCompile)
message("ReleaseCompile config enabled")
add_definitions(-DCOMPILE_ONLY)
else()
# Beta config
if(BETA)
message("Beta config enabled")
add_definitions(-DBETA)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${PROJECT_SOURCE_DIR}/x64/Beta)
else()
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${PROJECT_SOURCE_DIR}/x64/Release)
endif()
endif()
include_directories(${DRING_SRC_PATH}
${LRC_SRC_PATH}
${QRENCODE})
else()
list(APPEND COMMON_SOURCES
${SRC_DIR}/xrectsel.c
${SRC_DIR}/dbuserrorhandler.cpp)
list(APPEND COMMON_HEADERS
${SRC_DIR}/dbuserrorhandler.h
${SRC_DIR}/xrectsel.h)
list(APPEND QML_LIBS Qt5::DBus)
list(APPEND QML_LIBS_LIST DBus)
find_package(PkgConfig REQUIRED)
pkg_check_modules(LIBNM libnm)
if(LIBNM_FOUND)
add_definitions(-DUSE_LIBNM)
endif()
pkg_check_modules(LIBNOTIFY libnotify>=0.7.6)
if(LIBNOTIFY_FOUND)
add_definitions(-DUSE_LIBNOTIFY)
add_definitions(${LIBNOTIFY_CFLAGS})
pkg_check_modules(LIBGDKPIXBUF gdk-pixbuf-2.0>=2.40.0)
add_definitions(${LIBGDKPIXBUF_CFLAGS})
endif()
if(NOT DEFINED LRC)
if(EXISTS ${PROJECT_SOURCE_DIR}/../install/lrc)
set(LRC ${PROJECT_SOURCE_DIR}/../install/lrc)
endif()
endif()
# If LRC is not globally installed, it's path should be specified
# by setting variable LRC. If library is not inside LRC + suffixes
# lib, build or build-local, it's path should be set with LRCLIB.
if(DEFINED LRC)
if(EXISTS ${LRC}/include/libringclient)
set(LRC_SRC_PATH ${LRC}/include/libringclient)
else()
set(LRC_SRC_PATH ${LRC}/src)
endif()
if(NOT DEFINED LRCLIB)
set(LRCLIB ${LRC})
endif()
find_library(ringclient ringclient
PATHS ${LRCLIB}
PATH_SUFFIXES lib build build-local NO_DEFAULT_PATH)
message("Will expect lrc library in ${LRCLIB} (including \
subdirs /lib, /build and /build-local)")
set(LRC_LIB_NAME ${ringclient})
else()
find_package(LibRingClient REQUIRED)
if (LibRingClient_FOUND)
set(LRC_SRC_PATH ${LIB_RING_CLIENT_INCLUDE_DIR})
set(LRC_LIB_NAME ${LIB_RING_CLIENT_LIBRARY})
else()
message("lrc not found!")
endif()
endif()
message("Will expect lrc headers in ${LRC_SRC_PATH}")
include_directories(${LRC_SRC_PATH}
${LIBNM_INCLUDE_DIRS}
${LIBNOTIFY_INCLUDE_DIRS}
${LIBGDKPIXBUF_INCLUDE_DIRS})
set(JAMI_DATA_PREFIX "${CMAKE_INSTALL_PREFIX}/share")
find_library(ringclient ringclient ${LRCLIBDIR} NO_DEFAULT_PATH)
find_library(qrencode qrencode)
find_library(X11 X11)
endif()
# Qt find package
if(QT5_VER AND QT5_PATH)
string(REPLACE "." ";" VERSION_LIST ${QT5_VER})
list(GET VERSION_LIST 0 QT5_VER_MAJOR)
@ -153,200 +268,214 @@ if(QT5_VER AND QT5_PATH)
if((${QT5_VER_MAJOR} GREATER_EQUAL 5) AND (${QT5_VER_MINOR} GREATER_EQUAL 14))
message(STATUS "Using custom Qt version")
find_package(Qt5 ${QT5_VER} REQUIRED COMPONENTS
Core
Quick
QuickWidgets
Network
Svg
QuickControls2
WebEngine
DBus
PATHS ${QT5_PATH} NO_DEFAULT_PATH)
find_package(Qt5LinguistTools ${QT5_VER}
PATHS ${QT5_PATH} NO_DEFAULT_PATH)
find_package(Qt5 ${QT5_VER} REQUIRED COMPONENTS ${QML_LIBS_LIST}
PATHS ${QT5_PATH} NO_DEFAULT_PATH)
find_package(Qt5LinguistTools ${QT5_VER} PATHS ${QT5_PATH} NO_DEFAULT_PATH)
endif()
else()
find_package(Qt5 REQUIRED COMPONENTS
Core
Quick
QuickWidgets
Network
Svg
QuickControls2
WebEngine
DBus)
find_package(Qt5 REQUIRED COMPONENTS ${QML_LIBS_LIST})
find_package(Qt5LinguistTools)
endif()
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH true)
if(NOT DEFINED LRC)
if(EXISTS ${PROJECT_SOURCE_DIR}/../install/lrc)
set(LRC ${PROJECT_SOURCE_DIR}/../install/lrc)
endif()
endif()
# If LRC is not globally installed, it's path should be specified
# by setting variable LRC. If library is not inside LRC + suffixes
# lib, build or build-local, it's path should be set with LRCLIB.
if(DEFINED LRC)
if(EXISTS ${LRC}/include/libringclient)
set(LRC_SRC_PATH ${LRC}/include/libringclient)
else()
set(LRC_SRC_PATH ${LRC}/src)
endif()
if(NOT DEFINED LRCLIB)
set(LRCLIB ${LRC})
endif()
find_library(ringclient ringclient
PATHS ${LRCLIB}
PATH_SUFFIXES lib build build-local NO_DEFAULT_PATH)
message("Will expect lrc library in ${LRCLIB} (including \
subdirs /lib, /build and /build-local)")
set(LRC_LIB_NAME ${ringclient})
else()
find_package(LibRingClient REQUIRED)
if (LibRingClient_FOUND)
set(LRC_SRC_PATH ${LIB_RING_CLIENT_INCLUDE_DIR})
set(LRC_LIB_NAME ${LIB_RING_CLIENT_LIBRARY})
else()
message("lrc not found!")
endif()
endif()
message("Will expect lrc headers in ${LRC_SRC_PATH}")
# common include
include_directories(${PROJECT_SOURCE_DIR}
${SRC_DIR}
${LRC_SRC_PATH}
${LIBNM_INCLUDE_DIRS}
${LIBNOTIFY_INCLUDE_DIRS}
${LIBGDKPIXBUF_INCLUDE_DIRS})
${SRC_DIR})
# common executable sources
add_executable(${PROJECT_NAME}
${SRC_DIR}/main.cpp
${COMMON_HEADERS}
${COMMON_SOURCES}
${QML_RESOURCES}
${QML_RESOURCES_QML}
${LRC_SRC_PATH}/webresource.qrc)
${SRC_DIR}/main.cpp
${COMMON_HEADERS}
${COMMON_SOURCES}
${QML_RESOURCES}
${QML_RESOURCES_QML}
${LRC_SRC_PATH}/webresource.qrc)
set(JAMI_DATA_PREFIX "${CMAKE_INSTALL_PREFIX}/share")
if(MSVC)
target_link_libraries(${PROJECT_NAME}
${QML_LIBS}
${QRENCODE_LIB}
Shell32.lib
Ole32.lib
Advapi32.lib
Shlwapi.lib
User32.lib
Gdi32.lib
Crypt32.lib
Strmiids.lib)
find_library(ringclient ringclient ${LRCLIBDIR} NO_DEFAULT_PATH)
find_library(qrencode qrencode)
find_library(X11 X11)
if(NOT DEFINED ReleaseCompile)
# executable icon
target_sources(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/ico.rc)
target_link_libraries(jami-qt
${QML_LIBS}
${LRC_LIB_NAME}
${qrencode}
${X11}
${LIBNM_LIBRARIES}
${LIBNOTIFY_LIBRARIES}
${LIBGDKPIXBUF_LIBRARIES})
target_link_libraries(${PROJECT_NAME}
${RINGCLIENT_STATIC_LIB}
${QTWRAPPER_LIB}
${DRING_LIB}
${GNUTLS_LIB})
if(ENABLE_TESTS)
message("Add Jami tests")
add_subdirectory(tests)
endif()
# translations
if(Qt5LinguistTools_FOUND)
message("Releasing and copying translation files")
file(MAKE_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}/share/ring/translations/")
file(MAKE_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}/share/libringclient/translations/")
file(GLOB TS_CLIENT_FILES ${PROJECT_SOURCE_DIR}/translations/*.ts)
file(GLOB TS_LRC_FILES ${LRC}/translations/*.ts)
set_source_files_properties(${TS_CLIENT_FILES} PROPERTIES OUTPUT_LOCATION
"${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}/share/ring/translations")
set_source_files_properties(${TS_LRC_FILES} PROPERTIES OUTPUT_LOCATION
"${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}/share/libringclient/translations")
qt5_add_translation(QM_CLIENT_FILES ${TS_CLIENT_FILES})
qt5_add_translation(QM_LRC_FILES ${TS_LRC_FILES})
target_sources(${PROJECT_NAME} PRIVATE ${QM_CLIENT_FILES})
target_sources(${PROJECT_NAME} PRIVATE ${QM_LRC_FILES})
endif()
# Installation rules
install(TARGETS jami-qt
RUNTIME DESTINATION bin)
# POST_BUILD steps
# install .desktop in XDG desktop dir so that it is recognized by the system
install(FILES ${PROJECT_SOURCE_DIR}/jami-qt.desktop
DESTINATION ${JAMI_DATA_PREFIX}/applications)
# check time stamp
set(TIME_STAMP_FILE ".deploy.stamp")
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
WORKING_DIRECTORY "$<TARGET_FILE_DIR:${PROJECT_NAME}>"
COMMAND ${CMAKE_COMMAND} -DTIME_STAMP_FILE=${TIME_STAMP_FILE}
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/time_stamp_check.cmake)
# install .desktop in the jami-qt data dir, so that it can be copied to the
# autostart dir by the client
install(FILES ${PROJECT_SOURCE_DIR}/jami-qt.desktop
DESTINATION
"${JAMI_DATA_PREFIX}/${PROJECT_NAME}"
PERMISSIONS
WORLD_READ
OWNER_WRITE
OWNER_READ
GROUP_READ
)
# copy runtime files and run windeployqt on target and deploy Qt libs
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
WORKING_DIRECTORY "$<TARGET_FILE_DIR:${PROJECT_NAME}>"
COMMAND ${CMAKE_COMMAND} -DTIME_STAMP_FILE=${TIME_STAMP_FILE}
-DCOPY_TO_PATH=$<TARGET_FILE_DIR:${PROJECT_NAME}>
-DDRING_PATH=${DRING}
-DPROJECT_ROOT_DIR=${PROJECT_SOURCE_DIR}
-DWIN_DEPLOY_QT_PATH=${CMAKE_PREFIX_PATH}/bin
-DQML_SRC_DIR=${SRC_DIR}
-DEXE_NAME=$<TARGET_FILE:${PROJECT_NAME}>
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/windows_deploy.cmake)
# adjust JAMI_DATA_PREFIX for snap package
# (this must come after all 'install' commands that refer to
# JAMI_DATA_PREFIX; the following value is not meant to be used for
# any install destinations)
if(DEFINED ENV{SNAPCRAFT_PROJECT_NAME})
set(JAMI_DATA_PREFIX "/snap/$ENV{SNAPCRAFT_PROJECT_NAME}/current/usr/share")
endif()
# create time stamp
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
WORKING_DIRECTORY "$<TARGET_FILE_DIR:${PROJECT_NAME}>"
COMMAND ${CMAKE_COMMAND} -DTIME_STAMP_FILE=${TIME_STAMP_FILE}
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/time_stamp_create.cmake)
endif()
# (this must come after the above adjustment to JAMI_DATA_PREFIX)
target_compile_definitions(jami-qt PRIVATE JAMI_INSTALL_PREFIX="${JAMI_DATA_PREFIX}")
# executable name
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "Jami")
else()
target_link_libraries(${PROJECT_NAME}
${QML_LIBS}
${LRC_LIB_NAME}
${qrencode}
${X11}
${LIBNM_LIBRARIES}
${LIBNOTIFY_LIBRARIES}
${LIBGDKPIXBUF_LIBRARIES})
# logos
install(FILES images/jami.svg
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/scalable/apps)
if(ENABLE_TESTS)
message("Add Jami tests")
add_subdirectory(tests)
endif()
install(FILES images/jami-48px.png
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/48x48/apps
RENAME jami.png)
# Installation rules
install(TARGETS jami-qt
RUNTIME DESTINATION bin)
install(FILES images/jami-32px.xpm
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/pixmaps
RENAME jami.xpm)
# install .desktop in XDG desktop dir so that it is recognized by the system
install(FILES ${PROJECT_SOURCE_DIR}/jami-qt.desktop
DESTINATION ${JAMI_DATA_PREFIX}/applications)
install(FILES jami-qt.appdata.xml
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/metainfo)
# install .desktop in the jami-qt data dir, so that it can be copied to the
# autostart dir by the client
install(FILES ${PROJECT_SOURCE_DIR}/jami-qt.desktop
DESTINATION
"${JAMI_DATA_PREFIX}/${PROJECT_NAME}"
PERMISSIONS
WORLD_READ
OWNER_WRITE
OWNER_READ
GROUP_READ
)
# install jami launcher that selects between clients
install(
FILES
"${PROJECT_SOURCE_DIR}/src/jami"
DESTINATION
${CMAKE_INSTALL_PREFIX}/bin
PERMISSIONS
WORLD_READ
OWNER_WRITE
OWNER_READ
GROUP_READ
OWNER_EXECUTE
GROUP_EXECUTE
WORLD_EXECUTE)
# adjust JAMI_DATA_PREFIX for snap package
# (this must come after all 'install' commands that refer to
# JAMI_DATA_PREFIX; the following value is not meant to be used for
# any install destinations)
if(DEFINED ENV{SNAPCRAFT_PROJECT_NAME})
set(JAMI_DATA_PREFIX "/snap/$ENV{SNAPCRAFT_PROJECT_NAME}/current/usr/share")
endif()
# add a target to generate API documentation with Doxygen and graphviz-dot
find_package(Doxygen)
find_program(dot "dot")
if(Doxygen_FOUND AND dot)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doc/Doxyfile.in ${CMAKE_CURRENT_SOURCE_DIR}/doc/Doxyfile @ONLY)
add_custom_target(doc
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/doc/Doxyfile
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/doc
COMMENT "Generating API documentation with Doxygen" VERBATIM)
# (this must come after the above adjustment to JAMI_DATA_PREFIX)
target_compile_definitions(jami-qt PRIVATE JAMI_INSTALL_PREFIX="${JAMI_DATA_PREFIX}")
# create doc/README.md symlink to README since Doxygen doesn't understand file with no extension
add_custom_command(
TARGET doc
PRE_BUILD
COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/README ${CMAKE_CURRENT_SOURCE_DIR}/doc/README.md)
endif()
# logos
install(FILES images/jami.svg
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/scalable/apps)
install(FILES images/jami-48px.png
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/48x48/apps
RENAME jami.png)
# translations
if(Qt5LinguistTools_FOUND)
message("Releasing and copying translation files")
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/share/ring/translations/")
file(GLOB TS_FILES ${PROJECT_SOURCE_DIR}/translations/*.ts)
set_source_files_properties(${TS_FILES} PROPERTIES OUTPUT_LOCATION "share/ring/translations")
qt5_add_translation(QM_FILES ${TS_FILES})
add_custom_target(translations ALL DEPENDS ${QM_FILES})
install(DIRECTORY "${CMAKE_BINARY_DIR}/share/ring/translations/"
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/ring/translations)
endif()
install(FILES images/jami-32px.xpm
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/pixmaps
RENAME jami.xpm)
# uninstall
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
IMMEDIATE @ONLY)
install(FILES jami-qt.appdata.xml
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/metainfo)
add_custom_target(uninstall
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
# install jami launcher that selects between clients
install(
FILES
"${PROJECT_SOURCE_DIR}/src/jami"
DESTINATION
${CMAKE_INSTALL_PREFIX}/bin
PERMISSIONS
WORLD_READ
OWNER_WRITE
OWNER_READ
GROUP_READ
OWNER_EXECUTE
GROUP_EXECUTE
WORLD_EXECUTE)
# add a target to generate API documentation with Doxygen and graphviz-dot
find_package(Doxygen)
find_program(dot "dot")
if(Doxygen_FOUND AND dot)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doc/Doxyfile.in ${CMAKE_CURRENT_SOURCE_DIR}/doc/Doxyfile @ONLY)
add_custom_target(doc
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/doc/Doxyfile
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/doc
COMMENT "Generating API documentation with Doxygen" VERBATIM)
# create doc/README.md symlink to README since Doxygen doesn't understand file with no extension
add_custom_command(
TARGET doc
PRE_BUILD
COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/README ${CMAKE_CURRENT_SOURCE_DIR}/doc/README.md)
endif()
# translations
if(Qt5LinguistTools_FOUND)
message("Releasing and copying translation files")
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/share/ring/translations/")
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/share/libringclient/translations/")
file(GLOB TS_CLIENT_FILES ${PROJECT_SOURCE_DIR}/translations/*.ts)
file(GLOB QM_LRC_FILES ${LRC}/share/libringclient/translations/*.qm)
set_source_files_properties(${TS_CLIENT_FILES} PROPERTIES OUTPUT_LOCATION "share/ring/translations")
qt5_add_translation(QM_CLIENT_FILES ${TS_CLIENT_FILES})
add_custom_target(translations_client ALL DEPENDS ${QM_CLIENT_FILES})
install(DIRECTORY "${CMAKE_BINARY_DIR}/share/ring/translations/"
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/ring/translations)
add_custom_target(translations_lrc ALL DEPENDS ${QM_LRC_FILES})
install(DIRECTORY "${LRC}/share/libringclient/translations/"
DESTINATION ${CMAKE_INSTALL_PREFIX}/share/libringclient/translations)
endif()
# uninstall
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
IMMEDIATE @ONLY)
add_custom_target(uninstall
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
endif()

View file

@ -0,0 +1,13 @@
execute_process(COMMAND git rev-parse HEAD
OUTPUT_VARIABLE VERSION_PATCH)
# remove leading and trailing spaces
string(STRIP "${VERSION_PATCH}" VERSION_PATCH)
message("Checking time stamp ...")
if(EXISTS ${TIME_STAMP_FILE})
file (STRINGS ${TIME_STAMP_FILE} VERSION_IN_FILE)
if(NOT "${VERSION_IN_FILE}" STREQUAL "${VERSION_PATCH}")
file (REMOVE "${TIME_STAMP_FILE}")
endif()
endif()

View file

@ -0,0 +1,8 @@
execute_process(COMMAND git rev-parse HEAD
OUTPUT_VARIABLE VERSION_PATCH)
if (EXISTS ${TIME_STAMP_FILE})
message("Keep the old time stamp")
else()
message("Creating time stamp ...")
file(WRITE ${TIME_STAMP_FILE} "${VERSION_PATCH}")
endif()

View file

@ -0,0 +1,22 @@
if (EXISTS ${TIME_STAMP_FILE})
message("No need to deploy")
else()
message("Deploying ...")
file(COPY "${DRING_PATH}/contrib/build/ffmpeg/Build/win32/x64/bin/avcodec-58.dll"
"${DRING_PATH}/contrib/build/ffmpeg/Build/win32/x64/bin/avutil-56.dll"
"${DRING_PATH}/contrib/build/ffmpeg/Build/win32/x64/bin/avformat-58.dll"
"${DRING_PATH}/contrib/build/ffmpeg/Build/win32/x64/bin/avdevice-58.dll"
"${DRING_PATH}/contrib/build/ffmpeg/Build/win32/x64/bin/swresample-3.dll"
"${DRING_PATH}/contrib/build/ffmpeg/Build/win32/x64/bin/swscale-5.dll"
"${DRING_PATH}/contrib/build/ffmpeg/Build/win32/x64/bin/avfilter-7.dll"
"${DRING_PATH}/contrib/build/openssl/libcrypto-1_1-x64.dll"
"${DRING_PATH}/contrib/build/openssl/libssl-1_1-x64.dll"
"${PROJECT_ROOT_DIR}/qt.conf"
"${PROJECT_ROOT_DIR}/images/jami.ico"
"${PROJECT_ROOT_DIR}/License.rtf"
DESTINATION ${COPY_TO_PATH})
execute_process(COMMAND "${WIN_DEPLOY_QT_PATH}/windeployqt.exe"
--verbose 1
--qmldir ${QML_SRC_DIR}
--release ${EXE_NAME})
endif()

View file

@ -1,347 +0,0 @@
import tempfile
import re
import sys
import os
import subprocess
import platform
import argparse
import shutil
import fileinput
if platform.system() == "Windows":
from colorama import init
# init ANSI escape character sequences for windows
init()
class bcolors:
HEADER = '\033[95m'
OKBLUE = '\033[94m'
OKCYAN = '\033[96m'
OKGREEN = '\033[92m'
WARNING = '\033[93m'
FAIL = '\033[91m'
ENDC = '\033[0m'
BOLD = '\033[1m'
UNDERLINE = '\033[4m'
def execute_cmd(cmd, use_subprocess_pipe=False):
p = subprocess.Popen(cmd,
shell=True,
stdout=subprocess.PIPE if use_subprocess_pipe else sys.stdout)
output, _ = p.communicate()
if use_subprocess_pipe:
if output:
return output
return -1
else:
if p.returncode != 0:
sys.exit()
class globalVar:
# global var
system_name = platform.system()
client_dir = os.path.dirname(os.path.realpath(__file__))
mode = "Release"
qt_version = ""
qt_path = ""
daemon_path = client_dir + os.sep + '..' + os.sep + 'daemon'
lrc_path = client_dir + os.sep + '..' + os.sep + 'lrc'
output_path = ""
stamp = execute_cmd('git rev-parse HEAD', True)[0:8]
if type(stamp) is bytes:
stamp = stamp.decode("utf-8")
stampFile = client_dir + os.sep + ".deploy.stamp"
def check_stamp():
if os.path.exists(globalVar.stampFile):
with open(globalVar.stampFile) as f:
contents = f.read()
if contents.strip() == globalVar.stamp:
print(bcolors.OKGREEN + "Deployment stamp up-to-date" + bcolors.ENDC)
sys.exit()
def write_stamp():
with open(".deploy.stamp", "w") as file:
file.write(globalVar.stamp)
def setup_parameters(parsed_args):
if globalVar.system_name == "Windows":
if parsed_args.mode:
if parsed_args.mode == "Beta":
globalVar.mode = "Beta"
if parsed_args.qtVersion:
globalVar.qt_version = parsed_args.qtVersion
qt_minor_ver = int(globalVar.qt_version.split('.')[1])
if qt_minor_ver < 14:
print(bcolors.WARNING + "Qt version not supported" + bcolors.ENDC)
sys.exit()
globalVar.qt_path = "C:\\Qt\\" + globalVar.qt_version + \
("\\msvc2017_64" if qt_minor_ver < 15 else "\\msvc2019_64")
else:
globalVar.qt_path = "C:\\Qt\\5.15.0\\msvc2019_64"
else:
if parsed_args.qtPath:
globalVar.qt_path = parsed_args.qtPath
else:
globalVar.qt_version = execute_cmd('qmake -v', True)
if globalVar.qt_version == -1:
print(bcolors.WARNING + "No qmake found, trying qmake-qt5..." + bcolors.ENDC)
globalVar.qt_version = execute_cmd('qmake-qt5 -v', True)
if globalVar.qt_version == -1:
print(bcolors.FAIL + "No qmake found!" + bcolors.ENDC)
sys.exit()
if type(globalVar.qt_version) is bytes:
globalVar.qt_version = globalVar.qt_version.decode("utf-8")
globalVar.qt_version = globalVar.qt_version.split(
'Qt version')[1].split('in')[0].strip()
qt_minor_ver = int(globalVar.qt_version.split('.')[1])
if qt_minor_ver < 14:
print(bcolors.WARNING + "Qt version not supported" + bcolors.ENDC)
sys.exit()
if parsed_args.daemonPath:
globalVar.daemon_path = parsed_args.daemonPath
if parsed_args.lrcPath:
globalVar.lrc_path = parsed_args.lrcPath
if parsed_args.outputPath:
if not os.path.exists(parsed_args.outputPath):
os.makedirs(parsed_args.outputPath)
globalVar.output_path = parsed_args.outputPath
else:
if globalVar.system_name != "Windows":
globalVar.output_path = globalVar.client_dir + os.sep + 'build-local'
else:
globalVar.output_path = globalVar.client_dir + \
os.sep + "x64" + os.sep + globalVar.mode
def copy_deployment_files():
# dependency bin files and misc
files_to_copy = [
globalVar.daemon_path + "\\contrib\\build\\ffmpeg\\Build\\win32\\x64\\bin\\avcodec-58.dll",
globalVar.daemon_path + "\\contrib\\build\\ffmpeg\\Build\\win32\\x64\\bin\\avutil-56.dll",
globalVar.daemon_path +
"\\contrib\\build\\ffmpeg\\Build\\win32\\x64\\bin\\avformat-58.dll",
globalVar.daemon_path +
"\\contrib\\build\\ffmpeg\\Build\\win32\\x64\\bin\\avdevice-58.dll",
globalVar.daemon_path +
"\\contrib\\build\\ffmpeg\\Build\\win32\\x64\\bin\\swresample-3.dll",
globalVar.daemon_path + "\\contrib\\build\\ffmpeg\\Build\\win32\\x64\\bin\\swscale-5.dll",
globalVar.daemon_path + "\\contrib\\build\\ffmpeg\\Build\\win32\\x64\\bin\\avfilter-7.dll",
globalVar.daemon_path + "\\contrib\\build\\openssl\\libcrypto-1_1-x64.dll",
globalVar.daemon_path + "\\contrib\\build\\openssl\\libssl-1_1-x64.dll",
globalVar.client_dir + "\\qt.conf",
globalVar.client_dir + "\\images\\jami.ico",
globalVar.client_dir + "\\License.rtf"
]
for file in files_to_copy:
print(bcolors.OKBLUE + "Copying: " + file +
" -> " + globalVar.output_path + bcolors.ENDC)
if os.path.exists(file):
shutil.copy(file, globalVar.output_path)
else:
print(bcolors.FAIL + file + " does not exist" + bcolors.ENDC)
sys.exit()
# qt windeploy
win_deploy_qt = globalVar.qt_path + "\\bin\\windeployqt.exe --qmldir " + \
globalVar.client_dir + "\\src --release " + globalVar.output_path + "\\Jami.exe"
execute_cmd(win_deploy_qt)
def copy_ringtones():
# ringtones
copy_to_path = globalVar.output_path + os.sep + "ringtones"
if not os.path.exists(copy_to_path):
os.makedirs(copy_to_path)
ringtone_path = globalVar.client_dir + "\\..\\daemon\\ringtones"
print(bcolors.OKCYAN + "Copying ringtones..." + bcolors.ENDC)
for _, _, files in os.walk(ringtone_path):
for file in files:
print(bcolors.OKBLUE + "Copying ringtone: " +
file + " -> " + copy_to_path + bcolors.ENDC)
try:
shutil.copy(ringtone_path + os.sep + file, copy_to_path)
except:
print(bcolors.FAIL + "Unable to copy file." + bcolors.ENDC)
def compile_and_copy_web_resources():
# web resources
rcc = 'rcc'
if globalVar.qt_path:
rcc = globalVar.qt_path + os.sep + 'bin' + os.sep + \
'rcc' + ('.exe' if globalVar.system_name == "Windows" else '')
if execute_cmd(rcc + ' -v', True) == -1:
print(bcolors.WARNING + "No rcc found, trying rcc-qt5..." + bcolors.ENDC)
rcc = rcc.replace('rcc', 'rcc-qt5')
if execute_cmd(rcc + ' -v', True) == -1:
print(bcolors.FAIL + "No rcc found!" + bcolors.ENDC)
sys.exit()
lrc_web_resources_path = globalVar.lrc_path + os.sep + "src" + os.sep + 'webresource.qrc'
execute_cmd(rcc + ' -binary ' + lrc_web_resources_path +
' -o ' + globalVar.output_path + os.sep + 'webresource.rcc')
def release_and_copy_translations():
# translations binary
lrelease = 'lrelease'
if globalVar.qt_path:
lrelease = globalVar.qt_path + os.sep + 'bin' + os.sep + \
'lrelease' + ('.exe' if globalVar.system_name == "Windows" else '')
if execute_cmd(lrelease + ' -version', True) == -1:
print(bcolors.WARNING + "No lrelease found, trying lrelease-qt5..." + bcolors.ENDC)
lrelease = lrelease.replace('lrelease', 'lrelease-qt5')
if execute_cmd(lrelease + ' -version', True) == -1:
print(bcolors.FAIL + "No lrelease found!" + bcolors.ENDC)
sys.exit()
qt_version_check = execute_cmd(lrelease + ' -version', True)
if type(qt_version_check) is bytes:
qt_version_check = qt_version_check.decode("utf-8")
qt_version_check = qt_version_check.split('version')[1].strip()
qt_minor_ver = int(qt_version_check.split('.')[1])
if qt_minor_ver < 14:
print(bcolors.WARNING + "Qt version not supported" + bcolors.ENDC)
sys.exit()
# lrc translations
lrc_ts_path = globalVar.lrc_path + os.sep + 'translations'
copy_to_path = globalVar.output_path + os.sep + 'share' + \
os.sep + 'libringclient' + os.sep + 'translations'
if not os.path.exists(copy_to_path):
os.makedirs(copy_to_path)
print(bcolors.OKCYAN + "Release lrc translations..." + bcolors.ENDC)
for _, _, files in os.walk(lrc_ts_path):
for file in files:
if file.endswith(".ts"):
execute_cmd(lrelease + " " + lrc_ts_path + os.sep + file)
for _, _, files in os.walk(lrc_ts_path):
for file in files:
if file.endswith(".qm"):
print(bcolors.OKBLUE + "Copying translation file: " +
file + " -> " + copy_to_path + bcolors.ENDC)
shutil.copy(lrc_ts_path + os.sep + file, copy_to_path)
# client translations
client_ts_path = globalVar.client_dir + os.sep + 'translations'
copy_to_path = globalVar.output_path + os.sep + \
'share' + os.sep + 'ring' + os.sep + 'translations'
if not os.path.exists(copy_to_path):
os.makedirs(copy_to_path)
print(bcolors.OKCYAN + "Release client translations..." + bcolors.ENDC)
for _, _, files in os.walk(client_ts_path):
for file in files:
if file.endswith(".ts"):
execute_cmd(lrelease + " " +
client_ts_path + os.sep + file)
for _, _, files in os.walk(client_ts_path):
for file in files:
if file.endswith(".qm"):
print(bcolors.OKBLUE + "Copying translation file: " +
file + " -> " + copy_to_path + bcolors.ENDC)
shutil.copy(client_ts_path + os.sep + file, copy_to_path)
def parse_args():
ap = argparse.ArgumentParser(description="Copy runtime files tool")
if globalVar.system_name != "Windows":
ap.add_argument(
'-q', '--qtPath', default='',
help='Qt path')
else:
ap.add_argument(
'-m', '--mode', default='',
help='Release or Beta mode')
ap.add_argument(
'-q', '--qtVersion', default='',
help='Qt version')
ap.add_argument(
'-d', '--daemonPath', default='',
help='Daemon path')
ap.add_argument(
'-l', '--lrcPath', default='',
help='Lrc path')
ap.add_argument(
'-o', '--outputPath', default='',
help='Output path')
parsed_args = ap.parse_args()
return parsed_args
def main():
# check stamp
check_stamp()
# parse args
parsed_args = parse_args()
# set up global var
setup_parameters(parsed_args)
print(bcolors.OKCYAN + "****************************************" + bcolors.ENDC)
print(bcolors.OKBLUE + "copying deployment files..." + bcolors.ENDC)
print(bcolors.OKBLUE + "using daemonDir: " +
globalVar.daemon_path + bcolors.ENDC)
print(bcolors.OKBLUE + "using lrcDir: " +
globalVar.lrc_path + bcolors.ENDC)
if globalVar.qt_path:
print(bcolors.OKBLUE + "using QtDir: " +
globalVar.qt_path + bcolors.ENDC)
else:
print(bcolors.OKBLUE + "using system Qt" + bcolors.ENDC)
if globalVar.system_name == "Windows":
print(bcolors.OKBLUE + globalVar.mode + " mode" + bcolors.ENDC)
print(bcolors.OKCYAN + "****************************************" + bcolors.ENDC)
# deployment
if globalVar.system_name == "Windows":
copy_deployment_files()
copy_ringtones()
# translations
release_and_copy_translations()
# web resources
compile_and_copy_web_resources()
# write stamp
write_stamp()
print(bcolors.OKGREEN + "Copy completed" + bcolors.ENDC)
if __name__ == '__main__':
main()

View file

@ -1,189 +0,0 @@
win32-msvc {
TARGET = Jami
TEMPLATE = app
QT += core winextras qml quickcontrols2 quick xml multimedia network webengine svg sql
CONFIG += suppress_vcproj_warnings c++17 qtquickcompiler
# library compatibility (boost, libnotify, etc.)
CONFIG += no_keywords
QTQUICK_COMPILER_SKIPPED_RESOURCES += resources.qrc
# compiler options
QMAKE_CXXFLAGS += /wd"4068" /wd"4099" /wd"4189" /wd"4267" /wd"4577" /wd"4467" /wd"4715" /wd"4828"
QMAKE_CXXFLAGS += /MP /GS /W3 /Gy /Zc:wchar_t /Zi /Gm- /O2 /Zc:inline /fp:precise /errorReport:prompt
QMAKE_CXXFLAGS += /Gd /Oi /MD /std:c++17 /FC /EHsc /nologo /sdl
# linker options
QMAKE_LFLAGS+= /ignore:4006,4049,4078,4098 /FORCE:MULTIPLE /INCREMENTAL:NO /Debug /LTCG /NODEFAULTLIB:LIBCMT
# preprocessor defines
DEFINES += UNICODE QT_NO_DEBUG NDEBUG
# dependencies
LRC= ../lrc
DRING= ../daemon
QRENCODE= $$PWD/qrencode-win32/qrencode-win32
# client deps
INCLUDEPATH += $${QRENCODE}
LIBS += $${QRENCODE}/vc8/qrcodelib/x64/Release-Lib/qrcodelib.lib
# lrc
INCLUDEPATH += $${LRC}/src/
LIBS += $${LRC}/build/release/ringclient_static.lib
LIBS += $${LRC}/build/src/qtwrapper/Release/qtwrapper.lib
# daemon
INCLUDEPATH += ../daemon/contrib/msvc/include/
LIBS += $${DRING}/build/x64/ReleaseLib_win32/bin/dring.lib
LIBS += $${DRING}/contrib/msvc/lib/x64/libgnutls.lib
# windows system libs
LIBS += Shell32.lib Ole32.lib Advapi32.lib Shlwapi.lib User32.lib Gdi32.lib Crypt32.lib Strmiids.lib
# output paths
OBJECTS_DIR = obj/.obj
MOC_DIR = obj/.moc
RCC_DIR = obj/.rcc
UI_DIR = obj/.ui
MODE = "Release"
# ReleaseCompile config
contains(CONFIG, ReleaseCompile) {
MODE = "ReleaseCompile"
CONFIG(ReleaseCompile) {
message(ReleaseCompile config enabled)
Release: DEFINES += COMPILE_ONLY
}
}
# beta config
contains(CONFIG, Beta) {
MODE = "Beta"
CONFIG(Beta) {
message(Beta config enabled)
Release: DESTDIR = x64/Beta
Release: DEFINES += BETA
}
} else {
Release: DESTDIR = x64/Release
}
Debug: DESTDIR = x64/Debug
# qt dir
QMAKE_INCDIR_QT=$(QTDIR)\include
QMAKE_LIBDIR=$(QTDIR)\lib
QMAKE_MOC=$(QTDIR)\bin\moc.exe
QMAKE_QMAKE=$(QTDIR)\bin\qmake.exe
# exe icons
Release: RC_FILE = ico.rc
# run the deployment script(run windeployqt)
!equals(MODE, "ReleaseCompile") {
QMAKE_POST_LINK += $$quote(python .\copy-runtime-files.py -m $${MODE} -q $${QT_VERSION} -o $${DESTDIR})
}
}
# Input
HEADERS += \
src/abstractitemmodelbase.h \
src/avatarimageprovider.h \
src/moderatorlistmodel.h \
src/networkmanager.h \
src/quickimageproviderbase.h \
src/screensaver.h \
src/smartlistmodel.h \
src/updatemanager.h \
src/utils.h \
src/bannedlistmodel.h \
src/version.h \
src/accountlistmodel.h \
src/runguard.h \
src/webchathelpers.h \
src/rendermanager.h \
src/connectivitymonitor.h \
src/jamiavatartheme.h \
src/mainapplication.h \
src/qrimageprovider.h \
src/messagesadapter.h \
src/accountadapter.h \
src/tintedbuttonimageprovider.h \
src/calladapter.h \
src/conversationsadapter.h \
src/distantrenderer.h \
src/previewrenderer.h \
src/qmladapterbase.h \
src/avadapter.h \
src/contactadapter.h \
src/pluginadapter.h \
src/settingsadapter.h \
src/deviceitemlistmodel.h \
src/pluginitemlistmodel.h \
src/pluginhandleritemlistmodel.h \
src/preferenceitemlistmodel.h \
src/mediacodeclistmodel.h \
src/accountstomigratelistmodel.h \
src/audiodevicemodel.h \
src/videoinputdevicemodel.h \
src/pluginlistpreferencemodel.h \
src/videoformatfpsmodel.h \
src/videoformatresolutionmodel.h \
src/audiomanagerlistmodel.h \
src/qmlregister.h \
src/qtutils.h \
src/utilsadapter.h \
src/systemtray.h \
src/appsettingsmanager.h \
src/lrcinstance.h
SOURCES += \
src/bannedlistmodel.cpp \
src/accountlistmodel.cpp \
src/moderatorlistmodel.cpp \
src/networkmanager.cpp \
src/runguard.cpp \
src/screensaver.cpp \
src/updatemanager.cpp \
src/webchathelpers.cpp \
src/main.cpp \
src/smartlistmodel.cpp \
src/utils.cpp \
src/rendermanager.cpp \
src/connectivitymonitor.cpp \
src/mainapplication.cpp \
src/messagesadapter.cpp \
src/accountadapter.cpp \
src/calladapter.cpp \
src/conversationsadapter.cpp \
src/distantrenderer.cpp \
src/previewrenderer.cpp \
src/avadapter.cpp \
src/contactadapter.cpp \
src/pluginadapter.cpp \
src/settingsadapter.cpp \
src/deviceitemlistmodel.cpp \
src/pluginitemlistmodel.cpp \
src/pluginhandleritemlistmodel.cpp \
src/preferenceitemlistmodel.cpp \
src/mediacodeclistmodel.cpp \
src/accountstomigratelistmodel.cpp \
src/audiodevicemodel.cpp \
src/videoinputdevicemodel.cpp \
src/pluginlistpreferencemodel.cpp \
src/videoformatfpsmodel.cpp \
src/videoformatresolutionmodel.cpp \
src/audiomanagerlistmodel.cpp \
src/qmlregister.cpp \
src/utilsadapter.cpp \
src/systemtray.cpp \
src/appsettingsmanager.cpp \
src/lrcinstance.cpp
RESOURCES += \
resources.qrc \
qml.qrc

View file

@ -2,7 +2,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29613.14
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ring-daemon", "..\daemon\build\ring-daemon.vcxproj", "{1CA4822C-F599-3879-A78F-332D823E4871}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ring-daemon", "..\daemon\build\ring-daemon.vcxproj", "{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}"
ProjectSection(ProjectDependencies) = postProject
{2BB84911-C1B4-4747-B93D-36AA82CC5031} = {2BB84911-C1B4-4747-B93D-36AA82CC5031}
{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4} = {A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}
@ -11,17 +11,17 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ring-daemon", "..\daemon\bu
{7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65} = {7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}
{855DC8C0-D3E9-4A2E-AE47-116605A7BC9B} = {855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}
{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0} = {4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}
{711397CE-E5D5-467D-9457-8716C047E50C} = {711397CE-E5D5-467D-9457-8716C047E50C}
{E23F393D-035D-3A88-8335-96339271FFC2} = {E23F393D-035D-3A88-8335-96339271FFC2}
{B8719FD5-E8A6-4A36-943C-891D07F5DD21} = {B8719FD5-E8A6-4A36-943C-891D07F5DD21}
{DA0E03ED-53A7-4050-8A85-90541C5509F8} = {DA0E03ED-53A7-4050-8A85-90541C5509F8}
{9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37} = {9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ringclient_static", "..\lrc\build\ringclient_static.vcxproj", "{774F1C61-6659-36E6-9519-17A753890576}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ringclient_static", "..\lrc\build\ringclient_static.vcxproj", "{B39971A8-F247-31DE-8029-A90CE9549533}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qtwrapper", "..\lrc\build\src\qtwrapper\qtwrapper.vcxproj", "{2CFF20AA-9341-3564-A044-C38E70D5372A}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qtwrapper", "..\lrc\build\src\qtwrapper\qtwrapper.vcxproj", "{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}"
ProjectSection(ProjectDependencies) = postProject
{1CA4822C-F599-3879-A78F-332D823E4871} = {1CA4822C-F599-3879-A78F-332D823E4871}
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE} = {8819D074-8F1F-3226-A611-F2E0BD9B6DBE}
EndProjectSection
EndProject
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "JamiInstaller", "JamiInstaller\JamiInstaller.wixproj", "{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}"
@ -56,12 +56,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "client", "client", "{1ECB5B
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "contrib", "contrib", "{B4FD804C-ABD9-4F54-858B-911F0119580C}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "opendht", "..\daemon\contrib\build\opendht\build\opendht-static.vcxproj", "{711397CE-E5D5-467D-9457-8716C047E50C}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "opendht-static", "..\daemon\contrib\build\opendht\build\opendht-static.vcxproj", "{E23F393D-035D-3A88-8335-96339271FFC2}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jami-qt", "jami-qt.vcxproj", "{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}"
ProjectSection(ProjectDependencies) = postProject
{774F1C61-6659-36E6-9519-17A753890576} = {774F1C61-6659-36E6-9519-17A753890576}
EndProjectSection
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jami-qt", "build\jami-qt.vcxproj", "{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -71,6 +68,9 @@ Global
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
MinSizeRel|Any CPU = MinSizeRel|Any CPU
MinSizeRel|x64 = MinSizeRel|x64
MinSizeRel|x86 = MinSizeRel|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
@ -83,102 +83,133 @@ Global
ReleaseLib|Any CPU = ReleaseLib|Any CPU
ReleaseLib|x64 = ReleaseLib|x64
ReleaseLib|x86 = ReleaseLib|x86
RelWithDebInfo|Any CPU = RelWithDebInfo|Any CPU
RelWithDebInfo|x64 = RelWithDebInfo|x64
RelWithDebInfo|x86 = RelWithDebInfo|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{1CA4822C-F599-3879-A78F-332D823E4871}.Beta|Any CPU.ActiveCfg = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.Beta|Any CPU.Build.0 = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.Beta|x64.ActiveCfg = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.Beta|x64.Build.0 = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.Beta|x86.ActiveCfg = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.Beta|x86.Build.0 = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.Debug|Any CPU.ActiveCfg = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.Debug|Any CPU.Build.0 = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.Debug|x64.ActiveCfg = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.Debug|x64.Build.0 = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.Debug|x86.ActiveCfg = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.Debug|x86.Build.0 = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.Release|Any CPU.ActiveCfg = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.Release|Any CPU.Build.0 = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.Release|x64.ActiveCfg = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.Release|x64.Build.0 = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.Release|x86.ActiveCfg = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.Release|x86.Build.0 = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseCompile|Any CPU.ActiveCfg = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseCompile|Any CPU.Build.0 = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseCompile|x64.ActiveCfg = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseCompile|x64.Build.0 = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseCompile|x86.ActiveCfg = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseCompile|x86.Build.0 = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseLib_win32|Any CPU.ActiveCfg = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseLib_win32|x64.ActiveCfg = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseLib_win32|x64.Build.0 = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseLib_win32|x86.ActiveCfg = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseLib|Any CPU.ActiveCfg = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseLib|Any CPU.Build.0 = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseLib|x64.ActiveCfg = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseLib|x64.Build.0 = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseLib|x86.ActiveCfg = ReleaseLib_win32|x64
{1CA4822C-F599-3879-A78F-332D823E4871}.ReleaseLib|x86.Build.0 = ReleaseLib_win32|x64
{774F1C61-6659-36E6-9519-17A753890576}.Beta|Any CPU.ActiveCfg = Release|x64
{774F1C61-6659-36E6-9519-17A753890576}.Beta|x64.ActiveCfg = Release|x64
{774F1C61-6659-36E6-9519-17A753890576}.Beta|x64.Build.0 = Release|x64
{774F1C61-6659-36E6-9519-17A753890576}.Beta|x86.ActiveCfg = Release|x64
{774F1C61-6659-36E6-9519-17A753890576}.Debug|Any CPU.ActiveCfg = Debug|x64
{774F1C61-6659-36E6-9519-17A753890576}.Debug|x64.ActiveCfg = Debug|x64
{774F1C61-6659-36E6-9519-17A753890576}.Debug|x64.Build.0 = Debug|x64
{774F1C61-6659-36E6-9519-17A753890576}.Debug|x86.ActiveCfg = Debug|x64
{774F1C61-6659-36E6-9519-17A753890576}.Release|Any CPU.ActiveCfg = Release|x64
{774F1C61-6659-36E6-9519-17A753890576}.Release|x64.ActiveCfg = Release|x64
{774F1C61-6659-36E6-9519-17A753890576}.Release|x64.Build.0 = Release|x64
{774F1C61-6659-36E6-9519-17A753890576}.Release|x86.ActiveCfg = Release|x64
{774F1C61-6659-36E6-9519-17A753890576}.ReleaseCompile|Any CPU.ActiveCfg = Release|x64
{774F1C61-6659-36E6-9519-17A753890576}.ReleaseCompile|Any CPU.Build.0 = Release|x64
{774F1C61-6659-36E6-9519-17A753890576}.ReleaseCompile|x64.ActiveCfg = Release|x64
{774F1C61-6659-36E6-9519-17A753890576}.ReleaseCompile|x64.Build.0 = Release|x64
{774F1C61-6659-36E6-9519-17A753890576}.ReleaseCompile|x86.ActiveCfg = Release|x64
{774F1C61-6659-36E6-9519-17A753890576}.ReleaseCompile|x86.Build.0 = Release|x64
{774F1C61-6659-36E6-9519-17A753890576}.ReleaseLib_win32|Any CPU.ActiveCfg = RelWithDebInfo|x64
{774F1C61-6659-36E6-9519-17A753890576}.ReleaseLib_win32|Any CPU.Build.0 = RelWithDebInfo|x64
{774F1C61-6659-36E6-9519-17A753890576}.ReleaseLib_win32|x64.ActiveCfg = Release|x64
{774F1C61-6659-36E6-9519-17A753890576}.ReleaseLib_win32|x64.Build.0 = Release|x64
{774F1C61-6659-36E6-9519-17A753890576}.ReleaseLib_win32|x86.ActiveCfg = RelWithDebInfo|x64
{774F1C61-6659-36E6-9519-17A753890576}.ReleaseLib_win32|x86.Build.0 = RelWithDebInfo|x64
{774F1C61-6659-36E6-9519-17A753890576}.ReleaseLib|Any CPU.ActiveCfg = RelWithDebInfo|x64
{774F1C61-6659-36E6-9519-17A753890576}.ReleaseLib|Any CPU.Build.0 = RelWithDebInfo|x64
{774F1C61-6659-36E6-9519-17A753890576}.ReleaseLib|x64.ActiveCfg = Release|x64
{774F1C61-6659-36E6-9519-17A753890576}.ReleaseLib|x64.Build.0 = Release|x64
{774F1C61-6659-36E6-9519-17A753890576}.ReleaseLib|x86.ActiveCfg = MinSizeRel|x64
{774F1C61-6659-36E6-9519-17A753890576}.ReleaseLib|x86.Build.0 = MinSizeRel|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.Beta|Any CPU.ActiveCfg = Release|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.Beta|x64.ActiveCfg = Release|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.Beta|x64.Build.0 = Release|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.Beta|x86.ActiveCfg = Release|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.Debug|Any CPU.ActiveCfg = Debug|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.Debug|x64.ActiveCfg = Debug|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.Debug|x64.Build.0 = Debug|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.Debug|x86.ActiveCfg = Debug|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.Release|Any CPU.ActiveCfg = Release|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.Release|x64.ActiveCfg = Release|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.Release|x64.Build.0 = Release|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.Release|x86.ActiveCfg = Release|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseCompile|Any CPU.ActiveCfg = Release|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseCompile|Any CPU.Build.0 = Release|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseCompile|x64.ActiveCfg = Release|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseCompile|x64.Build.0 = Release|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseCompile|x86.ActiveCfg = Release|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseCompile|x86.Build.0 = Release|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseLib_win32|Any CPU.ActiveCfg = RelWithDebInfo|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseLib_win32|Any CPU.Build.0 = RelWithDebInfo|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseLib_win32|x64.ActiveCfg = Release|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseLib_win32|x64.Build.0 = Release|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseLib_win32|x86.ActiveCfg = RelWithDebInfo|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseLib_win32|x86.Build.0 = RelWithDebInfo|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseLib|Any CPU.ActiveCfg = RelWithDebInfo|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseLib|Any CPU.Build.0 = RelWithDebInfo|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseLib|x64.ActiveCfg = Release|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseLib|x64.Build.0 = Release|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseLib|x86.ActiveCfg = MinSizeRel|x64
{2CFF20AA-9341-3564-A044-C38E70D5372A}.ReleaseLib|x86.Build.0 = MinSizeRel|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.Beta|Any CPU.ActiveCfg = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.Beta|Any CPU.Build.0 = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.Beta|x64.ActiveCfg = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.Beta|x64.Build.0 = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.Beta|x86.ActiveCfg = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.Beta|x86.Build.0 = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.Debug|Any CPU.ActiveCfg = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.Debug|Any CPU.Build.0 = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.Debug|x64.ActiveCfg = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.Debug|x64.Build.0 = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.Debug|x86.ActiveCfg = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.Debug|x86.Build.0 = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.MinSizeRel|Any CPU.ActiveCfg = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.MinSizeRel|Any CPU.Build.0 = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.MinSizeRel|x64.ActiveCfg = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.MinSizeRel|x64.Build.0 = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.MinSizeRel|x86.ActiveCfg = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.MinSizeRel|x86.Build.0 = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.Release|Any CPU.ActiveCfg = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.Release|Any CPU.Build.0 = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.Release|x64.ActiveCfg = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.Release|x64.Build.0 = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.Release|x86.ActiveCfg = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.Release|x86.Build.0 = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.ReleaseCompile|Any CPU.ActiveCfg = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.ReleaseCompile|Any CPU.Build.0 = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.ReleaseCompile|x64.ActiveCfg = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.ReleaseCompile|x64.Build.0 = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.ReleaseCompile|x86.ActiveCfg = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.ReleaseCompile|x86.Build.0 = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.ReleaseLib_win32|Any CPU.ActiveCfg = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.ReleaseLib_win32|x64.ActiveCfg = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.ReleaseLib_win32|x64.Build.0 = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.ReleaseLib_win32|x86.ActiveCfg = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.ReleaseLib|Any CPU.ActiveCfg = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.ReleaseLib|Any CPU.Build.0 = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.ReleaseLib|x64.ActiveCfg = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.ReleaseLib|x64.Build.0 = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.ReleaseLib|x86.ActiveCfg = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.ReleaseLib|x86.Build.0 = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.RelWithDebInfo|Any CPU.ActiveCfg = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.RelWithDebInfo|Any CPU.Build.0 = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.RelWithDebInfo|x64.ActiveCfg = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.RelWithDebInfo|x64.Build.0 = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.RelWithDebInfo|x86.ActiveCfg = ReleaseLib_win32|x64
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE}.RelWithDebInfo|x86.Build.0 = ReleaseLib_win32|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.Beta|Any CPU.ActiveCfg = Release|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.Beta|x64.ActiveCfg = Release|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.Beta|x64.Build.0 = Release|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.Beta|x86.ActiveCfg = Release|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.Debug|Any CPU.ActiveCfg = Debug|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.Debug|x64.ActiveCfg = Debug|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.Debug|x64.Build.0 = Debug|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.Debug|x86.ActiveCfg = Debug|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.MinSizeRel|Any CPU.ActiveCfg = MinSizeRel|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.MinSizeRel|x64.Build.0 = MinSizeRel|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.MinSizeRel|x86.ActiveCfg = MinSizeRel|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.Release|Any CPU.ActiveCfg = Release|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.Release|x64.ActiveCfg = Release|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.Release|x64.Build.0 = Release|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.Release|x86.ActiveCfg = Release|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.ReleaseCompile|Any CPU.ActiveCfg = Release|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.ReleaseCompile|Any CPU.Build.0 = Release|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.ReleaseCompile|x64.ActiveCfg = Release|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.ReleaseCompile|x64.Build.0 = Release|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.ReleaseCompile|x86.ActiveCfg = Release|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.ReleaseCompile|x86.Build.0 = Release|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.ReleaseLib_win32|Any CPU.ActiveCfg = RelWithDebInfo|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.ReleaseLib_win32|Any CPU.Build.0 = RelWithDebInfo|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.ReleaseLib_win32|x64.ActiveCfg = Release|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.ReleaseLib_win32|x64.Build.0 = Release|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.ReleaseLib_win32|x86.ActiveCfg = RelWithDebInfo|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.ReleaseLib_win32|x86.Build.0 = RelWithDebInfo|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.ReleaseLib|Any CPU.ActiveCfg = RelWithDebInfo|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.ReleaseLib|Any CPU.Build.0 = RelWithDebInfo|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.ReleaseLib|x64.ActiveCfg = Release|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.ReleaseLib|x64.Build.0 = Release|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.ReleaseLib|x86.ActiveCfg = MinSizeRel|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.ReleaseLib|x86.Build.0 = MinSizeRel|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
{B39971A8-F247-31DE-8029-A90CE9549533}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.Beta|Any CPU.ActiveCfg = Release|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.Beta|x64.ActiveCfg = Release|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.Beta|x64.Build.0 = Release|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.Beta|x86.ActiveCfg = Release|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.Debug|Any CPU.ActiveCfg = Debug|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.Debug|x64.ActiveCfg = Debug|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.Debug|x64.Build.0 = Debug|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.Debug|x86.ActiveCfg = Debug|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.MinSizeRel|Any CPU.ActiveCfg = MinSizeRel|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.MinSizeRel|x64.Build.0 = MinSizeRel|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.MinSizeRel|x86.ActiveCfg = MinSizeRel|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.Release|Any CPU.ActiveCfg = Release|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.Release|x64.ActiveCfg = Release|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.Release|x64.Build.0 = Release|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.Release|x86.ActiveCfg = Release|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.ReleaseCompile|Any CPU.ActiveCfg = Release|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.ReleaseCompile|Any CPU.Build.0 = Release|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.ReleaseCompile|x64.ActiveCfg = Release|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.ReleaseCompile|x64.Build.0 = Release|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.ReleaseCompile|x86.ActiveCfg = Release|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.ReleaseCompile|x86.Build.0 = Release|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.ReleaseLib_win32|Any CPU.ActiveCfg = RelWithDebInfo|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.ReleaseLib_win32|Any CPU.Build.0 = RelWithDebInfo|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.ReleaseLib_win32|x64.ActiveCfg = Release|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.ReleaseLib_win32|x64.Build.0 = Release|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.ReleaseLib_win32|x86.ActiveCfg = RelWithDebInfo|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.ReleaseLib_win32|x86.Build.0 = RelWithDebInfo|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.ReleaseLib|Any CPU.ActiveCfg = RelWithDebInfo|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.ReleaseLib|Any CPU.Build.0 = RelWithDebInfo|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.ReleaseLib|x64.ActiveCfg = Release|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.ReleaseLib|x64.Build.0 = Release|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.ReleaseLib|x86.ActiveCfg = MinSizeRel|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.ReleaseLib|x86.Build.0 = MinSizeRel|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64
{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Beta|Any CPU.ActiveCfg = Release|x64
{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Beta|x64.ActiveCfg = Beta|x64
{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Beta|x64.Build.0 = Beta|x64
@ -189,6 +220,12 @@ Global
{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Debug|x64.Build.0 = Beta|x64
{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Debug|x86.ActiveCfg = Beta|x64
{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Debug|x86.Build.0 = Beta|x64
{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.MinSizeRel|Any CPU.ActiveCfg = Beta|x64
{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.MinSizeRel|Any CPU.Build.0 = Beta|x64
{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.MinSizeRel|x64.ActiveCfg = Beta|x64
{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.MinSizeRel|x64.Build.0 = Beta|x64
{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.MinSizeRel|x86.ActiveCfg = Beta|x64
{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.MinSizeRel|x86.Build.0 = Beta|x64
{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Release|Any CPU.ActiveCfg = Release|x64
{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Release|x64.ActiveCfg = Release|x64
{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.Release|x64.Build.0 = Release|x64
@ -211,6 +248,12 @@ Global
{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.ReleaseLib|x64.Build.0 = Release|x64
{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.ReleaseLib|x86.ActiveCfg = Release|x64
{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.ReleaseLib|x86.Build.0 = Release|x64
{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.RelWithDebInfo|Any CPU.ActiveCfg = Beta|x64
{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.RelWithDebInfo|Any CPU.Build.0 = Beta|x64
{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.RelWithDebInfo|x64.ActiveCfg = Release|x64
{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.RelWithDebInfo|x64.Build.0 = Release|x64
{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.RelWithDebInfo|x86.ActiveCfg = Beta|x64
{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48}.RelWithDebInfo|x86.Build.0 = Beta|x64
{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.Beta|Any CPU.ActiveCfg = Release|Win32
{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.Beta|x64.ActiveCfg = Release|x64
{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.Beta|x64.Build.0 = Release|x64
@ -221,6 +264,12 @@ Global
{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.Debug|x64.Build.0 = Debug|x64
{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.Debug|x86.ActiveCfg = Debug|Win32
{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.Debug|x86.Build.0 = Debug|Win32
{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.MinSizeRel|Any CPU.ActiveCfg = Debug-Dynamic|ARM
{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.MinSizeRel|Any CPU.Build.0 = Debug-Dynamic|ARM
{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.MinSizeRel|x64.ActiveCfg = Debug-Dynamic|x64
{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.MinSizeRel|x64.Build.0 = Debug-Dynamic|x64
{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.MinSizeRel|x86.ActiveCfg = Debug-Dynamic|Win32
{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.MinSizeRel|x86.Build.0 = Debug-Dynamic|Win32
{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.Release|Any CPU.ActiveCfg = Release|Win32
{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.Release|x64.ActiveCfg = Release|x64
{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.Release|x64.Build.0 = Release|x64
@ -244,6 +293,12 @@ Global
{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.ReleaseLib|x64.Build.0 = Release|x64
{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.ReleaseLib|x86.ActiveCfg = Release-Static|Win32
{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.ReleaseLib|x86.Build.0 = Release-Static|Win32
{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.RelWithDebInfo|Any CPU.ActiveCfg = Debug-Dynamic|ARM
{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.RelWithDebInfo|Any CPU.Build.0 = Debug-Dynamic|ARM
{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.RelWithDebInfo|x64.ActiveCfg = Release-Dynamic|x64
{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.RelWithDebInfo|x64.Build.0 = Release-Dynamic|x64
{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.RelWithDebInfo|x86.ActiveCfg = Release-Dynamic|Win32
{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4}.RelWithDebInfo|x86.Build.0 = Release-Dynamic|Win32
{7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.Beta|Any CPU.ActiveCfg = Release|Win32
{7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.Beta|x64.ActiveCfg = Release|x64
{7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.Beta|x64.Build.0 = Release|x64
@ -254,6 +309,12 @@ Global
{7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.Debug|x64.Build.0 = Debug|x64
{7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.Debug|x86.ActiveCfg = Debug|Win32
{7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.Debug|x86.Build.0 = Debug|Win32
{7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.MinSizeRel|Any CPU.ActiveCfg = Debug-Dynamic|ARM
{7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.MinSizeRel|Any CPU.Build.0 = Debug-Dynamic|ARM
{7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.MinSizeRel|x64.ActiveCfg = Debug-Dynamic|x64
{7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.MinSizeRel|x64.Build.0 = Debug-Dynamic|x64
{7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.MinSizeRel|x86.ActiveCfg = Debug-Dynamic|Win32
{7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.MinSizeRel|x86.Build.0 = Debug-Dynamic|Win32
{7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.Release|Any CPU.ActiveCfg = Release|Win32
{7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.Release|x64.ActiveCfg = Release|x64
{7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.Release|x64.Build.0 = Release|x64
@ -277,6 +338,12 @@ Global
{7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.ReleaseLib|x64.Build.0 = Release|x64
{7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.ReleaseLib|x86.ActiveCfg = Release-Static|Win32
{7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.ReleaseLib|x86.Build.0 = Release-Static|Win32
{7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.RelWithDebInfo|Any CPU.ActiveCfg = Debug-Dynamic|ARM
{7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.RelWithDebInfo|Any CPU.Build.0 = Debug-Dynamic|ARM
{7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.RelWithDebInfo|x64.ActiveCfg = Release-Dynamic|x64
{7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.RelWithDebInfo|x64.Build.0 = Release-Dynamic|x64
{7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.RelWithDebInfo|x86.ActiveCfg = Release-Dynamic|Win32
{7FDE3880-A4AB-49E3-B439-EBEF0A0C7A65}.RelWithDebInfo|x86.Build.0 = Release-Dynamic|Win32
{855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.Beta|Any CPU.ActiveCfg = Release|Win32
{855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.Beta|x64.ActiveCfg = Release|x64
{855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.Beta|x64.Build.0 = Release|x64
@ -287,6 +354,12 @@ Global
{855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.Debug|x64.Build.0 = Debug|x64
{855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.Debug|x86.ActiveCfg = Debug|Win32
{855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.Debug|x86.Build.0 = Debug|Win32
{855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.MinSizeRel|Any CPU.ActiveCfg = Debug-Dynamic|ARM
{855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.MinSizeRel|Any CPU.Build.0 = Debug-Dynamic|ARM
{855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.MinSizeRel|x64.ActiveCfg = Debug-Dynamic|x64
{855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.MinSizeRel|x64.Build.0 = Debug-Dynamic|x64
{855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.MinSizeRel|x86.ActiveCfg = Debug-Dynamic|Win32
{855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.MinSizeRel|x86.Build.0 = Debug-Dynamic|Win32
{855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.Release|Any CPU.ActiveCfg = Release|Win32
{855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.Release|x64.ActiveCfg = Release|x64
{855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.Release|x64.Build.0 = Release|x64
@ -310,6 +383,12 @@ Global
{855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.ReleaseLib|x64.Build.0 = Release|x64
{855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.ReleaseLib|x86.ActiveCfg = Release-Static|Win32
{855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.ReleaseLib|x86.Build.0 = Release-Static|Win32
{855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.RelWithDebInfo|Any CPU.ActiveCfg = Debug-Dynamic|ARM
{855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.RelWithDebInfo|Any CPU.Build.0 = Debug-Dynamic|ARM
{855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.RelWithDebInfo|x64.ActiveCfg = Release-Dynamic|x64
{855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.RelWithDebInfo|x64.Build.0 = Release-Dynamic|x64
{855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.RelWithDebInfo|x86.ActiveCfg = Release-Dynamic|Win32
{855DC8C0-D3E9-4A2E-AE47-116605A7BC9B}.RelWithDebInfo|x86.Build.0 = Release-Dynamic|Win32
{FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.Beta|Any CPU.ActiveCfg = Release|Win32
{FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.Beta|x64.ActiveCfg = Release|x64
{FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.Beta|x64.Build.0 = Release|x64
@ -320,6 +399,12 @@ Global
{FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.Debug|x64.Build.0 = Debug|x64
{FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.Debug|x86.ActiveCfg = Debug|Win32
{FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.Debug|x86.Build.0 = Debug|Win32
{FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.MinSizeRel|Any CPU.ActiveCfg = Debug-Dynamic|ARM
{FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.MinSizeRel|Any CPU.Build.0 = Debug-Dynamic|ARM
{FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.MinSizeRel|x64.ActiveCfg = Debug-Dynamic|x64
{FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.MinSizeRel|x64.Build.0 = Debug-Dynamic|x64
{FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.MinSizeRel|x86.ActiveCfg = Debug-Dynamic|Win32
{FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.MinSizeRel|x86.Build.0 = Debug-Dynamic|Win32
{FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.Release|Any CPU.ActiveCfg = Release|Win32
{FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.Release|x64.ActiveCfg = Release|x64
{FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.Release|x64.Build.0 = Release|x64
@ -343,6 +428,12 @@ Global
{FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.ReleaseLib|x64.Build.0 = Release|x64
{FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.ReleaseLib|x86.ActiveCfg = Release-Static|Win32
{FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.ReleaseLib|x86.Build.0 = Release-Static|Win32
{FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.RelWithDebInfo|Any CPU.ActiveCfg = Debug-Dynamic|ARM
{FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.RelWithDebInfo|Any CPU.Build.0 = Debug-Dynamic|ARM
{FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.RelWithDebInfo|x64.ActiveCfg = Release-Dynamic|x64
{FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.RelWithDebInfo|x64.Build.0 = Release-Dynamic|x64
{FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.RelWithDebInfo|x86.ActiveCfg = Release-Dynamic|Win32
{FE07F272-AE7F-4549-9E9F-EF9B80CB1693}.RelWithDebInfo|x86.Build.0 = Release-Dynamic|Win32
{DA0E03ED-53A7-4050-8A85-90541C5509F8}.Beta|Any CPU.ActiveCfg = Release|Win32
{DA0E03ED-53A7-4050-8A85-90541C5509F8}.Beta|x64.ActiveCfg = Release|x64
{DA0E03ED-53A7-4050-8A85-90541C5509F8}.Beta|x64.Build.0 = Release|x64
@ -353,6 +444,12 @@ Global
{DA0E03ED-53A7-4050-8A85-90541C5509F8}.Debug|x64.Build.0 = Debug|x64
{DA0E03ED-53A7-4050-8A85-90541C5509F8}.Debug|x86.ActiveCfg = Debug|Win32
{DA0E03ED-53A7-4050-8A85-90541C5509F8}.Debug|x86.Build.0 = Debug|Win32
{DA0E03ED-53A7-4050-8A85-90541C5509F8}.MinSizeRel|Any CPU.ActiveCfg = Debug-Dynamic|ARM
{DA0E03ED-53A7-4050-8A85-90541C5509F8}.MinSizeRel|Any CPU.Build.0 = Debug-Dynamic|ARM
{DA0E03ED-53A7-4050-8A85-90541C5509F8}.MinSizeRel|x64.ActiveCfg = Debug-Dynamic|x64
{DA0E03ED-53A7-4050-8A85-90541C5509F8}.MinSizeRel|x64.Build.0 = Debug-Dynamic|x64
{DA0E03ED-53A7-4050-8A85-90541C5509F8}.MinSizeRel|x86.ActiveCfg = Debug-Dynamic|Win32
{DA0E03ED-53A7-4050-8A85-90541C5509F8}.MinSizeRel|x86.Build.0 = Debug-Dynamic|Win32
{DA0E03ED-53A7-4050-8A85-90541C5509F8}.Release|Any CPU.ActiveCfg = Release|Win32
{DA0E03ED-53A7-4050-8A85-90541C5509F8}.Release|x64.ActiveCfg = Release|x64
{DA0E03ED-53A7-4050-8A85-90541C5509F8}.Release|x64.Build.0 = Release|x64
@ -376,6 +473,12 @@ Global
{DA0E03ED-53A7-4050-8A85-90541C5509F8}.ReleaseLib|x64.Build.0 = Release|x64
{DA0E03ED-53A7-4050-8A85-90541C5509F8}.ReleaseLib|x86.ActiveCfg = Release-Static|Win32
{DA0E03ED-53A7-4050-8A85-90541C5509F8}.ReleaseLib|x86.Build.0 = Release-Static|Win32
{DA0E03ED-53A7-4050-8A85-90541C5509F8}.RelWithDebInfo|Any CPU.ActiveCfg = Debug-Dynamic|ARM
{DA0E03ED-53A7-4050-8A85-90541C5509F8}.RelWithDebInfo|Any CPU.Build.0 = Debug-Dynamic|ARM
{DA0E03ED-53A7-4050-8A85-90541C5509F8}.RelWithDebInfo|x64.ActiveCfg = Release-Dynamic|x64
{DA0E03ED-53A7-4050-8A85-90541C5509F8}.RelWithDebInfo|x64.Build.0 = Release-Dynamic|x64
{DA0E03ED-53A7-4050-8A85-90541C5509F8}.RelWithDebInfo|x86.ActiveCfg = Release-Dynamic|Win32
{DA0E03ED-53A7-4050-8A85-90541C5509F8}.RelWithDebInfo|x86.Build.0 = Release-Dynamic|Win32
{2BB84911-C1B4-4747-B93D-36AA82CC5031}.Beta|Any CPU.ActiveCfg = Release|Win32
{2BB84911-C1B4-4747-B93D-36AA82CC5031}.Beta|x64.ActiveCfg = Release|x64
{2BB84911-C1B4-4747-B93D-36AA82CC5031}.Beta|x64.Build.0 = Release|x64
@ -386,6 +489,12 @@ Global
{2BB84911-C1B4-4747-B93D-36AA82CC5031}.Debug|x64.Build.0 = Debug|x64
{2BB84911-C1B4-4747-B93D-36AA82CC5031}.Debug|x86.ActiveCfg = Debug|Win32
{2BB84911-C1B4-4747-B93D-36AA82CC5031}.Debug|x86.Build.0 = Debug|Win32
{2BB84911-C1B4-4747-B93D-36AA82CC5031}.MinSizeRel|Any CPU.ActiveCfg = Debug-Dynamic|ARM
{2BB84911-C1B4-4747-B93D-36AA82CC5031}.MinSizeRel|Any CPU.Build.0 = Debug-Dynamic|ARM
{2BB84911-C1B4-4747-B93D-36AA82CC5031}.MinSizeRel|x64.ActiveCfg = Debug-Dynamic|x64
{2BB84911-C1B4-4747-B93D-36AA82CC5031}.MinSizeRel|x64.Build.0 = Debug-Dynamic|x64
{2BB84911-C1B4-4747-B93D-36AA82CC5031}.MinSizeRel|x86.ActiveCfg = Debug-Dynamic|Win32
{2BB84911-C1B4-4747-B93D-36AA82CC5031}.MinSizeRel|x86.Build.0 = Debug-Dynamic|Win32
{2BB84911-C1B4-4747-B93D-36AA82CC5031}.Release|Any CPU.ActiveCfg = Release|Win32
{2BB84911-C1B4-4747-B93D-36AA82CC5031}.Release|x64.ActiveCfg = Release|x64
{2BB84911-C1B4-4747-B93D-36AA82CC5031}.Release|x64.Build.0 = Release|x64
@ -409,6 +518,12 @@ Global
{2BB84911-C1B4-4747-B93D-36AA82CC5031}.ReleaseLib|x64.Build.0 = Release|x64
{2BB84911-C1B4-4747-B93D-36AA82CC5031}.ReleaseLib|x86.ActiveCfg = Release-Static|Win32
{2BB84911-C1B4-4747-B93D-36AA82CC5031}.ReleaseLib|x86.Build.0 = Release-Static|Win32
{2BB84911-C1B4-4747-B93D-36AA82CC5031}.RelWithDebInfo|Any CPU.ActiveCfg = Debug-Dynamic|ARM
{2BB84911-C1B4-4747-B93D-36AA82CC5031}.RelWithDebInfo|Any CPU.Build.0 = Debug-Dynamic|ARM
{2BB84911-C1B4-4747-B93D-36AA82CC5031}.RelWithDebInfo|x64.ActiveCfg = Release-Dynamic|x64
{2BB84911-C1B4-4747-B93D-36AA82CC5031}.RelWithDebInfo|x64.Build.0 = Release-Dynamic|x64
{2BB84911-C1B4-4747-B93D-36AA82CC5031}.RelWithDebInfo|x86.ActiveCfg = Release-Dynamic|Win32
{2BB84911-C1B4-4747-B93D-36AA82CC5031}.RelWithDebInfo|x86.Build.0 = Release-Dynamic|Win32
{B82CDD25-6903-430E-BD38-D8129A2015C1}.Beta|Any CPU.ActiveCfg = Release|Win32
{B82CDD25-6903-430E-BD38-D8129A2015C1}.Beta|x64.ActiveCfg = Release|x64
{B82CDD25-6903-430E-BD38-D8129A2015C1}.Beta|x64.Build.0 = Release|x64
@ -419,6 +534,12 @@ Global
{B82CDD25-6903-430E-BD38-D8129A2015C1}.Debug|x64.Build.0 = Debug|x64
{B82CDD25-6903-430E-BD38-D8129A2015C1}.Debug|x86.ActiveCfg = Debug|Win32
{B82CDD25-6903-430E-BD38-D8129A2015C1}.Debug|x86.Build.0 = Debug|Win32
{B82CDD25-6903-430E-BD38-D8129A2015C1}.MinSizeRel|Any CPU.ActiveCfg = Debug-Dynamic|ARM
{B82CDD25-6903-430E-BD38-D8129A2015C1}.MinSizeRel|Any CPU.Build.0 = Debug-Dynamic|ARM
{B82CDD25-6903-430E-BD38-D8129A2015C1}.MinSizeRel|x64.ActiveCfg = Debug-Dynamic|x64
{B82CDD25-6903-430E-BD38-D8129A2015C1}.MinSizeRel|x64.Build.0 = Debug-Dynamic|x64
{B82CDD25-6903-430E-BD38-D8129A2015C1}.MinSizeRel|x86.ActiveCfg = Debug-Dynamic|Win32
{B82CDD25-6903-430E-BD38-D8129A2015C1}.MinSizeRel|x86.Build.0 = Debug-Dynamic|Win32
{B82CDD25-6903-430E-BD38-D8129A2015C1}.Release|Any CPU.ActiveCfg = Release|Win32
{B82CDD25-6903-430E-BD38-D8129A2015C1}.Release|x64.ActiveCfg = Release|x64
{B82CDD25-6903-430E-BD38-D8129A2015C1}.Release|x64.Build.0 = Release|x64
@ -442,6 +563,12 @@ Global
{B82CDD25-6903-430E-BD38-D8129A2015C1}.ReleaseLib|x64.Build.0 = Release|x64
{B82CDD25-6903-430E-BD38-D8129A2015C1}.ReleaseLib|x86.ActiveCfg = Release-Static|Win32
{B82CDD25-6903-430E-BD38-D8129A2015C1}.ReleaseLib|x86.Build.0 = Release-Static|Win32
{B82CDD25-6903-430E-BD38-D8129A2015C1}.RelWithDebInfo|Any CPU.ActiveCfg = Debug-Dynamic|ARM
{B82CDD25-6903-430E-BD38-D8129A2015C1}.RelWithDebInfo|Any CPU.Build.0 = Debug-Dynamic|ARM
{B82CDD25-6903-430E-BD38-D8129A2015C1}.RelWithDebInfo|x64.ActiveCfg = Release-Dynamic|x64
{B82CDD25-6903-430E-BD38-D8129A2015C1}.RelWithDebInfo|x64.Build.0 = Release-Dynamic|x64
{B82CDD25-6903-430E-BD38-D8129A2015C1}.RelWithDebInfo|x86.ActiveCfg = Release-Dynamic|Win32
{B82CDD25-6903-430E-BD38-D8129A2015C1}.RelWithDebInfo|x86.Build.0 = Release-Dynamic|Win32
{9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.Beta|Any CPU.ActiveCfg = Release|Win32
{9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.Beta|x64.ActiveCfg = Release|x64
{9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.Beta|x64.Build.0 = Release|x64
@ -452,6 +579,12 @@ Global
{9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.Debug|x64.Build.0 = Debug|x64
{9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.Debug|x86.ActiveCfg = Debug|Win32
{9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.Debug|x86.Build.0 = Debug|Win32
{9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.MinSizeRel|Any CPU.ActiveCfg = Debug-Dynamic|ARM
{9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.MinSizeRel|Any CPU.Build.0 = Debug-Dynamic|ARM
{9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.MinSizeRel|x64.ActiveCfg = Debug-Dynamic|x64
{9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.MinSizeRel|x64.Build.0 = Debug-Dynamic|x64
{9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.MinSizeRel|x86.ActiveCfg = Debug-Dynamic|Win32
{9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.MinSizeRel|x86.Build.0 = Debug-Dynamic|Win32
{9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.Release|Any CPU.ActiveCfg = Release|Win32
{9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.Release|x64.ActiveCfg = Release|x64
{9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.Release|x64.Build.0 = Release|x64
@ -475,6 +608,12 @@ Global
{9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.ReleaseLib|x64.Build.0 = Release|x64
{9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.ReleaseLib|x86.ActiveCfg = Release-Static|Win32
{9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.ReleaseLib|x86.Build.0 = Release-Static|Win32
{9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.RelWithDebInfo|Any CPU.ActiveCfg = Debug-Dynamic|ARM
{9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.RelWithDebInfo|Any CPU.Build.0 = Debug-Dynamic|ARM
{9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.RelWithDebInfo|x64.ActiveCfg = Release-Dynamic|x64
{9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.RelWithDebInfo|x64.Build.0 = Release-Dynamic|x64
{9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.RelWithDebInfo|x86.ActiveCfg = Release-Dynamic|Win32
{9CA0FDFB-2172-41FC-B7F1-5CE915EDCB37}.RelWithDebInfo|x86.Build.0 = Release-Dynamic|Win32
{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.Beta|Any CPU.ActiveCfg = Release|Win32
{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.Beta|x64.ActiveCfg = Release|x64
{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.Beta|x64.Build.0 = Release|x64
@ -485,6 +624,12 @@ Global
{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.Debug|x64.Build.0 = Debug|x64
{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.Debug|x86.ActiveCfg = Debug|Win32
{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.Debug|x86.Build.0 = Debug|Win32
{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.MinSizeRel|Any CPU.ActiveCfg = Debug-Dynamic|ARM
{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.MinSizeRel|Any CPU.Build.0 = Debug-Dynamic|ARM
{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.MinSizeRel|x64.ActiveCfg = Debug-Dynamic|x64
{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.MinSizeRel|x64.Build.0 = Debug-Dynamic|x64
{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.MinSizeRel|x86.ActiveCfg = Debug-Dynamic|Win32
{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.MinSizeRel|x86.Build.0 = Debug-Dynamic|Win32
{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.Release|Any CPU.ActiveCfg = Release|Win32
{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.Release|x64.ActiveCfg = Release|x64
{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.Release|x64.Build.0 = Release|x64
@ -508,6 +653,12 @@ Global
{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.ReleaseLib|x64.Build.0 = Release|x64
{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.ReleaseLib|x86.ActiveCfg = Release-Static|Win32
{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.ReleaseLib|x86.Build.0 = Release-Static|Win32
{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.RelWithDebInfo|Any CPU.ActiveCfg = Debug-Dynamic|ARM
{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.RelWithDebInfo|Any CPU.Build.0 = Debug-Dynamic|ARM
{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.RelWithDebInfo|x64.ActiveCfg = Release-Dynamic|x64
{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.RelWithDebInfo|x64.Build.0 = Release-Dynamic|x64
{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.RelWithDebInfo|x86.ActiveCfg = Release-Dynamic|Win32
{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0}.RelWithDebInfo|x86.Build.0 = Release-Dynamic|Win32
{B8719FD5-E8A6-4A36-943C-891D07F5DD21}.Beta|Any CPU.ActiveCfg = Release|Win32
{B8719FD5-E8A6-4A36-943C-891D07F5DD21}.Beta|x64.ActiveCfg = Release|x64
{B8719FD5-E8A6-4A36-943C-891D07F5DD21}.Beta|x64.Build.0 = Release|x64
@ -518,6 +669,12 @@ Global
{B8719FD5-E8A6-4A36-943C-891D07F5DD21}.Debug|x64.Build.0 = Debug|x64
{B8719FD5-E8A6-4A36-943C-891D07F5DD21}.Debug|x86.ActiveCfg = Debug|Win32
{B8719FD5-E8A6-4A36-943C-891D07F5DD21}.Debug|x86.Build.0 = Debug|Win32
{B8719FD5-E8A6-4A36-943C-891D07F5DD21}.MinSizeRel|Any CPU.ActiveCfg = Debug-Dynamic|ARM
{B8719FD5-E8A6-4A36-943C-891D07F5DD21}.MinSizeRel|Any CPU.Build.0 = Debug-Dynamic|ARM
{B8719FD5-E8A6-4A36-943C-891D07F5DD21}.MinSizeRel|x64.ActiveCfg = Debug-Dynamic|x64
{B8719FD5-E8A6-4A36-943C-891D07F5DD21}.MinSizeRel|x64.Build.0 = Debug-Dynamic|x64
{B8719FD5-E8A6-4A36-943C-891D07F5DD21}.MinSizeRel|x86.ActiveCfg = Debug-Dynamic|Win32
{B8719FD5-E8A6-4A36-943C-891D07F5DD21}.MinSizeRel|x86.Build.0 = Debug-Dynamic|Win32
{B8719FD5-E8A6-4A36-943C-891D07F5DD21}.Release|Any CPU.ActiveCfg = Release|Win32
{B8719FD5-E8A6-4A36-943C-891D07F5DD21}.Release|x64.ActiveCfg = Release|x64
{B8719FD5-E8A6-4A36-943C-891D07F5DD21}.Release|x64.Build.0 = Release|x64
@ -541,79 +698,101 @@ Global
{B8719FD5-E8A6-4A36-943C-891D07F5DD21}.ReleaseLib|x64.Build.0 = Release|x64
{B8719FD5-E8A6-4A36-943C-891D07F5DD21}.ReleaseLib|x86.ActiveCfg = Release-Static|Win32
{B8719FD5-E8A6-4A36-943C-891D07F5DD21}.ReleaseLib|x86.Build.0 = Release-Static|Win32
{711397CE-E5D5-467D-9457-8716C047E50C}.Beta|Any CPU.ActiveCfg = Release|Win32
{711397CE-E5D5-467D-9457-8716C047E50C}.Beta|x64.ActiveCfg = Release|x64
{711397CE-E5D5-467D-9457-8716C047E50C}.Beta|x64.Build.0 = Release|x64
{711397CE-E5D5-467D-9457-8716C047E50C}.Beta|x86.ActiveCfg = Release|Win32
{711397CE-E5D5-467D-9457-8716C047E50C}.Beta|x86.Build.0 = Release|Win32
{711397CE-E5D5-467D-9457-8716C047E50C}.Debug|Any CPU.ActiveCfg = Debug|Win32
{711397CE-E5D5-467D-9457-8716C047E50C}.Debug|x64.ActiveCfg = Debug|x64
{711397CE-E5D5-467D-9457-8716C047E50C}.Debug|x64.Build.0 = Debug|x64
{711397CE-E5D5-467D-9457-8716C047E50C}.Debug|x86.ActiveCfg = Debug|Win32
{711397CE-E5D5-467D-9457-8716C047E50C}.Debug|x86.Build.0 = Debug|Win32
{711397CE-E5D5-467D-9457-8716C047E50C}.Release|Any CPU.ActiveCfg = Release|Win32
{711397CE-E5D5-467D-9457-8716C047E50C}.Release|x64.ActiveCfg = Release|x64
{711397CE-E5D5-467D-9457-8716C047E50C}.Release|x64.Build.0 = Release|x64
{711397CE-E5D5-467D-9457-8716C047E50C}.Release|x86.ActiveCfg = Release|Win32
{711397CE-E5D5-467D-9457-8716C047E50C}.Release|x86.Build.0 = Release|Win32
{711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseCompile|Any CPU.ActiveCfg = Release|x64
{711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseCompile|Any CPU.Build.0 = Release|x64
{711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseCompile|x64.ActiveCfg = Release|x64
{711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseCompile|x64.Build.0 = Release|x64
{711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseCompile|x86.ActiveCfg = Release|Win32
{711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseCompile|x86.Build.0 = Release|Win32
{711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseLib_win32|Any CPU.ActiveCfg = Release|x64
{711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseLib_win32|Any CPU.Build.0 = Release|x64
{711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseLib_win32|x64.ActiveCfg = Release|x64
{711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseLib_win32|x64.Build.0 = Release|x64
{711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseLib_win32|x86.ActiveCfg = Release|Win32
{711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseLib_win32|x86.Build.0 = Release|Win32
{711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseLib|Any CPU.ActiveCfg = Release|x64
{711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseLib|Any CPU.Build.0 = Release|x64
{711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseLib|x64.ActiveCfg = Release|x64
{711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseLib|x64.Build.0 = Release|x64
{711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseLib|x86.ActiveCfg = Release|Win32
{711397CE-E5D5-467D-9457-8716C047E50C}.ReleaseLib|x86.Build.0 = Release|Win32
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Beta|Any CPU.ActiveCfg = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Beta|Any CPU.Build.0 = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Beta|x64.ActiveCfg = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Beta|x64.Build.0 = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Beta|x86.ActiveCfg = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Beta|x86.Build.0 = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Debug|Any CPU.ActiveCfg = Debug|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Debug|x64.ActiveCfg = Debug|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Debug|x64.Build.0 = Debug|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Debug|x86.ActiveCfg = Debug|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Release|Any CPU.ActiveCfg = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Release|x64.ActiveCfg = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Release|x64.Build.0 = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.Release|x86.ActiveCfg = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseCompile|Any CPU.ActiveCfg = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseCompile|Any CPU.Build.0 = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseCompile|x64.ActiveCfg = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseCompile|x64.Build.0 = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseCompile|x86.ActiveCfg = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseCompile|x86.Build.0 = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseLib_win32|Any CPU.ActiveCfg = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseLib_win32|Any CPU.Build.0 = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseLib_win32|x64.ActiveCfg = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseLib_win32|x64.Build.0 = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseLib_win32|x86.ActiveCfg = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseLib_win32|x86.Build.0 = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseLib|Any CPU.ActiveCfg = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseLib|Any CPU.Build.0 = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseLib|x64.ActiveCfg = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseLib|x64.Build.0 = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseLib|x86.ActiveCfg = Release|x64
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027}.ReleaseLib|x86.Build.0 = Release|x64
{B8719FD5-E8A6-4A36-943C-891D07F5DD21}.RelWithDebInfo|Any CPU.ActiveCfg = Debug-Dynamic|ARM
{B8719FD5-E8A6-4A36-943C-891D07F5DD21}.RelWithDebInfo|Any CPU.Build.0 = Debug-Dynamic|ARM
{B8719FD5-E8A6-4A36-943C-891D07F5DD21}.RelWithDebInfo|x64.ActiveCfg = Release-Dynamic|x64
{B8719FD5-E8A6-4A36-943C-891D07F5DD21}.RelWithDebInfo|x64.Build.0 = Release-Dynamic|x64
{B8719FD5-E8A6-4A36-943C-891D07F5DD21}.RelWithDebInfo|x86.ActiveCfg = Release-Dynamic|Win32
{B8719FD5-E8A6-4A36-943C-891D07F5DD21}.RelWithDebInfo|x86.Build.0 = Release-Dynamic|Win32
{E23F393D-035D-3A88-8335-96339271FFC2}.Beta|Any CPU.ActiveCfg = Release|Win32
{E23F393D-035D-3A88-8335-96339271FFC2}.Beta|x64.ActiveCfg = Release|x64
{E23F393D-035D-3A88-8335-96339271FFC2}.Beta|x64.Build.0 = Release|x64
{E23F393D-035D-3A88-8335-96339271FFC2}.Beta|x86.ActiveCfg = Release|Win32
{E23F393D-035D-3A88-8335-96339271FFC2}.Beta|x86.Build.0 = Release|Win32
{E23F393D-035D-3A88-8335-96339271FFC2}.Debug|Any CPU.ActiveCfg = Debug|Win32
{E23F393D-035D-3A88-8335-96339271FFC2}.Debug|x64.ActiveCfg = Debug|x64
{E23F393D-035D-3A88-8335-96339271FFC2}.Debug|x64.Build.0 = Debug|x64
{E23F393D-035D-3A88-8335-96339271FFC2}.Debug|x86.ActiveCfg = Debug|Win32
{E23F393D-035D-3A88-8335-96339271FFC2}.Debug|x86.Build.0 = Debug|Win32
{E23F393D-035D-3A88-8335-96339271FFC2}.MinSizeRel|Any CPU.ActiveCfg = MinSizeRel|x64
{E23F393D-035D-3A88-8335-96339271FFC2}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64
{E23F393D-035D-3A88-8335-96339271FFC2}.MinSizeRel|x64.Build.0 = MinSizeRel|x64
{E23F393D-035D-3A88-8335-96339271FFC2}.MinSizeRel|x86.ActiveCfg = MinSizeRel|x64
{E23F393D-035D-3A88-8335-96339271FFC2}.Release|Any CPU.ActiveCfg = Release|Win32
{E23F393D-035D-3A88-8335-96339271FFC2}.Release|x64.ActiveCfg = Release|x64
{E23F393D-035D-3A88-8335-96339271FFC2}.Release|x64.Build.0 = Release|x64
{E23F393D-035D-3A88-8335-96339271FFC2}.Release|x86.ActiveCfg = Release|Win32
{E23F393D-035D-3A88-8335-96339271FFC2}.Release|x86.Build.0 = Release|Win32
{E23F393D-035D-3A88-8335-96339271FFC2}.ReleaseCompile|Any CPU.ActiveCfg = Release|x64
{E23F393D-035D-3A88-8335-96339271FFC2}.ReleaseCompile|Any CPU.Build.0 = Release|x64
{E23F393D-035D-3A88-8335-96339271FFC2}.ReleaseCompile|x64.ActiveCfg = Release|x64
{E23F393D-035D-3A88-8335-96339271FFC2}.ReleaseCompile|x64.Build.0 = Release|x64
{E23F393D-035D-3A88-8335-96339271FFC2}.ReleaseCompile|x86.ActiveCfg = Release|Win32
{E23F393D-035D-3A88-8335-96339271FFC2}.ReleaseCompile|x86.Build.0 = Release|Win32
{E23F393D-035D-3A88-8335-96339271FFC2}.ReleaseLib_win32|Any CPU.ActiveCfg = Release|x64
{E23F393D-035D-3A88-8335-96339271FFC2}.ReleaseLib_win32|Any CPU.Build.0 = Release|x64
{E23F393D-035D-3A88-8335-96339271FFC2}.ReleaseLib_win32|x64.ActiveCfg = Release|x64
{E23F393D-035D-3A88-8335-96339271FFC2}.ReleaseLib_win32|x64.Build.0 = Release|x64
{E23F393D-035D-3A88-8335-96339271FFC2}.ReleaseLib_win32|x86.ActiveCfg = Release|Win32
{E23F393D-035D-3A88-8335-96339271FFC2}.ReleaseLib_win32|x86.Build.0 = Release|Win32
{E23F393D-035D-3A88-8335-96339271FFC2}.ReleaseLib|Any CPU.ActiveCfg = Release|x64
{E23F393D-035D-3A88-8335-96339271FFC2}.ReleaseLib|Any CPU.Build.0 = Release|x64
{E23F393D-035D-3A88-8335-96339271FFC2}.ReleaseLib|x64.ActiveCfg = Release|x64
{E23F393D-035D-3A88-8335-96339271FFC2}.ReleaseLib|x64.Build.0 = Release|x64
{E23F393D-035D-3A88-8335-96339271FFC2}.ReleaseLib|x86.ActiveCfg = Release|Win32
{E23F393D-035D-3A88-8335-96339271FFC2}.ReleaseLib|x86.Build.0 = Release|Win32
{E23F393D-035D-3A88-8335-96339271FFC2}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|x64
{E23F393D-035D-3A88-8335-96339271FFC2}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
{E23F393D-035D-3A88-8335-96339271FFC2}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
{E23F393D-035D-3A88-8335-96339271FFC2}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.Beta|Any CPU.ActiveCfg = RelWithDebInfo|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.Beta|Any CPU.Build.0 = RelWithDebInfo|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.Beta|x64.ActiveCfg = RelWithDebInfo|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.Beta|x64.Build.0 = RelWithDebInfo|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.Beta|x86.ActiveCfg = RelWithDebInfo|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.Beta|x86.Build.0 = RelWithDebInfo|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.Debug|Any CPU.ActiveCfg = Debug|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.Debug|x64.ActiveCfg = Debug|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.Debug|x64.Build.0 = Debug|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.Debug|x86.ActiveCfg = Debug|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.MinSizeRel|Any CPU.ActiveCfg = MinSizeRel|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.MinSizeRel|x64.Build.0 = MinSizeRel|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.MinSizeRel|x86.ActiveCfg = MinSizeRel|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.Release|Any CPU.ActiveCfg = Release|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.Release|x64.ActiveCfg = Release|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.Release|x64.Build.0 = Release|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.Release|x86.ActiveCfg = Release|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.ReleaseCompile|Any CPU.ActiveCfg = RelWithDebInfo|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.ReleaseCompile|Any CPU.Build.0 = RelWithDebInfo|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.ReleaseCompile|x64.ActiveCfg = Release|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.ReleaseCompile|x64.Build.0 = Release|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.ReleaseCompile|x86.ActiveCfg = RelWithDebInfo|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.ReleaseCompile|x86.Build.0 = RelWithDebInfo|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.ReleaseLib_win32|Any CPU.ActiveCfg = RelWithDebInfo|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.ReleaseLib_win32|Any CPU.Build.0 = RelWithDebInfo|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.ReleaseLib_win32|x64.ActiveCfg = Release|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.ReleaseLib_win32|x64.Build.0 = Release|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.ReleaseLib_win32|x86.ActiveCfg = RelWithDebInfo|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.ReleaseLib_win32|x86.Build.0 = RelWithDebInfo|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.ReleaseLib|Any CPU.ActiveCfg = RelWithDebInfo|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.ReleaseLib|Any CPU.Build.0 = RelWithDebInfo|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.ReleaseLib|x64.ActiveCfg = Release|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.ReleaseLib|x64.Build.0 = Release|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.ReleaseLib|x86.ActiveCfg = RelWithDebInfo|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.ReleaseLib|x86.Build.0 = RelWithDebInfo|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.RelWithDebInfo|Any CPU.ActiveCfg = RelWithDebInfo|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{1CA4822C-F599-3879-A78F-332D823E4871} = {B6752729-7398-46FA-9CF0-DC854C6AB8CA}
{774F1C61-6659-36E6-9519-17A753890576} = {31F92F98-3580-445D-A3DA-D081B427A562}
{2CFF20AA-9341-3564-A044-C38E70D5372A} = {31F92F98-3580-445D-A3DA-D081B427A562}
{8819D074-8F1F-3226-A611-F2E0BD9B6DBE} = {B6752729-7398-46FA-9CF0-DC854C6AB8CA}
{B39971A8-F247-31DE-8029-A90CE9549533} = {31F92F98-3580-445D-A3DA-D081B427A562}
{4295A40A-1D7D-3A99-AB29-0C144CAB27F1} = {31F92F98-3580-445D-A3DA-D081B427A562}
{DBBFBC55-1C20-4D21-AE3B-6E8B14C4FE48} = {1ECB5BD6-B3A0-4135-BA3F-48FC367B61C9}
{A5D9AA24-08ED-48B9-BD65-F0A25E96BFC4} = {14A77BA7-0E23-4D8F-A74F-5D5D5583035D}
{14A77BA7-0E23-4D8F-A74F-5D5D5583035D} = {B4FD804C-ABD9-4F54-858B-911F0119580C}
@ -627,8 +806,8 @@ Global
{4B5945CD-0CB3-49AA-A7FF-7612D93F82C0} = {14A77BA7-0E23-4D8F-A74F-5D5D5583035D}
{B8719FD5-E8A6-4A36-943C-891D07F5DD21} = {14A77BA7-0E23-4D8F-A74F-5D5D5583035D}
{B4FD804C-ABD9-4F54-858B-911F0119580C} = {B6752729-7398-46FA-9CF0-DC854C6AB8CA}
{711397CE-E5D5-467D-9457-8716C047E50C} = {B4FD804C-ABD9-4F54-858B-911F0119580C}
{A1BDC12C-5DF6-3E77-9793-AB9AB5C82027} = {1ECB5BD6-B3A0-4135-BA3F-48FC367B61C9}
{E23F393D-035D-3A88-8335-96339271FFC2} = {B4FD804C-ABD9-4F54-858B-911F0119580C}
{EC128C5F-DDC7-3828-98C8-B9CEAD61B131} = {1ECB5BD6-B3A0-4135-BA3F-48FC367B61C9}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {5C2901E8-26FE-444A-A80E-02AF8147CD34}

View file

@ -19,6 +19,8 @@ vs_where_path = os.path.join(
)
host_is_64bit = (False, True)[platform.machine().endswith('64')]
this_dir = os.path.dirname(os.path.realpath(__file__))
build_dir = this_dir + '\\build'
class QtVerison(Enum):
Major = 0
@ -50,6 +52,11 @@ def getLatestVSVersion():
else:
return
def getCMakeGenerator(vs_version):
if vs_version == '15':
return 'Visual Studio 15 2017 Win64'
else:
return 'Visual Studio ' + vs_version + ' 2019'
def findVSLatestDir():
args = [
@ -66,7 +73,6 @@ def findVSLatestDir():
else:
return
def getQtVersionNumber(qt_version, version_type):
version_list = qt_version.split('.')
return version_list[version_type.value]
@ -77,6 +83,18 @@ def findMSBuild():
if filename in files:
return os.path.join(root, filename)
def getMSBuildArgs(arch, config_str, configuration_type, toolset):
msbuild_args = [
'/nologo',
'/verbosity:minimal',
'/maxcpucount:' + str(multiprocessing.cpu_count()),
'/p:Platform=' + arch,
'/p:Configuration=' + config_str,
'/p:ConfigurationType=' + configuration_type,
'/p:useenv=true']
if (toolset != ''):
msbuild_args.append('/p:PlatformToolset=' + toolset)
return msbuild_args
def getVSEnv(arch='x64', platform='', version=''):
env_cmd = 'set path=%path:"=% && ' + \
@ -137,8 +155,19 @@ def deps(arch, toolset, qtver):
sys.exit(1)
print('Building qrcodelib')
build(arch, '', '', 'Release-Lib',
'\\qrencode-win32\\qrencode-win32\\vc8\\qrcodelib\\qrcodelib.vcxproj', qtver, False)
vs_env_vars = {}
vs_env_vars.update(getVSEnv())
msbuild = findMSBuild()
if not os.path.isfile(msbuild):
raise IOError('msbuild.exe not found. path=' + msbuild)
msbuild_args = getMSBuildArgs(arch, 'Release-Lib', 'StaticLibrary', toolset)
this_dir = os.path.dirname(os.path.realpath(__file__))
proj_path = this_dir + '\\qrencode-win32\\qrencode-win32\\vc8\\qrcodelib\\qrcodelib.vcxproj'
build_project(msbuild, msbuild_args, proj_path, vs_env_vars)
def build(arch, toolset, sdk_version, config_str, project_path_under_current_path, qtver, force_option=True):
@ -146,30 +175,56 @@ def build(arch, toolset, sdk_version, config_str, project_path_under_current_pat
configuration_type = 'StaticLibrary'
qt_minor_version = getQtVersionNumber(qtver, QtVerison.Minor)
qtFolderDir = 'msvc2017_64' if int(qt_minor_version) <= 14 else 'msvc2019_64'
vs_env_vars = {}
vs_env_vars.update(getVSEnv())
qmake_cmd = "C:\\Qt\\" + qtver + "\\" + qtFolderDir + "\\bin\\qmake.exe"
qt_dir = 'C:\\Qt\\' + qtver
cmake_gen = getCMakeGenerator(getLatestVSVersion())
qt_minor_version = getQtVersionNumber(qtver, QtVerison.Minor)
msvc_folder = '\\msvc2017_64' if int(qt_minor_version) <= 14 else '\\msvc2019_64'
qt_cmake_dir = qt_dir + msvc_folder + '\\lib\\cmake\\'
cmake_prefix_path = qt_dir + msvc_folder
cmake_options = [
'-DCMAKE_PREFIX_PATH=' + cmake_prefix_path,
'-DQt5_DIR=' + qt_cmake_dir + 'Qt5',
'-DQt5Core_DIR=' + qt_cmake_dir + 'Qt5Core',
'-DQt5Sql_DIR=' + qt_cmake_dir + 'Qt5Sql',
'-DQt5LinguistTools_DIR=' + qt_cmake_dir + 'Qt5LinguistTools',
'-DQt5Concurrent_DIR=' + qt_cmake_dir + 'Qt5Concurrent',
'-DQt5Gui_DIR=' + qt_cmake_dir + 'Qt5Gui',
'-DCMAKE_SYSTEM_VERSION=' + sdk_version
]
if not os.path.exists(build_dir):
os.makedirs(build_dir)
os.chdir(build_dir)
if (config_str == 'Release'):
print('Generating project using qmake ' + config_str + '|' + arch)
if(execute_cmd(qmake_cmd + " -tp vc jami-qt.pro -o jami-qt.vcxproj", False, vs_env_vars)):
print("Qmake vcxproj file generate error")
print('Generating project using cmake ' + config_str + '|' + arch)
cmd = ['cmake', '..', '-G', cmake_gen]
cmd.extend(cmake_options)
if(execute_cmd(cmd, False, vs_env_vars)):
print("Cmake vcxproj file generate error")
sys.exit(1)
configuration_type = 'Application'
elif (config_str == 'Beta'):
print('Generating project using qmake ' + config_str + '|' + arch)
if(execute_cmd(qmake_cmd + " -tp vc jami-qt.pro -o jami-qt.vcxproj CONFIG+=Beta", False, vs_env_vars)):
print("Beta: Qmake vcxproj file generate error")
print('Generating project using cmake ' + config_str + '|' + arch)
cmake_options.append('-DBETA=1')
cmd = ['cmake', '..', '-G', cmake_gen]
cmd.extend(cmake_options)
if(execute_cmd(cmd, False, vs_env_vars)):
print("Beta: Cmake vcxproj file generate error")
sys.exit(1)
config_str = 'Release'
configuration_type = 'Application'
elif (config_str == 'ReleaseCompile'):
print('Generating project using qmake ' + config_str + '|' + arch)
if(execute_cmd(qmake_cmd + " -tp vc jami-qt.pro -o jami-qt.vcxproj CONFIG+=ReleaseCompile", False, vs_env_vars)):
print("ReleaseCompile: Qmake vcxproj file generate error")
cmake_options.append('-DReleaseCompile=1')
cmd = ['cmake', '..', '-G', cmake_gen]
cmd.extend(cmake_options)
if(execute_cmd(cmd, False, vs_env_vars)):
print("ReleaseCompile: Cmake vcxproj file generate error")
sys.exit(1)
config_str = 'Release'
@ -177,22 +232,13 @@ def build(arch, toolset, sdk_version, config_str, project_path_under_current_pat
# but will be outputted into x64/Beta folder (for Beta Only)
print('Building projects in ' + config_str + '|' + arch)
this_dir = os.path.dirname(os.path.realpath(__file__))
qt_client_proj_path = this_dir + project_path_under_current_path
qt_client_proj_path = build_dir + project_path_under_current_path
msbuild = findMSBuild()
if not os.path.isfile(msbuild):
raise IOError('msbuild.exe not found. path=' + msbuild)
msbuild_args = [
'/nologo',
'/verbosity:minimal',
'/maxcpucount:' + str(multiprocessing.cpu_count()),
'/p:Platform=' + arch,
'/p:Configuration=' + config_str,
'/p:ConfigurationType=' + configuration_type,
'/p:useenv=true']
if (toolset != ''):
msbuild_args.append('/p:PlatformToolset=' + toolset)
msbuild_args = getMSBuildArgs(arch, config_str, configuration_type, toolset)
if (force_option):
# force toolset
replace_vs_prop(qt_client_proj_path,

View file

@ -43,7 +43,7 @@ public:
*/
QPair<QrType, QString> getIndexFromID(const QString& id)
{
auto list = id.split('_', QString::SplitBehavior::SkipEmptyParts);
auto list = id.split('_', Qt::SkipEmptyParts);
if (list.size() < 2)
return {QrType::Account, ""};
if (list.contains("account") && list.size() > 1) {

View file

@ -298,7 +298,7 @@ SmartListModel::getConversationItemData(const conversation::Info& item,
case Role::LastInteractionDate: {
if (!item.interactions.empty()) {
auto& date = item.interactions.at(item.lastMessageUid).timestamp;
return QVariant(QString::fromStdString(Utils::formatTimeString(date)));
return QVariant(Utils::formatTimeString(date));
}
return QVariant("");
}

View file

@ -40,7 +40,7 @@ public:
QColor tintedColor;
auto list = id.split('+', QString::SkipEmptyParts);
auto list = id.split('+', Qt::SkipEmptyParts);
if (list.size() == 2) {
QPixmap pixmapToSend(":/images/icons/" + list[0]);

View file

@ -36,7 +36,7 @@
#include <QPainter>
#include <QPropertyAnimation>
#include <QScreen>
#include <QStackedWidget>
#include <QDateTime>
#include <QSvgRenderer>
#include <QTranslator>
#include <QtConcurrent/QtConcurrent>
@ -496,21 +496,16 @@ Utils::profileType(const lrc::api::conversation::Info& conv,
}
}
// TODO: use Qt for this
std::string
Utils::formatTimeString(const std::time_t& timestamp)
QString
Utils::formatTimeString(const std::time_t& timeStamp)
{
std::time_t now = std::time(nullptr);
char interactionDay[64];
char nowDay[64];
std::strftime(interactionDay, sizeof(interactionDay), "%D", std::localtime(&timestamp));
std::strftime(nowDay, sizeof(nowDay), "%D", std::localtime(&now));
if (std::string(interactionDay) == std::string(nowDay)) {
char interactionTime[64];
std::strftime(interactionTime, sizeof(interactionTime), "%R", std::localtime(&timestamp));
return interactionTime;
auto currentTimeStamp = QDateTime::fromSecsSinceEpoch(timeStamp);
auto now = QDateTime::currentDateTime();
auto timeStampDMY = currentTimeStamp.toString("dd/MM/yyyy");
if (timeStampDMY == now.toString("dd/MM/yyyy")) {
return currentTimeStamp.toString("hh:mm");
} else {
return interactionDay;
return timeStampDMY;
}
}

View file

@ -74,7 +74,7 @@ void removeOldVersions();
// LRC helpers
lrc::api::profile::Type profileType(const lrc::api::conversation::Info& conv,
const lrc::api::ConversationModel& model);
std::string formatTimeString(const std::time_t& timestamp);
QString formatTimeString(const std::time_t& timeStamp);
bool isInteractionGenerated(const lrc::api::interaction::Type& interaction);
bool isContactValid(const QString& contactUid, const lrc::api::ConversationModel& model);
bool getReplyMessageBox(QWidget* widget, const QString& title, const QString& text);