Compare commits
253 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
b874cb27ae | ||
|
7ae6ebdb05 | ||
|
98d20029b8 | ||
|
0ee9b469da | ||
|
7a89758d11 | ||
|
5a69be308b | ||
|
4ebd2a14a4 | ||
|
ad7049b177 | ||
|
046c3ea451 | ||
|
78cc29ff23 | ||
|
c25a2993f2 | ||
|
e37957cfcc | ||
|
ed68a0851b | ||
|
434fd1cc79 | ||
|
aa2c6061c2 | ||
|
5c4b84519c | ||
|
65628aac1f | ||
|
1c267436c3 | ||
|
231e543608 | ||
|
3bf599c768 | ||
|
63ae6612ad | ||
|
57cdb15a79 | ||
|
c3726a2707 | ||
78bac3faca | |||
2949c36eb8 | |||
7594e7af47 | |||
90c7b32d37 | |||
5483510842 | |||
9d920d4ced | |||
a6a4abe113 | |||
f29f228656 | |||
a627598d5f | |||
|
7fbd1db01d | ||
|
c12b2c8101 | ||
|
35eb351922 | ||
|
93195088f8 | ||
|
5be581700f | ||
|
41d4a91ade | ||
|
58cc508056 | ||
|
537b8988ea | ||
|
61dfe1deaa | ||
|
cedb84a5ea | ||
|
b9463a02af | ||
|
91491e9893 | ||
|
b35377fa1f | ||
|
7d6c17f386 | ||
|
9d8e67cd2f | ||
|
8809263e3b | ||
|
3b20f4f618 | ||
|
80e13860d8 | ||
|
209ca6a20f | ||
|
9e8f14a700 | ||
|
290d443ac3 | ||
|
c68097fe1f | ||
|
c83bc5433a | ||
|
51de6b0602 | ||
|
3fd4c9aa89 | ||
|
8e31661660 | ||
|
1a3dd7e391 | ||
|
e63ebec003 | ||
|
8092a4662c | ||
|
cb035fe6f7 | ||
|
cf2b478dcb | ||
|
3ce19cd092 | ||
|
f58268c859 | ||
|
0e96585516 | ||
|
ca9604f774 | ||
|
b0b9305bcb | ||
|
3ac972595a | ||
|
e468d4bdfe | ||
|
630896e20c | ||
|
ac42e1338e | ||
|
b6a8d03538 | ||
|
c5ec94394d | ||
|
d85b961d28 | ||
|
942b9206b4 | ||
|
babbe3bc81 | ||
|
241e88190b | ||
|
a6e3e41583 | ||
|
69bff16d11 | ||
|
0be5709d78 | ||
|
06b09272b7 | ||
|
470146e1f6 | ||
|
3f4b618716 | ||
|
a54950dc93 | ||
|
d411414c9e | ||
|
69e71bccd9 | ||
|
6fac95b96d | ||
|
55108e5df4 | ||
|
6d5522d05e | ||
|
ee360753e4 | ||
|
b4795a1465 | ||
|
10da7114ca | ||
|
ddfc58f84b | ||
|
ad32b5597d | ||
|
23f164faf8 | ||
|
8b9b02833b | ||
|
dcb4af6e05 | ||
|
0707cfc538 | ||
|
efadaad167 | ||
|
cab5a3d8eb | ||
|
da24d314ea | ||
|
380c44ad46 | ||
|
d9c015bc5b | ||
|
bdedb36f50 | ||
|
a45542d637 | ||
|
128ea52b07 | ||
|
2f8185fb92 | ||
|
63d14d7170 | ||
|
1bb7e8b05f | ||
|
e61da6af3d | ||
|
95ac6c9b8f | ||
|
0cad5f9e8a | ||
|
104884b966 | ||
|
aafa971bf9 | ||
|
9ebc8af349 | ||
|
384b7b39a3 | ||
|
2d53691179 | ||
|
d60bb70391 | ||
|
025e72806d | ||
|
2b2cb07dea | ||
|
d95cfd7fed | ||
|
40ee7cb3e3 | ||
|
4a9e249b29 | ||
|
278312db5b | ||
|
1d68341728 | ||
|
71b12c2025 | ||
|
8208938b7e | ||
|
d88d6187ac | ||
|
16e76e87b7 | ||
|
afa501d306 | ||
|
6b2f774337 | ||
|
262ab0c4be | ||
|
305473c206 | ||
|
9ef688a833 | ||
|
cd6c20969e | ||
|
b373f2121b | ||
|
0470146be9 | ||
|
80011b08e6 | ||
|
e933cf2223 | ||
|
6f951bb11a | ||
|
443a3e7b45 | ||
f9bbd11d24 | |||
616a56d9d8 | |||
c32ba7bb55 | |||
b09d33e3cb | |||
1cdee0ea42 | |||
c4f4855257 | |||
9c93305ff6 | |||
9f0a1760e2 | |||
77d0770a59 | |||
08943e8782 | |||
5c2a9b6aea | |||
ed16207b37 | |||
8098add2ae | |||
7d4fcbb148 | |||
5f7da0ee06 | |||
70fb534cdc | |||
|
6fd1c60b17 | ||
|
14161a153e | ||
|
7568c310c0 | ||
|
775c73c412 | ||
|
23fcce0f6b | ||
|
60f0d13902 | ||
|
51c562e249 | ||
|
e4eed9e545 | ||
|
4c114a7716 | ||
|
bc246043dd | ||
|
09e938fa5d | ||
|
3a3919d10c | ||
|
338a85da4d | ||
|
e75aa6316f | ||
|
e85b2c74c7 | ||
|
e97934ab7b | ||
|
52bf29d34b | ||
|
af36561cb5 | ||
|
7d616c5f6f | ||
|
77dcacf308 | ||
|
edbf915ce4 | ||
|
5292721e80 | ||
|
e75ea78a35 | ||
|
055d6cfb01 | ||
|
317a524cd6 | ||
|
3af2119329 | ||
|
f98ca55ac5 | ||
|
13b85d37c2 | ||
|
547a567934 | ||
|
af088ad4fd | ||
|
f14a7c17a8 | ||
|
364fc90946 | ||
|
1675b3618b | ||
|
0dc4fd13f0 | ||
|
0eecc12a43 | ||
|
8ef8b2124c | ||
|
baf9d2d778 | ||
|
7e48ad503d | ||
|
ac11e4cd14 | ||
|
d769542fcb | ||
|
5641d638f7 | ||
|
baebc5b1de | ||
|
40816c0dee | ||
|
059f8e6e4a | ||
|
9c326aa755 | ||
|
6daf99448e | ||
|
e970131801 | ||
|
2e63053f4e | ||
|
b10bad2518 | ||
|
bae610df91 | ||
|
9fc590fdff | ||
|
cd73cf05b9 | ||
|
bb699fed33 | ||
|
0abcd92975 | ||
|
4c7bd7c075 | ||
|
32e7232a00 | ||
|
9f19713141 | ||
|
80b695e28f | ||
|
e1c1e568f9 | ||
|
08f811ddb4 | ||
|
3eb6f62aab | ||
|
16ab948f60 | ||
|
a79f4565a9 | ||
|
2e97c61005 | ||
|
de1fcdd602 | ||
|
1ee5e2d163 | ||
|
e2851d4f82 | ||
|
ed2b68ec45 | ||
|
5c0d4a0242 | ||
|
3bb2b20141 | ||
|
a279aa5713 | ||
|
2e7798eb5f | ||
|
95961d1a2d | ||
|
4f359fd7e3 | ||
|
d7f777bf15 | ||
|
0ac5986b18 | ||
|
68edb3393c | ||
|
8947b3c3c6 | ||
|
0edcf4b0ed | ||
|
4c0cb6c62f | ||
|
3e3690b53c | ||
|
3b9bbce2fb | ||
|
d75c49e38c | ||
|
8f22e3c98a | ||
|
601eec6337 | ||
|
be56497397 | ||
|
ec1067075e | ||
f3d98c0cbc | |||
d0f90ada40 | |||
4a1ec6fce4 | |||
b218ca97da | |||
7866e8269c | |||
59ec1cc9d0 | |||
|
8a8515638e | ||
|
af2523f3c0 |
27
.docker/SymlinkPrefix.javash
Executable file
27
.docker/SymlinkPrefix.javash
Executable file
@ -0,0 +1,27 @@
|
|||||||
|
#!/usr/bin/java --source 11
|
||||||
|
import java.io.IOException; import java.nio.file.*; import java.nio.file.attribute.BasicFileAttributes;
|
||||||
|
public class Main {
|
||||||
|
/** @param args directory, sourcePrefix, targetPrefix */
|
||||||
|
public static void main(String[] args) throws IOException {
|
||||||
|
Path dir = Path.of(args[0]).toAbsolutePath().normalize();
|
||||||
|
Path sourcePrefix = dir.resolve(Path.of(args[1])).normalize();
|
||||||
|
Path targetPrefix = dir.resolve(Path.of(args[2])).normalize();
|
||||||
|
System.out.printf("Replacing symlinks in '%s' from '%s' to '%s'%n", dir, sourcePrefix, targetPrefix);
|
||||||
|
Files.walkFileTree(dir, new SimpleFileVisitor<>() {
|
||||||
|
@Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
|
||||||
|
if (attrs.isSymbolicLink()) {
|
||||||
|
var originalTarget = Files.readSymbolicLink(file).normalize();
|
||||||
|
if (originalTarget.startsWith(sourcePrefix)) {
|
||||||
|
var symlinkFileDir = file.getParent();
|
||||||
|
originalTarget = symlinkFileDir.resolve(originalTarget);
|
||||||
|
Files.delete(file);
|
||||||
|
var target = symlinkFileDir.relativize(targetPrefix.resolve(sourcePrefix.relativize(originalTarget))).normalize();
|
||||||
|
Files.createSymbolicLink(file, target);
|
||||||
|
System.out.printf("Symlink at '%s' pointing at '%s' is now pointing at '%s'%n", file, originalTarget, target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return FileVisitResult.CONTINUE;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
10
.docker/downloadthis.sh
Executable file
10
.docker/downloadthis.sh
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash -ex
|
||||||
|
export PREV="$(pwd)"
|
||||||
|
in=(${2//:/ })
|
||||||
|
tmpdir="$1/${in[1]:-"default"}/`cat /etc/os-release | md5sum --binary | awk '{ print $1 }'`"
|
||||||
|
mkdir -p "$tmpdir"
|
||||||
|
cd "$tmpdir"
|
||||||
|
apt-get download "$2"
|
||||||
|
filename="$(find . -type f -name "${in[0]}_*_${in[1]:-"amd64"}.deb" | sort | tail -n1)"
|
||||||
|
dpkg -x "$filename" "$3"
|
||||||
|
cd "$PREV"
|
12
.docker/install-sccache.sh
Executable file
12
.docker/install-sccache.sh
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/bash -ex
|
||||||
|
if [ ! -f /opt/sccache/sccache ]; then
|
||||||
|
apt-get --assume-yes update
|
||||||
|
apt-get --assume-yes install wget
|
||||||
|
wget https://github.com/mozilla/sccache/releases/download/v0.5.4/sccache-v0.5.4-x86_64-unknown-linux-musl.tar.gz
|
||||||
|
tar xzf sccache-v0.5.4-x86_64-unknown-linux-musl.tar.gz
|
||||||
|
rm sccache-v0.5.4-x86_64-unknown-linux-musl.tar.gz
|
||||||
|
mkdir -p /opt/sccache/
|
||||||
|
mv sccache-v0.5.4-x86_64-unknown-linux-musl/sccache /opt/sccache/sccache
|
||||||
|
rm -r sccache-v0.5.4-x86_64-unknown-linux-musl
|
||||||
|
chmod +x /opt/sccache/sccache
|
||||||
|
fi
|
6
.dockerignore
Normal file
6
.dockerignore
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
/**
|
||||||
|
!/.docker
|
||||||
|
!/api
|
||||||
|
!/implementations
|
||||||
|
!/natives
|
||||||
|
!/tdlib-serializer
|
343
.github/workflows/platform_natives.yaml
vendored
343
.github/workflows/platform_natives.yaml
vendored
@ -1,4 +1,4 @@
|
|||||||
name: Docker multi-arch build
|
name: multi-arch build
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
@ -8,37 +8,35 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: Build (${{ matrix.implementation }}-${{ matrix.os }}-${{ matrix.arch }})
|
name: ${{ matrix.type }} on ${{ matrix.os }}
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- {os: ubuntu-20.04, usedocker: "true", useqemu: "false", arch: "linux/386", implementation: "tdlight"}
|
- { os: ubuntu-22.04, type: "linux_amd64_gnu_ssl1", compiler: "gnu", ssl: "ssl1", debianArch: "amd64", tripleArch: "x86_64", tripleGnu: "gnu", debianVersion: "buster-backports", native: "true" }
|
||||||
#- {os: ubuntu-20.04, usedocker: "true", useqemu: "false", arch: "linux/386", implementation: "tdlib"}
|
- { os: ubuntu-22.04, type: "linux_amd64_gnu_ssl3", compiler: "gnu", ssl: "ssl3", debianArch: "amd64", tripleArch: "x86_64", tripleGnu: "gnu", debianVersion: "bookworm-backports", native: "true" }
|
||||||
- {os: ubuntu-20.04, usedocker: "true", useqemu: "false", arch: "linux/amd64", implementation: "tdlight"}
|
- { os: ubuntu-22.04, type: "linux_amd64_clang_ssl3", compiler: "clang", ssl: "ssl3", debianArch: "amd64", tripleArch: "x86_64", tripleGnu: "gnu", debianVersion: "bookworm-backports", native: "true" }
|
||||||
#- {os: ubuntu-20.04, usedocker: "true", useqemu: "false", arch: "linux/amd64", implementation: "tdlib"}
|
#- { os: ubuntu-22.04, type: "linux_i386_gnu_ssl1", compiler: "gnu", ssl: "ssl1", debianArch: "i386", tripleArch: "i386", tripleGnu: "gnu", debianVersion: "buster-backports", native: "false" }
|
||||||
- {os: ubuntu-20.04, usedocker: "true", useqemu: "false", arch: "linux/armhf", implementation: "tdlight"}
|
#- { os: ubuntu-22.04, type: "linux_i386_gnu_ssl3", compiler: "gnu", ssl: "ssl3", debianArch: "i386", tripleArch: "i386", tripleGnu: "gnu", debianVersion: "bookworm-backports", native: "false" }
|
||||||
#- {os: ubuntu-20.04, usedocker: "true", useqemu: "false", arch: "linux/armhf", implementation: "tdlib"}
|
- { os: ubuntu-22.04, type: "linux_ppc64el_gnu_ssl3", compiler: "gnu", ssl: "ssl3", debianArch: "ppc64el", tripleArch: "powerpc64le", tripleGnu: "gnu", debianVersion: "bookworm-backports", native: "false" }
|
||||||
- {os: ubuntu-20.04, usedocker: "true", useqemu: "false", arch: "linux/arm64", implementation: "tdlight"}
|
- { os: ubuntu-22.04, type: "linux_riscv64_gnu_ssl3", compiler: "gnu", ssl: "ssl3", debianArch: "riscv64", tripleArch: "riscv64", tripleGnu: "gnu", debianVersion: "sid", native: "false" }
|
||||||
#- {os: ubuntu-20.04, usedocker: "true", useqemu: "false", arch: "linux/arm64", implementation: "tdlib"}
|
- { os: ubuntu-22.04, type: "linux_armhf_gnu_ssl1", compiler: "gnu", ssl: "ssl1", debianArch: "armhf", tripleArch: "arm", tripleGnu: "gnueabihf", debianVersion: "buster-backports", native: "false" }
|
||||||
- {os: ubuntu-20.04, usedocker: "true", useqemu: "false", arch: "linux/s390x", implementation: "tdlight"}
|
- { os: ubuntu-22.04, type: "linux_armhf_gnu_ssl3", compiler: "gnu", ssl: "ssl3", debianArch: "armhf", tripleArch: "arm", tripleGnu: "gnueabihf", debianVersion: "bookworm-backports", native: "false" }
|
||||||
#- {os: ubuntu-20.04, usedocker: "true", useqemu: "false", arch: "linux/s390x", implementation: "tdlib"}
|
- { os: ubuntu-22.04, type: "linux_arm64_gnu_ssl1", compiler: "gnu", ssl: "ssl1", debianArch: "arm64", tripleArch: "aarch64", tripleGnu: "gnu", debianVersion: "buster-backports", native: "false" }
|
||||||
- {os: ubuntu-20.04, usedocker: "true", useqemu: "false", arch: "linux/ppc64le", implementation: "tdlight"}
|
- { os: ubuntu-22.04, type: "linux_arm64_gnu_ssl3", compiler: "gnu", ssl: "ssl3", debianArch: "arm64", tripleArch: "aarch64", tripleGnu: "gnu", debianVersion: "bookworm-backports", native: "false" }
|
||||||
#- {os: ubuntu-20.04, usedocker: "true", useqemu: "false", arch: "linux/ppc64le", implementation: "tdlib"}
|
- { os: ubuntu-22.04, type: "linux_arm64_clang_ssl3", compiler: "clang", ssl: "ssl3", debianArch: "arm64", tripleArch: "aarch64", tripleGnu: "gnu", debianVersion: "bookworm-backports", native: "false" }
|
||||||
- {os: windows-2019, usedocker: "false", useqemu: "false", arch: "amd64", implementation: "tdlight", vcpkgCommitId: "6ca56aeb457f033d344a7106cb3f9f1abf8f4e98", triplet: "x64-windows-static"}
|
- { os: windows-2019, type: "windows_amd64", vcpkgCommitId: "fba75d09065fcc76a25dcf386b1d00d33f5175af", triplet: "x64-windows-static" }
|
||||||
#- {os: windows-2019, usedocker: "false", useqemu: "false", arch: "amd64", implementation: "tdlib", vcpkgCommitId: "6ca56aeb457f033d344a7106cb3f9f1abf8f4e98", triplet: "x64-windows-static"}
|
- { os: macos-12, type: "macos_amd64" }
|
||||||
- {os: macos-10.15, usedocker: "false", useqemu: "false", arch: "amd64", implementation: "tdlight"}
|
- { os: macos-14, type: "macos_arm64" }
|
||||||
#- {os: macos-10.15, usedocker: "false", useqemu: "false", arch: "amd64", implementation: "tdlib"}
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout current repo
|
- name: Checkout current repo
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
submodules: "recursive"
|
submodules: "recursive"
|
||||||
|
|
||||||
|
|
||||||
- name: Get version
|
- name: Get version
|
||||||
if: matrix.usedocker == 'true'
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
set -xeo pipefail
|
||||||
# Get latest commit short hash
|
# Get latest commit short hash
|
||||||
HASH_VERSION=$(git rev-parse --short HEAD)
|
HASH_VERSION=$(git rev-parse --short HEAD)
|
||||||
|
|
||||||
@ -53,88 +51,50 @@ jobs:
|
|||||||
|
|
||||||
HASH_VERSION=$(echo "$HASH_VERSION" | awk '{print tolower($0)}')
|
HASH_VERSION=$(echo "$HASH_VERSION" | awk '{print tolower($0)}')
|
||||||
VERSION=$(echo "$VERSION" | awk '{print tolower($0)}')
|
VERSION=$(echo "$VERSION" | awk '{print tolower($0)}')
|
||||||
ARCH=${{ matrix.arch }}
|
TYPE=${{ matrix.type }}
|
||||||
SAFE_ARCH=${ARCH///} # linux/amd64 -> linuxamd64
|
SAFE_TYPE=${TYPE///} # linux_amd64_ -> linux_amd64_
|
||||||
|
COMPILER=${{ matrix.compiler }}
|
||||||
|
SSL=${{ matrix.ssl }}
|
||||||
|
DEBIAN_ARCH=${{ matrix.debianArch }}
|
||||||
|
TRIPLE_ARCH=${{ matrix.tripleArch }}
|
||||||
|
TRIPLE_GNU=${{ matrix.tripleGnu }}
|
||||||
|
NATIVE=${{ matrix.native }}
|
||||||
|
DEBIAN_VERSION=${{ matrix.debianVersion }}
|
||||||
|
|
||||||
|
REVISION=4.0.${{ github.run_number }}
|
||||||
|
GH_MATRIX_OS=${{ matrix.os }}
|
||||||
|
GH_MATRIX_TYPE=${{ matrix.type }}
|
||||||
|
|
||||||
# Store variable for future use
|
# Store variable for future use
|
||||||
echo "HASH_VERSION=$HASH_VERSION" >> $GITHUB_ENV
|
echo "HASH_VERSION=$HASH_VERSION" >> $GITHUB_ENV
|
||||||
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
||||||
echo "SAFE_ARCH=$SAFE_ARCH" >> $GITHUB_ENV
|
echo "TYPE=$TYPE" >> $GITHUB_ENV
|
||||||
|
echo "SAFE_TYPE=$SAFE_TYPE" >> $GITHUB_ENV
|
||||||
|
echo "COMPILER=$COMPILER" >> $GITHUB_ENV
|
||||||
|
echo "SSL=$SSL" >> $GITHUB_ENV
|
||||||
|
echo "DEBIAN_ARCH=$DEBIAN_ARCH" >> $GITHUB_ENV
|
||||||
|
echo "TRIPLE_ARCH=$TRIPLE_ARCH" >> $GITHUB_ENV
|
||||||
|
echo "TRIPLE_GNU=$TRIPLE_GNU" >> $GITHUB_ENV
|
||||||
|
echo "NATIVE=$NATIVE" >> $GITHUB_ENV
|
||||||
|
echo "DEBIAN_VERSION=$DEBIAN_VERSION" >> $GITHUB_ENV
|
||||||
|
echo "REVISION=$REVISION" >> $GITHUB_ENV
|
||||||
|
echo "GH_MATRIX_OS=$GH_MATRIX_OS" >> $GITHUB_ENV
|
||||||
|
echo "GH_MATRIX_TYPE=$GH_MATRIX_TYPE" >> $GITHUB_ENV
|
||||||
|
|
||||||
# Print debug info
|
# Print debug info
|
||||||
echo "hash version: $HASH_VERSION"
|
echo "hash version: $HASH_VERSION"
|
||||||
echo "version: $VERSION"
|
echo "version: $VERSION"
|
||||||
echo "safe arch: $SAFE_ARCH"
|
echo "safe arch: $SAFE_ARCH"
|
||||||
|
echo "ssl: $SSL"
|
||||||
|
echo "debian arch: $DEBIAN_ARCH"
|
||||||
|
echo "triple arch: $TRIPLE_ARCH"
|
||||||
|
echo "triple gnu: $TRIPLE_GNU"
|
||||||
|
|
||||||
|
echo "Variables:"
|
||||||
|
|
||||||
# Save env to file
|
# Save env to file
|
||||||
cat $GITHUB_ENV > github.env
|
cat $GITHUB_ENV > github.env
|
||||||
|
|
||||||
- name: Set up QEMU
|
|
||||||
if: matrix.usedocker == 'true' && matrix.useqemu == 'true'
|
|
||||||
uses: docker/setup-qemu-action@v2
|
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
|
||||||
if: matrix.usedocker == 'true'
|
|
||||||
uses: docker/setup-buildx-action@v2
|
|
||||||
|
|
||||||
- name: Cache Docker layers
|
|
||||||
if: matrix.usedocker == 'true'
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
path: /tmp/.buildx-cache
|
|
||||||
key: ${{ runner.os }}-v3-buildx-cache-${{ env.SAFE_ARCH }}-${{ github.sha }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-v3-buildx-cache-${{ env.SAFE_ARCH }}-
|
|
||||||
|
|
||||||
- name: Cache Maven
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
path: ~/.m2/repository
|
|
||||||
key: ${{ runner.os }}-v3-maven-${{ env.SAFE_ARCH }}-${{ hashFiles('**/pom.xml') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-v3-maven-${{ env.SAFE_ARCH }}-
|
|
||||||
|
|
||||||
- name: Cache packages cache
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
path: ~/tdlight-java-natives/tdlight-java-natives/.cache
|
|
||||||
key: ${{ runner.os }}-v3-packages-${{ env.SAFE_ARCH }}-${{ github.sha }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-v3-packages-${{ env.SAFE_ARCH }}-
|
|
||||||
|
|
||||||
- name: Cache ccache
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
path: ~/.ccache
|
|
||||||
key: ${{ runner.os }}-v2-ccache-${{ env.SAFE_ARCH }}-${{ github.sha }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-v2-ccache-${{ env.SAFE_ARCH }}-
|
|
||||||
|
|
||||||
- name: Build image
|
|
||||||
if: matrix.usedocker == 'true'
|
|
||||||
uses: docker/build-push-action@v3
|
|
||||||
with:
|
|
||||||
context: .
|
|
||||||
file: ./Dockerfile
|
|
||||||
cache-from: type=local,src=/tmp/.buildx-cache
|
|
||||||
cache-to: type=local,mode=max,dest=/tmp/.buildx-cache
|
|
||||||
platforms: linux/amd64
|
|
||||||
push: false
|
|
||||||
load: true
|
|
||||||
tags: |
|
|
||||||
tdlight-java-natives:${{ env.HASH_VERSION }}-${{ env.SAFE_ARCH }}
|
|
||||||
build-args: |
|
|
||||||
REVISION=${{ github.run_number }}
|
|
||||||
GH_MATRIX_OS=${{ matrix.os }}
|
|
||||||
GH_MATRIX_ARCH=${{ matrix.arch }}
|
|
||||||
IMPLEMENTATION_NAME=${{ matrix.implementation }}
|
|
||||||
|
|
||||||
- name: Extract jni from docker image
|
|
||||||
if: matrix.usedocker == 'true'
|
|
||||||
run: |
|
|
||||||
mkdir generated
|
|
||||||
docker cp $(docker create tdlight-java-natives:${{ env.HASH_VERSION }}-${{ env.SAFE_ARCH }}):/usr/src/tdlight-java-natives/generated/. ./generated/.
|
|
||||||
|
|
||||||
- name: Setup Java (Snapshot)
|
- name: Setup Java (Snapshot)
|
||||||
if: github.ref == 'refs/heads/develop'
|
if: github.ref == 'refs/heads/develop'
|
||||||
uses: actions/setup-java@v3
|
uses: actions/setup-java@v3
|
||||||
@ -144,6 +104,7 @@ jobs:
|
|||||||
server-id: mchv-snapshot-distribution
|
server-id: mchv-snapshot-distribution
|
||||||
server-username: MAVEN_USERNAME
|
server-username: MAVEN_USERNAME
|
||||||
server-password: MAVEN_PASSWORD
|
server-password: MAVEN_PASSWORD
|
||||||
|
cache: 'maven'
|
||||||
- name: Setup Java (Release)
|
- name: Setup Java (Release)
|
||||||
if: github.ref != 'refs/heads/develop'
|
if: github.ref != 'refs/heads/develop'
|
||||||
uses: actions/setup-java@v3
|
uses: actions/setup-java@v3
|
||||||
@ -153,59 +114,55 @@ jobs:
|
|||||||
server-id: mchv-release-distribution
|
server-id: mchv-release-distribution
|
||||||
server-username: MAVEN_USERNAME
|
server-username: MAVEN_USERNAME
|
||||||
server-password: MAVEN_PASSWORD
|
server-password: MAVEN_PASSWORD
|
||||||
- name: Setup variables
|
cache: 'maven'
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
# ====== Variables
|
|
||||||
export REVISION=${{ github.run_number }}
|
|
||||||
export GH_MATRIX_OS=${{ matrix.os }}
|
|
||||||
export GH_MATRIX_ARCH=${{ matrix.arch }}
|
|
||||||
export IMPLEMENTATION_NAME=${{ matrix.implementation }}
|
|
||||||
source ./scripts/continuous-integration/github-workflows/setup-variables.sh
|
|
||||||
|
|
||||||
echo "Variables:"
|
|
||||||
echo "REVISION=$REVISION" >> $GITHUB_ENV
|
|
||||||
echo "BUILD_TYPE=$BUILD_TYPE" >> $GITHUB_ENV
|
|
||||||
echo "IMPLEMENTATION_NAME=$IMPLEMENTATION_NAME" >> $GITHUB_ENV
|
|
||||||
echo "TD_SRC_DIR=$TD_SRC_DIR" >> $GITHUB_ENV
|
|
||||||
echo "TD_BIN_DIR=$TD_BIN_DIR" >> $GITHUB_ENV
|
|
||||||
echo "TDNATIVES_BIN_DIR=$TDNATIVES_BIN_DIR" >> $GITHUB_ENV
|
|
||||||
echo "TDNATIVES_CPP_SRC_DIR=$TDNATIVES_CPP_SRC_DIR" >> $GITHUB_ENV
|
|
||||||
echo "TDNATIVES_DOCS_BIN_DIR=$TDNATIVES_DOCS_BIN_DIR" >> $GITHUB_ENV
|
|
||||||
echo "TD_BUILD_DIR=$TD_BUILD_DIR" >> $GITHUB_ENV
|
|
||||||
echo "TDNATIVES_CPP_BUILD_DIR=$TDNATIVES_CPP_BUILD_DIR" >> $GITHUB_ENV
|
|
||||||
echo "JAVA_SRC_DIR=$JAVA_SRC_DIR" >> $GITHUB_ENV
|
|
||||||
echo "TDLIB_SERIALIZER_DIR=$TDLIB_SERIALIZER_DIR" >> $GITHUB_ENV
|
|
||||||
if [[ ! -z "$PATH" && "$OPERATING_SYSTEM_NAME" != "windows" ]]; then
|
|
||||||
echo "PATH=$PATH" >> $GITHUB_ENV
|
|
||||||
fi
|
|
||||||
echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
|
|
||||||
echo "JAVA_INCLUDE_PATH=$JAVA_INCLUDE_PATH" >> $GITHUB_ENV
|
|
||||||
echo "CMAKE_EXTRA_ARGUMENTS=$CMAKE_EXTRA_ARGUMENTS" >> $GITHUB_ENV
|
|
||||||
echo "VCPKG_DIR=$VCPKG_DIR" >> $GITHUB_ENV
|
|
||||||
echo "MAVEN_OPTS=$MAVEN_OPTS" >> $GITHUB_ENV
|
|
||||||
echo "GH_CPU_ARCH=$GH_CPU_ARCH" >> $GITHUB_ENV
|
|
||||||
echo "CPU_ARCH_JAVA=$CPU_ARCH_JAVA" >> $GITHUB_ENV
|
|
||||||
echo "CPU_ARCHITECTURE_NAME=$CPU_ARCHITECTURE_NAME" >> $GITHUB_ENV
|
|
||||||
echo "CPU_CORES_NUM=$CPU_CORES_NUM" >> $GITHUB_ENV
|
|
||||||
echo "CPU_CORES=$CPU_CORES" >> $GITHUB_ENV
|
|
||||||
echo "OPERATING_SYSTEM_NAME=$OPERATING_SYSTEM_NAME" >> $GITHUB_ENV
|
|
||||||
echo "OPERATING_SYSTEM_NAME_SHORT=$OPERATING_SYSTEM_NAME_SHORT" >> $GITHUB_ENV
|
|
||||||
echo "SRC_TDJNI_LIBNAME=$SRC_TDJNI_LIBNAME" >> $GITHUB_ENV
|
|
||||||
echo "DEST_TDJNI_LIBNAME=$DEST_TDJNI_LIBNAME" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
if: matrix.usedocker == 'false'
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo "REVISION: $REVISION"
|
|
||||||
|
|
||||||
source ./scripts/continuous-integration/github-workflows/install-dependencies.sh
|
|
||||||
- name: Setup PHP with Readline extension
|
- name: Setup PHP with Readline extension
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: '8.0'
|
php-version: '8.0'
|
||||||
extensions: readline
|
extensions: readline
|
||||||
|
# - name: Install ubuntu 20.04 dependencies
|
||||||
|
# if: matrix.os == 'ubuntu-20.04'
|
||||||
|
# shell: bash
|
||||||
|
# run: |
|
||||||
|
# export DEBIAN_FRONTEND=noninteractive
|
||||||
|
# sudo apt-get --assume-yes update
|
||||||
|
# sudo apt-get --assume-yes install make git zlib1g-dev libssl-dev gperf php-cli cmake default-jdk clang-12 lld-12 libc++-12-dev libc++abi-12-dev libgcc-9-dev libunwind-dev libclang-common-12-dev maven
|
||||||
|
- name: Install ubuntu 20.04 dependencies (cached)
|
||||||
|
if: matrix.os == 'ubuntu-20.04'
|
||||||
|
uses: awalsh128/cache-apt-pkgs-action@latest
|
||||||
|
with:
|
||||||
|
packages: make git zlib1g-dev libssl-dev gperf php-cli cmake default-jdk clang-12 lld-12 libc++-12-dev libc++abi-12-dev libgcc-9-dev libunwind-dev libclang-common-12-dev maven
|
||||||
|
version: 1.0
|
||||||
|
# - name: Install ubuntu 22.04 dependencies
|
||||||
|
# if: matrix.os == 'ubuntu-22.04'
|
||||||
|
# shell: bash
|
||||||
|
# run: |
|
||||||
|
# export DEBIAN_FRONTEND=noninteractive
|
||||||
|
# sudo apt-get --assume-yes update
|
||||||
|
# sudo apt-get --assume-yes install make git zlib1g-dev libssl-dev gperf php-cli cmake default-jdk clang-14 lld-14 libc++-14-dev libc++abi-14-dev libgcc-11-dev libunwind-14-dev libclang-common-14-dev maven
|
||||||
|
- name: Install ubuntu 22.04 dependencies (cached)
|
||||||
|
if: matrix.os == 'ubuntu-22.04'
|
||||||
|
uses: awalsh128/cache-apt-pkgs-action@latest
|
||||||
|
with:
|
||||||
|
packages: make git zlib1g-dev libssl-dev gperf php-cli cmake default-jdk clang-14 lld-14 libc++-14-dev libc++abi-14-dev libgcc-11-dev libunwind-14-dev libclang-common-14-dev maven
|
||||||
|
version: 1.0
|
||||||
|
- name: Install custom dependencies
|
||||||
|
if: startsWith(matrix.os, 'macos-') || startsWith(matrix.os, 'windows-')
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
set -xeo pipefail
|
||||||
|
echo "REVISION: $REVISION"
|
||||||
|
|
||||||
|
if [[ -f "./.github/workflows/scripts/install_deps_${SAFE_TYPE}.sh" ]]; then
|
||||||
|
if [[ "$GH_MATRIX_OS" == *"windows"* || "$GH_MATRIX_OS" == *"macos"* ]]; then
|
||||||
|
./.github/workflows/scripts/install_deps_${SAFE_TYPE}.sh
|
||||||
|
else
|
||||||
|
sudo ./.github/workflows/scripts/install_deps_${SAFE_TYPE}.sh
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
- name: Run sccache-cache
|
||||||
|
uses: mozilla-actions/sccache-action@v0.0.3
|
||||||
- name: Install MSVC
|
- name: Install MSVC
|
||||||
if: matrix.os == 'windows-2019'
|
if: matrix.os == 'windows-2019'
|
||||||
uses: ilammy/msvc-dev-cmd@v1
|
uses: ilammy/msvc-dev-cmd@v1
|
||||||
@ -216,7 +173,7 @@ jobs:
|
|||||||
if: matrix.os == 'windows-2019'
|
if: matrix.os == 'windows-2019'
|
||||||
uses: lukka/get-cmake@latest
|
uses: lukka/get-cmake@latest
|
||||||
- name: Set up Maven
|
- name: Set up Maven
|
||||||
uses: stCarolas/setup-maven@v4.2
|
uses: stCarolas/setup-maven@v4.5
|
||||||
with:
|
with:
|
||||||
maven-version: 3.8.2
|
maven-version: 3.8.2
|
||||||
- name: Setup NASM
|
- name: Setup NASM
|
||||||
@ -240,32 +197,90 @@ jobs:
|
|||||||
- name: Install vcpkg deps
|
- name: Install vcpkg deps
|
||||||
if: matrix.os == 'windows-2019'
|
if: matrix.os == 'windows-2019'
|
||||||
run: |
|
run: |
|
||||||
$VCPKG_DIR/vcpkg install gperf openssl:x64-windows-static zlib:x64-windows-static
|
set -xeo pipefail
|
||||||
|
./vcpkg/vcpkg install gperf openssl:x64-windows-static zlib:x64-windows-static
|
||||||
shell: bash
|
shell: bash
|
||||||
- name: Build
|
- name: Build
|
||||||
if: matrix.usedocker == 'false'
|
if: startsWith(matrix.os, 'macos-') || startsWith(matrix.os, 'windows-')
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
set -xeo pipefail
|
||||||
echo "REVISION: $REVISION"
|
echo "REVISION: $REVISION"
|
||||||
|
|
||||||
source ./scripts/continuous-integration/github-workflows/build-natives.sh
|
source ./.github/workflows/scripts/build_${SAFE_TYPE}.sh
|
||||||
- id: getfilename
|
env:
|
||||||
|
SCCACHE_GHA_ENABLED: "on"
|
||||||
|
- name: Set up Docker buildx
|
||||||
|
uses: docker/setup-buildx-action@v2
|
||||||
|
if: matrix.os == 'ubuntu-22.04'
|
||||||
|
- name: Build
|
||||||
|
uses: docker/build-push-action@v4
|
||||||
|
if: matrix.os == 'ubuntu-22.04'
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
push: false
|
||||||
|
file: tdlight.arch.${{env.SSL}}.${{env.COMPILER}}.dockerfile
|
||||||
|
tags: tdlight.${{env.DEBIAN_ARCH}}.${{env.SSL}}.${{env.COMPILER}}:latest
|
||||||
|
build-args: |
|
||||||
|
SCCACHE_GHA_ENABLED=on
|
||||||
|
ACTIONS_CACHE_URL=${{env.ACTIONS_CACHE_URL}}
|
||||||
|
ACTIONS_RUNTIME_TOKEN=${{env.ACTIONS_RUNTIME_TOKEN}}
|
||||||
|
ARCH_DEBIAN=${{env.DEBIAN_ARCH}}
|
||||||
|
ARCH_TRIPLE=${{env.TRIPLE_ARCH}}
|
||||||
|
TRIPLE_GNU=${{env.TRIPLE_GNU}}
|
||||||
|
NATIVE=${{env.NATIVE}}
|
||||||
|
DEBIAN_VERSION=${{env.DEBIAN_VERSION}}
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
|
outputs: type=local,dest=./docker-out
|
||||||
|
- name: Copy built files from docker
|
||||||
|
if: matrix.os == 'ubuntu-22.04'
|
||||||
shell: bash
|
shell: bash
|
||||||
run: echo "::set-output name=file::$(cd generated/target; ls tdli*-natives-*.jar)"
|
run: |
|
||||||
- id: getfilepath
|
set -xeo pipefail
|
||||||
shell: bash
|
echo "REVISION: $REVISION"
|
||||||
run: echo "::set-output name=file::$(ls generated/target/tdli*-natives-*.jar)"
|
|
||||||
|
rm -rf natives
|
||||||
|
mv ./docker-out/out/natives natives
|
||||||
|
mv ./docker-out/out/libtdjni.so "libtdjni.${REVISION}-${TYPE}.so"
|
||||||
|
mv ./docker-out/out/tdlight-natives.jar "natives/target-${TYPE}/tdlight-natives-${REVISION}-${TYPE}.jar"
|
||||||
- uses: actions/upload-artifact@v3
|
- uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: ${{ steps.getfilename.outputs.file }}
|
name: tdlight-natives-${{env.REVISION}}-${{env.TYPE}}.jar
|
||||||
path: ${{ steps.getfilepath.outputs.file }}
|
path: natives/target-${{env.TYPE}}/tdlight-natives-${{env.REVISION}}-${{env.TYPE}}.jar
|
||||||
- name: Deploy to Maven (Snapshot)
|
- name: Deploy to Maven (Snapshot)
|
||||||
if: github.ref == 'refs/heads/develop'
|
if: github.ref == 'refs/heads/develop'
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
set -xeo pipefail
|
||||||
echo "REVISION: $REVISION"
|
echo "REVISION: $REVISION"
|
||||||
|
echo "TYPE: $TYPE"
|
||||||
|
|
||||||
source ./scripts/continuous-integration/github-workflows/deploy-snapshot.sh
|
mvn -B -f natives/pom.xml -Drevision="$REVISION" -Dnative.type.classifier="$TYPE" clean package
|
||||||
|
mvn -B org.apache.maven.plugins:maven-deploy-plugin:3.1.1:deploy-file -Durl=https://mvn.mchv.eu/repository/mchv-snapshot \
|
||||||
|
-DrepositoryId=mchv-snapshot-distribution \
|
||||||
|
-Dfile=natives/target-$TYPE/tdlight-natives-$REVISION-$TYPE.jar \
|
||||||
|
-Dpackaging=pom \
|
||||||
|
-DgroupId=it.tdlight \
|
||||||
|
-DartifactId=tdlight-natives \
|
||||||
|
-Dversion=$REVISION \
|
||||||
|
-Drevision=$REVISION \
|
||||||
|
-Dclassifier=$TYPE \
|
||||||
|
-Dnative.type.classifier="$TYPE"
|
||||||
|
if [[ "$TYPE" == "linux_amd64_gnu_ssl1" ]]; then
|
||||||
|
mvn -B org.apache.maven.plugins:maven-deploy-plugin:3.1.1:deploy-file -Durl=https://mvn.mchv.eu/repository/mchv-snapshot \
|
||||||
|
-DrepositoryId=mchv-snapshot-distribution \
|
||||||
|
-Dfile=natives/.ci-friendly-pom.xml \
|
||||||
|
-Dpackaging=pom \
|
||||||
|
-DgroupId=it.tdlight \
|
||||||
|
-DartifactId=tdlight-natives \
|
||||||
|
-Dversion=$REVISION \
|
||||||
|
-Drevision=$REVISION \
|
||||||
|
-Dnative.type.classifier="$TYPE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Done."
|
||||||
|
exit 0
|
||||||
env:
|
env:
|
||||||
MAVEN_USERNAME: ${{ secrets.MCHV_USERNAME }}
|
MAVEN_USERNAME: ${{ secrets.MCHV_USERNAME }}
|
||||||
MAVEN_PASSWORD: ${{ secrets.MCHV_TOKEN }}
|
MAVEN_PASSWORD: ${{ secrets.MCHV_TOKEN }}
|
||||||
@ -273,9 +288,35 @@ jobs:
|
|||||||
if: github.ref == 'refs/heads/master'
|
if: github.ref == 'refs/heads/master'
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
set -xeo pipefail
|
||||||
echo "REVISION: $REVISION"
|
echo "REVISION: $REVISION"
|
||||||
|
echo "TYPE: $TYPE"
|
||||||
|
|
||||||
source ./scripts/continuous-integration/github-workflows/deploy-release.sh
|
mvn -B -f natives/pom.xml -Drevision="$REVISION" -Dnative.type.classifier="$TYPE" clean package
|
||||||
|
mvn -B org.apache.maven.plugins:maven-deploy-plugin:3.1.1:deploy-file -Durl=https://mvn.mchv.eu/repository/mchv \
|
||||||
|
-DrepositoryId=mchv-release-distribution \
|
||||||
|
-Dfile=natives/target-$TYPE/tdlight-natives-$REVISION-$TYPE.jar \
|
||||||
|
-Dpackaging=pom \
|
||||||
|
-DgroupId=it.tdlight \
|
||||||
|
-DartifactId=tdlight-natives \
|
||||||
|
-Dversion=$REVISION \
|
||||||
|
-Drevision=$REVISION \
|
||||||
|
-Dclassifier=$TYPE \
|
||||||
|
-Dnative.type.classifier="$TYPE"
|
||||||
|
if [[ "$TYPE" == "linux_amd64_gnu_ssl1" ]]; then
|
||||||
|
mvn -B org.apache.maven.plugins:maven-deploy-plugin:3.1.1:deploy-file -Durl=https://mvn.mchv.eu/repository/mchv \
|
||||||
|
-DrepositoryId=mchv-release-distribution \
|
||||||
|
-Dfile=natives/.ci-friendly-pom.xml \
|
||||||
|
-Dpackaging=pom \
|
||||||
|
-DgroupId=it.tdlight \
|
||||||
|
-DartifactId=tdlight-natives \
|
||||||
|
-Dversion=$REVISION \
|
||||||
|
-Drevision=$REVISION \
|
||||||
|
-Dnative.type.classifier="$TYPE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Done."
|
||||||
|
exit 0
|
||||||
env:
|
env:
|
||||||
MAVEN_USERNAME: ${{ secrets.MCHV_USERNAME }}
|
MAVEN_USERNAME: ${{ secrets.MCHV_USERNAME }}
|
||||||
MAVEN_PASSWORD: ${{ secrets.MCHV_TOKEN }}
|
MAVEN_PASSWORD: ${{ secrets.MCHV_TOKEN }}
|
||||||
|
35
.github/workflows/scripts/build_api.sh
vendored
Executable file
35
.github/workflows/scripts/build_api.sh
vendored
Executable file
@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/bash -ex
|
||||||
|
REVISION="${REVISION:-1.0.0.0-SNAPSHOT}"
|
||||||
|
|
||||||
|
#export CC="ccache /usr/bin/clang"
|
||||||
|
#export CXX="ccache /usr/bin/clang++"
|
||||||
|
|
||||||
|
# Create missing dirs
|
||||||
|
rm -rf implementations/tdlight/build api/target-legacy api/target api/.ci-friendly-pom.xml implementations/tdlight/td/generate/auto
|
||||||
|
mkdir -p implementations/tdlight/build/java/it/tdlight/jni api/src/main/java-legacy/it/tdlight/jni api/src/main/java-sealed/it/tdlight/jni
|
||||||
|
|
||||||
|
# Build tdlib tools
|
||||||
|
cd implementations/tdlight/build
|
||||||
|
cmake \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_C_FLAGS_RELEASE="" \
|
||||||
|
-DCMAKE_CXX_FLAGS_RELEASE="-O0 -DNDEBUG" \
|
||||||
|
-DTD_ENABLE_LTO=OFF \
|
||||||
|
-DTD_ENABLE_JNI=ON \
|
||||||
|
..
|
||||||
|
cmake --build . --target prepare_cross_compiling --config Release --parallel "$(nproc)"
|
||||||
|
cmake --build . --target td_generate_java_api --config Release --parallel "$(nproc)"
|
||||||
|
cd ../../../
|
||||||
|
|
||||||
|
# Generate TdApi.java
|
||||||
|
TEMP_TDAPI_FILE_PATH="./implementations/tdlight/build/java/it/tdlight/jni/TdApi.java"
|
||||||
|
./implementations/tdlight/build/td/generate/td_generate_java_api TdApi "./implementations/tdlight/td/generate/auto/tlo/td_api.tlo" "./implementations/tdlight/build/java" "it/tdlight/jni"
|
||||||
|
php ./implementations/tdlight/td/generate/JavadocTlDocumentationGenerator.php "./implementations/tdlight/td/generate/scheme/td_api.tl" "$TEMP_TDAPI_FILE_PATH"
|
||||||
|
java ./tdlib-serializer/transform.java --source "$TEMP_TDAPI_FILE_PATH" --output "./api/src/main/java-legacy/it/tdlight/jni/TdApi.java" --java17 false --overwrite true --headers ./tdlib-serializer/headers.txt
|
||||||
|
java ./tdlib-serializer/transform.java --source "$TEMP_TDAPI_FILE_PATH" --output "./api/src/main/java-sealed/it/tdlight/jni/TdApi.java" --java17 true --overwrite true --headers ./tdlib-serializer/headers.txt
|
||||||
|
|
||||||
|
# Generate java package
|
||||||
|
echo "Building legacy package"
|
||||||
|
mvn -f api/pom.xml package -Dlegacy=true -Drevision="$REVISION"
|
||||||
|
echo "Building standard package"
|
||||||
|
mvn -f api/pom.xml package -Drevision="$REVISION"
|
84
.github/workflows/scripts/build_macos_amd64.sh
vendored
Executable file
84
.github/workflows/scripts/build_macos_amd64.sh
vendored
Executable file
@ -0,0 +1,84 @@
|
|||||||
|
#!/bin/bash -ex
|
||||||
|
# MacOS 12
|
||||||
|
REVISION="${REVISION:-1.0.0.0-SNAPSHOT}"
|
||||||
|
|
||||||
|
# Create missing dirs
|
||||||
|
rm -rf implementations/tdlight/td_tools_build implementations/tdlight/build api/target-legacy api/target api/.ci-friendly-pom.xml implementations/tdlight/td/generate/auto natives/src/main/java/it/tdlight/jni natives/build natives/tdjni_bin natives/tdjni_docs
|
||||||
|
mkdir -p implementations/tdlight/build implementations/tdlight/build/td_bin/bin implementations/tdlight/td_tools_build/java/it/tdlight/jni api/src/main/java-legacy/it/tdlight/jni api/src/main/java-sealed/it/tdlight/jni natives/src/main/java/it/tdlight/jni natives/build natives/tdjni_bin natives/tdjni_docs
|
||||||
|
|
||||||
|
# ccache
|
||||||
|
CCACHE=$(which sccache || true)
|
||||||
|
if [[ -x "$CCACHE" ]]; then
|
||||||
|
echo "found sccache: $CCACHE"
|
||||||
|
else
|
||||||
|
echo "sccache not found"
|
||||||
|
CCACHE=$(which ccache)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Build tdlib tools
|
||||||
|
cd implementations/tdlight/td_tools_build
|
||||||
|
cmake \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_C_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DOPENSSL_USE_STATIC_LIBS=True \
|
||||||
|
-DOPENSSL_ROOT_DIR=/usr/local/opt/openssl/ \
|
||||||
|
-DCMAKE_C_FLAGS_RELEASE="" \
|
||||||
|
-DCMAKE_CXX_FLAGS_RELEASE="-O0 -DNDEBUG" \
|
||||||
|
-DTD_ENABLE_LTO=OFF \
|
||||||
|
-DTD_ENABLE_JNI=ON \
|
||||||
|
..
|
||||||
|
cmake --build . --target prepare_cross_compiling --parallel "$(nproc)"
|
||||||
|
cmake --build . --target td_generate_java_api --parallel "$(nproc)"
|
||||||
|
cd ../../../
|
||||||
|
|
||||||
|
# Generate TdApi.java
|
||||||
|
./implementations/tdlight/td_tools_build/td/generate/td_generate_java_api TdApi "./implementations/tdlight/td/generate/auto/tlo/td_api.tlo" "./natives/src/main/java" "it/tdlight/jni"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Optimization flags
|
||||||
|
export CMAKE_C_FLAGS="${CMAKE_C_FLAGS}"
|
||||||
|
export CMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti"
|
||||||
|
export CMAKE_SHARED_LINKER_FLAGS="${CMAKE_SHARED_LINKER_FLAGS} -Wl,--gc-sections -Wl,--exclude-libs,ALL"
|
||||||
|
export CMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -flto=thin -O3"
|
||||||
|
|
||||||
|
# Build tdlib
|
||||||
|
cd implementations/tdlight/build
|
||||||
|
INSTALL_PREFIX="$(greadlink -e ./td_bin/)"
|
||||||
|
INSTALL_BINDIR="$(greadlink -e ./td_bin/bin)"
|
||||||
|
cmake \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_C_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DOPENSSL_USE_STATIC_LIBS=True \
|
||||||
|
-DOPENSSL_ROOT_DIR=/usr/local/opt/openssl/ \
|
||||||
|
-DTD_SKIP_BENCHMARK=ON -DTD_SKIP_TEST=ON -DTD_SKIP_TG_CLI=ON \
|
||||||
|
-DTD_ENABLE_LTO=ON \
|
||||||
|
-DTD_ENABLE_JNI=ON \
|
||||||
|
-DCMAKE_INSTALL_PREFIX:PATH="$INSTALL_PREFIX" \
|
||||||
|
-DCMAKE_INSTALL_BINDIR:PATH="$INSTALL_BINDIR" \
|
||||||
|
..
|
||||||
|
cmake --build . --target install --config Release --parallel "$(nproc)"
|
||||||
|
cd ../../../
|
||||||
|
|
||||||
|
cd natives/build
|
||||||
|
cmake \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_C_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DOPENSSL_USE_STATIC_LIBS=True \
|
||||||
|
-DTD_GENERATED_BINARIES_DIR="$(greadlink -e ../../implementations/tdlight/td_tools_build/td/generate)" \
|
||||||
|
-DTD_SRC_DIR="$(greadlink -e ../../implementations/tdlight)" \
|
||||||
|
-DTD_ENABLE_LTO=ON \
|
||||||
|
-DTDNATIVES_BIN_DIR="$(greadlink -e ../tdjni_bin/)" \
|
||||||
|
-DTDNATIVES_DOCS_BIN_DIR="$(greadlink -e ../tdjni_docs/)" \
|
||||||
|
-DTd_DIR:PATH="$(greadlink -e ../../implementations/tdlight/build/td_bin/lib/cmake/Td)" \
|
||||||
|
-DJAVA_SRC_DIR="$(greadlink -e ../src/main/java)" \
|
||||||
|
-DTDNATIVES_CPP_SRC_DIR="$(greadlink -e ../src/main/cpp)" \
|
||||||
|
../src/main/cpp
|
||||||
|
cmake --build . --target install --config Release --parallel "$(nproc)"
|
||||||
|
cd ..
|
||||||
|
mkdir -p src/main/resources/META-INF/tdlightjni/
|
||||||
|
mv tdjni_bin/libtdjni.dylib src/main/resources/META-INF/tdlightjni/libtdjni.macos_amd64.dylib
|
||||||
|
mvn -B -f pom.xml -Drevision="$REVISION" -Dnative.type.classifier=macos_amd64 package
|
84
.github/workflows/scripts/build_macos_arm64.sh
vendored
Executable file
84
.github/workflows/scripts/build_macos_arm64.sh
vendored
Executable file
@ -0,0 +1,84 @@
|
|||||||
|
#!/bin/bash -ex
|
||||||
|
# MacOS 12
|
||||||
|
REVISION="${REVISION:-1.0.0.0-SNAPSHOT}"
|
||||||
|
|
||||||
|
# Create missing dirs
|
||||||
|
rm -rf implementations/tdlight/td_tools_build implementations/tdlight/build api/target-legacy api/target api/.ci-friendly-pom.xml implementations/tdlight/td/generate/auto natives/src/main/java/it/tdlight/jni natives/build natives/tdjni_bin natives/tdjni_docs
|
||||||
|
mkdir -p implementations/tdlight/build implementations/tdlight/build/td_bin/bin implementations/tdlight/td_tools_build/java/it/tdlight/jni api/src/main/java-legacy/it/tdlight/jni api/src/main/java-sealed/it/tdlight/jni natives/src/main/java/it/tdlight/jni natives/build natives/tdjni_bin natives/tdjni_docs
|
||||||
|
|
||||||
|
# ccache
|
||||||
|
CCACHE=$(which sccache || true)
|
||||||
|
if [[ -x "$CCACHE" ]]; then
|
||||||
|
echo "found sccache: $CCACHE"
|
||||||
|
else
|
||||||
|
echo "sccache not found"
|
||||||
|
CCACHE=$(which ccache)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Build tdlib tools
|
||||||
|
cd implementations/tdlight/td_tools_build
|
||||||
|
cmake \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_C_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DOPENSSL_USE_STATIC_LIBS=True \
|
||||||
|
-DOPENSSL_ROOT_DIR=/opt/homebrew/opt/openssl/ \
|
||||||
|
-DCMAKE_C_FLAGS_RELEASE="" \
|
||||||
|
-DCMAKE_CXX_FLAGS_RELEASE="-O0 -DNDEBUG" \
|
||||||
|
-DTD_ENABLE_LTO=OFF \
|
||||||
|
-DTD_ENABLE_JNI=ON \
|
||||||
|
..
|
||||||
|
cmake --build . --target prepare_cross_compiling --parallel "$(nproc)"
|
||||||
|
cmake --build . --target td_generate_java_api --parallel "$(nproc)"
|
||||||
|
cd ../../../
|
||||||
|
|
||||||
|
# Generate TdApi.java
|
||||||
|
./implementations/tdlight/td_tools_build/td/generate/td_generate_java_api TdApi "./implementations/tdlight/td/generate/auto/tlo/td_api.tlo" "./natives/src/main/java" "it/tdlight/jni"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Optimization flags
|
||||||
|
export CMAKE_C_FLAGS="${CMAKE_C_FLAGS}"
|
||||||
|
export CMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti"
|
||||||
|
export CMAKE_SHARED_LINKER_FLAGS="${CMAKE_SHARED_LINKER_FLAGS} -Wl,--gc-sections -Wl,--exclude-libs,ALL"
|
||||||
|
export CMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -flto=thin -O3"
|
||||||
|
|
||||||
|
# Build tdlib
|
||||||
|
cd implementations/tdlight/build
|
||||||
|
INSTALL_PREFIX="$(greadlink -e ./td_bin/)"
|
||||||
|
INSTALL_BINDIR="$(greadlink -e ./td_bin/bin)"
|
||||||
|
cmake \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_C_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DOPENSSL_USE_STATIC_LIBS=True \
|
||||||
|
-DOPENSSL_ROOT_DIR=/opt/homebrew/opt/openssl/ \
|
||||||
|
-DTD_SKIP_BENCHMARK=ON -DTD_SKIP_TEST=ON -DTD_SKIP_TG_CLI=ON \
|
||||||
|
-DTD_ENABLE_LTO=ON \
|
||||||
|
-DTD_ENABLE_JNI=ON \
|
||||||
|
-DCMAKE_INSTALL_PREFIX:PATH="$INSTALL_PREFIX" \
|
||||||
|
-DCMAKE_INSTALL_BINDIR:PATH="$INSTALL_BINDIR" \
|
||||||
|
..
|
||||||
|
cmake --build . --target install --config Release --parallel "$(nproc)"
|
||||||
|
cd ../../../
|
||||||
|
|
||||||
|
cd natives/build
|
||||||
|
cmake \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_C_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DOPENSSL_USE_STATIC_LIBS=True \
|
||||||
|
-DTD_GENERATED_BINARIES_DIR="$(greadlink -e ../../implementations/tdlight/td_tools_build/td/generate)" \
|
||||||
|
-DTD_SRC_DIR="$(greadlink -e ../../implementations/tdlight)" \
|
||||||
|
-DTD_ENABLE_LTO=ON \
|
||||||
|
-DTDNATIVES_BIN_DIR="$(greadlink -e ../tdjni_bin/)" \
|
||||||
|
-DTDNATIVES_DOCS_BIN_DIR="$(greadlink -e ../tdjni_docs/)" \
|
||||||
|
-DTd_DIR:PATH="$(greadlink -e ../../implementations/tdlight/build/td_bin/lib/cmake/Td)" \
|
||||||
|
-DJAVA_SRC_DIR="$(greadlink -e ../src/main/java)" \
|
||||||
|
-DTDNATIVES_CPP_SRC_DIR="$(greadlink -e ../src/main/cpp)" \
|
||||||
|
../src/main/cpp
|
||||||
|
cmake --build . --target install --config Release --parallel "$(nproc)"
|
||||||
|
cd ..
|
||||||
|
mkdir -p src/main/resources/META-INF/tdlightjni/
|
||||||
|
mv tdjni_bin/libtdjni.dylib src/main/resources/META-INF/tdlightjni/libtdjni.macos_arm64.dylib
|
||||||
|
mvn -B -f pom.xml -Drevision="$REVISION" -Dnative.type.classifier=macos_arm64 package
|
97
.github/workflows/scripts/build_windows_amd64.sh
vendored
Executable file
97
.github/workflows/scripts/build_windows_amd64.sh
vendored
Executable file
@ -0,0 +1,97 @@
|
|||||||
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
# Change working directory
|
||||||
|
DEPLOY_DIR="$(pwd)"
|
||||||
|
cp -r . /c/tmp_tdlight
|
||||||
|
cd /c/tmp_tdlight
|
||||||
|
|
||||||
|
# Windows 2019
|
||||||
|
REVISION="${REVISION:-1.0.0.0-SNAPSHOT}"
|
||||||
|
|
||||||
|
# Create missing dirs
|
||||||
|
rm -rf implementations/tdlight/td_tools_build implementations/tdlight/build api/target-legacy api/target api/.ci-friendly-pom.xml implementations/tdlight/td/generate/auto natives/src/main/java/it/tdlight/jni natives/build natives/tdjni_bin natives/tdjni_docs
|
||||||
|
mkdir -p implementations/tdlight/build implementations/tdlight/build/td_bin/bin implementations/tdlight/td_tools_build/java/it/tdlight/jni api/src/main/java-legacy/it/tdlight/jni api/src/main/java-sealed/it/tdlight/jni natives/src/main/java/it/tdlight/jni natives/build natives/tdjni_bin natives/tdjni_docs
|
||||||
|
|
||||||
|
# ccache
|
||||||
|
CCACHE=$(which sccache || true)
|
||||||
|
if [[ -x "$CCACHE" ]]; then
|
||||||
|
CCACHE="sccache"
|
||||||
|
echo "found sccache: $CCACHE"
|
||||||
|
else
|
||||||
|
echo "sccache not found"
|
||||||
|
CCACHE="ccache"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Fix path
|
||||||
|
export PATH="$PATH:/c/Python3:$PATH:/c/tools/php74:/c/PHP:/c/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.27.29110/bin/Hostx64/x64:/c/Program Files/OpenJDK/openjdk-11.0.8_10/bin:/c/Program Files/CMake/bin:/c/ProgramData/chocolatey/bin:/c/Program Files/apache-maven-3.6.3/bin:/c/ProgramData/chocolatey/lib/maven/apache-maven-3.6.3/bin:/c/ProgramData/chocolatey/lib/base64/tools:/c/Program Files/NASM"
|
||||||
|
export VCPKG_DIR="$(readlink -e ./vcpkg)"
|
||||||
|
|
||||||
|
# Build tdlib tools
|
||||||
|
cd implementations/tdlight/td_tools_build
|
||||||
|
cmake \
|
||||||
|
-DCMAKE_C_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DOPENSSL_USE_STATIC_LIBS=True \
|
||||||
|
-A x64 -DCMAKE_TOOLCHAIN_FILE:FILEPATH=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -DOPENSSL_USE_STATIC_LIBS=ON \
|
||||||
|
-DCMAKE_C_FLAGS_RELEASE="" \
|
||||||
|
-DCMAKE_CXX_FLAGS_RELEASE="-O0 -DNDEBUG" \
|
||||||
|
-DTD_ENABLE_LTO=OFF \
|
||||||
|
-DTD_ENABLE_JNI=ON \
|
||||||
|
..
|
||||||
|
cmake --build . --target prepare_cross_compiling --config Release --parallel "$(nproc)"
|
||||||
|
cmake --build . --target td_generate_java_api --config Release --parallel "$(nproc)"
|
||||||
|
cd ../../../
|
||||||
|
|
||||||
|
# Generate TdApi.java
|
||||||
|
./implementations/tdlight/td_tools_build/td/generate/Release/td_generate_java_api TdApi "./implementations/tdlight/td/generate/auto/tlo/td_api.tlo" "./natives/src/main/java" "it/tdlight/jni"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Optimization flags
|
||||||
|
export CMAKE_C_FLAGS="${CMAKE_C_FLAGS}"
|
||||||
|
export CMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti"
|
||||||
|
export CMAKE_SHARED_LINKER_FLAGS="${CMAKE_SHARED_LINKER_FLAGS} -Wl,--gc-sections -Wl,--exclude-libs,ALL"
|
||||||
|
export CMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -flto=thin -O3"
|
||||||
|
|
||||||
|
# Build tdlib
|
||||||
|
cd implementations/tdlight/build
|
||||||
|
INSTALL_PREFIX="$(readlink -e ./td_bin/)"
|
||||||
|
INSTALL_BINDIR="$(readlink -e ./td_bin/bin)"
|
||||||
|
cmake \
|
||||||
|
-DCMAKE_C_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DOPENSSL_USE_STATIC_LIBS=True \
|
||||||
|
-A x64 -DCMAKE_TOOLCHAIN_FILE:FILEPATH=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -DOPENSSL_USE_STATIC_LIBS=ON \
|
||||||
|
-DTD_SKIP_BENCHMARK=ON -DTD_SKIP_TEST=ON -DTD_SKIP_TG_CLI=ON \
|
||||||
|
-DTD_ENABLE_LTO=ON \
|
||||||
|
-DTD_ENABLE_JNI=ON \
|
||||||
|
-DCMAKE_INSTALL_PREFIX:PATH="$INSTALL_PREFIX" \
|
||||||
|
-DCMAKE_INSTALL_BINDIR:PATH="$INSTALL_BINDIR" \
|
||||||
|
..
|
||||||
|
cmake --build . --target install --config Release --parallel "$(nproc)"
|
||||||
|
cd ../../../
|
||||||
|
|
||||||
|
cd natives/build
|
||||||
|
cmake \
|
||||||
|
-DCMAKE_C_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DOPENSSL_USE_STATIC_LIBS=True \
|
||||||
|
-A x64 -DCMAKE_TOOLCHAIN_FILE:FILEPATH=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -DOPENSSL_USE_STATIC_LIBS=ON \
|
||||||
|
-DTD_GENERATED_BINARIES_DIR="$(readlink -e ../../implementations/tdlight/td_tools_build/td/generate/Release)" \
|
||||||
|
-DTD_SRC_DIR="$(readlink -e ../../implementations/tdlight)" \
|
||||||
|
-DTD_ENABLE_LTO=ON \
|
||||||
|
-DTDNATIVES_BIN_DIR="$(readlink -e ../tdjni_bin/)" \
|
||||||
|
-DTDNATIVES_DOCS_BIN_DIR="$(readlink -e ../tdjni_docs/)" \
|
||||||
|
-DTd_DIR:PATH="$(readlink -e ../../implementations/tdlight/build/td_bin/lib/cmake/Td)" \
|
||||||
|
-DJAVA_SRC_DIR="$(readlink -e ../src/main/java)" \
|
||||||
|
-DTDNATIVES_CPP_SRC_DIR="$(readlink -e ../src/main/cpp)" \
|
||||||
|
../src/main/cpp
|
||||||
|
cmake --build . --target install --config Release --parallel "$(nproc)"
|
||||||
|
cd ..
|
||||||
|
mkdir -p src/main/resources/META-INF/tdlightjni/
|
||||||
|
mv tdjni_bin/tdjni.dll src/main/resources/META-INF/tdlightjni/tdjni.windows_amd64.dll
|
||||||
|
mvn -B -f pom.xml -Drevision="$REVISION" -Dnative.type.classifier=windows_amd64 package
|
||||||
|
|
||||||
|
# Restore original working directory
|
||||||
|
cp -r "../natives/" "$DEPLOY_DIR/"
|
||||||
|
cd "$DEPLOY_DIR"
|
8
.github/workflows/scripts/install_deps_macos_amd64.sh
vendored
Executable file
8
.github/workflows/scripts/install_deps_macos_amd64.sh
vendored
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/bash -ex
|
||||||
|
export HOMEBREW_NO_AUTO_UPDATE=1
|
||||||
|
brew install --force gperf
|
||||||
|
brew install --force coreutils
|
||||||
|
brew install --force openjdk
|
||||||
|
brew install --force freetype
|
||||||
|
brew install --force gd
|
||||||
|
brew install --force libtiff
|
8
.github/workflows/scripts/install_deps_macos_arm64.sh
vendored
Executable file
8
.github/workflows/scripts/install_deps_macos_arm64.sh
vendored
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/bash -ex
|
||||||
|
export HOMEBREW_NO_AUTO_UPDATE=1
|
||||||
|
brew install --force gperf
|
||||||
|
brew install --force coreutils
|
||||||
|
brew install --force openjdk
|
||||||
|
brew install --force freetype
|
||||||
|
brew install --force gd
|
||||||
|
brew install --force libtiff
|
5
.github/workflows/scripts/install_deps_windows_amd64.sh
vendored
Executable file
5
.github/workflows/scripts/install_deps_windows_amd64.sh
vendored
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/bash -ex
|
||||||
|
# Windows 2019
|
||||||
|
choco install base64
|
||||||
|
choco install gperf
|
||||||
|
choco install strawberryperl
|
132
.github/workflows/tdapi_file.yaml
vendored
132
.github/workflows/tdapi_file.yaml
vendored
@ -11,23 +11,22 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- {os: ubuntu-20.04, arch: "linux/amd64", implementation: "tdlight"}
|
- {os: ubuntu-22.04, arch: "linux/amd64", implementation: "tdlight"}
|
||||||
#- {os: ubuntu-20.04, arch: "linux/amd64", implementation: "tdlib"}
|
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- name: Install sudo package
|
- name: Install ubuntu 22.04 dependencies
|
||||||
if: runner.os == 'Linux'
|
if: matrix.os == 'ubuntu-22.04'
|
||||||
run: |
|
uses: awalsh128/cache-apt-pkgs-action@latest
|
||||||
(apt-get update || true) 2>/dev/null
|
with:
|
||||||
(apt-get install -y sudo || true) 2>/dev/null
|
packages: sudo make git zlib1g-dev libssl-dev gperf php-cli cmake openjdk-17-jdk clang-14 libc++-14-dev libc++abi-14-dev libgcc-11-dev libunwind-14-dev libclang-common-14-dev maven
|
||||||
sudo apt update
|
version: 1.0
|
||||||
- name: Install SSH key
|
- name: Install SSH key
|
||||||
uses: shimataro/ssh-key-action@v2
|
uses: shimataro/ssh-key-action@v2
|
||||||
with:
|
with:
|
||||||
key: ${{ secrets.IG_SSH_KEY }}
|
key: ${{ secrets.IG_SSH_KEY }}
|
||||||
name: id_rsa
|
name: id_rsa
|
||||||
known_hosts: ${{ secrets.IG_KNOWN_HOSTS }}
|
known_hosts: ${{ secrets.IG_KNOWN_HOSTS }}
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
submodules: "recursive"
|
submodules: "recursive"
|
||||||
- name: Setup Java (Snapshot)
|
- name: Setup Java (Snapshot)
|
||||||
@ -39,6 +38,7 @@ jobs:
|
|||||||
server-id: mchv-snapshot-distribution
|
server-id: mchv-snapshot-distribution
|
||||||
server-username: MAVEN_USERNAME
|
server-username: MAVEN_USERNAME
|
||||||
server-password: MAVEN_PASSWORD
|
server-password: MAVEN_PASSWORD
|
||||||
|
cache: 'maven'
|
||||||
- name: Setup Java (Release)
|
- name: Setup Java (Release)
|
||||||
if: github.ref != 'refs/heads/develop'
|
if: github.ref != 'refs/heads/develop'
|
||||||
uses: actions/setup-java@v3
|
uses: actions/setup-java@v3
|
||||||
@ -48,76 +48,67 @@ jobs:
|
|||||||
server-id: mchv-release-distribution
|
server-id: mchv-release-distribution
|
||||||
server-username: MAVEN_USERNAME
|
server-username: MAVEN_USERNAME
|
||||||
server-password: MAVEN_PASSWORD
|
server-password: MAVEN_PASSWORD
|
||||||
|
cache: 'maven'
|
||||||
|
- name: Set up Maven
|
||||||
|
uses: stCarolas/setup-maven@v4.5
|
||||||
|
with:
|
||||||
|
maven-version: 3.8.2
|
||||||
- name: Setup variables
|
- name: Setup variables
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
set -xeo pipefail
|
||||||
# ====== Variables
|
# ====== Variables
|
||||||
export REVISION=${{ github.run_number }}
|
export REVISION=4.0.${{ github.run_number }}
|
||||||
export GH_MATRIX_OS=${{ matrix.os }}
|
export GH_MATRIX_OS=${{ matrix.os }}
|
||||||
export GH_MATRIX_ARCH=${{ matrix.arch }}
|
export GH_MATRIX_ARCH=${{ matrix.arch }}
|
||||||
export IMPLEMENTATION_NAME=${{ matrix.implementation }}
|
export IMPLEMENTATION_NAME=${{ matrix.implementation }}
|
||||||
|
|
||||||
source ./scripts/continuous-integration/github-workflows/setup-variables.sh
|
|
||||||
|
|
||||||
echo "REVISION=$REVISION" >> $GITHUB_ENV
|
echo "REVISION=$REVISION" >> $GITHUB_ENV
|
||||||
echo "BUILD_TYPE=$BUILD_TYPE" >> $GITHUB_ENV
|
echo "BUILD_TYPE=$BUILD_TYPE" >> $GITHUB_ENV
|
||||||
echo "IMPLEMENTATION_NAME=$IMPLEMENTATION_NAME" >> $GITHUB_ENV
|
echo "IMPLEMENTATION_NAME=$IMPLEMENTATION_NAME" >> $GITHUB_ENV
|
||||||
echo "TD_SRC_DIR=$TD_SRC_DIR" >> $GITHUB_ENV
|
|
||||||
echo "TD_BIN_DIR=$TD_BIN_DIR" >> $GITHUB_ENV
|
|
||||||
echo "TDNATIVES_BIN_DIR=$TDNATIVES_BIN_DIR" >> $GITHUB_ENV
|
|
||||||
echo "TDNATIVES_CPP_SRC_DIR=$TDNATIVES_CPP_SRC_DIR" >> $GITHUB_ENV
|
|
||||||
echo "TDNATIVES_DOCS_BIN_DIR=$TDNATIVES_DOCS_BIN_DIR" >> $GITHUB_ENV
|
|
||||||
echo "TD_BUILD_DIR=$TD_BUILD_DIR" >> $GITHUB_ENV
|
|
||||||
echo "TDNATIVES_CPP_BUILD_DIR=$TDNATIVES_CPP_BUILD_DIR" >> $GITHUB_ENV
|
|
||||||
echo "JAVA_SRC_DIR=$JAVA_SRC_DIR" >> $GITHUB_ENV
|
|
||||||
echo "TDLIB_SERIALIZER_DIR=$TDLIB_SERIALIZER_DIR" >> $GITHUB_ENV
|
|
||||||
if [[ ! -z "$PATH" ]]; then
|
if [[ ! -z "$PATH" ]]; then
|
||||||
echo "PATH=$PATH" >> $GITHUB_ENV
|
echo "PATH=$PATH" >> $GITHUB_ENV
|
||||||
fi
|
fi
|
||||||
echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
|
echo "JAVA_HOME=$JAVA_HOME" >> $GITHUB_ENV
|
||||||
echo "JAVA_INCLUDE_PATH=$JAVA_INCLUDE_PATH" >> $GITHUB_ENV
|
echo "JAVA_INCLUDE_PATH=$JAVA_INCLUDE_PATH" >> $GITHUB_ENV
|
||||||
echo "CMAKE_EXTRA_ARGUMENTS=$CMAKE_EXTRA_ARGUMENTS" >> $GITHUB_ENV
|
cat $GITHUB_ENV > github.env
|
||||||
echo "VCPKG_DIR=$VCPKG_DIR" >> $GITHUB_ENV
|
|
||||||
echo "MAVEN_OPTS=$MAVEN_OPTS" >> $GITHUB_ENV
|
|
||||||
echo "GH_CPU_ARCH=$GH_CPU_ARCH" >> $GITHUB_ENV
|
|
||||||
echo "CPU_ARCH_JAVA=$CPU_ARCH_JAVA" >> $GITHUB_ENV
|
|
||||||
echo "CPU_ARCHITECTURE_NAME=$CPU_ARCHITECTURE_NAME" >> $GITHUB_ENV
|
|
||||||
echo "CPU_CORES_NUM=$CPU_CORES_NUM" >> $GITHUB_ENV
|
|
||||||
echo "CPU_CORES=$CPU_CORES" >> $GITHUB_ENV
|
|
||||||
echo "OPERATING_SYSTEM_NAME=$OPERATING_SYSTEM_NAME" >> $GITHUB_ENV
|
|
||||||
echo "OPERATING_SYSTEM_NAME_SHORT=$OPERATING_SYSTEM_NAME_SHORT" >> $GITHUB_ENV
|
|
||||||
echo "SRC_TDJNI_LIBNAME=$SRC_TDJNI_LIBNAME" >> $GITHUB_ENV
|
|
||||||
echo "DEST_TDJNI_LIBNAME=$DEST_TDJNI_LIBNAME" >> $GITHUB_ENV
|
|
||||||
- name: Install dependencies
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo "REVISION: $REVISION"
|
|
||||||
|
|
||||||
./scripts/continuous-integration/github-workflows/install-dependencies.sh
|
|
||||||
- name: Build
|
- name: Build
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
set -xeo pipefail
|
||||||
echo "REVISION: $REVISION"
|
echo "REVISION: $REVISION"
|
||||||
|
|
||||||
./scripts/continuous-integration/github-workflows/build-tdapi.sh
|
./.github/workflows/scripts/build_api.sh
|
||||||
- id: getfilename
|
- uses: actions/upload-artifact@v3
|
||||||
shell: bash
|
|
||||||
run: echo "::set-output name=file::$(cd generated-sealed/target; ls tdli*-api-*-SNAPSHOT.jar)"
|
|
||||||
- id: getfilepath
|
|
||||||
shell: bash
|
|
||||||
run: echo "::set-output name=file::$(ls generated-sealed/target/tdli*-api-*-SNAPSHOT.jar)"
|
|
||||||
- uses: actions/upload-artifact@v2
|
|
||||||
with:
|
with:
|
||||||
name: ${{ steps.getfilename.outputs.file }}
|
name: tdlight-api-${{env.REVISION}}.jar
|
||||||
path: ${{ steps.getfilepath.outputs.file }}
|
path: api/target/tdlight-api-${{env.REVISION}}.jar
|
||||||
|
- uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: tdlight-api-${{env.REVISION}}-legacy.jar
|
||||||
|
path: api/target-legacy/tdlight-api-${{env.REVISION}}-legacy.jar
|
||||||
- name: Deploy to Maven (Snapshot)
|
- name: Deploy to Maven (Snapshot)
|
||||||
if: github.ref != 'refs/heads/master'
|
if: github.ref != 'refs/heads/master'
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
set -xeo pipefail
|
||||||
echo "REVISION: $REVISION"
|
echo "REVISION: $REVISION"
|
||||||
|
|
||||||
API_TYPE=legacy ./scripts/continuous-integration/github-workflows/deploy-snapshot.sh
|
echo "Building standard package"
|
||||||
API_TYPE=sealed ./scripts/continuous-integration/github-workflows/deploy-snapshot.sh
|
mvn -B -f api/pom.xml clean package deploy -Drevision="$REVISION"
|
||||||
|
echo "Deploying legacy package"
|
||||||
|
mvn -B -f api/pom.xml clean package -Dlegacy=true -Drevision="$REVISION"
|
||||||
|
mvn -B org.apache.maven.plugins:maven-deploy-plugin:3.1.1:deploy-file -Durl=https://mvn.mchv.eu/repository/mchv-snapshot \
|
||||||
|
-DrepositoryId=mchv-snapshot-distribution \
|
||||||
|
-Dfile=api/target-legacy/tdlight-api-$REVISION-legacy.jar \
|
||||||
|
-Dpackaging=pom \
|
||||||
|
-DgroupId=it.tdlight \
|
||||||
|
-DartifactId=tdlight-api \
|
||||||
|
-Dversion=$REVISION \
|
||||||
|
-Drevision=$REVISION \
|
||||||
|
-Dclassifier=legacy \
|
||||||
|
-Dlegacy=true
|
||||||
|
echo "Done."
|
||||||
env:
|
env:
|
||||||
MAVEN_USERNAME: ${{ secrets.MCHV_USERNAME }}
|
MAVEN_USERNAME: ${{ secrets.MCHV_USERNAME }}
|
||||||
MAVEN_PASSWORD: ${{ secrets.MCHV_TOKEN }}
|
MAVEN_PASSWORD: ${{ secrets.MCHV_TOKEN }}
|
||||||
@ -125,13 +116,44 @@ jobs:
|
|||||||
if: github.ref == 'refs/heads/master'
|
if: github.ref == 'refs/heads/master'
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
set -xeo pipefail
|
||||||
echo "REVISION: $REVISION"
|
echo "REVISION: $REVISION"
|
||||||
|
|
||||||
API_TYPE=legacy ./scripts/continuous-integration/github-workflows/deploy-release.sh
|
echo "Deploying standard package"
|
||||||
API_TYPE=sealed ./scripts/continuous-integration/github-workflows/deploy-release.sh
|
mvn -B -f api/pom.xml clean package deploy -Drevision="$REVISION"
|
||||||
API_TYPE=legacy ./scripts/continuous-integration/github-workflows/deploy-javadoc.sh
|
|
||||||
API_TYPE=sealed ./scripts/continuous-integration/github-workflows/deploy-javadoc.sh
|
echo "Deploying legacy package"
|
||||||
|
mvn -B -f api/pom.xml clean package -Dlegacy=true -Drevision="$REVISION"
|
||||||
|
mvn -B org.apache.maven.plugins:maven-deploy-plugin:3.1.1:deploy-file -Durl=https://mvn.mchv.eu/repository/mchv \
|
||||||
|
-DrepositoryId=mchv-release-distribution \
|
||||||
|
-Dfile=api/target-legacy/tdlight-api-$REVISION-legacy.jar \
|
||||||
|
-Dpackaging=pom \
|
||||||
|
-DgroupId=it.tdlight \
|
||||||
|
-DartifactId=tdlight-api \
|
||||||
|
-Dversion=$REVISION \
|
||||||
|
-Drevision=$REVISION \
|
||||||
|
-Dclassifier=legacy \
|
||||||
|
-Dlegacy=true
|
||||||
|
|
||||||
|
|
||||||
|
echo "Deploying docs"
|
||||||
|
cd "./api/target/apidocs"
|
||||||
|
find . -name '*.html' -exec sed -i -r 's/<\/title>/<\/title>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><style>\n\t#memberSummary_tabpanel{overflow-x: auto;}\n\tli.blockList{overflow-x: auto;}\n\ttd.colLast div{max-width:30vw;}\n\t#search{width: 400px;max-width: 65vw;}\n\t.title,.subTitle,pre,.inheritance,h1,h2,h3,h4,h5,.memberSummary,.memberSignature,.typeSummary,.blockList,.contentContainer{white-space:normal;word-break:break-word;}\n\tul{padding-left:10px}\n<\/style>/' {} \;
|
||||||
|
git config --global init.defaultBranch master
|
||||||
|
git init
|
||||||
|
git checkout -b "tdlight"
|
||||||
|
git remote add origin "https://${DOCS_DEPLOY_USERNAME}:${DOCS_DEPLOY_PASSWORD}@git.ignuranza.net/tdlight-team/tdlight-docs"
|
||||||
|
git config user.email "andrea@warp.ovh"
|
||||||
|
git config user.name "Andrea Cavalli"
|
||||||
|
git fetch --all
|
||||||
|
git reset --soft "origin/tdlight" || true
|
||||||
|
git add -A
|
||||||
|
git commit -m "Update javadocs"
|
||||||
|
git push --set-upstream origin "tdlight"
|
||||||
|
echo "Done."
|
||||||
env:
|
env:
|
||||||
MAVEN_USERNAME: ${{ secrets.MCHV_USERNAME }}
|
MAVEN_USERNAME: ${{ secrets.MCHV_USERNAME }}
|
||||||
MAVEN_PASSWORD: ${{ secrets.MCHV_TOKEN }}
|
MAVEN_PASSWORD: ${{ secrets.MCHV_TOKEN }}
|
||||||
|
DOCS_DEPLOY_USERNAME: ${{ secrets.DOCS_DEPLOY_USERNAME }}
|
||||||
|
DOCS_DEPLOY_PASSWORD: ${{ secrets.DOCS_DEPLOY_PASSWORD }}
|
||||||
|
|
||||||
|
15
.gitignore
vendored
15
.gitignore
vendored
@ -64,3 +64,18 @@ win-deps.sh
|
|||||||
/.cache/
|
/.cache/
|
||||||
|
|
||||||
.idea/
|
.idea/
|
||||||
|
/natives/build/
|
||||||
|
/natives/src/main/td/
|
||||||
|
/natives/tdjni_bin/
|
||||||
|
/natives/tdjni_docs/
|
||||||
|
/natives/src/main/td_bin/
|
||||||
|
/natives/src/main/tdjni_docs/
|
||||||
|
/api/src/main/td/
|
||||||
|
/api/jni_bin/
|
||||||
|
/api/target-legacy/
|
||||||
|
/api/target-sealed/
|
||||||
|
/api/.ci-friendly-pom.xml
|
||||||
|
|
||||||
|
natives/.ci-friendly-pom.xml
|
||||||
|
|
||||||
|
*.so
|
||||||
|
11
.gitmodules
vendored
11
.gitmodules
vendored
@ -1,9 +1,6 @@
|
|||||||
[submodule "implementations/tdlib"]
|
[submodule "tdlib-serializer"]
|
||||||
path = implementations/tdlib
|
path = tdlib-serializer
|
||||||
url = https://github.com/tdlib/td.git
|
url = https://git.ignuranza.net/tdlight-team/tdlib-serializer
|
||||||
[submodule "implementations/tdlight"]
|
[submodule "implementations/tdlight"]
|
||||||
path = implementations/tdlight
|
path = implementations/tdlight
|
||||||
url = https://git.ignuranza.net/tdlight-team/tdlight.git
|
url = https://git.ignuranza.net/tdlight-team/tdlight
|
||||||
[submodule "scripts/core/tdlib-serializer"]
|
|
||||||
path = scripts/core/tdlib-serializer
|
|
||||||
url = https://git.ignuranza.net/windoz/tdlib-serializer.git
|
|
||||||
|
37
Dockerfile
37
Dockerfile
@ -1,37 +0,0 @@
|
|||||||
FROM debian:oldstable
|
|
||||||
|
|
||||||
ARG REVISION
|
|
||||||
ARG GH_MATRIX_OS
|
|
||||||
ARG GH_MATRIX_ARCH
|
|
||||||
ARG IMPLEMENTATION_NAME
|
|
||||||
ARG CPU_CORES_NUM
|
|
||||||
|
|
||||||
ENV DEBIAN_FRONTEND noninteractive
|
|
||||||
|
|
||||||
ENV TZ=Europe/Kiev
|
|
||||||
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
|
||||||
|
|
||||||
RUN apt update && apt upgrade -y
|
|
||||||
|
|
||||||
RUN apt install -y sudo build-essential openjdk-11-jdk locales wget cmake gperf ccache maven \
|
|
||||||
libssl-dev libssl1.1 zlib1g-dev zlib1g
|
|
||||||
|
|
||||||
RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \
|
|
||||||
dpkg-reconfigure --frontend=noninteractive locales && \
|
|
||||||
update-locale LANG=en_US.UTF-8
|
|
||||||
|
|
||||||
ENV LANG "en_US.UTF-8"
|
|
||||||
ENV JAVA_TOOL_OPTIONS "-Dfile.encoding=UTF8"
|
|
||||||
|
|
||||||
ADD implementations /usr/src/tdlight-java-natives/implementations
|
|
||||||
ADD scripts /usr/src/tdlight-java-natives/scripts
|
|
||||||
ADD src /usr/src/tdlight-java-natives/src
|
|
||||||
|
|
||||||
WORKDIR /usr/src/tdlight-java-natives/
|
|
||||||
|
|
||||||
RUN /bin/bash /usr/src/tdlight-java-natives/scripts/continuous-integration/docker/build-natives.sh
|
|
||||||
|
|
||||||
#WORKDIR /usr/src/tdlight-java-natives/generated/
|
|
||||||
#RUN echo "aaaa" > test.txt
|
|
||||||
|
|
||||||
ENTRYPOINT [ "/bin/bash" ]
|
|
@ -4,11 +4,9 @@ This repository generates JNI packages for each architecture and OS used by [TDL
|
|||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
Go to `scripts/utils` and run
|
**todo**
|
||||||
|
|
||||||
- `./compile-natives-package.sh` for natives
|
look at the dockerfile it's a decent example
|
||||||
|
|
||||||
- `./compile-tdapi-package.sh` for tdapi
|
|
||||||
|
|
||||||
## Download
|
## Download
|
||||||
|
|
||||||
|
283
api/pom.xml
Normal file
283
api/pom.xml
Normal file
@ -0,0 +1,283 @@
|
|||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlight-api</artifactId>
|
||||||
|
<version>${revision}</version>
|
||||||
|
<name>TDLight API</name>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<revision>4.0.0-SNAPSHOT</revision>
|
||||||
|
<safeVersionName>v4_0_0</safeVersionName>
|
||||||
|
<buildDirectory>${project.basedir}/target</buildDirectory>
|
||||||
|
</properties>
|
||||||
|
<profiles>
|
||||||
|
<profile>
|
||||||
|
<id>legacy</id>
|
||||||
|
<activation>
|
||||||
|
<property>
|
||||||
|
<name>legacy</name>
|
||||||
|
<value>true</value>
|
||||||
|
</property>
|
||||||
|
</activation>
|
||||||
|
<properties>
|
||||||
|
<buildDirectory>${project.basedir}/target-legacy</buildDirectory>
|
||||||
|
</properties>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<!-- ensure the project is compiling with JDK 9+ -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-enforcer-plugin</artifactId>
|
||||||
|
<version>3.0.0-M3</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>enforce-jdk9</id>
|
||||||
|
<goals>
|
||||||
|
<goal>enforce</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<rules>
|
||||||
|
<requireJavaVersion>
|
||||||
|
<version>[1.9,)</version>
|
||||||
|
<message>JDK 9+ is required for compilation</message>
|
||||||
|
</requireJavaVersion>
|
||||||
|
</rules>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
|
<artifactId>build-helper-maven-plugin</artifactId>
|
||||||
|
<version>3.3.0</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>add-source</id>
|
||||||
|
<phase>generate-sources</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>add-source</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<sources>
|
||||||
|
<source>${project.basedir}/src/main/java-legacy</source>
|
||||||
|
</sources>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<!-- compile sources -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>3.8.1</version>
|
||||||
|
<configuration>
|
||||||
|
<encoding>UTF-8</encoding>
|
||||||
|
</configuration>
|
||||||
|
<executions>
|
||||||
|
<!-- disable default phase due to fixed id and position in lifecycle -->
|
||||||
|
<execution>
|
||||||
|
<id>default-compile</id>
|
||||||
|
<phase>none</phase>
|
||||||
|
<!-- specify source/target for IDE integration -->
|
||||||
|
<configuration>
|
||||||
|
<release>9</release>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
<!-- compile sources with Java 9 to generate and validate module-info.java -->
|
||||||
|
<execution>
|
||||||
|
<id>java-9-module-compile</id>
|
||||||
|
<goals>
|
||||||
|
<goal>compile</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<release>9</release>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
<!-- recompile sources as Java 8 to overwrite Java 9 class files, except module-info.java -->
|
||||||
|
<execution>
|
||||||
|
<id>java-8-compile</id>
|
||||||
|
<goals>
|
||||||
|
<goal>compile</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<!-- specify JDK 9+ release flag to ensure no classes/methods later than Java 8 are used accidentally -->
|
||||||
|
<release>8</release>
|
||||||
|
<!-- exclude module-info.java from the compilation, as it is unsupported by Java 8 -->
|
||||||
|
<excludes>
|
||||||
|
<exclude>module-info.java</exclude>
|
||||||
|
</excludes>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
<version>3.2.0</version>
|
||||||
|
<configuration>
|
||||||
|
<archive>
|
||||||
|
<manifestEntries>
|
||||||
|
<Multi-Release>true</Multi-Release>
|
||||||
|
</manifestEntries>
|
||||||
|
</archive>
|
||||||
|
<classifier>legacy</classifier>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-install-plugin</artifactId>
|
||||||
|
<version>3.1.1</version>
|
||||||
|
<configuration>
|
||||||
|
<allowIncompleteProjects>true</allowIncompleteProjects>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-deploy-plugin</artifactId>
|
||||||
|
<version>3.1.1</version>
|
||||||
|
<configuration>
|
||||||
|
<allowIncompleteProjects>true</allowIncompleteProjects>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
<profile>
|
||||||
|
<id>sealed</id>
|
||||||
|
<activation>
|
||||||
|
<property>
|
||||||
|
<name>legacy</name>
|
||||||
|
<value>!true</value>
|
||||||
|
</property>
|
||||||
|
</activation>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
|
<artifactId>build-helper-maven-plugin</artifactId>
|
||||||
|
<version>3.3.0</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>add-source</id>
|
||||||
|
<phase>generate-sources</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>add-source</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<sources>
|
||||||
|
<source>${project.basedir}/src/main/java-sealed</source>
|
||||||
|
</sources>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<!-- compile sources -->
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>3.8.1</version>
|
||||||
|
<configuration>
|
||||||
|
<encoding>UTF-8</encoding>
|
||||||
|
<release>17</release>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
<version>3.2.0</version>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-install-plugin</artifactId>
|
||||||
|
<version>3.1.1</version>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-deploy-plugin</artifactId>
|
||||||
|
<version>3.1.1</version>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-source-plugin</artifactId>
|
||||||
|
<version>3.2.1</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>attach-sources</id>
|
||||||
|
<goals>
|
||||||
|
<goal>jar</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-javadoc-plugin</artifactId>
|
||||||
|
<version>3.2.0</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>main-javadoc</id>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>jar</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<release>17</release>
|
||||||
|
<quiet>true</quiet>
|
||||||
|
<notimestamp>true</notimestamp>
|
||||||
|
<encoding>UTF-8</encoding>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
</profiles>
|
||||||
|
<distributionManagement>
|
||||||
|
<repository>
|
||||||
|
<id>mchv-release-distribution</id>
|
||||||
|
<name>MCHV Release Apache Maven Packages Distribution</name>
|
||||||
|
<url>https://mvn.mchv.eu/repository/mchv</url>
|
||||||
|
</repository>
|
||||||
|
<snapshotRepository>
|
||||||
|
<id>mchv-snapshot-distribution</id>
|
||||||
|
<name>MCHV Snapshot Apache Maven Packages Distribution</name>
|
||||||
|
<url>https://mvn.mchv.eu/repository/mchv-snapshot</url>
|
||||||
|
</snapshotRepository>
|
||||||
|
</distributionManagement>
|
||||||
|
<scm>
|
||||||
|
<url>https://git.ignuranza.net/tdlight-team/tdlight-java-natives.git</url>
|
||||||
|
<connection>scm:git:https://git.ignuranza.net/tdlight-team/tdlight-java-natives.git</connection>
|
||||||
|
<developerConnection>scm:git:https://git.ignuranza.net/tdlight-team/tdlight-java-natives.git</developerConnection>
|
||||||
|
<tag>HEAD</tag>
|
||||||
|
</scm>
|
||||||
|
<build>
|
||||||
|
<directory>${buildDirectory}</directory>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-clean-plugin</artifactId>
|
||||||
|
<version>3.1.0</version>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-resources-plugin</artifactId>
|
||||||
|
<version>3.0.2</version>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-install-plugin</artifactId>
|
||||||
|
<version>3.0.0-M1</version>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>com.outbrain.swinfra</groupId>
|
||||||
|
<artifactId>ci-friendly-flatten-maven-plugin</artifactId>
|
||||||
|
<version>1.0.14</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<goals>
|
||||||
|
<goal>clean</goal>
|
||||||
|
<goal>flatten</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
6
api/src/main/java/module-info.java
Normal file
6
api/src/main/java/module-info.java
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
/**
|
||||||
|
* This module contains the TDLib interface type-classes and function-classes.
|
||||||
|
*/
|
||||||
|
module tdlight.api {
|
||||||
|
exports it.tdlight.jni;
|
||||||
|
}
|
@ -1 +0,0 @@
|
|||||||
Subproject commit cf1984844be7ec0c06762d8d617cbb20352ec9a2
|
|
@ -1 +1 @@
|
|||||||
Subproject commit 54d2cc3e0e27339174fc3c6f88babdd3d0ad02b6
|
Subproject commit b6c5bd07bbed6b58ec9426904affee05a4ca78e0
|
95
natives/pom.xml
Normal file
95
natives/pom.xml
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>it.tdlight</groupId>
|
||||||
|
<artifactId>tdlight-natives</artifactId>
|
||||||
|
<!-- Don't change the version! (or change it also in <shadedPattern>) -->
|
||||||
|
<version>${revision}</version>
|
||||||
|
<name>tdlight natives</name>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<revision>4.0.0-SNAPSHOT</revision>
|
||||||
|
<native.type.classifier>_invalid_</native.type.classifier>
|
||||||
|
<buildDirectory>${project.basedir}/target-${native.type.classifier}</buildDirectory>
|
||||||
|
</properties>
|
||||||
|
<distributionManagement>
|
||||||
|
<repository>
|
||||||
|
<id>mchv-release-distribution</id>
|
||||||
|
<name>MCHV Release Apache Maven Packages Distribution</name>
|
||||||
|
<url>https://mvn.mchv.eu/repository/mchv</url>
|
||||||
|
</repository>
|
||||||
|
<snapshotRepository>
|
||||||
|
<id>mchv-snapshot-distribution</id>
|
||||||
|
<name>MCHV Snapshot Apache Maven Packages Distribution</name>
|
||||||
|
<url>https://mvn.mchv.eu/repository/mchv-snapshot</url>
|
||||||
|
</snapshotRepository>
|
||||||
|
</distributionManagement>
|
||||||
|
<scm>
|
||||||
|
<url>https://git.ignuranza.net/tdlight-team/tdlight-java-natives.git</url>
|
||||||
|
<connection>scm:git:https://git.ignuranza.net/tdlight-team/tdlight-java-natives.git</connection>
|
||||||
|
<developerConnection>scm:git:https://git.ignuranza.net/tdlight-team/tdlight-java-natives.git</developerConnection>
|
||||||
|
<tag>HEAD</tag>
|
||||||
|
</scm>
|
||||||
|
<build>
|
||||||
|
<directory>${buildDirectory}</directory>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-clean-plugin</artifactId>
|
||||||
|
<version>3.1.0</version>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-resources-plugin</artifactId>
|
||||||
|
<version>3.0.2</version>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>3.8.1</version>
|
||||||
|
<configuration>
|
||||||
|
<encoding>UTF-8</encoding>
|
||||||
|
<source>8</source>
|
||||||
|
<target>8</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>com.outbrain.swinfra</groupId>
|
||||||
|
<artifactId>ci-friendly-flatten-maven-plugin</artifactId>
|
||||||
|
<version>1.0.14</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<goals>
|
||||||
|
<goal>clean</goal>
|
||||||
|
<goal>flatten</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
<version>3.2.0</version>
|
||||||
|
<configuration>
|
||||||
|
<classifier>${native.type.classifier}</classifier>
|
||||||
|
<excludes>
|
||||||
|
<exclude>it/tdlight/jni/*</exclude>
|
||||||
|
<exclude>it/tdlight/tdnative/*</exclude>
|
||||||
|
</excludes>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-install-plugin</artifactId>
|
||||||
|
<version>3.1.1</version>
|
||||||
|
<configuration>
|
||||||
|
<allowIncompleteProjects>true</allowIncompleteProjects>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-deploy-plugin</artifactId>
|
||||||
|
<version>3.1.1</version>
|
||||||
|
<configuration>
|
||||||
|
<allowIncompleteProjects>true</allowIncompleteProjects>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
@ -12,7 +12,8 @@ endif()
|
|||||||
find_package(Td REQUIRED)
|
find_package(Td REQUIRED)
|
||||||
|
|
||||||
if (NOT JNI_FOUND)
|
if (NOT JNI_FOUND)
|
||||||
find_package(JNI REQUIRED)
|
SET(JNI_FIND_REQUIRED_AWT FALSE CACHE BOOL "" FORCE)
|
||||||
|
find_package(JNI REQUIRED COMPONENTS JVM)
|
||||||
endif()
|
endif()
|
||||||
message(STATUS "Found JNI: ${JNI_INCLUDE_DIRS} ${JNI_LIBRARIES}")
|
message(STATUS "Found JNI: ${JNI_INCLUDE_DIRS} ${JNI_LIBRARIES}")
|
||||||
|
|
||||||
@ -31,7 +32,7 @@ message(STATUS "PHP Executable: ${PHP_EXECUTABLE}")
|
|||||||
set(TD_API_JAVA_PACKAGE "it/tdlight/tdnative")
|
set(TD_API_JAVA_PACKAGE "it/tdlight/tdnative")
|
||||||
set(TD_API_SPEC_JAVA_PACKAGE "it/tdlight/jni")
|
set(TD_API_SPEC_JAVA_PACKAGE "it/tdlight/jni")
|
||||||
set(TD_API_JAVA_PATH ${JAVA_SRC_DIR})
|
set(TD_API_JAVA_PATH ${JAVA_SRC_DIR})
|
||||||
set(TD_API_TLO_PATH ${TD_SRC_DIR}/td/generate/scheme/td_api.tlo)
|
set(TD_API_TLO_PATH ${TD_SRC_DIR}/td/generate/auto/tlo/td_api.tlo)
|
||||||
set(TD_API_TL_PATH ${TD_SRC_DIR}/td/generate/scheme/td_api.tl)
|
set(TD_API_TL_PATH ${TD_SRC_DIR}/td/generate/scheme/td_api.tl)
|
||||||
set(JAVADOC_TL_DOCUMENTATION_GENERATOR_PATH ${TD_SRC_DIR}/td/generate/JavadocTlDocumentationGenerator.php)
|
set(JAVADOC_TL_DOCUMENTATION_GENERATOR_PATH ${TD_SRC_DIR}/td/generate/JavadocTlDocumentationGenerator.php)
|
||||||
set(GENERATE_JAVA_API_CMD ${TD_GENERATED_BINARIES_DIR}/td_generate_java_api TdApi ${TD_API_TLO_PATH} ${TD_API_JAVA_PATH} ${TD_API_SPEC_JAVA_PACKAGE})
|
set(GENERATE_JAVA_API_CMD ${TD_GENERATED_BINARIES_DIR}/td_generate_java_api TdApi ${TD_API_TLO_PATH} ${TD_API_JAVA_PATH} ${TD_API_SPEC_JAVA_PACKAGE})
|
||||||
@ -48,13 +49,13 @@ add_custom_target(td_generate_java_api
|
|||||||
get_filename_component(JAVA_OUTPUT_DIRECTORY ${TDNATIVES_BIN_DIR}/java-classes REALPATH BASE_DIR "${CMAKE_CURRENT_BINARY_DIR}")
|
get_filename_component(JAVA_OUTPUT_DIRECTORY ${TDNATIVES_BIN_DIR}/java-classes REALPATH BASE_DIR "${CMAKE_CURRENT_BINARY_DIR}")
|
||||||
file(MAKE_DIRECTORY ${JAVA_OUTPUT_DIRECTORY})
|
file(MAKE_DIRECTORY ${JAVA_OUTPUT_DIRECTORY})
|
||||||
add_custom_target(build_java
|
add_custom_target(build_java
|
||||||
COMMAND ${Java_JAVAC_EXECUTABLE} -d ${JAVA_OUTPUT_DIRECTORY} @${TDNATIVES_CPP_SRC_DIR}/sources.txt
|
COMMAND ${Java_JAVAC_EXECUTABLE} -encoding UTF-8 -d ${JAVA_OUTPUT_DIRECTORY} @${TDNATIVES_CPP_SRC_DIR}/sources.txt
|
||||||
COMMENT "Building Java code"
|
COMMENT "Building Java code"
|
||||||
DEPENDS td_generate_java_api
|
DEPENDS td_generate_java_api
|
||||||
)
|
)
|
||||||
|
|
||||||
add_custom_target(generate_javadoc
|
add_custom_target(generate_javadoc
|
||||||
COMMAND ${Java_JAVADOC_EXECUTABLE} -d ${TDNATIVES_DOCS_BIN_DIR} it.tdlight.jni
|
COMMAND ${Java_JAVADOC_EXECUTABLE} -encoding UTF-8 -charset UTF-8 -d ${TDNATIVES_DOCS_BIN_DIR} it.tdlight.jni
|
||||||
WORKING_DIRECTORY ${TD_API_JAVA_PATH}
|
WORKING_DIRECTORY ${TD_API_JAVA_PATH}
|
||||||
COMMENT "Generating Javadoc documentation"
|
COMMENT "Generating Javadoc documentation"
|
||||||
DEPENDS td_generate_java_api
|
DEPENDS td_generate_java_api
|
||||||
@ -103,7 +104,8 @@ if (NOT HAVE_STD14)
|
|||||||
message(FATAL_ERROR "No C++14 support in the compiler. Please upgrade the compiler.")
|
message(FATAL_ERROR "No C++14 support in the compiler. Please upgrade the compiler.")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_dependencies(tdjni td_generate_java_api build_java generate_javadoc)
|
#add_dependencies(tdjni td_generate_java_api build_java generate_javadoc)
|
||||||
|
add_dependencies(tdjni td_generate_java_api build_java)
|
||||||
|
|
||||||
install(TARGETS tdjni
|
install(TARGETS tdjni
|
||||||
LIBRARY DESTINATION ${TDNATIVES_BIN_DIR}
|
LIBRARY DESTINATION ${TDNATIVES_BIN_DIR}
|
2
natives/src/main/cpp/sources.txt
Normal file
2
natives/src/main/cpp/sources.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
../src/main/java/it/tdlight/jni/TdApi.java
|
||||||
|
../src/main/java/it/tdlight/tdnative/NativeClient.java
|
@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
|
// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2023
|
||||||
//
|
//
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
@ -168,8 +168,7 @@ static jint register_native(JavaVM *vm) {
|
|||||||
#undef TD_OBJECT
|
#undef TD_OBJECT
|
||||||
|
|
||||||
td::jni::init_vars(env, API_PACKAGE_NAME);
|
td::jni::init_vars(env, API_PACKAGE_NAME);
|
||||||
td::td_api::Object::init_jni_vars(env, API_PACKAGE_NAME);
|
td::td_api::get_package_name_ref() = API_PACKAGE_NAME;
|
||||||
td::td_api::Function::init_jni_vars(env, API_PACKAGE_NAME);
|
|
||||||
|
|
||||||
return JAVA_VERSION;
|
return JAVA_VERSION;
|
||||||
}
|
}
|
35583
natives/src/main/java/it/tdlight/jni/TdApi.java
Normal file
35583
natives/src/main/java/it/tdlight/jni/TdApi.java
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,109 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
export JAVA_HOME
|
|
||||||
JAVA_HOME="$(find "/usr/lib/jvm/" -maxdepth 1 -type d -iname "java*jdk*" | head -n 1)/"
|
|
||||||
export JAVA_INCLUDE_PATH="$JAVA_HOME/include"
|
|
||||||
source ./scripts/continuous-integration/github-workflows/setup-variables.sh
|
|
||||||
export CROSS_BUILD_DEPS_DIR="$PWD/cross-build-deps"
|
|
||||||
# Check variables correctness
|
|
||||||
if [ -z "${CPU_ARCH_DPKG}" ]; then
|
|
||||||
echo "Missing parameter: CPU_ARCH_DPKG"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -n "${CROSS_BUILD_DEPS_DIR}" ]; then
|
|
||||||
CROSS_OPENJDK_PATH=""
|
|
||||||
fix_jdk_path() {
|
|
||||||
# Setup OpenJDK path
|
|
||||||
CROSS_OPENJDK_PATH=$(find "$CROSS_BUILD_DEPS_DIR/usr/lib/jvm/" -maxdepth 1 -type d -iname "java*jdk*" | head -n 1)
|
|
||||||
}
|
|
||||||
|
|
||||||
check_jdk_existance() {
|
|
||||||
if [[ ! -d "$CROSS_OPENJDK_PATH" ]]; then
|
|
||||||
echo "Can't find cross OpenJDK at location $CROSS_OPENJDK_PATH"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
PWD_BEFORE_CROSS_DEPS=$(pwd)
|
|
||||||
if [[ ! -f "$CROSS_BUILD_DEPS_DIR/ok-012" ]]; then
|
|
||||||
echo "Setting up cross build deps dir"
|
|
||||||
rm -rf "$CROSS_BUILD_DEPS_DIR" || true
|
|
||||||
mkdir -p "$CROSS_BUILD_DEPS_DIR"
|
|
||||||
cd "$CROSS_BUILD_DEPS_DIR"
|
|
||||||
|
|
||||||
dpkg --add-architecture "${CPU_ARCH_DPKG}"
|
|
||||||
apt-get update
|
|
||||||
|
|
||||||
# LibZ-Dev
|
|
||||||
apt-get download "zlib1g-dev:${CPU_ARCH_DPKG}"
|
|
||||||
ZLIB1G_DEV_DEB=$(find . -name "zlib1g-dev_*.deb")
|
|
||||||
dpkg -x "$ZLIB1G_DEV_DEB" "$CROSS_BUILD_DEPS_DIR"
|
|
||||||
rm "$ZLIB1G_DEV_DEB"
|
|
||||||
# LibZ
|
|
||||||
apt-get download "zlib1g:${CPU_ARCH_DPKG}"
|
|
||||||
ZLIB1G_DEB=$(find . -name "zlib1g_*.deb")
|
|
||||||
dpkg -x "$ZLIB1G_DEB" "$CROSS_BUILD_DEPS_DIR"
|
|
||||||
rm "$ZLIB1G_DEB"
|
|
||||||
# LibSSL-Dev
|
|
||||||
apt-get download "libssl-dev:${CPU_ARCH_DPKG}"
|
|
||||||
LIBSSL_DEV_DEB=$(find . -name "libssl-dev_*.deb")
|
|
||||||
dpkg -x "$LIBSSL_DEV_DEB" "$CROSS_BUILD_DEPS_DIR"
|
|
||||||
rm "$LIBSSL_DEV_DEB"
|
|
||||||
# LibSSL
|
|
||||||
apt-get download "libssl1.1:${CPU_ARCH_DPKG}"
|
|
||||||
LIBSSL_DEB=$(find . -name "libssl1.1_*.deb")
|
|
||||||
dpkg -x "$LIBSSL_DEB" "$CROSS_BUILD_DEPS_DIR"
|
|
||||||
rm "$LIBSSL_DEB"
|
|
||||||
# Java Common
|
|
||||||
apt-get download "java-common"
|
|
||||||
JC_DEB=$(find . -name "java-common_*.deb")
|
|
||||||
dpkg -x "$JC_DEB" "$CROSS_BUILD_DEPS_DIR"
|
|
||||||
rm "$JC_DEB"
|
|
||||||
# OpenJDK-JRE-Headless
|
|
||||||
apt-get download "openjdk-11-jre-headless:${CPU_ARCH_DPKG}"
|
|
||||||
OJDKRH_DEB=$(find . -name "openjdk-11-jre-headless_*.deb")
|
|
||||||
dpkg -x "$OJDKRH_DEB" "$CROSS_BUILD_DEPS_DIR"
|
|
||||||
rm "$OJDKRH_DEB"
|
|
||||||
# OpenJDK-JRE
|
|
||||||
apt-get download "openjdk-11-jre:${CPU_ARCH_DPKG}"
|
|
||||||
OJDKR_DEB=$(find . -name "openjdk-11-jre_*.deb")
|
|
||||||
dpkg -x "$OJDKR_DEB" "$CROSS_BUILD_DEPS_DIR"
|
|
||||||
rm "$OJDKR_DEB"
|
|
||||||
# OpenJDK-JDK
|
|
||||||
apt-get download "openjdk-11-jdk-headless:${CPU_ARCH_DPKG}"
|
|
||||||
OJDKJ_DEB=$(find . -name "openjdk-11-jdk-headless_*.deb")
|
|
||||||
dpkg -x "$OJDKJ_DEB" "$CROSS_BUILD_DEPS_DIR"
|
|
||||||
rm "$OJDKJ_DEB"
|
|
||||||
# OpenJDK-GUI
|
|
||||||
apt-get download "openjdk-11-jdk:${CPU_ARCH_DPKG}"
|
|
||||||
OJDKG_DEB=$(find . -name "openjdk-11-jdk_*.deb")
|
|
||||||
dpkg -x "$OJDKG_DEB" "$CROSS_BUILD_DEPS_DIR"
|
|
||||||
rm "$OJDKG_DEB"
|
|
||||||
|
|
||||||
# Fix symlinks
|
|
||||||
find "$CROSS_BUILD_DEPS_DIR" -lname "/*" \
|
|
||||||
-exec sh -c "ln -sf \"\`echo \"$CROSS_BUILD_DEPS_DIR\$(readlink \$0)\"\`\" \"\$0\"" {} \;
|
|
||||||
|
|
||||||
echo "Cross build deps dir setup finished, testing..."
|
|
||||||
|
|
||||||
# Check if openjdk is found
|
|
||||||
fix_jdk_path
|
|
||||||
check_jdk_existance
|
|
||||||
|
|
||||||
touch "$CROSS_BUILD_DEPS_DIR/ok-012"
|
|
||||||
fi
|
|
||||||
echo "Cross build deps dir setup done"
|
|
||||||
fix_jdk_path
|
|
||||||
check_jdk_existance
|
|
||||||
cd "${PWD_BEFORE_CROSS_DEPS}"
|
|
||||||
apt install -y "crossbuild-essential-${CPU_ARCH_DPKG}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
cd scripts/core
|
|
||||||
source ./setup-variables.sh
|
|
||||||
./install-dependencies.sh
|
|
||||||
./generate_maven_project.sh
|
|
||||||
./generate_td_tools.sh
|
|
||||||
./configure_td.sh
|
|
||||||
./compile_td.sh
|
|
||||||
./compile_tdjni.sh
|
|
||||||
./build_generated_maven_project.sh
|
|
@ -1,12 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
set -e
|
|
||||||
cd ./scripts/core/
|
|
||||||
./generate_maven_project.sh
|
|
||||||
./generate_td_tools.sh
|
|
||||||
./configure_td.sh
|
|
||||||
./compile_td.sh
|
|
||||||
./compile_tdjni.sh
|
|
||||||
./build_generated_maven_project.sh
|
|
||||||
|
|
||||||
echo "Done."
|
|
||||||
exit 0
|
|
@ -1,16 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
set -e
|
|
||||||
cd ./scripts/core/
|
|
||||||
./generate_td_tools.sh
|
|
||||||
./configure_td.sh
|
|
||||||
|
|
||||||
API_TYPE=legacy ./generate_tdapi_maven_project.sh
|
|
||||||
API_TYPE=legacy ./generate_tdapi_java_file.sh
|
|
||||||
API_TYPE=legacy ./build_generated_tdapi_maven_project.sh
|
|
||||||
|
|
||||||
API_TYPE=sealed ./generate_tdapi_maven_project.sh
|
|
||||||
API_TYPE=sealed ./generate_tdapi_java_file.sh
|
|
||||||
API_TYPE=sealed ./build_generated_tdapi_maven_project.sh
|
|
||||||
|
|
||||||
echo "Done."
|
|
||||||
exit 0
|
|
@ -1,28 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# Check variables correctness
|
|
||||||
if [ -z "${IMPLEMENTATION_NAME}" ]; then
|
|
||||||
echo "Missing parameter: IMPLEMENTATION_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${API_TYPE}" ]; then
|
|
||||||
echo "Missing parameter: API_TYPE"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
cd "./generated-${API_TYPE}/target/apidocs"
|
|
||||||
find . -name '*.html' -exec sed -i -r 's/<\/title>/<\/title>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><style>\n\t#memberSummary_tabpanel{overflow-x: auto;}\n\tli.blockList{overflow-x: auto;}\n\ttd.colLast div{max-width:30vw;}\n\t#search{width: 400px;max-width: 65vw;}\n\t.title,.subTitle,pre,.inheritance,h1,h2,h3,h4,h5,.memberSummary,.memberSignature,.typeSummary,.blockList,.contentContainer{white-space:normal;word-break:break-word;}\n\tul{padding-left:10px}\n<\/style>/' {} \;
|
|
||||||
git init
|
|
||||||
git checkout -b "${IMPLEMENTATION_NAME}-${API_TYPE}"
|
|
||||||
git remote add origin "https://${DOCS_DEPLOY_USERNAME}:${DOCS_DEPLOY_PASSWORD}@git.ignuranza.net/tdlight-team/tdlight-docs"
|
|
||||||
git config user.email "andrea@warp.ovh"
|
|
||||||
git config user.name "Andrea Cavalli"
|
|
||||||
git fetch --all
|
|
||||||
git reset --soft "origin/${IMPLEMENTATION_NAME}-${API_TYPE}" || true
|
|
||||||
git add -A
|
|
||||||
git commit -m "Update javadocs"
|
|
||||||
git push --set-upstream origin "${IMPLEMENTATION_NAME}-${API_TYPE}"
|
|
||||||
|
|
||||||
echo "Done."
|
|
||||||
exit 0
|
|
@ -1,7 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
set -e
|
|
||||||
cd ./scripts/core/
|
|
||||||
./deploy_release.sh
|
|
||||||
|
|
||||||
echo "Done."
|
|
||||||
exit 0
|
|
@ -1,7 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
set -e
|
|
||||||
cd ./scripts/core/
|
|
||||||
./deploy_snapshot.sh
|
|
||||||
|
|
||||||
echo "Done."
|
|
||||||
exit 0
|
|
@ -1,30 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
set -e
|
|
||||||
|
|
||||||
if [[ "$OPERATING_SYSTEM_NAME" == "linux" ]]; then
|
|
||||||
echo "==Linux===="
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install -y make gperf \
|
|
||||||
ccache python3 python3-pip php-cli \
|
|
||||||
build-essential gcc-multilib g++-multilib
|
|
||||||
|
|
||||||
elif [[ "$OPERATING_SYSTEM_NAME" == "osx" ]]; then
|
|
||||||
echo "==OSX======"
|
|
||||||
export PYTHON=36
|
|
||||||
brew install swig;
|
|
||||||
brew install gperf openssl coreutils
|
|
||||||
elif [[ "$OPERATING_SYSTEM_NAME" == "windows" ]]; then
|
|
||||||
echo "==Windows=="
|
|
||||||
#choco install visualstudio2019buildtools --version=16.10.4.0 --allow-downgrade --package-parameters "--passive"
|
|
||||||
#choco install visualstudio2019-workload-vctools
|
|
||||||
choco install base64
|
|
||||||
choco install gperf
|
|
||||||
choco install strawberryperl
|
|
||||||
else
|
|
||||||
echo "Unrecognized os: $OPERATING_SYSTEM_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
cd ./scripts/core/
|
|
||||||
./install-dependencies.sh
|
|
||||||
cd ../../
|
|
@ -1,115 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
set -e
|
|
||||||
|
|
||||||
export MAVEN_OPTS=""
|
|
||||||
|
|
||||||
echo "MATRIX_OS: $GH_MATRIX_OS"
|
|
||||||
echo "MATRIX_ARCH: $GH_MATRIX_ARCH"
|
|
||||||
|
|
||||||
if [ "$GH_MATRIX_OS" == "macos-10.15" ]; then
|
|
||||||
export PCRE="E"
|
|
||||||
else
|
|
||||||
export PCRE="r"
|
|
||||||
fi
|
|
||||||
|
|
||||||
GH_CPU_ARCH=$(echo "$GH_MATRIX_ARCH" | sed -$PCRE 's/^(linux\/|windows\/|macos\/)?(386|amd64|arm64|ppc64le|armhf|s390x)$/\2/g')
|
|
||||||
export GH_CPU_ARCH
|
|
||||||
GH_OS_NAME=$(echo "$GH_MATRIX_OS" | sed -$PCRE 's/^(linux|ubuntu|windows|macos).*$/\1/g')
|
|
||||||
if [[ $GH_OS_NAME == "ubuntu" ]]; then
|
|
||||||
GH_OS_NAME="linux"
|
|
||||||
fi
|
|
||||||
export GH_OS_NAME
|
|
||||||
|
|
||||||
if [[ "$GH_CPU_ARCH" == "arm64" ]]; then
|
|
||||||
export CPU_ARCHITECTURE_NAME="aarch64"
|
|
||||||
elif [[ "$GH_CPU_ARCH" == "armhf" ]]; then
|
|
||||||
export CPU_ARCHITECTURE_NAME="armhf"
|
|
||||||
elif [[ "$GH_CPU_ARCH" == "s390x" ]]; then
|
|
||||||
export CPU_ARCHITECTURE_NAME="s390x"
|
|
||||||
elif [[ "$GH_CPU_ARCH" == "386" ]]; then
|
|
||||||
export CPU_ARCHITECTURE_NAME="386"
|
|
||||||
elif [[ "$GH_CPU_ARCH" == "amd64" ]]; then
|
|
||||||
export CPU_ARCHITECTURE_NAME="amd64"
|
|
||||||
elif [[ "$GH_CPU_ARCH" == "ppc64le" ]]; then
|
|
||||||
export CPU_ARCHITECTURE_NAME="ppc64le"
|
|
||||||
else
|
|
||||||
echo "Unrecognized cpu arch: $GH_CPU_ARCH"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "${CPU_CORES_NUM}" ]; then
|
|
||||||
export CPU_CORES_NUM="4"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$GH_OS_NAME" == "windows" ]]; then
|
|
||||||
export OPERATING_SYSTEM_NAME="windows"
|
|
||||||
export OPERATING_SYSTEM_NAME_SHORT="win"
|
|
||||||
elif [[ "$GH_OS_NAME" == "macos" ]]; then
|
|
||||||
export OPERATING_SYSTEM_NAME="osx"
|
|
||||||
export OPERATING_SYSTEM_NAME_SHORT="osx"
|
|
||||||
elif [[ "$GH_OS_NAME" == "linux" ]]; then
|
|
||||||
export OPERATING_SYSTEM_NAME="linux"
|
|
||||||
export OPERATING_SYSTEM_NAME_SHORT="linux"
|
|
||||||
else
|
|
||||||
echo "Unrecognized os name: $GH_OS_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "====== Setup variables ======"
|
|
||||||
if [[ "$OPERATING_SYSTEM_NAME" != "osx" ]]; then
|
|
||||||
echo "Current root directory:"
|
|
||||||
realpath .
|
|
||||||
fi
|
|
||||||
echo "============================="
|
|
||||||
|
|
||||||
# ====== OS Variables
|
|
||||||
if [[ "$OPERATING_SYSTEM_NAME" == "windows" ]]; then
|
|
||||||
export CMAKE_BUILD_TYPE=MinSizeRel
|
|
||||||
export BUILD_TYPE=MinSizeRel
|
|
||||||
VCPKG_DIR="$(realpath .)/vcpkg"
|
|
||||||
export VCPKG_DIR
|
|
||||||
export CMAKE_EXTRA_ARGUMENTS="-A x64 -DCMAKE_TOOLCHAIN_FILE:FILEPATH=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -DOPENSSL_USE_STATIC_LIBS=ON"
|
|
||||||
export PATH="$PATH:/c/Python3:$PATH:/c/tools/php74:/c/PHP:/c/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.27.29110/bin/Hostx64/x64:/c/Program Files/OpenJDK/openjdk-11.0.8_10/bin:/c/Program Files/CMake/bin:/c/ProgramData/chocolatey/bin:/c/Program Files/apache-maven-3.6.3/bin:/c/ProgramData/chocolatey/lib/maven/apache-maven-3.6.3/bin:/c/ProgramData/chocolatey/lib/base64/tools:/c/Program Files/NASM"
|
|
||||||
export CPU_CORES=" -- -m"
|
|
||||||
elif [[ "$OPERATING_SYSTEM_NAME" == "osx" ]]; then
|
|
||||||
export BUILD_TYPE=MinSizeRel
|
|
||||||
export CMAKE_EXTRA_ARGUMENTS="-DOPENSSL_ROOT_DIR=/usr/local/opt/openssl/"
|
|
||||||
export CPU_CORES=" -- -j${CPU_CORES_NUM}"
|
|
||||||
elif [[ "$OPERATING_SYSTEM_NAME" == "linux" ]]; then
|
|
||||||
export BUILD_TYPE=MinSizeRel
|
|
||||||
|
|
||||||
export CPU_CORES=" -- -j${CPU_CORES_NUM}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
cd ./scripts/core/
|
|
||||||
source ./setup-variables.sh
|
|
||||||
cd ../../
|
|
||||||
|
|
||||||
# ====== Print variables
|
|
||||||
echo "REVISION=${REVISION}"
|
|
||||||
echo "BUILD_TYPE=${BUILD_TYPE}"
|
|
||||||
echo "TD_SRC_DIR=${TD_SRC_DIR}"
|
|
||||||
echo "TD_BIN_DIR=${TD_BIN_DIR}"
|
|
||||||
echo "TDNATIVES_BIN_DIR=${TDNATIVES_BIN_DIR}"
|
|
||||||
echo "TDNATIVES_CPP_SRC_DIR=${TDNATIVES_CPP_SRC_DIR}"
|
|
||||||
echo "TDNATIVES_DOCS_BIN_DIR=${TDNATIVES_DOCS_BIN_DIR}"
|
|
||||||
echo "TD_BUILD_DIR=${TD_BUILD_DIR}"
|
|
||||||
echo "TDNATIVES_CPP_BUILD_DIR=${TDNATIVES_CPP_BUILD_DIR}"
|
|
||||||
echo "JAVA_SRC_DIR=${JAVA_SRC_DIR}"
|
|
||||||
echo "TDLIB_SERIALIZER_DIR=${TDLIB_SERIALIZER_DIR}"
|
|
||||||
echo "PATH=${PATH}"
|
|
||||||
echo "JAVA_HOME=${JAVA_HOME}"
|
|
||||||
echo "JAVA_INCLUDE_PATH=${JAVA_INCLUDE_PATH}"
|
|
||||||
echo "CMAKE_EXTRA_ARGUMENTS=${CMAKE_EXTRA_ARGUMENTS}"
|
|
||||||
echo "VCPKG_DIR=${VCPKG_DIR}"
|
|
||||||
echo "MAVEN_OPTS=${MAVEN_OPTS}"
|
|
||||||
echo "GH_CPU_ARCH=${GH_CPU_ARCH}"
|
|
||||||
echo "CPU_ARCHITECTURE_NAME=${CPU_ARCHITECTURE_NAME}"
|
|
||||||
echo "CPU_CORES_NUM=${CPU_CORES_NUM}"
|
|
||||||
echo "CPU_CORES=${CPU_CORES}"
|
|
||||||
echo "GH_OS_NAME=${GH_OS_NAME}"
|
|
||||||
echo "GH_MATRIX_ARCH=${GH_MATRIX_ARCH}"
|
|
||||||
echo "OPERATING_SYSTEM_NAME=${OPERATING_SYSTEM_NAME}"
|
|
||||||
echo "OPERATING_SYSTEM_NAME_SHORT=${OPERATING_SYSTEM_NAME_SHORT}"
|
|
||||||
echo "SRC_TDJNI_LIBNAME=${SRC_TDJNI_LIBNAME}"
|
|
||||||
echo "DEST_TDJNI_LIBNAME=${DEST_TDJNI_LIBNAME}"
|
|
@ -1,8 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
cd ../../generated
|
|
||||||
|
|
||||||
[ -f ./src/main/java/it/tdlight/jni/TdApi.java ] && rm ./src/main/java/it/tdlight/jni/TdApi.java
|
|
||||||
mvn -B clean install
|
|
||||||
|
|
||||||
echo "Done."
|
|
||||||
exit 0
|
|
@ -1,21 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
# MAIN REQUIRED ENVIRONMENT VARIABLES:
|
|
||||||
# API_TYPE = <legacy | sealed>
|
|
||||||
|
|
||||||
# Check variables correctness
|
|
||||||
if [ -z "${API_TYPE}" ]; then
|
|
||||||
echo "Missing parameter: API_TYPE"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Print details
|
|
||||||
echo "Building TdApi package..."
|
|
||||||
echo "Current directory: $(pwd)"
|
|
||||||
echo "API type: ${API_TYPE}"
|
|
||||||
|
|
||||||
cd ../../generated-"$API_TYPE"
|
|
||||||
|
|
||||||
mvn -B "-D${API_TYPE}" clean install
|
|
||||||
|
|
||||||
echo "Done."
|
|
||||||
exit 0
|
|
@ -1,8 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
|
|
||||||
cd ../../
|
|
||||||
|
|
||||||
rm -r generated
|
|
||||||
|
|
||||||
echo "Done."
|
|
||||||
exit 0
|
|
@ -1,63 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
# MAIN REQUIRED ENVIRONMENT VARIABLES:
|
|
||||||
# OPERATING_SYSTEM_NAME = <windows | linux | osx>
|
|
||||||
# CPU_ARCHITECTURE_NAME = <amd64 | aarch64 | 386 | s390x | armhf | ppc64le>
|
|
||||||
# IMPLEMENTATION_NAME = <tdlib | tdlight>
|
|
||||||
# BUILD_TYPE = <Debug | Release | RelWithDebInfo | MinSizeRel>
|
|
||||||
# CPU_CORES = "-- -j<cores>" or "-m" on Windows
|
|
||||||
# OTHER REQUIRED ENVIRONMENT VARIABLES:
|
|
||||||
# CMAKE_EXTRA_ARGUMENTS = <args>
|
|
||||||
|
|
||||||
# Check variables correctness
|
|
||||||
if [ -z "${OPERATING_SYSTEM_NAME}" ]; then
|
|
||||||
echo "Missing parameter: OPERATING_SYSTEM_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${CPU_ARCHITECTURE_NAME}" ]; then
|
|
||||||
echo "Missing parameter: CPU_ARCHITECTURE_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${IMPLEMENTATION_NAME}" ]; then
|
|
||||||
echo "Missing parameter: IMPLEMENTATION_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${BUILD_TYPE}" ]; then
|
|
||||||
echo "Missing parameter: BUILD_TYPE"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${CPU_CORES}" ]; then
|
|
||||||
echo "Missing parameter: CPU_CORES"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
source ./setup-variables.sh
|
|
||||||
|
|
||||||
cd ../../
|
|
||||||
|
|
||||||
# Print details
|
|
||||||
echo "Compiling td..."
|
|
||||||
echo "Current directory: $(pwd)"
|
|
||||||
echo "Operating system: ${OPERATING_SYSTEM_NAME}"
|
|
||||||
echo "Architecture: ${CPU_ARCHITECTURE_NAME}"
|
|
||||||
echo "Td implementation: ${IMPLEMENTATION_NAME}"
|
|
||||||
echo "Build type: ${BUILD_TYPE}"
|
|
||||||
echo "CPU cores count: ${CPU_CORES}"
|
|
||||||
echo "CMake extra arguments: '${CMAKE_EXTRA_ARGUMENTS}'"
|
|
||||||
|
|
||||||
# Delete old data
|
|
||||||
echo "Deleting old data..."
|
|
||||||
[ -d ./generated/td_bin/ ] && rm -r ./generated/td_bin/
|
|
||||||
|
|
||||||
# Create missing folders
|
|
||||||
echo "Creating missing folders..."
|
|
||||||
[ -d ./generated/td_bin/ ] || mkdir ./generated/td_bin/
|
|
||||||
|
|
||||||
|
|
||||||
# Build
|
|
||||||
echo "Compiling ${IMPLEMENTATION_NAME} td..."
|
|
||||||
cd ./generated/td_build/
|
|
||||||
cmake --build . --target install --config "${BUILD_TYPE}" ${CPU_CORES}
|
|
||||||
|
|
||||||
|
|
||||||
echo "Done."
|
|
||||||
exit 0
|
|
@ -1,132 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
# MAIN REQUIRED ENVIRONMENT VARIABLES:
|
|
||||||
# OPERATING_SYSTEM_NAME = <windows | linux | osx>
|
|
||||||
# OPERATING_SYSTEM_NAME_SHORT = <win | linux | osx>
|
|
||||||
# CPU_ARCHITECTURE_NAME = <amd64 | aarch64 | 386 | s390x | armhf | ppc64le>
|
|
||||||
# IMPLEMENTATION_NAME = <tdlib | tdlight>
|
|
||||||
# BUILD_TYPE = <Debug | Release | RelWithDebInfo | MinSizeRel>
|
|
||||||
# CPU_CORES = "-- -j<cores>" or "-m" on Windows
|
|
||||||
# OTHER REQUIRED ENVIRONMENT VARIABLES:
|
|
||||||
# CMAKE_EXTRA_ARGUMENTS = <args>
|
|
||||||
# OPTIONAL ENVIRONMENT VARIABLES:
|
|
||||||
# CROSS_BUILD_DEPS_DIR = <args>
|
|
||||||
|
|
||||||
# Check variables correctness
|
|
||||||
if [ -z "${OPERATING_SYSTEM_NAME}" ]; then
|
|
||||||
echo "Missing parameter: OPERATING_SYSTEM_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${OPERATING_SYSTEM_NAME_SHORT}" ]; then
|
|
||||||
echo "Missing parameter: OPERATING_SYSTEM_NAME_SHORT"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${CPU_ARCHITECTURE_NAME}" ]; then
|
|
||||||
echo "Missing parameter: CPU_ARCHITECTURE_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${IMPLEMENTATION_NAME}" ]; then
|
|
||||||
echo "Missing parameter: IMPLEMENTATION_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${BUILD_TYPE}" ]; then
|
|
||||||
echo "Missing parameter: BUILD_TYPE"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${CPU_CORES}" ]; then
|
|
||||||
echo "Missing parameter: CPU_CORES"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
source ./setup-variables.sh
|
|
||||||
|
|
||||||
cd ../../
|
|
||||||
JAVA_API_PACKAGE_PATH="it/tdlight/jni"
|
|
||||||
JAVA_LIB_PACKAGE_PATH="it/tdlight/tdnative"
|
|
||||||
|
|
||||||
# Print details
|
|
||||||
echo "Compiling tdjni..."
|
|
||||||
echo "Current directory: $(pwd)"
|
|
||||||
echo "Operating system: ${OPERATING_SYSTEM_NAME}"
|
|
||||||
echo "Architecture: ${CPU_ARCHITECTURE_NAME}"
|
|
||||||
echo "Td implementation: ${IMPLEMENTATION_NAME}"
|
|
||||||
echo "Build type: ${BUILD_TYPE}"
|
|
||||||
echo "CPU cores count: ${CPU_CORES}"
|
|
||||||
echo "CMake extra arguments: '${CMAKE_EXTRA_ARGUMENTS}'"
|
|
||||||
echo "JAVA_API_PACKAGE_PATH: '${JAVA_API_PACKAGE_PATH}'"
|
|
||||||
echo "JAVA_LIB_PACKAGE_PATH: '${JAVA_LIB_PACKAGE_PATH}'"
|
|
||||||
|
|
||||||
# Delete old data
|
|
||||||
echo "Deleting old data..."
|
|
||||||
[ -d ./generated/tdjni_build/ ] && rm -r ./generated/tdjni_build/
|
|
||||||
[ -d ./generated/tdjni_bin/ ] && rm -r ./generated/tdjni_bin/
|
|
||||||
[ -d ./generated/tdjni_docs/ ] && rm -r ./generated/tdjni_docs/
|
|
||||||
[ -d ./generated/src/main/jni-cpp-src/ ] && rm -r ./generated/src/main/jni-cpp-src/
|
|
||||||
[ -d ./generated/src/main/jni-java-src/ ] && rm -r ./generated/src/main/jni-java-src/
|
|
||||||
|
|
||||||
# Create missing folders
|
|
||||||
echo "Creating missing folders..."
|
|
||||||
[ -d ./generated/tdjni_build/ ] || mkdir ./generated/tdjni_build/
|
|
||||||
[ -d ./generated/tdjni_bin/ ] || mkdir ./generated/tdjni_bin/
|
|
||||||
[ -d ./generated/tdjni_docs/ ] || mkdir ./generated/tdjni_docs/
|
|
||||||
|
|
||||||
# Copy source files
|
|
||||||
echo "Copying source files..."
|
|
||||||
cp -r ./src/main/jni-cpp-src/common/. ./generated/src/main/jni-cpp-src
|
|
||||||
cp -r ./src/main/jni-cpp-src/${IMPLEMENTATION_NAME}/. ./generated/src/main/jni-cpp-src
|
|
||||||
cp -r ./src/main/jni-java-src ./generated/src/main/jni-java-src
|
|
||||||
|
|
||||||
# Create missing jni-src folders
|
|
||||||
echo "Creating missing jni-src folders..."
|
|
||||||
[ -d ./generated/src/main/jni-java-src/${JAVA_API_PACKAGE_PATH} ] || mkdir -p ./generated/src/main/jni-java-src/${JAVA_API_PACKAGE_PATH}
|
|
||||||
|
|
||||||
# Copy executables
|
|
||||||
echo "Copying executables..."
|
|
||||||
if [[ "$OPERATING_SYSTEM_NAME" == "windows" ]]; then
|
|
||||||
TD_GENERATED_BINARIES_DIR=$(realpath -m ./generated/td_tools/td/generate/Release)
|
|
||||||
else
|
|
||||||
TD_GENERATED_BINARIES_DIR=$(realpath -m ./generated/td_tools/td/generate)
|
|
||||||
fi
|
|
||||||
export TD_GENERATED_BINARIES_DIR
|
|
||||||
|
|
||||||
# Configure cmake
|
|
||||||
echo "Configuring CMake..."
|
|
||||||
cd ./generated/tdjni_build/
|
|
||||||
|
|
||||||
CMAKE_EXTRA_ARGUMENTS_TDJNI=""
|
|
||||||
if [[ -n "$CROSS_BUILD_DEPS_DIR" ]]; then
|
|
||||||
# shellcheck disable=SC2089
|
|
||||||
CMAKE_EXTRA_ARGUMENTS_TDJNI="${CMAKE_EXTRA_ARGUMENTS_TDJNI} -DCMAKE_TOOLCHAIN_FILE=${CROSS_BUILD_DEPS_DIR}/toolchain.cmake"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# shellcheck disable=SC2086
|
|
||||||
cmake \
|
|
||||||
"-DCMAKE_BUILD_TYPE=${BUILD_TYPE}" \
|
|
||||||
-DTD_GENERATED_BINARIES_DIR=${TD_GENERATED_BINARIES_DIR} \
|
|
||||||
"-DTD_SRC_DIR=$(realpath -m ../implementation/)" \
|
|
||||||
"-DTDNATIVES_BIN_DIR=$(realpath -m ../tdjni_bin/)" \
|
|
||||||
"-DTDNATIVES_DOCS_BIN_DIR=$(realpath -m ../tdjni_docs/)" \
|
|
||||||
"-DTd_DIR=$(realpath -m ../td_bin/lib/cmake/Td/)" \
|
|
||||||
"-DJAVA_SRC_DIR=$(realpath -m ../src/main/jni-java-src/)" \
|
|
||||||
"-DTDNATIVES_CPP_SRC_DIR:PATH=$(realpath -m ../src/main/jni-cpp-src/)" \
|
|
||||||
${CMAKE_EXTRA_ARGUMENTS_TDJNI} \
|
|
||||||
${CMAKE_EXTRA_ARGUMENTS} \
|
|
||||||
"$(realpath -m ../src/main/jni-cpp-src/)"
|
|
||||||
|
|
||||||
# Build
|
|
||||||
echo "Compiling ${IMPLEMENTATION_NAME} jni..."
|
|
||||||
cmake --build . --target install --config "${BUILD_TYPE}" ${CPU_CORES}
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
# Copy to resources
|
|
||||||
echo "Copying to resources..."
|
|
||||||
[ -d ./src/main/resources/libs/${OPERATING_SYSTEM_NAME_SHORT}/${CPU_ARCHITECTURE_NAME}/ ] || mkdir -p ./src/main/resources/libs/${OPERATING_SYSTEM_NAME_SHORT}/${CPU_ARCHITECTURE_NAME}/
|
|
||||||
if [[ "$OPERATING_SYSTEM_NAME" == "windows" ]]; then
|
|
||||||
cp ./tdjni_bin/tdjni.dll ./src/main/resources/libs/${OPERATING_SYSTEM_NAME_SHORT}/${CPU_ARCHITECTURE_NAME}/tdjni.dll
|
|
||||||
elif [[ "$OPERATING_SYSTEM_NAME" == "osx" ]]; then
|
|
||||||
cp ./tdjni_bin/libtdjni.dylib ./src/main/resources/libs/${OPERATING_SYSTEM_NAME_SHORT}/${CPU_ARCHITECTURE_NAME}/tdjni.dylib
|
|
||||||
elif [[ "$OPERATING_SYSTEM_NAME" == "linux" ]]; then
|
|
||||||
cp ./tdjni_bin/libtdjni.so ./src/main/resources/libs/${OPERATING_SYSTEM_NAME_SHORT}/${CPU_ARCHITECTURE_NAME}/tdjni.so
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Done."
|
|
||||||
exit 0
|
|
@ -1,87 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
# MAIN REQUIRED ENVIRONMENT VARIABLES:
|
|
||||||
# OPERATING_SYSTEM_NAME = <windows | linux | osx>
|
|
||||||
# CPU_ARCHITECTURE_NAME = <amd64 | aarch64 | 386 | s390x | armhf | ppc64le>
|
|
||||||
# IMPLEMENTATION_NAME = <tdlib | tdlight>
|
|
||||||
# BUILD_TYPE = <Debug | Release | RelWithDebInfo | MinSizeRel>
|
|
||||||
# CPU_CORES = "-- -j<cores>" or "-m" on Windows
|
|
||||||
# OTHER REQUIRED ENVIRONMENT VARIABLES:
|
|
||||||
# CMAKE_EXTRA_ARGUMENTS = <args>
|
|
||||||
|
|
||||||
# Check variables correctness
|
|
||||||
if [ -z "${OPERATING_SYSTEM_NAME}" ]; then
|
|
||||||
echo "Missing parameter: OPERATING_SYSTEM_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${CPU_ARCHITECTURE_NAME}" ]; then
|
|
||||||
echo "Missing parameter: CPU_ARCHITECTURE_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${IMPLEMENTATION_NAME}" ]; then
|
|
||||||
echo "Missing parameter: IMPLEMENTATION_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${BUILD_TYPE}" ]; then
|
|
||||||
echo "Missing parameter: BUILD_TYPE"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${CPU_CORES}" ]; then
|
|
||||||
echo "Missing parameter: CPU_CORES"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
source ./setup-variables.sh
|
|
||||||
|
|
||||||
cd ../../
|
|
||||||
|
|
||||||
# Print details
|
|
||||||
echo "Configuring td..."
|
|
||||||
echo "Current directory: $(pwd)"
|
|
||||||
echo "Operating system: ${OPERATING_SYSTEM_NAME}"
|
|
||||||
echo "Architecture: ${CPU_ARCHITECTURE_NAME}"
|
|
||||||
echo "Td implementation: ${IMPLEMENTATION_NAME}"
|
|
||||||
echo "Build type: ${BUILD_TYPE}"
|
|
||||||
echo "CPU cores count: ${CPU_CORES}"
|
|
||||||
echo "CMake extra arguments: '${CMAKE_EXTRA_ARGUMENTS}'"
|
|
||||||
|
|
||||||
# Delete old data
|
|
||||||
echo "Deleting old data..."
|
|
||||||
[ -d ./generated/td_build/ ] && rm -r ./generated/td_build/
|
|
||||||
|
|
||||||
# Create missing folders
|
|
||||||
echo "Creating missing folders..."
|
|
||||||
[ -d ./generated/td_build/ ] || mkdir ./generated/td_build/
|
|
||||||
|
|
||||||
# Configure cmake
|
|
||||||
echo "Configuring CMake..."
|
|
||||||
cd ./generated/td_build/
|
|
||||||
|
|
||||||
if [[ "$IMPLEMENTATION_NAME" = "tdlight" ]]; then
|
|
||||||
CMAKE_EXTRA_ARGUMENTS_TD="-DTD_SKIP_BENCHMARK=ON -DTD_SKIP_TEST=ON -DTD_SKIP_TG_CLI=ON"
|
|
||||||
else
|
|
||||||
CMAKE_EXTRA_ARGUMENTS_TD=""
|
|
||||||
fi
|
|
||||||
if [[ "$OPERATING_SYSTEM_NAME" == "linux" ]]; then
|
|
||||||
CMAKE_EXTRA_ARGUMENTS_TD="${CMAKE_EXTRA_ARGUMENTS_TD} -DTD_ENABLE_LTO=ON"
|
|
||||||
fi
|
|
||||||
if [[ -n "$CROSS_BUILD_DEPS_DIR" ]]; then
|
|
||||||
# shellcheck disable=SC2089
|
|
||||||
CMAKE_EXTRA_ARGUMENTS_TD="${CMAKE_EXTRA_ARGUMENTS_TD} -DCMAKE_TOOLCHAIN_FILE=${CROSS_BUILD_DEPS_DIR}/toolchain.cmake"
|
|
||||||
fi
|
|
||||||
export CMAKE_EXTRA_ARGUMENTS_TD
|
|
||||||
|
|
||||||
INSTALL_PREFIX="$(realpath -m ../td_bin/)"
|
|
||||||
INSTALL_BINDIR="$(realpath -m ../td_bin/bin)"
|
|
||||||
echo "Install prefix: $INSTALL_PREFIX"
|
|
||||||
echo "Install bindir: $INSTALL_BINDIR"
|
|
||||||
# shellcheck disable=SC2086
|
|
||||||
cmake "-DCMAKE_BUILD_TYPE=${BUILD_TYPE}" \
|
|
||||||
-DCMAKE_INSTALL_PREFIX:PATH="$INSTALL_PREFIX" \
|
|
||||||
-DCMAKE_INSTALL_BINDIR:PATH="$INSTALL_BINDIR" \
|
|
||||||
-DTD_ENABLE_JNI=ON \
|
|
||||||
${CMAKE_EXTRA_ARGUMENTS_TD} \
|
|
||||||
${CMAKE_EXTRA_ARGUMENTS} \
|
|
||||||
../implementation
|
|
||||||
|
|
||||||
echo "Done."
|
|
||||||
exit 0
|
|
@ -1,28 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
# OTHER REQUIRED ENVIRONMENT VARIABLES:
|
|
||||||
# REVISION = <revision>
|
|
||||||
# OTHER ENVIRONMENT VARIABLES:
|
|
||||||
# API_TYPE = <legacy|sealed>
|
|
||||||
|
|
||||||
# Check variables correctness
|
|
||||||
if [ -z "${REVISION}" ]; then
|
|
||||||
echo "Missing parameter: REVISION"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
source ./setup-variables.sh
|
|
||||||
FALLBACK_API_TYPE="sealed"
|
|
||||||
SAFE_VERSION_NAME="v4_0_${REVISION}"
|
|
||||||
REVISION_SUFFIX=""
|
|
||||||
REVISION_MVN="4.0.${REVISION}${REVISION_SUFFIX}"
|
|
||||||
|
|
||||||
if [ -z "${API_TYPE}" ]; then
|
|
||||||
cd ../../generated
|
|
||||||
else
|
|
||||||
cd "../../generated-${API_TYPE}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
mvn -B -Drevision="${REVISION_MVN}" -DsafeVersionName="${SAFE_VERSION_NAME}" "-D${API_TYPE:-${FALLBACK_API_TYPE}}" clean deploy
|
|
||||||
|
|
||||||
echo "Done."
|
|
||||||
exit 0
|
|
@ -1,19 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
# OTHER ENVIRONMENT VARIABLES:
|
|
||||||
# API_TYPE = <legacy|sealed>
|
|
||||||
|
|
||||||
if [ -z "${API_TYPE}" ]; then
|
|
||||||
cd ../../generated
|
|
||||||
else
|
|
||||||
cd "../../generated-${API_TYPE}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
FALLBACK_API_TYPE="sealed"
|
|
||||||
SAFE_VERSION_NAME="v4_0_0"
|
|
||||||
REVISION_SUFFIX="-SNAPSHOT"
|
|
||||||
REVISION_MVN="4.0.0${REVISION_SUFFIX}"
|
|
||||||
|
|
||||||
mvn -B -Drevision="${REVISION_MVN}" -DsafeVersionName="${SAFE_VERSION_NAME}" "-D${API_TYPE:-${FALLBACK_API_TYPE}}" deploy
|
|
||||||
|
|
||||||
echo "Done."
|
|
||||||
exit 0
|
|
@ -1,54 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
# MAIN REQUIRED ENVIRONMENT VARIABLES:
|
|
||||||
# OPERATING_SYSTEM_NAME = <windows | linux | osx>
|
|
||||||
# CPU_ARCHITECTURE_NAME = <amd64 | aarch64 | 386 | s390x | armhf | ppc64le>
|
|
||||||
# IMPLEMENTATION_NAME = <tdlib | tdlight>
|
|
||||||
|
|
||||||
# Check variables correctness
|
|
||||||
if [ -z "${OPERATING_SYSTEM_NAME}" ]; then
|
|
||||||
echo "Missing parameter: OPERATING_SYSTEM_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${CPU_ARCHITECTURE_NAME}" ]; then
|
|
||||||
echo "Missing parameter: CPU_ARCHITECTURE_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${IMPLEMENTATION_NAME}" ]; then
|
|
||||||
echo "Missing parameter: IMPLEMENTATION_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
source ./setup-variables.sh
|
|
||||||
|
|
||||||
cd ../../
|
|
||||||
|
|
||||||
# Print details
|
|
||||||
echo "Generating maven project..."
|
|
||||||
echo "Current directory: $(pwd)"
|
|
||||||
echo "Operating system: ${OPERATING_SYSTEM_NAME}"
|
|
||||||
echo "Architecture: ${CPU_ARCHITECTURE_NAME}"
|
|
||||||
echo "Td implementation: ${IMPLEMENTATION_NAME}"
|
|
||||||
|
|
||||||
# Delete old data
|
|
||||||
echo "Deleting old data..."
|
|
||||||
[ -d ./generated/ ] && rm -r ./generated/
|
|
||||||
|
|
||||||
# Create missing folders
|
|
||||||
echo "Creating missing folders..."
|
|
||||||
[ -d ./generated/ ] || mkdir ./generated/
|
|
||||||
[ -d ./src/main/java/ ] || mkdir -p ./src/main/java/
|
|
||||||
[ -d ./src/main/resources/ ] || mkdir -p ./src/main/resources/
|
|
||||||
[ -d ./generated/src/main/ ] || mkdir -p ./generated/src/main/
|
|
||||||
[ -d ./generated/src/main/ ] || mkdir -p ./generated/src/main/
|
|
||||||
|
|
||||||
# Generate pom.xml
|
|
||||||
echo "Generating pom.xml..."
|
|
||||||
sed -f "src/main/replacements/replace-${OPERATING_SYSTEM_NAME}-${CPU_ARCHITECTURE_NAME}-${IMPLEMENTATION_NAME}-sealed.sed" src/main/jni-project-src/pom.template.xml > generated/pom.xml
|
|
||||||
|
|
||||||
# Copy source files
|
|
||||||
echo "Copying source files..."
|
|
||||||
cp -r ./src/main/java ./generated/src/main/java
|
|
||||||
cp -r ./src/main/resources ./generated/src/main/resources
|
|
||||||
|
|
||||||
echo "Done."
|
|
||||||
exit 0
|
|
@ -1,106 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
# MAIN REQUIRED ENVIRONMENT VARIABLES:
|
|
||||||
# OPERATING_SYSTEM_NAME = <windows | linux | osx>
|
|
||||||
# CPU_ARCHITECTURE_NAME = <amd64 | aarch64 | 386 | s390x | armhf | ppc64le>
|
|
||||||
# IMPLEMENTATION_NAME = <tdlib | tdlight>
|
|
||||||
# CPU_CORES = "-- -j<cores>" or "-m" on Windows
|
|
||||||
# OTHER REQUIRED ENVIRONMENT VARIABLES:
|
|
||||||
# CMAKE_EXTRA_ARGUMENTS = <args>
|
|
||||||
|
|
||||||
# Check variables correctness
|
|
||||||
if [ -z "${OPERATING_SYSTEM_NAME}" ]; then
|
|
||||||
echo "Missing parameter: OPERATING_SYSTEM_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${CPU_ARCHITECTURE_NAME}" ]; then
|
|
||||||
echo "Missing parameter: CPU_ARCHITECTURE_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${IMPLEMENTATION_NAME}" ]; then
|
|
||||||
echo "Missing parameter: IMPLEMENTATION_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${CPU_CORES}" ]; then
|
|
||||||
echo "Missing parameter: CPU_CORES"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
source ./setup-variables.sh
|
|
||||||
|
|
||||||
cd ../../
|
|
||||||
|
|
||||||
# Print details
|
|
||||||
echo "Generating td tools..."
|
|
||||||
echo "Current directory: $(pwd)"
|
|
||||||
echo "Operating system: ${OPERATING_SYSTEM_NAME}"
|
|
||||||
echo "Architecture: ${CPU_ARCHITECTURE_NAME}"
|
|
||||||
echo "Td implementation: ${IMPLEMENTATION_NAME}"
|
|
||||||
echo "CPU cores count: ${CPU_CORES}"
|
|
||||||
echo "CMake extra arguments: '${CMAKE_EXTRA_ARGUMENTS}'"
|
|
||||||
|
|
||||||
# Delete old data
|
|
||||||
echo "Deleting old data..."
|
|
||||||
[ -d ./generated/implementation/ ] && rm -r ./generated/implementation/
|
|
||||||
[ -d ./generated/td_tools/ ] && rm -r ./generated/td_tools/
|
|
||||||
|
|
||||||
# Create missing folders
|
|
||||||
echo "Creating missing folders..."
|
|
||||||
[ -d "./generated" ] || mkdir "./generated"
|
|
||||||
|
|
||||||
# Copy implementation files
|
|
||||||
echo "Copying implementation files..."
|
|
||||||
cp -r implementations/${IMPLEMENTATION_NAME} ./generated/implementation
|
|
||||||
|
|
||||||
# Patch implementation files (sed replacements)
|
|
||||||
echo "Patching implementation files using sed replacements..."
|
|
||||||
#Fix bug: https://github.com/tdlib/td/issues/1238
|
|
||||||
if [[ "$IMPLEMENTATION_NAME" = "tdlib" ]]; then
|
|
||||||
if [[ "$OPERATING_SYSTEM_NAME" = "osx" ]]; then
|
|
||||||
sed -f "src/main/replacements/fix-tdlib-tdutils-windows-cmake.sed" -i "" ./generated/implementation/tdutils/CMakeLists.txt
|
|
||||||
else
|
|
||||||
sed -f "src/main/replacements/fix-tdlib-tdutils-windows-cmake.sed" -i"" ./generated/implementation/tdutils/CMakeLists.txt
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Patch implementation files (git patches)
|
|
||||||
echo "Patching implementation files using git patches..."
|
|
||||||
if [[ "$IMPLEMENTATION_NAME" = "tdlib" ]]; then
|
|
||||||
if [[ -d "src/main/patches/tdlib" && "$(ls -A src/main/patches/tdlib)" ]]; then
|
|
||||||
git apply --directory="generated/implementation" src/main/patches/tdlib/*.patch
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [[ "$IMPLEMENTATION_NAME" = "tdlight" ]]; then
|
|
||||||
if [[ -d "src/main/patches/tdlight" && "$(ls -A src/main/patches/tdlight)" ]]; then
|
|
||||||
git apply --directory="generated/implementation" src/main/patches/tdlight/*.patch
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Configure cmake
|
|
||||||
echo "Configuring CMake..."
|
|
||||||
mkdir ./generated/td_tools/
|
|
||||||
cd ./generated/td_tools/
|
|
||||||
cmake -DCMAKE_BUILD_TYPE=Release -DTD_ENABLE_JNI=ON ${CMAKE_EXTRA_ARGUMENTS} ../implementation/
|
|
||||||
|
|
||||||
# Run cmake to generate common tools
|
|
||||||
echo "Generating cross compilation tools..."
|
|
||||||
cmake --build . --target prepare_cross_compiling --config Release ${CPU_CORES}
|
|
||||||
|
|
||||||
# Run cmake to generate java tools
|
|
||||||
echo "Generating java tools..."
|
|
||||||
cmake --build . --target td_generate_java_api --config Release ${CPU_CORES}
|
|
||||||
|
|
||||||
# Copy tlo files
|
|
||||||
echo "Copying *.tlo files..."
|
|
||||||
cp -r ../implementation/td/generate/auto/tlo/. ../implementation/td/generate/scheme/.
|
|
||||||
|
|
||||||
|
|
||||||
echo "Generated executable '$(realpath -m ./td/generate/generate_common)'"
|
|
||||||
echo "Generated executable '$(realpath -m ./td/generate/td_generate_java_api)'"
|
|
||||||
echo "Generated executable '$(realpath -m ./td/generate/td_generate_json)'"
|
|
||||||
echo "Generated executable '$(realpath -m ../implementation/td/generate/JavadocTlDocumentationGenerator.php)'"
|
|
||||||
echo "Generated executable '$(realpath -m ../implementation/td/generate/TlDocumentationGenerator.php)'"
|
|
||||||
echo "Generated executable '$(realpath -m ../implementation/td/generate/scheme/td_api.tl)'"
|
|
||||||
echo "Generated executable '$(realpath -m ../implementation/td/generate/scheme/td_api.tlo)'"
|
|
||||||
|
|
||||||
echo "Done."
|
|
||||||
exit 0
|
|
@ -1,120 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
# MAIN REQUIRED ENVIRONMENT VARIABLES:
|
|
||||||
# OPERATING_SYSTEM_NAME = <windows | linux | osx>
|
|
||||||
# CPU_ARCHITECTURE_NAME = <amd64 | aarch64 | 386 | s390x | armhf | ppc64le>
|
|
||||||
# IMPLEMENTATION_NAME = <tdlib | tdlight>
|
|
||||||
# API_TYPE = <legacy | sealed>
|
|
||||||
# CPU_CORES = "-- -j<cores>" or "-m" on Windows
|
|
||||||
# OTHER REQUIRED ENVIRONMENT VARIABLES:
|
|
||||||
# CMAKE_EXTRA_ARGUMENTS = <args>
|
|
||||||
|
|
||||||
# Check variables correctness
|
|
||||||
if [ -z "${OPERATING_SYSTEM_NAME}" ]; then
|
|
||||||
echo "Missing parameter: OPERATING_SYSTEM_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${CPU_ARCHITECTURE_NAME}" ]; then
|
|
||||||
echo "Missing parameter: CPU_ARCHITECTURE_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${IMPLEMENTATION_NAME}" ]; then
|
|
||||||
echo "Missing parameter: IMPLEMENTATION_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${API_TYPE}" ]; then
|
|
||||||
echo "Missing parameter: API_TYPE"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${CPU_CORES}" ]; then
|
|
||||||
echo "Missing parameter: CPU_CORES"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
source ./setup-variables.sh
|
|
||||||
|
|
||||||
if [[ "$API_TYPE" == "sealed" ]]; then
|
|
||||||
MIN_JDK_VERSION="17"
|
|
||||||
SEALED="true"
|
|
||||||
else
|
|
||||||
MIN_JDK_VERSION="8"
|
|
||||||
SEALED="false"
|
|
||||||
fi
|
|
||||||
|
|
||||||
cd ../../
|
|
||||||
JAVA_API_PACKAGE_PATH="it/tdlight/jni"
|
|
||||||
JAVA_LIB_PACKAGE_PATH="it/tdlight/tdnative"
|
|
||||||
|
|
||||||
# Print details
|
|
||||||
echo "Generating TdApi.java..."
|
|
||||||
echo "Current directory: $(pwd)"
|
|
||||||
echo "Operating system: ${OPERATING_SYSTEM_NAME}"
|
|
||||||
echo "Architecture: ${CPU_ARCHITECTURE_NAME}"
|
|
||||||
echo "Td implementation: ${IMPLEMENTATION_NAME}"
|
|
||||||
echo "API type: ${API_TYPE}"
|
|
||||||
echo "Min jdk version: ${MIN_JDK_VERSION}"
|
|
||||||
echo "Sealed: ${SEALED}"
|
|
||||||
echo "CPU cores count: ${CPU_CORES}"
|
|
||||||
echo "CMake extra arguments: '${CMAKE_EXTRA_ARGUMENTS}'"
|
|
||||||
echo "JAVA_API_PACKAGE_PATH: '${JAVA_API_PACKAGE_PATH}'"
|
|
||||||
echo "JAVA_LIB_PACKAGE_PATH: '${JAVA_LIB_PACKAGE_PATH}'"
|
|
||||||
|
|
||||||
# Setup constants
|
|
||||||
if [[ "$OPERATING_SYSTEM_NAME" == "windows" ]]; then
|
|
||||||
export PYTHON_EXECUTABLE="python"
|
|
||||||
else
|
|
||||||
export PYTHON_EXECUTABLE="python3"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Delete old data
|
|
||||||
echo "Deleting old data..."
|
|
||||||
[ -d ./generated-"$API_TYPE"/tdjni_build/ ] && rm -r ./generated-"$API_TYPE"/tdjni_build/
|
|
||||||
[ -d ./generated-"$API_TYPE"/tdjni_bin/ ] && rm -r ./generated-"$API_TYPE"/tdjni_bin/
|
|
||||||
[ -d ./generated-"$API_TYPE"/tdjni_docs/ ] && rm -r ./generated-"$API_TYPE"/tdjni_docs/
|
|
||||||
[ -f ./generated-"$API_TYPE"/src/main/java17/${JAVA_API_PACKAGE_PATH}/TdApi.java ] && rm ./generated-"$API_TYPE"/src/main/java17/${JAVA_API_PACKAGE_PATH}/TdApi.java
|
|
||||||
[ -f ./generated-"$API_TYPE"/src/main/java/${JAVA_API_PACKAGE_PATH}/TdApi.java ] && rm ./generated-"$API_TYPE"/src/main/java/${JAVA_API_PACKAGE_PATH}/TdApi.java
|
|
||||||
|
|
||||||
# Create missing folders
|
|
||||||
echo "Creating missing folders..."
|
|
||||||
[ -d "./generated-$API_TYPE/src/main/java/${JAVA_API_PACKAGE_PATH}/" ] || mkdir -p "./generated-$API_TYPE/src/main/java/${JAVA_API_PACKAGE_PATH}/"
|
|
||||||
[ -d "./generated-$API_TYPE/src/main/java/${JAVA_LIB_PACKAGE_PATH}/" ] || mkdir -p "./generated-$API_TYPE/src/main/java/${JAVA_LIB_PACKAGE_PATH}/"
|
|
||||||
[ -d ./generated-"$API_TYPE"/tdjni_build/ ] || mkdir ./generated-"$API_TYPE"/tdjni_build/
|
|
||||||
[ -d ./generated-"$API_TYPE"/tdjni_bin/ ] || mkdir ./generated-"$API_TYPE"/tdjni_bin/
|
|
||||||
[ -d ./generated-"$API_TYPE"/tdjni_docs/ ] || mkdir ./generated-"$API_TYPE"/tdjni_docs/
|
|
||||||
|
|
||||||
# Copy executables
|
|
||||||
echo "Copying executables..."
|
|
||||||
|
|
||||||
if [[ "$OPERATING_SYSTEM_NAME" == "windows" ]]; then
|
|
||||||
TD_GENERATED_BINARIES_DIR="$(realpath -m ./generated/td_tools/td/generate/Release)"
|
|
||||||
else
|
|
||||||
TD_GENERATED_BINARIES_DIR="$(realpath -m ./generated/td_tools/td/generate)"
|
|
||||||
fi
|
|
||||||
export TD_GENERATED_BINARIES_DIR
|
|
||||||
|
|
||||||
# Configure cmake
|
|
||||||
echo "Configuring CMake..."
|
|
||||||
cd ./generated/
|
|
||||||
echo "Telegram source path: '$(realpath -m ./implementation/)'"
|
|
||||||
|
|
||||||
# Run cmake to generate TdApi.java
|
|
||||||
echo "Generating TdApi.java..."
|
|
||||||
./td_tools/td/generate/td_generate_java_api TdApi "./implementation/td/generate/scheme/td_api.tlo" "../generated-$API_TYPE/src/main/java" "$JAVA_API_PACKAGE_PATH"
|
|
||||||
php ./implementation/td/generate/JavadocTlDocumentationGenerator.php "./implementation/td/generate/scheme/td_api.tl" "../generated-$API_TYPE/src/main/java/${JAVA_API_PACKAGE_PATH}/TdApi.java"
|
|
||||||
mv "../generated-$API_TYPE/src/main/java/${JAVA_API_PACKAGE_PATH}/TdApi.java" "../generated-$API_TYPE/src/main/java/${JAVA_API_PACKAGE_PATH}/php_TdApi.java"
|
|
||||||
|
|
||||||
echo "Patching TdApi.java for Java ${MIN_JDK_VERSION}..."
|
|
||||||
${PYTHON_EXECUTABLE} ../scripts/core/tdlib-serializer "$(realpath -m ../generated-"$API_TYPE"/src/main/java/${JAVA_API_PACKAGE_PATH}/php_TdApi.java)" "$(realpath -m ../generated-"$API_TYPE"/src/main/java/${JAVA_API_PACKAGE_PATH}/unexpanded_TdApi.java)" "$(realpath -m ../scripts/core/tdlib-serializer/headers.txt)" "$SEALED"
|
|
||||||
if [[ "$OPERATING_SYSTEM_NAME" == "osx" ]]; then
|
|
||||||
unexpand --tabs=2 ../generated-"$API_TYPE"/src/main/java/${JAVA_API_PACKAGE_PATH}/unexpanded_TdApi.java > ../generated-"$API_TYPE"/src/main/java/${JAVA_API_PACKAGE_PATH}/TdApi.java
|
|
||||||
else
|
|
||||||
unexpand -t 2 ../generated-"$API_TYPE"/src/main/java/${JAVA_API_PACKAGE_PATH}/unexpanded_TdApi.java > ../generated-"$API_TYPE"/src/main/java/${JAVA_API_PACKAGE_PATH}/TdApi.java
|
|
||||||
fi
|
|
||||||
rm ../generated-"$API_TYPE"/src/main/java/${JAVA_API_PACKAGE_PATH}/unexpanded_TdApi.java
|
|
||||||
|
|
||||||
echo "Generated '$(realpath -m ../generated-"$API_TYPE"/src/main/java/${JAVA_API_PACKAGE_PATH}/TdApi.java)'"
|
|
||||||
|
|
||||||
|
|
||||||
rm ../generated-"$API_TYPE"/src/main/java/${JAVA_API_PACKAGE_PATH}/php_TdApi.java
|
|
||||||
|
|
||||||
echo "Done."
|
|
||||||
exit 0
|
|
@ -1,57 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
# MAIN REQUIRED ENVIRONMENT VARIABLES:
|
|
||||||
# OPERATING_SYSTEM_NAME = <windows | linux | osx>
|
|
||||||
# CPU_ARCHITECTURE_NAME = <amd64 | aarch64 | 386 | s390x | armhf | ppc64le>
|
|
||||||
# IMPLEMENTATION_NAME = <tdlib | tdlight>
|
|
||||||
# API_TYPE = <legacy | sealed>
|
|
||||||
|
|
||||||
# Check variables correctness
|
|
||||||
if [ -z "${OPERATING_SYSTEM_NAME}" ]; then
|
|
||||||
echo "Missing parameter: OPERATING_SYSTEM_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${CPU_ARCHITECTURE_NAME}" ]; then
|
|
||||||
echo "Missing parameter: CPU_ARCHITECTURE_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${IMPLEMENTATION_NAME}" ]; then
|
|
||||||
echo "Missing parameter: IMPLEMENTATION_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${API_TYPE}" ]; then
|
|
||||||
echo "Missing parameter: API_TYPE"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
source ./setup-variables.sh
|
|
||||||
|
|
||||||
cd ../../
|
|
||||||
|
|
||||||
# Print details
|
|
||||||
echo "Generating maven project..."
|
|
||||||
echo "Current directory: $(pwd)"
|
|
||||||
echo "Operating system: ${OPERATING_SYSTEM_NAME}"
|
|
||||||
echo "Architecture: ${CPU_ARCHITECTURE_NAME}"
|
|
||||||
echo "Td implementation: ${IMPLEMENTATION_NAME}"
|
|
||||||
echo "API type: ${API_TYPE}"
|
|
||||||
|
|
||||||
# Delete old data
|
|
||||||
echo "Deleting old data..."
|
|
||||||
[ -d "./generated-${API_TYPE}" ] && rm -r "./generated-${API_TYPE}"
|
|
||||||
|
|
||||||
# Create missing folders
|
|
||||||
echo "Creating missing folders..."
|
|
||||||
[ -d "./generated-${API_TYPE}" ] || mkdir "./generated-${API_TYPE}"
|
|
||||||
[ -d "./generated-${API_TYPE}/src/main" ] || mkdir -p "./generated-${API_TYPE}/src/main"
|
|
||||||
|
|
||||||
# Generate pom.xml
|
|
||||||
echo "Generating pom.xml..."
|
|
||||||
sed -f "src/main/replacements/replace-${OPERATING_SYSTEM_NAME}-${CPU_ARCHITECTURE_NAME}-${IMPLEMENTATION_NAME}-${API_TYPE}.sed" src/main/tdapi-project-src/pom.template.xml > "./generated-${API_TYPE}/pom.xml"
|
|
||||||
|
|
||||||
# Copy source files
|
|
||||||
echo "Copying source files..."
|
|
||||||
[ -d ./src/main/tdapi-java ] && cp -r ./src/main/tdapi-java "./generated-${API_TYPE}/src/main/java"
|
|
||||||
[ -d ./src/main/tdapi-resources ] && cp -r ./src/main/tdapi-resources "./generated-${API_TYPE}/src/main/resources"
|
|
||||||
|
|
||||||
echo "Done."
|
|
||||||
exit 0
|
|
@ -1,119 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
# MAIN REQUIRED ENVIRONMENT VARIABLES:
|
|
||||||
# OPERATING_SYSTEM_NAME = <windows | linux | osx>
|
|
||||||
# CPU_ARCHITECTURE_NAME = <amd64 | aarch64 | 386 | s390x | armhf | ppc64le>
|
|
||||||
# IMPLEMENTATION_NAME = <tdlib | tdlight>
|
|
||||||
# BUILD_TYPE = <Debug | Release | RelWithDebInfo | MinSizeRel>
|
|
||||||
# CPU_CORES = "-- -j<cores>" or "-m" on Windows
|
|
||||||
# OTHER REQUIRED ENVIRONMENT VARIABLES:
|
|
||||||
# CMAKE_EXTRA_ARGUMENTS = <args>
|
|
||||||
# OPTIONAL ENVIRONMENT VARIABLES:
|
|
||||||
# CROSS_BUILD_DEPS_DIR = <args>
|
|
||||||
|
|
||||||
# Check variables correctness
|
|
||||||
if [ -z "${OPERATING_SYSTEM_NAME}" ]; then
|
|
||||||
echo "Missing parameter: OPERATING_SYSTEM_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${CPU_ARCHITECTURE_NAME}" ]; then
|
|
||||||
echo "Missing parameter: CPU_ARCHITECTURE_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${IMPLEMENTATION_NAME}" ]; then
|
|
||||||
echo "Missing parameter: IMPLEMENTATION_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${BUILD_TYPE}" ]; then
|
|
||||||
echo "Missing parameter: BUILD_TYPE"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if [ -z "${CPU_CORES}" ]; then
|
|
||||||
echo "Missing parameter: CPU_CORES"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
source ./setup-variables.sh
|
|
||||||
|
|
||||||
cd ../../
|
|
||||||
ROOT_DIR="$(pwd)"
|
|
||||||
|
|
||||||
# Print details
|
|
||||||
echo "Installing dependencies..."
|
|
||||||
echo "Current directory: $ROOT_DIR"
|
|
||||||
echo "Operating system: ${OPERATING_SYSTEM_NAME}"
|
|
||||||
echo "Architecture: ${CPU_ARCHITECTURE_NAME}"
|
|
||||||
echo "Td implementation: ${IMPLEMENTATION_NAME}"
|
|
||||||
echo "Build type: ${BUILD_TYPE}"
|
|
||||||
echo "CPU cores count: ${CPU_CORES}"
|
|
||||||
echo "CMake extra arguments: '${CMAKE_EXTRA_ARGUMENTS}'"
|
|
||||||
echo "Cross build deps dir: '${CROSS_BUILD_DEPS_DIR}'"
|
|
||||||
|
|
||||||
if [[ "$OPERATING_SYSTEM_NAME" == "linux" ]]; then
|
|
||||||
if [ -n "${CROSS_BUILD_DEPS_DIR}" ]; then
|
|
||||||
|
|
||||||
CROSS_OPENJDK_PATH=""
|
|
||||||
fix_jdk_path() {
|
|
||||||
# Setup OpenJDK path
|
|
||||||
CROSS_OPENJDK_PATH=$(find "$CROSS_BUILD_DEPS_DIR/usr/lib/jvm/" -maxdepth 1 -type d -iname "java*jdk*" | head -n 1)
|
|
||||||
echo "Fixed cross openjdk path: '${CROSS_OPENJDK_PATH}'"
|
|
||||||
}
|
|
||||||
|
|
||||||
check_jdk_existance() {
|
|
||||||
if [[ ! -d "$CROSS_OPENJDK_PATH" ]]; then
|
|
||||||
echo "Can't find cross OpenJDK at location $CROSS_OPENJDK_PATH"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
fix_jdk_path
|
|
||||||
check_jdk_existance
|
|
||||||
|
|
||||||
# Create toolchain
|
|
||||||
echo "Creating toolchain file..."
|
|
||||||
cd "$ROOT_DIR"
|
|
||||||
{
|
|
||||||
echo "set(CMAKE_SYSTEM_PROCESSOR ${CPU_ARCH_LINUX})";
|
|
||||||
echo "set(CMAKE_C_COMPILER ${CROSS_CC})";
|
|
||||||
echo "set(CMAKE_C_COMPILER_TARGET ${CLANG_TRIPLE})";
|
|
||||||
echo "set(CMAKE_CXX_COMPILER ${CROSS_CXX})";
|
|
||||||
echo "set(CMAKE_CXX_COMPILER_TARGET ${CLANG_TRIPLE})";
|
|
||||||
echo "set(CMAKE_ASM_COMPILER ${CROSS_CXX})";
|
|
||||||
echo "set(CMAKE_ASM_COMPILER_TARGET ${CLANG_TRIPLE})";
|
|
||||||
echo "set(CMAKE_LIBRARY_PATH \"$CROSS_BUILD_DEPS_DIR/\")";
|
|
||||||
echo "include_directories(\"${CROSS_BUILD_DEPS_DIR}/usr/include/${CPU_ARCH_LINUX}-linux-${CPU_COMPILATION_TOOL}/\")";
|
|
||||||
echo "SET(CMAKE_FIND_ROOT_PATH \"$CROSS_BUILD_DEPS_DIR\" \"$JAVA_HOME\" \"/\" \"$JAVA_HOME/include\")";
|
|
||||||
echo "include_directories(\"${CROSS_OPENJDK_PATH}/include\")";
|
|
||||||
echo "include_directories(\"${CROSS_OPENJDK_PATH}/include/linux\")";
|
|
||||||
|
|
||||||
echo "SET(JAVA_HOME \"$JAVA_HOME/\")";
|
|
||||||
echo "SET(JAVA_INCLUDE_PATH \"$JAVA_HOME/include\")";
|
|
||||||
echo "SET(JAVA_AWT_INCLUDE_PATH \"$JAVA_HOME/include\")";
|
|
||||||
echo "SET(JAVA_INCLUDE_PATH2 \"$JAVA_HOME/include/linux\")";
|
|
||||||
|
|
||||||
echo "SET(JAVA_JVM_LIBRARY \"$CROSS_OPENJDK_PATH/lib/${JAVA_INSTALLATION_TYPE}/libjvm.so\")";
|
|
||||||
echo "SET(JAVA_AWT_LIBRARY \"$CROSS_OPENJDK_PATH/lib/libawt.so\")";
|
|
||||||
cat <<EOF
|
|
||||||
SET(CMAKE_SYSTEM_NAME Linux)
|
|
||||||
|
|
||||||
# Use our definitions for compiler tools
|
|
||||||
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
||||||
|
|
||||||
# Search for libraries and headers in the target directories only
|
|
||||||
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
||||||
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
||||||
EOF
|
|
||||||
if [[ ${CPU_ARCHITECTURE_NAME} == "aarch64" || ${CPU_ARCHITECTURE_NAME} == "armhf" ]]; then
|
|
||||||
cat <<EOF
|
|
||||||
set(CMAKE_THREAD_LIBS_INIT "-lpthread")
|
|
||||||
set(CMAKE_HAVE_THREADS_LIBRARY 1)
|
|
||||||
set(CMAKE_USE_WIN32_THREADS_INIT 0)
|
|
||||||
set(CMAKE_USE_PTHREADS_INIT 1)
|
|
||||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
} > "$CROSS_BUILD_DEPS_DIR/toolchain.cmake"
|
|
||||||
fi
|
|
||||||
fi;
|
|
||||||
|
|
||||||
echo "Done."
|
|
||||||
exit 0
|
|
@ -1,125 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
|
|
||||||
if [[ "$CORE_VARIABLES_SET" != "YES" ]]; then
|
|
||||||
echo "====== Setup variables ======"
|
|
||||||
if [[ "$OPERATING_SYSTEM_NAME" != "osx" ]]; then
|
|
||||||
echo "Current root directory:"
|
|
||||||
realpath "."
|
|
||||||
fi
|
|
||||||
echo "============================="
|
|
||||||
|
|
||||||
# ====== CPU Architecture Variables
|
|
||||||
if [[ "$CPU_ARCHITECTURE_NAME" == "aarch64" ]]; then
|
|
||||||
export CPU_ARCH_JAVA="arm64"
|
|
||||||
export CPU_ARCH_JAVA_INTERNAL="aarch64"
|
|
||||||
export JAVA_INSTALLATION_TYPE="server"
|
|
||||||
export CPU_ARCH_DPKG="arm64"
|
|
||||||
export CPU_ARCH_CMAKE="aarch64"
|
|
||||||
export CPU_ARCH_LINUX="aarch64"
|
|
||||||
export CLANG_TRIPLE="aarch64-linux-gnu"
|
|
||||||
export CPU_COMPILATION_TOOL="gnu"
|
|
||||||
elif [[ "$CPU_ARCHITECTURE_NAME" == "armhf" ]]; then
|
|
||||||
export CPU_ARCH_JAVA="armhf"
|
|
||||||
export CPU_ARCH_JAVA_INTERNAL="arm"
|
|
||||||
export JAVA_INSTALLATION_TYPE="server"
|
|
||||||
export CPU_ARCH_DPKG="armhf"
|
|
||||||
export CPU_ARCH_CMAKE="arm"
|
|
||||||
export CPU_ARCH_LINUX="arm"
|
|
||||||
export CLANG_TRIPLE="arm-linux-gnueabihf"
|
|
||||||
export CPU_COMPILATION_TOOL="gnueabihf"
|
|
||||||
elif [[ "$CPU_ARCHITECTURE_NAME" == "s390x" ]]; then
|
|
||||||
export CPU_ARCH_JAVA="s390x"
|
|
||||||
export CPU_ARCH_JAVA_INTERNAL="s390x"
|
|
||||||
export JAVA_INSTALLATION_TYPE="server"
|
|
||||||
export CPU_ARCH_DPKG="s390x"
|
|
||||||
export CPU_ARCH_CMAKE="s390x"
|
|
||||||
export CPU_ARCH_LINUX="s390x"
|
|
||||||
export CLANG_TRIPLE="s390x-linux-gnu"
|
|
||||||
export CPU_COMPILATION_TOOL="gnu"
|
|
||||||
elif [[ "$CPU_ARCHITECTURE_NAME" == "386" ]]; then
|
|
||||||
export CPU_ARCH_JAVA="386"
|
|
||||||
export CPU_ARCH_JAVA_INTERNAL="i386"
|
|
||||||
export JAVA_INSTALLATION_TYPE="server"
|
|
||||||
export CPU_ARCH_DPKG="i386"
|
|
||||||
export CPU_ARCH_CMAKE="i686"
|
|
||||||
export CPU_ARCH_LINUX="i386"
|
|
||||||
export CLANG_TRIPLE="i386-linux-gnu"
|
|
||||||
export CPU_COMPILATION_TOOL="gnu"
|
|
||||||
elif [[ "$CPU_ARCHITECTURE_NAME" == "amd64" ]]; then
|
|
||||||
export CPU_ARCH_JAVA="amd64"
|
|
||||||
export CPU_ARCH_JAVA_INTERNAL="amd64"
|
|
||||||
export JAVA_INSTALLATION_TYPE="server"
|
|
||||||
export CPU_ARCH_DPKG="amd64"
|
|
||||||
export CPU_ARCH_CMAKE="x86_64"
|
|
||||||
export CPU_ARCH_LINUX="x86_64"
|
|
||||||
export CLANG_TRIPLE="x86_64-linux-gnu"
|
|
||||||
export CPU_COMPILATION_TOOL="gnu"
|
|
||||||
elif [[ "$CPU_ARCHITECTURE_NAME" == "ppc64le" ]]; then
|
|
||||||
export CPU_ARCH_JAVA="ppc64le"
|
|
||||||
export CPU_ARCH_JAVA_INTERNAL="ppc64le"
|
|
||||||
export JAVA_INSTALLATION_TYPE="server"
|
|
||||||
export CPU_ARCH_DPKG="ppc64el"
|
|
||||||
export CPU_ARCH_CMAKE="powerpc64le"
|
|
||||||
export CPU_ARCH_LINUX="powerpc64le"
|
|
||||||
export CLANG_TRIPLE="powerpc64-linux-gnu"
|
|
||||||
export CPU_COMPILATION_TOOL="gnu"
|
|
||||||
else
|
|
||||||
echo "Unrecognized cpu arch: $CPU_ARCHITECTURE_NAME"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "${CPU_CORES_NUM}" ]; then
|
|
||||||
export CPU_CORES_NUM="4"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$OPERATING_SYSTEM_NAME" == "windows" ]]; then
|
|
||||||
export CMAKE_EXTRA_ARGUMENTS_TDJNI="${CMAKE_EXTRA_ARGUMENTS_TDJNI} -DOPENSSL_USE_STATIC_LIBS=True"
|
|
||||||
elif [[ "$OPERATING_SYSTEM_NAME" == "osx" ]]; then
|
|
||||||
export CMAKE_EXTRA_ARGUMENTS_TDJNI="${CMAKE_EXTRA_ARGUMENTS_TDJNI} -DOPENSSL_USE_STATIC_LIBS=True"
|
|
||||||
elif [[ "$OPERATING_SYSTEM_NAME" == "linux" ]]; then
|
|
||||||
export CMAKE_EXTRA_ARGUMENTS_TDJNI="${CMAKE_EXTRA_ARGUMENTS_TDJNI} -DTD_ENABLE_LTO=ON"
|
|
||||||
if [[ "$CPU_ARCHITECTURE_NAME" == "386" ]] || [[ "$CPU_ARCHITECTURE_NAME" == "armhf" ]]; then
|
|
||||||
export CMAKE_EXE_LINKER_FLAGS="$CMAKE_EXE_LINKER_FLAGS -latomic"
|
|
||||||
export LDFLAGS="$LDFLAGS -latomic"
|
|
||||||
export CXXFLAGS="$CXXFLAGS -latomic"
|
|
||||||
fi
|
|
||||||
|
|
||||||
export CXXFLAGS="$CXXFLAGS -static-libgcc -static-libstdc++"
|
|
||||||
export CC="gcc"
|
|
||||||
export CXX="g++"
|
|
||||||
|
|
||||||
export CROSS_CXXFLAGS="$CXXFLAGS -static-libgcc -static-libstdc++"
|
|
||||||
if [[ "${CPU_ARCH_CMAKE}" == "x86_64" && "${CPU_COMPILATION_TOOL}" == "gnu" ]]; then
|
|
||||||
export CROSS_CC="gcc"
|
|
||||||
export CROSS_CXX="g++"
|
|
||||||
else
|
|
||||||
export CROSS_CC="${CPU_ARCH_CMAKE}-linux-${CPU_COMPILATION_TOOL}-gcc"
|
|
||||||
export CROSS_CXX="${CPU_ARCH_CMAKE}-linux-${CPU_COMPILATION_TOOL}-g++"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8"
|
|
||||||
|
|
||||||
# ====== Print variables
|
|
||||||
echo "========= Variables ========="
|
|
||||||
echo "Variables"
|
|
||||||
echo "JAVA_TOOL_OPTIONS=${JAVA_TOOL_OPTIONS}"
|
|
||||||
echo "CPU_ARCH_JAVA=${CPU_ARCH_JAVA}"
|
|
||||||
echo "CPU_ARCH_JAVA_INTERNAL=${CPU_ARCH_JAVA_INTERNAL}"
|
|
||||||
echo "JAVA_INSTALLATION_TYPE=${JAVA_INSTALLATION_TYPE}"
|
|
||||||
echo "CPU_ARCH_DPKG=${CPU_ARCH_DPKG}"
|
|
||||||
echo "CPU_ARCH_CMAKE=${CPU_ARCH_CMAKE}"
|
|
||||||
echo "CPU_ARCH_LINUX=${CPU_ARCH_LINUX}"
|
|
||||||
echo "CLANG_TRIPLE=${CLANG_TRIPLE}"
|
|
||||||
echo "CPU_COMPILATION_TOOL=${CPU_COMPILATION_TOOL}"
|
|
||||||
echo "CC=${CC}"
|
|
||||||
echo "CXX=${CXX}"
|
|
||||||
echo "CFLAGS=${CFLAGS}"
|
|
||||||
echo "CXXFLAGS=${CXXFLAGS}"
|
|
||||||
echo "CMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS}"
|
|
||||||
echo "CMAKE_EXTRA_ARGUMENTS=${CMAKE_EXTRA_ARGUMENTS}"
|
|
||||||
echo "CROSS_BUILD_DEPS_DIR=${CROSS_BUILD_DEPS_DIR}"
|
|
||||||
echo "============================="
|
|
||||||
|
|
||||||
export CORE_VARIABLES_SET="YES"
|
|
||||||
fi
|
|
@ -1 +0,0 @@
|
|||||||
Subproject commit 52c91733b5743a18303b6346f7d37530e03f4111
|
|
@ -1,28 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
# This script compiles tdlight/tdlib jni binaries for your platform.
|
|
||||||
# Fill the variables with your system details.
|
|
||||||
#
|
|
||||||
# MAIN REQUIRED ENVIRONMENT VARIABLES:
|
|
||||||
# OPERATING_SYSTEM_NAME = <windows | linux | osx>
|
|
||||||
# CPU_ARCHITECTURE_NAME = <amd64 | aarch64 | 386 | armhf | ppc64le>
|
|
||||||
# OPERATING_SYSTEM_NAME_SHORT = <win | linux | osx>
|
|
||||||
# IMPLEMENTATION_NAME = <tdlib | tdlight>
|
|
||||||
# CPU_CORES = "-- -j<cores>" or "-m" on Windows
|
|
||||||
# CMAKE_EXTRA_ARGUMENTS = <args>
|
|
||||||
# REVISION = <revision>
|
|
||||||
# OPTIONAL ENVIRONMENT VARIABLES:
|
|
||||||
# CROSS_BUILD_DEPS_DIR = <args>
|
|
||||||
|
|
||||||
cd ../core
|
|
||||||
|
|
||||||
source ./setup-variables.sh
|
|
||||||
./install-dependencies.sh
|
|
||||||
./generate_maven_project.sh
|
|
||||||
./generate_td_tools.sh
|
|
||||||
./configure_td.sh
|
|
||||||
./compile_td.sh
|
|
||||||
./compile_tdjni.sh
|
|
||||||
./build_generated_maven_project.sh
|
|
||||||
|
|
||||||
echo "Done."
|
|
||||||
exit 0
|
|
@ -1,33 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
# This script compiles tdlight/tdlib api for your platform.
|
|
||||||
# Fill the variables with your system details.
|
|
||||||
#
|
|
||||||
# MAIN REQUIRED ENVIRONMENT VARIABLES:
|
|
||||||
# OPERATING_SYSTEM_NAME = <windows | linux | osx>
|
|
||||||
# CPU_ARCHITECTURE_NAME = <amd64 | aarch64 | 386 | armhf | ppc64le>
|
|
||||||
# OPERATING_SYSTEM_NAME_SHORT = <win | linux | osx>
|
|
||||||
# IMPLEMENTATION_NAME = <tdlib | tdlight>
|
|
||||||
# CPU_CORES = "-- -j<cores>" or "-m" on Windows
|
|
||||||
# CMAKE_EXTRA_ARGUMENTS = <args>
|
|
||||||
# REVISION = <revision>
|
|
||||||
# OPTIONAL ENVIRONMENT VARIABLES:
|
|
||||||
# CROSS_BUILD_DEPS_DIR = <args>
|
|
||||||
|
|
||||||
cd ../core
|
|
||||||
|
|
||||||
source ./setup-variables.sh
|
|
||||||
./install-dependencies.sh
|
|
||||||
|
|
||||||
./generate_td_tools.sh
|
|
||||||
./configure_td.sh
|
|
||||||
|
|
||||||
API_TYPE=legacy ./generate_tdapi_maven_project.sh
|
|
||||||
API_TYPE=legacy ./generate_tdapi_java_file.sh
|
|
||||||
API_TYPE=legacy ./build_generated_tdapi_maven_project.sh
|
|
||||||
|
|
||||||
API_TYPE=sealed ./generate_tdapi_maven_project.sh
|
|
||||||
API_TYPE=sealed ./generate_tdapi_java_file.sh
|
|
||||||
API_TYPE=sealed ./build_generated_tdapi_maven_project.sh
|
|
||||||
|
|
||||||
echo "Done."
|
|
||||||
exit 0
|
|
@ -1,40 +0,0 @@
|
|||||||
package it.tdlight.jni.implementation_name.operating_system_name.cpu_architecture_name.version;
|
|
||||||
|
|
||||||
import java.lang.ClassLoader;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.File;
|
|
||||||
|
|
||||||
public class LoadLibrary {
|
|
||||||
public static InputStream getLibraryAsStream() {
|
|
||||||
return LoadLibrary.class.getResourceAsStream("/libs/" + getOsName() + "/" + getArchName() + "/"
|
|
||||||
+ getFileName() + getExtension());
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String getOsName() {
|
|
||||||
return LoadLibrary.class.getPackage().getName().split("\\.")[4];
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String getArchName() {
|
|
||||||
return LoadLibrary.class.getPackage().getName().split("\\.")[5];
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String getVersionName() {
|
|
||||||
return LoadLibrary.class.getPackage().getName().split("\\.")[6];
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String getFileName() {
|
|
||||||
return "tdjni";
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String getExtension() {
|
|
||||||
switch (getOsName()) {
|
|
||||||
case "win":
|
|
||||||
return ".dll";
|
|
||||||
case "osx":
|
|
||||||
return ".dylib";
|
|
||||||
case "linux":
|
|
||||||
default:
|
|
||||||
return ".so";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,2 +0,0 @@
|
|||||||
../src/main/jni-java-src/it/tdlight/jni/TdApi.java
|
|
||||||
../src/main/jni-java-src/it/tdlight/tdnative/NativeClient.java
|
|
@ -1,182 +0,0 @@
|
|||||||
//
|
|
||||||
// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022
|
|
||||||
//
|
|
||||||
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
||||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
||||||
//
|
|
||||||
#include <td/telegram/Client.h>
|
|
||||||
#include <td/telegram/td_api.h>
|
|
||||||
|
|
||||||
#include <td/tl/tl_jni_object.h>
|
|
||||||
|
|
||||||
#include <cstdint>
|
|
||||||
#include <cstdlib>
|
|
||||||
#include <string>
|
|
||||||
#include <utility>
|
|
||||||
|
|
||||||
namespace td_jni {
|
|
||||||
|
|
||||||
static td::td_api::object_ptr<td::td_api::Function> fetch_function(JNIEnv *env, jobject function) {
|
|
||||||
td::jni::reset_parse_error();
|
|
||||||
auto result = td::td_api::Function::fetch(env, function);
|
|
||||||
if (td::jni::have_parse_error()) {
|
|
||||||
std::abort();
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
static td::ClientManager *get_manager() {
|
|
||||||
return td::ClientManager::get_manager_singleton();
|
|
||||||
}
|
|
||||||
|
|
||||||
static jint Client_createNativeClient(JNIEnv *env, jclass clazz) {
|
|
||||||
return static_cast<jint>(get_manager()->create_client_id());
|
|
||||||
}
|
|
||||||
|
|
||||||
static void Client_nativeClientSend(JNIEnv *env, jclass clazz, jint client_id, jlong id, jobject function) {
|
|
||||||
get_manager()->send(static_cast<std::int32_t>(client_id), static_cast<std::uint64_t>(id),
|
|
||||||
fetch_function(env, function));
|
|
||||||
}
|
|
||||||
|
|
||||||
static jint Client_nativeClientReceive(JNIEnv *env, jclass clazz, jintArray client_ids, jlongArray ids,
|
|
||||||
jobjectArray events, jdouble timeout) {
|
|
||||||
jsize events_size = env->GetArrayLength(ids); // client_ids, ids and events must be of equal size
|
|
||||||
if (events_size == 0) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
jsize result_size = 0;
|
|
||||||
|
|
||||||
auto *manager = get_manager();
|
|
||||||
auto response = manager->receive(timeout);
|
|
||||||
while (response.object) {
|
|
||||||
auto client_id = static_cast<jint>(response.client_id);
|
|
||||||
env->SetIntArrayRegion(client_ids, result_size, 1, &client_id);
|
|
||||||
|
|
||||||
auto request_id = static_cast<jlong>(response.request_id);
|
|
||||||
env->SetLongArrayRegion(ids, result_size, 1, &request_id);
|
|
||||||
|
|
||||||
jobject object;
|
|
||||||
response.object->store(env, object);
|
|
||||||
env->SetObjectArrayElement(events, result_size, object);
|
|
||||||
env->DeleteLocalRef(object);
|
|
||||||
|
|
||||||
result_size++;
|
|
||||||
if (result_size == events_size) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
response = manager->receive(0);
|
|
||||||
}
|
|
||||||
return result_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
static jobject Client_nativeClientExecute(JNIEnv *env, jclass clazz, jobject function) {
|
|
||||||
jobject result;
|
|
||||||
td::ClientManager::execute(fetch_function(env, function))->store(env, result);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
static jstring Object_toString(JNIEnv *env, jobject object) {
|
|
||||||
return td::jni::to_jstring(env, to_string(td::td_api::Object::fetch(env, object)));
|
|
||||||
}
|
|
||||||
|
|
||||||
static jstring Function_toString(JNIEnv *env, jobject object) {
|
|
||||||
return td::jni::to_jstring(env, to_string(td::td_api::Function::fetch(env, object)));
|
|
||||||
}
|
|
||||||
|
|
||||||
static constexpr jint JAVA_VERSION = JNI_VERSION_1_6;
|
|
||||||
static JavaVM *java_vm;
|
|
||||||
static jobject log_message_handler;
|
|
||||||
|
|
||||||
static void on_log_message(int verbosity_level, const char *log_message) {
|
|
||||||
auto env = td::jni::get_jni_env(java_vm, JAVA_VERSION);
|
|
||||||
if (env == nullptr) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
jobject handler = env->NewLocalRef(log_message_handler);
|
|
||||||
if (!handler) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
jclass handler_class = env->GetObjectClass(handler);
|
|
||||||
if (handler_class) {
|
|
||||||
jmethodID on_log_message_method = env->GetMethodID(handler_class, "onLogMessage", "(ILjava/lang/String;)V");
|
|
||||||
if (on_log_message_method) {
|
|
||||||
jstring log_message_str = td::jni::to_jstring(env.get(), log_message);
|
|
||||||
if (log_message_str) {
|
|
||||||
env->CallVoidMethod(handler, on_log_message_method, static_cast<jint>(verbosity_level), log_message_str);
|
|
||||||
env->DeleteLocalRef((jobject)log_message_str);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
env->DeleteLocalRef((jobject)handler_class);
|
|
||||||
}
|
|
||||||
|
|
||||||
env->DeleteLocalRef(handler);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void Client_nativeClientSetLogMessageHandler(JNIEnv *env, jclass clazz, jint max_verbosity_level,
|
|
||||||
jobject new_log_message_handler) {
|
|
||||||
if (log_message_handler) {
|
|
||||||
td::ClientManager::set_log_message_callback(0, nullptr);
|
|
||||||
jobject old_log_message_handler = log_message_handler;
|
|
||||||
log_message_handler = jobject();
|
|
||||||
env->DeleteGlobalRef(old_log_message_handler);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (new_log_message_handler) {
|
|
||||||
log_message_handler = env->NewGlobalRef(new_log_message_handler);
|
|
||||||
if (!log_message_handler) {
|
|
||||||
// out of memory
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
td::ClientManager::set_log_message_callback(static_cast<int>(max_verbosity_level), on_log_message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static jint register_native(JavaVM *vm) {
|
|
||||||
JNIEnv *env;
|
|
||||||
if (vm->GetEnv(reinterpret_cast<void **>(&env), JAVA_VERSION) != JNI_OK) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
java_vm = vm;
|
|
||||||
|
|
||||||
auto register_method = [env](jclass clazz, std::string name, std::string signature, auto function_ptr) {
|
|
||||||
td::jni::register_native_method(env, clazz, std::move(name), std::move(signature),
|
|
||||||
reinterpret_cast<void *>(function_ptr));
|
|
||||||
};
|
|
||||||
|
|
||||||
auto client_class = td::jni::get_jclass(env, PACKAGE_NAME "/NativeClient");
|
|
||||||
auto object_class = td::jni::get_jclass(env, API_PACKAGE_NAME "/TdApi$Object");
|
|
||||||
auto function_class = td::jni::get_jclass(env, API_PACKAGE_NAME "/TdApi$Function");
|
|
||||||
|
|
||||||
#define TD_OBJECT "L" API_PACKAGE_NAME "/TdApi$Object;"
|
|
||||||
#define TD_FUNCTION "L" API_PACKAGE_NAME "/TdApi$Function;"
|
|
||||||
register_method(client_class, "createNativeClient", "()I", Client_createNativeClient);
|
|
||||||
register_method(client_class, "nativeClientSend", "(IJ" TD_FUNCTION ")V", Client_nativeClientSend);
|
|
||||||
register_method(client_class, "nativeClientReceive", "([I[J[" TD_OBJECT "D)I", Client_nativeClientReceive);
|
|
||||||
register_method(client_class, "nativeClientExecute", "(" TD_FUNCTION ")" TD_OBJECT, Client_nativeClientExecute);
|
|
||||||
register_method(client_class, "nativeClientSetLogMessageHandler", "(IL" PACKAGE_NAME "/NativeClient$LogMessageHandler;)V",
|
|
||||||
Client_nativeClientSetLogMessageHandler);
|
|
||||||
|
|
||||||
register_method(object_class, "toString", "()Ljava/lang/String;", Object_toString);
|
|
||||||
|
|
||||||
register_method(function_class, "toString", "()Ljava/lang/String;", Function_toString);
|
|
||||||
#undef TD_FUNCTION
|
|
||||||
#undef TD_OBJECT
|
|
||||||
|
|
||||||
td::jni::init_vars(env, API_PACKAGE_NAME);
|
|
||||||
td::td_api::Object::init_jni_vars(env, API_PACKAGE_NAME);
|
|
||||||
td::td_api::Function::init_jni_vars(env, API_PACKAGE_NAME);
|
|
||||||
|
|
||||||
return JAVA_VERSION;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace td_jni
|
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {
|
|
||||||
static jint jni_version = td_jni::register_native(vm); // call_once
|
|
||||||
return jni_version;
|
|
||||||
}
|
|
@ -1,111 +0,0 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<groupId>it.tdlight</groupId>
|
|
||||||
<artifactId>${IMPLEMENTATION_NAME}-natives-${OPERATING_SYSTEM_NAME}-${CPU_ARCHITECTURE_NAME}</artifactId>
|
|
||||||
<!-- Don't change the version! (or change it also in <shadedPattern>) -->
|
|
||||||
<version>${revision}</version>
|
|
||||||
<name>${IMPLEMENTATION_NAME} natives for ${OPERATING_SYSTEM_NAME} (${CPU_ARCHITECTURE_NAME})</name>
|
|
||||||
<packaging>jar</packaging>
|
|
||||||
<properties>
|
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
|
||||||
<revision>4.0.0-SNAPSHOT</revision>
|
|
||||||
<safeVersionName>v4_0_0</safeVersionName>
|
|
||||||
</properties>
|
|
||||||
<distributionManagement>
|
|
||||||
<repository>
|
|
||||||
<id>mchv-release-distribution</id>
|
|
||||||
<name>MCHV Release Apache Maven Packages Distribution</name>
|
|
||||||
<url>https://mvn.mchv.eu/repository/mchv</url>
|
|
||||||
</repository>
|
|
||||||
<snapshotRepository>
|
|
||||||
<id>mchv-snapshot-distribution</id>
|
|
||||||
<name>MCHV Snapshot Apache Maven Packages Distribution</name>
|
|
||||||
<url>https://mvn.mchv.eu/repository/mchv-snapshot</url>
|
|
||||||
</snapshotRepository>
|
|
||||||
</distributionManagement>
|
|
||||||
<scm>
|
|
||||||
<url>https://git.ignuranza.net/tdlight-team/tdlight-java-natives.git</url>
|
|
||||||
<connection>scm:git:https://git.ignuranza.net/tdlight-team/tdlight-java-natives.git</connection>
|
|
||||||
<developerConnection>scm:git:https://git.ignuranza.net/tdlight-team/tdlight-java-natives.git</developerConnection>
|
|
||||||
<tag>HEAD</tag>
|
|
||||||
</scm>
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-clean-plugin</artifactId>
|
|
||||||
<version>3.1.0</version>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-resources-plugin</artifactId>
|
|
||||||
<version>3.0.2</version>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-compiler-plugin</artifactId>
|
|
||||||
<version>3.8.1</version>
|
|
||||||
<configuration>
|
|
||||||
<encoding>UTF-8</encoding>
|
|
||||||
<source>8</source>
|
|
||||||
<target>8</target>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<groupId>com.outbrain.swinfra</groupId>
|
|
||||||
<artifactId>ci-friendly-flatten-maven-plugin</artifactId>
|
|
||||||
<version>1.0.14</version>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<goals>
|
|
||||||
<goal>clean</goal>
|
|
||||||
<goal>flatten</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-jar-plugin</artifactId>
|
|
||||||
<version>3.2.0</version>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-install-plugin</artifactId>
|
|
||||||
<version>3.0.0-M1</version>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-deploy-plugin</artifactId>
|
|
||||||
<version>2.8.2</version>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-shade-plugin</artifactId>
|
|
||||||
<version>3.2.4</version>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<phase>package</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>shade</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<relocations>
|
|
||||||
<relocation>
|
|
||||||
<pattern>it.tdlight.jni.implementation_name.operating_system_name.cpu_architecture_name.version</pattern>
|
|
||||||
<shadedPattern>it.tdlight.jni.${IMPLEMENTATION_NAME}.${OPERATING_SYSTEM_NAME_SHORT}.${CPU_ARCHITECTURE_NAME}.${safeVersionName}</shadedPattern>
|
|
||||||
</relocation>
|
|
||||||
<relocation>
|
|
||||||
<pattern>it.tdlight.jni.implementation_name.operating_system_name.cpu_architecture_name</pattern>
|
|
||||||
<shadedPattern>it.tdlight.jni.${IMPLEMENTATION_NAME}.${OPERATING_SYSTEM_NAME_SHORT}.${CPU_ARCHITECTURE_NAME}</shadedPattern>
|
|
||||||
</relocation>
|
|
||||||
<relocation>
|
|
||||||
<pattern>it.tdlight.jni.implementation_name.operating_system_name</pattern>
|
|
||||||
<shadedPattern>it.tdlight.jni.${IMPLEMENTATION_NAME}.${OPERATING_SYSTEM_NAME_SHORT}</shadedPattern>
|
|
||||||
</relocation>
|
|
||||||
<relocation>
|
|
||||||
<pattern>it.tdlight.jni.implementation_name</pattern>
|
|
||||||
<shadedPattern>it.tdlight.jni.${IMPLEMENTATION_NAME}</shadedPattern>
|
|
||||||
</relocation>
|
|
||||||
</relocations>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</project>
|
|
@ -1 +0,0 @@
|
|||||||
s/tdutils PRIVATE shell32/tdutils PRIVATE shell32 crypt32/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/linux/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/linux/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/x86/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlib/
|
|
||||||
s/${API_TYPE}/legacy/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/linux/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/linux/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/x86/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlib/
|
|
||||||
s/${API_TYPE}/sealed/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/linux/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/linux/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/x86/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlight/
|
|
||||||
s/${API_TYPE}/legacy/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/linux/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/linux/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/x86/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlight/
|
|
||||||
s/${API_TYPE}/sealed/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/linux/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/linux/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/aarch64/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlib/
|
|
||||||
s/${API_TYPE}/legacy/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/linux/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/linux/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/aarch64/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlib/
|
|
||||||
s/${API_TYPE}/sealed/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/linux/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/linux/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/aarch64/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlight/
|
|
||||||
s/${API_TYPE}/legacy/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/linux/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/linux/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/aarch64/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlight/
|
|
||||||
s/${API_TYPE}/sealed/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/linux/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/linux/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/amd64/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlib/
|
|
||||||
s/${API_TYPE}/legacy/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/linux/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/linux/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/amd64/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlib/
|
|
||||||
s/${API_TYPE}/sealed/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/linux/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/linux/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/amd64/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlight/
|
|
||||||
s/${API_TYPE}/legacy/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/linux/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/linux/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/amd64/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlight/
|
|
||||||
s/${API_TYPE}/sealed/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/linux/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/linux/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/armhf/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlib/
|
|
||||||
s/${API_TYPE}/legacy/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/linux/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/linux/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/armhf/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlib/
|
|
||||||
s/${API_TYPE}/sealed/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/linux/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/linux/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/armhf/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlight/
|
|
||||||
s/${API_TYPE}/legacy/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/linux/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/linux/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/armhf/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlight/
|
|
||||||
s/${API_TYPE}/sealed/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/linux/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/linux/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/ppc64le/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlib/
|
|
||||||
s/${API_TYPE}/legacy/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/linux/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/linux/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/ppc64le/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlib/
|
|
||||||
s/${API_TYPE}/sealed/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/linux/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/linux/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/ppc64le/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlight/
|
|
||||||
s/${API_TYPE}/legacy/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/linux/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/linux/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/ppc64le/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlight/
|
|
||||||
s/${API_TYPE}/sealed/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/linux/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/linux/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/s390x/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlib/
|
|
||||||
s/${API_TYPE}/legacy/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/linux/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/linux/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/s390x/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlib/
|
|
||||||
s/${API_TYPE}/sealed/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/linux/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/linux/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/s390x/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlight/
|
|
||||||
s/${API_TYPE}/legacy/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/linux/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/linux/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/s390x/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlight/
|
|
||||||
s/${API_TYPE}/sealed/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/osx/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/osx/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/amd64/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlib/
|
|
||||||
s/${API_TYPE}/legacy/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/osx/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/osx/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/amd64/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlib/
|
|
||||||
s/${API_TYPE}/sealed/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/osx/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/osx/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/amd64/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlight/
|
|
||||||
s/${API_TYPE}/legacy/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/osx/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/osx/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/amd64/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlight/
|
|
||||||
s/${API_TYPE}/sealed/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/windows/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/win/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/amd64/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlib/
|
|
||||||
s/${API_TYPE}/legacy/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/windows/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/win/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/amd64/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlib/
|
|
||||||
s/${API_TYPE}/sealed/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/windows/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/win/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/amd64/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlight/
|
|
||||||
s/${API_TYPE}/legacy/
|
|
@ -1,5 +0,0 @@
|
|||||||
s/${OPERATING_SYSTEM_NAME}/windows/
|
|
||||||
s/${OPERATING_SYSTEM_NAME_SHORT}/win/
|
|
||||||
s/${CPU_ARCHITECTURE_NAME}/amd64/
|
|
||||||
s/${IMPLEMENTATION_NAME}/tdlight/
|
|
||||||
s/${API_TYPE}/sealed/
|
|
@ -1,3 +0,0 @@
|
|||||||
module tdlight.api {
|
|
||||||
exports it.tdlight.jni;
|
|
||||||
}
|
|
@ -1,213 +0,0 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<groupId>it.tdlight</groupId>
|
|
||||||
<artifactId>${IMPLEMENTATION_NAME}-api-${API_TYPE}</artifactId>
|
|
||||||
<version>${revision}</version>
|
|
||||||
<name>${IMPLEMENTATION_NAME} API</name>
|
|
||||||
<packaging>jar</packaging>
|
|
||||||
<properties>
|
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
|
||||||
<revision>4.0.0-SNAPSHOT</revision>
|
|
||||||
<safeVersionName>v4_0_0</safeVersionName>
|
|
||||||
</properties>
|
|
||||||
<profiles>
|
|
||||||
<profile>
|
|
||||||
<id>legacy</id>
|
|
||||||
<activation>
|
|
||||||
<property>
|
|
||||||
<name>!sealed</name>
|
|
||||||
</property>
|
|
||||||
</activation>
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<!-- ensure the project is compiling with JDK 9+ -->
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-enforcer-plugin</artifactId>
|
|
||||||
<version>3.0.0-M3</version>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<id>enforce-jdk9</id>
|
|
||||||
<goals>
|
|
||||||
<goal>enforce</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<rules>
|
|
||||||
<requireJavaVersion>
|
|
||||||
<version>[1.9,)</version>
|
|
||||||
<message>JDK 9+ is required for compilation</message>
|
|
||||||
</requireJavaVersion>
|
|
||||||
</rules>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
<!-- compile sources -->
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-compiler-plugin</artifactId>
|
|
||||||
<version>3.8.1</version>
|
|
||||||
<configuration>
|
|
||||||
<encoding>UTF-8</encoding>
|
|
||||||
</configuration>
|
|
||||||
<executions>
|
|
||||||
<!-- disable default phase due to fixed id and position in lifecycle -->
|
|
||||||
<execution>
|
|
||||||
<id>default-compile</id>
|
|
||||||
<phase>none</phase>
|
|
||||||
<!-- specify source/target for IDE integration -->
|
|
||||||
<configuration>
|
|
||||||
<release>9</release>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
<!-- compile sources with Java 9 to generate and validate module-info.java -->
|
|
||||||
<execution>
|
|
||||||
<id>java-9-module-compile</id>
|
|
||||||
<goals>
|
|
||||||
<goal>compile</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<release>9</release>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
<!-- recompile sources as Java 8 to overwrite Java 9 class files, except module-info.java -->
|
|
||||||
<execution>
|
|
||||||
<id>java-8-compile</id>
|
|
||||||
<goals>
|
|
||||||
<goal>compile</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<!-- specify JDK 9+ release flag to ensure no classes/methods later than Java 8 are used accidentally -->
|
|
||||||
<release>8</release>
|
|
||||||
<!-- exclude module-info.java from the compilation, as it is unsupported by Java 8 -->
|
|
||||||
<excludes>
|
|
||||||
<exclude>module-info.java</exclude>
|
|
||||||
</excludes>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-jar-plugin</artifactId>
|
|
||||||
<version>3.2.0</version>
|
|
||||||
<configuration>
|
|
||||||
<archive>
|
|
||||||
<manifestEntries>
|
|
||||||
<Multi-Release>true</Multi-Release>
|
|
||||||
</manifestEntries>
|
|
||||||
</archive>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</profile>
|
|
||||||
<profile>
|
|
||||||
<id>sealed</id>
|
|
||||||
<activation>
|
|
||||||
<property>
|
|
||||||
<name>sealed</name>
|
|
||||||
</property>
|
|
||||||
</activation>
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<!-- compile sources -->
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
|
||||||
<artifactId>maven-compiler-plugin</artifactId>
|
|
||||||
<version>3.8.1</version>
|
|
||||||
<configuration>
|
|
||||||
<encoding>UTF-8</encoding>
|
|
||||||
<source>17</source>
|
|
||||||
<target>17</target>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-jar-plugin</artifactId>
|
|
||||||
<version>3.2.0</version>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</profile>
|
|
||||||
</profiles>
|
|
||||||
<distributionManagement>
|
|
||||||
<repository>
|
|
||||||
<id>mchv-release-distribution</id>
|
|
||||||
<name>MCHV Release Apache Maven Packages Distribution</name>
|
|
||||||
<url>https://mvn.mchv.eu/repository/mchv</url>
|
|
||||||
</repository>
|
|
||||||
<snapshotRepository>
|
|
||||||
<id>mchv-snapshot-distribution</id>
|
|
||||||
<name>MCHV Snapshot Apache Maven Packages Distribution</name>
|
|
||||||
<url>https://mvn.mchv.eu/repository/mchv-snapshot</url>
|
|
||||||
</snapshotRepository>
|
|
||||||
</distributionManagement>
|
|
||||||
<scm>
|
|
||||||
<url>https://git.ignuranza.net/tdlight-team/tdlight-java-natives.git</url>
|
|
||||||
<connection>scm:git:https://git.ignuranza.net/tdlight-team/tdlight-java-natives.git</connection>
|
|
||||||
<developerConnection>scm:git:https://git.ignuranza.net/tdlight-team/tdlight-java-natives.git</developerConnection>
|
|
||||||
<tag>HEAD</tag>
|
|
||||||
</scm>
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-clean-plugin</artifactId>
|
|
||||||
<version>3.1.0</version>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-resources-plugin</artifactId>
|
|
||||||
<version>3.0.2</version>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-source-plugin</artifactId>
|
|
||||||
<version>3.2.1</version>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<id>attach-sources</id>
|
|
||||||
<goals>
|
|
||||||
<goal>jar</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-javadoc-plugin</artifactId>
|
|
||||||
<version>3.2.0</version>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<id>main-javadoc</id>
|
|
||||||
<phase>package</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>jar</goal>
|
|
||||||
</goals>
|
|
||||||
<configuration>
|
|
||||||
<release>17</release>
|
|
||||||
<quiet>true</quiet>
|
|
||||||
<notimestamp>true</notimestamp>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-install-plugin</artifactId>
|
|
||||||
<version>3.0.0-M1</version>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-deploy-plugin</artifactId>
|
|
||||||
<version>2.8.2</version>
|
|
||||||
</plugin>
|
|
||||||
<plugin>
|
|
||||||
<groupId>com.outbrain.swinfra</groupId>
|
|
||||||
<artifactId>ci-friendly-flatten-maven-plugin</artifactId>
|
|
||||||
<version>1.0.14</version>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<goals>
|
|
||||||
<goal>clean</goal>
|
|
||||||
<goal>flatten</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</project>
|
|
1
tdlib-serializer
Submodule
1
tdlib-serializer
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit b32514771e84e4df39b33fe07f4bb93a7b32541d
|
274
tdlight.arch.ssl1.gnu.dockerfile
Normal file
274
tdlight.arch.ssl1.gnu.dockerfile
Normal file
@ -0,0 +1,274 @@
|
|||||||
|
FROM debian:buster-backports AS ssl1_debian
|
||||||
|
WORKDIR /build
|
||||||
|
SHELL ["/bin/bash", "-exc"]
|
||||||
|
|
||||||
|
ARG REVISION="1.0.0.0-SNAPSHOT"
|
||||||
|
# amd64, i386, ppc64el, riscv64, armhf, arm64
|
||||||
|
ARG ARCH_DEBIAN
|
||||||
|
# x86_64, i386, powerpc64le, riscv64, arm, aarch64
|
||||||
|
ARG ARCH_TRIPLE
|
||||||
|
# gnu, gnueabihf (armhf)
|
||||||
|
ARG TRIPLE_GNU
|
||||||
|
ARG NATIVE="false"
|
||||||
|
ARG SCCACHE_GHA_ENABLED=off
|
||||||
|
ARG ACTIONS_CACHE_URL
|
||||||
|
ARG ACTIONS_RUNTIME_TOKEN
|
||||||
|
|
||||||
|
# Check for mandatory build arguments
|
||||||
|
RUN : "${ARCH_DEBIAN:?Build argument needs to be set and non-empty.}"
|
||||||
|
RUN : "${ARCH_TRIPLE:?Build argument needs to be set and non-empty.}"
|
||||||
|
RUN : "${TRIPLE_GNU:?Build argument needs to be set and non-empty.}"
|
||||||
|
|
||||||
|
RUN rm -f /etc/apt/apt.conf.d/docker-clean; echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache
|
||||||
|
RUN sed -i "s|http://deb.debian.org/debian buster-backports|http://archive.debian.org/debian buster-backports|g" /etc/apt/sources.list.d/backports.list
|
||||||
|
RUN ls /etc/apt/sources.list.d
|
||||||
|
RUN cat /etc/apt/sources.list
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
COPY .docker ./.docker
|
||||||
|
# Install sccache to greatly speedup builds in the CI
|
||||||
|
RUN --mount=type=cache,target=/opt/sccache,sharing=locked --mount=type=cache,target=/var/lib/apt,sharing=locked --mount=type=cache,target=/var/cache/sccache2,sharing=locked .docker/install-sccache.sh
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
||||||
|
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
||||||
|
--mount=type=cache,target=/var/cache/sccache2,sharing=locked <<"EOF"
|
||||||
|
dpkg --add-architecture ${ARCH_DEBIAN}
|
||||||
|
apt-get --assume-yes update
|
||||||
|
apt-get --assume-yes -o Dpkg::Options::="--force-overwrite" install --no-install-recommends openjdk-11-jdk-headless
|
||||||
|
if [[ "$NATIVE" != "true" ]]; then
|
||||||
|
./.docker/downloadthis.sh /var/cache/apt/downloaded_tmp libssl-dev:${ARCH_DEBIAN} /root/cross-build-pkgs/
|
||||||
|
./.docker/downloadthis.sh /var/cache/apt/downloaded_tmp libssl1.1:${ARCH_DEBIAN} /root/cross-build-pkgs/
|
||||||
|
./.docker/downloadthis.sh /var/cache/apt/downloaded_tmp zlib1g-dev:${ARCH_DEBIAN} /root/cross-build-pkgs/
|
||||||
|
./.docker/downloadthis.sh /var/cache/apt/downloaded_tmp zlib1g:${ARCH_DEBIAN} /root/cross-build-pkgs/
|
||||||
|
./.docker/downloadthis.sh /var/cache/apt/downloaded_tmp openjdk-11-jre-headless:${ARCH_DEBIAN} /root/cross-build-pkgs/
|
||||||
|
./.docker/downloadthis.sh /var/cache/apt/downloaded_tmp openjdk-11-jdk-headless:${ARCH_DEBIAN} /root/cross-build-pkgs/
|
||||||
|
./.docker/SymlinkPrefix.javash "/root/cross-build-pkgs/" "/" "./"
|
||||||
|
fi
|
||||||
|
apt-get --assume-yes -o Dpkg::Options::="--force-overwrite" install --no-install-recommends \
|
||||||
|
g++ gcc libstdc++-8-dev zlib1g-dev linux-libc-dev libssl-dev gperf \
|
||||||
|
tree git maven php-cli php-readline make cmake
|
||||||
|
|
||||||
|
if [[ "$NATIVE" != "true" ]]; then
|
||||||
|
apt-get --assume-yes -o Dpkg::Options::="--force-overwrite" install --no-install-recommends \
|
||||||
|
g++-8-${ARCH_TRIPLE/_/-}-linux-${TRIPLE_GNU} gcc-8-${ARCH_TRIPLE/_/-}-linux-${TRIPLE_GNU} \
|
||||||
|
libatomic1-${ARCH_DEBIAN}-cross libc6-dev-${ARCH_DEBIAN}-cross libgcc-8-dev-${ARCH_DEBIAN}-cross libstdc++-8-dev-${ARCH_DEBIAN}-cross
|
||||||
|
fi
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
FROM ssl1_debian AS build
|
||||||
|
SHELL ["/bin/bash", "-exc"]
|
||||||
|
ARG REVISION="1.0.0.0-SNAPSHOT"
|
||||||
|
ARG ARCH_DEBIAN
|
||||||
|
ARG ARCH_TRIPLE
|
||||||
|
ARG TRIPLE_GNU
|
||||||
|
ARG NATIVE=false
|
||||||
|
ARG SCCACHE_GHA_ENABLED=off
|
||||||
|
ARG ACTIONS_CACHE_URL
|
||||||
|
ARG ACTIONS_RUNTIME_TOKEN
|
||||||
|
|
||||||
|
ENV SCCACHE_DIR=/var/cache/sccache2
|
||||||
|
|
||||||
|
# Use c++11
|
||||||
|
ENV CMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS}"
|
||||||
|
|
||||||
|
ENV CMAKE_C_FLAGS="${CMAKE_C_FLAGS}"
|
||||||
|
ENV CMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti"
|
||||||
|
ENV CMAKE_SHARED_LINKER_FLAGS="${CMAKE_SHARED_LINKER_FLAGS} -Wl,--gc-sections -Wl,--exclude-libs,ALL"
|
||||||
|
ENV CMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -flto -O3"
|
||||||
|
ENV CCACHE=/opt/sccache/sccache
|
||||||
|
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
|
||||||
|
|
||||||
|
COPY --link . ./
|
||||||
|
|
||||||
|
COPY <<EOF ./toolchain_native.cmake
|
||||||
|
set(CMAKE_CROSSCOMPILING FALSE)
|
||||||
|
SET(CMAKE_SYSTEM_NAME Linux)
|
||||||
|
set(CMAKE_SYSTEM_PROCESSOR $ARCH_TRIPLE)
|
||||||
|
set(TARGET_TRIPLE $ARCH_TRIPLE-linux-$TRIPLE_GNU)
|
||||||
|
|
||||||
|
set(CMAKE_C_COMPILER /usr/bin/gcc-8)
|
||||||
|
set(CMAKE_CXX_COMPILER /usr/bin/g++-8)
|
||||||
|
set(CMAKE_AR "/usr/bin/gcc-ar-8" CACHE FILEPATH "" FORCE)
|
||||||
|
|
||||||
|
set(CMAKE_C_COMPILER_TARGET \${TARGET_TRIPLE})
|
||||||
|
set(CMAKE_CXX_COMPILER_TARGET \${TARGET_TRIPLE})
|
||||||
|
set(CMAKE_ASM_COMPILER_TARGET \${TARGET_TRIPLE})
|
||||||
|
|
||||||
|
set(CMAKE_INCLUDE_PATH /usr/include/\${TARGET_TRIPLE} /usr/include)
|
||||||
|
set(CMAKE_LIBRARY_PATH /usr/lib/\${TARGET_TRIPLE} /lib/\${TARGET_TRIPLE})
|
||||||
|
set(CMAKE_PROGRAM_PATH /usr/bin/\${TARGET_TRIPLE})
|
||||||
|
|
||||||
|
# Set various compiler flags
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS_INIT "-flto -fno-fat-lto-objects")
|
||||||
|
set(CMAKE_MODULE_LINKER_FLAGS_INIT "-flto -fno-fat-lto-objects")
|
||||||
|
set(CMAKE_SHARED_LINKER_FLAGS_INIT "-flto -fno-fat-lto-objects")
|
||||||
|
set(CMAKE_CXX_FLAGS_INIT "-flto -fno-fat-lto-objects")
|
||||||
|
|
||||||
|
if(EXISTS "/usr/lib/jvm/java-11-openjdk-amd64")
|
||||||
|
SET(JAVA_HOME "/usr/lib/jvm/java-11-openjdk-amd64")
|
||||||
|
else()
|
||||||
|
SET(JAVA_HOME "/usr/lib/jvm/default-java")
|
||||||
|
endif()
|
||||||
|
SET(JAVA_INCLUDE_PATH "\${JAVA_HOME}/include")
|
||||||
|
SET(JAVA_AWT_INCLUDE_PATH "\${JAVA_HOME}/include")
|
||||||
|
SET(JAVA_INCLUDE_PATH2 "\${JAVA_HOME}/include/linux")
|
||||||
|
SET(JAVA_CROSS_HOME "/usr/lib/jvm/java-11-openjdk-$ARCH_DEBIAN")
|
||||||
|
SET(JAVA_JVM_LIBRARY "\${JAVA_CROSS_HOME}/lib/server/libjvm.so")
|
||||||
|
SET(JAVA_AWT_LIBRARY "\${JAVA_CROSS_HOME}/lib/libawt.so")
|
||||||
|
EOF
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/opt/sccache,sharing=locked \
|
||||||
|
--mount=type=cache,target=/var/cache/sccache2,sharing=locked \
|
||||||
|
--mount=type=cache,target=/root/.m2 <<"EOF"
|
||||||
|
export TOOLCHAIN_ARGS; if [[ "$NATIVE" == "true" ]]; then TOOLCHAIN_ARGS="toolchain_native.cmake"; else TOOLCHAIN_ARGS="toolchain.cmake"; fi
|
||||||
|
rm -rf implementations/tdlight/td_tools_build implementations/tdlight/build api/target-legacy api/target api/.ci-friendly-pom.xml implementations/tdlight/td/generate/auto natives/src/main/java/it/tdlight/jni natives/build natives/tdjni_bin natives/tdjni_docs
|
||||||
|
mkdir -p implementations/tdlight/build implementations/tdlight/build/td_bin/bin implementations/tdlight/td_tools_build/java/it/tdlight/jni api/src/main/java-legacy/it/tdlight/jni api/src/main/java-sealed/it/tdlight/jni natives/src/main/java/it/tdlight/jni natives/build natives/tdjni_bin natives/tdjni_docs
|
||||||
|
cd implementations/tdlight/td_tools_build
|
||||||
|
cmake \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_C_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DCMAKE_C_FLAGS_RELEASE="" \
|
||||||
|
-DCMAKE_CXX_FLAGS_RELEASE="-O0 -DNDEBUG" \
|
||||||
|
-DTD_ENABLE_LTO=OFF \
|
||||||
|
-DTD_ENABLE_JNI=ON \
|
||||||
|
-DJAVA_AWT_LIBRARY=/dev/null \
|
||||||
|
-DJAVA_AWT_INCLUDE_PATH=/dev/null \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE="../../../toolchain_native.cmake" \
|
||||||
|
..
|
||||||
|
cmake --build . --target prepare_cross_compiling --parallel "$(nproc)"
|
||||||
|
cmake --build . --target td_generate_java_api --parallel "$(nproc)"
|
||||||
|
cd ../../../
|
||||||
|
EOF
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.m2 <<"EOF"
|
||||||
|
./implementations/tdlight/td_tools_build/td/generate/td_generate_java_api TdApi "./implementations/tdlight/td/generate/auto/tlo/td_api.tlo" "./natives/src/main/java" "it/tdlight/jni"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
COPY <<EOF ./toolchain.cmake
|
||||||
|
set(CMAKE_CROSSCOMPILING TRUE)
|
||||||
|
SET(CMAKE_SYSTEM_NAME Linux)
|
||||||
|
set(CMAKE_SYSTEM_PROCESSOR $ARCH_TRIPLE)
|
||||||
|
set(TARGET_TRIPLE $ARCH_TRIPLE-linux-$TRIPLE_GNU)
|
||||||
|
|
||||||
|
set(CMAKE_C_COMPILER /usr/bin/\${TARGET_TRIPLE}-gcc-8)
|
||||||
|
set(CMAKE_CXX_COMPILER /usr/bin/\${TARGET_TRIPLE}-g++-8)
|
||||||
|
set(CMAKE_AR "/usr/bin/\${TARGET_TRIPLE}-gcc-ar-8" CACHE FILEPATH "" FORCE)
|
||||||
|
|
||||||
|
set(CMAKE_C_COMPILER_TARGET \${TARGET_TRIPLE})
|
||||||
|
set(CMAKE_CXX_COMPILER_TARGET \${TARGET_TRIPLE})
|
||||||
|
set(CMAKE_ASM_COMPILER_TARGET \${TARGET_TRIPLE})
|
||||||
|
|
||||||
|
set(CMAKE_INCLUDE_PATH /usr/include/\${TARGET_TRIPLE} /root/cross-build-pkgs/usr/include/\${TARGET_TRIPLE} /root/cross-build-pkgs/usr/include)
|
||||||
|
set(CMAKE_LIBRARY_PATH /usr/lib/\${TARGET_TRIPLE} /root/cross-build-pkgs/usr/lib/\${TARGET_TRIPLE} /root/cross-build-pkgs/lib/\${TARGET_TRIPLE})
|
||||||
|
set(CMAKE_PROGRAM_PATH /usr/bin/\${TARGET_TRIPLE} /root/cross-build-pkgs/usr/bin/\${TARGET_TRIPLE})
|
||||||
|
|
||||||
|
# Set various compiler flags
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS_INIT "-flto -fno-fat-lto-objects")
|
||||||
|
set(CMAKE_MODULE_LINKER_FLAGS_INIT "-flto -fno-fat-lto-objects")
|
||||||
|
set(CMAKE_SHARED_LINKER_FLAGS_INIT "-flto -fno-fat-lto-objects")
|
||||||
|
set(CMAKE_CXX_FLAGS_INIT "-flto -fno-fat-lto-objects")
|
||||||
|
|
||||||
|
set(CMAKE_SYSROOT /root/cross-build-pkgs)
|
||||||
|
|
||||||
|
# This must be set or compiler checks fail when linking
|
||||||
|
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
|
||||||
|
|
||||||
|
if(EXISTS "/usr/lib/jvm/java-11-openjdk-amd64")
|
||||||
|
SET(JAVA_HOME "/usr/lib/jvm/java-11-openjdk-amd64")
|
||||||
|
else()
|
||||||
|
SET(JAVA_HOME "/usr/lib/jvm/default-java")
|
||||||
|
endif()
|
||||||
|
SET(JAVA_INCLUDE_PATH "\${JAVA_HOME}/include")
|
||||||
|
SET(JAVA_AWT_INCLUDE_PATH "\${JAVA_HOME}/include")
|
||||||
|
SET(JAVA_INCLUDE_PATH2 "\${JAVA_HOME}/include/linux")
|
||||||
|
SET(JAVA_CROSS_HOME "/root/cross-build-pkgs/usr/lib/jvm/java-11-openjdk-$ARCH_DEBIAN")
|
||||||
|
SET(JAVA_JVM_LIBRARY "\${JAVA_CROSS_HOME}/lib/server/libjvm.so")
|
||||||
|
SET(JAVA_AWT_LIBRARY "\${JAVA_CROSS_HOME}/lib/libawt.so")
|
||||||
|
|
||||||
|
if("$ARCH_DEBIAN" STREQUAL "armhf" OR "$ARCH_DEBIAN" STREQUAL "arm64")
|
||||||
|
set(CMAKE_THREAD_LIBS_INIT "-lpthread")
|
||||||
|
set(CMAKE_HAVE_THREADS_LIBRARY 1)
|
||||||
|
set(CMAKE_USE_WIN32_THREADS_INIT 0)
|
||||||
|
set(CMAKE_USE_PTHREADS_INIT 1)
|
||||||
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||||
|
endif()
|
||||||
|
EOF
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/opt/sccache,sharing=locked \
|
||||||
|
--mount=type=cache,target=/var/cache/sccache2,sharing=locked \
|
||||||
|
--mount=type=cache,target=/root/.m2 <<"EOF"
|
||||||
|
export TOOLCHAIN_ARGS; if [[ "$NATIVE" == "true" ]]; then TOOLCHAIN_ARGS="toolchain_native.cmake"; else TOOLCHAIN_ARGS="toolchain.cmake"; fi
|
||||||
|
cd implementations/tdlight/build
|
||||||
|
export INSTALL_PREFIX="$(readlink -e ./td_bin/)"
|
||||||
|
export INSTALL_BINDIR="$(readlink -e ./td_bin/bin)"
|
||||||
|
cmake \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_C_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DTD_SKIP_BENCHMARK=ON -DTD_SKIP_TEST=ON -DTD_SKIP_TG_CLI=ON \
|
||||||
|
-DTD_ENABLE_LTO=ON \
|
||||||
|
-DTD_ENABLE_JNI=ON \
|
||||||
|
-DCMAKE_INSTALL_PREFIX:PATH="$INSTALL_PREFIX" \
|
||||||
|
-DCMAKE_INSTALL_BINDIR:PATH="$INSTALL_BINDIR" \
|
||||||
|
-DJAVA_AWT_LIBRARY=/dev/null \
|
||||||
|
-DJAVA_AWT_INCLUDE_PATH=/dev/null \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE="../../../$TOOLCHAIN_ARGS" \
|
||||||
|
..
|
||||||
|
cmake --build . --target install --config Release --parallel "$(nproc)"
|
||||||
|
cd ../../../
|
||||||
|
EOF
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/opt/sccache,sharing=locked \
|
||||||
|
--mount=type=cache,target=/var/cache/sccache2,sharing=locked \
|
||||||
|
--mount=type=cache,target=/root/.m2 <<"EOF"
|
||||||
|
export TOOLCHAIN_ARGS; if [[ "$NATIVE" == "true" ]]; then TOOLCHAIN_ARGS="toolchain_native.cmake"; else TOOLCHAIN_ARGS="toolchain.cmake"; fi
|
||||||
|
cd natives/build
|
||||||
|
cmake \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_C_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DTD_GENERATED_BINARIES_DIR="$(readlink -e ../../implementations/tdlight/td_tools_build/td/generate)" \
|
||||||
|
-DTD_SRC_DIR="$(readlink -e ../../implementations/tdlight)" \
|
||||||
|
-DTDNATIVES_BIN_DIR="$(readlink -e ../tdjni_bin/)" \
|
||||||
|
-DTDNATIVES_DOCS_BIN_DIR="$(readlink -e ../tdjni_docs/)" \
|
||||||
|
-DTd_DIR:PATH="$(readlink -e ../../implementations/tdlight/build/td_bin/lib/cmake/Td)" \
|
||||||
|
-DJAVA_SRC_DIR="$(readlink -e ../src/main/java)" \
|
||||||
|
-DTDNATIVES_CPP_SRC_DIR="$(readlink -e ../src/main/cpp)" \
|
||||||
|
-DJAVA_AWT_LIBRARY=/dev/null \
|
||||||
|
-DJAVA_AWT_INCLUDE_PATH=/dev/null \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE="../../$TOOLCHAIN_ARGS" \
|
||||||
|
../src/main/cpp
|
||||||
|
cmake --build . --target install --config Release --parallel "$(nproc)"
|
||||||
|
cd ../../
|
||||||
|
EOF
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/opt/sccache,sharing=locked \
|
||||||
|
--mount=type=cache,target=/var/cache/sccache2,sharing=locked \
|
||||||
|
--mount=type=cache,target=/root/.m2 <<"EOF"
|
||||||
|
cd natives
|
||||||
|
mkdir -p src/main/resources/META-INF/tdlightjni/
|
||||||
|
mv tdjni_bin/libtdjni.so src/main/resources/META-INF/tdlightjni/libtdjni.linux_${ARCH_DEBIAN}_gnu_ssl1.so
|
||||||
|
mvn -B -f pom.xml -Drevision="$REVISION" -Dnative.type.classifier=linux_${ARCH_DEBIAN}_gnu_ssl1 package
|
||||||
|
cd ..
|
||||||
|
EOF
|
||||||
|
|
||||||
|
FROM debian:buster-backports AS maven
|
||||||
|
SHELL ["/bin/bash", "-exc"]
|
||||||
|
WORKDIR /source
|
||||||
|
COPY --from=build /build/natives /source/natives
|
||||||
|
ENTRYPOINT ["/bin/true"]
|
||||||
|
|
||||||
|
FROM debian:buster-backports
|
||||||
|
ARG REVISION="1.0.0.0-SNAPSHOT"
|
||||||
|
ARG ARCH_DEBIAN
|
||||||
|
ARG ARCH_TRIPLE
|
||||||
|
ARG TRIPLE_GNU
|
||||||
|
ARG NATIVE=off
|
||||||
|
WORKDIR /out
|
||||||
|
COPY --from=build /build/natives natives
|
||||||
|
COPY --from=build /build/natives/src/main/resources/META-INF/tdlightjni/libtdjni.linux_${ARCH_DEBIAN}_gnu_ssl1.so libtdjni.so
|
||||||
|
COPY --from=build /build/natives/target-linux_${ARCH_DEBIAN}_gnu_ssl1/tdlight-natives-${REVISION}-linux_${ARCH_DEBIAN}_gnu_ssl1.jar tdlight-natives.jar
|
||||||
|
USER 65534:65534
|
||||||
|
ENTRYPOINT ["/bin/true"]
|
250
tdlight.arch.ssl3.clang.dockerfile
Normal file
250
tdlight.arch.ssl3.clang.dockerfile
Normal file
@ -0,0 +1,250 @@
|
|||||||
|
FROM debian:bookworm-backports AS ssl3_debian
|
||||||
|
WORKDIR /build
|
||||||
|
SHELL ["/bin/bash", "-exc"]
|
||||||
|
|
||||||
|
ARG REVISION="1.0.0.0-SNAPSHOT"
|
||||||
|
# amd64, i386, ppc64el, riscv64, armhf, arm64
|
||||||
|
ARG ARCH_DEBIAN
|
||||||
|
# x86_64, i386, powerpc64le, riscv64, arm, aarch64
|
||||||
|
ARG ARCH_TRIPLE
|
||||||
|
# gnu, gnueabihf (armhf)
|
||||||
|
ARG TRIPLE_GNU
|
||||||
|
ARG SCCACHE_GHA_ENABLED=off
|
||||||
|
ARG ACTIONS_CACHE_URL
|
||||||
|
ARG ACTIONS_RUNTIME_TOKEN
|
||||||
|
|
||||||
|
# Check for mandatory build arguments
|
||||||
|
RUN : "${ARCH_DEBIAN:?Build argument needs to be set and non-empty.}"
|
||||||
|
RUN : "${ARCH_TRIPLE:?Build argument needs to be set and non-empty.}"
|
||||||
|
RUN : "${TRIPLE_GNU:?Build argument needs to be set and non-empty.}"
|
||||||
|
|
||||||
|
RUN rm -f /etc/apt/apt.conf.d/docker-clean; echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
COPY .docker ./.docker
|
||||||
|
# Install sccache to greatly speedup builds in the CI
|
||||||
|
RUN --mount=type=cache,target=/opt/sccache,sharing=locked --mount=type=cache,target=/var/lib/apt,sharing=locked --mount=type=cache,target=/var/cache/sccache2,sharing=locked .docker/install-sccache.sh
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
||||||
|
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
||||||
|
--mount=type=cache,target=/var/cache/sccache2,sharing=locked <<"EOF"
|
||||||
|
dpkg --add-architecture ${ARCH_DEBIAN}
|
||||||
|
apt-get --assume-yes update
|
||||||
|
|
||||||
|
export LLVMLIBS_NATIVE="libc++-14-dev libc++abi-14-dev libunwind-14-dev libunwind-14 libclang-rt-14-dev"
|
||||||
|
export LLVMLIBS_TARGET="libc++-14-dev:${ARCH_DEBIAN} libc++abi-14-dev:${ARCH_DEBIAN} libunwind-14-dev:${ARCH_DEBIAN} libunwind-14:${ARCH_DEBIAN} libclang-rt-14-dev:${ARCH_DEBIAN}"
|
||||||
|
|
||||||
|
apt-get --assume-yes -o Dpkg::Options::="--force-overwrite" install --no-install-recommends $LLVMLIBS_TARGET
|
||||||
|
find /usr/lib/ -path "*-linux-*" -lname "*llvm*" -print0 | xargs -0 -I{} sh -c 'cp --remove-destination $(realpath "{}") "{}"'
|
||||||
|
|
||||||
|
apt-get --assume-yes -o Dpkg::Options::="--force-overwrite" install --no-install-recommends git \
|
||||||
|
zlib1g-dev libssl-dev gperf g++ \
|
||||||
|
php-cli make cmake llvm-14 clang-14 lld-14 \
|
||||||
|
libgcc-11-dev libclang-common-14-dev \
|
||||||
|
git maven php-readline ca-certificates-java \
|
||||||
|
openjdk-17-jdk-headless libssl-dev:${ARCH_DEBIAN} zlib1g-dev:${ARCH_DEBIAN} \
|
||||||
|
libgcc-11-dev:${ARCH_DEBIAN} libc6-dev:${ARCH_DEBIAN} $LLVMLIBS_NATIVE
|
||||||
|
apt-get --assume-yes -o Dpkg::Options::="--force-overwrite" install --no-install-recommends openjdk-17-jdk-headless:${ARCH_DEBIAN}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
FROM ssl3_debian AS build
|
||||||
|
SHELL ["/bin/bash", "-exc"]
|
||||||
|
ARG REVISION="1.0.0.0-SNAPSHOT"
|
||||||
|
ARG ARCH_DEBIAN
|
||||||
|
ARG ARCH_TRIPLE
|
||||||
|
ARG TRIPLE_GNU
|
||||||
|
ARG SCCACHE_GHA_ENABLED=off
|
||||||
|
ARG ACTIONS_CACHE_URL
|
||||||
|
ARG ACTIONS_RUNTIME_TOKEN
|
||||||
|
|
||||||
|
ENV TOOLCHAIN_FILE="toolchain.cmake"
|
||||||
|
ENV SCCACHE_DIR=/var/cache/sccache2
|
||||||
|
|
||||||
|
# machine-specific flags
|
||||||
|
ENV HOST_CMAKE_C_COMPILER="/usr/bin/clang-14"
|
||||||
|
ENV HOST_CMAKE_CXX_COMPILER="/usr/bin/clang++-14"
|
||||||
|
ENV HOST_CMAKE_C_FLAGS="-fuse-ld=lld"
|
||||||
|
ENV HOST_CMAKE_CXX_FLAGS="${HOST_CMAKE_C_FLAGS} -stdlib=libc++"
|
||||||
|
ENV HOST_CMAKE_EXE_LINKER_FLAGS="-lc++ -lc++abi -fuse-ld=lld -rtlib=compiler-rt -unwindlib=libunwind"
|
||||||
|
|
||||||
|
# Use c++11
|
||||||
|
ENV CMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -std=c++14"
|
||||||
|
|
||||||
|
ENV CC="/usr/bin/gcc-8"
|
||||||
|
ENV CXX="/usr/bin/g++-8"
|
||||||
|
ENV CMAKE_C_FLAGS="${CMAKE_C_FLAGS}"
|
||||||
|
ENV CMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti"
|
||||||
|
ENV CMAKE_SHARED_LINKER_FLAGS="${CMAKE_SHARED_LINKER_FLAGS} -Wl,--gc-sections -Wl,--exclude-libs,ALL"
|
||||||
|
ENV CMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -flto=thin -O3"
|
||||||
|
ENV CCACHE=/opt/sccache/sccache
|
||||||
|
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
|
||||||
|
|
||||||
|
COPY --link . ./
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/opt/sccache,sharing=locked \
|
||||||
|
--mount=type=cache,target=/var/cache/sccache2,sharing=locked \
|
||||||
|
--mount=type=cache,target=/root/.m2 <<"EOF"
|
||||||
|
rm -rf implementations/tdlight/td_tools_build implementations/tdlight/build api/target-legacy api/target api/.ci-friendly-pom.xml implementations/tdlight/td/generate/auto natives/src/main/java/it/tdlight/jni natives/build natives/tdjni_bin natives/tdjni_docs
|
||||||
|
mkdir -p implementations/tdlight/build implementations/tdlight/build/td_bin/bin implementations/tdlight/td_tools_build/java/it/tdlight/jni api/src/main/java-legacy/it/tdlight/jni api/src/main/java-sealed/it/tdlight/jni natives/src/main/java/it/tdlight/jni natives/build natives/tdjni_bin natives/tdjni_docs
|
||||||
|
cd implementations/tdlight/td_tools_build
|
||||||
|
CXXFLAGS="-stdlib=libc++" CC="$HOST_CMAKE_C_COMPILER" CXX="$HOST_CMAKE_CXX_COMPILER" cmake \
|
||||||
|
-DCMAKE_C_COMPILER="${HOST_CMAKE_C_COMPILER}" \
|
||||||
|
-DCMAKE_CXX_COMPILER="${HOST_CMAKE_CXX_COMPILER}" \
|
||||||
|
-DCMAKE_C_FLAGS="${CMAKE_C_FLAGS} ${HOST_CMAKE_C_FLAGS}" \
|
||||||
|
-DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} ${HOST_CMAKE_CXX_FLAGS}" \
|
||||||
|
-DCMAKE_EXE_LINKER_FLAGS="${CMAKE_EXE_LINKER_FLAGS} ${HOST_CMAKE_EXE_LINKER_FLAGS}" \
|
||||||
|
\
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_C_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DCMAKE_C_FLAGS_RELEASE="" \
|
||||||
|
-DCMAKE_CXX_FLAGS_RELEASE="-O0 -DNDEBUG" \
|
||||||
|
-DTD_ENABLE_LTO=OFF \
|
||||||
|
-DTD_ENABLE_JNI=ON ..
|
||||||
|
cmake --build . --target prepare_cross_compiling --parallel "$(nproc)"
|
||||||
|
cmake --build . --target td_generate_java_api --parallel "$(nproc)"
|
||||||
|
cd ../../../
|
||||||
|
EOF
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.m2 <<"EOF"
|
||||||
|
./implementations/tdlight/td_tools_build/td/generate/td_generate_java_api TdApi "./implementations/tdlight/td/generate/auto/tlo/td_api.tlo" "./natives/src/main/java" "it/tdlight/jni"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
COPY <<EOF ./toolchain.cmake
|
||||||
|
set(CMAKE_CROSSCOMPILING TRUE)
|
||||||
|
SET(CMAKE_SYSTEM_NAME Linux)
|
||||||
|
set(CMAKE_SYSTEM_PROCESSOR $ARCH_TRIPLE)
|
||||||
|
set(TARGET_TRIPLE $ARCH_TRIPLE-linux-$TRIPLE_GNU)
|
||||||
|
|
||||||
|
if(EXISTS "/usr/bin/clang-14")
|
||||||
|
set(CMAKE_C_COMPILER /usr/bin/clang-14)
|
||||||
|
set(CMAKE_CXX_COMPILER /usr/bin/clang++-14)
|
||||||
|
set(CMAKE_ASM_COMPILER /usr/bin/clang-14)
|
||||||
|
set(CMAKE_AR "/usr/bin/llvm-ar-14" CACHE FILEPATH "" FORCE)
|
||||||
|
elseif(EXISTS "/usr/bin/clang-12")
|
||||||
|
set(CMAKE_C_COMPILER /usr/bin/clang-12)
|
||||||
|
set(CMAKE_CXX_COMPILER /usr/bin/clang++-12)
|
||||||
|
set(CMAKE_ASM_COMPILER /usr/bin/clang-12)
|
||||||
|
set(CMAKE_AR "/usr/bin/llvm-ar-12" CACHE FILEPATH "" FORCE)
|
||||||
|
elseif(EXISTS "/usr/bin/clang-9")
|
||||||
|
set(CMAKE_C_COMPILER /usr/bin/clang-9)
|
||||||
|
set(CMAKE_CXX_COMPILER /usr/bin/clang++-9)
|
||||||
|
set(CMAKE_ASM_COMPILER /usr/bin/clang-9)
|
||||||
|
set(CMAKE_AR "/usr/bin/llvm-ar-9" CACHE FILEPATH "" FORCE)
|
||||||
|
else()
|
||||||
|
set(CMAKE_C_COMPILER /usr/bin/clang)
|
||||||
|
set(CMAKE_CXX_COMPILER /usr/bin/clang++)
|
||||||
|
set(CMAKE_ASM_COMPILER /usr/bin/clang)
|
||||||
|
set(CMAKE_AR "/usr/bin/llvm-ar" CACHE FILEPATH "" FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(CMAKE_C_COMPILER_TARGET \${TARGET_TRIPLE})
|
||||||
|
set(CMAKE_CXX_COMPILER_TARGET \${TARGET_TRIPLE})
|
||||||
|
set(CMAKE_ASM_COMPILER_TARGET \${TARGET_TRIPLE})
|
||||||
|
|
||||||
|
set(CMAKE_INCLUDE_PATH /usr/include/\${TARGET_TRIPLE} /root/cross-build-pkgs/usr/include/\${TARGET_TRIPLE} /root/cross-build-pkgs/usr/include)
|
||||||
|
set(CMAKE_LIBRARY_PATH /usr/lib/\${TARGET_TRIPLE} /root/cross-build-pkgs/usr/lib/\${TARGET_TRIPLE} /root/cross-build-pkgs/lib/\${TARGET_TRIPLE})
|
||||||
|
set(CMAKE_PROGRAM_PATH /usr/bin/\${TARGET_TRIPLE} /root/cross-build-pkgs/usr/bin/\${TARGET_TRIPLE})
|
||||||
|
|
||||||
|
# Set various compiler flags
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS_INIT "-fuse-ld=lld -rtlib=compiler-rt -unwindlib=libunwind")
|
||||||
|
set(CMAKE_MODULE_LINKER_FLAGS_INIT "-fuse-ld=lld -rtlib=compiler-rt -unwindlib=libunwind")
|
||||||
|
set(CMAKE_SHARED_LINKER_FLAGS_INIT "-fuse-ld=lld -rtlib=compiler-rt -unwindlib=libunwind")
|
||||||
|
set(CMAKE_CXX_FLAGS_INIT "-stdlib=libc++ -std=c++14")
|
||||||
|
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
|
||||||
|
|
||||||
|
# Use our definitions for compiler tools
|
||||||
|
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||||
|
|
||||||
|
# This must be set or compiler checks fail when linking
|
||||||
|
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
|
||||||
|
|
||||||
|
if(EXISTS "/usr/lib/jvm/java-17-openjdk-amd64")
|
||||||
|
SET(JAVA_HOME "/usr/lib/jvm/java-17-openjdk-amd64")
|
||||||
|
else()
|
||||||
|
SET(JAVA_HOME "/usr/lib/jvm/default-java")
|
||||||
|
endif()
|
||||||
|
SET(JAVA_INCLUDE_PATH "\${JAVA_HOME}/include")
|
||||||
|
SET(JAVA_AWT_INCLUDE_PATH "\${JAVA_HOME}/include")
|
||||||
|
SET(JAVA_INCLUDE_PATH2 "\${JAVA_HOME}/include/linux")
|
||||||
|
SET(JAVA_CROSS_HOME "/usr/lib/jvm/java-17-openjdk-$ARCH_DEBIAN")
|
||||||
|
SET(JAVA_JVM_LIBRARY "\${JAVA_CROSS_HOME}/lib/server/libjvm.so")
|
||||||
|
SET(JAVA_AWT_LIBRARY "\${JAVA_CROSS_HOME}/lib/libawt.so")
|
||||||
|
|
||||||
|
if("$ARCH_DEBIAN" STREQUAL "armhf" OR "$ARCH_DEBIAN" STREQUAL "arm64")
|
||||||
|
set(CMAKE_THREAD_LIBS_INIT "-lpthread")
|
||||||
|
set(CMAKE_HAVE_THREADS_LIBRARY 1)
|
||||||
|
set(CMAKE_USE_WIN32_THREADS_INIT 0)
|
||||||
|
set(CMAKE_USE_PTHREADS_INIT 1)
|
||||||
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||||
|
endif()
|
||||||
|
EOF
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/opt/sccache,sharing=locked \
|
||||||
|
--mount=type=cache,target=/var/cache/sccache2,sharing=locked \
|
||||||
|
--mount=type=cache,target=/root/.m2 <<"EOF"
|
||||||
|
cd implementations/tdlight/build
|
||||||
|
export INSTALL_PREFIX="$(readlink -e ./td_bin/)"
|
||||||
|
export INSTALL_BINDIR="$(readlink -e ./td_bin/bin)"
|
||||||
|
cmake \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_C_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DTD_SKIP_BENCHMARK=ON -DTD_SKIP_TEST=ON -DTD_SKIP_TG_CLI=ON \
|
||||||
|
-DTD_ENABLE_LTO=ON \
|
||||||
|
-DTD_ENABLE_JNI=ON \
|
||||||
|
-DCMAKE_INSTALL_PREFIX:PATH="$INSTALL_PREFIX" \
|
||||||
|
-DCMAKE_INSTALL_BINDIR:PATH="$INSTALL_BINDIR" \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE="../../../${TOOLCHAIN_FILE}" ..
|
||||||
|
cmake --build . --target install --config Release --parallel "$(nproc)"
|
||||||
|
cd ../../../
|
||||||
|
EOF
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/opt/sccache,sharing=locked \
|
||||||
|
--mount=type=cache,target=/var/cache/sccache2,sharing=locked \
|
||||||
|
--mount=type=cache,target=/root/.m2 <<"EOF"
|
||||||
|
cd natives/build
|
||||||
|
cmake \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_C_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DTD_GENERATED_BINARIES_DIR="$(readlink -e ../../implementations/tdlight/td_tools_build/td/generate)" \
|
||||||
|
-DTD_SRC_DIR="$(readlink -e ../../implementations/tdlight)" \
|
||||||
|
-DTDNATIVES_BIN_DIR="$(readlink -e ../tdjni_bin/)" \
|
||||||
|
-DTDNATIVES_DOCS_BIN_DIR="$(readlink -e ../tdjni_docs/)" \
|
||||||
|
-DTd_DIR:PATH="$(readlink -e ../../implementations/tdlight/build/td_bin/lib/cmake/Td)" \
|
||||||
|
-DJAVA_SRC_DIR="$(readlink -e ../src/main/java)" \
|
||||||
|
-DTDNATIVES_CPP_SRC_DIR="$(readlink -e ../src/main/cpp)" \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE="../../${TOOLCHAIN_FILE}" \
|
||||||
|
../src/main/cpp
|
||||||
|
cmake --build . --target install --config Release --parallel "$(nproc)"
|
||||||
|
cd ../../
|
||||||
|
EOF
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/opt/sccache,sharing=locked \
|
||||||
|
--mount=type=cache,target=/var/cache/sccache2,sharing=locked \
|
||||||
|
--mount=type=cache,target=/root/.m2 <<"EOF"
|
||||||
|
cd natives
|
||||||
|
mkdir -p src/main/resources/META-INF/tdlightjni/
|
||||||
|
mv tdjni_bin/libtdjni.so src/main/resources/META-INF/tdlightjni/libtdjni.linux_${ARCH_DEBIAN}_clang_ssl3.so
|
||||||
|
mvn -B -f pom.xml -Drevision="$REVISION" -Dnative.type.classifier=linux_${ARCH_DEBIAN}_clang_ssl3 package
|
||||||
|
cd ..
|
||||||
|
EOF
|
||||||
|
|
||||||
|
FROM debian:bookworm-backports AS maven
|
||||||
|
SHELL ["/bin/bash", "-exc"]
|
||||||
|
WORKDIR /source
|
||||||
|
COPY --from=build /build/natives /source/natives
|
||||||
|
ENTRYPOINT ["/bin/true"]
|
||||||
|
|
||||||
|
FROM debian:bookworm-backports
|
||||||
|
ARG REVISION="1.0.0.0-SNAPSHOT"
|
||||||
|
ARG ARCH_DEBIAN
|
||||||
|
ARG ARCH_TRIPLE
|
||||||
|
ARG TRIPLE_GNU
|
||||||
|
WORKDIR /out
|
||||||
|
COPY --from=build /build/natives natives
|
||||||
|
COPY --from=build /build/natives/src/main/resources/META-INF/tdlightjni/libtdjni.linux_${ARCH_DEBIAN}_clang_ssl3.so libtdjni.so
|
||||||
|
COPY --from=build /build/natives/target-linux_${ARCH_DEBIAN}_clang_ssl3/tdlight-natives-${REVISION}-linux_${ARCH_DEBIAN}_clang_ssl3.jar tdlight-natives.jar
|
||||||
|
USER 65534:65534
|
||||||
|
ENTRYPOINT ["/bin/true"]
|
275
tdlight.arch.ssl3.gnu.dockerfile
Normal file
275
tdlight.arch.ssl3.gnu.dockerfile
Normal file
@ -0,0 +1,275 @@
|
|||||||
|
# use "sid" for riscv64
|
||||||
|
ARG DEBIAN_VERSION=bookworm-backports
|
||||||
|
FROM debian:${DEBIAN_VERSION} AS ssl3_debian
|
||||||
|
WORKDIR /build
|
||||||
|
SHELL ["/bin/bash", "-exc"]
|
||||||
|
|
||||||
|
ARG REVISION="1.0.0.0-SNAPSHOT"
|
||||||
|
# amd64, i386, ppc64el, riscv64, armhf, arm64
|
||||||
|
ARG ARCH_DEBIAN
|
||||||
|
# x86_64, i386, powerpc64le, riscv64, arm, aarch64
|
||||||
|
ARG ARCH_TRIPLE
|
||||||
|
# gnu, gnueabihf (armhf)
|
||||||
|
ARG TRIPLE_GNU
|
||||||
|
ARG NATIVE="false"
|
||||||
|
ARG SCCACHE_GHA_ENABLED=off
|
||||||
|
ARG ACTIONS_CACHE_URL
|
||||||
|
ARG ACTIONS_RUNTIME_TOKEN
|
||||||
|
|
||||||
|
# Check for mandatory build arguments
|
||||||
|
RUN : "${ARCH_DEBIAN:?Build argument needs to be set and non-empty.}"
|
||||||
|
RUN : "${ARCH_TRIPLE:?Build argument needs to be set and non-empty.}"
|
||||||
|
RUN : "${TRIPLE_GNU:?Build argument needs to be set and non-empty.}"
|
||||||
|
|
||||||
|
RUN rm -f /etc/apt/apt.conf.d/docker-clean; echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
COPY .docker ./.docker
|
||||||
|
# Install sccache to greatly speedup builds in the CI
|
||||||
|
RUN --mount=type=cache,target=/opt/sccache,sharing=locked --mount=type=cache,target=/var/lib/apt,sharing=locked --mount=type=cache,target=/var/cache/sccache2,sharing=locked .docker/install-sccache.sh
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
||||||
|
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
||||||
|
--mount=type=cache,target=/var/cache/sccache2,sharing=locked <<"EOF"
|
||||||
|
dpkg --add-architecture ${ARCH_DEBIAN}
|
||||||
|
apt-get --assume-yes update
|
||||||
|
apt-get --assume-yes -o Dpkg::Options::="--force-overwrite" install --no-install-recommends openjdk-17-jdk-headless
|
||||||
|
if [[ "$NATIVE" != "true" ]]; then
|
||||||
|
./.docker/downloadthis.sh /var/cache/apt/downloaded_tmp libssl-dev:${ARCH_DEBIAN} /root/cross-build-pkgs/
|
||||||
|
./.docker/downloadthis.sh /var/cache/apt/downloaded_tmp libssl3:${ARCH_DEBIAN} /root/cross-build-pkgs/
|
||||||
|
./.docker/downloadthis.sh /var/cache/apt/downloaded_tmp zlib1g-dev:${ARCH_DEBIAN} /root/cross-build-pkgs/
|
||||||
|
./.docker/downloadthis.sh /var/cache/apt/downloaded_tmp zlib1g:${ARCH_DEBIAN} /root/cross-build-pkgs/
|
||||||
|
./.docker/downloadthis.sh /var/cache/apt/downloaded_tmp openjdk-17-jre-headless:${ARCH_DEBIAN} /root/cross-build-pkgs/
|
||||||
|
./.docker/downloadthis.sh /var/cache/apt/downloaded_tmp openjdk-17-jdk-headless:${ARCH_DEBIAN} /root/cross-build-pkgs/
|
||||||
|
./.docker/SymlinkPrefix.javash "/root/cross-build-pkgs/" "/" "./"
|
||||||
|
fi
|
||||||
|
apt-get --assume-yes -o Dpkg::Options::="--force-overwrite" install --no-install-recommends \
|
||||||
|
g++-12 gcc libstdc++-12-dev zlib1g-dev linux-libc-dev libssl-dev gperf \
|
||||||
|
tree git maven php-cli php-readline make cmake
|
||||||
|
|
||||||
|
if [[ "$NATIVE" != "true" ]]; then
|
||||||
|
apt-get --assume-yes -o Dpkg::Options::="--force-overwrite" install --no-install-recommends \
|
||||||
|
g++-12-${ARCH_TRIPLE/_/-}-linux-${TRIPLE_GNU} gcc-12-${ARCH_TRIPLE/_/-}-linux-${TRIPLE_GNU} \
|
||||||
|
libatomic1-${ARCH_DEBIAN}-cross linux-libc-dev-${ARCH_DEBIAN}-cross libc6-dev-${ARCH_DEBIAN}-cross libgcc-12-dev-${ARCH_DEBIAN}-cross libstdc++-12-dev-${ARCH_DEBIAN}-cross
|
||||||
|
fi
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
FROM ssl3_debian AS build
|
||||||
|
SHELL ["/bin/bash", "-exc"]
|
||||||
|
ARG REVISION="1.0.0.0-SNAPSHOT"
|
||||||
|
ARG ARCH_DEBIAN
|
||||||
|
ARG ARCH_TRIPLE
|
||||||
|
ARG TRIPLE_GNU
|
||||||
|
ARG NATIVE=false
|
||||||
|
ARG SCCACHE_GHA_ENABLED=off
|
||||||
|
ARG ACTIONS_CACHE_URL
|
||||||
|
ARG ACTIONS_RUNTIME_TOKEN
|
||||||
|
|
||||||
|
ENV SCCACHE_DIR=/var/cache/sccache2
|
||||||
|
|
||||||
|
# Use c++11
|
||||||
|
ENV CMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS}"
|
||||||
|
|
||||||
|
ENV CC="/usr/bin/gcc-12"
|
||||||
|
ENV CXX="/usr/bin/g++-12"
|
||||||
|
ENV CMAKE_C_FLAGS="${CMAKE_C_FLAGS}"
|
||||||
|
ENV CMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti"
|
||||||
|
ENV CMAKE_SHARED_LINKER_FLAGS="${CMAKE_SHARED_LINKER_FLAGS} -Wl,--gc-sections -Wl,--exclude-libs,ALL"
|
||||||
|
ENV CMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -flto -O3"
|
||||||
|
ENV CCACHE=/opt/sccache/sccache
|
||||||
|
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
|
||||||
|
|
||||||
|
COPY --link . ./
|
||||||
|
|
||||||
|
COPY <<EOF ./toolchain_native.cmake
|
||||||
|
set(CMAKE_CROSSCOMPILING FALSE)
|
||||||
|
SET(CMAKE_SYSTEM_NAME Linux)
|
||||||
|
set(CMAKE_SYSTEM_PROCESSOR $ARCH_TRIPLE)
|
||||||
|
set(TARGET_TRIPLE $ARCH_TRIPLE-linux-$TRIPLE_GNU)
|
||||||
|
|
||||||
|
set(CMAKE_C_COMPILER /usr/bin/gcc-12)
|
||||||
|
set(CMAKE_CXX_COMPILER /usr/bin/g++-12)
|
||||||
|
set(CMAKE_AR "/usr/bin/gcc-ar-12" CACHE FILEPATH "" FORCE)
|
||||||
|
|
||||||
|
set(CMAKE_C_COMPILER_TARGET \${TARGET_TRIPLE})
|
||||||
|
set(CMAKE_CXX_COMPILER_TARGET \${TARGET_TRIPLE})
|
||||||
|
set(CMAKE_ASM_COMPILER_TARGET \${TARGET_TRIPLE})
|
||||||
|
|
||||||
|
set(CMAKE_INCLUDE_PATH /usr/include/\${TARGET_TRIPLE} /usr/include)
|
||||||
|
set(CMAKE_LIBRARY_PATH /usr/lib/\${TARGET_TRIPLE} /lib/\${TARGET_TRIPLE})
|
||||||
|
set(CMAKE_PROGRAM_PATH /usr/bin/\${TARGET_TRIPLE})
|
||||||
|
|
||||||
|
# Set various compiler flags
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS_INIT "-flto -fno-fat-lto-objects")
|
||||||
|
set(CMAKE_MODULE_LINKER_FLAGS_INIT "-flto -fno-fat-lto-objects")
|
||||||
|
set(CMAKE_SHARED_LINKER_FLAGS_INIT "-flto -fno-fat-lto-objects")
|
||||||
|
set(CMAKE_CXX_FLAGS_INIT "-flto -fno-fat-lto-objects")
|
||||||
|
|
||||||
|
if(EXISTS "/usr/lib/jvm/java-17-openjdk-amd64")
|
||||||
|
SET(JAVA_HOME "/usr/lib/jvm/java-17-openjdk-amd64")
|
||||||
|
else()
|
||||||
|
SET(JAVA_HOME "/usr/lib/jvm/default-java")
|
||||||
|
endif()
|
||||||
|
SET(JAVA_INCLUDE_PATH "\${JAVA_HOME}/include")
|
||||||
|
SET(JAVA_AWT_INCLUDE_PATH "\${JAVA_HOME}/include")
|
||||||
|
SET(JAVA_INCLUDE_PATH2 "\${JAVA_HOME}/include/linux")
|
||||||
|
SET(JAVA_CROSS_HOME "/usr/lib/jvm/java-17-openjdk-$ARCH_DEBIAN")
|
||||||
|
SET(JAVA_JVM_LIBRARY "\${JAVA_CROSS_HOME}/lib/server/libjvm.so")
|
||||||
|
SET(JAVA_AWT_LIBRARY "\${JAVA_CROSS_HOME}/lib/libawt.so")
|
||||||
|
EOF
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/opt/sccache,sharing=locked \
|
||||||
|
--mount=type=cache,target=/var/cache/sccache2,sharing=locked \
|
||||||
|
--mount=type=cache,target=/root/.m2 <<"EOF"
|
||||||
|
export TOOLCHAIN_ARGS; if [[ "$NATIVE" == "true" ]]; then TOOLCHAIN_ARGS="toolchain_native.cmake"; else TOOLCHAIN_ARGS="toolchain.cmake"; fi
|
||||||
|
rm -rf implementations/tdlight/td_tools_build implementations/tdlight/build api/target-legacy api/target api/.ci-friendly-pom.xml implementations/tdlight/td/generate/auto natives/src/main/java/it/tdlight/jni natives/build natives/tdjni_bin natives/tdjni_docs
|
||||||
|
mkdir -p implementations/tdlight/build implementations/tdlight/build/td_bin/bin implementations/tdlight/td_tools_build/java/it/tdlight/jni api/src/main/java-legacy/it/tdlight/jni api/src/main/java-sealed/it/tdlight/jni natives/src/main/java/it/tdlight/jni natives/build natives/tdjni_bin natives/tdjni_docs
|
||||||
|
cd implementations/tdlight/td_tools_build
|
||||||
|
cmake \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_C_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DCMAKE_C_FLAGS_RELEASE="" \
|
||||||
|
-DCMAKE_CXX_FLAGS_RELEASE="-O0 -DNDEBUG" \
|
||||||
|
-DTD_ENABLE_LTO=OFF \
|
||||||
|
-DTD_ENABLE_JNI=ON \
|
||||||
|
-DJAVA_AWT_LIBRARY=/dev/null \
|
||||||
|
-DJAVA_AWT_INCLUDE_PATH=/dev/null \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE="../../../toolchain_native.cmake" \
|
||||||
|
..
|
||||||
|
cmake --build . --target prepare_cross_compiling --parallel "$(nproc)"
|
||||||
|
cmake --build . --target td_generate_java_api --parallel "$(nproc)"
|
||||||
|
cd ../../../
|
||||||
|
EOF
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/root/.m2 <<"EOF"
|
||||||
|
./implementations/tdlight/td_tools_build/td/generate/td_generate_java_api TdApi "./implementations/tdlight/td/generate/auto/tlo/td_api.tlo" "./natives/src/main/java" "it/tdlight/jni"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
COPY <<EOF ./toolchain.cmake
|
||||||
|
set(CMAKE_CROSSCOMPILING TRUE)
|
||||||
|
SET(CMAKE_SYSTEM_NAME Linux)
|
||||||
|
set(CMAKE_SYSTEM_PROCESSOR $ARCH_TRIPLE)
|
||||||
|
set(TARGET_TRIPLE $ARCH_TRIPLE-linux-$TRIPLE_GNU)
|
||||||
|
|
||||||
|
set(CMAKE_C_COMPILER /usr/bin/\${TARGET_TRIPLE}-gcc-12)
|
||||||
|
set(CMAKE_CXX_COMPILER /usr/bin/\${TARGET_TRIPLE}-g++-12)
|
||||||
|
set(CMAKE_AR "/usr/bin/\${TARGET_TRIPLE}-gcc-ar-12" CACHE FILEPATH "" FORCE)
|
||||||
|
|
||||||
|
set(CMAKE_C_COMPILER_TARGET \${TARGET_TRIPLE})
|
||||||
|
set(CMAKE_CXX_COMPILER_TARGET \${TARGET_TRIPLE})
|
||||||
|
set(CMAKE_ASM_COMPILER_TARGET \${TARGET_TRIPLE})
|
||||||
|
|
||||||
|
set(CMAKE_INCLUDE_PATH /usr/include/\${TARGET_TRIPLE} /root/cross-build-pkgs/usr/include/\${TARGET_TRIPLE} /root/cross-build-pkgs/usr/include)
|
||||||
|
set(CMAKE_LIBRARY_PATH /usr/lib/\${TARGET_TRIPLE} /root/cross-build-pkgs/usr/lib/\${TARGET_TRIPLE} /root/cross-build-pkgs/lib/\${TARGET_TRIPLE})
|
||||||
|
set(CMAKE_PROGRAM_PATH /usr/bin/\${TARGET_TRIPLE} /root/cross-build-pkgs/usr/bin/\${TARGET_TRIPLE})
|
||||||
|
|
||||||
|
# Set various compiler flags
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS_INIT "-flto -fno-fat-lto-objects")
|
||||||
|
set(CMAKE_MODULE_LINKER_FLAGS_INIT "-flto -fno-fat-lto-objects")
|
||||||
|
set(CMAKE_SHARED_LINKER_FLAGS_INIT "-flto -fno-fat-lto-objects")
|
||||||
|
set(CMAKE_CXX_FLAGS_INIT "-flto -fno-fat-lto-objects")
|
||||||
|
|
||||||
|
set(CMAKE_SYSROOT /root/cross-build-pkgs)
|
||||||
|
|
||||||
|
# This must be set or compiler checks fail when linking
|
||||||
|
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
|
||||||
|
|
||||||
|
if(EXISTS "/usr/lib/jvm/java-17-openjdk-amd64")
|
||||||
|
SET(JAVA_HOME "/usr/lib/jvm/java-17-openjdk-amd64")
|
||||||
|
else()
|
||||||
|
SET(JAVA_HOME "/usr/lib/jvm/default-java")
|
||||||
|
endif()
|
||||||
|
SET(JAVA_INCLUDE_PATH "\${JAVA_HOME}/include")
|
||||||
|
SET(JAVA_AWT_INCLUDE_PATH "\${JAVA_HOME}/include")
|
||||||
|
SET(JAVA_INCLUDE_PATH2 "\${JAVA_HOME}/include/linux")
|
||||||
|
SET(JAVA_CROSS_HOME "/root/cross-build-pkgs/usr/lib/jvm/java-17-openjdk-$ARCH_DEBIAN")
|
||||||
|
SET(JAVA_JVM_LIBRARY "\${JAVA_CROSS_HOME}/lib/server/libjvm.so")
|
||||||
|
SET(JAVA_AWT_LIBRARY "\${JAVA_CROSS_HOME}/lib/libawt.so")
|
||||||
|
|
||||||
|
if("$ARCH_DEBIAN" STREQUAL "armhf" OR "$ARCH_DEBIAN" STREQUAL "arm64")
|
||||||
|
set(CMAKE_THREAD_LIBS_INIT "-lpthread")
|
||||||
|
set(CMAKE_HAVE_THREADS_LIBRARY 1)
|
||||||
|
set(CMAKE_USE_WIN32_THREADS_INIT 0)
|
||||||
|
set(CMAKE_USE_PTHREADS_INIT 1)
|
||||||
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||||
|
endif()
|
||||||
|
EOF
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/opt/sccache,sharing=locked \
|
||||||
|
--mount=type=cache,target=/var/cache/sccache2,sharing=locked \
|
||||||
|
--mount=type=cache,target=/root/.m2 <<"EOF"
|
||||||
|
export TOOLCHAIN_ARGS; if [[ "$NATIVE" == "true" ]]; then TOOLCHAIN_ARGS="toolchain_native.cmake"; else TOOLCHAIN_ARGS="toolchain.cmake"; fi
|
||||||
|
cd implementations/tdlight/build
|
||||||
|
export INSTALL_PREFIX="$(readlink -e ./td_bin/)"
|
||||||
|
export INSTALL_BINDIR="$(readlink -e ./td_bin/bin)"
|
||||||
|
cmake \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_C_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DTD_SKIP_BENCHMARK=ON -DTD_SKIP_TEST=ON -DTD_SKIP_TG_CLI=ON \
|
||||||
|
-DTD_ENABLE_LTO=ON \
|
||||||
|
-DTD_ENABLE_JNI=ON \
|
||||||
|
-DCMAKE_INSTALL_PREFIX:PATH="$INSTALL_PREFIX" \
|
||||||
|
-DCMAKE_INSTALL_BINDIR:PATH="$INSTALL_BINDIR" \
|
||||||
|
-DJAVA_AWT_LIBRARY=/dev/null \
|
||||||
|
-DJAVA_AWT_INCLUDE_PATH=/dev/null \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE="../../../$TOOLCHAIN_ARGS" \
|
||||||
|
..
|
||||||
|
cmake --build . --target install --config Release --parallel "$(nproc)"
|
||||||
|
cd ../../../
|
||||||
|
EOF
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/opt/sccache,sharing=locked \
|
||||||
|
--mount=type=cache,target=/var/cache/sccache2,sharing=locked \
|
||||||
|
--mount=type=cache,target=/root/.m2 <<"EOF"
|
||||||
|
export TOOLCHAIN_ARGS; if [[ "$NATIVE" == "true" ]]; then TOOLCHAIN_ARGS="toolchain_native.cmake"; else TOOLCHAIN_ARGS="toolchain.cmake"; fi
|
||||||
|
cd natives/build
|
||||||
|
cmake \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_C_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER="$CCACHE" \
|
||||||
|
-DTD_GENERATED_BINARIES_DIR="$(readlink -e ../../implementations/tdlight/td_tools_build/td/generate)" \
|
||||||
|
-DTD_SRC_DIR="$(readlink -e ../../implementations/tdlight)" \
|
||||||
|
-DTDNATIVES_BIN_DIR="$(readlink -e ../tdjni_bin/)" \
|
||||||
|
-DTDNATIVES_DOCS_BIN_DIR="$(readlink -e ../tdjni_docs/)" \
|
||||||
|
-DTd_DIR:PATH="$(readlink -e ../../implementations/tdlight/build/td_bin/lib/cmake/Td)" \
|
||||||
|
-DJAVA_SRC_DIR="$(readlink -e ../src/main/java)" \
|
||||||
|
-DTDNATIVES_CPP_SRC_DIR="$(readlink -e ../src/main/cpp)" \
|
||||||
|
-DJAVA_AWT_LIBRARY=/dev/null \
|
||||||
|
-DJAVA_AWT_INCLUDE_PATH=/dev/null \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE="../../$TOOLCHAIN_ARGS" \
|
||||||
|
../src/main/cpp
|
||||||
|
cmake --build . --target install --config Release --parallel "$(nproc)"
|
||||||
|
cd ../../
|
||||||
|
EOF
|
||||||
|
|
||||||
|
RUN --mount=type=cache,target=/opt/sccache,sharing=locked \
|
||||||
|
--mount=type=cache,target=/var/cache/sccache2,sharing=locked \
|
||||||
|
--mount=type=cache,target=/root/.m2 <<"EOF"
|
||||||
|
cd natives
|
||||||
|
mkdir -p src/main/resources/META-INF/tdlightjni/
|
||||||
|
mv tdjni_bin/libtdjni.so src/main/resources/META-INF/tdlightjni/libtdjni.linux_${ARCH_DEBIAN}_gnu_ssl3.so
|
||||||
|
mvn -B -f pom.xml -Drevision="$REVISION" -Dnative.type.classifier=linux_${ARCH_DEBIAN}_gnu_ssl3 package
|
||||||
|
cd ..
|
||||||
|
EOF
|
||||||
|
|
||||||
|
FROM debian:buster-backports AS maven
|
||||||
|
SHELL ["/bin/bash", "-exc"]
|
||||||
|
WORKDIR /source
|
||||||
|
COPY --from=build /build/natives /source/natives
|
||||||
|
ENTRYPOINT ["/bin/true"]
|
||||||
|
|
||||||
|
FROM debian:bookworm-backports
|
||||||
|
ARG REVISION="1.0.0.0-SNAPSHOT"
|
||||||
|
ARG ARCH_DEBIAN
|
||||||
|
ARG ARCH_TRIPLE
|
||||||
|
ARG TRIPLE_GNU
|
||||||
|
ARG NATIVE=off
|
||||||
|
WORKDIR /out
|
||||||
|
COPY --from=build /build/natives natives
|
||||||
|
COPY --from=build /build/natives/src/main/resources/META-INF/tdlightjni/libtdjni.linux_${ARCH_DEBIAN}_gnu_ssl3.so libtdjni.so
|
||||||
|
COPY --from=build /build/natives/target-linux_${ARCH_DEBIAN}_gnu_ssl3/tdlight-natives-${REVISION}-linux_${ARCH_DEBIAN}_gnu_ssl3.jar tdlight-natives.jar
|
||||||
|
USER 65534:65534
|
||||||
|
ENTRYPOINT ["/bin/true"]
|
Loading…
Reference in New Issue
Block a user