From 62cab0750b58381e0609d6cd08ff5070584e95ae Mon Sep 17 00:00:00 2001 From: John Preston Date: Wed, 10 Aug 2016 22:36:00 +0300 Subject: [PATCH] First attempt to build Telegram on Windows using GYP+Ninja. It already builds in Debug, using rules for Qt MOC and RCC. Need to start use rules for styles/langs/numbers, test on WinXP. Need to support Release and Deploy configurations. --- .gitignore | 2 + Telegram/gyp/Telegram.gyp | 502 ++++++++++++++++++++++++++++ Telegram/gyp/common.gypi | 80 +++++ Telegram/gyp/common_executable.gypi | 29 ++ Telegram/gyp/qt.gypi | 153 +++++++++ Telegram/gyp/refresh.bat | 11 + Telegram/gyp/settings_win.gypi | 117 +++++++ 7 files changed, 894 insertions(+) create mode 100644 Telegram/gyp/Telegram.gyp create mode 100644 Telegram/gyp/common.gypi create mode 100644 Telegram/gyp/common_executable.gypi create mode 100644 Telegram/gyp/qt.gypi create mode 100644 Telegram/gyp/refresh.bat create mode 100644 Telegram/gyp/settings_win.gypi diff --git a/.gitignore b/.gitignore index f2db043b89..d48712a691 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ +/out/ /Telegram/build/target +/Telegram/build/msvs/ /Telegram/GeneratedFiles/ /Telegram/SourceFiles/art/grid.png /Telegram/SourceFiles/art/grid_125x.png diff --git a/Telegram/gyp/Telegram.gyp b/Telegram/gyp/Telegram.gyp new file mode 100644 index 0000000000..03bdd81747 --- /dev/null +++ b/Telegram/gyp/Telegram.gyp @@ -0,0 +1,502 @@ +# This file is part of Telegram Desktop, +# the official desktop version of Telegram messaging app, see https://telegram.org +# +# Telegram Desktop is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# It is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# In addition, as a special exception, the copyright holders give permission +# to link the code of portions of this program with the OpenSSL library. +# +# Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE +# Copyright (c) 2014 John Preston, https://desktop.telegram.org + +{ + 'targets': [ + { + 'target_name': 'Telegram', + 'variables': { + 'libs_loc': '../../../Libraries', + 'src_loc': '../SourceFiles', + 'gen_loc': '../GeneratedFiles', + 'res_loc': '../Resources', + }, + 'includes': [ + 'common_executable.gypi', + 'qt.gypi', + ], + + 'dependencies': [ +# 'codegen.gyp:codegen_style', +# 'codegen.gyp:codegen_numbers', +# 'codegen.gyp:MetaLang', +# 'utils.gyp:Packer', +# 'utils.gyp:Updater', + ], + + 'defines': [ + 'AL_LIBTYPE_STATIC', + ], + + 'include_dirs': [ + '<(src_loc)', + '<(gen_loc)', + '<(libs_loc)/breakpad/src', + '<(libs_loc)/lzma/C', + '<(libs_loc)/libexif-0.6.20', + '<(libs_loc)/zlib-1.2.8', + '<(libs_loc)/ffmpeg', + '<(libs_loc)/openal-soft/include', + '../ThirdParty/minizip', + '<(libs_loc)/openssl/Release/include', + '<(libs_loc)/openssl_debug/Debug/include', + ], + 'library_dirs': [ + '<(libs_loc)/lzma/C/Util/LzmaLib/Debug', + '<(libs_loc)/libexif-0.6.20/win32/Debug', + '<(libs_loc)/ffmpeg', + '<(libs_loc)/opus/win32/VS2010/Win32/Debug', + '<(libs_loc)/openal-soft/build/Debug', + '<(libs_loc)/zlib-1.2.8/contrib/vstudio/vc11/x86/ZlibStatDebug', + '<(libs_loc)/openssl_debug/Debug/lib', + '<(libs_loc)/breakpad/src/client/windows/Debug', + ], + 'sources': [ + '<(res_loc)/telegram.qrc', + '<(res_loc)/telegram_emojis.qrc', + '<(res_loc)/telegram_wnd.qrc', + '<(res_loc)/telegram_mac.qrc', + '<(gen_loc)/lang_auto.cpp', + '<(gen_loc)/lang_auto.h', + '<(gen_loc)/numbers.cpp', + '<(gen_loc)/numbers.h', + '<(gen_loc)/styles/style_basic.cpp', + '<(gen_loc)/styles/style_basic.h', + '<(gen_loc)/styles/style_basic_types.cpp', + '<(gen_loc)/styles/style_basic_types.h', + '<(gen_loc)/styles/style_boxes.cpp', + '<(gen_loc)/styles/style_boxes.h', + '<(gen_loc)/styles/style_dialogs.cpp', + '<(gen_loc)/styles/style_dialogs.h', + '<(gen_loc)/styles/style_history.cpp', + '<(gen_loc)/styles/style_history.h', + '<(gen_loc)/styles/style_mediaview.cpp', + '<(gen_loc)/styles/style_mediaview.h', + '<(gen_loc)/styles/style_overview.cpp', + '<(gen_loc)/styles/style_overview.h', + '<(gen_loc)/styles/style_profile.cpp', + '<(gen_loc)/styles/style_profile.h', + '<(gen_loc)/styles/style_widgets.cpp', + '<(gen_loc)/styles/style_widgets.h', + '<(src_loc)/main.cpp', + '<(src_loc)/stdafx.cpp', + '<(src_loc)/stdafx.h', + '<(src_loc)/apiwrap.cpp', + '<(src_loc)/apiwrap.h', + '<(src_loc)/app.cpp', + '<(src_loc)/app.h', + '<(src_loc)/application.cpp', + '<(src_loc)/application.h', + '<(src_loc)/autoupdater.cpp', + '<(src_loc)/autoupdater.h', + '<(src_loc)/dialogswidget.cpp', + '<(src_loc)/dialogswidget.h', + '<(src_loc)/dropdown.cpp', + '<(src_loc)/dropdown.h', + '<(src_loc)/facades.cpp', + '<(src_loc)/facades.h', + '<(src_loc)/fileuploader.cpp', + '<(src_loc)/fileuploader.h', + '<(src_loc)/history.cpp', + '<(src_loc)/history.h', + '<(src_loc)/historywidget.cpp', + '<(src_loc)/historywidget.h', + '<(src_loc)/lang.cpp', + '<(src_loc)/lang.h', + '<(src_loc)/langloaderplain.cpp', + '<(src_loc)/langloaderplain.h', + '<(src_loc)/layerwidget.cpp', + '<(src_loc)/layerwidget.h', + '<(src_loc)/layout.cpp', + '<(src_loc)/layout.h', + '<(src_loc)/mediaview.cpp', + '<(src_loc)/mediaview.h', + '<(src_loc)/observer_peer.cpp', + '<(src_loc)/observer_peer.h', + '<(src_loc)/overviewwidget.cpp', + '<(src_loc)/overviewwidget.h', + '<(src_loc)/passcodewidget.cpp', + '<(src_loc)/passcodewidget.h', + '<(src_loc)/playerwidget.cpp', + '<(src_loc)/playerwidget.h', + '<(src_loc)/localimageloader.cpp', + '<(src_loc)/localimageloader.h', + '<(src_loc)/localstorage.cpp', + '<(src_loc)/localstorage.h', + '<(src_loc)/logs.cpp', + '<(src_loc)/logs.h', + '<(src_loc)/mainwidget.cpp', + '<(src_loc)/mainwidget.h', + '<(src_loc)/settings.cpp', + '<(src_loc)/settings.h', + '<(src_loc)/settingswidget.cpp', + '<(src_loc)/settingswidget.h', + '<(src_loc)/shortcuts.cpp', + '<(src_loc)/shortcuts.h', + '<(src_loc)/structs.cpp', + '<(src_loc)/structs.h', + '<(src_loc)/sysbuttons.cpp', + '<(src_loc)/sysbuttons.h', + '<(src_loc)/title.cpp', + '<(src_loc)/title.h', + '<(src_loc)/mainwindow.cpp', + '<(src_loc)/mainwindow.h', + '<(src_loc)/boxes/aboutbox.cpp', + '<(src_loc)/boxes/aboutbox.h', + '<(src_loc)/boxes/abstractbox.cpp', + '<(src_loc)/boxes/abstractbox.h', + '<(src_loc)/boxes/addcontactbox.cpp', + '<(src_loc)/boxes/addcontactbox.h', + '<(src_loc)/boxes/autolockbox.cpp', + '<(src_loc)/boxes/autolockbox.h', + '<(src_loc)/boxes/backgroundbox.cpp', + '<(src_loc)/boxes/backgroundbox.h', + '<(src_loc)/boxes/confirmbox.cpp', + '<(src_loc)/boxes/confirmbox.h', + '<(src_loc)/boxes/confirmphonebox.cpp', + '<(src_loc)/boxes/confirmphonebox.h', + '<(src_loc)/boxes/connectionbox.cpp', + '<(src_loc)/boxes/connectionbox.h', + '<(src_loc)/boxes/contactsbox.cpp', + '<(src_loc)/boxes/contactsbox.h', + '<(src_loc)/boxes/downloadpathbox.cpp', + '<(src_loc)/boxes/downloadpathbox.h', + '<(src_loc)/boxes/emojibox.cpp', + '<(src_loc)/boxes/emojibox.h', + '<(src_loc)/boxes/languagebox.cpp', + '<(src_loc)/boxes/languagebox.h', + '<(src_loc)/boxes/passcodebox.cpp', + '<(src_loc)/boxes/passcodebox.h', + '<(src_loc)/boxes/photocropbox.cpp', + '<(src_loc)/boxes/photocropbox.h', + '<(src_loc)/boxes/photosendbox.cpp', + '<(src_loc)/boxes/photosendbox.h', + '<(src_loc)/boxes/report_box.cpp', + '<(src_loc)/boxes/report_box.h', + '<(src_loc)/boxes/sessionsbox.cpp', + '<(src_loc)/boxes/sessionsbox.h', + '<(src_loc)/boxes/stickersetbox.cpp', + '<(src_loc)/boxes/stickersetbox.h', + '<(src_loc)/boxes/usernamebox.cpp', + '<(src_loc)/boxes/usernamebox.h', + '<(src_loc)/core/basic_types.cpp', + '<(src_loc)/core/basic_types.h', + '<(src_loc)/core/click_handler.cpp', + '<(src_loc)/core/click_handler.h', + '<(src_loc)/core/click_handler_types.cpp', + '<(src_loc)/core/click_handler_types.h', + '<(src_loc)/core/observer.cpp', + '<(src_loc)/core/observer.h', + '<(src_loc)/core/qthelp_url.cpp', + '<(src_loc)/core/qthelp_url.h', + '<(src_loc)/data/data_abstract_structure.cpp', + '<(src_loc)/data/data_abstract_structure.h', + '<(src_loc)/data/data_drafts.cpp', + '<(src_loc)/data/data_drafts.h', + '<(src_loc)/dialogs/dialogs_indexed_list.cpp', + '<(src_loc)/dialogs/dialogs_indexed_list.h', + '<(src_loc)/dialogs/dialogs_layout.cpp', + '<(src_loc)/dialogs/dialogs_layout.h', + '<(src_loc)/dialogs/dialogs_list.cpp', + '<(src_loc)/dialogs/dialogs_list.h', + '<(src_loc)/dialogs/dialogs_row.cpp', + '<(src_loc)/dialogs/dialogs_row.h', + '<(src_loc)/history/field_autocomplete.cpp', + '<(src_loc)/history/field_autocomplete.h', + '<(src_loc)/history/history_service_layout.cpp', + '<(src_loc)/history/history_service_layout.h', + '<(src_loc)/inline_bots/inline_bot_layout_internal.cpp', + '<(src_loc)/inline_bots/inline_bot_layout_internal.h', + '<(src_loc)/inline_bots/inline_bot_layout_item.cpp', + '<(src_loc)/inline_bots/inline_bot_layout_item.h', + '<(src_loc)/inline_bots/inline_bot_result.cpp', + '<(src_loc)/inline_bots/inline_bot_result.h', + '<(src_loc)/inline_bots/inline_bot_send_data.cpp', + '<(src_loc)/inline_bots/inline_bot_send_data.h', + '<(src_loc)/intro/introwidget.cpp', + '<(src_loc)/intro/introwidget.h', + '<(src_loc)/intro/introcode.cpp', + '<(src_loc)/intro/introcode.h', + '<(src_loc)/intro/introphone.cpp', + '<(src_loc)/intro/introphone.h', + '<(src_loc)/intro/intropwdcheck.cpp', + '<(src_loc)/intro/intropwdcheck.h', + '<(src_loc)/intro/introsignup.cpp', + '<(src_loc)/intro/introsignup.h', + '<(src_loc)/intro/introstart.cpp', + '<(src_loc)/intro/introstart.h', + '<(src_loc)/media/view/media_clip_controller.cpp', + '<(src_loc)/media/view/media_clip_controller.h', + '<(src_loc)/media/view/media_clip_playback.cpp', + '<(src_loc)/media/view/media_clip_playback.h', + '<(src_loc)/media/view/media_clip_volume_controller.cpp', + '<(src_loc)/media/view/media_clip_volume_controller.h', + '<(src_loc)/media/media_audio.cpp', + '<(src_loc)/media/media_audio.h', + '<(src_loc)/media/media_audio_ffmpeg_loader.cpp', + '<(src_loc)/media/media_audio_ffmpeg_loader.h', + '<(src_loc)/media/media_audio_loader.cpp', + '<(src_loc)/media/media_audio_loader.h', + '<(src_loc)/media/media_audio_loaders.cpp', + '<(src_loc)/media/media_audio_loaders.h', + '<(src_loc)/media/media_child_ffmpeg_loader.cpp', + '<(src_loc)/media/media_child_ffmpeg_loader.h', + '<(src_loc)/media/media_clip_ffmpeg.cpp', + '<(src_loc)/media/media_clip_ffmpeg.h', + '<(src_loc)/media/media_clip_implementation.cpp', + '<(src_loc)/media/media_clip_implementation.h', + '<(src_loc)/media/media_clip_qtgif.cpp', + '<(src_loc)/media/media_clip_qtgif.h', + '<(src_loc)/media/media_clip_reader.cpp', + '<(src_loc)/media/media_clip_reader.h', + '<(src_loc)/mtproto/facade.cpp', + '<(src_loc)/mtproto/facade.h', + '<(src_loc)/mtproto/auth_key.cpp', + '<(src_loc)/mtproto/auth_key.h', + '<(src_loc)/mtproto/connection.cpp', + '<(src_loc)/mtproto/connection.h', + '<(src_loc)/mtproto/connection_abstract.cpp', + '<(src_loc)/mtproto/connection_abstract.h', + '<(src_loc)/mtproto/connection_auto.cpp', + '<(src_loc)/mtproto/connection_auto.h', + '<(src_loc)/mtproto/connection_http.cpp', + '<(src_loc)/mtproto/connection_http.h', + '<(src_loc)/mtproto/connection_tcp.cpp', + '<(src_loc)/mtproto/connection_tcp.h', + '<(src_loc)/mtproto/core_types.cpp', + '<(src_loc)/mtproto/core_types.h', + '<(src_loc)/mtproto/dcenter.cpp', + '<(src_loc)/mtproto/dcenter.h', + '<(src_loc)/mtproto/file_download.cpp', + '<(src_loc)/mtproto/file_download.h', + '<(src_loc)/mtproto/rsa_public_key.cpp', + '<(src_loc)/mtproto/rsa_public_key.h', + '<(src_loc)/mtproto/rpc_sender.cpp', + '<(src_loc)/mtproto/rpc_sender.h', + '<(src_loc)/mtproto/scheme_auto.cpp', + '<(src_loc)/mtproto/scheme_auto.h', + '<(src_loc)/mtproto/session.cpp', + '<(src_loc)/mtproto/session.h', + '<(src_loc)/overview/overview_layout.cpp', + '<(src_loc)/overview/overview_layout.h', + '<(src_loc)/pspecific_win.cpp', + '<(src_loc)/pspecific_win.h', + '<(src_loc)/platform/linux/linux_gdk_helper.cpp', + '<(src_loc)/platform/linux/linux_gdk_helper.h', + '<(src_loc)/platform/linux/linux_libs.cpp', + '<(src_loc)/platform/linux/linux_libs.h', + '<(src_loc)/platform/linux/file_dialog_linux.cpp', + '<(src_loc)/platform/linux/file_dialog_linux.h', + '<(src_loc)/platform/linux/main_window_linux.cpp', + '<(src_loc)/platform/linux/main_window_linux.h', + '<(src_loc)/platform/win/main_window_win.cpp', + '<(src_loc)/platform/win/main_window_win.h', + '<(src_loc)/platform/win/windows_app_user_model_id.cpp', + '<(src_loc)/platform/win/windows_app_user_model_id.h', + '<(src_loc)/platform/win/windows_dlls.cpp', + '<(src_loc)/platform/win/windows_dlls.h', + '<(src_loc)/platform/win/windows_event_filter.cpp', + '<(src_loc)/platform/win/windows_event_filter.h', + '<(src_loc)/platform/win/windows_toasts.cpp', + '<(src_loc)/platform/win/windows_toasts.h', + '<(src_loc)/profile/profile_actions_widget.cpp', + '<(src_loc)/profile/profile_actions_widget.h', + '<(src_loc)/profile/profile_block_widget.cpp', + '<(src_loc)/profile/profile_block_widget.h', + '<(src_loc)/profile/profile_cover_drop_area.cpp', + '<(src_loc)/profile/profile_cover_drop_area.h', + '<(src_loc)/profile/profile_cover.cpp', + '<(src_loc)/profile/profile_cover.h', + '<(src_loc)/profile/profile_fixed_bar.cpp', + '<(src_loc)/profile/profile_fixed_bar.h', + '<(src_loc)/profile/profile_info_widget.cpp', + '<(src_loc)/profile/profile_info_widget.h', + '<(src_loc)/profile/profile_inner_widget.cpp', + '<(src_loc)/profile/profile_inner_widget.h', + '<(src_loc)/profile/profile_invite_link_widget.cpp', + '<(src_loc)/profile/profile_invite_link_widget.h', + '<(src_loc)/profile/profile_members_widget.cpp', + '<(src_loc)/profile/profile_members_widget.h', + '<(src_loc)/profile/profile_section_memento.cpp', + '<(src_loc)/profile/profile_section_memento.h', + '<(src_loc)/profile/profile_settings_widget.cpp', + '<(src_loc)/profile/profile_settings_widget.h', + '<(src_loc)/profile/profile_shared_media_widget.cpp', + '<(src_loc)/profile/profile_shared_media_widget.h', + '<(src_loc)/profile/profile_userpic_button.cpp', + '<(src_loc)/profile/profile_userpic_button.h', + '<(src_loc)/profile/profile_widget.cpp', + '<(src_loc)/profile/profile_widget.h', + '<(src_loc)/serialize/serialize_common.cpp', + '<(src_loc)/serialize/serialize_common.h', + '<(src_loc)/serialize/serialize_document.cpp', + '<(src_loc)/serialize/serialize_document.h', + '<(src_loc)/ui/buttons/history_down_button.cpp', + '<(src_loc)/ui/buttons/history_down_button.h', + '<(src_loc)/ui/buttons/icon_button.cpp', + '<(src_loc)/ui/buttons/icon_button.h', + '<(src_loc)/ui/buttons/left_outline_button.cpp', + '<(src_loc)/ui/buttons/left_outline_button.h', + '<(src_loc)/ui/buttons/peer_avatar_button.cpp', + '<(src_loc)/ui/buttons/peer_avatar_button.h', + '<(src_loc)/ui/buttons/round_button.cpp', + '<(src_loc)/ui/buttons/round_button.h', + '<(src_loc)/ui/effects/fade_animation.cpp', + '<(src_loc)/ui/effects/fade_animation.h', + '<(src_loc)/ui/style/style_core.cpp', + '<(src_loc)/ui/style/style_core.h', + '<(src_loc)/ui/style/style_core_color.cpp', + '<(src_loc)/ui/style/style_core_color.h', + '<(src_loc)/ui/style/style_core_font.cpp', + '<(src_loc)/ui/style/style_core_font.h', + '<(src_loc)/ui/style/style_core_icon.cpp', + '<(src_loc)/ui/style/style_core_icon.h', + '<(src_loc)/ui/style/style_core_types.cpp', + '<(src_loc)/ui/style/style_core_types.h', + '<(src_loc)/ui/text/text.cpp', + '<(src_loc)/ui/text/text.h', + '<(src_loc)/ui/text/text_block.cpp', + '<(src_loc)/ui/text/text_block.h', + '<(src_loc)/ui/text/text_entity.cpp', + '<(src_loc)/ui/text/text_entity.h', + '<(src_loc)/ui/toast/toast.cpp', + '<(src_loc)/ui/toast/toast.h', + '<(src_loc)/ui/toast/toast_manager.cpp', + '<(src_loc)/ui/toast/toast_manager.h', + '<(src_loc)/ui/toast/toast_widget.cpp', + '<(src_loc)/ui/toast/toast_widget.h', + '<(src_loc)/ui/widgets/label_simple.cpp', + '<(src_loc)/ui/widgets/label_simple.h', + '<(src_loc)/ui/animation.cpp', + '<(src_loc)/ui/animation.h', + '<(src_loc)/ui/boxshadow.cpp', + '<(src_loc)/ui/boxshadow.h', + '<(src_loc)/ui/button.cpp', + '<(src_loc)/ui/button.h', + '<(src_loc)/ui/popupmenu.cpp', + '<(src_loc)/ui/popupmenu.h', + '<(src_loc)/ui/countryinput.cpp', + '<(src_loc)/ui/countryinput.h', + '<(src_loc)/ui/emoji_config.cpp', + '<(src_loc)/ui/emoji_config.h', + '<(src_loc)/ui/filedialog.cpp', + '<(src_loc)/ui/filedialog.h', + '<(src_loc)/ui/flatbutton.cpp', + '<(src_loc)/ui/flatbutton.h', + '<(src_loc)/ui/flatcheckbox.cpp', + '<(src_loc)/ui/flatcheckbox.h', + '<(src_loc)/ui/flatinput.cpp', + '<(src_loc)/ui/flatinput.h', + '<(src_loc)/ui/flatlabel.cpp', + '<(src_loc)/ui/flatlabel.h', + '<(src_loc)/ui/flattextarea.cpp', + '<(src_loc)/ui/flattextarea.h', + '<(src_loc)/ui/images.cpp', + '<(src_loc)/ui/images.h', + '<(src_loc)/ui/inner_dropdown.cpp', + '<(src_loc)/ui/inner_dropdown.h', + '<(src_loc)/ui/scrollarea.cpp', + '<(src_loc)/ui/scrollarea.h', + '<(src_loc)/ui/twidget.cpp', + '<(src_loc)/ui/twidget.h', + '<(src_loc)/window/main_window.cpp', + '<(src_loc)/window/main_window.h', + '<(src_loc)/window/section_widget.cpp', + '<(src_loc)/window/section_widget.h', + '<(src_loc)/window/slide_animation.cpp', + '<(src_loc)/window/slide_animation.h', + '<(src_loc)/window/top_bar_widget.cpp', + '<(src_loc)/window/top_bar_widget.h', + ], + 'libraries': [ + 'libeay32', + 'ssleay32', + 'Crypt32', + 'zlibstat', + 'LzmaLib', + 'lib_exif', + 'UxTheme', + 'DbgHelp', + 'OpenAL32', + 'common', + 'libavformat\libavformat.a', + 'libavcodec\libavcodec.a', + 'libavutil\libavutil.a', + 'libswresample\libswresample.a', + 'libswscale\libswscale.a', + 'opus', + 'celt', + 'silk_common', + 'silk_float', + 'lib\common', + 'lib\exception_handler', + 'lib\crash_generation_client', + ], + 'conditions': [ + [ '"<(build_linux)" != "1"', { + 'sources!': [ + '<(src_loc)/platform/linux/linux_gdk_helper.cpp', + '<(src_loc)/platform/linux/linux_gdk_helper.h', + '<(src_loc)/platform/linux/linux_libs.cpp', + '<(src_loc)/platform/linux/linux_libs.h', + '<(src_loc)/platform/linux/file_dialog_linux.cpp', + '<(src_loc)/platform/linux/file_dialog_linux.h', + '<(src_loc)/platform/linux/main_window_linux.cpp', + '<(src_loc)/platform/linux/main_window_linux.h', + ], + }], + [ '"<(build_mac)" != "1"', { + 'sources!': [ + '<(res_loc)/telegram_mac.qrc', + ], + }], + [ '"<(build_win)" != "1"', { + 'sources!': [ + '<(src_loc)/platform/win/main_window_win.cpp', + '<(src_loc)/platform/win/main_window_win.h', + '<(src_loc)/platform/win/windows_app_user_model_id.cpp', + '<(src_loc)/platform/win/windows_app_user_model_id.h', + '<(src_loc)/platform/win/windows_dlls.cpp', + '<(src_loc)/platform/win/windows_dlls.h', + '<(src_loc)/platform/win/windows_event_filter.cpp', + '<(src_loc)/platform/win/windows_event_filter.h', + '<(src_loc)/platform/win/windows_toasts.cpp', + '<(src_loc)/platform/win/windows_toasts.h', + '<(res_loc)/telegram_wnd.qrc', + ], + }], + [ 'build_win', { + 'msvs_precompiled_source': '<(src_loc)/stdafx.cpp', + 'msvs_precompiled_header': '<(src_loc)/stdafx.h', + 'msbuild_toolset': 'v140_xp', #Windows7.1SDK',# + 'msvs_settings': { + 'VCLinkerTool': { + 'IgnoreDefaultLibraryNames': 'LIBCMT', + }, + 'VCResourceCompilerTool': { + }, + }, + 'sources': [ + '<(res_loc)/winrc/Telegram.rc', + ], + }], + ], + }, + ], +} diff --git a/Telegram/gyp/common.gypi b/Telegram/gyp/common.gypi new file mode 100644 index 0000000000..86f5676c45 --- /dev/null +++ b/Telegram/gyp/common.gypi @@ -0,0 +1,80 @@ +# This file is part of Telegram Desktop, +# the official desktop version of Telegram messaging app, see https://telegram.org +# +# Telegram Desktop is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# It is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# In addition, as a special exception, the copyright holders give permission +# to link the code of portions of this program with the OpenSSL library. +# +# Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE +# Copyright (c) 2014 John Preston, https://desktop.telegram.org + +{ + 'variables': { + 'variables': { + 'variables': { + 'build_os%': '<(OS)', + }, + 'build_os%': '<(build_os)', + 'conditions': [ + [ 'build_os == "win"', { + 'build_win': 1, + }, { + 'build_win': 0, + }], + [ 'build_os == "mac"', { + 'build_mac': 1, + }, { + 'build_mac': 0, + }], + [ 'build_os == "linux"', { + 'build_linux': 1, + }, { + 'build_linux': 0, + }], + ], + }, + 'build_os%': '<(build_os)', + 'build_win%': '<(build_win)', + 'build_mac%': '<(build_mac)', + 'build_linux%': '<(build_linux)', + + # GYP does not support per-configuration libraries :( + # So they will be emulated through additional link flags, + # which will contain <(ld_lib_prefix)LibraryName<(ld_lib_postfix) + 'conditions': [ + [ 'build_win', { + 'ld_lib_prefix': '', + 'ld_lib_postfix': '.lib', + }, { + 'ld_lib_prefix': '-l', + 'ld_lib_postfix': '', + }], + ], + 'ld_lib_prefix': '<(ld_lib_prefix)', + 'ld_lib_postfix': '<(ld_lib_postfix)', + + 'library%': 'static_library', + }, + + 'configurations': { + 'Debug': { + 'defines': [ + '_DEBUG', + ], + }, + 'Release': { + 'defines': [ + 'NDEBUG', + ], + }, + }, +} diff --git a/Telegram/gyp/common_executable.gypi b/Telegram/gyp/common_executable.gypi new file mode 100644 index 0000000000..5fa96f5808 --- /dev/null +++ b/Telegram/gyp/common_executable.gypi @@ -0,0 +1,29 @@ +# This file is part of Telegram Desktop, +# the official desktop version of Telegram messaging app, see https://telegram.org +# +# Telegram Desktop is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# It is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# In addition, as a special exception, the copyright holders give permission +# to link the code of portions of this program with the OpenSSL library. +# +# Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE +# Copyright (c) 2014 John Preston, https://desktop.telegram.org + +{ + 'type': 'executable', + 'variables': { + 'win_subsystem': '2', # Windows application + }, + 'includes': [ + 'common.gypi', + 'settings_win.gypi', + ], +} diff --git a/Telegram/gyp/qt.gypi b/Telegram/gyp/qt.gypi new file mode 100644 index 0000000000..40b46eb45c --- /dev/null +++ b/Telegram/gyp/qt.gypi @@ -0,0 +1,153 @@ +# This file is part of Telegram Desktop, +# the official desktop version of Telegram messaging app, see https://telegram.org +# +# Telegram Desktop is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# It is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# In addition, as a special exception, the copyright holders give permission +# to link the code of portions of this program with the OpenSSL library. +# +# Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE +# Copyright (c) 2014 John Preston, https://desktop.telegram.org + +{ + 'variables': { + 'variables': { + 'variables': { + 'qt_version%': '5.6.0', + }, + 'qt_version%': '<(qt_version)', + 'qt_version_loc': '