tdlight-java-natives-window.../jenkins/scripts/cross_compile.sh

102 lines
4.2 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=/home/jenkins/java11_cross/jdk/lib/jawt.lib
export JAVA_JVM_LIBRARY=/home/jenkins/java11_cross/jdk/lib/jvm.lib
export JAVA_INCLUDE_PATH=/home/jenkins/java11_cross/jdk/include
export JAVA_INCLUDE_PATH2=/home/jenkins/java11_cross/jdk/include/win32
export JAVA_AWT_INCLUDE_PATH=/home/jenkins/java11_cross/jdk/include
TOOLCHAIN_FILE=$TRAVIS_BUILD_DIR/toolchain-win64.cmake
# ====== 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=/home/jenkins/openssl_cross_dir \
-DOPENSSL_LIBRARIES_DIR=/home/jenkins/openssl_cross_dir/lib \
-DOPENSSL_INCLUDE_DIR=/home/jenkins/openssl_cross_dir/include \
-DOPENSSL_CRYPTO_LIBRARY=/home/jenkins/openssl_cross_dir/libcrypto-3-x64.dll \
-DOPENSSL_SSL_LIBRARY=/home/jenkins/openssl_cross_dir/libssl-3-x64.dll \
-DZLIB_ROOT=/home/jenkins/zlib_cross \
-DZLIB_LIBRARY=/home/jenkins/zlib_cross/zlib1.dll \
-DZLIB_LIBRARIES_DIR=/home/jenkins/zlib_cross \
-DZLIB_INCLUDE_DIR=/home/jenkins/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=/home/jenkins/openssl_cross_dir \
-DOPENSSL_LIBRARIES_DIR=/home/jenkins/openssl_cross_dir/lib \
-DOPENSSL_INCLUDE_DIR=/home/jenkins/openssl_cross_dir/include \
-DOPENSSL_CRYPTO_LIBRARY=/home/jenkins/openssl_cross_dir/libcrypto-3-x64.dll \
-DOPENSSL_SSL_LIBRARY=/home/jenkins/openssl_cross_dir/libssl-3-x64.dll \
-DZLIB_ROOT=/home/jenkins/zlib_cross \
-DZLIB_LIBRARY=/home/jenkins/zlib_cross/zlib1.dll \
-DZLIB_LIBRARIES_DIR=/home/jenkins/zlib_cross \
-DZLIB_INCLUDE_DIR=/home/jenkins/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
cp $TDNATIVES_BIN_DIR/$SRC_TDJNI_LIBNAME $TDLIB_RESOURCES_OUTPUT_DIR/$DEST_TDJNI_LIBNAME
cp /home/jenkins/zlib_cross/zlib1.dll $TDLIB_RESOURCES_OUTPUT_DIR/zlib1.dll
cp /home/jenkins/openssl_cross_dir/bin/libcrypto-3-x64.dll $TDLIB_RESOURCES_OUTPUT_DIR/libcrypto-3-x64.dll
cp /home/jenkins/openssl_cross_dir/bin/libssl-3-x64.dll $TDLIB_RESOURCES_OUTPUT_DIR/libssl-3-x64.dll
cp /usr/x86_64-w64-mingw32/lib/libwinpthread-1.dll $TDLIB_RESOURCES_OUTPUT_DIR/libwinpthread-1.dll
cp /usr/lib/gcc/x86_64-w64-mingw32/8.3-posix/libstdc++-6.dll $TDLIB_RESOURCES_OUTPUT_DIR/libstdc++-6.dll
cp /usr/lib/gcc/x86_64-w64-mingw32/8.3-posix/libgcc_s_seh-1.dll $TDLIB_RESOURCES_OUTPUT_DIR/libgcc_s_seh-1.dll