diff --git a/.gitignore b/.gitignore index baa5290152..14f0e1a5d2 100644 --- a/.gitignore +++ b/.gitignore @@ -43,6 +43,7 @@ stage /snap/plugins/__pycache__ /Telegram/*.user.* +*.txt.user *.pro.user /Linux/ /Telegram/Makefile diff --git a/CMakeLists.txt b/CMakeLists.txt index ce6a193a45..e7df6ae72e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,6 +20,7 @@ project(Telegram ) include(cmake/nice_target_sources.cmake) +include(cmake/target_link_static_libraries.cmake) include(cmake/target_link_frameworks.cmake) include(cmake/init_target.cmake) include(cmake/generate_target.cmake) diff --git a/Telegram/CMakeLists.txt b/Telegram/CMakeLists.txt index 8562205243..a052fd8a15 100644 --- a/Telegram/CMakeLists.txt +++ b/Telegram/CMakeLists.txt @@ -79,10 +79,10 @@ PRIVATE desktop-app::lib_ffmpeg desktop-app::external_lz4 desktop-app::external_rlottie + desktop-app::external_zlib desktop-app::external_qt desktop-app::external_auto_updates desktop-app::external_openssl - desktop-app::external_zlib desktop-app::external_opus desktop-app::external_openal ) @@ -91,7 +91,8 @@ if (NOT DESKTOP_APP_DISABLE_CRASH_REPORTS) target_link_libraries(Telegram PRIVATE desktop-app::external_crash_reports) endif() -set(telegram_sources +target_precompile_headers(Telegram PRIVATE ${src_loc}/stdafx.h) +nice_target_sources(Telegram ${src_loc} PRIVATE ${style_files} @@ -931,9 +932,8 @@ PRIVATE settings.cpp settings.h ) -nice_target_sources(Telegram ${src_loc} "${telegram_sources}") -set(telegram_resources +nice_target_sources(Telegram ${res_loc} PRIVATE qrc/emoji_1.qrc qrc/emoji_2.qrc @@ -948,9 +948,6 @@ PRIVATE langs/lang.strings numbers.txt ) -nice_target_sources(Telegram ${res_loc} "${telegram_resources}") - -target_precompile_headers(Telegram PRIVATE ${src_loc}/stdafx.h) if (WIN32) # message(${CMAKE_GENERATOR}) @@ -1009,6 +1006,34 @@ elseif (APPLE) ) endif() endif() +elseif (LINUX) + find_package(PkgConfig REQUIRED) + + pkg_check_modules(GTK2 REQUIRED gtk+-2.0) + target_include_directories(Telegram PRIVATE ${GTK2_INCLUDE_DIRS}) + target_compile_options(Telegram PRIVATE -Wno-register) + + set(appindicator_packages + ayatana-appindicator3-0.1 + ayatana-appindicator-0.1 + appindicator3-0.1 + appindicator-0.1 + ) + set(appindicator_found 0) + foreach (package ${appindicator_packages}) + pkg_check_modules(APPIND_${package} ${package}) + if (APPIND_${package}_FOUND) + set(appindicator_found 1) + target_include_directories(Telegram PRIVATE "${APPIND_${package}_INCLUDE_DIRS}") + if (${package} MATCHES "ayatana") + target_compile_definitions(Telegram PRIVATE TDESKTOP_USE_AYATANA_INDICATORS) + endif() + break() + endif() + endforeach() + if (NOT ${appindicator_found}) + message(FATAL_ERROR "No libappindicator found by pkg-config.") + endif() endif() if (build_macstore) @@ -1081,7 +1106,13 @@ if (disable_autoupdate) ) endif() -set_target_properties(Telegram PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") +if (${CMAKE_GENERATOR} MATCHES "(Visual Studio|Xcode|Ninja)") + set(output_folder ${CMAKE_BINARY_DIR}) +else() + set(output_folder ${CMAKE_BINARY_DIR}/$,Debug,Release>) +endif() + +set_target_properties(Telegram PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${output_folder}) if (NOT build_macstore AND NOT build_winstore) add_executable(Updater WIN32) @@ -1089,14 +1120,13 @@ if (NOT build_macstore AND NOT build_winstore) add_dependencies(Telegram Updater) - set(updater_sources + nice_target_sources(Updater ${src_loc} PRIVATE _other/updater_win.cpp _other/updater_linux.cpp _other/updater_osx.m _other/updater.h ) - nice_target_sources(Updater ${src_loc} "${updater_sources}") - set_target_properties(Updater PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") + set_target_properties(Updater PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${output_folder}) endif() diff --git a/Telegram/cmake/generate_lang.cmake b/Telegram/cmake/generate_lang.cmake index 6ced061eb6..0a13cd3112 100644 --- a/Telegram/cmake/generate_lang.cmake +++ b/Telegram/cmake/generate_lang.cmake @@ -8,17 +8,17 @@ function(generate_lang target_name lang_file) set(gen_dst ${CMAKE_CURRENT_BINARY_DIR}/gen) file(MAKE_DIRECTORY ${gen_dst}) - set(generated_files + set(gen_timestamp ${gen_dst}/lang_auto.timestamp) + set(gen_files ${gen_dst}/lang_auto.cpp ${gen_dst}/lang_auto.h - ${gen_dst}/lang_auto.timestamp ) + add_custom_command( OUTPUT - ${gen_dst}/lang_auto.timestamp + ${gen_timestamp} BYPRODUCTS - ${gen_dst}/lang_auto.cpp - ${gen_dst}/lang_auto.h + ${gen_files} COMMAND codegen_lang -o${gen_dst} @@ -28,5 +28,5 @@ function(generate_lang target_name lang_file) codegen_lang ${lang_file} ) - generate_target(${target_name} lang "${generated_files}" ${gen_dst}) + generate_target(${target_name} lang ${gen_timestamp} "${gen_files}" ${gen_dst}) endfunction() diff --git a/Telegram/cmake/generate_numbers.cmake b/Telegram/cmake/generate_numbers.cmake index 00cdeed240..d6028880ce 100644 --- a/Telegram/cmake/generate_numbers.cmake +++ b/Telegram/cmake/generate_numbers.cmake @@ -8,17 +8,17 @@ function(generate_numbers target_name numbers_file) set(gen_dst ${CMAKE_CURRENT_BINARY_DIR}/gen) file(MAKE_DIRECTORY ${gen_dst}) - set(generated_files + set(gen_timestamp ${gen_dst}/numbers.timestamp) + set(gen_files ${gen_dst}/numbers.cpp ${gen_dst}/numbers.h - ${gen_dst}/numbers.timestamp ) + add_custom_command( OUTPUT - ${gen_dst}/numbers.timestamp + ${gen_timestamp} BYPRODUCTS - ${gen_dst}/numbers.cpp - ${gen_dst}/numbers.h + ${gen_files} COMMAND codegen_numbers -o${gen_dst} @@ -28,5 +28,5 @@ function(generate_numbers target_name numbers_file) codegen_numbers ${numbers_file} ) - generate_target(${target_name} numbers "${generated_files}" ${gen_dst}) + generate_target(${target_name} numbers ${gen_timestamp} "${gen_files}" ${gen_dst}) endfunction() diff --git a/Telegram/cmake/generate_scheme.cmake b/Telegram/cmake/generate_scheme.cmake index 2084abac82..4a47ef000b 100644 --- a/Telegram/cmake/generate_scheme.cmake +++ b/Telegram/cmake/generate_scheme.cmake @@ -8,17 +8,17 @@ function(generate_scheme target_name script scheme_files) set(gen_dst ${CMAKE_CURRENT_BINARY_DIR}/gen) file(MAKE_DIRECTORY ${gen_dst}) - set(generated_files + set(gen_timestamp ${gen_dst}/scheme.timestamp) + set(gen_files ${gen_dst}/scheme.cpp ${gen_dst}/scheme.h - ${gen_dst}/scheme.timestamp ) + add_custom_command( OUTPUT - ${gen_dst}/scheme.timestamp + ${gen_timestamp} BYPRODUCTS - ${gen_dst}/scheme.cpp - ${gen_dst}/scheme.h + ${gen_files} COMMAND python ${script} @@ -30,5 +30,5 @@ function(generate_scheme target_name script scheme_files) ${submodules_loc}/lib_tl/tl/generate_tl.py ${scheme_files} ) - generate_target(${target_name} scheme "${generated_files}" ${gen_dst}) + generate_target(${target_name} scheme ${gen_timestamp} "${gen_files}" ${gen_dst}) endfunction() diff --git a/Telegram/cmake/lib_export.cmake b/Telegram/cmake/lib_export.cmake index 1903d20456..ef312a0a51 100644 --- a/Telegram/cmake/lib_export.cmake +++ b/Telegram/cmake/lib_export.cmake @@ -8,7 +8,8 @@ add_library(lib_export OBJECT) init_target(lib_export) add_library(tdesktop::lib_export ALIAS lib_export) -set(lib_export_sources +target_precompile_headers(lib_export PRIVATE ${src_loc}/export/export_pch.h) +nice_target_sources(lib_export ${src_loc} PRIVATE export/export_api_wrap.cpp export/export_api_wrap.h @@ -32,9 +33,6 @@ PRIVATE export/output/export_output_text.cpp export/output/export_output_text.h ) -nice_target_sources(lib_export ${src_loc} "${lib_export_sources}") - -target_precompile_headers(lib_export PRIVATE ${src_loc}/export/export_pch.h) target_include_directories(lib_export PUBLIC diff --git a/Telegram/cmake/lib_ffmpeg.cmake b/Telegram/cmake/lib_ffmpeg.cmake index fc1a415907..596b3b29c4 100644 --- a/Telegram/cmake/lib_ffmpeg.cmake +++ b/Telegram/cmake/lib_ffmpeg.cmake @@ -8,27 +8,19 @@ add_library(lib_ffmpeg OBJECT) add_library(desktop-app::lib_ffmpeg ALIAS lib_ffmpeg) init_target(lib_ffmpeg) -set(lib_ffmpeg_sources +nice_target_sources(lib_ffmpeg ${src_loc} PRIVATE ffmpeg/ffmpeg_utility.cpp ffmpeg/ffmpeg_utility.h ) -nice_target_sources(lib_ffmpeg ${src_loc} "${lib_ffmpeg_sources}") target_include_directories(lib_ffmpeg PUBLIC ${src_loc} - ${libs_loc}/ffmpeg ) -set(ffmpeg_lib_loc ${libs_loc}/ffmpeg) - target_link_libraries(lib_ffmpeg PUBLIC desktop-app::lib_base - ${ffmpeg_lib_loc}/libavformat/libavformat.a - ${ffmpeg_lib_loc}/libavcodec/libavcodec.a - ${ffmpeg_lib_loc}/libavutil/libavutil.a - ${ffmpeg_lib_loc}/libswresample/libswresample.a - ${ffmpeg_lib_loc}/libswscale/libswscale.a + desktop-app::external_ffmpeg ) diff --git a/Telegram/cmake/lib_mtproto.cmake b/Telegram/cmake/lib_mtproto.cmake index bcd687b27f..c0ffc8b831 100644 --- a/Telegram/cmake/lib_mtproto.cmake +++ b/Telegram/cmake/lib_mtproto.cmake @@ -8,7 +8,8 @@ add_library(lib_mtproto OBJECT) init_target(lib_mtproto) add_library(tdesktop::lib_mtproto ALIAS lib_mtproto) -set(lib_mtproto_sources +target_precompile_headers(lib_mtproto PRIVATE ${src_loc}/mtproto/mtp_pch.h) +nice_target_sources(lib_mtproto ${src_loc} PRIVATE mtproto/mtp_abstract_socket.cpp mtproto/mtp_abstract_socket.h @@ -17,9 +18,6 @@ PRIVATE mtproto/mtp_tls_socket.cpp mtproto/mtp_tls_socket.h ) -nice_target_sources(lib_mtproto ${src_loc} "${lib_mtproto_sources}") - -target_precompile_headers(lib_mtproto PRIVATE ${src_loc}/mtproto/mtp_pch.h) target_include_directories(lib_mtproto PUBLIC diff --git a/Telegram/cmake/lib_tgvoip.cmake b/Telegram/cmake/lib_tgvoip.cmake index 962b1b3364..f6e82ecced 100644 --- a/Telegram/cmake/lib_tgvoip.cmake +++ b/Telegram/cmake/lib_tgvoip.cmake @@ -5,12 +5,12 @@ # https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL add_library(lib_tgvoip STATIC) -init_target(lib_tgvoip cxx_std_11) +init_target(lib_tgvoip) add_library(tdesktop::lib_tgvoip ALIAS lib_tgvoip) set(tgvoip_loc ${third_party_loc}/libtgvoip) -set(lib_tgvoip_sources +nice_target_sources(lib_tgvoip ${tgvoip_loc} PRIVATE BlockingQueue.cpp BlockingQueue.h @@ -710,10 +710,8 @@ PRIVATE # webrtc_dsp/common_audio/signal_processing/filter_ar_fast_q12_armv7.S ) -nice_target_sources(lib_tgvoip ${tgvoip_loc} "${lib_tgvoip_sources}") - target_compile_definitions(lib_tgvoip -PRIVATE +PUBLIC WEBRTC_APM_DEBUG_DUMP=0 TGVOIP_USE_DESKTOP_DSP WEBRTC_NS_FLOAT @@ -726,12 +724,12 @@ if (WIN32) /wd4244 # conversion from 'int' to 'float', possible loss of data (several in webrtc) ) target_compile_definitions(lib_tgvoip - PRIVATE + PUBLIC WEBRTC_WIN ) elseif (APPLE) target_compile_definitions(lib_tgvoip - PRIVATE + PUBLIC WEBRTC_POSIX WEBRTC_MAC TARGET_OS_OSX @@ -739,13 +737,22 @@ elseif (APPLE) ) if (build_macstore) target_compile_definitions(lib_tgvoip - PRIVATE + PUBLIC TGVOIP_NO_OSX_PRIVATE_API ) endif() else() - target_compile_definitions(lib_tgvoip + target_compile_options(lib_tgvoip PRIVATE + -Wno-unknown-pragmas + -Wno-error=sequence-point + -Wno-error=unused-result + ) + if (build_linux32) + target_compile_options(lib_tgvoip PRIVATE -msse2) + endif() + target_compile_definitions(lib_tgvoip + PUBLIC WEBRTC_POSIX WEBRTC_LINUX ) diff --git a/Telegram/codegen b/Telegram/codegen index bbb6f6a2a7..ee55a0b69f 160000 --- a/Telegram/codegen +++ b/Telegram/codegen @@ -1 +1 @@ -Subproject commit bbb6f6a2a7913cca35685e78de168ae0a3ec0b09 +Subproject commit ee55a0b69f65622fe25487745e5537ebcffd8372 diff --git a/Telegram/lib_base b/Telegram/lib_base index d245266b2e..3c7b504dd4 160000 --- a/Telegram/lib_base +++ b/Telegram/lib_base @@ -1 +1 @@ -Subproject commit d245266b2e4b8251eeadf01b13d6b256290ae7e6 +Subproject commit 3c7b504dd46868345c00d642b4f9eb40f6da2d52 diff --git a/Telegram/lib_crl b/Telegram/lib_crl index 7ef466b21c..5a740bf0b7 160000 --- a/Telegram/lib_crl +++ b/Telegram/lib_crl @@ -1 +1 @@ -Subproject commit 7ef466b21c4116eb6e3447403d5c4665dd5264e7 +Subproject commit 5a740bf0b7fe8f1f9a7f3e0878d5238f56502da1 diff --git a/Telegram/lib_lottie b/Telegram/lib_lottie index 38bca2d3f2..133364fc6c 160000 --- a/Telegram/lib_lottie +++ b/Telegram/lib_lottie @@ -1 +1 @@ -Subproject commit 38bca2d3f2bbf7c4a3c39f744490eb9fb869138c +Subproject commit 133364fc6ca6b81cee6bce55acce108c9e78c576 diff --git a/Telegram/lib_rpl b/Telegram/lib_rpl index 370de851fe..bd850834fc 160000 --- a/Telegram/lib_rpl +++ b/Telegram/lib_rpl @@ -1 +1 @@ -Subproject commit 370de851feff5612954189deb16a2154d6d1ef2d +Subproject commit bd850834fc9ba6c62784306b65506ab19d64ab89 diff --git a/Telegram/lib_spellcheck b/Telegram/lib_spellcheck index 62e220b9f1..3bda79beef 160000 --- a/Telegram/lib_spellcheck +++ b/Telegram/lib_spellcheck @@ -1 +1 @@ -Subproject commit 62e220b9f142b64071fd21d64bdbccf665acc2fd +Subproject commit 3bda79beefaa7f8237f832a1ff1da3eba08059e7 diff --git a/Telegram/lib_storage b/Telegram/lib_storage index aee02d865b..529559508a 160000 --- a/Telegram/lib_storage +++ b/Telegram/lib_storage @@ -1 +1 @@ -Subproject commit aee02d865b67cfc2215d2e3f7e21be9e1f723376 +Subproject commit 529559508ab729451b034414e3d4a080ab6f2b78 diff --git a/Telegram/lib_tl b/Telegram/lib_tl index 18cde5931f..52a9c9f58f 160000 --- a/Telegram/lib_tl +++ b/Telegram/lib_tl @@ -1 +1 @@ -Subproject commit 18cde5931f09a82a142bc39a4af5ae4cfad74b94 +Subproject commit 52a9c9f58ff4b22cb68f739ce85e187069f408ab diff --git a/Telegram/lib_ui b/Telegram/lib_ui index 1c19e874bb..fcb44b320c 160000 --- a/Telegram/lib_ui +++ b/Telegram/lib_ui @@ -1 +1 @@ -Subproject commit 1c19e874bbeddded6b729bd37aa6da1c872eb206 +Subproject commit fcb44b320c008b21f9e168149a3ac72f68530b4c diff --git a/cmake b/cmake index 382380d513..af968dc8ea 160000 --- a/cmake +++ b/cmake @@ -1 +1 @@ -Subproject commit 382380d513af1b80c3ab22de8863da9906a47e59 +Subproject commit af968dc8eab6bde381ad62ef6a516bdfccb7d038