aboutsummaryrefslogtreecommitdiff
path: root/net-im/telegram-desktop/Makefile
blob: bb95252f5ed4fbef1ab1700390aefea872854195 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
PORTNAME=	telegram-desktop
DISTVERSION=	4.16.8
CATEGORIES=	net-im
MASTER_SITES=	https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/releases/download/v${DISTVERSION}/
DISTNAME=	tdesktop-${DISTVERSION}-full
DISTFILES=	${DISTNAME}${EXTRACT_SUFX}

MAINTAINER=	ports@FreeBSD.org
COMMENT=	Telegram Desktop messaging app
WWW=		https://desktop.telegram.org/

LICENSE=	GPLv3
LICENSE_FILE=	${WRKSRC}/LICENSE

BROKEN_i386=	does not build, webrtc related
#BROKEN_SSL=	openssl openssl31
#BROKEN_SSL_REASON=	undefined symbol: ERR_load_BIO_strings
NOT_FOR_ARCHS=		powerpc powerpc64 powerpcspe
NOT_FOR_ARCHS_REASON=	Only little endian is supported

BUILD_DEPENDS=	boost-libs>0:devel/boost-libs \
		microsoft-gsl>0:devel/microsoft-gsl \
		range-v3>0:devel/range-v3 \
		tl-expected>0:devel/tl-expected \
		v4l_compat>0:multimedia/v4l_compat \
		yasm:devel/yasm \
		${LOCALBASE}/lib/libtg_owt.a:net-im/tg_owt
LIB_DEPENDS=	libabsl_base.so:devel/abseil \
		libavformat.so:multimedia/ffmpeg \
		libdbus-1.so:devel/dbus \
		libdispatch.so:devel/libdispatch \
		libfmt.so:devel/libfmt \
		libhunspell-1.7.so:textproc/hunspell \
		liblz4.so:archivers/liblz4 \
		libopenh264.so:multimedia/openh264 \
		libopus.so:audio/opus \
		libpipewire-0.3.so:multimedia/pipewire \
		libprotobuf.so:devel/protobuf \
		libqrcodegencpp.so:graphics/qr-code-generator \
		librnnoise.so:audio/rnnoise \
		libxcb-keysyms.so:x11/xcb-util-keysyms \
		libxkbcommon.so:x11/libxkbcommon \
		libxxhash.so:devel/xxhash \
		libvpx.so:multimedia/libvpx

FLAVORS=	qt5 qt6
FLAVOR?=	${FLAVORS:[1]}
qt5_PKGNAMESUFFIX=
qt6_PKGNAMESUFFIX=	-qt6
qt5_CONFLICTS_INSTALL=	${PORTNAME}-qt6
qt6_CONFLICTS_INSTALL=	${PORTNAME}

USES=		cmake compiler:c++20-lang desktop-file-utils gl gnome jpeg localbase \
		minizip openal pkgconfig python:build ssl xorg

USE_GITHUB=	nodefault
GH_ACCOUNT=	telegramdesktop
GH_PROJECT=	tdesktop

.if ${FLAVOR} == qt5
USES+=		kde:5 qt:5
USE_QT=		buildtools:build core dbus declarative gui imageformats network qmake:build \
		svg wayland widgets
USE_KDE=	coreaddons kimageformats
.else
USES+=		qt:6
USE_QT=		5compat base declarative imageformats lottie shadertools svg tools:build wayland
.endif

USE_GL=		gl
USE_GNOME=	glib20 glibmm26 introspection
USE_XORG=	x11 xcb xcomposite xdamage xext xfixes xrandr xrender xtst

CMAKE_ARGS=	-DTDESKTOP_API_ID=${TELEGRAM_API_ID} -DTDESKTOP_API_HASH=${TELEGRAM_API_HASH}
CMAKE_ON=	DESKTOP_APP_USE_PACKAGED DESKTOP_APP_DISABLE_CRASH_REPORTS \
		DESKTOP_APP_DISABLE_SCUDO \
		DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION

# Since cmake 3.25.0, BSDs are no longer recognised as Linux (in this port).
CMAKE_ARGS+=	-DLINUX=true

# libdispatch components
LDFLAGS+=	-lBlocksRuntime

# Telegram uses OpenAL for its audio, but libtgvoip (for voice calls) can use PulseAudio or ALSA.
# It dynamically loads PulseAudio, and if this fails, it loads ALSA.
# If both of them are not installed, then voice calls do not work, but other functionalities still work.
OPTIONS_DEFINE=		SYSTEM_FONTS
OPTIONS_DEFAULT=	ALSA
OPTIONS_GROUP=	AUDIO
OPTIONS_GROUP_AUDIO=	ALSA PULSEAUDIO

AUDIO_DESC=		Audio backend for voice calls
SYSTEM_FONTS_DESC=	Use system fonts instead of bundled patched ones

ALSA_LIB_DEPENDS=	libasound.so:audio/alsa-lib
PULSEAUDIO_LIB_DEPENDS=	libpulse.so:audio/pulseaudio
ALSA_CMAKE_BOOL_OFF=	LIBTGVOIP_DISABLE_ALSA
PULSEAUDIO_CMAKE_BOOL_OFF=	LIBTGVOIP_DISABLE_PULSEAUDIO
SYSTEM_FONTS_CMAKE_BOOL_OFF=	DESKTOP_APP_USE_PACKAGED_FONTS

# Telegram asks each custom build to have its own API ID and hash.
TELEGRAM_API_HASH=	20a3432aab43f24bb4460fceac5ba38d
TELEGRAM_API_ID=	601761

.include <bsd.port.options.mk>

.if ${OPSYS} == FreeBSD && ((${OSVERSION} >= 1400000 && ${OSVERSION} < 1400091) || ${OSVERSION} < 1302507)
#EXTRA_PATCHES=	${PATCHDIR}/extra-patch-CMakeLists.txt
USES+=	llvm:min=16,build
USES:=	${USES:Ncompiler\:*} # XXX avoid warnings
.if defined(WITH_CCACHE_BUILD) && !defined(NO_CCACHE)
CMAKE_ARGS+=	-DCMAKE_CC_COMPILER_LAUNCHER="${LOCALBASE}/bin/ccache" \
		-DCMAKE_CPP_COMPILER_LAUNCHER="${LOCALBASE}/bin/ccache" \
		-DCMAKE_CXX_COMPILER_LAUNCHER="${LOCALBASE}/bin/ccache"
.endif
#.else
#USES+=	compiler:c++20-lang
.endif

post-extract:
	# Some of the third-party components already built, and
	# can be safely removed
	${RM} -rf \
		${WRKSRC}/Telegram/ThirdParty/QR \
		${WRKSRC}/Telegram/ThirdParty/dispatch \
		${WRKSRC}/Telegram/ThirdParty/expected \
		${WRKSRC}/Telegram/ThirdParty/fcitx5-qt \
		${WRKSRC}/Telegram/ThirdParty/hime \
		${WRKSRC}/Telegram/ThirdParty/hunspell \
		${WRKSRC}/Telegram/ThirdParty/jemalloc \
		${WRKSRC}/Telegram/ThirdParty/lz4 \
		${WRKSRC}/Telegram/ThirdParty/minizip \
		${WRKSRC}/Telegram/ThirdParty/jimf \
		${WRKSRC}/Telegram/ThirdParty/plasma-wayland-protocols \
		${WRKSRC}/Telegram/ThirdParty/range-v3 \
		${WRKSRC}/Telegram/ThirdParty/wayland \
		${WRKSRC}/Telegram/ThirdParty/wayland-protocols \
		${WRKSRC}/Telegram/ThirdParty/xxHash

.if ${FLAVOR} == qt5
	${RM} -rf \
		${WRKSRC}/Telegram/ThirdParty/kcoreaddons \
		${WRKSRC}/Telegram/ThirdParty/kimageformats
.endif

post-patch:
	# XXX fix the following on every source file
	# warning: unknown warning option '-Wno-maybe-uninitialized'
	# warning: argument unused during compilation: '-fstack-clash-protection'
	${REINPLACE_CMD} -e /-Wno-maybe-uninitialized/d -e /-fstack-clash-protection/d \
	    ${WRKSRC}/cmake/options_linux.cmake

.include <bsd.port.mk>