Build dependencies by script on Windows and macOS.
This commit is contained in:
parent
7797099a49
commit
54adf77d99
|
@ -52,12 +52,10 @@ jobs:
|
||||||
MIN_MAC: "-mmacosx-version-min=10.12"
|
MIN_MAC: "-mmacosx-version-min=10.12"
|
||||||
UNGUARDED: "-Werror=unguarded-availability-new"
|
UNGUARDED: "-Werror=unguarded-availability-new"
|
||||||
GIT: "https://github.com"
|
GIT: "https://github.com"
|
||||||
PREFIX: "/usr/local/macos"
|
|
||||||
MACOSX_DEPLOYMENT_TARGET: "10.12"
|
MACOSX_DEPLOYMENT_TARGET: "10.12"
|
||||||
XZ: "xz-5.2.5"
|
XZ: "xz-5.2.5"
|
||||||
QT: "5_15_2"
|
QT: "5_15_2"
|
||||||
OPENSSL_VER: "1_1_1"
|
OPENSSL_VER: "1_1_1"
|
||||||
QT_PREFIX: "/usr/local/desktop-app/Qt-5.15.2"
|
|
||||||
LIBICONV_VER: "libiconv-1.16"
|
LIBICONV_VER: "libiconv-1.16"
|
||||||
UPLOAD_ARTIFACT: "false"
|
UPLOAD_ARTIFACT: "false"
|
||||||
ONLY_CACHE: "false"
|
ONLY_CACHE: "false"
|
||||||
|
@ -88,7 +86,6 @@ jobs:
|
||||||
|
|
||||||
xcodebuild -version > CACHE_KEY.txt
|
xcodebuild -version > CACHE_KEY.txt
|
||||||
echo $MIN_MAC >> CACHE_KEY.txt
|
echo $MIN_MAC >> CACHE_KEY.txt
|
||||||
echo $PREFIX >> CACHE_KEY.txt
|
|
||||||
echo $MANUAL_CACHING >> CACHE_KEY.txt
|
echo $MANUAL_CACHING >> CACHE_KEY.txt
|
||||||
echo "$GITHUB_WORKSPACE" >> CACHE_KEY.txt
|
echo "$GITHUB_WORKSPACE" >> CACHE_KEY.txt
|
||||||
if [ "$AUTO_CACHING" == "1" ]; then
|
if [ "$AUTO_CACHING" == "1" ]; then
|
||||||
|
@ -99,9 +96,11 @@ jobs:
|
||||||
|
|
||||||
echo "$PWD/Libraries/depot_tools" >> $GITHUB_PATH
|
echo "$PWD/Libraries/depot_tools" >> $GITHUB_PATH
|
||||||
|
|
||||||
mkdir -p Libraries/macos
|
mkdir -p Libraries
|
||||||
cd Libraries/macos
|
cd Libraries
|
||||||
echo "LibrariesPath=`pwd`" >> $GITHUB_ENV
|
echo "LibrariesPath=`pwd`" >> $GITHUB_ENV
|
||||||
|
echo "PREFIX=`pwd`/local" >> $GITHUB_ENV
|
||||||
|
echo "QT_PREFIX=`pwd`/local/Qt-5.15.2" >> $GITHUB_ENV
|
||||||
|
|
||||||
curl -o tg_owt-version.json https://api.github.com/repos/desktop-app/tg_owt/git/refs/heads/master
|
curl -o tg_owt-version.json https://api.github.com/repos/desktop-app/tg_owt/git/refs/heads/master
|
||||||
|
|
||||||
|
@ -123,7 +122,7 @@ jobs:
|
||||||
cd $XZ
|
cd $XZ
|
||||||
CFLAGS="$MIN_MAC" LDFLAGS="$MIN_MAC" ./configure --prefix=$PREFIX
|
CFLAGS="$MIN_MAC" LDFLAGS="$MIN_MAC" ./configure --prefix=$PREFIX
|
||||||
make -j$(nproc)
|
make -j$(nproc)
|
||||||
sudo make install
|
make install
|
||||||
|
|
||||||
- name: Zlib.
|
- name: Zlib.
|
||||||
run: |
|
run: |
|
||||||
|
@ -133,7 +132,7 @@ jobs:
|
||||||
cd zlib
|
cd zlib
|
||||||
CFLAGS="$MIN_MAC $UNGUARDED" LDFLAGS="$MIN_MAC" ./configure --prefix=$PREFIX
|
CFLAGS="$MIN_MAC $UNGUARDED" LDFLAGS="$MIN_MAC" ./configure --prefix=$PREFIX
|
||||||
make -j$(nproc)
|
make -j$(nproc)
|
||||||
sudo make install
|
make install
|
||||||
|
|
||||||
- name: MozJPEG.
|
- name: MozJPEG.
|
||||||
run: |
|
run: |
|
||||||
|
@ -147,7 +146,7 @@ jobs:
|
||||||
-DWITH_JPEG8=ON \
|
-DWITH_JPEG8=ON \
|
||||||
-DPNG_SUPPORTED=OFF
|
-DPNG_SUPPORTED=OFF
|
||||||
cmake --build build -j$(nproc)
|
cmake --build build -j$(nproc)
|
||||||
sudo cmake --install build
|
cmake --install build
|
||||||
|
|
||||||
- name: OpenSSL cache.
|
- name: OpenSSL cache.
|
||||||
id: cache-openssl
|
id: cache-openssl
|
||||||
|
@ -178,7 +177,7 @@ jobs:
|
||||||
}
|
}
|
||||||
copyLib libssl
|
copyLib libssl
|
||||||
copyLib libcrypto
|
copyLib libcrypto
|
||||||
sudo cp -R include/. $SSL_DIR/include/
|
cp -R include/. $SSL_DIR/include/
|
||||||
|
|
||||||
- name: Opus cache.
|
- name: Opus cache.
|
||||||
id: cache-opus
|
id: cache-opus
|
||||||
|
@ -197,11 +196,11 @@ jobs:
|
||||||
./autogen.sh
|
./autogen.sh
|
||||||
CFLAGS="$MIN_MAC $UNGUARDED" CPPFLAGS="$MIN_MAC $UNGUARDED" LDFLAGS="$MIN_MAC" ./configure --prefix=$PREFIX
|
CFLAGS="$MIN_MAC $UNGUARDED" CPPFLAGS="$MIN_MAC $UNGUARDED" LDFLAGS="$MIN_MAC" ./configure --prefix=$PREFIX
|
||||||
make -j$(nproc)
|
make -j$(nproc)
|
||||||
sudo make DESTDIR="$LibrariesPath/opus-cache" install
|
make DESTDIR="$LibrariesPath/opus-cache" install
|
||||||
- name: Opus install.
|
- name: Opus install.
|
||||||
run: |
|
run: |
|
||||||
cd $LibrariesPath
|
cd $LibrariesPath
|
||||||
sudo cp -R opus-cache/. /
|
cp -R opus-cache/. /
|
||||||
|
|
||||||
- name: Rnnoise.
|
- name: Rnnoise.
|
||||||
run: |
|
run: |
|
||||||
|
@ -229,11 +228,11 @@ jobs:
|
||||||
cd $LIBICONV_VER
|
cd $LIBICONV_VER
|
||||||
CFLAGS="$MIN_MAC $UNGUARDED" CPPFLAGS="$MIN_MAC $UNGUARDED" LDFLAGS="$MIN_MAC" ./configure --enable-static --prefix=$PREFIX
|
CFLAGS="$MIN_MAC $UNGUARDED" CPPFLAGS="$MIN_MAC $UNGUARDED" LDFLAGS="$MIN_MAC" ./configure --enable-static --prefix=$PREFIX
|
||||||
make -j$(nproc)
|
make -j$(nproc)
|
||||||
sudo make DESTDIR="$LibrariesPath/libiconv-cache" install
|
make DESTDIR="$LibrariesPath/libiconv-cache" install
|
||||||
- name: Libiconv install.
|
- name: Libiconv install.
|
||||||
run: |
|
run: |
|
||||||
cd $LibrariesPath
|
cd $LibrariesPath
|
||||||
sudo cp -R libiconv-cache/. /
|
cp -R libiconv-cache/. /
|
||||||
|
|
||||||
- name: FFmpeg cache.
|
- name: FFmpeg cache.
|
||||||
id: cache-ffmpeg
|
id: cache-ffmpeg
|
||||||
|
@ -356,7 +355,7 @@ jobs:
|
||||||
--enable-muxer=opus
|
--enable-muxer=opus
|
||||||
|
|
||||||
make -j$(nproc)
|
make -j$(nproc)
|
||||||
sudo make install
|
make install
|
||||||
- name: FFmpeg install.
|
- name: FFmpeg install.
|
||||||
run: |
|
run: |
|
||||||
cd $LibrariesPath
|
cd $LibrariesPath
|
||||||
|
@ -371,8 +370,8 @@ jobs:
|
||||||
copyLib libswscale
|
copyLib libswscale
|
||||||
copyLib libavutil
|
copyLib libavutil
|
||||||
|
|
||||||
sudo cp -R ffmpeg-cache/. $PREFIX
|
cp -R ffmpeg-cache/. $PREFIX
|
||||||
sudo cp -R ffmpeg-cache/include/. ffmpeg/
|
cp -R ffmpeg-cache/include/. ffmpeg/
|
||||||
|
|
||||||
- name: OpenAL Soft.
|
- name: OpenAL Soft.
|
||||||
run: |
|
run: |
|
||||||
|
@ -388,7 +387,7 @@ jobs:
|
||||||
-D CMAKE_OSX_DEPLOYMENT_TARGET:STRING=$MACOSX_DEPLOYMENT_TARGET ..
|
-D CMAKE_OSX_DEPLOYMENT_TARGET:STRING=$MACOSX_DEPLOYMENT_TARGET ..
|
||||||
|
|
||||||
make -j$(nproc)
|
make -j$(nproc)
|
||||||
sudo make install
|
make install
|
||||||
|
|
||||||
- name: Crashpad cache.
|
- name: Crashpad cache.
|
||||||
id: cache-crashpad
|
id: cache-crashpad
|
||||||
|
@ -440,8 +439,8 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
cd $LibrariesPath
|
cd $LibrariesPath
|
||||||
mv qt-cache Qt-5.15.2
|
mv qt-cache Qt-5.15.2
|
||||||
sudo mkdir -p $QT_PREFIX
|
mkdir -p $QT_PREFIX
|
||||||
sudo mv -f Qt-5.15.2 "$(dirname "$QT_PREFIX")"/
|
mv -f Qt-5.15.2 "$(dirname "$QT_PREFIX")"/
|
||||||
- name: Qt 5.15.2 build.
|
- name: Qt 5.15.2 build.
|
||||||
if: steps.cache-qt.outputs.cache-hit != 'true'
|
if: steps.cache-qt.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
|
@ -476,7 +475,7 @@ jobs:
|
||||||
ZLIB_LIBS="$PREFIX/lib/libz.a"
|
ZLIB_LIBS="$PREFIX/lib/libz.a"
|
||||||
|
|
||||||
make -j$(nproc)
|
make -j$(nproc)
|
||||||
sudo make install
|
make install
|
||||||
|
|
||||||
make clean
|
make clean
|
||||||
cp -r $QT_PREFIX $LibrariesPath/qt-cache
|
cp -r $QT_PREFIX $LibrariesPath/qt-cache
|
||||||
|
|
|
@ -238,7 +238,7 @@ if [ "$BuildTarget" == "mac" ] || [ "$BuildTarget" == "macstore" ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Dumping debug symbols.."
|
echo "Dumping debug symbols.."
|
||||||
"$HomePath/../../Libraries/macos/breakpad/src/tools/mac/dump_syms/build/Release/dump_syms" "$ReleasePath/$BinaryName.app.dSYM" > "$ReleasePath/$BinaryName.sym" 2>/dev/null
|
"$HomePath/../../Libraries/breakpad/src/tools/mac/dump_syms/build/Release/dump_syms" "$ReleasePath/$BinaryName.app.dSYM" > "$ReleasePath/$BinaryName.sym" 2>/dev/null
|
||||||
echo "Done!"
|
echo "Done!"
|
||||||
|
|
||||||
echo "Stripping the executable.."
|
echo "Stripping the executable.."
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
set -e
|
||||||
|
FullExecPath=$PWD
|
||||||
|
pushd `dirname $0` > /dev/null
|
||||||
|
FullScriptPath=`pwd`
|
||||||
|
popd > /dev/null
|
||||||
|
|
||||||
|
python3 $FullScriptPath/prepare.py "$@"
|
|
@ -0,0 +1,789 @@
|
||||||
|
import os, sys, pprint, re, json, pathlib, hashlib, subprocess, glob
|
||||||
|
|
||||||
|
executePath = os.getcwd()
|
||||||
|
scriptPath = os.path.dirname(os.path.realpath(__file__))
|
||||||
|
|
||||||
|
def finish(code):
|
||||||
|
global executePath
|
||||||
|
os.chdir(executePath)
|
||||||
|
sys.exit(code)
|
||||||
|
|
||||||
|
def error(text):
|
||||||
|
print('[ERROR] ' + text)
|
||||||
|
finish(1)
|
||||||
|
|
||||||
|
forcedSections = sys.argv[1:]
|
||||||
|
|
||||||
|
win = (sys.platform == 'win32')
|
||||||
|
mac = (sys.platform == 'darwin')
|
||||||
|
win32 = win and (os.environ['Platform'] == 'x86')
|
||||||
|
win64 = win and (os.environ['Platform'] == 'x64')
|
||||||
|
|
||||||
|
if win and not 'COMSPEC' in os.environ:
|
||||||
|
error('COMSPEC environment variable is not set.')
|
||||||
|
|
||||||
|
if win and not win32 and not win64:
|
||||||
|
error('Make sure to run from Native Tools Command Prompt.')
|
||||||
|
|
||||||
|
os.chdir(scriptPath + '/../../../..')
|
||||||
|
|
||||||
|
dirSep = '\\' if win else '/'
|
||||||
|
pathSep = ';' if win else ':'
|
||||||
|
libsLoc = 'Libraries' if not win64 else 'Libraries/win64'
|
||||||
|
keysLoc = 'cache_keys'
|
||||||
|
|
||||||
|
rootDir = os.getcwd()
|
||||||
|
libsDir = rootDir + dirSep + libsLoc
|
||||||
|
thirdPartyDir = rootDir + dirSep + 'ThirdParty'
|
||||||
|
usedPrefix = libsDir + dirSep + 'local'
|
||||||
|
|
||||||
|
if not os.path.isdir(libsDir + '/' + keysLoc):
|
||||||
|
pathlib.Path(libsDir + '/' + keysLoc).mkdir(parents=True, exist_ok=True)
|
||||||
|
if not os.path.isdir(thirdPartyDir + '/' + keysLoc):
|
||||||
|
pathlib.Path(thirdPartyDir + '/' + keysLoc).mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
pathPrefixes = [
|
||||||
|
'ThirdParty\\Strawberry\\perl\\bin',
|
||||||
|
'ThirdParty\\Python27',
|
||||||
|
'ThirdParty\\NASM',
|
||||||
|
'ThirdParty\\jom',
|
||||||
|
'ThirdParty\\cmake\\bin',
|
||||||
|
'ThirdParty\\yasm',
|
||||||
|
'ThirdParty\\gyp',
|
||||||
|
'ThirdParty\\Ninja',
|
||||||
|
] if win else [
|
||||||
|
'ThirdParty/gyp',
|
||||||
|
'ThirdParty/depot_tools',
|
||||||
|
]
|
||||||
|
pathPrefix = ''
|
||||||
|
for singlePrefix in pathPrefixes:
|
||||||
|
pathPrefix = pathPrefix + rootDir + dirSep + singlePrefix + pathSep
|
||||||
|
|
||||||
|
environment = {
|
||||||
|
'MAKE_THREADS_CNT': '-j8',
|
||||||
|
'MACOSX_DEPLOYMENT_TARGET': '10.12',
|
||||||
|
'UNGUARDED': '-Werror=unguarded-availability-new',
|
||||||
|
'MIN_VER': '-mmacosx-version-min=10.12',
|
||||||
|
'USED_PREFIX': usedPrefix,
|
||||||
|
'ROOT_DIR': rootDir,
|
||||||
|
'LIBS_DIR': libsDir,
|
||||||
|
'SPECIAL_TARGET': 'win' if win32 else 'win64' if win64 else 'mac',
|
||||||
|
'X8664': 'x86' if win32 else 'x64',
|
||||||
|
'WIN32X64': 'Win32' if win32 else 'x64',
|
||||||
|
'PATH_PREFIX': pathPrefix,
|
||||||
|
}
|
||||||
|
ignoreInCacheForThirdParty = [
|
||||||
|
'USED_PREFIX',
|
||||||
|
'LIBS_DIR',
|
||||||
|
'SPECIAL_TARGET',
|
||||||
|
'X8664',
|
||||||
|
'WIN32X64',
|
||||||
|
]
|
||||||
|
|
||||||
|
environmentKeyString = ''
|
||||||
|
envForThirdPartyKeyString = ''
|
||||||
|
for key in environment:
|
||||||
|
part = key + '=' + environment[key] + ';'
|
||||||
|
environmentKeyString += part
|
||||||
|
if not key in ignoreInCacheForThirdParty:
|
||||||
|
envForThirdPartyKeyString += part
|
||||||
|
environmentKey = hashlib.sha1(environmentKeyString.encode('utf-8')).hexdigest()
|
||||||
|
envForThirdPartyKey = hashlib.sha1(envForThirdPartyKeyString.encode('utf-8')).hexdigest()
|
||||||
|
|
||||||
|
modifiedEnv = os.environ.copy()
|
||||||
|
for key in environment:
|
||||||
|
modifiedEnv[key] = environment[key]
|
||||||
|
|
||||||
|
modifiedEnv['PATH'] = environment['PATH_PREFIX'] + modifiedEnv['PATH']
|
||||||
|
|
||||||
|
def computeFileHash(path):
|
||||||
|
sha1 = hashlib.sha1()
|
||||||
|
with open(path, 'rb') as f:
|
||||||
|
while True:
|
||||||
|
data = f.read(256 * 1024)
|
||||||
|
if not data:
|
||||||
|
break
|
||||||
|
sha1.update(data)
|
||||||
|
return sha1.hexdigest()
|
||||||
|
|
||||||
|
def computeCacheKey(stage):
|
||||||
|
if (stage['location'] == 'ThirdParty'):
|
||||||
|
envKey = envForThirdPartyKey
|
||||||
|
else:
|
||||||
|
envKey = environmentKey
|
||||||
|
objects = [
|
||||||
|
envKey,
|
||||||
|
stage['location'],
|
||||||
|
stage['name'],
|
||||||
|
stage['version'],
|
||||||
|
stage['commands']
|
||||||
|
]
|
||||||
|
for pattern in stage['dependencies']:
|
||||||
|
pathlist = glob.glob(libsDir + '/' + pattern)
|
||||||
|
items = [pattern]
|
||||||
|
if len(pathlist) == 0:
|
||||||
|
pathlist = glob.glob(thirdPartyDir + '/' + pattern)
|
||||||
|
if len(pathlist) == 0:
|
||||||
|
error('Nothing found: ' + pattern)
|
||||||
|
for path in pathlist:
|
||||||
|
if not os.path.exists(path):
|
||||||
|
error('Not found: ' + path)
|
||||||
|
items.append(computeFileHash(path))
|
||||||
|
objects.append(':'.join(items))
|
||||||
|
return hashlib.sha1(';'.join(objects).encode('utf-8')).hexdigest()
|
||||||
|
|
||||||
|
def keyPath(stage):
|
||||||
|
return stage['directory'] + '/' + keysLoc + '/' + stage['name']
|
||||||
|
|
||||||
|
def checkCacheKey(stage):
|
||||||
|
if not 'key' in stage:
|
||||||
|
error('Key not set in stage: ' + stage['name'])
|
||||||
|
key = keyPath(stage)
|
||||||
|
if stage['name'] in forcedSections or not os.path.exists(key) or not os.path.exists(stage['directory'] + '/' + stage['name']):
|
||||||
|
return False
|
||||||
|
with open(key, 'r') as file:
|
||||||
|
return (file.read() == stage['key'])
|
||||||
|
|
||||||
|
def clearCacheKey(stage):
|
||||||
|
key = keyPath(stage)
|
||||||
|
if os.path.exists(key):
|
||||||
|
os.remove(key)
|
||||||
|
|
||||||
|
def writeCacheKey(stage):
|
||||||
|
if not 'key' in stage:
|
||||||
|
error('Key not set in stage: ' + stage['name'])
|
||||||
|
key = keyPath(stage)
|
||||||
|
with open(key, 'w') as file:
|
||||||
|
file.write(stage['key'])
|
||||||
|
|
||||||
|
stages = []
|
||||||
|
|
||||||
|
def removeDir(folder):
|
||||||
|
if win:
|
||||||
|
return 'if exist ' + folder + ' rmdir /Q /S ' + folder + '\nif exist ' + folder + ' exit /b 1'
|
||||||
|
return 'rm -rf ' + folder
|
||||||
|
|
||||||
|
def filterByPlatform(commands):
|
||||||
|
commands = commands.split('\n')
|
||||||
|
result = ''
|
||||||
|
dependencies = []
|
||||||
|
version = '0'
|
||||||
|
skip = False
|
||||||
|
for command in commands:
|
||||||
|
m = re.match(r'(!?)([a-z0-9_]+):', command)
|
||||||
|
if m and m.group(2) != 'depends' and m.group(2) != 'version':
|
||||||
|
scopes = m.group(2).split('_')
|
||||||
|
inscope = 'common' in scopes
|
||||||
|
if win and 'win' in scopes:
|
||||||
|
inscope = True
|
||||||
|
if win32 and 'win32' in scopes:
|
||||||
|
inscope = True
|
||||||
|
if win64 and 'win64' in scopes:
|
||||||
|
inscope = True
|
||||||
|
if mac and 'mac' in scopes:
|
||||||
|
inscope = True
|
||||||
|
# if linux and 'linux' in scopes:
|
||||||
|
# inscope = True
|
||||||
|
skip = inscope if m.group(1) == '!' else not inscope
|
||||||
|
elif not skip:
|
||||||
|
if m and m.group(2) == 'version':
|
||||||
|
version = version + '.' + command[len(m.group(0)):].strip()
|
||||||
|
elif m and m.group(2) == 'depends':
|
||||||
|
pattern = command[len(m.group(0)):].strip()
|
||||||
|
dependencies.append(pattern)
|
||||||
|
else:
|
||||||
|
command = command.strip()
|
||||||
|
if len(command) > 0:
|
||||||
|
result = result + command + '\n'
|
||||||
|
return [result, dependencies, version]
|
||||||
|
|
||||||
|
def stage(name, commands, location = 'Libraries'):
|
||||||
|
if location == 'Libraries':
|
||||||
|
directory = libsDir
|
||||||
|
elif location == 'ThirdParty':
|
||||||
|
directory = thirdPartyDir
|
||||||
|
else:
|
||||||
|
error('Unknown location: ' + location)
|
||||||
|
[commands, dependencies, version] = filterByPlatform(commands)
|
||||||
|
if len(commands) > 0:
|
||||||
|
stages.append({
|
||||||
|
'name': name,
|
||||||
|
'location': location,
|
||||||
|
'directory': directory,
|
||||||
|
'commands': commands,
|
||||||
|
'version': version,
|
||||||
|
'dependencies': dependencies
|
||||||
|
})
|
||||||
|
|
||||||
|
def winFailOnEach(command):
|
||||||
|
commands = command.split('\n')
|
||||||
|
result = ''
|
||||||
|
startingCommand = True
|
||||||
|
for command in commands:
|
||||||
|
command = re.sub(r'\$([A-Za-z0-9_]+)', r'%\1%', command)
|
||||||
|
if re.search(r'\$', command):
|
||||||
|
error('Bad command: ' + command)
|
||||||
|
appendCall = startingCommand and not re.match(r'(if|for) ', command)
|
||||||
|
called = 'call ' + command if appendCall else command
|
||||||
|
result = result + called
|
||||||
|
if command.endswith('^'):
|
||||||
|
startingCommand = False
|
||||||
|
else:
|
||||||
|
startingCommand = True
|
||||||
|
result = result + '\r\nif %errorlevel% neq 0 exit /b %errorlevel%\r\n'
|
||||||
|
return result
|
||||||
|
|
||||||
|
def run(command):
|
||||||
|
print(command)
|
||||||
|
if win:
|
||||||
|
if os.path.exists("command.bat"):
|
||||||
|
os.remove("command.bat")
|
||||||
|
with open("command.bat", 'w') as file:
|
||||||
|
file.write('@echo OFF\r\n' + winFailOnEach(command))
|
||||||
|
result = subprocess.run("command.bat", shell=True, env=modifiedEnv).returncode == 0
|
||||||
|
if result and os.path.exists("command.bat"):
|
||||||
|
os.remove("command.bat")
|
||||||
|
return result
|
||||||
|
elif re.search(r'\%', command):
|
||||||
|
error('Bad command: ' + command)
|
||||||
|
else:
|
||||||
|
return subprocess.run("set -e\n" + command, shell=True, env=modifiedEnv).returncode == 0
|
||||||
|
|
||||||
|
def runStages():
|
||||||
|
count = len(stages)
|
||||||
|
index = 0
|
||||||
|
for stage in stages:
|
||||||
|
index = index + 1
|
||||||
|
version = ('#' + str(stage['version'])) if (stage['version'] != '0') else ''
|
||||||
|
prefix = '[' + str(index) + '/' + str(count) + '](' + stage['location'] + '/' + stage['name'] + version + ')'
|
||||||
|
print(prefix + ': ', end = '')
|
||||||
|
stage['key'] = computeCacheKey(stage)
|
||||||
|
if checkCacheKey(stage):
|
||||||
|
print('SKIPPING')
|
||||||
|
else:
|
||||||
|
clearCacheKey(stage)
|
||||||
|
print('BUILDING')
|
||||||
|
os.chdir(stage['directory'])
|
||||||
|
commands = removeDir(stage['name']) + '\n' + stage['commands']
|
||||||
|
if not run(commands):
|
||||||
|
print(prefix + ': FAILED')
|
||||||
|
finish(1)
|
||||||
|
writeCacheKey(stage)
|
||||||
|
|
||||||
|
stage('patches', """
|
||||||
|
git clone https://github.com/desktop-app/patches.git
|
||||||
|
cd patches
|
||||||
|
git checkout 975d6fbf1b
|
||||||
|
""")
|
||||||
|
|
||||||
|
stage('depot_tools', """
|
||||||
|
mac:
|
||||||
|
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
|
||||||
|
""", 'ThirdParty')
|
||||||
|
|
||||||
|
stage('gyp', """
|
||||||
|
git clone https://chromium.googlesource.com/external/gyp
|
||||||
|
cd gyp
|
||||||
|
git checkout d6c5dd51dc
|
||||||
|
depends:patches/gyp.diff
|
||||||
|
git apply $LIBS_DIR/patches/gyp.diff
|
||||||
|
mac:
|
||||||
|
./setup.py build
|
||||||
|
""", 'ThirdParty')
|
||||||
|
|
||||||
|
stage('yasm', """
|
||||||
|
mac:
|
||||||
|
git clone -b macos_padding https://github.com/desktop-app/yasm.git
|
||||||
|
cd yasm
|
||||||
|
./autogen.sh
|
||||||
|
make $MAKE_THREADS_CNT
|
||||||
|
""", 'ThirdParty')
|
||||||
|
|
||||||
|
stage('macho_edit', """
|
||||||
|
mac:
|
||||||
|
git clone https://github.com/desktop-app/macho_edit.git
|
||||||
|
cd macho_edit
|
||||||
|
xcodebuild build -configuration Release -project macho_edit.xcodeproj -target macho_edit
|
||||||
|
""", 'ThirdParty')
|
||||||
|
|
||||||
|
stage('lzma', """
|
||||||
|
win:
|
||||||
|
git clone https://github.com/desktop-app/lzma.git
|
||||||
|
cd lzma\\C\\Util\\LzmaLib
|
||||||
|
msbuild LzmaLib.sln /property:Configuration=Debug /property:Platform="$X8664"
|
||||||
|
msbuild LzmaLib.sln /property:Configuration=Release /property:Platform="$X8664"
|
||||||
|
""")
|
||||||
|
|
||||||
|
stage('xz', """
|
||||||
|
!win:
|
||||||
|
git clone -b v5.2.5 https://git.tukaani.org/xz.git
|
||||||
|
cd xz
|
||||||
|
CFLAGS="$UNGUARDED" CPPFLAGS="$UNGUARDED" cmake -B build . \\
|
||||||
|
-D CMAKE_OSX_DEPLOYMENT_TARGET:STRING=$MACOSX_DEPLOYMENT_TARGET \\
|
||||||
|
-D CMAKE_INSTALL_PREFIX:STRING=$USED_PREFIX
|
||||||
|
cmake --build build $MAKE_THREADS_CNT
|
||||||
|
cmake --install build
|
||||||
|
""")
|
||||||
|
|
||||||
|
stage('zlib', """
|
||||||
|
git clone https://github.com/desktop-app/zlib.git
|
||||||
|
cd zlib
|
||||||
|
win:
|
||||||
|
cd contrib\\vstudio\\vc14
|
||||||
|
msbuild zlibstat.vcxproj /property:Configuration=Debug /property:Platform="%X8664%"
|
||||||
|
msbuild zlibstat.vcxproj /property:Configuration=ReleaseWithoutAsm /property:Platform="%X8664%"
|
||||||
|
mac:
|
||||||
|
CFLAGS="$MIN_VER $UNGUARDED" LDFLAGS="$MIN_VER" ./configure \\
|
||||||
|
--prefix=$USED_PREFIX
|
||||||
|
make $MAKE_THREADS_CNT
|
||||||
|
make install
|
||||||
|
""")
|
||||||
|
|
||||||
|
stage('mozjpeg', """
|
||||||
|
git clone -b v4.0.1-rc2 https://github.com/mozilla/mozjpeg.git
|
||||||
|
cd mozjpeg
|
||||||
|
win:
|
||||||
|
cmake . ^
|
||||||
|
-G "Visual Studio 16 2019" ^
|
||||||
|
-A %WIN32X64% ^
|
||||||
|
-DWITH_JPEG8=ON ^
|
||||||
|
-DPNG_SUPPORTED=OFF
|
||||||
|
cmake --build . --config Debug
|
||||||
|
cmake --build . --config Release
|
||||||
|
mac:
|
||||||
|
cmake -B build . \\
|
||||||
|
-D CMAKE_BUILD_TYPE=Release \\
|
||||||
|
-D CMAKE_INSTALL_PREFIX=$USED_PREFIX \\
|
||||||
|
-D CMAKE_OSX_DEPLOYMENT_TARGET:STRING=$MACOSX_DEPLOYMENT_TARGET \\
|
||||||
|
-D WITH_JPEG8=ON \\
|
||||||
|
-D PNG_SUPPORTED=OFF
|
||||||
|
cmake --build build $MAKE_THREADS_CNT
|
||||||
|
cmake --install build
|
||||||
|
""")
|
||||||
|
|
||||||
|
stage('openssl', """
|
||||||
|
git clone -b OpenSSL_1_1_1-stable https://github.com/openssl/openssl openssl
|
||||||
|
cd openssl
|
||||||
|
win32:
|
||||||
|
perl Configure no-shared no-tests debug-VC-WIN32
|
||||||
|
win64:
|
||||||
|
perl Configure no-shared no-tests debug-VC-WIN64A
|
||||||
|
win:
|
||||||
|
nmake
|
||||||
|
mkdir out.dbg
|
||||||
|
move libcrypto.lib out.dbg
|
||||||
|
move libssl.lib out.dbg
|
||||||
|
move ossl_static.pdb out.dbg\\ossl_static
|
||||||
|
nmake clean
|
||||||
|
move out.dbg\\ossl_static out.dbg\\ossl_static.pdb
|
||||||
|
win32:
|
||||||
|
perl Configure no-shared no-tests VC-WIN32
|
||||||
|
win64:
|
||||||
|
perl Configure no-shared no-tests VC-WIN64A
|
||||||
|
win:
|
||||||
|
nmake
|
||||||
|
mkdir out
|
||||||
|
move libcrypto.lib out
|
||||||
|
move libssl.lib out
|
||||||
|
move ossl_static.pdb out
|
||||||
|
mac:
|
||||||
|
./Configure --prefix=$USED_PREFIX no-shared no-tests darwin64-x86_64-cc $MIN_VER
|
||||||
|
make build_libs $MAKE_THREADS_CNT
|
||||||
|
""")
|
||||||
|
|
||||||
|
stage('opus', """
|
||||||
|
git clone -b td-v1.3.1 https://github.com/telegramdesktop/opus.git
|
||||||
|
cd opus
|
||||||
|
win:
|
||||||
|
cd win32\\VS2015
|
||||||
|
msbuild opus.sln /property:Configuration=Debug /property:Platform="%WIN32X64%"
|
||||||
|
msbuild opus.sln /property:Configuration=Release /property:Platform="%WIN32X64%"
|
||||||
|
mac:
|
||||||
|
./autogen.sh
|
||||||
|
CFLAGS="$MIN_VER $UNGUARDED" CPPFLAGS="$MIN_VER $UNGUARDED" LDFLAGS="$MIN_VER" ./configure --prefix=$USED_PREFIX
|
||||||
|
make $MAKE_THREADS_CNT
|
||||||
|
make install
|
||||||
|
""")
|
||||||
|
|
||||||
|
stage('rnnoise', """
|
||||||
|
git clone https://github.com/desktop-app/rnnoise.git
|
||||||
|
cd rnnoise
|
||||||
|
mkdir out
|
||||||
|
cd out
|
||||||
|
win:
|
||||||
|
cmake -A %WIN32X64% ..
|
||||||
|
cmake --build . --config Debug
|
||||||
|
cmake --build . --config Release
|
||||||
|
!win:
|
||||||
|
mkdir Debug
|
||||||
|
cd Debug
|
||||||
|
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug ../..
|
||||||
|
ninja
|
||||||
|
cd ..
|
||||||
|
mkdir Release
|
||||||
|
cd Release
|
||||||
|
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ../..
|
||||||
|
ninja
|
||||||
|
""")
|
||||||
|
|
||||||
|
stage('libiconv', """
|
||||||
|
mac:
|
||||||
|
VERSION=1.16
|
||||||
|
rm -f libiconv.tar.gz
|
||||||
|
wget -O libiconv.tar.gz https://ftp.gnu.org/pub/gnu/libiconv/libiconv-$VERSION.tar.gz
|
||||||
|
rm -rf libiconv-$VERSION
|
||||||
|
tar -xvzf libiconv.tar.gz
|
||||||
|
rm libiconv.tar.gz
|
||||||
|
mv libiconv-$VERSION libiconv
|
||||||
|
cd libiconv
|
||||||
|
CFLAGS="$MIN_VER $UNGUARDED" CPPFLAGS="$MIN_VER $UNGUARDED" LDFLAGS="$MIN_VER" ./configure --enable-static --prefix=$USED_PREFIX
|
||||||
|
make $MAKE_THREADS_CNT
|
||||||
|
make install
|
||||||
|
""")
|
||||||
|
|
||||||
|
stage('ffmpeg', """
|
||||||
|
git clone https://github.com/FFmpeg/FFmpeg.git ffmpeg
|
||||||
|
cd ffmpeg
|
||||||
|
git checkout release/4.4
|
||||||
|
win:
|
||||||
|
SET PATH_BACKUP_=%PATH%
|
||||||
|
SET PATH=%ROOT_DIR%\\ThirdParty\\msys64\\usr\\bin;%PATH%
|
||||||
|
|
||||||
|
set CHERE_INVOKING=enabled_from_arguments
|
||||||
|
set MSYS2_PATH_TYPE=inherit
|
||||||
|
|
||||||
|
depends:patches/build_ffmpeg_win.sh
|
||||||
|
bash --login ../patches/build_ffmpeg_win.sh
|
||||||
|
|
||||||
|
SET PATH=%PATH_BACKUP_%
|
||||||
|
mac:
|
||||||
|
CFLAGS=`freetype-config --cflags`
|
||||||
|
LDFLAGS=`freetype-config --libs`
|
||||||
|
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig:/usr/X11/lib/pkgconfig
|
||||||
|
|
||||||
|
depends:patches/macos_yasm_wrap.sh
|
||||||
|
depends:yasm/yasm
|
||||||
|
depends:macho_edit/build/Release/macho_edit
|
||||||
|
cp ../patches/macos_yasm_wrap.sh ./
|
||||||
|
|
||||||
|
./configure --prefix=$USED_PREFIX \
|
||||||
|
--extra-cflags="$MIN_VER $UNGUARDED -DCONFIG_SAFE_BITSTREAM_READER=1" \
|
||||||
|
--extra-cxxflags="$MIN_VER $UNGUARDED -DCONFIG_SAFE_BITSTREAM_READER=1" \
|
||||||
|
--extra-ldflags="$MIN_VER" \
|
||||||
|
--x86asmexe=`pwd`/macos_yasm_wrap.sh \
|
||||||
|
--enable-protocol=file \
|
||||||
|
--enable-libopus \
|
||||||
|
--disable-programs \
|
||||||
|
--disable-doc \
|
||||||
|
--disable-network \
|
||||||
|
--disable-everything \
|
||||||
|
--enable-hwaccel=h264_videotoolbox \
|
||||||
|
--enable-hwaccel=hevc_videotoolbox \
|
||||||
|
--enable-hwaccel=mpeg1_videotoolbox \
|
||||||
|
--enable-hwaccel=mpeg2_videotoolbox \
|
||||||
|
--enable-hwaccel=mpeg4_videotoolbox \
|
||||||
|
--enable-decoder=aac \
|
||||||
|
--enable-decoder=aac_at \
|
||||||
|
--enable-decoder=aac_fixed \
|
||||||
|
--enable-decoder=aac_latm \
|
||||||
|
--enable-decoder=aasc \
|
||||||
|
--enable-decoder=alac \
|
||||||
|
--enable-decoder=alac_at \
|
||||||
|
--enable-decoder=flac \
|
||||||
|
--enable-decoder=gif \
|
||||||
|
--enable-decoder=h264 \
|
||||||
|
--enable-decoder=hevc \
|
||||||
|
--enable-decoder=mp1 \
|
||||||
|
--enable-decoder=mp1float \
|
||||||
|
--enable-decoder=mp2 \
|
||||||
|
--enable-decoder=mp2float \
|
||||||
|
--enable-decoder=mp3 \
|
||||||
|
--enable-decoder=mp3adu \
|
||||||
|
--enable-decoder=mp3adufloat \
|
||||||
|
--enable-decoder=mp3float \
|
||||||
|
--enable-decoder=mp3on4 \
|
||||||
|
--enable-decoder=mp3on4float \
|
||||||
|
--enable-decoder=mpeg4 \
|
||||||
|
--enable-decoder=msmpeg4v2 \
|
||||||
|
--enable-decoder=msmpeg4v3 \
|
||||||
|
--enable-decoder=opus \
|
||||||
|
--enable-decoder=pcm_alaw \
|
||||||
|
--enable-decoder=pcm_alaw_at \
|
||||||
|
--enable-decoder=pcm_f32be \
|
||||||
|
--enable-decoder=pcm_f32le \
|
||||||
|
--enable-decoder=pcm_f64be \
|
||||||
|
--enable-decoder=pcm_f64le \
|
||||||
|
--enable-decoder=pcm_lxf \
|
||||||
|
--enable-decoder=pcm_mulaw \
|
||||||
|
--enable-decoder=pcm_mulaw_at \
|
||||||
|
--enable-decoder=pcm_s16be \
|
||||||
|
--enable-decoder=pcm_s16be_planar \
|
||||||
|
--enable-decoder=pcm_s16le \
|
||||||
|
--enable-decoder=pcm_s16le_planar \
|
||||||
|
--enable-decoder=pcm_s24be \
|
||||||
|
--enable-decoder=pcm_s24daud \
|
||||||
|
--enable-decoder=pcm_s24le \
|
||||||
|
--enable-decoder=pcm_s24le_planar \
|
||||||
|
--enable-decoder=pcm_s32be \
|
||||||
|
--enable-decoder=pcm_s32le \
|
||||||
|
--enable-decoder=pcm_s32le_planar \
|
||||||
|
--enable-decoder=pcm_s64be \
|
||||||
|
--enable-decoder=pcm_s64le \
|
||||||
|
--enable-decoder=pcm_s8 \
|
||||||
|
--enable-decoder=pcm_s8_planar \
|
||||||
|
--enable-decoder=pcm_u16be \
|
||||||
|
--enable-decoder=pcm_u16le \
|
||||||
|
--enable-decoder=pcm_u24be \
|
||||||
|
--enable-decoder=pcm_u24le \
|
||||||
|
--enable-decoder=pcm_u32be \
|
||||||
|
--enable-decoder=pcm_u32le \
|
||||||
|
--enable-decoder=pcm_u8 \
|
||||||
|
--enable-decoder=vorbis \
|
||||||
|
--enable-decoder=wavpack \
|
||||||
|
--enable-decoder=wmalossless \
|
||||||
|
--enable-decoder=wmapro \
|
||||||
|
--enable-decoder=wmav1 \
|
||||||
|
--enable-decoder=wmav2 \
|
||||||
|
--enable-decoder=wmavoice \
|
||||||
|
--enable-encoder=libopus \
|
||||||
|
--enable-parser=aac \
|
||||||
|
--enable-parser=aac_latm \
|
||||||
|
--enable-parser=flac \
|
||||||
|
--enable-parser=h264 \
|
||||||
|
--enable-parser=hevc \
|
||||||
|
--enable-parser=mpeg4video \
|
||||||
|
--enable-parser=mpegaudio \
|
||||||
|
--enable-parser=opus \
|
||||||
|
--enable-parser=vorbis \
|
||||||
|
--enable-demuxer=aac \
|
||||||
|
--enable-demuxer=flac \
|
||||||
|
--enable-demuxer=gif \
|
||||||
|
--enable-demuxer=h264 \
|
||||||
|
--enable-demuxer=hevc \
|
||||||
|
--enable-demuxer=m4v \
|
||||||
|
--enable-demuxer=mov \
|
||||||
|
--enable-demuxer=mp3 \
|
||||||
|
--enable-demuxer=ogg \
|
||||||
|
--enable-demuxer=wav \
|
||||||
|
--enable-muxer=ogg \
|
||||||
|
--enable-muxer=opus
|
||||||
|
|
||||||
|
make $MAKE_THREADS_CNT
|
||||||
|
make install
|
||||||
|
""")
|
||||||
|
|
||||||
|
stage('openal-soft', """
|
||||||
|
git clone -b wasapi_exact_device_time https://github.com/telegramdesktop/openal-soft.git
|
||||||
|
cd openal-soft
|
||||||
|
cd build
|
||||||
|
win:
|
||||||
|
cmake .. ^
|
||||||
|
-G "Visual Studio 16 2019" ^
|
||||||
|
-A %WIN32X64% ^
|
||||||
|
-D LIBTYPE:STRING=STATIC ^
|
||||||
|
-D FORCE_STATIC_VCRT=ON
|
||||||
|
msbuild OpenAL.vcxproj /property:Configuration=Debug /property:Platform="%WIN32X64%"
|
||||||
|
msbuild OpenAL.vcxproj /property:Configuration=RelWithDebInfo /property:Platform="%WIN32X64%"
|
||||||
|
mac:
|
||||||
|
CFLAGS=$UNGUARDED CPPFLAGS=$UNGUARDED cmake \
|
||||||
|
-D CMAKE_INSTALL_PREFIX:PATH=$USED_PREFIX \
|
||||||
|
-D ALSOFT_EXAMPLES=OFF \
|
||||||
|
-D LIBTYPE:STRING=STATIC \
|
||||||
|
-D CMAKE_OSX_DEPLOYMENT_TARGET:STRING=$MACOSX_DEPLOYMENT_TARGET ..
|
||||||
|
make $MAKE_THREADS_CNT
|
||||||
|
make install
|
||||||
|
""")
|
||||||
|
|
||||||
|
stage('breakpad', """
|
||||||
|
git clone https://chromium.googlesource.com/breakpad/breakpad
|
||||||
|
cd breakpad
|
||||||
|
git checkout bc8fb886
|
||||||
|
depends:patches/breakpad.diff
|
||||||
|
git apply ../patches/breakpad.diff
|
||||||
|
git clone https://github.com/google/googletest src/testing
|
||||||
|
win:
|
||||||
|
cd src\\client\\windows
|
||||||
|
gyp --no-circular-check breakpad_client.gyp --format=ninja
|
||||||
|
cd ..\\..
|
||||||
|
ninja -C out/Debug common crash_generation_client exception_handler
|
||||||
|
ninja -C out/Release common crash_generation_client exception_handler
|
||||||
|
cd tools\\windows\\dump_syms
|
||||||
|
gyp dump_syms.gyp --format=ninja
|
||||||
|
cd ..\\..\\..
|
||||||
|
ninja -C out/Release dump_syms
|
||||||
|
mac:
|
||||||
|
git clone https://chromium.googlesource.com/linux-syscall-support src/third_party/lss
|
||||||
|
cd src/third_party/lss
|
||||||
|
git checkout a91633d1
|
||||||
|
cd ../../..
|
||||||
|
cd src/client/mac
|
||||||
|
xcodebuild -project Breakpad.xcodeproj -target Breakpad -configuration Debug build
|
||||||
|
xcodebuild -project Breakpad.xcodeproj -target Breakpad -configuration Release build
|
||||||
|
cd ../../tools/mac/dump_syms
|
||||||
|
xcodebuild -project dump_syms.xcodeproj -target dump_syms -configuration Release build
|
||||||
|
""")
|
||||||
|
|
||||||
|
stage('crashpad', """
|
||||||
|
mac:
|
||||||
|
git clone https://chromium.googlesource.com/crashpad/crashpad.git
|
||||||
|
cd crashpad
|
||||||
|
git checkout feb3aa3923
|
||||||
|
depends:patches/crashpad.diff
|
||||||
|
git apply ../patches/crashpad.diff
|
||||||
|
cd third_party/mini_chromium
|
||||||
|
git clone https://chromium.googlesource.com/chromium/mini_chromium
|
||||||
|
cd mini_chromium
|
||||||
|
git checkout 7c5b0c1ab4
|
||||||
|
depends:patches/mini_chromium.diff
|
||||||
|
git apply ../../../../patches/mini_chromium.diff
|
||||||
|
cd ../../gtest
|
||||||
|
git clone https://chromium.googlesource.com/external/github.com/google/googletest gtest
|
||||||
|
cd gtest
|
||||||
|
git checkout d62d6c6556
|
||||||
|
cd ../../..
|
||||||
|
|
||||||
|
build/gyp_crashpad.py -Dmac_deployment_target=10.10
|
||||||
|
ninja -C out/Debug base crashpad_util crashpad_client crashpad_handler
|
||||||
|
ninja -C out/Release base crashpad_util crashpad_client crashpad_handler
|
||||||
|
""")
|
||||||
|
|
||||||
|
stage('tg_angle', """
|
||||||
|
win:
|
||||||
|
git clone https://github.com/desktop-app/tg_angle.git
|
||||||
|
cd tg_angle
|
||||||
|
git checkout ec51cc6
|
||||||
|
mkdir out
|
||||||
|
cd out
|
||||||
|
mkdir Debug
|
||||||
|
cd Debug
|
||||||
|
cmake -G Ninja ^
|
||||||
|
-DCMAKE_BUILD_TYPE=Debug ^
|
||||||
|
-DTG_ANGLE_SPECIAL_TARGET=%SPECIAL_TARGET% ^
|
||||||
|
-DTG_ANGLE_ZLIB_INCLUDE_PATH=%LIBS_DIR%/zlib ../..
|
||||||
|
ninja
|
||||||
|
cd ..
|
||||||
|
mkdir Release
|
||||||
|
cd Release
|
||||||
|
cmake -G Ninja ^
|
||||||
|
-DCMAKE_BUILD_TYPE=Release ^
|
||||||
|
-DTG_ANGLE_SPECIAL_TARGET=%SPECIAL_TARGET% ^
|
||||||
|
-DTG_ANGLE_ZLIB_INCLUDE_PATH=%LIBS_DIR%/zlib ../..
|
||||||
|
ninja
|
||||||
|
cd ..\\..\\..
|
||||||
|
""")
|
||||||
|
|
||||||
|
stage('qt_5_15_2', """
|
||||||
|
git clone git://code.qt.io/qt/qt5.git qt_5_15_2
|
||||||
|
cd qt_5_15_2
|
||||||
|
perl init-repository --module-subset=qtbase,qtimageformats,qtsvg
|
||||||
|
git checkout v5.15.2
|
||||||
|
git submodule update qtbase qtimageformats qtsvg
|
||||||
|
depends:patches/qtbase_5_15_2/*.patch
|
||||||
|
cd qtbase
|
||||||
|
win:
|
||||||
|
for /r %%i in (..\\..\\patches\\qtbase_5_15_2\\*) do git apply %%i
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
SET ANGLE_DIR=%LIBS_DIR%\\tg_angle
|
||||||
|
SET ANGLE_LIBS_DIR=%ANGLE_DIR%\\out
|
||||||
|
SET MOZJPEG_DIR=%LIBS_DIR%\\mozjpeg
|
||||||
|
SET OPENSSL_DIR=%LIBS_DIR%\\openssl
|
||||||
|
SET OPENSSL_LIBS_DIR=%OPENSSL_DIR%\\out
|
||||||
|
SET ZLIB_LIBS_DIR=%LIBS_DIR%\\zlib\\contrib\\vstudio\\vc14\\%X8664%
|
||||||
|
configure -prefix "%LIBS_DIR%\\Qt-5.15.2" ^
|
||||||
|
-debug-and-release ^
|
||||||
|
-force-debug-info ^
|
||||||
|
-opensource ^
|
||||||
|
-confirm-license ^
|
||||||
|
-static ^
|
||||||
|
-static-runtime ^
|
||||||
|
-opengl es2 -no-angle ^
|
||||||
|
-I "%ANGLE_DIR%\\include" ^
|
||||||
|
-D "KHRONOS_STATIC=" ^
|
||||||
|
-D "DESKTOP_APP_QT_STATIC_ANGLE=" ^
|
||||||
|
QMAKE_LIBS_OPENGL_ES2_DEBUG="%ANGLE_LIBS_DIR%\\Debug\\tg_angle.lib %ZLIB_LIBS_DIR%\ZlibStatDebug\zlibstat.lib d3d9.lib dxgi.lib dxguid.lib" ^
|
||||||
|
QMAKE_LIBS_OPENGL_ES2_RELEASE="%ANGLE_LIBS_DIR%\\Release\\tg_angle.lib %ZLIB_LIBS_DIR%\ZlibStatReleaseWithoutAsm\zlibstat.lib d3d9.lib dxgi.lib dxguid.lib" ^
|
||||||
|
-egl ^
|
||||||
|
QMAKE_LIBS_EGL_DEBUG="%ANGLE_LIBS_DIR%\\Debug\\tg_angle.lib %ZLIB_LIBS_DIR%\ZlibStatDebug\zlibstat.lib d3d9.lib dxgi.lib dxguid.lib Gdi32.lib User32.lib" ^
|
||||||
|
QMAKE_LIBS_EGL_RELEASE="%ANGLE_LIBS_DIR%\\Release\\tg_angle.lib %ZLIB_LIBS_DIR%\ZlibStatReleaseWithoutAsm\zlibstat.lib d3d9.lib dxgi.lib dxguid.lib Gdi32.lib User32.lib" ^
|
||||||
|
-openssl-linked ^
|
||||||
|
-I "%OPENSSL_DIR%\include" ^
|
||||||
|
OPENSSL_LIBS_DEBUG="%OPENSSL_LIBS_DIR%.dbg\libssl.lib %OPENSSL_LIBS_DIR%.dbg\libcrypto.lib Ws2_32.lib Gdi32.lib Advapi32.lib Crypt32.lib User32.lib" ^
|
||||||
|
OPENSSL_LIBS_RELEASE="%OPENSSL_LIBS_DIR%\libssl.lib %OPENSSL_LIBS_DIR%\libcrypto.lib Ws2_32.lib Gdi32.lib Advapi32.lib Crypt32.lib User32.lib" ^
|
||||||
|
-I "%MOZJPEG_DIR%" ^
|
||||||
|
LIBJPEG_LIBS_DEBUG="%MOZJPEG_DIR%\Debug\jpeg-static.lib" ^
|
||||||
|
LIBJPEG_LIBS_RELEASE="%MOZJPEG_DIR%\Release\jpeg-static.lib" ^
|
||||||
|
-mp ^
|
||||||
|
-nomake examples ^
|
||||||
|
-nomake tests ^
|
||||||
|
-platform win32-msvc
|
||||||
|
|
||||||
|
jom -j16
|
||||||
|
jom -j16 install
|
||||||
|
mac:
|
||||||
|
find ../../patches/qtbase_5_15_2 -type f -print0 | sort -z | xargs -0 git apply
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
./configure -prefix "$USED_PREFIX/Qt-5.15.2" \
|
||||||
|
-debug-and-release \
|
||||||
|
-force-debug-info \
|
||||||
|
-opensource \
|
||||||
|
-confirm-license \
|
||||||
|
-static \
|
||||||
|
-opengl desktop \
|
||||||
|
-no-openssl \
|
||||||
|
-securetransport \
|
||||||
|
-I "$USED_PREFIX/include" \
|
||||||
|
LIBJPEG_LIBS="$USED_PREFIX/lib/libjpeg.a" \
|
||||||
|
ZLIB_LIBS="$USED_PREFIX/lib/libz.a" \
|
||||||
|
-nomake examples \
|
||||||
|
-nomake tests \
|
||||||
|
-platform macx-clang
|
||||||
|
|
||||||
|
make $MAKE_THREADS_CNT
|
||||||
|
make install
|
||||||
|
""")
|
||||||
|
|
||||||
|
stage('tg_owt', """
|
||||||
|
git clone https://github.com/desktop-app/tg_owt.git
|
||||||
|
cd tg_owt
|
||||||
|
git checkout 91d836dc84
|
||||||
|
git submodule init
|
||||||
|
git submodule update src/third_party/libvpx/source/libvpx src/third_party/libyuv
|
||||||
|
win:
|
||||||
|
SET MOZJPEG_PATH=$LIBS_DIR/mozjpeg
|
||||||
|
SET OPUS_PATH=$LIBS_DIR/opus/include
|
||||||
|
SET FFMPEG_PATH=$LIBS_DIR/ffmpeg
|
||||||
|
mac:
|
||||||
|
MOZJPEG_PATH=$USED_PREFIX/include
|
||||||
|
OPUS_PATH=$USED_PREFIX/include/opus
|
||||||
|
FFMPEG_PATH=$USED_PREFIX/include
|
||||||
|
common:
|
||||||
|
mkdir out
|
||||||
|
cd out
|
||||||
|
mkdir Debug
|
||||||
|
cd Debug
|
||||||
|
cmake -G Ninja \
|
||||||
|
-DCMAKE_BUILD_TYPE=Debug \
|
||||||
|
-DTG_OWT_BUILD_AUDIO_BACKENDS=OFF \
|
||||||
|
-DTG_OWT_SPECIAL_TARGET=$SPECIAL_TARGET \
|
||||||
|
-DTG_OWT_LIBJPEG_INCLUDE_PATH=$MOZJPEG_PATH \
|
||||||
|
-DTG_OWT_OPENSSL_INCLUDE_PATH=$LIBS_DIR/openssl/include \
|
||||||
|
-DTG_OWT_OPUS_INCLUDE_PATH=$OPUS_PATH \
|
||||||
|
-DTG_OWT_FFMPEG_INCLUDE_PATH=$FFMPEG_PATH ../..
|
||||||
|
ninja
|
||||||
|
cd ..
|
||||||
|
mkdir Release
|
||||||
|
cd Release
|
||||||
|
cmake -G Ninja \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DTG_OWT_BUILD_AUDIO_BACKENDS=OFF \
|
||||||
|
-DTG_OWT_SPECIAL_TARGET=$SPECIAL_TARGET \
|
||||||
|
-DTG_OWT_LIBJPEG_INCLUDE_PATH=$MOZJPEG_PATH \
|
||||||
|
-DTG_OWT_OPENSSL_INCLUDE_PATH=$LIBS_DIR/openssl/include \
|
||||||
|
-DTG_OWT_OPUS_INCLUDE_PATH=$OPUS_PATH \
|
||||||
|
-DTG_OWT_FFMPEG_INCLUDE_PATH=$FFMPEG_PATH ../..
|
||||||
|
ninja
|
||||||
|
""")
|
||||||
|
|
||||||
|
runStages()
|
|
@ -0,0 +1,12 @@
|
||||||
|
@echo OFF
|
||||||
|
|
||||||
|
set "FullScriptPath=%~dp0"
|
||||||
|
|
||||||
|
python %FullScriptPath%prepare.py %*
|
||||||
|
if %errorlevel% neq 0 goto error
|
||||||
|
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
:error
|
||||||
|
echo FAILED
|
||||||
|
exit /b 1
|
2
cmake
2
cmake
|
@ -1 +1 @@
|
||||||
Subproject commit 98c52815e90f049af4e97209a2283584bfecc913
|
Subproject commit f343a1634cbdefb476e9020687db30a356ffe8f2
|
|
@ -12,326 +12,13 @@ You will require **api_id** and **api_hash** to access the Telegram API servers.
|
||||||
|
|
||||||
Go to ***BuildPath*** and run
|
Go to ***BuildPath*** and run
|
||||||
|
|
||||||
MAKE_THREADS_CNT=-j8
|
|
||||||
MACOSX_DEPLOYMENT_TARGET=10.12
|
|
||||||
UNGUARDED="-Werror=unguarded-availability-new"
|
|
||||||
MIN_VER="-mmacosx-version-min=10.12"
|
|
||||||
|
|
||||||
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
|
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
|
||||||
brew install automake cmake fdk-aac git lame libass libtool libvorbis libvpx ninja opus sdl shtool texi2html theora wget x264 xvid yasm pkg-config gnu-tar
|
brew install automake cmake fdk-aac git lame libass libtool libvorbis libvpx ninja opus sdl shtool texi2html theora wget x264 xvid yasm pkg-config gnu-tar
|
||||||
|
|
||||||
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
|
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
|
||||||
|
|
||||||
git clone --recursive https://github.com/telegramdesktop/tdesktop.git
|
git clone --recursive https://github.com/telegramdesktop/tdesktop.git
|
||||||
|
./tdesktop/Telegram/build/prepare/mac.sh
|
||||||
mkdir ThirdParty
|
|
||||||
cd ThirdParty
|
|
||||||
|
|
||||||
git clone https://github.com/desktop-app/patches.git
|
|
||||||
cd patches
|
|
||||||
git checkout d58ce6b2b0
|
|
||||||
cd ../
|
|
||||||
git clone https://chromium.googlesource.com/external/gyp
|
|
||||||
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
|
|
||||||
export PATH="$PWD/depot_tools:$PATH"
|
|
||||||
cd gyp
|
|
||||||
git checkout 9f2a7bb1
|
|
||||||
git apply ../patches/gyp.diff
|
|
||||||
./setup.py build
|
|
||||||
sudo ./setup.py install
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
git clone -b macos_padding https://github.com/desktop-app/yasm.git
|
|
||||||
cd yasm
|
|
||||||
./autogen.sh
|
|
||||||
make $MAKE_THREADS_CNT
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
git clone https://github.com/desktop-app/macho_edit.git
|
|
||||||
cd macho_edit
|
|
||||||
xcodebuild build -configuration Release -project macho_edit.xcodeproj -target macho_edit
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
cd ..
|
|
||||||
mkdir -p Libraries/macos
|
|
||||||
cd Libraries/macos
|
|
||||||
|
|
||||||
git clone https://github.com/desktop-app/patches.git
|
|
||||||
cd patches
|
|
||||||
git checkout d58ce6b2b0
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
git clone https://git.tukaani.org/xz.git
|
|
||||||
cd xz
|
|
||||||
git checkout v5.2.5
|
|
||||||
mkdir build
|
|
||||||
cd build
|
|
||||||
CFLAGS="$UNGUARDED" CPPFLAGS="$UNGUARDED" cmake -D CMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.12 -D CMAKE_INSTALL_PREFIX:STRING=/usr/local/macos ..
|
|
||||||
make $MAKE_THREADS_CNT
|
|
||||||
sudo make install
|
|
||||||
cd ../..
|
|
||||||
|
|
||||||
git clone https://github.com/desktop-app/zlib.git
|
|
||||||
cd zlib
|
|
||||||
CFLAGS="$MIN_VER $UNGUARDED" LDFLAGS="$MIN_VER" ./configure --prefix=/usr/local/macos
|
|
||||||
make $MAKE_THREADS_CNT
|
|
||||||
sudo make install
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
git clone -b v4.0.1-rc2 https://github.com/mozilla/mozjpeg.git
|
|
||||||
cd mozjpeg
|
|
||||||
cmake -B build . \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
-DCMAKE_INSTALL_PREFIX=/usr/local/macos \
|
|
||||||
-DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.12 \
|
|
||||||
-DWITH_JPEG8=ON \
|
|
||||||
-DPNG_SUPPORTED=OFF
|
|
||||||
cmake --build build $MAKE_THREADS_CNT
|
|
||||||
sudo cmake --install build
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
git clone https://github.com/openssl/openssl openssl_1_1_1
|
|
||||||
cd openssl_1_1_1
|
|
||||||
git checkout OpenSSL_1_1_1-stable
|
|
||||||
./Configure --prefix=/usr/local/macos no-shared no-tests darwin64-x86_64-cc $MIN_VER
|
|
||||||
make build_libs $MAKE_THREADS_CNT
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
git clone https://github.com/xiph/opus.git
|
|
||||||
cd opus
|
|
||||||
git checkout v1.3
|
|
||||||
./autogen.sh
|
|
||||||
CFLAGS="$MIN_VER $UNGUARDED" CPPFLAGS="$MIN_VER $UNGUARDED" LDFLAGS="$MIN_VER" ./configure --prefix=/usr/local/macos
|
|
||||||
make $MAKE_THREADS_CNT
|
|
||||||
sudo make install
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
git clone https://github.com/desktop-app/rnnoise.git
|
|
||||||
cd rnnoise
|
|
||||||
mkdir out
|
|
||||||
cd out
|
|
||||||
mkdir Debug
|
|
||||||
cd Debug
|
|
||||||
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug ../..
|
|
||||||
ninja
|
|
||||||
cd ..
|
|
||||||
mkdir Release
|
|
||||||
cd Release
|
|
||||||
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ../..
|
|
||||||
ninja
|
|
||||||
cd ../../..
|
|
||||||
|
|
||||||
libiconv_ver=1.16
|
|
||||||
wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-$libiconv_ver.tar.gz
|
|
||||||
tar -xvzf libiconv-$libiconv_ver.tar.gz
|
|
||||||
rm libiconv-$libiconv_ver.tar.gz
|
|
||||||
cd libiconv-$libiconv_ver
|
|
||||||
CFLAGS="$MIN_VER $UNGUARDED" CPPFLAGS="$MIN_VER $UNGUARDED" LDFLAGS="$MIN_VER" ./configure --enable-static --prefix=/usr/local/macos
|
|
||||||
make $MAKE_THREADS_CNT
|
|
||||||
sudo make install
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
git clone https://github.com/FFmpeg/FFmpeg.git ffmpeg
|
|
||||||
cd ffmpeg
|
|
||||||
git checkout release/4.4
|
|
||||||
CFLAGS=`freetype-config --cflags`
|
|
||||||
LDFLAGS=`freetype-config --libs`
|
|
||||||
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig:/usr/X11/lib/pkgconfig
|
|
||||||
cp ../patches/macos_yasm_wrap.sh ./
|
|
||||||
|
|
||||||
./configure --prefix=/usr/local/macos \
|
|
||||||
--extra-cflags="$MIN_VER $UNGUARDED -DCONFIG_SAFE_BITSTREAM_READER=1" \
|
|
||||||
--extra-cxxflags="$MIN_VER $UNGUARDED -DCONFIG_SAFE_BITSTREAM_READER=1" \
|
|
||||||
--extra-ldflags="$MIN_VER" \
|
|
||||||
--x86asmexe=`pwd`/macos_yasm_wrap.sh \
|
|
||||||
--enable-protocol=file \
|
|
||||||
--enable-libopus \
|
|
||||||
--disable-programs \
|
|
||||||
--disable-doc \
|
|
||||||
--disable-network \
|
|
||||||
--disable-everything \
|
|
||||||
--enable-hwaccel=h264_videotoolbox \
|
|
||||||
--enable-hwaccel=hevc_videotoolbox \
|
|
||||||
--enable-hwaccel=mpeg1_videotoolbox \
|
|
||||||
--enable-hwaccel=mpeg2_videotoolbox \
|
|
||||||
--enable-hwaccel=mpeg4_videotoolbox \
|
|
||||||
--enable-decoder=aac \
|
|
||||||
--enable-decoder=aac_at \
|
|
||||||
--enable-decoder=aac_fixed \
|
|
||||||
--enable-decoder=aac_latm \
|
|
||||||
--enable-decoder=aasc \
|
|
||||||
--enable-decoder=alac \
|
|
||||||
--enable-decoder=alac_at \
|
|
||||||
--enable-decoder=flac \
|
|
||||||
--enable-decoder=gif \
|
|
||||||
--enable-decoder=h264 \
|
|
||||||
--enable-decoder=hevc \
|
|
||||||
--enable-decoder=mp1 \
|
|
||||||
--enable-decoder=mp1float \
|
|
||||||
--enable-decoder=mp2 \
|
|
||||||
--enable-decoder=mp2float \
|
|
||||||
--enable-decoder=mp3 \
|
|
||||||
--enable-decoder=mp3adu \
|
|
||||||
--enable-decoder=mp3adufloat \
|
|
||||||
--enable-decoder=mp3float \
|
|
||||||
--enable-decoder=mp3on4 \
|
|
||||||
--enable-decoder=mp3on4float \
|
|
||||||
--enable-decoder=mpeg4 \
|
|
||||||
--enable-decoder=msmpeg4v2 \
|
|
||||||
--enable-decoder=msmpeg4v3 \
|
|
||||||
--enable-decoder=opus \
|
|
||||||
--enable-decoder=pcm_alaw \
|
|
||||||
--enable-decoder=pcm_alaw_at \
|
|
||||||
--enable-decoder=pcm_f32be \
|
|
||||||
--enable-decoder=pcm_f32le \
|
|
||||||
--enable-decoder=pcm_f64be \
|
|
||||||
--enable-decoder=pcm_f64le \
|
|
||||||
--enable-decoder=pcm_lxf \
|
|
||||||
--enable-decoder=pcm_mulaw \
|
|
||||||
--enable-decoder=pcm_mulaw_at \
|
|
||||||
--enable-decoder=pcm_s16be \
|
|
||||||
--enable-decoder=pcm_s16be_planar \
|
|
||||||
--enable-decoder=pcm_s16le \
|
|
||||||
--enable-decoder=pcm_s16le_planar \
|
|
||||||
--enable-decoder=pcm_s24be \
|
|
||||||
--enable-decoder=pcm_s24daud \
|
|
||||||
--enable-decoder=pcm_s24le \
|
|
||||||
--enable-decoder=pcm_s24le_planar \
|
|
||||||
--enable-decoder=pcm_s32be \
|
|
||||||
--enable-decoder=pcm_s32le \
|
|
||||||
--enable-decoder=pcm_s32le_planar \
|
|
||||||
--enable-decoder=pcm_s64be \
|
|
||||||
--enable-decoder=pcm_s64le \
|
|
||||||
--enable-decoder=pcm_s8 \
|
|
||||||
--enable-decoder=pcm_s8_planar \
|
|
||||||
--enable-decoder=pcm_u16be \
|
|
||||||
--enable-decoder=pcm_u16le \
|
|
||||||
--enable-decoder=pcm_u24be \
|
|
||||||
--enable-decoder=pcm_u24le \
|
|
||||||
--enable-decoder=pcm_u32be \
|
|
||||||
--enable-decoder=pcm_u32le \
|
|
||||||
--enable-decoder=pcm_u8 \
|
|
||||||
--enable-decoder=vorbis \
|
|
||||||
--enable-decoder=wavpack \
|
|
||||||
--enable-decoder=wmalossless \
|
|
||||||
--enable-decoder=wmapro \
|
|
||||||
--enable-decoder=wmav1 \
|
|
||||||
--enable-decoder=wmav2 \
|
|
||||||
--enable-decoder=wmavoice \
|
|
||||||
--enable-encoder=libopus \
|
|
||||||
--enable-parser=aac \
|
|
||||||
--enable-parser=aac_latm \
|
|
||||||
--enable-parser=flac \
|
|
||||||
--enable-parser=h264 \
|
|
||||||
--enable-parser=hevc \
|
|
||||||
--enable-parser=mpeg4video \
|
|
||||||
--enable-parser=mpegaudio \
|
|
||||||
--enable-parser=opus \
|
|
||||||
--enable-parser=vorbis \
|
|
||||||
--enable-demuxer=aac \
|
|
||||||
--enable-demuxer=flac \
|
|
||||||
--enable-demuxer=gif \
|
|
||||||
--enable-demuxer=h264 \
|
|
||||||
--enable-demuxer=hevc \
|
|
||||||
--enable-demuxer=m4v \
|
|
||||||
--enable-demuxer=mov \
|
|
||||||
--enable-demuxer=mp3 \
|
|
||||||
--enable-demuxer=ogg \
|
|
||||||
--enable-demuxer=wav \
|
|
||||||
--enable-muxer=ogg \
|
|
||||||
--enable-muxer=opus
|
|
||||||
|
|
||||||
make $MAKE_THREADS_CNT
|
|
||||||
sudo make install
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
git clone --branch capture_with_webrtc https://github.com/telegramdesktop/openal-soft.git
|
|
||||||
cd openal-soft/build
|
|
||||||
CFLAGS=$UNGUARDED CPPFLAGS=$UNGUARDED cmake -D CMAKE_INSTALL_PREFIX:PATH=/usr/local/macos -D ALSOFT_EXAMPLES=OFF -D LIBTYPE:STRING=STATIC -D CMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.12 ..
|
|
||||||
make $MAKE_THREADS_CNT
|
|
||||||
sudo make install
|
|
||||||
cd ../..
|
|
||||||
|
|
||||||
git clone https://chromium.googlesource.com/crashpad/crashpad.git
|
|
||||||
cd crashpad
|
|
||||||
git checkout feb3aa3923
|
|
||||||
git apply ../patches/crashpad.diff
|
|
||||||
cd third_party/mini_chromium
|
|
||||||
git clone https://chromium.googlesource.com/chromium/mini_chromium
|
|
||||||
cd mini_chromium
|
|
||||||
git checkout 7c5b0c1ab4
|
|
||||||
git apply ../../../../patches/mini_chromium.diff
|
|
||||||
cd ../../gtest
|
|
||||||
git clone https://chromium.googlesource.com/external/github.com/google/googletest gtest
|
|
||||||
cd gtest
|
|
||||||
git checkout d62d6c6556
|
|
||||||
cd ../../..
|
|
||||||
|
|
||||||
build/gyp_crashpad.py -Dmac_deployment_target=10.10
|
|
||||||
ninja -C out/Debug base crashpad_util crashpad_client crashpad_handler
|
|
||||||
ninja -C out/Release base crashpad_util crashpad_client crashpad_handler
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
git clone git://code.qt.io/qt/qt5.git qt_5_15_2
|
|
||||||
cd qt_5_15_2
|
|
||||||
perl init-repository --module-subset=qtbase,qtimageformats,qtsvg
|
|
||||||
git checkout v5.15.2
|
|
||||||
git submodule update qtbase qtimageformats qtsvg
|
|
||||||
cd qtbase
|
|
||||||
find ../../patches/qtbase_5_15_2 -type f -print0 | sort -z | xargs -0 git apply
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
./configure -prefix "/usr/local/desktop-app/Qt-5.15.2" \
|
|
||||||
-debug-and-release \
|
|
||||||
-force-debug-info \
|
|
||||||
-opensource \
|
|
||||||
-confirm-license \
|
|
||||||
-static \
|
|
||||||
-opengl desktop \
|
|
||||||
-no-openssl \
|
|
||||||
-securetransport \
|
|
||||||
-I "/usr/local/macos/include" \
|
|
||||||
LIBJPEG_LIBS="/usr/local/macos/lib/libjpeg.a" \
|
|
||||||
ZLIB_LIBS="/usr/local/macos/lib/libz.a" \
|
|
||||||
-nomake examples \
|
|
||||||
-nomake tests \
|
|
||||||
-platform macx-clang
|
|
||||||
|
|
||||||
make $MAKE_THREADS_CNT
|
|
||||||
sudo make install
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
git clone https://github.com/desktop-app/tg_owt.git
|
|
||||||
cd tg_owt
|
|
||||||
git checkout 91d836dc84
|
|
||||||
git submodule init
|
|
||||||
git submodule update
|
|
||||||
mkdir out
|
|
||||||
cd out
|
|
||||||
mkdir Debug
|
|
||||||
cd Debug
|
|
||||||
cmake -G Ninja \
|
|
||||||
-DCMAKE_BUILD_TYPE=Debug \
|
|
||||||
-DTG_OWT_BUILD_AUDIO_BACKENDS=OFF \
|
|
||||||
-DTG_OWT_SPECIAL_TARGET=mac \
|
|
||||||
-DTG_OWT_LIBJPEG_INCLUDE_PATH=/usr/local/macos/include \
|
|
||||||
-DTG_OWT_OPENSSL_INCLUDE_PATH=`pwd`/../../../openssl_1_1_1/include \
|
|
||||||
-DTG_OWT_OPUS_INCLUDE_PATH=/usr/local/macos/include/opus \
|
|
||||||
-DTG_OWT_FFMPEG_INCLUDE_PATH=/usr/local/macos/include ../..
|
|
||||||
ninja
|
|
||||||
cd ..
|
|
||||||
mkdir Release
|
|
||||||
cd Release
|
|
||||||
cmake -G Ninja \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
-DTG_OWT_BUILD_AUDIO_BACKENDS=OFF \
|
|
||||||
-DTG_OWT_SPECIAL_TARGET=mac \
|
|
||||||
-DTG_OWT_LIBJPEG_INCLUDE_PATH=/usr/local/macos/include \
|
|
||||||
-DTG_OWT_OPENSSL_INCLUDE_PATH=`pwd`/../../../openssl_1_1_1/include \
|
|
||||||
-DTG_OWT_OPUS_INCLUDE_PATH=/usr/local/macos/include/opus \
|
|
||||||
-DTG_OWT_FFMPEG_INCLUDE_PATH=/usr/local/macos/include ../..
|
|
||||||
ninja
|
|
||||||
cd ../../..
|
|
||||||
|
|
||||||
### Building the project
|
### Building the project
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ Go to ***BuildPath*** and run
|
||||||
|
|
||||||
MACOSX_DEPLOYMENT_TARGET=10.12
|
MACOSX_DEPLOYMENT_TARGET=10.12
|
||||||
|
|
||||||
cd Libraries/macos
|
cd Libraries
|
||||||
|
|
||||||
git clone https://chromium.googlesource.com/breakpad/breakpad
|
git clone https://chromium.googlesource.com/breakpad/breakpad
|
||||||
cd breakpad
|
cd breakpad
|
||||||
|
|
|
@ -23,251 +23,31 @@ You will require **api_id** and **api_hash** to access the Telegram API servers.
|
||||||
* Download **Yasm** executable from [http://yasm.tortall.net/Download.html](http://yasm.tortall.net/Download.html), rename to *yasm.exe* and put to ***BuildPath*\\ThirdParty\\yasm**
|
* Download **Yasm** executable from [http://yasm.tortall.net/Download.html](http://yasm.tortall.net/Download.html), rename to *yasm.exe* and put to ***BuildPath*\\ThirdParty\\yasm**
|
||||||
* Download **MSYS2** installer from [http://www.msys2.org/](http://www.msys2.org/) and install to ***BuildPath*\\ThirdParty\\msys64**
|
* Download **MSYS2** installer from [http://www.msys2.org/](http://www.msys2.org/) and install to ***BuildPath*\\ThirdParty\\msys64**
|
||||||
* Download **jom** archive from [http://download.qt.io/official_releases/jom/jom.zip](http://download.qt.io/official_releases/jom/jom.zip) and unpack to ***BuildPath*\\ThirdParty\\jom**
|
* Download **jom** archive from [http://download.qt.io/official_releases/jom/jom.zip](http://download.qt.io/official_releases/jom/jom.zip) and unpack to ***BuildPath*\\ThirdParty\\jom**
|
||||||
* Download **Python 2.7** installer from [https://www.python.org/downloads/](https://www.python.org/downloads/) and install to ***BuildPath*\\ThirdParty\\Python27**
|
* Download **Python 3.9** installer from [https://www.python.org/downloads/](https://www.python.org/downloads/) and install to ***BuildPath*\\ThirdParty\\Python27**
|
||||||
* Download **CMake** installer from [https://cmake.org/download/](https://cmake.org/download/) and install to ***BuildPath*\\ThirdParty\\cmake**
|
* Download **CMake** installer from [https://cmake.org/download/](https://cmake.org/download/) and install to ***BuildPath*\\ThirdParty\\cmake**
|
||||||
* Download **Ninja** executable from [https://github.com/ninja-build/ninja/releases/download/v1.7.2/ninja-win.zip](https://github.com/ninja-build/ninja/releases/download/v1.7.2/ninja-win.zip) and unpack to ***BuildPath*\\ThirdParty\\Ninja**
|
* Download **Ninja** executable from [https://github.com/ninja-build/ninja/releases/download/v1.7.2/ninja-win.zip](https://github.com/ninja-build/ninja/releases/download/v1.7.2/ninja-win.zip) and unpack to ***BuildPath*\\ThirdParty\\Ninja**
|
||||||
* Download **Git** installer from [https://git-scm.com/download/win](https://git-scm.com/download/win) and install it.
|
* Download **Git** installer from [https://git-scm.com/download/win](https://git-scm.com/download/win) and install it.
|
||||||
* Download **NuGet** executable from [https://dist.nuget.org/win-x86-commandline/latest/nuget.exe](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe) and put to ***BuildPath*\\ThirdParty\\NuGet**
|
* Download **NuGet** executable from [https://dist.nuget.org/win-x86-commandline/latest/nuget.exe](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe) and put to ***BuildPath*\\ThirdParty\\NuGet**
|
||||||
|
|
||||||
Open **x64 Native Tools Command Prompt for VS 2019.bat**, go to ***BuildPath*** and run
|
Add **Python 3.9** and **NuGet** to your PATH:
|
||||||
|
|
||||||
cd ThirdParty
|
|
||||||
git clone https://github.com/desktop-app/patches.git
|
|
||||||
cd patches
|
|
||||||
git checkout d58ce6b2b0
|
|
||||||
cd ../
|
|
||||||
git clone https://chromium.googlesource.com/external/gyp
|
|
||||||
cd gyp
|
|
||||||
git checkout 9f2a7bb1
|
|
||||||
git apply ../patches/gyp.diff
|
|
||||||
cd ..\..
|
|
||||||
|
|
||||||
Add **GYP**, **Ninja** and **NuGet** to your PATH:
|
|
||||||
|
|
||||||
* Open **Control Panel** -> **System** -> **Advanced system settings**.
|
* Open **Control Panel** -> **System** -> **Advanced system settings**.
|
||||||
* Press **Environment Variables...**.
|
* Press **Environment Variables...**.
|
||||||
* Select **Path**.
|
* Select **Path**.
|
||||||
* Press **Edit**.
|
* Press **Edit**.
|
||||||
* Add ***BuildPath*\\ThirdParty\\gyp** value.
|
* Add ***BuildPath*\\ThirdParty\\Python39** value.
|
||||||
* Add ***BuildPath*\\ThirdParty\\Ninja** value.
|
|
||||||
* Add ***BuildPath*\\ThirdParty\\NuGet** value.
|
* Add ***BuildPath*\\ThirdParty\\NuGet** value.
|
||||||
|
|
||||||
|
Open **x64 Native Tools Command Prompt for VS 2019.bat**, go to ***BuildPath*** and run
|
||||||
|
|
||||||
|
python -m pip install pywin32
|
||||||
|
|
||||||
## Clone source code and prepare libraries
|
## Clone source code and prepare libraries
|
||||||
|
|
||||||
Open **x64 Native Tools Command Prompt for VS 2019.bat**, go to ***BuildPath*** and run
|
Open **x64 Native Tools Command Prompt for VS 2019.bat**, go to ***BuildPath*** and run
|
||||||
|
|
||||||
SET PATH=%cd%\ThirdParty\Strawberry\perl\bin;%cd%\ThirdParty\Python27;%cd%\ThirdParty\NASM;%cd%\ThirdParty\jom;%cd%\ThirdParty\cmake\bin;%cd%\ThirdParty\yasm;%PATH%
|
|
||||||
|
|
||||||
git clone --recursive https://github.com/telegramdesktop/tdesktop.git
|
git clone --recursive https://github.com/telegramdesktop/tdesktop.git
|
||||||
|
tdesktop\Telegram\build\prepare\win.bat
|
||||||
if not exist Libraries\win64 mkdir Libraries\win64
|
|
||||||
cd Libraries\win64
|
|
||||||
|
|
||||||
git clone https://github.com/desktop-app/patches.git
|
|
||||||
cd patches
|
|
||||||
git checkout d58ce6b2b0
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
git clone https://github.com/desktop-app/lzma.git
|
|
||||||
cd lzma\C\Util\LzmaLib
|
|
||||||
msbuild LzmaLib.sln /property:Configuration=Debug /property:Platform="x64"
|
|
||||||
msbuild LzmaLib.sln /property:Configuration=Release /property:Platform="x64"
|
|
||||||
cd ..\..\..\..
|
|
||||||
|
|
||||||
git clone https://github.com/openssl/openssl.git openssl_1_1_1
|
|
||||||
cd openssl_1_1_1
|
|
||||||
git checkout OpenSSL_1_1_1-stable
|
|
||||||
perl Configure no-shared no-tests debug-VC-WIN64A
|
|
||||||
nmake
|
|
||||||
mkdir out64.dbg
|
|
||||||
move libcrypto.lib out64.dbg
|
|
||||||
move libssl.lib out64.dbg
|
|
||||||
move ossl_static.pdb out64.dbg\ossl_static
|
|
||||||
nmake clean
|
|
||||||
move out64.dbg\ossl_static out64.dbg\ossl_static.pdb
|
|
||||||
perl Configure no-shared no-tests VC-WIN64A
|
|
||||||
nmake
|
|
||||||
mkdir out64
|
|
||||||
move libcrypto.lib out64
|
|
||||||
move libssl.lib out64
|
|
||||||
move ossl_static.pdb out64
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
git clone https://github.com/desktop-app/zlib.git
|
|
||||||
cd zlib\contrib\vstudio\vc14
|
|
||||||
msbuild zlibstat.vcxproj /property:Configuration=Debug /property:Platform="x64"
|
|
||||||
msbuild zlibstat.vcxproj /property:Configuration=ReleaseWithoutAsm /property:Platform="x64"
|
|
||||||
cd ..\..\..\..
|
|
||||||
|
|
||||||
git clone -b v4.0.1-rc2 https://github.com/mozilla/mozjpeg.git
|
|
||||||
cd mozjpeg
|
|
||||||
cmake . ^
|
|
||||||
-G "Visual Studio 16 2019" ^
|
|
||||||
-A x64 ^
|
|
||||||
-DWITH_JPEG8=ON ^
|
|
||||||
-DPNG_SUPPORTED=OFF
|
|
||||||
cmake --build . --config Debug
|
|
||||||
cmake --build . --config Release
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
git clone https://github.com/telegramdesktop/openal-soft.git
|
|
||||||
cd openal-soft
|
|
||||||
git checkout wasapi_exact_device_time
|
|
||||||
cd build
|
|
||||||
cmake .. ^
|
|
||||||
-G "Visual Studio 16 2019" ^
|
|
||||||
-A x64 ^
|
|
||||||
-D LIBTYPE:STRING=STATIC ^
|
|
||||||
-D FORCE_STATIC_VCRT=ON
|
|
||||||
msbuild OpenAL.vcxproj /property:Configuration=Debug /property:Platform="x64"
|
|
||||||
msbuild OpenAL.vcxproj /property:Configuration=RelWithDebInfo /property:Platform="x64"
|
|
||||||
cd ..\..
|
|
||||||
|
|
||||||
git clone https://github.com/google/breakpad
|
|
||||||
cd breakpad
|
|
||||||
git checkout a1dbcdcb43
|
|
||||||
git apply ../patches/breakpad.diff
|
|
||||||
cd src
|
|
||||||
git clone https://github.com/google/googletest testing
|
|
||||||
cd client\windows
|
|
||||||
gyp --no-circular-check breakpad_client.gyp --format=ninja
|
|
||||||
cd ..\..
|
|
||||||
ninja -C out/Debug_x64 common crash_generation_client exception_handler
|
|
||||||
ninja -C out/Release_x64 common crash_generation_client exception_handler
|
|
||||||
cd tools\windows\dump_syms
|
|
||||||
gyp dump_syms.gyp
|
|
||||||
msbuild dump_syms.vcxproj /property:Configuration=Release /property:Platform="x64"
|
|
||||||
cd ..\..\..\..\..
|
|
||||||
|
|
||||||
git clone https://github.com/telegramdesktop/opus.git
|
|
||||||
cd opus
|
|
||||||
git checkout tdesktop
|
|
||||||
cd win32\VS2015
|
|
||||||
msbuild opus.sln /property:Configuration=Debug /property:Platform="x64"
|
|
||||||
msbuild opus.sln /property:Configuration=Release /property:Platform="x64"
|
|
||||||
cd ..\..\..
|
|
||||||
|
|
||||||
git clone https://github.com/desktop-app/rnnoise.git
|
|
||||||
cd rnnoise
|
|
||||||
mkdir out
|
|
||||||
cd out
|
|
||||||
cmake -A x64 ..
|
|
||||||
cmake --build . --config Debug
|
|
||||||
cmake --build . --config Release
|
|
||||||
cd ..\..
|
|
||||||
|
|
||||||
cd ..\..
|
|
||||||
SET PATH_BACKUP_=%PATH%
|
|
||||||
SET PATH=%cd%\ThirdParty\msys64\usr\bin;%PATH%
|
|
||||||
cd Libraries\win64
|
|
||||||
|
|
||||||
git clone https://github.com/FFmpeg/FFmpeg.git ffmpeg
|
|
||||||
cd ffmpeg
|
|
||||||
git checkout release/4.4
|
|
||||||
|
|
||||||
set CHERE_INVOKING=enabled_from_arguments
|
|
||||||
set MSYS2_PATH_TYPE=inherit
|
|
||||||
bash --login ../patches/build_ffmpeg_win.sh
|
|
||||||
|
|
||||||
SET PATH=%PATH_BACKUP_%
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
git clone https://github.com/desktop-app/tg_angle.git
|
|
||||||
cd tg_angle
|
|
||||||
git checkout ec51cc6
|
|
||||||
mkdir out
|
|
||||||
cd out
|
|
||||||
mkdir Debug
|
|
||||||
cd Debug
|
|
||||||
cmake -G Ninja ^
|
|
||||||
-DCMAKE_BUILD_TYPE=Debug ^
|
|
||||||
-DTG_ANGLE_SPECIAL_TARGET=win64 ^
|
|
||||||
-DTG_ANGLE_ZLIB_INCLUDE_PATH=%cd%/../../../zlib ../..
|
|
||||||
ninja
|
|
||||||
cd ..
|
|
||||||
mkdir Release
|
|
||||||
cd Release
|
|
||||||
cmake -G Ninja ^
|
|
||||||
-DCMAKE_BUILD_TYPE=Release ^
|
|
||||||
-DTG_ANGLE_SPECIAL_TARGET=win64 ^
|
|
||||||
-DTG_ANGLE_ZLIB_INCLUDE_PATH=%cd%/../../../zlib ../..
|
|
||||||
ninja
|
|
||||||
cd ..\..\..
|
|
||||||
|
|
||||||
SET LibrariesPath=%cd%
|
|
||||||
git clone git://code.qt.io/qt/qt5.git qt_5_15_2
|
|
||||||
cd qt_5_15_2
|
|
||||||
perl init-repository --module-subset=qtbase,qtimageformats,qtsvg
|
|
||||||
git checkout v5.15.2
|
|
||||||
git submodule update qtbase qtimageformats qtsvg
|
|
||||||
cd qtbase
|
|
||||||
for /r %i in (..\..\patches\qtbase_5_15_2\*) do git apply %i
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
configure ^
|
|
||||||
-prefix "%LibrariesPath%\Qt-5.15.2" ^
|
|
||||||
-debug-and-release ^
|
|
||||||
-force-debug-info ^
|
|
||||||
-opensource ^
|
|
||||||
-confirm-license ^
|
|
||||||
-static ^
|
|
||||||
-static-runtime ^
|
|
||||||
-opengl es2 -no-angle ^
|
|
||||||
-I "%LibrariesPath%\tg_angle\include" ^
|
|
||||||
-D "KHRONOS_STATIC=" ^
|
|
||||||
-D "DESKTOP_APP_QT_STATIC_ANGLE=" ^
|
|
||||||
QMAKE_LIBS_OPENGL_ES2_DEBUG="%LibrariesPath%\tg_angle\out\Debug\tg_angle.lib %LibrariesPath%\zlib\contrib\vstudio\vc14\x64\ZlibStatDebug\zlibstat.lib d3d9.lib dxgi.lib dxguid.lib" ^
|
|
||||||
QMAKE_LIBS_OPENGL_ES2_RELEASE="%LibrariesPath%\tg_angle\out\Release\tg_angle.lib %LibrariesPath%\zlib\contrib\vstudio\vc14\x64\ZlibStatReleaseWithoutAsm\zlibstat.lib d3d9.lib dxgi.lib dxguid.lib" ^
|
|
||||||
-egl ^
|
|
||||||
QMAKE_LIBS_EGL_DEBUG="%LibrariesPath%\tg_angle\out\Debug\tg_angle.lib %LibrariesPath%\zlib\contrib\vstudio\vc14\x64\ZlibStatDebug\zlibstat.lib d3d9.lib dxgi.lib dxguid.lib Gdi32.lib User32.lib" ^
|
|
||||||
QMAKE_LIBS_EGL_RELEASE="%LibrariesPath%\tg_angle\out\Release\tg_angle.lib %LibrariesPath%\zlib\contrib\vstudio\vc14\x64\ZlibStatReleaseWithoutAsm\zlibstat.lib d3d9.lib dxgi.lib dxguid.lib Gdi32.lib User32.lib" ^
|
|
||||||
-openssl-linked ^
|
|
||||||
-I "%LibrariesPath%\openssl_1_1_1\include" ^
|
|
||||||
OPENSSL_LIBS_DEBUG="%LibrariesPath%\openssl_1_1_1\out64.dbg\libssl.lib %LibrariesPath%\openssl_1_1_1\out64.dbg\libcrypto.lib Ws2_32.lib Gdi32.lib Advapi32.lib Crypt32.lib User32.lib" ^
|
|
||||||
OPENSSL_LIBS_RELEASE="%LibrariesPath%\openssl_1_1_1\out64\libssl.lib %LibrariesPath%\openssl_1_1_1\out64\libcrypto.lib Ws2_32.lib Gdi32.lib Advapi32.lib Crypt32.lib User32.lib" ^
|
|
||||||
-I "%LibrariesPath%\mozjpeg" ^
|
|
||||||
LIBJPEG_LIBS_DEBUG="%LibrariesPath%\mozjpeg\Debug\jpeg-static.lib" ^
|
|
||||||
LIBJPEG_LIBS_RELEASE="%LibrariesPath%\mozjpeg\Release\jpeg-static.lib" ^
|
|
||||||
-mp ^
|
|
||||||
-nomake examples ^
|
|
||||||
-nomake tests ^
|
|
||||||
-platform win32-msvc
|
|
||||||
|
|
||||||
jom -j8
|
|
||||||
jom -j8 install
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
git clone https://github.com/desktop-app/tg_owt.git
|
|
||||||
cd tg_owt
|
|
||||||
git checkout 91d836dc84
|
|
||||||
git submodule init
|
|
||||||
git submodule update
|
|
||||||
mkdir out
|
|
||||||
cd out
|
|
||||||
mkdir Debug
|
|
||||||
cd Debug
|
|
||||||
cmake -G Ninja ^
|
|
||||||
-DCMAKE_BUILD_TYPE=Debug ^
|
|
||||||
-DTG_OWT_BUILD_AUDIO_BACKENDS=OFF ^
|
|
||||||
-DTG_OWT_SPECIAL_TARGET=win64 ^
|
|
||||||
-DTG_OWT_LIBJPEG_INCLUDE_PATH=%cd%/../../../mozjpeg ^
|
|
||||||
-DTG_OWT_OPENSSL_INCLUDE_PATH=%cd%/../../../openssl_1_1_1/include ^
|
|
||||||
-DTG_OWT_OPUS_INCLUDE_PATH=%cd%/../../../opus/include ^
|
|
||||||
-DTG_OWT_FFMPEG_INCLUDE_PATH=%cd%/../../../ffmpeg ../..
|
|
||||||
ninja
|
|
||||||
cd ..
|
|
||||||
mkdir Release
|
|
||||||
cd Release
|
|
||||||
cmake -G Ninja ^
|
|
||||||
-DCMAKE_BUILD_TYPE=Release ^
|
|
||||||
-DTG_OWT_BUILD_AUDIO_BACKENDS=OFF ^
|
|
||||||
-DTG_OWT_SPECIAL_TARGET=win64 ^
|
|
||||||
-DTG_OWT_LIBJPEG_INCLUDE_PATH=%cd%/../../../mozjpeg ^
|
|
||||||
-DTG_OWT_OPENSSL_INCLUDE_PATH=%cd%/../../../openssl_1_1_1/include ^
|
|
||||||
-DTG_OWT_OPUS_INCLUDE_PATH=%cd%/../../../opus/include ^
|
|
||||||
-DTG_OWT_FFMPEG_INCLUDE_PATH=%cd%/../../../ffmpeg ../..
|
|
||||||
ninja
|
|
||||||
cd ..\..\..
|
|
||||||
|
|
||||||
## Build the project
|
## Build the project
|
||||||
|
|
||||||
|
|
|
@ -23,254 +23,31 @@ You will require **api_id** and **api_hash** to access the Telegram API servers.
|
||||||
* Download **Yasm** executable from [http://yasm.tortall.net/Download.html](http://yasm.tortall.net/Download.html), rename to *yasm.exe* and put to ***BuildPath*\\ThirdParty\\yasm**
|
* Download **Yasm** executable from [http://yasm.tortall.net/Download.html](http://yasm.tortall.net/Download.html), rename to *yasm.exe* and put to ***BuildPath*\\ThirdParty\\yasm**
|
||||||
* Download **MSYS2** installer from [http://www.msys2.org/](http://www.msys2.org/) and install to ***BuildPath*\\ThirdParty\\msys64**
|
* Download **MSYS2** installer from [http://www.msys2.org/](http://www.msys2.org/) and install to ***BuildPath*\\ThirdParty\\msys64**
|
||||||
* Download **jom** archive from [http://download.qt.io/official_releases/jom/jom.zip](http://download.qt.io/official_releases/jom/jom.zip) and unpack to ***BuildPath*\\ThirdParty\\jom**
|
* Download **jom** archive from [http://download.qt.io/official_releases/jom/jom.zip](http://download.qt.io/official_releases/jom/jom.zip) and unpack to ***BuildPath*\\ThirdParty\\jom**
|
||||||
* Download **Python 2.7** installer from [https://www.python.org/downloads/](https://www.python.org/downloads/) and install to ***BuildPath*\\ThirdParty\\Python27**
|
* Download **Python 3.9** installer from [https://www.python.org/downloads/](https://www.python.org/downloads/) and install to ***BuildPath*\\ThirdParty\\Python39**
|
||||||
* Download **CMake** installer from [https://cmake.org/download/](https://cmake.org/download/) and install to ***BuildPath*\\ThirdParty\\cmake**
|
* Download **CMake** installer from [https://cmake.org/download/](https://cmake.org/download/) and install to ***BuildPath*\\ThirdParty\\cmake**
|
||||||
* Download **Ninja** executable from [https://github.com/ninja-build/ninja/releases/download/v1.7.2/ninja-win.zip](https://github.com/ninja-build/ninja/releases/download/v1.7.2/ninja-win.zip) and unpack to ***BuildPath*\\ThirdParty\\Ninja**
|
* Download **Ninja** executable from [https://github.com/ninja-build/ninja/releases/download/v1.7.2/ninja-win.zip](https://github.com/ninja-build/ninja/releases/download/v1.7.2/ninja-win.zip) and unpack to ***BuildPath*\\ThirdParty\\Ninja**
|
||||||
* Download **Git** installer from [https://git-scm.com/download/win](https://git-scm.com/download/win) and install it.
|
* Download **Git** installer from [https://git-scm.com/download/win](https://git-scm.com/download/win) and install it.
|
||||||
* Download **NuGet** executable from [https://dist.nuget.org/win-x86-commandline/latest/nuget.exe](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe) and put to ***BuildPath*\\ThirdParty\\NuGet**
|
* Download **NuGet** executable from [https://dist.nuget.org/win-x86-commandline/latest/nuget.exe](https://dist.nuget.org/win-x86-commandline/latest/nuget.exe) and put to ***BuildPath*\\ThirdParty\\NuGet**
|
||||||
|
|
||||||
Open **x86 Native Tools Command Prompt for VS 2019.bat**, go to ***BuildPath*** and run
|
Add **Python 3.9** and **NuGet** to your PATH:
|
||||||
|
|
||||||
cd ThirdParty
|
|
||||||
git clone https://github.com/desktop-app/patches.git
|
|
||||||
cd patches
|
|
||||||
git checkout d58ce6b2b0
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
git clone https://chromium.googlesource.com/external/gyp
|
|
||||||
cd gyp
|
|
||||||
git checkout 9f2a7bb1
|
|
||||||
git apply ../patches/gyp.diff
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
python -m pip install pywin32
|
|
||||||
|
|
||||||
Add **GYP**, **Ninja** and **NuGet** to your PATH:
|
|
||||||
|
|
||||||
* Open **Control Panel** -> **System** -> **Advanced system settings**.
|
* Open **Control Panel** -> **System** -> **Advanced system settings**.
|
||||||
* Press **Environment Variables...**.
|
* Press **Environment Variables...**.
|
||||||
* Select **Path**.
|
* Select **Path**.
|
||||||
* Press **Edit**.
|
* Press **Edit**.
|
||||||
* Add ***BuildPath*\\ThirdParty\\gyp** value.
|
* Add ***BuildPath*\\ThirdParty\\Python39** value.
|
||||||
* Add ***BuildPath*\\ThirdParty\\Ninja** value.
|
|
||||||
* Add ***BuildPath*\\ThirdParty\\NuGet** value.
|
* Add ***BuildPath*\\ThirdParty\\NuGet** value.
|
||||||
|
|
||||||
|
Open **x86 Native Tools Command Prompt for VS 2019.bat**, go to ***BuildPath*** and run
|
||||||
|
|
||||||
|
python -m pip install pywin32
|
||||||
|
|
||||||
## Clone source code and prepare libraries
|
## Clone source code and prepare libraries
|
||||||
|
|
||||||
Open **x86 Native Tools Command Prompt for VS 2019.bat**, go to ***BuildPath*** and run
|
Open **x86 Native Tools Command Prompt for VS 2019.bat**, go to ***BuildPath*** and run
|
||||||
|
|
||||||
SET PATH=%cd%\ThirdParty\Strawberry\perl\bin;%cd%\ThirdParty\Python27;%cd%\ThirdParty\NASM;%cd%\ThirdParty\jom;%cd%\ThirdParty\cmake\bin;%cd%\ThirdParty\yasm;%PATH%
|
|
||||||
|
|
||||||
git clone --recursive https://github.com/telegramdesktop/tdesktop.git
|
git clone --recursive https://github.com/telegramdesktop/tdesktop.git
|
||||||
|
tdesktop\Telegram\build\prepare\win.bat
|
||||||
mkdir Libraries
|
|
||||||
cd Libraries
|
|
||||||
|
|
||||||
git clone https://github.com/desktop-app/patches.git
|
|
||||||
cd patches
|
|
||||||
git checkout d58ce6b2b0
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
git clone https://github.com/desktop-app/lzma.git
|
|
||||||
cd lzma\C\Util\LzmaLib
|
|
||||||
msbuild LzmaLib.sln /property:Configuration=Debug /property:Platform="x86"
|
|
||||||
msbuild LzmaLib.sln /property:Configuration=Release /property:Platform="x86"
|
|
||||||
cd ..\..\..\..
|
|
||||||
|
|
||||||
git clone https://github.com/openssl/openssl.git openssl_1_1_1
|
|
||||||
cd openssl_1_1_1
|
|
||||||
git checkout OpenSSL_1_1_1-stable
|
|
||||||
perl Configure no-shared no-tests debug-VC-WIN32
|
|
||||||
nmake
|
|
||||||
mkdir out32.dbg
|
|
||||||
move libcrypto.lib out32.dbg
|
|
||||||
move libssl.lib out32.dbg
|
|
||||||
move ossl_static.pdb out32.dbg\ossl_static
|
|
||||||
nmake clean
|
|
||||||
move out32.dbg\ossl_static out32.dbg\ossl_static.pdb
|
|
||||||
perl Configure no-shared no-tests VC-WIN32
|
|
||||||
nmake
|
|
||||||
mkdir out32
|
|
||||||
move libcrypto.lib out32
|
|
||||||
move libssl.lib out32
|
|
||||||
move ossl_static.pdb out32
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
git clone https://github.com/desktop-app/zlib.git
|
|
||||||
cd zlib\contrib\vstudio\vc14
|
|
||||||
msbuild zlibstat.vcxproj /property:Configuration=Debug /property:Platform="x86"
|
|
||||||
msbuild zlibstat.vcxproj /property:Configuration=ReleaseWithoutAsm /property:Platform="x86"
|
|
||||||
cd ..\..\..\..
|
|
||||||
|
|
||||||
git clone -b v4.0.1-rc2 https://github.com/mozilla/mozjpeg.git
|
|
||||||
cd mozjpeg
|
|
||||||
cmake . ^
|
|
||||||
-G "Visual Studio 16 2019" ^
|
|
||||||
-A Win32 ^
|
|
||||||
-DWITH_JPEG8=ON ^
|
|
||||||
-DPNG_SUPPORTED=OFF
|
|
||||||
cmake --build . --config Debug
|
|
||||||
cmake --build . --config Release
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
git clone https://github.com/telegramdesktop/openal-soft.git
|
|
||||||
cd openal-soft
|
|
||||||
git checkout wasapi_exact_device_time
|
|
||||||
cd build
|
|
||||||
cmake .. ^
|
|
||||||
-G "Visual Studio 16 2019" ^
|
|
||||||
-A Win32 ^
|
|
||||||
-D LIBTYPE:STRING=STATIC ^
|
|
||||||
-D FORCE_STATIC_VCRT=ON
|
|
||||||
msbuild OpenAL.vcxproj /property:Configuration=Debug
|
|
||||||
msbuild OpenAL.vcxproj /property:Configuration=RelWithDebInfo
|
|
||||||
cd ..\..
|
|
||||||
|
|
||||||
git clone https://github.com/google/breakpad
|
|
||||||
cd breakpad
|
|
||||||
git checkout a1dbcdcb43
|
|
||||||
git apply ../patches/breakpad.diff
|
|
||||||
cd src
|
|
||||||
git clone https://github.com/google/googletest testing
|
|
||||||
cd client\windows
|
|
||||||
gyp --no-circular-check breakpad_client.gyp --format=ninja
|
|
||||||
cd ..\..
|
|
||||||
ninja -C out/Debug common crash_generation_client exception_handler
|
|
||||||
ninja -C out/Release common crash_generation_client exception_handler
|
|
||||||
cd tools\windows\dump_syms
|
|
||||||
gyp dump_syms.gyp
|
|
||||||
msbuild dump_syms.vcxproj /property:Configuration=Release
|
|
||||||
cd ..\..\..\..\..
|
|
||||||
|
|
||||||
git clone https://github.com/telegramdesktop/opus.git
|
|
||||||
cd opus
|
|
||||||
git checkout tdesktop
|
|
||||||
cd win32\VS2015
|
|
||||||
msbuild opus.sln /property:Configuration=Debug /property:Platform="Win32"
|
|
||||||
msbuild opus.sln /property:Configuration=Release /property:Platform="Win32"
|
|
||||||
cd ..\..\..
|
|
||||||
|
|
||||||
git clone https://github.com/desktop-app/rnnoise.git
|
|
||||||
cd rnnoise
|
|
||||||
mkdir out
|
|
||||||
cd out
|
|
||||||
cmake -A Win32 ..
|
|
||||||
cmake --build . --config Debug
|
|
||||||
cmake --build . --config Release
|
|
||||||
cd ..\..
|
|
||||||
|
|
||||||
cd ..
|
|
||||||
SET PATH_BACKUP_=%PATH%
|
|
||||||
SET PATH=%cd%\ThirdParty\msys64\usr\bin;%PATH%
|
|
||||||
cd Libraries
|
|
||||||
|
|
||||||
git clone https://github.com/FFmpeg/FFmpeg.git ffmpeg
|
|
||||||
cd ffmpeg
|
|
||||||
git checkout release/4.4
|
|
||||||
|
|
||||||
set CHERE_INVOKING=enabled_from_arguments
|
|
||||||
set MSYS2_PATH_TYPE=inherit
|
|
||||||
bash --login ../patches/build_ffmpeg_win.sh
|
|
||||||
|
|
||||||
SET PATH=%PATH_BACKUP_%
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
git clone https://github.com/desktop-app/tg_angle.git
|
|
||||||
cd tg_angle
|
|
||||||
git checkout ec51cc6
|
|
||||||
mkdir out
|
|
||||||
cd out
|
|
||||||
mkdir Debug
|
|
||||||
cd Debug
|
|
||||||
cmake -G Ninja ^
|
|
||||||
-DCMAKE_BUILD_TYPE=Debug ^
|
|
||||||
-DTG_ANGLE_SPECIAL_TARGET=win ^
|
|
||||||
-DTG_ANGLE_ZLIB_INCLUDE_PATH=%cd%/../../../zlib ../..
|
|
||||||
ninja
|
|
||||||
cd ..
|
|
||||||
mkdir Release
|
|
||||||
cd Release
|
|
||||||
cmake -G Ninja ^
|
|
||||||
-DCMAKE_BUILD_TYPE=Release ^
|
|
||||||
-DTG_ANGLE_SPECIAL_TARGET=win ^
|
|
||||||
-DTG_ANGLE_ZLIB_INCLUDE_PATH=%cd%/../../../zlib ../..
|
|
||||||
ninja
|
|
||||||
cd ..\..\..
|
|
||||||
|
|
||||||
SET LibrariesPath=%cd%
|
|
||||||
git clone git://code.qt.io/qt/qt5.git qt_5_15_2
|
|
||||||
cd qt_5_15_2
|
|
||||||
perl init-repository --module-subset=qtbase,qtimageformats,qtsvg
|
|
||||||
git checkout v5.15.2
|
|
||||||
git submodule update qtbase qtimageformats qtsvg
|
|
||||||
cd qtbase
|
|
||||||
for /r %i in (..\..\patches\qtbase_5_15_2\*) do git apply %i
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
configure ^
|
|
||||||
-prefix "%LibrariesPath%\Qt-5.15.2" ^
|
|
||||||
-debug-and-release ^
|
|
||||||
-force-debug-info ^
|
|
||||||
-opensource ^
|
|
||||||
-confirm-license ^
|
|
||||||
-static ^
|
|
||||||
-static-runtime ^
|
|
||||||
-opengl es2 -no-angle ^
|
|
||||||
-I "%LibrariesPath%\tg_angle\include" ^
|
|
||||||
-D "KHRONOS_STATIC=" ^
|
|
||||||
-D "DESKTOP_APP_QT_STATIC_ANGLE=" ^
|
|
||||||
QMAKE_LIBS_OPENGL_ES2_DEBUG="%LibrariesPath%\tg_angle\out\Debug\tg_angle.lib %LibrariesPath%\zlib\contrib\vstudio\vc14\x86\ZlibStatDebug\zlibstat.lib d3d9.lib dxgi.lib dxguid.lib" ^
|
|
||||||
QMAKE_LIBS_OPENGL_ES2_RELEASE="%LibrariesPath%\tg_angle\out\Release\tg_angle.lib %LibrariesPath%\zlib\contrib\vstudio\vc14\x86\ZlibStatReleaseWithoutAsm\zlibstat.lib d3d9.lib dxgi.lib dxguid.lib" ^
|
|
||||||
-egl ^
|
|
||||||
QMAKE_LIBS_EGL_DEBUG="%LibrariesPath%\tg_angle\out\Debug\tg_angle.lib %LibrariesPath%\zlib\contrib\vstudio\vc14\x86\ZlibStatDebug\zlibstat.lib d3d9.lib dxgi.lib dxguid.lib Gdi32.lib User32.lib" ^
|
|
||||||
QMAKE_LIBS_EGL_RELEASE="%LibrariesPath%\tg_angle\out\Release\tg_angle.lib %LibrariesPath%\zlib\contrib\vstudio\vc14\x86\ZlibStatReleaseWithoutAsm\zlibstat.lib d3d9.lib dxgi.lib dxguid.lib Gdi32.lib User32.lib" ^
|
|
||||||
-openssl-linked ^
|
|
||||||
-I "%LibrariesPath%\openssl_1_1_1\include" ^
|
|
||||||
OPENSSL_LIBS_DEBUG="%LibrariesPath%\openssl_1_1_1\out32.dbg\libssl.lib %LibrariesPath%\openssl_1_1_1\out32.dbg\libcrypto.lib Ws2_32.lib Gdi32.lib Advapi32.lib Crypt32.lib User32.lib" ^
|
|
||||||
OPENSSL_LIBS_RELEASE="%LibrariesPath%\openssl_1_1_1\out32\libssl.lib %LibrariesPath%\openssl_1_1_1\out32\libcrypto.lib Ws2_32.lib Gdi32.lib Advapi32.lib Crypt32.lib User32.lib" ^
|
|
||||||
-I "%LibrariesPath%\mozjpeg" ^
|
|
||||||
LIBJPEG_LIBS_DEBUG="%LibrariesPath%\mozjpeg\Debug\jpeg-static.lib" ^
|
|
||||||
LIBJPEG_LIBS_RELEASE="%LibrariesPath%\mozjpeg\Release\jpeg-static.lib" ^
|
|
||||||
-mp ^
|
|
||||||
-nomake examples ^
|
|
||||||
-nomake tests ^
|
|
||||||
-platform win32-msvc
|
|
||||||
|
|
||||||
jom -j8
|
|
||||||
jom -j8 install
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
git clone https://github.com/desktop-app/tg_owt.git
|
|
||||||
cd tg_owt
|
|
||||||
git checkout 91d836dc84
|
|
||||||
git submodule init
|
|
||||||
git submodule update
|
|
||||||
mkdir out
|
|
||||||
cd out
|
|
||||||
mkdir Debug
|
|
||||||
cd Debug
|
|
||||||
cmake -G Ninja ^
|
|
||||||
-DCMAKE_BUILD_TYPE=Debug ^
|
|
||||||
-DTG_OWT_BUILD_AUDIO_BACKENDS=OFF ^
|
|
||||||
-DTG_OWT_SPECIAL_TARGET=win ^
|
|
||||||
-DTG_OWT_LIBJPEG_INCLUDE_PATH=%cd%/../../../mozjpeg ^
|
|
||||||
-DTG_OWT_OPENSSL_INCLUDE_PATH=%cd%/../../../openssl_1_1_1/include ^
|
|
||||||
-DTG_OWT_OPUS_INCLUDE_PATH=%cd%/../../../opus/include ^
|
|
||||||
-DTG_OWT_FFMPEG_INCLUDE_PATH=%cd%/../../../ffmpeg ../..
|
|
||||||
ninja
|
|
||||||
cd ..
|
|
||||||
mkdir Release
|
|
||||||
cd Release
|
|
||||||
cmake -G Ninja ^
|
|
||||||
-DCMAKE_BUILD_TYPE=Release ^
|
|
||||||
-DTG_OWT_BUILD_AUDIO_BACKENDS=OFF ^
|
|
||||||
-DTG_OWT_SPECIAL_TARGET=win ^
|
|
||||||
-DTG_OWT_LIBJPEG_INCLUDE_PATH=%cd%/../../../mozjpeg ^
|
|
||||||
-DTG_OWT_OPENSSL_INCLUDE_PATH=%cd%/../../../openssl_1_1_1/include ^
|
|
||||||
-DTG_OWT_OPUS_INCLUDE_PATH=%cd%/../../../opus/include ^
|
|
||||||
-DTG_OWT_FFMPEG_INCLUDE_PATH=%cd%/../../../ffmpeg ../..
|
|
||||||
ninja
|
|
||||||
cd ..\..\..
|
|
||||||
|
|
||||||
## Build the project
|
## Build the project
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue