#!/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 nice -n 5 chrt -b 0 ./configure --prefix=/tmp/zlib_cross nice -n 5 chrt -b 0 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= nice -n 5 chrt -b 0 ./Configure --cross-compile-prefix=x86_64-w64-mingw32- --prefix=/tmp/openssl_cross mingw64 shared nice -n 5 chrt -b 0 sudo make install # ====== 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