108 lines
3.9 KiB
Bash
Executable File
108 lines
3.9 KiB
Bash
Executable File
#!/bin/bash -e
|
|
# ====== Setup workspace
|
|
cd $TRAVIS_BUILD_DIR
|
|
source ./jenkins/scripts/setup_workspace.sh
|
|
|
|
export JAVA_HOME=/usr/lib/jvm/zulu-11-amd64
|
|
export JAVA_AWT_LIBRARY=/tmp/java11_cross/jdk/lib/jawt.lib
|
|
export JAVA_JVM_LIBRARY=/tmp/java11_cross/jdk/lib/jvm.lib
|
|
export JAVA_INCLUDE_PATH=/tmp/java11_cross/jdk/include
|
|
export JAVA_INCLUDE_PATH2=/tmp/java11_cross/jdk/include/win32
|
|
export JAVA_AWT_INCLUDE_PATH=/tmp/java11_cross/jdk/include
|
|
TOOLCHAIN_FILE=$TRAVIS_BUILD_DIR/toolchain-win64.cmake
|
|
|
|
# ====== Prepare dependencies
|
|
## Install zlib for windows
|
|
cd /tmp/zlib_cross
|
|
export CC=x86_64-w64-mingw32-gcc-posix
|
|
./configure --prefix=/tmp/zlib_cross
|
|
make -f win32/Makefile.gcc BINARY_PATH=/tmp/zlib_cross/bin INCLUDE_PATH=/tmp/zlib_cross/include LIBRARY_PATH=/tmp/zlib_cross/lib PREFIX=x86_64-w64-mingw32- install
|
|
|
|
## Install openssl for windows
|
|
cd /tmp/openssl_cross
|
|
export CC=
|
|
./Configure --cross-compile-prefix=x86_64-w64-mingw32- --prefix=/tmp/openssl_cross mingw64 shared
|
|
sudo make install -j${TRAVIS_CPU_CORES}
|
|
|
|
# ====== Prepare TdLib
|
|
# Cross compilation preparation (also needed for split sources)
|
|
cd $TD_BUILD_DIR
|
|
nice -n 5 chrt -b 0 \
|
|
cmake \
|
|
-DCMAKE_CROSSCOMPILING=ON \
|
|
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \
|
|
-DJNI_FOUND=True \
|
|
-DJNI_LIBRARIES="${JAVA_AWT_LIBRARY} ${JAVA_JVM_LIBRARY}" \
|
|
-DJNI_INCLUDE_DIRS="${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2} ${JAVA_AWT_INCLUDE_PATH}" \
|
|
-DJAVA_JVM_LIBRARY=${JAVA_JVM_LIBRARY} \
|
|
-DJAVA_INCLUDE_PATH=${JAVA_INCLUDE_PATH} \
|
|
-DJAVA_INCLUDE_PATH2=${JAVA_INCLUDE_PATH2} \
|
|
-DOPENSSL_ROOT_DIR=/tmp/openssl_cross \
|
|
-DOPENSSL_LIBRARIES_DIR=/tmp/openssl_cross/lib \
|
|
-DOPENSSL_INCLUDE_DIR=/tmp/openssl_cross/include \
|
|
-DOPENSSL_CRYPTO_LIBRARY=/tmp/openssl_cross/libcrypto-3-x64.dll \
|
|
-DOPENSSL_SSL_LIBRARY=/tmp/openssl_cross/libssl-3-x64.dll \
|
|
-DZLIB_ROOT=/tmp/zlib_cross \
|
|
-DZLIB_LIBRARY=/tmp/zlib_cross/zlib1.dll \
|
|
-DZLIB_LIBRARIES_DIR=/tmp/zlib_cross \
|
|
-DZLIB_INCLUDE_DIR=/tmp/zlib_cross/include \
|
|
\
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCMAKE_INSTALL_PREFIX:PATH=${TD_BIN_DIR} \
|
|
-DTD_ENABLE_JNI=ON \
|
|
${TD_SRC_DIR}
|
|
|
|
# Split sources
|
|
cd $TD_SRC_DIR
|
|
nice -n 5 chrt -b 0 php SplitSource.php
|
|
|
|
# Build
|
|
cd $TD_BUILD_DIR
|
|
nice -n 5 chrt -b 0 cmake --build $TD_BUILD_DIR --target install --parallel ${TRAVIS_CPU_CORES}
|
|
|
|
# Undo split-sources
|
|
cd $TD_SRC_DIR
|
|
nice -n 5 chrt -b 0 php SplitSource.php --undo
|
|
|
|
# ====== Build TdNatives
|
|
cd $TDNATIVES_CPP_BUILD_DIR
|
|
nice -n 5 chrt -b 0 \
|
|
cmake \
|
|
-DCMAKE_CROSSCOMPILING=ON \
|
|
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \
|
|
-DJNI_FOUND=True \
|
|
-DJNI_LIBRARIES="${JAVA_AWT_LIBRARY} ${JAVA_JVM_LIBRARY}" \
|
|
-DJNI_INCLUDE_DIRS="${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2} ${JAVA_AWT_INCLUDE_PATH}" \
|
|
-DJAVA_JVM_LIBRARY=${JAVA_JVM_LIBRARY} \
|
|
-DJAVA_INCLUDE_PATH=${JAVA_INCLUDE_PATH} \
|
|
-DJAVA_INCLUDE_PATH2=${JAVA_INCLUDE_PATH2} \
|
|
-DOPENSSL_ROOT_DIR=/tmp/openssl_cross \
|
|
-DOPENSSL_LIBRARIES_DIR=/tmp/openssl_cross/lib \
|
|
-DOPENSSL_INCLUDE_DIR=/tmp/openssl_cross/include \
|
|
-DOPENSSL_CRYPTO_LIBRARY=/tmp/openssl_cross/libcrypto-3-x64.dll \
|
|
-DOPENSSL_SSL_LIBRARY=/tmp/openssl_cross/libssl-3-x64.dll \
|
|
-DZLIB_ROOT=/tmp/zlib_cross \
|
|
-DZLIB_LIBRARY=/tmp/zlib_cross/zlib1.dll \
|
|
-DZLIB_LIBRARIES_DIR=/tmp/zlib_cross \
|
|
-DZLIB_INCLUDE_DIR=/tmp/zlib_cross/include \
|
|
\
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DTD_GENERATED_BINARIES_DIR=${TD_CROSS_BIN_DIR}/td/generate \
|
|
-DTD_SRC_DIR=${TD_SRC_DIR} \
|
|
-DTDNATIVES_BIN_DIR=${TDNATIVES_BIN_DIR} \
|
|
-DTDNATIVES_DOCS_BIN_DIR=${TDNATIVES_DOCS_BIN_DIR} \
|
|
-DTd_DIR=${TD_BIN_DIR}/lib/cmake/Td \
|
|
-DJAVA_SRC_DIR=${JAVA_SRC_DIR} \
|
|
-DTDNATIVES_CPP_SRC_DIR:PATH=$TDNATIVES_CPP_SRC_DIR \
|
|
$TDNATIVES_CPP_SRC_DIR
|
|
nice -n 5 chrt -b 0 cmake --build $TDNATIVES_CPP_BUILD_DIR --target install --parallel ${TRAVIS_CPU_CORES}
|
|
|
|
# ====== Print results stats
|
|
echo "CCACHE statistics:"
|
|
ccache -s
|
|
|
|
# ====== Copy output
|
|
cd $TDNATIVES_CPP_BUILD_DIR
|
|
mkdir -p $TDLIB_RESOURCES_OUTPUT_DIR
|
|
mv $TDNATIVES_BIN_DIR/$SRC_TDJNI_LIBNAME $TDLIB_RESOURCES_OUTPUT_DIR/$DEST_TDJNI_LIBNAME
|