diff --git a/Telegram/build/docker/centos_env/Dockerfile b/Telegram/build/docker/centos_env/Dockerfile index 54f92ad441..3bf61e1ede 100644 --- a/Telegram/build/docker/centos_env/Dockerfile +++ b/Telegram/build/docker/centos_env/Dockerfile @@ -811,6 +811,38 @@ RUN git clone -b v3.2.2 --depth=1 {{ GIT }}/ada-url/ada.git \ && cd .. \ && rm -rf ada +FROM builder AS tdlib +COPY --link --from=openssl {{ LibrariesPath }}/openssl-cache / + +# Shallow clone on a specific commit. +RUN git init td \ + && cd td \ + && git remote add origin {{ GIT }}/tdlib/td.git \ + && git fetch --depth=1 origin a03a90470d6fca9a5a3db747ba3f3e4a465b5fe7 \ + && git reset --hard FETCH_HEAD \ + && rm -rf .git \ + && env -u CFLAGS -u CXXFLAGS cmake -B out/Release . \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_C_FLAGS_RELEASE="$CFLAGS" \ + -DCMAKE_C_FLAGS_DEBUG="{{ CFLAGS_DEBUG }}" \ + -DCMAKE_CXX_FLAGS_RELEASE="$CXXFLAGS" \ + -DCMAKE_CXX_FLAGS_DEBUG="{{ CFLAGS_DEBUG }}" \ + && cmake --build out/Release --config Release --target tde2e -j$(nproc) + +WORKDIR td + +{%- if DEBUG %} + +FROM tdlib AS tdlib_debug +RUN env -u CFLAGS -u CXXFLAGS cmake -B out/Debug . \ + -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_C_FLAGS_RELEASE="$CFLAGS" \ + -DCMAKE_C_FLAGS_DEBUG="{{ CFLAGS_DEBUG }}" \ + -DCMAKE_CXX_FLAGS_RELEASE="$CXXFLAGS" \ + -DCMAKE_CXX_FLAGS_DEBUG="{{ CFLAGS_DEBUG }}" \ + && cmake --build out/Debug --config Debug --target tde2e -j$(nproc) +{%- endif %} + FROM builder COPY --link --from=zlib {{ LibrariesPath }}/zlib-cache / COPY --link --from=xz {{ LibrariesPath }}/xz-cache / @@ -860,6 +892,11 @@ COPY --link --from=ada {{ LibrariesPath }}/ada-cache / COPY --link --from=webrtc_debug {{ LibrariesPath }}/tg_owt/out/Debug tg_owt/out/Debug {%- endif %} +COPY --link --from=tdlib {{ LibrariesPath }}/td td +{%- if DEBUG %} +COPY --link --from=tdlib_debug {{ LibrariesPath }}/td/out/Debug td/out/Debug +{%- endif %} + WORKDIR ../tdesktop ENV QT {{ QT }} ENV BOOST_INCLUDEDIR /usr/include/boost1.78 diff --git a/Telegram/build/prepare/prepare.py b/Telegram/build/prepare/prepare.py index e24287724a..5ebf3004a0 100644 --- a/Telegram/build/prepare/prepare.py +++ b/Telegram/build/prepare/prepare.py @@ -1925,6 +1925,76 @@ win: # -Dprotobuf_WITH_ZLIB_DEFAULT=OFF # cmake --build . $MAKE_THREADS_CNT +stage('td', """ + git clone https://github.com/tdlib/td.git + cd td + git checkout a03a90470d +win: + SET OPENSSL_DIR=%LIBS_DIR%\\openssl3 + SET OPENSSL_LIBS_DIR=%OPENSSL_DIR%\\out + SET ZLIB_LIBS_DIR=%LIBS_DIR%\\zlib + mkdir out + cd out + mkdir Debug + cd Debug + cmake -A %WIN32X64% ^ + -DOPENSSL_FOUND=1 ^ + -DOPENSSL_INCLUDE_DIR=%OPENSSL_DIR%\\include ^ + -DOPENSSL_CRYPTO_LIBRARY="%OPENSSL_LIBS_DIR%.dbg\\libcrypto.lib" ^ + -DGPERF_EXECUTABLE=%ROOT_DIR%\\ThirdParty\\gperf\\bin\\gperf ^ + -DZLIB_FOUND=1 ^ + -DZLIB_INCLUDE_DIR=%ZLIB_LIBS_DIR% ^ + -DZLIB_LIBRARIES="%ZLIB_LIBS_DIR%\\Debug\\zlibstaticd.lib" ^ + -DCMAKE_CXX_FLAGS_DEBUG="/DZLIB_WINAPI /DNDEBUG /MTd /Zi /Od /Ob0" ^ + -DCMAKE_C_FLAGS_DEBUG="/DNDEBUG /MTd /Zi /Od /Ob0" ^ + -DCMAKE_EXE_LINKER_FLAGS="/SAFESEH:NO Ws2_32.lib Gdi32.lib Advapi32.lib Crypt32.lib User32.lib %OPENSSL_LIBS_DIR%.dbg\\libssl.lib" ^ + -DCMAKE_SHARED_LINKER_FLAGS="/SAFESEH:NO Ws2_32.lib Gdi32.lib Advapi32.lib Crypt32.lib User32.lib %OPENSSL_LIBS_DIR%.dbg\\libssl.lib" ^ + -DTD_ENABLE_MULTI_PROCESSOR_COMPILATION=ON ^ + ../.. + cmake --build . --config Debug --target tde2e +release: + cd .. + mkdir Release + cd Release + cmake -A %WIN32X64% ^ + -DOPENSSL_FOUND=1 ^ + -DOPENSSL_INCLUDE_DIR=%OPENSSL_DIR%\\include ^ + -DOPENSSL_CRYPTO_LIBRARY="%OPENSSL_LIBS_DIR%\\libcrypto.lib" ^ + -DGPERF_EXECUTABLE=%ROOT_DIR%\\ThirdParty\\gperf\\bin\\gperf ^ + -DZLIB_FOUND=1 ^ + -DZLIB_INCLUDE_DIR=%ZLIB_LIBS_DIR% ^ + -DZLIB_LIBRARIES="%ZLIB_LIBS_DIR%\\Release\\zlibstatic.lib" ^ + -DCMAKE_CXX_FLAGS_RELEASE="/DZLIB_WINAPI /MT /Ob2" ^ + -DCMAKE_C_FLAGS_RELEASE="/MT /Ob2" ^ + -DCMAKE_EXE_LINKER_FLAGS="/SAFESEH:NO Ws2_32.lib Gdi32.lib Advapi32.lib Crypt32.lib User32.lib %OPENSSL_LIBS_DIR%\\libssl.lib" ^ + -DCMAKE_SHARED_LINKER_FLAGS="/SAFESEH:NO Ws2_32.lib Gdi32.lib Advapi32.lib Crypt32.lib User32.lib %OPENSSL_LIBS_DIR%\\libssl.lib" ^ + -DTD_ENABLE_MULTI_PROCESSOR_COMPILATION=ON ^ + ../.. + cmake --build . --config Release --target tde2e +mac: + buildTd() { + BUILD_CONFIG=$1 + mkdir -p out/$BUILD_CONFIG + cd out/$BUILD_CONFIG + cmake -G Ninja \ + -DCMAKE_BUILD_TYPE=$BUILD_CONFIG \ + -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" \ + -DOPENSSL_FOUND=1 \ + -DOPENSSL_INCLUDE_DIR=$LIBS_DIR/openssl3/include \ + -DOPENSSL_SSL_LIBRARY=$LIBS_DIR/openssl3/libssl.a \ + -DOPENSSL_CRYPTO_LIBRARY=$LIBS_DIR/openssl3/libcrypto.a \ + -DZLIB_FOUND=1 \ + -DZLIB_LIBRARIES=$USED_PREFIX/lib/libz.a \ + ../.. + cmake --build . --config $BUILD_CONFIG --target tde2e $MAKE_THREADS_CNT + cd ../.. + } + + buildTd Debug +release: + buildTd Release +""") + if win: currentCodePage = subprocess.run('chcp', capture_output=True, shell=True, text=True, env=modifiedEnv).stdout.strip().split()[-1] subprocess.run('chcp 65001 > nul', shell=True, env=modifiedEnv)