Initial Linux build.

This commit is contained in:
John Preston 2019-12-03 19:11:03 +03:00
parent 01ecd73a62
commit 619dbe9b11
20 changed files with 93 additions and 66 deletions

1
.gitignore vendored
View File

@ -43,6 +43,7 @@ stage
/snap/plugins/__pycache__ /snap/plugins/__pycache__
/Telegram/*.user.* /Telegram/*.user.*
*.txt.user
*.pro.user *.pro.user
/Linux/ /Linux/
/Telegram/Makefile /Telegram/Makefile

View File

@ -20,6 +20,7 @@ project(Telegram
) )
include(cmake/nice_target_sources.cmake) include(cmake/nice_target_sources.cmake)
include(cmake/target_link_static_libraries.cmake)
include(cmake/target_link_frameworks.cmake) include(cmake/target_link_frameworks.cmake)
include(cmake/init_target.cmake) include(cmake/init_target.cmake)
include(cmake/generate_target.cmake) include(cmake/generate_target.cmake)

View File

@ -79,10 +79,10 @@ PRIVATE
desktop-app::lib_ffmpeg desktop-app::lib_ffmpeg
desktop-app::external_lz4 desktop-app::external_lz4
desktop-app::external_rlottie desktop-app::external_rlottie
desktop-app::external_zlib
desktop-app::external_qt desktop-app::external_qt
desktop-app::external_auto_updates desktop-app::external_auto_updates
desktop-app::external_openssl desktop-app::external_openssl
desktop-app::external_zlib
desktop-app::external_opus desktop-app::external_opus
desktop-app::external_openal 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) target_link_libraries(Telegram PRIVATE desktop-app::external_crash_reports)
endif() endif()
set(telegram_sources target_precompile_headers(Telegram PRIVATE ${src_loc}/stdafx.h)
nice_target_sources(Telegram ${src_loc}
PRIVATE PRIVATE
${style_files} ${style_files}
@ -931,9 +932,8 @@ PRIVATE
settings.cpp settings.cpp
settings.h settings.h
) )
nice_target_sources(Telegram ${src_loc} "${telegram_sources}")
set(telegram_resources nice_target_sources(Telegram ${res_loc}
PRIVATE PRIVATE
qrc/emoji_1.qrc qrc/emoji_1.qrc
qrc/emoji_2.qrc qrc/emoji_2.qrc
@ -948,9 +948,6 @@ PRIVATE
langs/lang.strings langs/lang.strings
numbers.txt numbers.txt
) )
nice_target_sources(Telegram ${res_loc} "${telegram_resources}")
target_precompile_headers(Telegram PRIVATE ${src_loc}/stdafx.h)
if (WIN32) if (WIN32)
# message(${CMAKE_GENERATOR}) # message(${CMAKE_GENERATOR})
@ -1009,6 +1006,34 @@ elseif (APPLE)
) )
endif() endif()
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() endif()
if (build_macstore) if (build_macstore)
@ -1081,7 +1106,13 @@ if (disable_autoupdate)
) )
endif() 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}/$<IF:$<CONFIG:Debug>,Debug,Release>)
endif()
set_target_properties(Telegram PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${output_folder})
if (NOT build_macstore AND NOT build_winstore) if (NOT build_macstore AND NOT build_winstore)
add_executable(Updater WIN32) add_executable(Updater WIN32)
@ -1089,14 +1120,13 @@ if (NOT build_macstore AND NOT build_winstore)
add_dependencies(Telegram Updater) add_dependencies(Telegram Updater)
set(updater_sources nice_target_sources(Updater ${src_loc}
PRIVATE PRIVATE
_other/updater_win.cpp _other/updater_win.cpp
_other/updater_linux.cpp _other/updater_linux.cpp
_other/updater_osx.m _other/updater_osx.m
_other/updater.h _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() endif()

View File

@ -8,17 +8,17 @@ function(generate_lang target_name lang_file)
set(gen_dst ${CMAKE_CURRENT_BINARY_DIR}/gen) set(gen_dst ${CMAKE_CURRENT_BINARY_DIR}/gen)
file(MAKE_DIRECTORY ${gen_dst}) 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.cpp
${gen_dst}/lang_auto.h ${gen_dst}/lang_auto.h
${gen_dst}/lang_auto.timestamp
) )
add_custom_command( add_custom_command(
OUTPUT OUTPUT
${gen_dst}/lang_auto.timestamp ${gen_timestamp}
BYPRODUCTS BYPRODUCTS
${gen_dst}/lang_auto.cpp ${gen_files}
${gen_dst}/lang_auto.h
COMMAND COMMAND
codegen_lang codegen_lang
-o${gen_dst} -o${gen_dst}
@ -28,5 +28,5 @@ function(generate_lang target_name lang_file)
codegen_lang codegen_lang
${lang_file} ${lang_file}
) )
generate_target(${target_name} lang "${generated_files}" ${gen_dst}) generate_target(${target_name} lang ${gen_timestamp} "${gen_files}" ${gen_dst})
endfunction() endfunction()

View File

@ -8,17 +8,17 @@ function(generate_numbers target_name numbers_file)
set(gen_dst ${CMAKE_CURRENT_BINARY_DIR}/gen) set(gen_dst ${CMAKE_CURRENT_BINARY_DIR}/gen)
file(MAKE_DIRECTORY ${gen_dst}) 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.cpp
${gen_dst}/numbers.h ${gen_dst}/numbers.h
${gen_dst}/numbers.timestamp
) )
add_custom_command( add_custom_command(
OUTPUT OUTPUT
${gen_dst}/numbers.timestamp ${gen_timestamp}
BYPRODUCTS BYPRODUCTS
${gen_dst}/numbers.cpp ${gen_files}
${gen_dst}/numbers.h
COMMAND COMMAND
codegen_numbers codegen_numbers
-o${gen_dst} -o${gen_dst}
@ -28,5 +28,5 @@ function(generate_numbers target_name numbers_file)
codegen_numbers codegen_numbers
${numbers_file} ${numbers_file}
) )
generate_target(${target_name} numbers "${generated_files}" ${gen_dst}) generate_target(${target_name} numbers ${gen_timestamp} "${gen_files}" ${gen_dst})
endfunction() endfunction()

View File

@ -8,17 +8,17 @@ function(generate_scheme target_name script scheme_files)
set(gen_dst ${CMAKE_CURRENT_BINARY_DIR}/gen) set(gen_dst ${CMAKE_CURRENT_BINARY_DIR}/gen)
file(MAKE_DIRECTORY ${gen_dst}) 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.cpp
${gen_dst}/scheme.h ${gen_dst}/scheme.h
${gen_dst}/scheme.timestamp
) )
add_custom_command( add_custom_command(
OUTPUT OUTPUT
${gen_dst}/scheme.timestamp ${gen_timestamp}
BYPRODUCTS BYPRODUCTS
${gen_dst}/scheme.cpp ${gen_files}
${gen_dst}/scheme.h
COMMAND COMMAND
python python
${script} ${script}
@ -30,5 +30,5 @@ function(generate_scheme target_name script scheme_files)
${submodules_loc}/lib_tl/tl/generate_tl.py ${submodules_loc}/lib_tl/tl/generate_tl.py
${scheme_files} ${scheme_files}
) )
generate_target(${target_name} scheme "${generated_files}" ${gen_dst}) generate_target(${target_name} scheme ${gen_timestamp} "${gen_files}" ${gen_dst})
endfunction() endfunction()

View File

@ -8,7 +8,8 @@ add_library(lib_export OBJECT)
init_target(lib_export) init_target(lib_export)
add_library(tdesktop::lib_export ALIAS 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 PRIVATE
export/export_api_wrap.cpp export/export_api_wrap.cpp
export/export_api_wrap.h export/export_api_wrap.h
@ -32,9 +33,6 @@ PRIVATE
export/output/export_output_text.cpp export/output/export_output_text.cpp
export/output/export_output_text.h 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 target_include_directories(lib_export
PUBLIC PUBLIC

View File

@ -8,27 +8,19 @@ add_library(lib_ffmpeg OBJECT)
add_library(desktop-app::lib_ffmpeg ALIAS lib_ffmpeg) add_library(desktop-app::lib_ffmpeg ALIAS lib_ffmpeg)
init_target(lib_ffmpeg) init_target(lib_ffmpeg)
set(lib_ffmpeg_sources nice_target_sources(lib_ffmpeg ${src_loc}
PRIVATE PRIVATE
ffmpeg/ffmpeg_utility.cpp ffmpeg/ffmpeg_utility.cpp
ffmpeg/ffmpeg_utility.h ffmpeg/ffmpeg_utility.h
) )
nice_target_sources(lib_ffmpeg ${src_loc} "${lib_ffmpeg_sources}")
target_include_directories(lib_ffmpeg target_include_directories(lib_ffmpeg
PUBLIC PUBLIC
${src_loc} ${src_loc}
${libs_loc}/ffmpeg
) )
set(ffmpeg_lib_loc ${libs_loc}/ffmpeg)
target_link_libraries(lib_ffmpeg target_link_libraries(lib_ffmpeg
PUBLIC PUBLIC
desktop-app::lib_base desktop-app::lib_base
${ffmpeg_lib_loc}/libavformat/libavformat.a desktop-app::external_ffmpeg
${ffmpeg_lib_loc}/libavcodec/libavcodec.a
${ffmpeg_lib_loc}/libavutil/libavutil.a
${ffmpeg_lib_loc}/libswresample/libswresample.a
${ffmpeg_lib_loc}/libswscale/libswscale.a
) )

View File

@ -8,7 +8,8 @@ add_library(lib_mtproto OBJECT)
init_target(lib_mtproto) init_target(lib_mtproto)
add_library(tdesktop::lib_mtproto ALIAS 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 PRIVATE
mtproto/mtp_abstract_socket.cpp mtproto/mtp_abstract_socket.cpp
mtproto/mtp_abstract_socket.h mtproto/mtp_abstract_socket.h
@ -17,9 +18,6 @@ PRIVATE
mtproto/mtp_tls_socket.cpp mtproto/mtp_tls_socket.cpp
mtproto/mtp_tls_socket.h 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 target_include_directories(lib_mtproto
PUBLIC PUBLIC

View File

@ -5,12 +5,12 @@
# https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL # https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
add_library(lib_tgvoip STATIC) add_library(lib_tgvoip STATIC)
init_target(lib_tgvoip cxx_std_11) init_target(lib_tgvoip)
add_library(tdesktop::lib_tgvoip ALIAS lib_tgvoip) add_library(tdesktop::lib_tgvoip ALIAS lib_tgvoip)
set(tgvoip_loc ${third_party_loc}/libtgvoip) set(tgvoip_loc ${third_party_loc}/libtgvoip)
set(lib_tgvoip_sources nice_target_sources(lib_tgvoip ${tgvoip_loc}
PRIVATE PRIVATE
BlockingQueue.cpp BlockingQueue.cpp
BlockingQueue.h BlockingQueue.h
@ -710,10 +710,8 @@ PRIVATE
# webrtc_dsp/common_audio/signal_processing/filter_ar_fast_q12_armv7.S # 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 target_compile_definitions(lib_tgvoip
PRIVATE PUBLIC
WEBRTC_APM_DEBUG_DUMP=0 WEBRTC_APM_DEBUG_DUMP=0
TGVOIP_USE_DESKTOP_DSP TGVOIP_USE_DESKTOP_DSP
WEBRTC_NS_FLOAT WEBRTC_NS_FLOAT
@ -726,12 +724,12 @@ if (WIN32)
/wd4244 # conversion from 'int' to 'float', possible loss of data (several in webrtc) /wd4244 # conversion from 'int' to 'float', possible loss of data (several in webrtc)
) )
target_compile_definitions(lib_tgvoip target_compile_definitions(lib_tgvoip
PRIVATE PUBLIC
WEBRTC_WIN WEBRTC_WIN
) )
elseif (APPLE) elseif (APPLE)
target_compile_definitions(lib_tgvoip target_compile_definitions(lib_tgvoip
PRIVATE PUBLIC
WEBRTC_POSIX WEBRTC_POSIX
WEBRTC_MAC WEBRTC_MAC
TARGET_OS_OSX TARGET_OS_OSX
@ -739,13 +737,22 @@ elseif (APPLE)
) )
if (build_macstore) if (build_macstore)
target_compile_definitions(lib_tgvoip target_compile_definitions(lib_tgvoip
PRIVATE PUBLIC
TGVOIP_NO_OSX_PRIVATE_API TGVOIP_NO_OSX_PRIVATE_API
) )
endif() endif()
else() else()
target_compile_definitions(lib_tgvoip target_compile_options(lib_tgvoip
PRIVATE 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_POSIX
WEBRTC_LINUX WEBRTC_LINUX
) )

@ -1 +1 @@
Subproject commit bbb6f6a2a7913cca35685e78de168ae0a3ec0b09 Subproject commit ee55a0b69f65622fe25487745e5537ebcffd8372

@ -1 +1 @@
Subproject commit d245266b2e4b8251eeadf01b13d6b256290ae7e6 Subproject commit 3c7b504dd46868345c00d642b4f9eb40f6da2d52

@ -1 +1 @@
Subproject commit 7ef466b21c4116eb6e3447403d5c4665dd5264e7 Subproject commit 5a740bf0b7fe8f1f9a7f3e0878d5238f56502da1

@ -1 +1 @@
Subproject commit 38bca2d3f2bbf7c4a3c39f744490eb9fb869138c Subproject commit 133364fc6ca6b81cee6bce55acce108c9e78c576

@ -1 +1 @@
Subproject commit 370de851feff5612954189deb16a2154d6d1ef2d Subproject commit bd850834fc9ba6c62784306b65506ab19d64ab89

@ -1 +1 @@
Subproject commit 62e220b9f142b64071fd21d64bdbccf665acc2fd Subproject commit 3bda79beefaa7f8237f832a1ff1da3eba08059e7

@ -1 +1 @@
Subproject commit aee02d865b67cfc2215d2e3f7e21be9e1f723376 Subproject commit 529559508ab729451b034414e3d4a080ab6f2b78

@ -1 +1 @@
Subproject commit 18cde5931f09a82a142bc39a4af5ae4cfad74b94 Subproject commit 52a9c9f58ff4b22cb68f739ce85e187069f408ab

@ -1 +1 @@
Subproject commit 1c19e874bbeddded6b729bd37aa6da1c872eb206 Subproject commit fcb44b320c008b21f9e168149a3ac72f68530b4c

2
cmake

@ -1 +1 @@
Subproject commit 382380d513af1b80c3ab22de8863da9906a47e59 Subproject commit af968dc8eab6bde381ad62ef6a516bdfccb7d038