CMakeLists.txt 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713
  1. cmake_minimum_required(VERSION 3.6.0)
  2. set(CMAKE_CXX_FLAGS "-std=c++14 -DANDROID -g")
  3. set(CMAKE_C_FLAGS "-w -std=c11 -DANDROID -D_LARGEFILE_SOURCE=1 -g")
  4. set(CMAKE_ASM_FLAGS "${CFLAGS} -x assembler-with-cpp")
  5. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ffunction-sections -fdata-sections")
  6. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffunction-sections -fdata-sections")
  7. set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--exclude-libs,libtgvoip.a,libtgcalls.a,libtgcalls_tp.a,libtgnet.a,liblz4.a,libwebp.a,libflac.a,librlottie.a,libsqlite.a,
  8. ${CMAKE_HOME_DIRECTORY}/ffmpeg/${ANDROID_ABI}/libswscale.a,
  9. ${CMAKE_HOME_DIRECTORY}/ffmpeg/${ANDROID_ABI}/libavformat.a,
  10. ${CMAKE_HOME_DIRECTORY}/ffmpeg/${ANDROID_ABI}/libavcodec.a,
  11. ${CMAKE_HOME_DIRECTORY}/ffmpeg/${ANDROID_ABI}/libavresample.a,
  12. ${CMAKE_HOME_DIRECTORY}/ffmpeg/${ANDROID_ABI}/libavutil.a,
  13. ${CMAKE_HOME_DIRECTORY}/ffmpeg/${ANDROID_ABI}/libswresample.a,
  14. ${CMAKE_HOME_DIRECTORY}/ffmpeg/${ANDROID_ABI}/libvpx.a,
  15. ${CMAKE_HOME_DIRECTORY}/boringssl/lib/libssl_${ANDROID_ABI}.a,
  16. ${CMAKE_HOME_DIRECTORY}/boringssl/lib/libcrypto_${ANDROID_ABI}.a")
  17. if (${ANDROID_ABI} STREQUAL "armeabi-v7a" OR ${ANDROID_ABI} STREQUAL "arm64-v8a")
  18. enable_language(ASM)
  19. else()
  20. enable_language(ASM_NASM)
  21. endif()
  22. add_library(avutil STATIC IMPORTED)
  23. set_target_properties(avutil PROPERTIES IMPORTED_LOCATION ${CMAKE_HOME_DIRECTORY}/ffmpeg/${ANDROID_ABI}/libavutil.a)
  24. add_library(avformat STATIC IMPORTED)
  25. set_target_properties(avformat PROPERTIES IMPORTED_LOCATION ${CMAKE_HOME_DIRECTORY}/ffmpeg/${ANDROID_ABI}/libavformat.a)
  26. add_library(avcodec STATIC IMPORTED)
  27. set_target_properties(avcodec PROPERTIES IMPORTED_LOCATION ${CMAKE_HOME_DIRECTORY}/ffmpeg/${ANDROID_ABI}/libavcodec.a)
  28. add_library(avresample STATIC IMPORTED)
  29. set_target_properties(avresample PROPERTIES IMPORTED_LOCATION ${CMAKE_HOME_DIRECTORY}/ffmpeg/${ANDROID_ABI}/libavresample.a)
  30. add_library(swresample STATIC IMPORTED)
  31. set_target_properties(swresample PROPERTIES IMPORTED_LOCATION ${CMAKE_HOME_DIRECTORY}/ffmpeg/${ANDROID_ABI}/libswresample.a)
  32. add_library(swscale STATIC IMPORTED)
  33. set_target_properties(swscale PROPERTIES IMPORTED_LOCATION ${CMAKE_HOME_DIRECTORY}/ffmpeg/${ANDROID_ABI}/libswscale.a)
  34. add_library(crypto STATIC IMPORTED)
  35. set_target_properties(crypto PROPERTIES IMPORTED_LOCATION ${CMAKE_HOME_DIRECTORY}/boringssl/lib/libcrypto_${ANDROID_ABI}.a)
  36. add_library(ssl STATIC IMPORTED)
  37. set_target_properties(ssl PROPERTIES IMPORTED_LOCATION ${CMAKE_HOME_DIRECTORY}/boringssl/lib/libssl_${ANDROID_ABI}.a)
  38. add_library(libvpx STATIC IMPORTED)
  39. set_target_properties(libvpx PROPERTIES IMPORTED_LOCATION ${CMAKE_HOME_DIRECTORY}/ffmpeg/${ANDROID_ABI}/libvpx.a)
  40. #tgnet
  41. add_library(mozjpeg STATIC
  42. mozjpeg/cjpeg.c mozjpeg/cdjpeg.c mozjpeg/rdgif.c mozjpeg/rdppm.c mozjpeg/rdjpeg.c mozjpeg/rdswitch.c mozjpeg/rdbmp.c
  43. mozjpeg/rdtarga.c mozjpeg/wrbmp.c mozjpeg/wrtarga.c mozjpeg/djpeg.c mozjpeg/cdjpeg.c mozjpeg/rdcolmap.c mozjpeg/rdswitch.c
  44. mozjpeg/wrgif.c mozjpeg/wrppm.c mozjpeg/jpegtran.c mozjpeg/cdjpeg.c mozjpeg/rdswitch.c mozjpeg/transupp.c mozjpeg/turbojpeg.c
  45. mozjpeg/jdatadst-tj.c mozjpeg/jdatasrc-tj.c mozjpeg/jcapimin.c mozjpeg/jcapistd.c mozjpeg/jccoefct.c mozjpeg/jccolor.c
  46. mozjpeg/jcdctmgr.c mozjpeg/jchuff.c mozjpeg/jcext.c mozjpeg/jcicc.c mozjpeg/jcinit.c mozjpeg/jcmainct.c mozjpeg/jcmarker.c
  47. mozjpeg/jcmaster.c mozjpeg/jcomapi.c mozjpeg/jcparam.c mozjpeg/jcphuff.c mozjpeg/jcprepct.c mozjpeg/jcsample.c
  48. mozjpeg/jctrans.c mozjpeg/jdapimin.c mozjpeg/jdapistd.c mozjpeg/jdatadst.c mozjpeg/jdatasrc.c
  49. mozjpeg/jdcoefct.c mozjpeg/jdcolor.c mozjpeg/jddctmgr.c mozjpeg/jdhuff.c mozjpeg/jdicc.c mozjpeg/jdinput.c
  50. mozjpeg/jdmainct.c mozjpeg/jdmarker.c mozjpeg/jdmaster.c mozjpeg/jdmerge.c mozjpeg/jdphuff.c mozjpeg/jdpostct.c mozjpeg/jdsample.c
  51. mozjpeg/jdtrans.c mozjpeg/jerror.c mozjpeg/jfdctflt.c mozjpeg/jfdctfst.c mozjpeg/jfdctint.c mozjpeg/jidctflt.c mozjpeg/jidctfst.c
  52. mozjpeg/jidctint.c mozjpeg/jidctred.c mozjpeg/jquant1.c mozjpeg/jquant2.c mozjpeg/jutils.c mozjpeg/jmemmgr.c mozjpeg/jmemnobs.c)
  53. target_compile_options(mozjpeg PUBLIC
  54. -Os)
  55. set_target_properties(mozjpeg PROPERTIES
  56. ANDROID_ARM_MODE arm)
  57. target_compile_definitions(mozjpeg PUBLIC
  58. BMP_SUPPORTED GIF_SUPPORTED PPM_SUPPORTED TARGA_SUPPORTED)
  59. target_include_directories(mozjpeg PUBLIC
  60. mozjpeg
  61. mozjpeg/simd/nasm)
  62. if (${ANDROID_ABI} STREQUAL "armeabi-v7a")
  63. target_sources(mozjpeg PRIVATE
  64. mozjpeg/simd/arm/jsimd_neon.S
  65. mozjpeg/simd/arm/jsimd.c)
  66. target_compile_definitions(mozjpeg PUBLIC
  67. SIZEOF_SIZE_T=4)
  68. elseif(${ANDROID_ABI} STREQUAL "arm64-v8a")
  69. target_sources(mozjpeg PRIVATE
  70. mozjpeg/simd/arm64/jsimd_neon.S
  71. mozjpeg/simd/arm64/jsimd.c)
  72. target_compile_definitions(mozjpeg PUBLIC
  73. SIZEOF_SIZE_T=8)
  74. elseif(${ANDROID_ABI} STREQUAL "x86")
  75. set(CMAKE_ASM_NASM_COMPILER_ARG1 "${CMAKE_ASM_NASM_COMPILER_ARG1} -DPIC")
  76. target_sources(mozjpeg PRIVATE
  77. mozjpeg/simd/i386/jsimd.c
  78. mozjpeg/simd/i386/jsimdcpu.asm
  79. mozjpeg/simd/i386/jfdctflt-3dn.asm
  80. mozjpeg/simd/i386/jidctflt-3dn.asm
  81. mozjpeg/simd/i386/jquant-3dn.asm
  82. mozjpeg/simd/i386/jccolor-mmx.asm
  83. mozjpeg/simd/i386/jcgray-mmx.asm
  84. mozjpeg/simd/i386/jcsample-mmx.asm
  85. mozjpeg/simd/i386/jdcolor-mmx.asm
  86. mozjpeg/simd/i386/jdmerge-mmx.asm
  87. mozjpeg/simd/i386/jdsample-mmx.asm
  88. mozjpeg/simd/i386/jfdctfst-mmx.asm
  89. mozjpeg/simd/i386/jfdctint-mmx.asm
  90. mozjpeg/simd/i386/jidctfst-mmx.asm
  91. mozjpeg/simd/i386/jidctint-mmx.asm
  92. mozjpeg/simd/i386/jidctred-mmx.asm
  93. mozjpeg/simd/i386/jquant-mmx.asm
  94. mozjpeg/simd/i386/jfdctflt-sse.asm
  95. mozjpeg/simd/i386/jidctflt-sse.asm
  96. mozjpeg/simd/i386/jquant-sse.asm
  97. mozjpeg/simd/i386/jccolor-sse2.asm
  98. mozjpeg/simd/i386/jcgray-sse2.asm
  99. mozjpeg/simd/i386/jchuff-sse2.asm
  100. mozjpeg/simd/i386/jcphuff-sse2.asm
  101. mozjpeg/simd/i386/jcsample-sse2.asm
  102. mozjpeg/simd/i386/jdcolor-sse2.asm
  103. mozjpeg/simd/i386/jdmerge-sse2.asm
  104. mozjpeg/simd/i386/jdsample-sse2.asm
  105. mozjpeg/simd/i386/jfdctfst-sse2.asm
  106. mozjpeg/simd/i386/jfdctint-sse2.asm
  107. mozjpeg/simd/i386/jidctflt-sse2.asm
  108. mozjpeg/simd/i386/jidctfst-sse2.asm
  109. mozjpeg/simd/i386/jidctint-sse2.asm
  110. mozjpeg/simd/i386/jidctred-sse2.asm
  111. mozjpeg/simd/i386/jquantf-sse2.asm
  112. mozjpeg/simd/i386/jquanti-sse2.asm
  113. mozjpeg/simd/i386/jccolor-avx2.asm
  114. mozjpeg/simd/i386/jcgray-avx2.asm
  115. mozjpeg/simd/i386/jcsample-avx2.asm
  116. mozjpeg/simd/i386/jdcolor-avx2.asm
  117. mozjpeg/simd/i386/jdmerge-avx2.asm
  118. mozjpeg/simd/i386/jdsample-avx2.asm
  119. mozjpeg/simd/i386/jfdctint-avx2.asm
  120. mozjpeg/simd/i386/jidctint-avx2.asm
  121. mozjpeg/simd/i386/jquanti-avx2.asm)
  122. target_compile_definitions(mozjpeg PUBLIC
  123. SIZEOF_SIZE_T=4)
  124. elseif(${ANDROID_ABI} STREQUAL "x86_64")
  125. set(CMAKE_ASM_NASM_COMPILER_ARG1 "${CMAKE_ASM_NASM_COMPILER_ARG1} -DPIC")
  126. set(CMAKE_ASM_NASM_FLAGS "${CMAKE_ASM_NASM_FLAGS} -DELF")
  127. set(CMAKE_ASM_NASM_DEBUG_FORMAT "dwarf2")
  128. set(CMAKE_ASM_NASM_FLAGS "${CMAKE_ASM_NASM_FLAGS} -D__x86_64__")
  129. target_sources(mozjpeg PRIVATE
  130. mozjpeg/simd/x86_64/jsimd.c
  131. mozjpeg/simd/x86_64/jsimdcpu.asm
  132. mozjpeg/simd/x86_64/jfdctflt-sse.asm
  133. mozjpeg/simd/x86_64/jccolor-sse2.asm
  134. mozjpeg/simd/x86_64/jcgray-sse2.asm
  135. mozjpeg/simd/x86_64/jchuff-sse2.asm
  136. mozjpeg/simd/x86_64/jcphuff-sse2.asm
  137. mozjpeg/simd/x86_64/jcsample-sse2.asm
  138. mozjpeg/simd/x86_64/jdcolor-sse2.asm
  139. mozjpeg/simd/x86_64/jdmerge-sse2.asm
  140. mozjpeg/simd/x86_64/jdsample-sse2.asm
  141. mozjpeg/simd/x86_64/jfdctfst-sse2.asm
  142. mozjpeg/simd/x86_64/jfdctint-sse2.asm
  143. mozjpeg/simd/x86_64/jidctflt-sse2.asm
  144. mozjpeg/simd/x86_64/jidctfst-sse2.asm
  145. mozjpeg/simd/x86_64/jidctint-sse2.asm
  146. mozjpeg/simd/x86_64/jidctred-sse2.asm
  147. mozjpeg/simd/x86_64/jquantf-sse2.asm
  148. mozjpeg/simd/x86_64/jquanti-sse2.asm
  149. mozjpeg/simd/x86_64/jccolor-avx2.asm
  150. mozjpeg/simd/x86_64/jcgray-avx2.asm
  151. mozjpeg/simd/x86_64/jcsample-avx2.asm
  152. mozjpeg/simd/x86_64/jdcolor-avx2.asm
  153. mozjpeg/simd/x86_64/jdmerge-avx2.asm
  154. mozjpeg/simd/x86_64/jdsample-avx2.asm
  155. mozjpeg/simd/x86_64/jfdctint-avx2.asm
  156. mozjpeg/simd/x86_64/jidctint-avx2.asm
  157. mozjpeg/simd/x86_64/jquanti-avx2.asm)
  158. target_compile_definitions(mozjpeg PUBLIC
  159. SIZEOF_SIZE_T=8)
  160. endif()
  161. #tgnet
  162. add_library(tgnet STATIC
  163. tgnet/ApiScheme.cpp
  164. tgnet/BuffersStorage.cpp
  165. tgnet/ByteArray.cpp
  166. tgnet/ByteStream.cpp
  167. tgnet/Connection.cpp
  168. tgnet/ConnectionSession.cpp
  169. tgnet/ConnectionsManager.cpp
  170. tgnet/ConnectionSocket.cpp
  171. tgnet/Datacenter.cpp
  172. tgnet/EventObject.cpp
  173. tgnet/FileLog.cpp
  174. tgnet/MTProtoScheme.cpp
  175. tgnet/NativeByteBuffer.cpp
  176. tgnet/Request.cpp
  177. tgnet/Timer.cpp
  178. tgnet/TLObject.cpp
  179. tgnet/ProxyCheckInfo.cpp
  180. tgnet/Handshake.cpp
  181. tgnet/Config.cpp)
  182. target_compile_options(tgnet PUBLIC
  183. -Wall -frtti -finline-functions -ffast-math -Os)
  184. set_target_properties(tgnet PROPERTIES
  185. ANDROID_ARM_MODE arm)
  186. target_compile_definitions(tgnet PUBLIC
  187. HAVE_PTHREAD)
  188. target_include_directories(tgnet PUBLIC
  189. boringssl/include/)
  190. target_link_libraries(tgnet
  191. crypto)
  192. #rlottie
  193. add_library(rlottie STATIC
  194. rlottie/src/lottie/lottieanimation.cpp
  195. rlottie/src/lottie/lottieitem.cpp
  196. rlottie/src/lottie/lottiekeypath.cpp
  197. rlottie/src/lottie/lottieloader.cpp
  198. rlottie/src/lottie/lottiemodel.cpp
  199. rlottie/src/lottie/lottieparser.cpp
  200. rlottie/src/lottie/lottieproxymodel.cpp
  201. rlottie/src/vector/freetype/v_ft_math.cpp
  202. rlottie/src/vector/freetype/v_ft_raster.cpp
  203. rlottie/src/vector/freetype/v_ft_stroker.cpp
  204. rlottie/src/vector/pixman/vregion.cpp
  205. rlottie/src/vector/stb/stb_image.cpp
  206. rlottie/src/vector/vbezier.cpp
  207. rlottie/src/vector/vbitmap.cpp
  208. rlottie/src/vector/vbrush.cpp
  209. rlottie/src/vector/vcompositionfunctions.cpp
  210. rlottie/src/vector/vdasher.cpp
  211. rlottie/src/vector/vdebug.cpp
  212. rlottie/src/vector/vdrawable.cpp
  213. rlottie/src/vector/vdrawhelper.cpp
  214. rlottie/src/vector/vdrawhelper_neon.cpp
  215. rlottie/src/vector/velapsedtimer.cpp
  216. rlottie/src/vector/vimageloader.cpp
  217. rlottie/src/vector/vinterpolator.cpp
  218. rlottie/src/vector/vmatrix.cpp
  219. rlottie/src/vector/vpainter.cpp
  220. rlottie/src/vector/vpath.cpp
  221. rlottie/src/vector/vpathmesure.cpp
  222. rlottie/src/vector/vraster.cpp
  223. rlottie/src/vector/vrect.cpp
  224. rlottie/src/vector/vrle.cpp)
  225. target_compile_options(rlottie PUBLIC
  226. -Wall -fno-rtti -finline-functions -ffast-math -Os -fno-unwind-tables -fno-asynchronous-unwind-tables -Wnon-virtual-dtor -Woverloaded-virtual -Wno-unused-parameter -fvisibility=hidden)
  227. set_target_properties(rlottie PROPERTIES
  228. ANDROID_ARM_MODE arm)
  229. target_compile_definitions(rlottie PUBLIC
  230. HAVE_PTHREAD NDEBUG)
  231. target_include_directories(rlottie PUBLIC
  232. ./
  233. rlottie/inc
  234. rlottie/src/vector/
  235. rlottie/src/vector/pixman
  236. rlottie/src/vector/freetype
  237. rlottie/src/vector/stb)
  238. if (${ANDROID_ABI} STREQUAL "armeabi-v7a")
  239. target_compile_options(rlottie PUBLIC
  240. -fno-integrated-as)
  241. target_compile_definitions(rlottie PUBLIC
  242. USE_ARM_NEON)
  243. target_sources(rlottie PRIVATE
  244. rlottie/src/vector/pixman/pixman-arm-neon-asm.S)
  245. elseif(${ANDROID_ABI} STREQUAL "arm64-v8a")
  246. target_compile_options(rlottie PUBLIC
  247. -fno-integrated-as)
  248. target_compile_definitions(rlottie PUBLIC
  249. USE_ARM_NEON __ARM64_NEON__)
  250. target_sources(rlottie PRIVATE
  251. rlottie/src/vector/pixman/pixman-arma64-neon-asm.S)
  252. endif()
  253. #flac
  254. add_library(flac STATIC
  255. exoplayer/libFLAC/bitmath.c
  256. exoplayer/libFLAC/bitreader.c
  257. exoplayer/libFLAC/bitwriter.c
  258. exoplayer/libFLAC/cpu.c
  259. exoplayer/libFLAC/crc.c
  260. exoplayer/libFLAC/fixed.c
  261. exoplayer/libFLAC/fixed_intrin_sse2.c
  262. exoplayer/libFLAC/fixed_intrin_ssse3.c
  263. exoplayer/libFLAC/float.c
  264. exoplayer/libFLAC/format.c
  265. exoplayer/libFLAC/lpc.c
  266. exoplayer/libFLAC/lpc_intrin_avx2.c
  267. exoplayer/libFLAC/lpc_intrin_sse2.c
  268. exoplayer/libFLAC/lpc_intrin_sse41.c
  269. exoplayer/libFLAC/lpc_intrin_sse.c
  270. exoplayer/libFLAC/md5.c
  271. exoplayer/libFLAC/memory.c
  272. exoplayer/libFLAC/metadata_iterators.c
  273. exoplayer/libFLAC/metadata_object.c
  274. exoplayer/libFLAC/stream_decoder.c
  275. exoplayer/libFLAC/stream_encoder.c
  276. exoplayer/libFLAC/stream_encoder_framing.c
  277. exoplayer/libFLAC/stream_encoder_intrin_avx2.c
  278. exoplayer/libFLAC/stream_encoder_intrin_sse2.c
  279. exoplayer/libFLAC/stream_encoder_intrin_ssse3.c
  280. exoplayer/libFLAC/window.c)
  281. target_compile_options(flac PUBLIC
  282. -O3 -funroll-loops -finline-functions -fPIC -frtti)
  283. set_target_properties(flac PROPERTIES
  284. ANDROID_ARM_MODE arm)
  285. target_compile_definitions(flac PUBLIC
  286. _REENTRANT PIC U_COMMON_IMPLEMENTATION HAVE_SYS_PARAM_H VERSION="1.3.1" FLAC__NO_MD5 FLAC__INTEGER_ONLY_LIBRARY FLAC__NO_ASM)
  287. target_include_directories(flac PUBLIC
  288. exoplayer/libFLAC/include)
  289. #webp
  290. add_library(webp STATIC
  291. libwebp/dec/alpha.c
  292. libwebp/dec/buffer.c
  293. libwebp/dec/frame.c
  294. libwebp/dec/idec.c
  295. libwebp/dec/io.c
  296. libwebp/dec/quant.c
  297. libwebp/dec/tree.c
  298. libwebp/dec/vp8.c
  299. libwebp/dec/vp8l.c
  300. libwebp/dec/webp.c
  301. libwebp/dsp/alpha_processing.c
  302. libwebp/dsp/alpha_processing_sse2.c
  303. libwebp/dsp/cpu.c
  304. libwebp/dsp/dec.c
  305. libwebp/dsp/dec_clip_tables.c
  306. libwebp/dsp/dec_mips32.c
  307. libwebp/dsp/dec_neon.c
  308. libwebp/dsp/dec_sse2.c
  309. libwebp/dsp/enc.c
  310. libwebp/dsp/enc_avx2.c
  311. libwebp/dsp/enc_mips32.c
  312. libwebp/dsp/enc_neon.c
  313. libwebp/dsp/enc_sse2.c
  314. libwebp/dsp/lossless.c
  315. libwebp/dsp/lossless_mips32.c
  316. libwebp/dsp/lossless_neon.c
  317. libwebp/dsp/lossless_sse2.c
  318. libwebp/dsp/upsampling.c
  319. libwebp/dsp/upsampling_neon.c
  320. libwebp/dsp/upsampling_sse2.c
  321. libwebp/dsp/yuv.c
  322. libwebp/dsp/yuv_mips32.c
  323. libwebp/dsp/yuv_sse2.c
  324. libwebp/enc/alpha.c
  325. libwebp/enc/analysis.c
  326. libwebp/enc/backward_references.c
  327. libwebp/enc/config.c
  328. libwebp/enc/cost.c
  329. libwebp/enc/filter.c
  330. libwebp/enc/frame.c
  331. libwebp/enc/histogram.c
  332. libwebp/enc/iterator.c
  333. libwebp/enc/picture.c
  334. libwebp/enc/picture_csp.c
  335. libwebp/enc/picture_psnr.c
  336. libwebp/enc/picture_rescale.c
  337. libwebp/enc/picture_tools.c
  338. libwebp/enc/quant.c
  339. libwebp/enc/syntax.c
  340. libwebp/enc/token.c
  341. libwebp/enc/tree.c
  342. libwebp/enc/vp8l.c
  343. libwebp/enc/webpenc.c
  344. libwebp/utils/bit_reader.c
  345. libwebp/utils/bit_writer.c
  346. libwebp/utils/color_cache.c
  347. libwebp/utils/filters.c
  348. libwebp/utils/huffman.c
  349. libwebp/utils/huffman_encode.c
  350. libwebp/utils/quant_levels.c
  351. libwebp/utils/quant_levels_dec.c
  352. libwebp/utils/random.c
  353. libwebp/utils/rescaler.c
  354. libwebp/utils/thread.c
  355. libwebp/utils/utils.c)
  356. target_compile_options(webp PUBLIC
  357. -Wall -finline-functions -ffast-math -Os)
  358. set_target_properties(webp PROPERTIES
  359. ANDROID_ARM_MODE arm)
  360. target_compile_definitions(webp PUBLIC
  361. HAVE_MALLOC_H HAVE_PTHREAD WEBP_USE_THREAD)
  362. target_include_directories(webp PUBLIC
  363. libwebp/src)
  364. #lz4
  365. add_library(lz4 STATIC
  366. lz4/lz4.c
  367. lz4/lz4frame.c
  368. lz4/xxhash.c)
  369. target_compile_options(lz4 PUBLIC
  370. -w -O3)
  371. set_target_properties(lz4 PROPERTIES
  372. ANDROID_ARM_MODE arm)
  373. #sqlite
  374. add_library(sqlite STATIC
  375. sqlite/sqlite3.c)
  376. target_compile_options(sqlite PUBLIC
  377. -fno-strict-aliasing -Os)
  378. set_target_properties(sqlite PROPERTIES
  379. ANDROID_ARM_MODE arm)
  380. target_compile_definitions(sqlite PUBLIC
  381. NULL=0 SOCKLEN_T=socklen_t LOCALE_NOT_USED ANDROID_NDK DISABLE_IMPORTGL AVOID_TABLES ANDROID_TILE_BASED_DECODE HAVE_STRCHRNUL=0 ANDROID_ARMV6_IDCT)
  382. #voip
  383. include(${CMAKE_HOME_DIRECTORY}/voip/CMakeLists.txt)
  384. set(NATIVE_LIB "tmessages.42")
  385. #tmessages
  386. add_library(${NATIVE_LIB} SHARED
  387. jni.c
  388. audio.c
  389. image.cpp
  390. video.c
  391. intro/IntroRenderer.c
  392. SqliteWrapper.cpp
  393. utilities.cpp
  394. gifvideo.cpp
  395. lottie.cpp
  396. TgNetWrapper.cpp
  397. NativeLoader.cpp
  398. exoplayer/flac_jni.cc
  399. exoplayer/flac_parser.cc
  400. exoplayer/opus_jni.cc
  401. exoplayer/ffmpeg_jni.cc
  402. fast-edge.cpp
  403. genann.c
  404. secureid_ocr.cpp)
  405. target_compile_options(${NATIVE_LIB} PUBLIC
  406. -ffast-math -Os -funroll-loops -ffast-math -fno-strict-aliasing -fno-math-errno)
  407. target_compile_definitions(${NATIVE_LIB} PUBLIC
  408. BSD=1 NULL=0 SOCKLEN_T=socklen_t ANDROID_NDK DISABLE_IMPORTGL AVOID_TABLES ANDROID_TILE_BASED_DECODE __STDC_CONSTANT_MACROS ANDROID_ARMV6_IDCT OPUS_BUILD FIXED_POINT USE_ALLOCA restrict= __EMX__ LOCALE_NOT_USED HAVE_LRINT HAVE_LRINTF)
  409. if (${ANDROID_ABI} STREQUAL "armeabi-v7a")
  410. set_target_properties(${NATIVE_LIB} PROPERTIES
  411. ANDROID_ARM_NEON FALSE
  412. ANDROID_ARM_MODE arm)
  413. target_compile_definitions(${NATIVE_LIB} PUBLIC
  414. ANDROID_ARM_NEON=false)
  415. target_sources(${NATIVE_LIB} PRIVATE
  416. third_party/libyuv/source/compare_neon.cc
  417. third_party/libyuv/source/rotate_neon.cc
  418. third_party/libyuv/source/row_neon.cc
  419. third_party/libyuv/source/scale_neon.cc)
  420. else()
  421. set_target_properties(${NATIVE_LIB} PROPERTIES
  422. ANDROID_ARM_NEON FALSE
  423. ANDROID_ARM_MODE arm)
  424. endif()
  425. if (${ANDROID_ABI} STREQUAL "armeabi-v7a" OR ${ANDROID_ABI} STREQUAL "arm64-v8a")
  426. target_compile_definitions(${NATIVE_LIB} PUBLIC
  427. LIBYUV_NEON OPUS_HAVE_RTCD OPUS_ARM_ASM)
  428. target_sources(${NATIVE_LIB} PRIVATE
  429. opus/celt/arm/celt_neon_intr.c
  430. opus/celt/arm/pitch_neon_intr.c
  431. opus/silk/arm/NSQ_neon.c
  432. opus/silk/arm/arm_silk_map.c
  433. opus/silk/arm/LPC_inv_pred_gain_neon_intr.c
  434. opus/silk/arm/NSQ_del_dec_neon_intr.c
  435. opus/silk/arm/biquad_alt_neon_intr.c
  436. opus/silk/fixed/arm/warped_autocorrelation_FIX_neon_intr.c
  437. )
  438. elseif(${ANDROID_ABI} STREQUAL "x86")
  439. target_compile_definitions(${NATIVE_LIB} PUBLIC
  440. x86fix)
  441. endif()
  442. target_sources(${NATIVE_LIB} PRIVATE
  443. opus/src/opus.c
  444. opus/src/opus_decoder.c
  445. opus/src/opus_encoder.c
  446. opus/src/opus_multistream.c
  447. opus/src/opus_multistream_encoder.c
  448. opus/src/opus_multistream_decoder.c
  449. opus/src/repacketizer.c
  450. opus/src/analysis.c
  451. opus/src/mlp.c
  452. opus/src/mlp_data.c
  453. opus/src/opus_projection_encoder.c
  454. opus/src/opus_projection_decoder.c
  455. opus/src/mapping_matrix.c
  456. opus/silk/CNG.c
  457. opus/silk/code_signs.c
  458. opus/silk/init_decoder.c
  459. opus/silk/decode_core.c
  460. opus/silk/decode_frame.c
  461. opus/silk/decode_parameters.c
  462. opus/silk/decode_indices.c
  463. opus/silk/decode_pulses.c
  464. opus/silk/decoder_set_fs.c
  465. opus/silk/dec_API.c
  466. opus/silk/enc_API.c
  467. opus/silk/encode_indices.c
  468. opus/silk/encode_pulses.c
  469. opus/silk/gain_quant.c
  470. opus/silk/interpolate.c
  471. opus/silk/LP_variable_cutoff.c
  472. opus/silk/NLSF_decode.c
  473. opus/silk/NSQ.c
  474. opus/silk/NSQ_del_dec.c
  475. opus/silk/PLC.c
  476. opus/silk/shell_coder.c
  477. opus/silk/tables_gain.c
  478. opus/silk/tables_LTP.c
  479. opus/silk/tables_NLSF_CB_NB_MB.c
  480. opus/silk/tables_NLSF_CB_WB.c
  481. opus/silk/tables_other.c
  482. opus/silk/tables_pitch_lag.c
  483. opus/silk/tables_pulses_per_block.c
  484. opus/silk/VAD.c
  485. opus/silk/control_audio_bandwidth.c
  486. opus/silk/quant_LTP_gains.c
  487. opus/silk/VQ_WMat_EC.c
  488. opus/silk/HP_variable_cutoff.c
  489. opus/silk/NLSF_encode.c
  490. opus/silk/NLSF_VQ.c
  491. opus/silk/NLSF_unpack.c
  492. opus/silk/NLSF_del_dec_quant.c
  493. opus/silk/process_NLSFs.c
  494. opus/silk/stereo_LR_to_MS.c
  495. opus/silk/stereo_MS_to_LR.c
  496. opus/silk/check_control_input.c
  497. opus/silk/control_SNR.c
  498. opus/silk/init_encoder.c
  499. opus/silk/control_codec.c
  500. opus/silk/A2NLSF.c
  501. opus/silk/ana_filt_bank_1.c
  502. opus/silk/biquad_alt.c
  503. opus/silk/bwexpander_32.c
  504. opus/silk/bwexpander.c
  505. opus/silk/debug.c
  506. opus/silk/decode_pitch.c
  507. opus/silk/inner_prod_aligned.c
  508. opus/silk/lin2log.c
  509. opus/silk/log2lin.c
  510. opus/silk/LPC_analysis_filter.c
  511. opus/silk/LPC_inv_pred_gain.c
  512. opus/silk/table_LSF_cos.c
  513. opus/silk/NLSF2A.c
  514. opus/silk/NLSF_stabilize.c
  515. opus/silk/NLSF_VQ_weights_laroia.c
  516. opus/silk/pitch_est_tables.c
  517. opus/silk/resampler.c
  518. opus/silk/resampler_down2_3.c
  519. opus/silk/resampler_down2.c
  520. opus/silk/resampler_private_AR2.c
  521. opus/silk/resampler_private_down_FIR.c
  522. opus/silk/resampler_private_IIR_FIR.c
  523. opus/silk/resampler_private_up2_HQ.c
  524. opus/silk/resampler_rom.c
  525. opus/silk/sigm_Q15.c
  526. opus/silk/sort.c
  527. opus/silk/sum_sqr_shift.c
  528. opus/silk/stereo_decode_pred.c
  529. opus/silk/stereo_encode_pred.c
  530. opus/silk/stereo_find_predictor.c
  531. opus/silk/stereo_quant_pred.c
  532. opus/silk/LPC_fit.c
  533. opus/silk/fixed/LTP_analysis_filter_FIX.c
  534. opus/silk/fixed/LTP_scale_ctrl_FIX.c
  535. opus/silk/fixed/corrMatrix_FIX.c
  536. opus/silk/fixed/encode_frame_FIX.c
  537. opus/silk/fixed/find_LPC_FIX.c
  538. opus/silk/fixed/find_LTP_FIX.c
  539. opus/silk/fixed/find_pitch_lags_FIX.c
  540. opus/silk/fixed/find_pred_coefs_FIX.c
  541. opus/silk/fixed/noise_shape_analysis_FIX.c
  542. opus/silk/fixed/process_gains_FIX.c
  543. opus/silk/fixed/regularize_correlations_FIX.c
  544. opus/silk/fixed/residual_energy16_FIX.c
  545. opus/silk/fixed/residual_energy_FIX.c
  546. opus/silk/fixed/warped_autocorrelation_FIX.c
  547. opus/silk/fixed/apply_sine_window_FIX.c
  548. opus/silk/fixed/autocorr_FIX.c
  549. opus/silk/fixed/burg_modified_FIX.c
  550. opus/silk/fixed/k2a_FIX.c
  551. opus/silk/fixed/k2a_Q16_FIX.c
  552. opus/silk/fixed/pitch_analysis_core_FIX.c
  553. opus/silk/fixed/vector_ops_FIX.c
  554. opus/silk/fixed/schur64_FIX.c
  555. opus/silk/fixed/schur_FIX.c
  556. opus/celt/bands.c
  557. opus/celt/celt.c
  558. opus/celt/celt_encoder.c
  559. opus/celt/celt_decoder.c
  560. opus/celt/cwrs.c
  561. opus/celt/entcode.c
  562. opus/celt/entdec.c
  563. opus/celt/entenc.c
  564. opus/celt/kiss_fft.c
  565. opus/celt/laplace.c
  566. opus/celt/mathops.c
  567. opus/celt/mdct.c
  568. opus/celt/modes.c
  569. opus/celt/pitch.c
  570. opus/celt/celt_lpc.c
  571. opus/celt/quant_bands.c
  572. opus/celt/rate.c
  573. opus/celt/vq.c
  574. opus/celt/arm/armcpu.c
  575. opus/celt/arm/arm_celt_map.c
  576. opus/ogg/bitwise.c
  577. opus/ogg/framing.c
  578. opus/opusfile/info.c
  579. opus/opusfile/internal.c
  580. opus/opusfile/opusfile.c
  581. opus/opusfile/stream.c
  582. third_party/libyuv/source/compare_common.cc
  583. third_party/libyuv/source/compare_gcc.cc
  584. third_party/libyuv/source/compare_neon64.cc
  585. third_party/libyuv/source/compare_win.cc
  586. third_party/libyuv/source/compare.cc
  587. third_party/libyuv/source/convert_argb.cc
  588. third_party/libyuv/source/convert_from_argb.cc
  589. third_party/libyuv/source/convert_from.cc
  590. third_party/libyuv/source/convert_jpeg.cc
  591. third_party/libyuv/source/convert_to_argb.cc
  592. third_party/libyuv/source/convert_to_i420.cc
  593. third_party/libyuv/source/convert.cc
  594. third_party/libyuv/source/cpu_id.cc
  595. third_party/libyuv/source/mjpeg_decoder.cc
  596. third_party/libyuv/source/mjpeg_validate.cc
  597. third_party/libyuv/source/planar_functions.cc
  598. third_party/libyuv/source/rotate_any.cc
  599. third_party/libyuv/source/rotate_argb.cc
  600. third_party/libyuv/source/rotate_common.cc
  601. third_party/libyuv/source/rotate_gcc.cc
  602. third_party/libyuv/source/rotate_neon64.cc
  603. third_party/libyuv/source/rotate_win.cc
  604. third_party/libyuv/source/rotate.cc
  605. third_party/libyuv/source/row_any.cc
  606. third_party/libyuv/source/row_common.cc
  607. third_party/libyuv/source/row_gcc.cc
  608. third_party/libyuv/source/row_neon64.cc
  609. third_party/libyuv/source/row_win.cc
  610. third_party/libyuv/source/scale_any.cc
  611. third_party/libyuv/source/scale_argb.cc
  612. third_party/libyuv/source/scale_common.cc
  613. third_party/libyuv/source/scale_gcc.cc
  614. third_party/libyuv/source/scale_neon64.cc
  615. third_party/libyuv/source/scale_win.cc
  616. third_party/libyuv/source/scale.cc
  617. third_party/libyuv/source/video_common.cc
  618. third_party/libyuv/source/scale_uv.cc)
  619. target_include_directories(${NATIVE_LIB} PUBLIC
  620. opus/include
  621. opus/silk
  622. opus/silk/fixed
  623. opus/celt
  624. opus/
  625. opus/opusfile
  626. third_party/libyuv/include
  627. boringssl/include
  628. ffmpeg/include
  629. emoji
  630. exoplayer/include
  631. exoplayer/libFLAC/include
  632. intro
  633. rlottie/inc
  634. tgcalls/
  635. webrtc/
  636. lz4)
  637. target_link_libraries(${NATIVE_LIB}
  638. -Wl,--whole-archive rnnoise openh264 voipandroid -Wl,--no-whole-archive
  639. tgvoip
  640. tgcalls
  641. tgcalls_tp
  642. mozjpeg
  643. tgnet
  644. lz4
  645. webp
  646. flac
  647. rlottie
  648. sqlite
  649. swscale
  650. avformat
  651. avcodec
  652. avresample
  653. swresample
  654. libvpx
  655. avutil
  656. ssl
  657. crypto
  658. jnigraphics
  659. log
  660. z
  661. GLESv2
  662. EGL
  663. android
  664. OpenSLES
  665. cpufeatures)
  666. #if (${ANDROID_ABI} STREQUAL "x86" OR ${ANDROID_ABI} STREQUAL "x86_64")
  667. # target_link_libraries(${NATIVE_LIB}
  668. # -Wl,--whole-archive vpxasm -Wl,--no-whole-archive
  669. # c)
  670. #endif()
  671. include(AndroidNdkModules)
  672. android_ndk_import_module_cpufeatures()