Xxhash: [cmake] ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ ссылок Π½Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ сборки `xxhsum`

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 1 Π°Π²Π³. 2018  Β·  7ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: Cyan4973/xxHash

ΠŸΡ€ΠΈΠ²Π΅Ρ‚,
Π― дСлаю (Π½Π΅ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ) ΠΏΠ°ΠΊΠ΅Ρ‚ для Archlinux (ΠΌΠΎΠΉ дистрибутив), ΠΈ makepkg (инструмСнт сборки ΠΏΠ°ΠΊΠ΅Ρ‚Π° дистрибутива) ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Π΅Ρ‚ мСня, Ρ‡Ρ‚ΠΎ xxhsum ΠΈΠΌΠ΅Π΅Ρ‚ ссылку Π½Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ сборки.

Π― ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ» это с

$ strings xxhsum | grep BUILD_DIR

ΠΈ нашСл Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅. Π― попытался ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ с Ρ„Π»Π°Π³ΠΎΠΌ --save-temps для gcc ΠΈ нашСл BUILD_DIR Π² Ρ„Π°ΠΉΠ»Π΅ xxhsum.o.s . Π― Π½Π΅ понимаю Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ этого Ρ„Π°ΠΉΠ»Π°, Π½ΠΎ Π² зависимости ΠΎΡ‚ окруТСния строки ΠΎΠ½ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ связан с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ XXXbenchHash . К соТалСнию, я Π½Π΅ ΠΌΠΎΠ³ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ эта строка ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² xxhsum , я Π½Π΅ Π²ΠΈΠΆΡƒ Ρ‚Π°ΠΌ использования ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… макросов.

Π― Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π» ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ этой строки (см., НапримСр, «воспроизводимыС сборки»), Π½ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ я потСрялся ΠΈ понятия Π½Π΅ имСю, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ дальшС. ΠšΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ этой строки Π² скомпилированном Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ ΠΈΠ»ΠΈ Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ?

build issue help wanted

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ΠŸΡ€ΠΈΠ²Π΅Ρ‚,
для ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, я нашСл ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ ΠΈ способ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π’ΠΊΡ€Π°Ρ‚Ρ†Π΅: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ» CMakeLists.txt ΠΈ помСститС Π΅Π³ΠΎ Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³.

Длинная история: ссылка Π½Π° исходный ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ связана с макросом __FILE__ Π²ΠΎ всСх Π΅Π³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ…. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ случаС ΠΎΠ½ пробираСтся Ρ‡Π΅Ρ€Π΅Π· макрос assert . Если ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ компилируСтся Π² исходном ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² этом случаС __FILE__ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ΡΡ (компилятором) Π΄ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ. Но ΠΎΠ΄Π½Π° ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ cmake - это компиляция Π²Π½Π΅ исходного ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, ΠΈ Π² этом случаС компилятор Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ макрос __FILE__ Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ. Однако ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ исходного ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ макрос __FILE__ . МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ cmake ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Ρ„Π°ΠΉΠ»Π΅ Π²Ρ‹ΡˆΠ΅.

ВсС 7 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π­Ρ‚ΠΎ довольно странно.
Π’ исходном ΠΊΠΎΠ΄Π΅ xxhsum.c Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ссылку Π½Π° BUILD_DIR .

Π― скомпилировал Π΅Π³ΠΎ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС Linux mint ΠΈ сдСлал Ρ‚Ρƒ ΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ, Ρ‡Ρ‚ΠΎ ΠΈ Π²Ρ‹:

$ strings xxhsum | grep BUILD_DIR
$

Он Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²Π΅Ρ€Π½ΡƒΠ».

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ систСмы сборки.

Π― полагаю, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ вмСсто BUILD_DIR, Π½Π΅ Ρ‚Π°ΠΊ Π»ΠΈ? Если Π΄Π°, Ρ‚ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ ΠΏΡ€Π°Π²Ρ‹, это Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ ΠΌΠΎΠ΅Π³ΠΎ инструмСнта сборки. Π― ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΡŽ Π΄Ρ€ΡƒΠ³ΡƒΡŽ систСму, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ это. Π§Ρ‚ΠΎ касаСтся ΠΌΠΎΠ΅ΠΉ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ систСмы, я ΠΌΠΎΠ³Ρƒ воспроизвСсти это Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ:

$ cd DIR_WITH_UNPACKED_SOURCE
$ mkdir build
$ cmake ../xxHash-0.6.5
$ make
$ strings xxhsum | grep BUILD_DIR
BUILD_DIR:
DIR_WITH_UNPACKED_SOURCE/xxHash-0.6.5/xxhsum.c

Π‘Ρ€Π΅Π΄Π°: bash 4.4.023, gcc 8.1.1 20180531, binutils 2.30, cmake 3.11.4, make 4.2.1, glibc 2.27.

Ах, я Π½Π΅ тСстировал cmake , ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, это Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.
Π― тСстировал Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΠΎΠ»Π΅Π΅ простой процСсс сборки make :

$ cd XXH_SRC_DIR
$ make
$ strings xxhsum | grep BUILD_DIR
$

cmake поддСрТиваСтся сторонними Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ (ΠΎΡ‚ΡΡŽΠ΄Π° ΠΈ Β«Π½Π΅ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉΒ» Ρ‚Π΅Π³), ΠΊ соТалСнию, я Π½Π΅ понимаю всСх Π΅Π³ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… эффСктов, ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽ Makefile .

ΠŸΡ€ΠΈΠ²Π΅Ρ‚,
для ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, я нашСл ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ ΠΈ способ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π’ΠΊΡ€Π°Ρ‚Ρ†Π΅: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ» CMakeLists.txt ΠΈ помСститС Π΅Π³ΠΎ Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³.

Длинная история: ссылка Π½Π° исходный ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ связана с макросом __FILE__ Π²ΠΎ всСх Π΅Π³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ…. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ случаС ΠΎΠ½ пробираСтся Ρ‡Π΅Ρ€Π΅Π· макрос assert . Если ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ компилируСтся Π² исходном ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² этом случаС __FILE__ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ΡΡ (компилятором) Π΄ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ. Но ΠΎΠ΄Π½Π° ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ cmake - это компиляция Π²Π½Π΅ исходного ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, ΠΈ Π² этом случаС компилятор Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ макрос __FILE__ Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ. Однако ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ исходного ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ макрос __FILE__ . МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ cmake ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Ρ„Π°ΠΉΠ»Π΅ Π²Ρ‹ΡˆΠ΅.

ΠŸΡ€ΠΈΠ²Π΅Ρ‚!
Π― полагаю, Ρ‡Ρ‚ΠΎ assert макрос Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊ (void)0 Ссли ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ NDEBUG .

NDEBUG опрСдСляСтся CMake автоматичСски, Ссли для CMAKE_BUILD_TYPE установлСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ _ "Release" _ (для Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² с ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Unix Makefiles), ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ сборкС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ --config Release (для Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² с нСсколькими конфигурациями, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Xcode) .
Для Ρ‚ΠΈΠΏΠ° сборки _ "RelWithDebInfo" _ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ NDEBUG ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² источниках ΠΈΠ»ΠΈ Π² списках CMake.
Π― Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ это ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ».

Π£Π΄Π°Ρ‡ΠΈ!

Π›ΠΎΠ³ΠΈΠΊΠ° для assert Π±Ρ‹Π»Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π° ​​и опрСдСляСтся здСсь:
https://github.com/Cyan4973/xxHash/blob/dev/xxhash.c#L146

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ всС утвСрТдСния Π² xxhash ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹.
Π§Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΡ…, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ DEBUGLEVEL Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ >= 1 .
Π”Π°ΠΆΠ΅ Π² этом случаС assert() всС Ρ€Π°Π²Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, установив NDEBUG .

Каким Π±Ρ‹ Π½ΠΈ Π±Ρ‹Π»ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ DEBUGLEVEL ,
NDEBUG Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½,
ΠΎΠ½ остаСтся Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ послС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° xxhash
(ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ с XXH_INLINE_ALL , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивным Ρ‚ΠΈΠΏΠΎΠΌ сборки).

Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° исправлСна.
Π― тСстировал cmake -ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ xxhsum Π² систСмС Linux, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ strings , ΠΈ Π½Π΅ смог Π½Π°ΠΉΡ‚ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ссылки Π½Π° BUILD_DIR .

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ