Version for OS X 10.6-10.7 build from GYP is ready, not tested yet.

This commit is contained in:
John Preston 2016-08-29 23:24:16 -06:00
parent b821978a36
commit 50616cc267
26 changed files with 264 additions and 77 deletions

View file

@ -21,9 +21,9 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
#include "stdafx.h"
#include "app.h"
#if QT_VERSION < QT_VERSION_CHECK(5, 5, 0)
#ifdef OS_MAC_OLD
#include <libexif/exif-data.h>
#endif
#endif // OS_MAC_OLD
#include "styles/style_overview.h"
#include "styles/style_mediaview.h"
@ -2395,9 +2395,9 @@ namespace {
}
{
QImageReader reader(&buffer, *format);
#if QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)
#ifndef OS_MAC_OLD
reader.setAutoTransform(true);
#endif
#endif // OS_MAC_OLD
if (animated) *animated = reader.supportsAnimation() && reader.imageCount() > 1;
QByteArray fmt = reader.format();
if (!fmt.isEmpty()) *format = fmt;
@ -2410,7 +2410,7 @@ namespace {
buffer.seek(0);
QString fmt = QString::fromUtf8(*format).toLower();
if (fmt == "jpg" || fmt == "jpeg") {
#if QT_VERSION < QT_VERSION_CHECK(5, 5, 0)
#ifdef OS_MAC_OLD
ExifData *exifData = exif_data_new_from_data((const uchar*)(data.constData()), data.size());
if (exifData) {
ExifByteOrder byteOrder = exif_data_get_byte_order(exifData);
@ -2431,7 +2431,7 @@ namespace {
}
exif_data_free(exifData);
}
#endif
#endif // OS_MAC_OLD
} else if (opaque && result.hasAlphaChannel()) {
QImage solid(result.width(), result.height(), QImage::Format_ARGB32_Premultiplied);
solid.fill(st::white->c);

View file

@ -664,7 +664,7 @@ bool Generator::writeIconValues() {
if (maskData.isEmpty()) {
return false;
}
source_->stream() << "const uchar iconMask" << i.value() << "Data[] = " << stringToBinaryArray(maskData.toStdString()) << ";\n";
source_->stream() << "const uchar iconMask" << i.value() << "Data[] = " << stringToBinaryArray(std::string(maskData.constData(), maskData.size())) << ";\n";
source_->stream() << "IconMask iconMask" << i.value() << "(iconMask" << i.value() << "Data);\n\n";
}
return true;

View file

@ -175,6 +175,8 @@ template <typename T, size_t N> char(&ArraySizeHelper(T(&array)[N]))[N];
// For QFlags<> declared in private section of a class we need to declare
// operators from Q_DECLARE_OPERATORS_FOR_FLAGS as friend functions.
#ifndef OS_MAC_OLD
#define Q_DECLARE_FRIEND_INCOMPATIBLE_FLAGS(Flags) \
friend Q_DECL_CONSTEXPR QIncompatibleFlag operator|(Flags::enum_type f1, int f2) Q_DECL_NOTHROW;
@ -183,6 +185,18 @@ friend Q_DECL_CONSTEXPR QFlags<Flags::enum_type> operator|(Flags::enum_type f1,
friend Q_DECL_CONSTEXPR QFlags<Flags::enum_type> operator|(Flags::enum_type f1, QFlags<Flags::enum_type> f2) Q_DECL_NOTHROW; \
Q_DECLARE_FRIEND_INCOMPATIBLE_FLAGS(Flags)
#else // OS_MAC_OLD
#define Q_DECLARE_FRIEND_INCOMPATIBLE_FLAGS(Flags) \
friend Q_DECL_CONSTEXPR QIncompatibleFlag operator|(Flags::enum_type f1, int f2);
#define Q_DECLARE_FRIEND_OPERATORS_FOR_FLAGS(Flags) \
friend Q_DECL_CONSTEXPR QFlags<Flags::enum_type> operator|(Flags::enum_type f1, Flags::enum_type f2); \
friend Q_DECL_CONSTEXPR QFlags<Flags::enum_type> operator|(Flags::enum_type f1, QFlags<Flags::enum_type> f2); \
Q_DECLARE_FRIEND_INCOMPATIBLE_FLAGS(Flags)
#endif // OS_MAC_OLD
// using for_const instead of plain range-based for loop to ensure usage of const_iterator
// it is important for the copy-on-write Qt containers
// if you have "QVector<T*> v" then "for (T * const p : v)" will still call QVector::detach(),
@ -219,7 +233,11 @@ public:
}
constexpr char operator[](std::size_t n) const {
return (n < _size) ? _str[n] :
#ifndef OS_MAC_OLD
throw std::out_of_range("");
#else // OS_MAC_OLD
throw std::exception();
#endif // OS_MAC_OLD
}
constexpr std::size_t size() const { return _size; }
const char *c_str() const { return _str; }
@ -257,6 +275,11 @@ typedef double float64;
using std::string;
using std::exception;
#ifdef OS_MAC_OLD
namespace std {
using nullptr_t = decltype(nullptr);
}
#endif // OS_MAC_OLD
// we copy some parts of C++11/14/17 std:: library, because on OS X 10.6+
// version we can use C++11/14/17, but we can not use its library :(
@ -873,7 +896,7 @@ public:
template <typename... Args>
void makeIfNull(Args&&... args) {
if (isNull()) {
reset(new T(std::forward<Args>(args)...));
reset(new T(std_::forward<Args>(args)...));
}
};

View file

@ -52,8 +52,10 @@ enum class RegExOption {
InvertedGreediness = QRegularExpression::InvertedGreedinessOption,
DontCapture = QRegularExpression::DontCaptureOption,
UseUnicodeProperties = QRegularExpression::UseUnicodePropertiesOption,
#ifndef OS_MAC_OLD
OptimizeOnFirstUsage = QRegularExpression::OptimizeOnFirstUsageOption,
DontAutomaticallyOptimize = QRegularExpression::DontAutomaticallyOptimizeOption,
#endif // OS_MAC_OLD
};
Q_DECLARE_FLAGS(RegExOptions, RegExOption);
Q_DECLARE_OPERATORS_FOR_FLAGS(RegExOptions);
@ -65,7 +67,11 @@ inline RegularExpressionMatch regex_match(const QString &string, const QString &
inline RegularExpressionMatch regex_match(const QString &string, const QStringRef &subjectRef, RegExOptions options = 0) {
auto qtOptions = QRegularExpression::PatternOptions(static_cast<int>(options));
#ifndef OS_MAC_OLD
return RegularExpressionMatch(QRegularExpression(string, qtOptions).match(subjectRef));
#else // OS_MAC_OLD
return RegularExpressionMatch(QRegularExpression(string, qtOptions).match(subjectRef.toString()));
#endif // OS_MAC_OLD
}
} // namespace qthelp

View file

@ -128,7 +128,11 @@ public:
}
inline const T &at(int index) const {
if (index < 0 || index >= _size) {
#if QT_VERSION < QT_VERSION_CHECK(5, 5, 0)
throw std::exception();
#else // QT_VERSION < 5.5.0
throw std::out_of_range("");
#endif // QT_VERSION < 5.5.0
}
return data()[index];
}

View file

@ -6028,9 +6028,9 @@ void LocationManager::onFinished(QNetworkReply *reply) {
{
QBuffer buffer(&data);
QImageReader reader(&buffer);
#if QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)
#ifndef OS_MAC_OLD
reader.setAutoTransform(true);
#endif
#endif // OS_MAC_OLD
thumb = QPixmap::fromImageReader(&reader, Qt::ColorOnly);
format = reader.format();
thumb.setDevicePixelRatio(cRetinaFactor());

View file

@ -47,6 +47,7 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
#include "window/top_bar_widget.h"
#include "observer_peer.h"
#include "playerwidget.h"
#include "core/qthelp_regex.h"
namespace {
@ -2971,9 +2972,8 @@ EntitiesInText entitiesFromTextTags(const FlatTextarea::TagList &tags) {
auto mentionStart = qstr("mention://user.");
for_const (auto &tag, tags) {
if (tag.id.startsWith(mentionStart)) {
auto match = QRegularExpression("^(\\d+\\.\\d+)(/|$)").match(tag.id.midRef(mentionStart.size()));
if (match.hasMatch()) {
result.push_back(EntityInText(EntityInTextMentionName, tag.offset, tag.length, match.captured(1)));
if (auto match = qthelp::regex_match("^(\\d+\\.\\d+)(/|$)", tag.id.midRef(mentionStart.size()))) {
result.push_back(EntityInText(EntityInTextMentionName, tag.offset, tag.length, match->captured(1)));
}
}
}
@ -8111,7 +8111,12 @@ void HistoryWidget::updatePreview() {
updateMouseTracking();
if (_previewData->pendingTill) {
_previewTitle.setText(st::msgServiceNameFont, lang(lng_preview_loading), _textNameOptions);
_previewDescription.setText(st::msgFont, textClean(_previewLinks.splitRef(' ').at(0).toString()), _textDlgOptions);
#ifndef OS_MAC_OLD
auto linkText = _previewLinks.splitRef(' ').at(0).toString();
#else // OS_MAC_OLD
auto linkText = _previewLinks.split(' ').at(0);
#endif // OS_MAC_OLD
_previewDescription.setText(st::msgFont, textClean(linkText), _textDlgOptions);
int32 t = (_previewData->pendingTill - unixtime()) * 1000;
if (t <= 0) t = 1;

View file

@ -173,9 +173,13 @@ ClickHandlerPtr ItemBase::getResultContentUrlHandler() const {
}
QString ItemBase::getResultThumbLetter() const {
QVector<QStringRef> parts = _result->_url.splitRef('/');
#ifndef OS_MAC_OLD
auto parts = _result->_url.splitRef('/');
#else // OS_MAC_OLD
auto parts = _result->_url.split('/');
#endif // OS_MAC_OLD
if (!parts.isEmpty()) {
QStringRef domain = parts.at(0);
auto domain = parts.at(0);
if (parts.size() > 2 && domain.endsWith(':') && parts.at(1).isEmpty()) { // http:// and others
domain = parts.at(2);
}

View file

@ -3621,9 +3621,9 @@ namespace Local {
QImage img;
QBuffer buf(&pngData);
QImageReader reader(&buf);
#if QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)
#ifndef OS_MAC_OLD
reader.setAutoTransform(true);
#endif
#endif // OS_MAC_OLD
if (reader.read(&img)) {
App::initBackground(id, img, true);
return true;

View file

@ -31,6 +31,8 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
#define AL_ALEXT_PROTOTYPES
#include <AL/alext.h>
#include <numeric>
extern "C" {
#ifdef Q_OS_MAC
#include <iconv.h>

View file

@ -118,9 +118,9 @@ bool QtGifReaderImplementation::jumpToStart() {
delete _reader;
initDevice();
_reader = new QImageReader(_device);
#if QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)
#ifndef OS_MAC_OLD
_reader->setAutoTransform(true);
#endif
#endif // OS_MAC_OLD
if (!_reader->canRead() || !_reader->supportsAnimation()) {
return false;
}

View file

@ -984,9 +984,14 @@ Link::Link(HistoryMedia *media, HistoryItem *parent) : ItemBase(parent) {
if (_page) {
_title = _page->title;
}
QVector<QStringRef> parts = mainUrl.splitRef('/');
#ifndef OS_MAC_OLD
auto parts = mainUrl.splitRef('/');
#else // OS_MAC_OLD
auto parts = mainUrl.split('/');
#endif // OS_MAC_OLD
if (!parts.isEmpty()) {
QStringRef domain = parts.at(0);
auto domain = parts.at(0);
if (parts.size() > 2 && domain.endsWith(':') && parts.at(1).isEmpty()) { // http:// and others
domain = parts.at(2);
}

View file

@ -160,12 +160,14 @@ bool gAutoPlayGif = true;
void settingsParseArgs(int argc, char *argv[]) {
#ifdef Q_OS_MAC
#ifndef OS_MAC_OLD
if (QSysInfo::macVersion() >= QSysInfo::MV_10_11) {
gIsElCapitan = true;
} else if (QSysInfo::macVersion() < QSysInfo::MV_10_8) {
gPlatform = dbipMacOld;
}
#endif
#else // OS_MAC_OLD
gPlatform = dbipMacOld;
#endif // OS_MAC_OLD
#endif // Q_OS_MAC
switch (cPlatform()) {
case dbipWindows:

View file

@ -253,6 +253,22 @@ struct DataStruct {
t_assert(DataPtr == nullptr);
DataPtr = this;
if (autoRepeatCommands.isEmpty()) {
autoRepeatCommands.insert(qsl("media_previous"));
autoRepeatCommands.insert(qsl("media_next"));
autoRepeatCommands.insert(qsl("next_chat"));
autoRepeatCommands.insert(qsl("previous_chat"));
}
if (mediaCommands.isEmpty()) {
mediaCommands.insert(qsl("media_play"));
mediaCommands.insert(qsl("media_playpause"));
mediaCommands.insert(qsl("media_play"));
mediaCommands.insert(qsl("media_stop"));
mediaCommands.insert(qsl("media_previous"));
mediaCommands.insert(qsl("media_next"));
}
#define DeclareAlias(keys, command) setShortcut(qsl(keys), qsl(#command))
#define DeclareCommand(keys, command) createCommand(qsl(#command), ShortcutCommands::command); DeclareAlias(keys, command)
@ -305,22 +321,9 @@ struct DataStruct {
QMap<int, ShortcutCommands::Handler> handlers;
QSet<QShortcut*> mediaShortcuts;
QSet<QString> autoRepeatCommands;
QSet<QString> mediaCommands;
QSet<QString> autoRepeatCommands = {
qsl("media_previous"),
qsl("media_next"),
qsl("next_chat"),
qsl("previous_chat"),
};
QSet<QString> mediaCommands = {
qsl("media_play"),
qsl("media_pause"),
qsl("media_playpause"),
qsl("media_stop"),
qsl("media_previous"),
qsl("media_next")
};
};
namespace {

View file

@ -45,6 +45,9 @@ Copyright (c) 2014-2016 John Preston, https://desktop.telegram.org
#pragma clang diagnostic pop
#endif // __clang__
#if QT_VERSION < QT_VERSION_CHECK(5, 5, 0)
#define OS_MAC_OLD
#endif // QT_VERSION < 5.5.0
#include <QtWidgets/QtWidgets>
#include <QtNetwork/QtNetwork>

View file

@ -798,6 +798,22 @@ void PhotoCancelClickHandler::onClickImpl() const {
}
}
QString joinList(const QStringList &list, const QString &sep) {
QString result;
if (list.isEmpty()) return result;
int32 l = list.size(), s = sep.size() * (l - 1);
for (int32 i = 0; i < l; ++i) {
s += list.at(i).size();
}
result.reserve(s);
result.append(list.at(0));
for (int32 i = 1; i < l; ++i) {
result.append(sep).append(list.at(i));
}
return result;
}
QString saveFileName(const QString &title, const QString &filter, const QString &prefix, QString name, bool savingAs, const QDir &dir) {
#ifdef Q_OS_WIN
name = name.replace(QRegularExpression(qsl("[\\\\\\/\\:\\*\\?\\\"\\<\\>\\|]")), qsl("_"));
@ -832,9 +848,9 @@ QString saveFileName(const QString &title, const QString &filter, const QString
QRegularExpressionMatch m = QRegularExpression(qsl(" \\*\\.") + ext + qsl("[\\)\\s]"), QRegularExpression::CaseInsensitiveOption).match(first);
if (m.hasMatch() && m.capturedStart() > start + 3) {
int32 oldpos = m.capturedStart(), oldend = m.capturedEnd();
fil = first.mid(0, start + 3) + ext + qsl(" *.") + first.mid(start + 3, oldpos - start - 3) + first.mid(oldend - 1) + sep + filters.mid(1).join(sep);
fil = first.mid(0, start + 3) + ext + qsl(" *.") + first.mid(start + 3, oldpos - start - 3) + first.mid(oldend - 1) + sep + joinList(filters.mid(1), sep);
} else {
fil = first.mid(0, start + 3) + ext + qsl(" *.") + first.mid(start + 3) + sep + filters.mid(1).join(sep);
fil = first.mid(0, start + 3) + ext + qsl(" *.") + first.mid(start + 3) + sep + joinList(filters.mid(1), sep);
}
}
} else {

View file

@ -1417,7 +1417,13 @@ inline bool operator<(const LocationCoords &a, const LocationCoords &b) {
return (a.lat < b.lat) || ((a.lat == b.lat) && (a.lon < b.lon));
}
inline uint qHash(const LocationCoords &t, uint seed = 0) {
#ifndef OS_MAC_OLD
return qHash(QtPrivate::QHashCombine().operator()(qHash(t.lat), t.lon), seed);
#else // OS_MAC_OLD
uint h1 = qHash(t.lat, seed);
uint h2 = qHash(t.lon, seed);
return ((h1 << 16) | (h1 >> 16)) ^ h2 ^ seed;
#endif // OS_MAC_OLD
}
struct LocationData {

View file

@ -644,9 +644,9 @@ void Image::restore() const {
QBuffer buffer(&_saved);
QImageReader reader(&buffer, _format);
#if QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)
#ifndef OS_MAC_OLD
reader.setAutoTransform(true);
#endif
#endif // OS_MAC_OLD
_data = QPixmap::fromImageReader(&reader, Qt::ColorOnly);
if (!_data.isNull()) {

View file

@ -106,7 +106,11 @@ namespace internal {
QImage createCircleMask(int size, const QColor &bg, const QColor &fg) {
int realSize = size * cIntRetinaFactor();
#ifndef OS_MAC_OLD
auto result = QImage(realSize, realSize, QImage::Format::Format_Grayscale8);
#else // OS_MAC_OLD
auto result = QImage(realSize, realSize, QImage::Format::Format_RGB32);
#endif // OS_MAC_OLD
{
QPainter pcircle(&result);
pcircle.setRenderHint(QPainter::HighQualityAntialiasing, true);

View file

@ -123,7 +123,17 @@ void ToggleableShadow::paintEvent(QPaintEvent *e) {
void sendSynteticMouseEvent(QWidget *widget, QEvent::Type type, Qt::MouseButton button, const QPoint &globalPoint) {
auto windowHandle = widget->window()->windowHandle();
auto localPoint = windowHandle->mapFromGlobal(globalPoint);
QMouseEvent ev(type, localPoint, localPoint, globalPoint, button, QGuiApplication::mouseButtons() | button, QGuiApplication::keyboardModifiers(), Qt::MouseEventSynthesizedByApplication);
QMouseEvent ev(type
, localPoint
, localPoint
, globalPoint
, button
, QGuiApplication::mouseButtons() | button
, QGuiApplication::keyboardModifiers()
#ifndef OS_MAC_OLD
, Qt::MouseEventSynthesizedByApplication
#endif // OS_MAC_OLD
);
ev.setTimestamp(getms());
QGuiApplication::sendEvent(windowHandle, &ev);
}

View file

@ -48,7 +48,6 @@
'ko',
'pt-BR',
],
'mac_target': '10.8',
},
'includes': [
'common_executable.gypi',
@ -75,8 +74,6 @@
'<(src_loc)',
'<(SHARED_INTERMEDIATE_DIR)',
'<(libs_loc)/breakpad/src',
'<(libs_loc)/crashpad/crashpad',
'<(libs_loc)/crashpad/crashpad/third_party/mini_chromium/mini_chromium',
'<(libs_loc)/lzma/C',
'<(libs_loc)/libexif-0.6.20',
'<(libs_loc)/zlib-1.2.8',
@ -84,9 +81,6 @@
'<(libs_loc)/openal-soft/include',
'<(minizip_loc)',
],
'library_dirs': [
'<(libs_loc)/ffmpeg',
],
'sources': [
'<@(qrc_files)',
'<@(style_files)',

View file

@ -65,7 +65,6 @@
'build_mac%': '<(build_mac)',
'build_linux%': '<(build_linux)',
'official_build_target%': '<(official_build_target)',
'mac_target%': '10.8',
# GYP does not support per-configuration libraries :(
# So they will be emulated through additional link flags,
@ -82,10 +81,10 @@
}],
[ '"<(official_build_target)" == "mac32"', {
'mac_target%': '10.6',
'build_mac32': 1,
'build_macold': 1,
}, {
'mac_target%': '10.8',
'build_mac32': 0,
'build_macold': 0,
}]
],
'ld_lib_prefix': '<(ld_lib_prefix)',

View file

@ -24,9 +24,7 @@
'variables': {
'qt_libs': [
'Qt5Core',
'qtpcre',
'Qt5Gui',
'qtfreetype',
'Qt5Widgets',
'qtharfbuzzng',
'Qt5Network',
@ -34,8 +32,15 @@
'Qt5PrintSupport',
'qwebp',
],
'conditions': [
[ 'build_macold', {
'qt_version%': '5.3.2',
}, {
'qt_version%': '5.6.0',
}]
],
},
'qt_version%': '5.6.0',
'qt_version%': '<(qt_version)',
'conditions': [
[ 'build_win', {
'qt_lib_prefix': '<(ld_lib_prefix)',
@ -57,9 +62,20 @@
'qcocoa',
],
}],
[ 'build_macold', {
'qt_loc_unix': '/usr/local/Qt-<(qt_version)'
}, {
'qt_loc_unix': '/usr/local/tdesktop/Qt-<(qt_version)',
'qt_libs': [
'<@(qt_libs)',
'qtfreetype',
'qtpcre',
],
}]
],
},
'qt_version%': '<(qt_version)',
'qt_loc_unix': '<(qt_loc_unix)',
'qt_version_loc': '<!(python -c "print(\'<(qt_version)\'.replace(\'.\', \'_\'))")',
'qt_libs_debug': [
'<!@(python -c "for s in \'<@(qt_libs)\'.split(\' \'): print(\'<(qt_lib_prefix)\' + s + \'<(qt_lib_debug_postfix)\')")',
@ -75,7 +91,7 @@
[ 'build_win', {
'qt_loc': '../../../Libraries/qt<(qt_version_loc)/qtbase',
}, {
'qt_loc': '/usr/local/tdesktop/Qt-<(qt_version)',
'qt_loc': '<(qt_loc_unix)',
}],
],
},

View file

@ -28,8 +28,6 @@
'CoreText',
'CoreGraphics',
'OpenGL',
'VideoToolbox',
'VideoDecodeAcceleration',
'AudioUnit',
'ApplicationServices',
'Foundation',
@ -40,8 +38,6 @@
'AudioToolbox',
'CoreAudio',
'QuartzCore',
'AVFoundation',
'CoreMedia',
'AppKit',
'CoreWLAN',
'IOKit',
@ -69,14 +65,40 @@
'<@(mac_common_flags)',
],
'OTHER_LDFLAGS': [
'-stdlib=libc++',
'<!@(python -c "for s in \'<@(mac_frameworks)\'.split(\' \'): print(\'-framework \' + s)")',
],
'MACOSX_DEPLOYMENT_TARGET': '<(mac_target)',
'COMBINE_HIDPI_IMAGES': 'YES',
'COPY_PHASE_STRIP': 'NO',
'CLANG_CXX_LANGUAGE_STANDARD': 'c++14',
},
'configurations': {
'Debug': {
'xcode_settings': {
'ENABLE_TESTABILITY': 'YES',
'ONLY_ACTIVE_ARCH': 'YES',
},
},
},
}],
[ 'build_macold', {
'xcode_settings': {
'OTHER_CFLAGS': [
'-Wno-inconsistent-missing-override',
],
'OTHER_CPLUSPLUSFLAGS': [
'-Wno-inconsistent-missing-override',
],
},
}, {
'xcode_settings': {
'CLANG_CXX_LIBRARY': 'libc++',
'OTHER_LDFLAGS': [
'-framework VideoToolbox',
'-framework VideoDecodeAcceleration',
'-framework AVFoundation',
'-framework CoreMedia',
],
},
}],
],

View file

@ -32,15 +32,8 @@
'-lssl',
'-lcrypto',
'/usr/local/lib/liblzma.a',
'/usr/local/lib/libopenal.a',
'/usr/local/lib/libopus.a',
'/usr/local/lib/libexif.a',
'-lavcodec',
'-lavformat',
'-lswscale',
'-lswresample',
'-lavutil',
'/usr/local/lib/libiconv.a',
'-lbase',
'-lcrashpad_client',
'-lcrashpad_util',
@ -57,17 +50,11 @@
],
'configurations': {
'Debug': {
'library_dirs': [
'<(libs_loc)/crashpad/crashpad/out/Debug',
],
'xcode_settings': {
'GCC_OPTIMIZATION_LEVEL': '0',
},
},
'Release': {
'library_dirs': [
'<(libs_loc)/crashpad/crashpad/out/Release',
],
'xcode_settings': {
'DEBUG_INFORMATION_FORMAT': 'dwarf-with-dsym',
'LLVM_LTO': 'YES',
@ -97,7 +84,80 @@
'action': [
'mkdir', '-p', '${BUILT_PRODUCTS_DIR}/Telegram.app/Contents/Helpers/'
],
}, {
}],
}], [ 'build_macold', {
'xcode_settings': {
'OTHER_LDFLAGS': [
'/usr/local/openal_old/lib/libopenal.a',
'/usr/local/zlib_old/lib/libz.a',
'/usr/local/iconv_old/lib/libiconv.a',
'/usr/local/ffmpeg_old/lib/libavcodec.a',
'/usr/local/ffmpeg_old/lib/libavformat.a',
'/usr/local/ffmpeg_old/lib/libavutil.a',
'/usr/local/ffmpeg_old/lib/libswscale.a',
'/usr/local/ffmpeg_old/lib/libswresample.a',
],
},
'include_dirs': [
'<(libs_loc)/crashpad_oldmac/crashpad',
'<(libs_loc)/crashpad_oldmac/crashpad/third_party/mini_chromium/mini_chromium',
],
'library_dirs': [
'/usr/local/ffmpeg_old',
],
'configurations': {
'Debug': {
'library_dirs': [
'<(libs_loc)/crashpad_oldmac/crashpad/out/Debug',
],
},
'Release': {
'library_dirs': [
'<(libs_loc)/crashpad_oldmac/crashpad/out/Release',
],
},
},
'postbuilds': [{
'postbuild_name': 'Copy crashpad_client to Helpers',
'action': [
'cp',
'<(libs_loc)/crashpad_oldmac/crashpad/out/${CONFIGURATION}/crashpad_handler',
'${BUILT_PRODUCTS_DIR}/Telegram.app/Contents/Helpers/',
],
}],
}, {
'xcode_settings': {
'OTHER_LDFLAGS': [
'/usr/local/lib/libz.a',
'/usr/local/lib/libopenal.a',
'/usr/local/lib/libiconv.a',
'/usr/local/lib/libavcodec.a',
'/usr/local/lib/libavformat.a',
'/usr/local/lib/libavutil.a',
'/usr/local/lib/libswscale.a',
'/usr/local/lib/libswresample.a',
],
},
'include_dirs': [
'<(libs_loc)/crashpad/crashpad',
'<(libs_loc)/crashpad/crashpad/third_party/mini_chromium/mini_chromium',
],
'library_dirs': [
'/usr/local/ffmpeg',
],
'configurations': {
'Debug': {
'library_dirs': [
'<(libs_loc)/crashpad/crashpad/out/Debug',
],
},
'Release': {
'library_dirs': [
'<(libs_loc)/crashpad/crashpad/out/Release',
],
},
},
'postbuilds': [{
'postbuild_name': 'Copy crashpad_client to Helpers',
'action': [
'cp',

View file

@ -25,6 +25,9 @@
'sources': [
'<(res_loc)/winrc/Telegram.rc',
],
'library_dirs': [
'<(libs_loc)/ffmpeg',
],
'libraries': [
'libeay32',
'ssleay32',