diff options
author | Devtools Arcadia <arcadia-devtools@yandex-team.ru> | 2022-02-07 18:08:42 +0300 |
---|---|---|
committer | Devtools Arcadia <arcadia-devtools@mous.vla.yp-c.yandex.net> | 2022-02-07 18:08:42 +0300 |
commit | 1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch) | |
tree | e26c9fed0de5d9873cce7e00bc214573dc2195b7 /build/platform | |
download | ydb-1110808a9d39d4b808aef724c861a2e1a38d2a69.tar.gz |
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'build/platform')
96 files changed, 2412 insertions, 0 deletions
diff --git a/build/platform/android_sdk/ya.make b/build/platform/android_sdk/ya.make new file mode 100644 index 0000000000..1e726065da --- /dev/null +++ b/build/platform/android_sdk/ya.make @@ -0,0 +1,20 @@ +RESOURCES_LIBRARY() + +OWNER(g:mapkit) + +IF (NOT OS_ANDROID) + MESSAGE(FATAL_ERROR Unsupported platform) +ENDIF() + +IF (HOST_OS_LINUX) + # Android SDK for linux: Build-Tools 30.0.3, Platform 30 + DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + ANDROID_SDK + sbr:2564045529 FOR LINUX + ) + DECLARE_EXTERNAL_RESOURCE(ANDROID_AVD sbr:2563860055) +ELSE() + MESSAGE(FATAL_ERROR Unsupported host platform) +ENDIF() + +END() diff --git a/build/platform/bfd/ya.make b/build/platform/bfd/ya.make new file mode 100644 index 0000000000..67501f665f --- /dev/null +++ b/build/platform/bfd/ya.make @@ -0,0 +1,9 @@ +RESOURCES_LIBRARY() + +OWNER(somov) + +INCLUDE(${ARCADIA_ROOT}/build/platform/binutils/binutils.resource) + +LDFLAGS(-fuse-ld=$BINUTILS_ROOT_RESOURCE_GLOBAL/bin/ld.bfd) + +END() diff --git a/build/platform/binutils/binutils.resource b/build/platform/binutils/binutils.resource new file mode 100644 index 0000000000..28823ecd80 --- /dev/null +++ b/build/platform/binutils/binutils.resource @@ -0,0 +1,7 @@ +IF (HOST_OS_DARWIN AND OS_LINUX AND ARCH_X86_64) + DECLARE_EXTERNAL_RESOURCE(BINUTILS_ROOT sbr:333256689) +ELSEIF (HOST_OS_LINUX AND OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(BINUTILS_ROOT sbr:360916612) +ELSE() + MESSAGE(FATAL_ERROR "There is no binutils for selected build configuration") +ENDIF() diff --git a/build/platform/binutils/ya.make b/build/platform/binutils/ya.make new file mode 100644 index 0000000000..aedcb12f23 --- /dev/null +++ b/build/platform/binutils/ya.make @@ -0,0 +1,8 @@ +RESOURCES_LIBRARY() + +OWNER(g:contrib somov) + +INCLUDE(binutils.resource) + +END() + diff --git a/build/platform/cctools/ya.make b/build/platform/cctools/ya.make new file mode 100644 index 0000000000..c17a6abc67 --- /dev/null +++ b/build/platform/cctools/ya.make @@ -0,0 +1,12 @@ +RESOURCES_LIBRARY() + +OWNER(somov) + +DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + CCTOOLS_ROOT + sbr:2135298496 FOR LINUX + sbr:2135992724 FOR DARWIN + sbr:2135992724 FOR DARWIN-ARM64 +) + +END() diff --git a/build/platform/clang/arch.cmake b/build/platform/clang/arch.cmake new file mode 100644 index 0000000000..db0ae243e6 --- /dev/null +++ b/build/platform/clang/arch.cmake @@ -0,0 +1,27 @@ +# See https://github.com/llvm/llvm-project/blob/master/compiler-rt/cmake/builtin-config-ix.cmake + +IF (ARCH_I386 OR ARCH_I686) + SET(CLANG_ARCH i386) +ELSEIF (ARCH_X86_64) + SET(CLANG_ARCH x86_64) +ELSEIF (ARCH_ARM7 OR ARCH_ARM7_NEON) + SET(CLANG_ARCH armv7) +ELSEIF (ARCH_ARM64 OR ARCH_AARCH64) + IF (OS_DARWIN OR OS_IOS) + SET(CLANG_ARCH arm64) + ELSE() + SET(CLANG_ARCH aarch64) + ENDIF() +ELSEIF (ARCH_PPC64LE) + SET(CLANG_ARCH powerpc64le) +ELSE() + MESSAGE(FATAL_ERROR "Unknown architecture") +ENDIF() + +IF (OS_DARWIN) + SET(CLANG_RT_SUFFIX "_osx") + SET(CLANG_RT_DLLSUFFIX "_osx_dynamic") +ELSE() + SET(CLANG_RT_SUFFIX "-${CLANG_ARCH}") + SET(CLANG_RT_DLLSUFFIX "-${CLANG_ARCH}") +ENDIF() diff --git a/build/platform/clang/clang-windows.sh b/build/platform/clang/clang-windows.sh new file mode 100755 index 0000000000..73552e62c8 --- /dev/null +++ b/build/platform/clang/clang-windows.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash +set -euo pipefail + +version="${1:-11.0.0}" +major="${version%%.*}" + +arcadia="$(cd "$(dirname "${BASH_SOURCE[0]}")"/../../.. && pwd)" +tmp="${TMPDIR:-/tmp}/clang" +exe="LLVM-${version}-win64.exe" +dir="clang-${version}-win" +tar="${dir}.tar.gz" + +set -x + +mkdir -p "$tmp" +cd "$tmp" +test -e "$exe" || wget "https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/${exe}" + +rm -rf "$dir" +mkdir -p "$dir" +cd "$dir" +7z x ../"$exe" + +"$arcadia"/ya \ + make "$arcadia"/contrib/libs/llvm${major}/tools/{llvm-as,llvm-link,opt} \ + -DNO_DEBUGINFO -r --target-platform=windows --no-src-links -I bin + +tar czf "../$tar" * + +printf '%q ' ya upload "$tmp/$tar" -d "Clang $version for Windows" --ttl inf --owner BUILD_TOOLS --type CLANG_TOOLKIT --attr platform=win32 --attr "version=$version" +echo diff --git a/build/platform/clang/ya.make b/build/platform/clang/ya.make new file mode 100644 index 0000000000..342b928637 --- /dev/null +++ b/build/platform/clang/ya.make @@ -0,0 +1,24 @@ +RESOURCES_LIBRARY() + +LICENSE(BSD-3-Clause) + +OWNER(g:contrib) + +IF (CLANG10BC AND CLANG10 AND HOST_OS_LINUX) + DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + CLANG # Clang 10 + sbr:1871274282 FOR LINUX + sbr:1844539535 FOR DARWIN + ) +ELSE() + # Remove -std=c++17 flag from LLVM_COMPILE_CXX and CLANG_EMIT_AST_CXX macro when update clang to 11 + # DEVTOOLS-7845 + DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + CLANG # Clang 7 + sbr:707372498 FOR LINUX # In 942524429 and 958916803 llvm-link does not run. + sbr:942053644 FOR DARWIN + sbr:1006151596 FOR WIN32 # Generated by ./clang-windows.sh 7.1.0 + ) +ENDIF() + +END() diff --git a/build/platform/coverage_push_tool/ya.make b/build/platform/coverage_push_tool/ya.make new file mode 100644 index 0000000000..675569dbe5 --- /dev/null +++ b/build/platform/coverage_push_tool/ya.make @@ -0,0 +1,10 @@ +RESOURCES_LIBRARY() +OWNER(heretic) +IF(USE_SYSTEM_COVERAGE_PUSH_TOOL) + MESSAGE(WARNING System coverage push tool $USE_SYSTEM_COVERAGE_PUSH_TOOL will be used) +ELSEIF(HOST_OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(COVERAGE_PUSH_TOOL sbr:1748856682) +ELSE() + MESSAGE(FATAL_ERROR Unsupported host for COVERAGE_PUSH_TOOL) +ENDIF() +END() diff --git a/build/platform/cuda/cuda_runtime_include.h b/build/platform/cuda/cuda_runtime_include.h new file mode 100644 index 0000000000..e60aacc4fb --- /dev/null +++ b/build/platform/cuda/cuda_runtime_include.h @@ -0,0 +1,13 @@ +#pragma once + +// Компилятор nvcc из CUDA Toolkit при компиляции файла включает неявную зависимость +// $CUDA_ROOT/include/cuda_runtime.h, которая в свою очередь включает другие файлы +// из $CUDA_ROOT, а так же из стандартной библиотеки C++. Файлы из внешних ресурсов +// не доступны на этапе конфигурирования сборки, и зависимости из них не учитываются. +// Это, в частности, приводит к поломке сборки с использованием nvcc в режиме sandboxing-а. + +// Здесь перечислены такие зависимости. Этот файл добавляется в качестве дополнительной +// зависимости к каждой компиляции nvcc. + +#include <cmath> +#include <new> diff --git a/build/platform/cuda/stdtree/ya.make b/build/platform/cuda/stdtree/ya.make new file mode 100644 index 0000000000..01feaee51e --- /dev/null +++ b/build/platform/cuda/stdtree/ya.make @@ -0,0 +1,13 @@ +RESOURCES_LIBRARY() + +OWNER(g:contrib heretic) + +IF (OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(STD_TREE sbr:1094784663) +ELSE() + MESSAGE(FATAL_ERROR "No stdc++ tree part for the selected platform found") +ENDIF() +LDFLAGS("-L$STD_TREE_RESOURCE_GLOBAL") +EXTRALIBS(tree) + +END() diff --git a/build/platform/cuda/ya.make b/build/platform/cuda/ya.make new file mode 100644 index 0000000000..3615f682cd --- /dev/null +++ b/build/platform/cuda/ya.make @@ -0,0 +1,195 @@ +RESOURCES_LIBRARY() + +# https://wiki.yandex-team.ru/devtools/cuda/ + +OWNER(g:contrib somov) + +IF (NOT HAVE_CUDA) + MESSAGE(FATAL_ERROR "No CUDA Toolkit for your build") +ENDIF() + +IF (USE_ARCADIA_CUDA) + IF (HOST_OS_LINUX AND HOST_ARCH_X86_64) + IF (OS_LINUX AND ARCH_X86_64) + IF (CUDA_VERSION == "11.4") + DECLARE_EXTERNAL_RESOURCE(CUDA sbr:2410761119) # CUDA Toolkit 11.4.2 for Linux x86-64 + ELSEIF (CUDA_VERSION == "11.3") + DECLARE_EXTERNAL_RESOURCE(CUDA sbr:2213063565) # CUDA Toolkit 11.3.1 for Linux x86-64 + ELSEIF (CUDA_VERSION == "11.2") + DECLARE_EXTERNAL_RESOURCE(CUDA sbr:2073566375) # CUDA Toolkit 11.2.2 for Linux x86-64 + ELSEIF (CUDA_VERSION == "11.1") + DECLARE_EXTERNAL_RESOURCE(CUDA sbr:1882836946) # CUDA Toolkit 11.1.1 for Linux x86-64 + ELSEIF (CUDA_VERSION == "11.0") + DECLARE_EXTERNAL_RESOURCE(CUDA sbr:1647896014) # CUDA Toolkit 11.0.2 for Linux x86-64 + ELSEIF (CUDA_VERSION == "10.1") + DECLARE_EXTERNAL_RESOURCE(CUDA sbr:2077988857) # CUDA Toolkit 10.1.168 for Linux x86-64 + ELSE() + ENABLE(CUDA_NOT_FOUND) + ENDIF() + ELSEIF(OS_LINUX AND ARCH_AARCH64) + IF (CUDA_VERSION == "11.3") + DECLARE_EXTERNAL_RESOURCE(CUDA sbr:2227720086) # CUDA Toolkit 11.3.20210513 (11.3.1) for Linux x86-64 with linux-aarch64 support + # host tools installer https://sandbox.yandex-team.ru/resource/2227828799/view + # cross compile parts installer https://sandbox.yandex-team.ru/resource/2227885870/view + ELSE() + ENABLE(CUDA_NOT_FOUND) + ENDIF() + ELSE() + ENABLE(CUDA_NOT_FOUND) + ENDIF() + + ELSEIF (HOST_OS_LINUX AND HOST_ARCH_PPC64LE) + IF (OS_LINUX AND ARCH_PPC64LE) + IF (CUDA_VERSION == "10.1") + DECLARE_EXTERNAL_RESOURCE(CUDA sbr:1586537264) # CUDA Toolkit 10.1.168 for Linux ppc64le + ELSE() + ENABLE(CUDA_NOT_FOUND) + ENDIF() + + ELSE() + ENABLE(CUDA_NOT_FOUND) + ENDIF() + + ELSEIF (HOST_OS_DARWIN AND HOST_ARCH_X86_64) + IF (OS_DARWIN AND ARCH_X86_64) + IF (CUDA_VERSION == "10.1") + DECLARE_EXTERNAL_RESOURCE(CUDA sbr:978727023) # CUDA Toolkit 10.1.168 for macOS x86-64 + ENDIF() + + ELSE() + ENABLE(CUDA_NOT_FOUND) + ENDIF() + + ELSEIF (HOST_OS_WINDOWS AND HOST_ARCH_X86_64) + IF (OS_WINDOWS AND ARCH_X86_64) + IF (CUDA_VERSION == "11.3") + DECLARE_EXTERNAL_RESOURCE(CUDA sbr:2215101513) # CUDA Toolkit 11.3.1 for Windows x86-64 + ELSEIF (CUDA_VERSION == "11.1") + DECLARE_EXTERNAL_RESOURCE(CUDA sbr:1896564605) # CUDA Toolkit 11.1.1 for Windows x86-64 + ELSEIF (CUDA_VERSION == "10.1") + DECLARE_EXTERNAL_RESOURCE(CUDA sbr:978734165) # CUDA Toolkit 10.1.168 for Windows x86-64 + ELSE() + ENABLE(CUDA_NOT_FOUND) + ENDIF() + + ELSE() + ENABLE(CUDA_NOT_FOUND) + ENDIF() + + ELSE() + ENABLE(CUDA_NOT_FOUND) + ENDIF() +ENDIF() + +IF (USE_ARCADIA_CUDA_HOST_COMPILER) + IF (HOST_OS_LINUX AND HOST_ARCH_X86_64) + IF (OS_LINUX AND ARCH_X86_64) + DECLARE_EXTERNAL_RESOURCE(CUDA_HOST_TOOLCHAIN sbr:1886578148) # Clang 11.0.0 for linux-x86_64 + IF (CUDA_VERSION VERSION_LT "11.2") + # Equivalent to nvcc -allow-unsupported-compiler (present since 11.0). + CFLAGS(GLOBAL "-D__NV_NO_HOST_COMPILER_CHECK") + ENDIF() + ELSEIF(OS_LINUX AND ARCH_AARCH64) + DECLARE_EXTERNAL_RESOURCE(CUDA_HOST_TOOLCHAIN sbr:1886578148) # Clang 11.0.0 for linux-x86_64 + ELSE() + ENABLE(CUDA_HOST_COMPILER_NOT_FOUND) + ENDIF() + + ELSEIF (HOST_OS_LINUX AND HOST_ARCH_PPC64LE) + IF (OS_LINUX AND ARCH_PPC64LE) + IF (CUDA_VERSION == "10.1") + DECLARE_EXTERNAL_RESOURCE(CUDA_HOST_TOOLCHAIN sbr:1566513994) # Clang 7.0 for Linux ppc64le (not latest) + ELSE() + ENABLE(CUDA_HOST_COMPILER_NOT_FOUND) + ENDIF() + + ELSE() + ENABLE(CUDA_HOST_COMPILER_NOT_FOUND) + ENDIF() + + ELSEIF (HOST_OS_DARWIN AND HOST_ARCH_X86_64) + IF (OS_DARWIN AND ARCH_X86_64) + SET(__XCODE_RESOURCE_NAME CUDA_HOST_TOOLCHAIN) + IF (CUDA_VERSION == "10.1") + SET(__XCODE_TOOLCHAIN_VERSION "9.2") # (not latest) + ELSE() + SET(__XCODE_TOOLCHAIN_VERSION "") + ENABLE(CUDA_HOST_COMPILER_NOT_FOUND) + ENDIF() + IF (__XCODE_TOOLCHAIN_VERSION) + INCLUDE(${ARCADIA_ROOT}/build/platform/xcode/ya.make.inc) + ENDIF() + ELSE() + ENABLE(CUDA_HOST_COMPILER_NOT_FOUND) + ENDIF() + + ELSEIF (HOST_OS_WINDOWS AND HOST_ARCH_X86_64) + IF (OS_WINDOWS AND ARCH_X86_64) + # To create this toolchain, install MSVS on Windows and run: + # devtools/tools_build/pack_sdk.py msvc out.tar + # Note: it will contain patched "VC/Auxiliary/Build/vcvarsall.bat" + # to prevent "nvcc fatal : Host compiler targets unsupported OS." + IF (CUDA_HOST_MSVC_VERSION == "14.28.29910") + DECLARE_EXTERNAL_RESOURCE(CUDA_HOST_TOOLCHAIN sbr:2153212401) + ELSE() + MESSAGE(FATAL_ERROR "Unexpected or unspecified Microsoft Visual C++ CUDA host compiler version") + ENDIF() + + ELSE() + ENABLE(CUDA_HOST_COMPILER_NOT_FOUND) + ENDIF() + + ELSE() + ENABLE(CUDA_HOST_COMPILER_NOT_FOUND) + ENDIF() +ENDIF() + +IF (CUDA_NOT_FOUND) + MESSAGE(FATAL_ERROR "No CUDA Toolkit for the selected platform") +ENDIF() + +IF (CUDA_HOST_COMPILER_NOT_FOUND) + MESSAGE(FATAL_ERROR "No CUDA host compiler for the selected platform and CUDA Toolkit version ${CUDA_VERSION}") +ENDIF() + +# Use thrust and cub from Arcadia, not from HPC SDK +# NB: +# it would be better to use PEERDIR instead, +# but ymake does not allow PEERDIRs from RESOURCES_LIBRARY. +ADDINCL( + GLOBAL contrib/libs/nvidia/thrust + GLOBAL contrib/libs/nvidia/cub +) + +IF (HOST_OS_WINDOWS) + SET_APPEND_WITH_GLOBAL(USER_CFLAGS GLOBAL "\"-I${CUDA_ROOT}/include\"") +ELSE() + CFLAGS(GLOBAL "-I${CUDA_ROOT}/include") +ENDIF() + +IF (HOST_OS_WINDOWS) + SET_APPEND(LDFLAGS_GLOBAL "\"/LIBPATH:${CUDA_ROOT}/lib/x64\"") +ELSEIF(HOST_OS_LINUX AND OS_LINUX AND ARCH_AARCH64) + LDFLAGS("-L${CUDA_ROOT}/targets/sbsa-linux/lib") +ELSEIF(HOST_OS_LINUX) + LDFLAGS("-L${CUDA_ROOT}/lib64") +ELSE() + LDFLAGS("-L${CUDA_ROOT}/lib") +ENDIF() + +IF (CUDA_REQUIRED) + IF(HOST_OS_LINUX) + LDFLAGS("-L${CUDA_ROOT}/lib64/stubs") + EXTRALIBS(-lcuda) + ELSEIF(HOST_OS_DARWIN) + LDFLAGS("-F${CUDA_ROOT}/lib/stubs -framework CUDA") + ENDIF() +ENDIF() + +IF (HOST_OS_WINDOWS) + LDFLAGS(cudadevrt.lib cudart_static.lib) +ELSE() + EXTRALIBS(-lcudadevrt -lcudart_static -lculibos) +ENDIF() + +END() diff --git a/build/platform/gold/ya.make b/build/platform/gold/ya.make new file mode 100644 index 0000000000..91f01602f7 --- /dev/null +++ b/build/platform/gold/ya.make @@ -0,0 +1,12 @@ +RESOURCES_LIBRARY() + +OWNER(somov) + +INCLUDE(${ARCADIA_ROOT}/build/platform/binutils/binutils.resource) + +LDFLAGS( + -fuse-ld=$BINUTILS_ROOT_RESOURCE_GLOBAL/bin/ld.gold + -Wl,-z,noexecstack +) + +END() diff --git a/build/platform/intel_fpga_sdk/ya.make b/build/platform/intel_fpga_sdk/ya.make new file mode 100644 index 0000000000..5cefb02250 --- /dev/null +++ b/build/platform/intel_fpga_sdk/ya.make @@ -0,0 +1,9 @@ +RESOURCES_LIBRARY() + +OWNER(somov) + +DECLARE_EXTERNAL_RESOURCE(INTEL_FPGA_SDK sbr:606576548) + +LDFLAGS(-L$INTEL_FPGA_SDK_RESOURCE_GLOBAL/lib) + +END() diff --git a/build/platform/ios_sdk/ya.make b/build/platform/ios_sdk/ya.make new file mode 100644 index 0000000000..b1246a70b9 --- /dev/null +++ b/build/platform/ios_sdk/ya.make @@ -0,0 +1,17 @@ +RESOURCES_LIBRARY() + +OWNER(somov) + +SET(NEED_PLATFORM_PEERDIRS no) + +IF (OS_IOS AND NOT OS_IOSSIM) + # iOS 14.5 SDK / Xcode 12.5.1 (12E507) + DECLARE_EXTERNAL_RESOURCE(IOS_SDK_ROOT sbr:2661782168) +ELSEIF (OS_IOSSIM) + # iOS Simulator 14.5 SDK / Xcode 12.5.1 (12E507) + DECLARE_EXTERNAL_RESOURCE(IOS_SDK_ROOT sbr:2661786760) +ELSE() + MESSAGE(FATAL_ERROR "There is no iOS SDK for the selected target platform") +ENDIF() + +END() diff --git a/build/platform/java/error_prone/2.10.0/ya.make b/build/platform/java/error_prone/2.10.0/ya.make new file mode 100644 index 0000000000..d08a624350 --- /dev/null +++ b/build/platform/java/error_prone/2.10.0/ya.make @@ -0,0 +1,4 @@ +RESOURCES_LIBRARY() +OWNER(heretic) +DECLARE_EXTERNAL_RESOURCE(ERROR_PRONE_2_10_0 sbr:2649935593) +END() diff --git a/build/platform/java/error_prone/2.3.1/ya.make b/build/platform/java/error_prone/2.3.1/ya.make new file mode 100644 index 0000000000..5d2267036f --- /dev/null +++ b/build/platform/java/error_prone/2.3.1/ya.make @@ -0,0 +1,4 @@ +RESOURCES_LIBRARY() +OWNER(heretic) +DECLARE_EXTERNAL_RESOURCE(ERROR_PRONE_2_3_1 sbr:616853779) +END() diff --git a/build/platform/java/error_prone/2.7.1/ya.make b/build/platform/java/error_prone/2.7.1/ya.make new file mode 100644 index 0000000000..81a345ba98 --- /dev/null +++ b/build/platform/java/error_prone/2.7.1/ya.make @@ -0,0 +1,4 @@ +RESOURCES_LIBRARY() +OWNER(heretic) +DECLARE_EXTERNAL_RESOURCE(ERROR_PRONE_2_7_1 sbr:2202855601) +END() diff --git a/build/platform/java/error_prone/ya.make b/build/platform/java/error_prone/ya.make new file mode 100644 index 0000000000..ee2eceafc0 --- /dev/null +++ b/build/platform/java/error_prone/ya.make @@ -0,0 +1,28 @@ +RESOURCES_LIBRARY() +OWNER(heretic) +IF(USE_SYSTEM_ERROR_PRONE) + MESSAGE(WARNING System Error Prone $USE_SYSTEM_ERROR_PRONE will be used) +ELSEIF(ERROR_PRONE_VERSION == "2.3.1") + DECLARE_EXTERNAL_RESOURCE(ERROR_PRONE sbr:616853779) +ELSEIF(ERROR_PRONE_VERSION == "2.3.2") + DECLARE_EXTERNAL_RESOURCE(ERROR_PRONE sbr:760800655) +ELSEIF(ERROR_PRONE_VERSION == "2.3.3") + DECLARE_EXTERNAL_RESOURCE(ERROR_PRONE sbr:919320393) +ELSEIF(ERROR_PRONE_VERSION == "2.4.0") + DECLARE_EXTERNAL_RESOURCE(ERROR_PRONE sbr:1585305794) +ELSEIF(ERROR_PRONE_VERSION == "2.6.0") + DECLARE_EXTERNAL_RESOURCE(ERROR_PRONE sbr:2139890169) +ELSEIF(ERROR_PRONE_VERSION == "2.7.1") + DECLARE_EXTERNAL_RESOURCE(ERROR_PRONE sbr:2202855601) +ELSEIF(ERROR_PRONE_VERSION == "2.10.0") + DECLARE_EXTERNAL_RESOURCE(ERROR_PRONE sbr:2649935593) +ELSE() + MESSAGE(FATAL_ERROR Unsupported Error Prone version: $ERROR_PRONE_VERSION) +ENDIF() +END() + +RECURSE( + 2.10.0 + 2.7.1 + 2.3.1 +) diff --git a/build/platform/java/groovy/ya.make b/build/platform/java/groovy/ya.make new file mode 100644 index 0000000000..01058729b2 --- /dev/null +++ b/build/platform/java/groovy/ya.make @@ -0,0 +1,10 @@ +RESOURCES_LIBRARY() +OWNER(heretic) +IF(USE_SYSTEM_GROOVY_COMPILER) + MESSAGE(WARNING System groovy $USE_SYSTEM_GROOVY_COMPILER will be used) +ELSEIF(GROOVY_VERSION == "3.0.5") + DECLARE_EXTERNAL_RESOURCE(GROOVY_COMPILER sbr:1710622475) +ELSE() + MESSAGE(FATAL_ERROR Unexpected groovy version ${GROOVY_VERSION}) +ENDIF() +END() diff --git a/build/platform/java/jacoco-agent/ya.make b/build/platform/java/jacoco-agent/ya.make new file mode 100644 index 0000000000..c298dc9020 --- /dev/null +++ b/build/platform/java/jacoco-agent/ya.make @@ -0,0 +1,9 @@ +RESOURCES_LIBRARY() +OWNER(heretic) +IF(USE_SYSTEM_JACOCO_AGENT) + MESSAGE(WARNING System jacoco agent $USE_SYSTEM_JACOCO_AGENT will be used) +ELSE() + DECLARE_EXTERNAL_RESOURCE(JACOCO_AGENT sbr:2493693569) +ENDIF() + +END() diff --git a/build/platform/java/jdk/jdk10/ya.make b/build/platform/java/jdk/jdk10/ya.make new file mode 100644 index 0000000000..83a420a81f --- /dev/null +++ b/build/platform/java/jdk/jdk10/ya.make @@ -0,0 +1,20 @@ +OWNER(trenin17) +RESOURCES_LIBRARY() +INCLUDE(${ARCADIA_ROOT}/build/platform/java/jdk/resources.inc) + +DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK10 + ${JDK10_DARWIN} FOR DARWIN + ${JDK10_LINUX} FOR LINUX + ${JDK10_WINDOWS} FOR WIN32 +) + +IF(OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK10 ${JDK10_DARWIN}) +ELSEIF(OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK10 ${JDK10_LINUX}) +ELSEIF(OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK10 ${JDK10_WINDOWS}) +ENDIF() + +END() diff --git a/build/platform/java/jdk/jdk11/ya.make b/build/platform/java/jdk/jdk11/ya.make new file mode 100644 index 0000000000..ae450c9c97 --- /dev/null +++ b/build/platform/java/jdk/jdk11/ya.make @@ -0,0 +1,31 @@ +OWNER(trenin17) +RESOURCES_LIBRARY() +INCLUDE(${ARCADIA_ROOT}/build/platform/java/jdk/resources.inc) + +DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK11 + ${JDK11_DARWIN} FOR DARWIN + ${JDK11_DARWIN_ARM64} FOR DARWIN-ARM64 + ${JDK11_LINUX} FOR LINUX + ${JDK11_WINDOWS} FOR WIN32 +) + +IF(OS_DARWIN AND ARCH_ARM64) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK11 ${JDK11_DARWIN_ARM64}) +ELSEIF(OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK11 ${JDK11_DARWIN}) +ELSEIF(OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK11 ${JDK11_LINUX}) +ELSEIF(OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK11 ${JDK11_WINDOWS}) +ENDIF() + +IF(SANITIZER_TYPE == "address") + IF(HOST_OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(JDK_FOR_TESTS11 ${JDK11_LINUX_ASAN}) + ELSE() + MESSAGE(FATAL_ERROR Unsupported platform for JDK11 with asan) + ENDIF() +ENDIF() + +END() diff --git a/build/platform/java/jdk/jdk12/ya.make b/build/platform/java/jdk/jdk12/ya.make new file mode 100644 index 0000000000..3ab3553338 --- /dev/null +++ b/build/platform/java/jdk/jdk12/ya.make @@ -0,0 +1,20 @@ +OWNER(trenin17) +RESOURCES_LIBRARY() +INCLUDE(${ARCADIA_ROOT}/build/platform/java/jdk/resources.inc) + +DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK12 + ${JDK12_DARWIN} FOR DARWIN + ${JDK12_LINUX} FOR LINUX + ${JDK12_WINDOWS} FOR WIN32 +) + +IF(OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK12 ${JDK12_DARWIN}) +ELSEIF(OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK12 ${JDK12_LINUX}) +ELSEIF(OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK12 ${JDK12_WINDOWS}) +ENDIF() + +END() diff --git a/build/platform/java/jdk/jdk13/ya.make b/build/platform/java/jdk/jdk13/ya.make new file mode 100644 index 0000000000..527af68fb2 --- /dev/null +++ b/build/platform/java/jdk/jdk13/ya.make @@ -0,0 +1,28 @@ +OWNER(trenin17) +RESOURCES_LIBRARY() +INCLUDE(${ARCADIA_ROOT}/build/platform/java/jdk/resources.inc) + +DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK13 + ${JDK13_DARWIN} FOR DARWIN + ${JDK13_LINUX} FOR LINUX + ${JDK13_WINDOWS} FOR WIN32 +) + +IF(OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK13 ${JDK13_DARWIN}) +ELSEIF(OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK13 ${JDK13_LINUX}) +ELSEIF(OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK13 ${JDK13_WINDOWS}) +ENDIF() + +IF(SANITIZER_TYPE == "address") + IF(HOST_OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(JDK_FOR_TESTS ${JDK13_LINUX_ASAN}) + ELSE() + MESSAGE(FATAL_ERROR Unsupported platform for JDK13 with asan) + ENDIF() +ENDIF() + +END() diff --git a/build/platform/java/jdk/jdk14/ya.make b/build/platform/java/jdk/jdk14/ya.make new file mode 100644 index 0000000000..ed08c1a7fb --- /dev/null +++ b/build/platform/java/jdk/jdk14/ya.make @@ -0,0 +1,20 @@ +OWNER(trenin17) +RESOURCES_LIBRARY() +INCLUDE(${ARCADIA_ROOT}/build/platform/java/jdk/resources.inc) + +DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK14 + ${JDK14_DARWIN} FOR DARWIN + ${JDK14_LINUX} FOR LINUX + ${JDK14_WINDOWS} FOR WIN32 +) + +IF(OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK14 ${JDK14_DARWIN}) +ELSEIF(OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK14 ${JDK14_LINUX}) +ELSEIF(OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK14 ${JDK14_WINDOWS}) +ENDIF() + +END() diff --git a/build/platform/java/jdk/jdk15/ya.make b/build/platform/java/jdk/jdk15/ya.make new file mode 100644 index 0000000000..0746e27405 --- /dev/null +++ b/build/platform/java/jdk/jdk15/ya.make @@ -0,0 +1,22 @@ +OWNER(trenin17) +RESOURCES_LIBRARY() +INCLUDE(${ARCADIA_ROOT}/build/platform/java/jdk/resources.inc) + +DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK15 + ${JDK15_DARWIN} FOR DARWIN + ${JDK15_DARWIN_ARM64} FOR DARWIN-ARM64 + ${JDK15_LINUX} FOR LINUX + ${JDK15_WINDOWS} FOR WIN32 +) +IF(OS_DARWIN AND ARCH_ARM64) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK15 ${JDK15_DARWIN_ARM64}) +ELSEIF(OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK15 ${JDK15_DARWIN}) +ELSEIF(OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK15 ${JDK15_LINUX}) +ELSEIF(OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK15 ${JDK15_WINDOWS}) +ENDIF() + +END() diff --git a/build/platform/java/jdk/jdk16/ya.make b/build/platform/java/jdk/jdk16/ya.make new file mode 100644 index 0000000000..2fc2f16418 --- /dev/null +++ b/build/platform/java/jdk/jdk16/ya.make @@ -0,0 +1,23 @@ +OWNER(trenin17) +RESOURCES_LIBRARY() +INCLUDE(${ARCADIA_ROOT}/build/platform/java/jdk/resources.inc) + +DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK16 + ${JDK16_DARWIN} FOR DARWIN + ${JDK16_DARWIN_ARM64} FOR DARWIN-ARM64 + ${JDK16_LINUX} FOR LINUX + ${JDK16_WINDOWS} FOR WIN32 +) + +IF(OS_DARWIN AND ARCH_ARM64) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK16 ${JDK16_DARWIN_ARM64}) +ELSEIF(OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK16 ${JDK16_DARWIN}) +ELSEIF(OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK16 ${JDK16_LINUX}) +ELSEIF(OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK16 ${JDK16_WINDOWS}) +ENDIF() + +END() diff --git a/build/platform/java/jdk/jdk17/ya.make b/build/platform/java/jdk/jdk17/ya.make new file mode 100644 index 0000000000..97aa391945 --- /dev/null +++ b/build/platform/java/jdk/jdk17/ya.make @@ -0,0 +1,23 @@ +OWNER(heretic) +RESOURCES_LIBRARY() +INCLUDE(${ARCADIA_ROOT}/build/platform/java/jdk/resources.inc) + +DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK17 + ${JDK17_DARWIN} FOR DARWIN + ${JDK17_DARWIN_ARM64} FOR DARWIN-ARM64 + ${JDK17_LINUX} FOR LINUX + ${JDK17_WINDOWS} FOR WIN32 +) + +IF(OS_DARWIN AND ARCH_ARM64) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK17 ${JDK17_DARWIN_ARM64}) +ELSEIF(OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK17 ${JDK17_DARWIN}) +ELSEIF(OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK17 ${JDK17_LINUX}) +ELSEIF(OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK17 ${JDK17_WINDOWS}) +ENDIF() + +END() diff --git a/build/platform/java/jdk/jdk8/ya.make b/build/platform/java/jdk/jdk8/ya.make new file mode 100644 index 0000000000..7386b4731c --- /dev/null +++ b/build/platform/java/jdk/jdk8/ya.make @@ -0,0 +1,23 @@ +OWNER(trenin17) +RESOURCES_LIBRARY() +INCLUDE(${ARCADIA_ROOT}/build/platform/java/jdk/resources.inc) + +DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK8 + ${JDK8_DARWIN_ARM64} FOR DARWIN-ARM64 + ${JDK8_DARWIN} FOR DARWIN + ${JDK8_LINUX} FOR LINUX + ${JDK8_WINDOWS} FOR WIN32 +) + +IF(OS_DARWIN AND ARCH_ARM64) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK8 ${JDK8_DARWIN_ARM64}) +ELSEIF(OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK8 ${JDK8_DARWIN}) +ELSEIF(OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK8 ${JDK8_LINUX}) +ELSEIF(OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK8 ${JDK8_WINDOWS}) +ENDIF() + +END() diff --git a/build/platform/java/jdk/resources.inc b/build/platform/java/jdk/resources.inc new file mode 100644 index 0000000000..7413263cd9 --- /dev/null +++ b/build/platform/java/jdk/resources.inc @@ -0,0 +1,49 @@ +# JDK 17 +SET(JDK17_DARWIN_ARM64 sbr:2720893567) +SET(JDK17_DARWIN sbr:2720886299) +SET(JDK17_LINUX sbr:2720875090) +SET(JDK17_WINDOWS sbr:2720881931) + +# JDK 16 +SET(JDK16_DARWIN_ARM64 sbr:2197985911) +SET(JDK16_DARWIN sbr:2197936962) +SET(JDK16_LINUX sbr:2197854301) +SET(JDK16_WINDOWS sbr:2197964128) + +# JDK 15 +SET(JDK15_DARWIN sbr:1901471162) +SET(JDK15_DARWIN_ARM64 sbr:2107376046) +SET(JDK15_LINUX sbr:1901452000) +SET(JDK15_WINDOWS sbr:1901563630) + +# JDK 14 +SET(JDK14_DARWIN sbr:1714972232) +SET(JDK14_LINUX sbr:1714966923) +SET(JDK14_WINDOWS sbr:1714975688) + +# JDK 13 +SET(JDK13_DARWIN sbr:1327581343) +SET(JDK13_LINUX sbr:1327248424) +SET(JDK13_WINDOWS sbr:1327617393) + +SET(JDK13_LINUX_ASAN sbr:1327513158) +# JDK 12 +SET(JDK12_DARWIN sbr:1128561457) +SET(JDK12_LINUX sbr:1128737735) +SET(JDK12_WINDOWS sbr:1128743394) +# JDK 11 +SET(JDK11_DARWIN sbr:1903539486) +SET(JDK11_DARWIN_ARM64 sbr:2107253283) +SET(JDK11_LINUX sbr:1903522585) +SET(JDK11_WINDOWS sbr:1903567822) + +SET(JDK11_LINUX_ASAN sbr:1323637508) +# JDK 10 +SET(JDK10_DARWIN sbr:545649998) +SET(JDK10_LINUX sbr:545649806) +SET(JDK10_WINDOWS sbr:545648079) +# JDK 8 +SET(JDK8_DARWIN_ARM64 sbr:1901326056) +SET(JDK8_DARWIN sbr:1901326056) +SET(JDK8_LINUX sbr:1901306329) +SET(JDK8_WINDOWS sbr:1901510679) diff --git a/build/platform/java/jdk/ya.make b/build/platform/java/jdk/ya.make new file mode 100644 index 0000000000..909ae36e18 --- /dev/null +++ b/build/platform/java/jdk/ya.make @@ -0,0 +1,311 @@ +RESOURCES_LIBRARY() +OWNER(heretic) + +INCLUDE(resources.inc) + +IF(JDK_VERSION == "17") + DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK_DEFAULT + ${JDK17_DARWIN} FOR DARWIN + ${JDK17_DARWIN_ARM64} FOR DARWIN-ARM64 + ${JDK17_LINUX} FOR LINUX + ${JDK17_WINDOWS} FOR WIN32 + ) + IF(NOT HOST_OS_LINUX AND NOT HOST_OS_WINDOWS AND NOT HOST_OS_DARWIN) + MESSAGE(FATAL_ERROR Unsupported platform for JDK17) + ENDIF() +ELSEIF(JDK_VERSION == "16") + DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK_DEFAULT + ${JDK16_DARWIN} FOR DARWIN + ${JDK16_DARWIN_ARM64} FOR DARWIN-ARM64 + ${JDK16_LINUX} FOR LINUX + ${JDK16_WINDOWS} FOR WIN32 + ) + IF(NOT HOST_OS_LINUX AND NOT HOST_OS_WINDOWS AND NOT HOST_OS_DARWIN) + MESSAGE(FATAL_ERROR Unsupported platform for JDK16) + ENDIF() +ELSEIF(JDK_VERSION == "15") + DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK_DEFAULT + ${JDK15_DARWIN} FOR DARWIN + ${JDK15_DARWIN_ARM64} FOR DARWIN-ARM64 + ${JDK15_LINUX} FOR LINUX + ${JDK15_WINDOWS} FOR WIN32 + ) + IF(NOT HOST_OS_LINUX AND NOT HOST_OS_WINDOWS AND NOT HOST_OS_DARWIN) + MESSAGE(FATAL_ERROR Unsupported platform for JDK15) + ENDIF() +ELSEIF(JDK_VERSION == "14") + DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK_DEFAULT + ${JDK14_DARWIN} FOR DARWIN + ${JDK14_LINUX} FOR LINUX + ${JDK14_WINDOWS} FOR WIN32 + ) + IF(NOT HOST_OS_LINUX AND NOT HOST_OS_WINDOWS AND NOT HOST_OS_DARWIN) + MESSAGE(FATAL_ERROR Unsupported platform for JDK14) + ENDIF() +ELSEIF(JDK_VERSION == "13") + DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK_DEFAULT + ${JDK13_DARWIN} FOR DARWIN + ${JDK13_LINUX} FOR LINUX + ${JDK13_WINDOWS} FOR WIN32 + ) + IF(NOT HOST_OS_LINUX AND NOT HOST_OS_WINDOWS AND NOT HOST_OS_DARWIN) + MESSAGE(FATAL_ERROR Unsupported platform for JDK13) + ENDIF() +ELSEIF(JDK_VERSION == "12") + DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK_DEFAULT + ${JDK12_DARWIN} FOR DARWIN + ${JDK12_LINUX} FOR LINUX + ${JDK12_WINDOWS} FOR WIN32 + ) + IF(NOT HOST_OS_LINUX AND NOT HOST_OS_WINDOWS AND NOT HOST_OS_DARWIN) + MESSAGE(FATAL_ERROR Unsupported platform for JDK12) + ENDIF() +ELSEIF(JDK_VERSION == "11") + DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK_DEFAULT + ${JDK11_DARWIN} FOR DARWIN + ${JDK11_DARWIN_ARM64} FOR DARWIN-ARM64 + ${JDK11_LINUX} FOR LINUX + ${JDK11_WINDOWS} FOR WIN32 + ) + IF(NOT HOST_OS_LINUX AND NOT HOST_OS_WINDOWS AND NOT HOST_OS_DARWIN) + MESSAGE(FATAL_ERROR Unsupported platform for JDK11) + ENDIF() +ELSEIF(JDK_VERSION == "10") + DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK_DEFAULT + ${JDK10_DARWIN} FOR DARWIN + ${JDK10_LINUX} FOR LINUX + ${JDK10_WINDOWS} FOR WIN32 + ) +ELSEIF(JDK_VERSION == "8") + DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK_DEFAULT + ${JDK8_DARWIN_ARM64} FOR DARWIN-ARM64 + ${JDK8_DARWIN} FOR DARWIN + ${JDK8_LINUX} FOR LINUX + ${JDK8_WINDOWS} FOR WIN32 + ) + IF(NOT HOST_OS_LINUX AND NOT HOST_OS_WINDOWS AND NOT HOST_OS_DARWIN) + MESSAGE(FATAL_ERROR Unsupported platform for JDK8) + ENDIF() +ELSE() + MESSAGE(FATAL_ERROR Unsupported JDK version) +ENDIF() + +IF(USE_SYSTEM_JDK) + MESSAGE(WARNING System JDK $USE_SYSTEM_JDK will be used) +ELSEIF(JDK_VERSION == "17") + DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK + ${JDK17_DARWIN} FOR DARWIN + ${JDK17_DARWIN_ARM64} FOR DARWIN-ARM64 + ${JDK17_LINUX} FOR LINUX + ${JDK17_WINDOWS} FOR WIN32 + ) + IF(NOT HOST_OS_LINUX AND NOT HOST_OS_WINDOWS AND NOT HOST_OS_DARWIN) + MESSAGE(FATAL_ERROR Unsupported platform for JDK17) + ENDIF() + + IF(OS_DARWIN AND ARCH_ARM64) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK17_DARWIN_ARM64}) + ELSEIF(OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK17_DARWIN}) + ELSEIF(OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK17_LINUX}) + ELSEIF(OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK17_WINDOWS}) + ENDIF() +ELSEIF(JDK_VERSION == "16") + DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK + ${JDK16_DARWIN} FOR DARWIN + ${JDK16_DARWIN_ARM64} FOR DARWIN-ARM64 + ${JDK16_LINUX} FOR LINUX + ${JDK16_WINDOWS} FOR WIN32 + ) + IF(NOT HOST_OS_LINUX AND NOT HOST_OS_WINDOWS AND NOT HOST_OS_DARWIN) + MESSAGE(FATAL_ERROR Unsupported platform for JDK16) + ENDIF() + + IF(OS_DARWIN AND ARCH_ARM64) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK16_DARWIN_ARM64}) + ELSEIF(OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK16_DARWIN}) + ELSEIF(OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK16_LINUX}) + ELSEIF(OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK16_WINDOWS}) + ENDIF() +ELSEIF(JDK_VERSION == "15") + DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK + ${JDK15_DARWIN} FOR DARWIN + ${JDK15_DARWIN_ARM64} FOR DARWIN-ARM64 + ${JDK15_LINUX} FOR LINUX + ${JDK15_WINDOWS} FOR WIN32 + ) + IF(NOT HOST_OS_LINUX AND NOT HOST_OS_WINDOWS AND NOT HOST_OS_DARWIN) + MESSAGE(FATAL_ERROR Unsupported platform for JDK15) + ENDIF() + + IF(OS_DARWIN AND ARCH_ARM64) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK15_DARWIN_ARM64}) + ELSEIF(OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK15_DARWIN}) + ELSEIF(OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK15_LINUX}) + ELSEIF(OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK15_WINDOWS}) + ENDIF() +ELSEIF(JDK_VERSION == "14") + DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK + ${JDK14_DARWIN} FOR DARWIN + ${JDK14_LINUX} FOR LINUX + ${JDK14_WINDOWS} FOR WIN32 + ) + IF(NOT HOST_OS_LINUX AND NOT HOST_OS_WINDOWS AND NOT HOST_OS_DARWIN) + MESSAGE(FATAL_ERROR Unsupported platform for JDK14) + ENDIF() + + IF(OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK14_DARWIN}) + ELSEIF(OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK14_LINUX}) + ELSEIF(OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK14_WINDOWS}) + ENDIF() +ELSEIF(JDK_VERSION == "13") + DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK + ${JDK13_DARWIN} FOR DARWIN + ${JDK13_LINUX} FOR LINUX + ${JDK13_WINDOWS} FOR WIN32 + ) + IF(NOT HOST_OS_LINUX AND NOT HOST_OS_WINDOWS AND NOT HOST_OS_DARWIN) + MESSAGE(FATAL_ERROR Unsupported platform for JDK13) + ENDIF() + IF(SANITIZER_TYPE == "address") + IF(HOST_OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(JDK_FOR_TESTS ${JDK13_LINUX_ASAN}) + ELSE() + MESSAGE(FATAL_ERROR Unsupported platform for JDK13 with asan) + ENDIF() + ENDIF() + + IF(OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK13_DARWIN}) + ELSEIF(OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK13_LINUX}) + ELSEIF(OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK13_WINDOWS}) + ENDIF() +ELSEIF(JDK_VERSION == "12") + DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK + ${JDK12_DARWIN} FOR DARWIN + ${JDK12_LINUX} FOR LINUX + ${JDK12_WINDOWS} FOR WIN32 + ) + IF(NOT HOST_OS_LINUX AND NOT HOST_OS_WINDOWS AND NOT HOST_OS_DARWIN) + MESSAGE(FATAL_ERROR Unsupported platform for JDK12) + ENDIF() + + IF(OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK12_DARWIN}) + ELSEIF(OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK12_LINUX}) + ELSEIF(OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK12_WINDOWS}) + ENDIF() +ELSEIF(JDK_VERSION == "11") + DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK + ${JDK11_DARWIN} FOR DARWIN + ${JDK11_DARWIN_ARM64} FOR DARWIN-ARM64 + ${JDK11_LINUX} FOR LINUX + ${JDK11_WINDOWS} FOR WIN32 + ) + IF(NOT HOST_OS_LINUX AND NOT HOST_OS_WINDOWS AND NOT HOST_OS_DARWIN) + MESSAGE(FATAL_ERROR Unsupported platform for JDK11) + ENDIF() + IF(SANITIZER_TYPE == "address") + IF(HOST_OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(JDK_FOR_TESTS ${JDK11_LINUX_ASAN}) + ELSE() + MESSAGE(FATAL_ERROR Unsupported platform for JDK11 with asan) + ENDIF() + ENDIF() + + IF(OS_DARWIN AND ARCH_ARM64) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK11_DARWIN_ARM64}) + ELSEIF(OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK11_DARWIN}) + ELSEIF(OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK11_LINUX}) + ELSEIF(OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK11_WINDOWS}) + ENDIF() +ELSEIF(JDK_VERSION == "10") + DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK + ${JDK10_DARWIN} FOR DARWIN + ${JDK10_LINUX} FOR LINUX + ${JDK10_WINDOWS} FOR WIN32 + ) + IF(NOT HOST_OS_LINUX AND NOT HOST_OS_WINDOWS AND NOT HOST_OS_DARWIN) + MESSAGE(FATAL_ERROR Unsupported platform for JDK10) + ENDIF() + + IF(OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK10_DARWIN}) + ELSEIF(OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK10_LINUX}) + ELSEIF(OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK10_WINDOWS}) + ENDIF() +ELSEIF(JDK_VERSION == "8") + DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + JDK + ${JDK8_DARWIN_ARM64} FOR DARWIN-ARM64 + ${JDK8_DARWIN} FOR DARWIN + ${JDK8_LINUX} FOR LINUX + ${JDK8_WINDOWS} FOR WIN32 + ) + IF(NOT HOST_OS_LINUX AND NOT HOST_OS_WINDOWS AND NOT HOST_OS_DARWIN) + MESSAGE(FATAL_ERROR Unsupported platform for JDK8) + ENDIF() + + IF(OS_DARWIN AND ARCH_ARM64) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK8_DARWIN_ARM64}) + ELSEIF(OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK8_DARWIN}) + ELSEIF(OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK8_LINUX}) + ELSEIF(OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(WITH_JDK ${JDK8_WINDOWS}) + ENDIF() +ELSE() + MESSAGE(FATAL_ERROR Unsupported JDK version) +ENDIF() + +END() + +RECURSE( + jdk8 + jdk10 + jdk11 + jdk12 + jdk13 + jdk14 + jdk15 + jdk16 + jdk17 +) diff --git a/build/platform/java/jni/ya.make b/build/platform/java/jni/ya.make new file mode 100644 index 0000000000..9d8dab98b1 --- /dev/null +++ b/build/platform/java/jni/ya.make @@ -0,0 +1,29 @@ +LIBRARY() +OWNER(heretic) + +PEERDIR( + build/platform/java/jdk + ${JDK_RESOURCE_PEERDIR} +) + +IF(OS_DARWIN) + SET(PLATFORM_NAME darwin) +ELSEIF(OS_LINUX) + SET(PLATFORM_NAME linux) +ELSEIF(OS_WINDOWS) + SET(PLATFORM_NAME win32) +ENDIF() + +IF (USE_SYSTEM_JDK) + SET(JDK_ROOT ${USE_SYSTEM_JDK}) +ELSE() + SET(JDK_ROOT ${JDK_DEFAULT_RESOURCE_GLOBAL}) +ENDIF() +IF (PLATFORM_NAME) + CFLAGS(GLOBAL -I${JDK_ROOT}/include) + CFLAGS(GLOBAL -I${JDK_ROOT}/include/${PLATFORM_NAME}) +ELSE() + MESSAGE(FATAL_ERROR Unsupported platform for jni) +ENDIF() + +END() diff --git a/build/platform/java/jstyle_lib/ya.make b/build/platform/java/jstyle_lib/ya.make new file mode 100644 index 0000000000..fa55e63071 --- /dev/null +++ b/build/platform/java/jstyle_lib/ya.make @@ -0,0 +1,11 @@ +RESOURCES_LIBRARY() + +OWNER(heretic) + +IF (USE_SYSTEM_JSTYLE_LIB) + MESSAGE(WARNING System java codestyle library $USE_SYSTEM_JSTYLE_LIB will be used) +ELSE() + DECLARE_EXTERNAL_RESOURCE(JSTYLE_LIB sbr:2525400095) +ENDIF() + +END() diff --git a/build/platform/java/kotlin/ya.make b/build/platform/java/kotlin/ya.make new file mode 100644 index 0000000000..b4c0b0b83a --- /dev/null +++ b/build/platform/java/kotlin/ya.make @@ -0,0 +1,31 @@ +# how to build: https://a.yandex-team.ru/arc/trunk/arcadia/devtools/kotlin_compiler_uberjar +RESOURCES_LIBRARY() +OWNER(heretic) +IF(USE_SYSTEM_KOTLIN_COMPILER) + MESSAGE(WARNING System kotlin $USE_SYSTEM_KOTLIN_COMPILER will be used) +ELSEIF(KOTLIN_VERSION == "1.3.72") + DECLARE_EXTERNAL_RESOURCE(KOTLIN_COMPILER sbr:1463870128) +ELSEIF(KOTLIN_VERSION == "1.4.0") + DECLARE_EXTERNAL_RESOURCE(KOTLIN_COMPILER sbr:1708283452) +ELSEIF(KOTLIN_VERSION == "1.4.10") + DECLARE_EXTERNAL_RESOURCE(KOTLIN_COMPILER sbr:1730522145) +ELSEIF(KOTLIN_VERSION == "1.4.20") + DECLARE_EXTERNAL_RESOURCE(KOTLIN_COMPILER sbr:1869719387) +ELSEIF(KOTLIN_VERSION == "1.4.30") + DECLARE_EXTERNAL_RESOURCE(KOTLIN_COMPILER sbr:1974389794) +ELSEIF(KOTLIN_VERSION == "1.5.10") + DECLARE_EXTERNAL_RESOURCE(KOTLIN_COMPILER sbr:2183338194) +ELSEIF(KOTLIN_VERSION == "1.5.20") + DECLARE_EXTERNAL_RESOURCE(KOTLIN_COMPILER sbr:2257446523) +ELSEIF(KOTLIN_VERSION == "1.5.21") + DECLARE_EXTERNAL_RESOURCE(KOTLIN_COMPILER sbr:2285312314) +ELSEIF(KOTLIN_VERSION == "1.5.30") + DECLARE_EXTERNAL_RESOURCE(KOTLIN_COMPILER sbr:2382793744) +ELSEIF(KOTLIN_VERSION == "1.5.31") + DECLARE_EXTERNAL_RESOURCE(KOTLIN_COMPILER sbr:2444978303) +ELSEIF(KOTLIN_VERSION == "1.6.10") + DECLARE_EXTERNAL_RESOURCE(KOTLIN_COMPILER sbr:2754878302) +ELSE() + MESSAGE(FATAL_ERROR Unexpected KOTLIN_VERSION ${KOTLIN_VERSION}) +ENDIF() +END() diff --git a/build/platform/java/kythe/ya.make b/build/platform/java/kythe/ya.make new file mode 100644 index 0000000000..d5a9237f68 --- /dev/null +++ b/build/platform/java/kythe/ya.make @@ -0,0 +1,10 @@ +RESOURCES_LIBRARY() +OWNER(g:ymake) + +IF(USE_SYSTEM_KYTHE) + MESSAGE(WARNING System Kythe $USE_SYSTEM_KYTHE will be used) +ELSE() + DECLARE_EXTERNAL_RESOURCE(KYTHE sbr:837801347) +ENDIF() + +END() diff --git a/build/platform/java/scriptgen/ya.make b/build/platform/java/scriptgen/ya.make new file mode 100644 index 0000000000..d296097f52 --- /dev/null +++ b/build/platform/java/scriptgen/ya.make @@ -0,0 +1,27 @@ +RESOURCES_LIBRARY() +OWNER(g:ymake) + +SET(SCRIPTGEN_LINUX sbr:2654452283) +SET(SCRIPTGEN_DARWIN_ARM64 sbr:2654451866) +SET(SCRIPTGEN_DARWIN sbr:2654452096) +SET(SCRIPTGEN_WIN32 sbr:2654451225) + +DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + SCRIPTGEN + ${SCRIPTGEN_LINUX} FOR LINUX + ${SCRIPTGEN_DARWIN} FOR DARWIN + ${SCRIPTGEN_DARWIN_ARM64} FOR DARWIN-ARM64 + ${SCRIPTGEN_WIN32} FOR WIN32 +) + +IF(OS_DARWIN AND ARCH_ARM64) + DECLARE_EXTERNAL_RESOURCE(WITH_SCRIPTGEN ${SCRIPTGEN_DARWIN_ARM64}) +ELSEIF(OS_DARWIN AND ARCH_X86_64) + DECLARE_EXTERNAL_RESOURCE(WITH_SCRIPTGEN ${SCRIPTGEN_DARWIN}) +ELSEIF(OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(WITH_SCRIPTGEN ${SCRIPTGEN_LINUX}) +ELSEIF(OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(WITH_SCRIPTGEN ${SCRIPTGEN_WIN32}) +ENDIF() + +END() diff --git a/build/platform/java/uberjar/uberjar10/ya.make b/build/platform/java/uberjar/uberjar10/ya.make new file mode 100644 index 0000000000..29829b4cd0 --- /dev/null +++ b/build/platform/java/uberjar/uberjar10/ya.make @@ -0,0 +1,6 @@ +RESOURCES_LIBRARY() +OWNER(trenin17) + +DECLARE_EXTERNAL_RESOURCE(UBERJAR10 sbr:720309903) + +END() diff --git a/build/platform/java/uberjar/uberjar11/ya.make b/build/platform/java/uberjar/uberjar11/ya.make new file mode 100644 index 0000000000..69ae705253 --- /dev/null +++ b/build/platform/java/uberjar/uberjar11/ya.make @@ -0,0 +1,6 @@ +RESOURCES_LIBRARY() +OWNER(trenin17) + +DECLARE_EXTERNAL_RESOURCE(UBERJAR11 sbr:962498940) + +END() diff --git a/build/platform/java/uberjar/uberjar12/ya.make b/build/platform/java/uberjar/uberjar12/ya.make new file mode 100644 index 0000000000..88ff579eca --- /dev/null +++ b/build/platform/java/uberjar/uberjar12/ya.make @@ -0,0 +1,6 @@ +RESOURCES_LIBRARY() +OWNER(trenin17) + +DECLARE_EXTERNAL_RESOURCE(UBERJAR12 sbr:962498940) + +END() diff --git a/build/platform/java/uberjar/uberjar13/ya.make b/build/platform/java/uberjar/uberjar13/ya.make new file mode 100644 index 0000000000..62c70ca3a1 --- /dev/null +++ b/build/platform/java/uberjar/uberjar13/ya.make @@ -0,0 +1,6 @@ +RESOURCES_LIBRARY() +OWNER(trenin17) + +DECLARE_EXTERNAL_RESOURCE(UBERJAR13 sbr:1165818979) + +END() diff --git a/build/platform/java/uberjar/uberjar14/ya.make b/build/platform/java/uberjar/uberjar14/ya.make new file mode 100644 index 0000000000..45e7deab2f --- /dev/null +++ b/build/platform/java/uberjar/uberjar14/ya.make @@ -0,0 +1,6 @@ +RESOURCES_LIBRARY() +OWNER(trenin17) + +DECLARE_EXTERNAL_RESOURCE(UBERJAR14 sbr:1407329657) + +END() diff --git a/build/platform/java/uberjar/uberjar15/ya.make b/build/platform/java/uberjar/uberjar15/ya.make new file mode 100644 index 0000000000..49fdd64317 --- /dev/null +++ b/build/platform/java/uberjar/uberjar15/ya.make @@ -0,0 +1,6 @@ +RESOURCES_LIBRARY() +OWNER(trenin17) + +DECLARE_EXTERNAL_RESOURCE(UBERJAR15 sbr:2074702997) + +END() diff --git a/build/platform/java/uberjar/uberjar16/ya.make b/build/platform/java/uberjar/uberjar16/ya.make new file mode 100644 index 0000000000..ca4cefc1b1 --- /dev/null +++ b/build/platform/java/uberjar/uberjar16/ya.make @@ -0,0 +1,6 @@ +RESOURCES_LIBRARY() +OWNER(trenin17) + +DECLARE_EXTERNAL_RESOURCE(UBERJAR16 sbr:2199772343) + +END() diff --git a/build/platform/java/uberjar/uberjar17/ya.make b/build/platform/java/uberjar/uberjar17/ya.make new file mode 100644 index 0000000000..bc9bf4411b --- /dev/null +++ b/build/platform/java/uberjar/uberjar17/ya.make @@ -0,0 +1,6 @@ +RESOURCES_LIBRARY() +OWNER(heretic) +# same resource as 16 +DECLARE_EXTERNAL_RESOURCE(UBERJAR17 sbr:2199772343) + +END() diff --git a/build/platform/java/uberjar/uberjar8/ya.make b/build/platform/java/uberjar/uberjar8/ya.make new file mode 100644 index 0000000000..45aec41508 --- /dev/null +++ b/build/platform/java/uberjar/uberjar8/ya.make @@ -0,0 +1,6 @@ +RESOURCES_LIBRARY() +OWNER(trenin17) + +DECLARE_EXTERNAL_RESOURCE(UBERJAR8 sbr:962511340) + +END() diff --git a/build/platform/java/uberjar/ya.make b/build/platform/java/uberjar/ya.make new file mode 100644 index 0000000000..29c934d5b1 --- /dev/null +++ b/build/platform/java/uberjar/ya.make @@ -0,0 +1,39 @@ +RESOURCES_LIBRARY() +OWNER(heretic) + +IF(USE_SYSTEM_UBERJAR) + MESSAGE(WARNING System uberjar $USE_SYSTEM_UBERJAR will be used) +ELSEIF(JDK_VERSION == "17") + DECLARE_EXTERNAL_RESOURCE(UBERJAR sbr:2199772343) +ELSEIF(JDK_VERSION == "16") + DECLARE_EXTERNAL_RESOURCE(UBERJAR sbr:2199772343) +ELSEIF(JDK_VERSION == "15") + DECLARE_EXTERNAL_RESOURCE(UBERJAR sbr:2074702997) +ELSEIF(JDK_VERSION == "14") + DECLARE_EXTERNAL_RESOURCE(UBERJAR sbr:1407329657) +ELSEIF(JDK_VERSION == "13") + DECLARE_EXTERNAL_RESOURCE(UBERJAR sbr:1165818979) +ELSEIF(JDK_VERSION == "12") + DECLARE_EXTERNAL_RESOURCE(UBERJAR sbr:962498940) +ELSEIF(JDK_VERSION == "11") + DECLARE_EXTERNAL_RESOURCE(UBERJAR sbr:962498940) +ELSEIF(JDK_VERSION == "10" OR JDK10) # !JDK10 flag is deprecated, this check should be removed later + DECLARE_EXTERNAL_RESOURCE(UBERJAR sbr:720309903) +ELSEIF(JDK_VERSION == "8") + DECLARE_EXTERNAL_RESOURCE(UBERJAR sbr:962511340) +ELSE() + MESSAGE(FATAL_ERROR Uberjar is not supported for selected JDK version) +ENDIF() + +END() + +RECURSE( + uberjar8 + uberjar10 + uberjar11 + uberjar12 + uberjar13 + uberjar14 + uberjar15 + uberjar16 +) diff --git a/build/platform/java/ya.make b/build/platform/java/ya.make new file mode 100644 index 0000000000..7194053b98 --- /dev/null +++ b/build/platform/java/ya.make @@ -0,0 +1,10 @@ +RECURSE( + jdk + jni + uberjar + error_prone + jacoco-agent + kotlin + jstyle_lib + scriptgen +) diff --git a/build/platform/linux_sdk/README.md b/build/platform/linux_sdk/README.md new file mode 100644 index 0000000000..ff846cefbf --- /dev/null +++ b/build/platform/linux_sdk/README.md @@ -0,0 +1,7 @@ +### Правки в Ubuntu 14.04 SDK +* `lib/x86_64-linux-gnu/libc-2.19.so` — удалены dynamic версии символов + * `__cxa_thread_atexit_impl` + * `getauxval` + * `__getauxval` +* `usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19` — удалены dynamic версии символов + * `__cxa_thread_atexit_impl` diff --git a/build/platform/linux_sdk/ya.make b/build/platform/linux_sdk/ya.make new file mode 100644 index 0000000000..add74eee9e --- /dev/null +++ b/build/platform/linux_sdk/ya.make @@ -0,0 +1,55 @@ +RESOURCES_LIBRARY() + +OWNER(g:contrib somov) + +NO_PLATFORM_RESOURCES() + +SET(NEED_PLATFORM_PEERDIRS no) + +IF (OS_SDK == "local") + # Implementation is in $S/build/ymake.core.conf +ELSEIF (ARCH_X86_64) + IF (OS_SDK == "ubuntu-10") + DECLARE_EXTERNAL_RESOURCE(OS_SDK_ROOT sbr:244388930) + ELSEIF (OS_SDK == "ubuntu-12") + DECLARE_EXTERNAL_RESOURCE(OS_SDK_ROOT sbr:244387436) + ELSEIF (OS_SDK == "ubuntu-14") + DECLARE_EXTERNAL_RESOURCE(OS_SDK_ROOT sbr:1966560555) + ELSEIF (OS_SDK == "ubuntu-16") + DECLARE_EXTERNAL_RESOURCE(OS_SDK_ROOT sbr:243881345) + ELSEIF (OS_SDK == "ubuntu-18") + DECLARE_EXTERNAL_RESOURCE(OS_SDK_ROOT sbr:617908641) + ELSEIF (OS_SDK == "ubuntu-20") + DECLARE_EXTERNAL_RESOURCE(OS_SDK_ROOT sbr:2635714620) + ELSE() + MESSAGE(FATAL_ERROR "There is no ${OS_SDK} SDK for x86-64") + ENDIF() +ELSEIF (ARCH_AARCH64) + IF (OS_SDK == "ubuntu-16") + DECLARE_EXTERNAL_RESOURCE(OS_SDK_ROOT sbr:309054781) + ELSE() + MESSAGE(FATAL_ERROR "There is no ${OS_SDK} SDK for AArch64/ARMv8 64 bit") + ENDIF() +ELSEIF (ARCH_PPC64LE) + IF (OS_SDK == "ubuntu-14") + IF (HOST_ARCH_PPC64LE) + DECLARE_EXTERNAL_RESOURCE(OS_SDK_ROOT sbr:1570528338) + ELSE() + DECLARE_EXTERNAL_RESOURCE(OS_SDK_ROOT sbr:233217651) + ENDIF() + ELSE() + MESSAGE(FATAL_ERROR "There is no ${OS_SDK} SDK for PPC64LE") + ENDIF() +ELSEIF (ARCH_ARM7) + IF (ARM7_FLOAT_ABI == "hard" AND OS_SDK == "ubuntu-16") + DECLARE_EXTERNAL_RESOURCE(OS_SDK_ROOT sbr:1323200692) + ELSEIF (ARM7_FLOAT_ABI == "softfp" AND OS_SDK == "ubuntu-18") + DECLARE_EXTERNAL_RESOURCE(OS_SDK_ROOT sbr:2402287545) + ELSE() + MESSAGE(FATAL_ERROR "There is no ${OS_SDK} SDK for ARMv7 32 bit (float ABI: ${ARM7_FLOAT_ABI})") + ENDIF() +ELSE() + MESSAGE(FATAL_ERROR "Unexpected OS_SDK value: ${OS_SDK}") +ENDIF() + +END() diff --git a/build/platform/lld/ya.make b/build/platform/lld/ya.make new file mode 100644 index 0000000000..c046e89098 --- /dev/null +++ b/build/platform/lld/ya.make @@ -0,0 +1,62 @@ +RESOURCES_LIBRARY() + +LICENSE(Service-Prebuilt-Tool) + +OWNER(somov) + +IF (USE_LTO OR USE_THINLTO) + IF (CLANG7 OR CLANG8) + # Use LLD 8 for old Clang because its IR code fails LLD 11 validation. + ENABLE(USE_LLD8) + ELSEIF (CLANG11) + # DEVTOOLSSUPPORT-9065 + ENABLE(USE_LLD11) + ENDIF() +ENDIF() + +IF (OS_ANDROID) + # Use LLD shipped with Android NDK. + LDFLAGS("-fuse-ld=lld") +ELSEIF (USE_LLD8) + IF (HOST_OS_LINUX) + IF (HOST_ARCH_PPC64LE) + DECLARE_EXTERNAL_RESOURCE(LLD_ROOT sbr:1610790447) + ELSE() + DECLARE_EXTERNAL_RESOURCE(LLD_ROOT sbr:1063258680) + ENDIF() + ELSEIF (HOST_OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(LLD_ROOT sbr:1063258537) + ENDIF() + + LDFLAGS("-fuse-ld=$LLD_ROOT_RESOURCE_GLOBAL/ld") +ELSEIF (USE_LLD11) + IF (HOST_OS_LINUX) + IF (HOST_ARCH_PPC64LE) + DECLARE_EXTERNAL_RESOURCE(LLD_ROOT sbr:1843381106) + ELSE() + DECLARE_EXTERNAL_RESOURCE(LLD_ROOT sbr:1843327433) + ENDIF() + ELSEIF (HOST_OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(LLD_ROOT sbr:1843327928) + ENDIF() + + LDFLAGS("-fuse-ld=$LLD_ROOT_RESOURCE_GLOBAL/ld" "-Wl,--no-rosegment") +ELSE() + IF (HOST_OS_LINUX) + IF (HOST_ARCH_PPC64LE) + DECLARE_EXTERNAL_RESOURCE(LLD_ROOT sbr:2283417120) + ELSE() + DECLARE_EXTERNAL_RESOURCE(LLD_ROOT sbr:2283360772) + ENDIF() + ELSEIF (HOST_OS_DARWIN) + IF (HOST_ARCH_ARM64) + DECLARE_EXTERNAL_RESOURCE(LLD_ROOT sbr:2283439721) + ELSE() + DECLARE_EXTERNAL_RESOURCE(LLD_ROOT sbr:2283429958) + ENDIF() + ENDIF() + + LDFLAGS("-fuse-ld=$LLD_ROOT_RESOURCE_GLOBAL/ld" "-Wl,--no-rosegment") +ENDIF() + +END() diff --git a/build/platform/local_so/readme.md b/build/platform/local_so/readme.md new file mode 100644 index 0000000000..1bcad54581 --- /dev/null +++ b/build/platform/local_so/readme.md @@ -0,0 +1,3 @@ +This is supporting library for DYNAMIC_LIBRARY module. + +It sets LDFLAG that brings support of dynamic loading fron binary's directory on Linux, Darwin etc. On Windows this behavior is enabled by default. diff --git a/build/platform/local_so/ya.make b/build/platform/local_so/ya.make new file mode 100644 index 0000000000..70b72f653c --- /dev/null +++ b/build/platform/local_so/ya.make @@ -0,0 +1,9 @@ +RESOURCES_LIBRARY() + +OWNER(g:ymake) + +IF (NOT OS_WINDOWS) + SET_APPEND(RPATH_GLOBAL '-Wl,-rpath,$ORIGIN') +ENDIF() + +END() diff --git a/build/platform/macos_sdk/ya.make b/build/platform/macos_sdk/ya.make new file mode 100644 index 0000000000..6fb8dc54c0 --- /dev/null +++ b/build/platform/macos_sdk/ya.make @@ -0,0 +1,20 @@ +RESOURCES_LIBRARY() + +OWNER(somov) + +# macOS 11.1 Big Sur SDK / Xcode 12.4 (12D4e) +DECLARE_EXTERNAL_RESOURCE(MACOS_SDK sbr:2088833948) + +IF (USE_STL_SYSTEM) + SET(__XCODE_RESOURCE_NAME CPP_XCODE_TOOLCHAIN_ROOT) + SET(__XCODE_TOOLCHAIN_VERSION ${CPP_XCODE_TOOLCHAIN_VERSION}) + INCLUDE(${ARCADIA_ROOT}/build/platform/xcode/ya.make.inc) + CFLAGS( + GLOBAL -F$MACOS_SDK_RESOURCE_GLOBAL/System/Library/Frameworks + ) + LDFLAGS( + -F$MACOS_SDK_RESOURCE_GLOBAL/System/Library/Frameworks + ) +ENDIF() + +END() diff --git a/build/platform/macos_system_stl/ya.make b/build/platform/macos_system_stl/ya.make new file mode 100644 index 0000000000..4631bbc57a --- /dev/null +++ b/build/platform/macos_system_stl/ya.make @@ -0,0 +1,15 @@ +RESOURCES_LIBRARY() + +OWNER(g:cpp-contrib) + +# Taken from the default toolchain of the Xcode 12.5.1 +DECLARE_EXTERNAL_RESOURCE(MACOS_SYSTEM_STL sbr:2561940097) + +# xcode toolchain allready contains system headers +IF (USE_STL_SYSTEM AND NOT XCODE) + CFLAGS( + GLOBAL -I${MACOS_SYSTEM_STL_RESOURCE_GLOBAL}/include + ) +ENDIF() + +END() diff --git a/build/platform/mapkit/ya.make b/build/platform/mapkit/ya.make new file mode 100644 index 0000000000..513dff5bcf --- /dev/null +++ b/build/platform/mapkit/ya.make @@ -0,0 +1,32 @@ +RESOURCES_LIBRARY() + +OWNER(somov) + +NO_PLATFORM() + +IF (OS_ANDROID) + IF (MAPS_MOBILE_EXPORT_CPP_API) + # Sandbox Resource ID duplicates + # arcadia/sandbox/projects/maps/mobile/MapsMobileMakeArtifacts/__init__.py + DECLARE_EXTERNAL_RESOURCE(MAPKIT_ANDROID_LIBCXX_HEADERS sbr:2527848662) + CFLAGS(GLOBAL -nostdinc++ GLOBAL -cxx-isystem GLOBAL $MAPKIT_ANDROID_LIBCXX_HEADERS_RESOURCE_GLOBAL) + ENDIF() + + DECLARE_EXTERNAL_RESOURCE(MAPKIT_ANDROID_LIBCXX_LIBRARIES sbr:2527853263) + + IF (ARCH_ARM7) + SET(ARCH_NAME arm) + ELSEIF (ARCH_ARM64) + SET(ARCH_NAME arm64) + ELSEIF (ARCH_I686) + SET(ARCH_NAME x86) + ELSEIF (ARCH_X86_64) + SET(ARCH_NAME x86-64) + ENDIF() + + SET(LIBS $MAPKIT_ANDROID_LIBCXX_LIBRARIES_RESOURCE_GLOBAL/$ARCH_NAME) + + LDFLAGS(-L$LIBS) +ENDIF() + +END() diff --git a/build/platform/msvc/ya.make b/build/platform/msvc/ya.make new file mode 100644 index 0000000000..ccb602c280 --- /dev/null +++ b/build/platform/msvc/ya.make @@ -0,0 +1,19 @@ +RESOURCES_LIBRARY() + +OWNER(somov) + +IF (WINDOWS_KITS_VERSION == "10.0.10586.0") + DECLARE_EXTERNAL_RESOURCE(WINDOWS_KITS sbr:544779014) +ELSEIF (WINDOWS_KITS_VERSION == "10.0.16299.0") + DECLARE_EXTERNAL_RESOURCE(WINDOWS_KITS sbr:1379398385) +ELSEIF (WINDOWS_KITS_VERSION == "10.0.18362.0") + DECLARE_EXTERNAL_RESOURCE(WINDOWS_KITS sbr:1939557911) +ELSE() + MESSAGE(FATAL_ERROR "We have no Windows Kits version ${WINDOWS_KITS_VERSION}") +ENDIF() + +IF (CLANG_CL) + DECLARE_EXTERNAL_RESOURCE(MSVC_FOR_CLANG sbr:1383387533) # Microsoft Visual C++ 2017 14.16.27023 (15.9.5) +ENDIF() + +END() diff --git a/build/platform/nodejs/readme.md b/build/platform/nodejs/readme.md new file mode 100644 index 0000000000..92fbcfe699 --- /dev/null +++ b/build/platform/nodejs/readme.md @@ -0,0 +1,5 @@ +# Node.js bundle + +В бандле находится аркадийная Node.js (`contrib/libs/nodejs_12`) для Linux и Darwin. + +Ресурс должен быть tar-архивом с исполнимым бинарём `node`. diff --git a/build/platform/nodejs/resources.inc b/build/platform/nodejs/resources.inc new file mode 100644 index 0000000000..002466daeb --- /dev/null +++ b/build/platform/nodejs/resources.inc @@ -0,0 +1,2 @@ +SET(NODEJS_12_18_4_LINUX sbr:2197482931) +SET(NODEJS_12_18_4_DARWIN sbr:2197413902) diff --git a/build/platform/nodejs/ya.make b/build/platform/nodejs/ya.make new file mode 100644 index 0000000000..c872eca0d8 --- /dev/null +++ b/build/platform/nodejs/ya.make @@ -0,0 +1,17 @@ +RESOURCES_LIBRARY() + +OWNER(dankolesnikov) + +INCLUDE(${ARCADIA_ROOT}/build/platform/nodejs/resources.inc) + +IF (NOT HOST_OS_LINUX AND NOT HOST_OS_DARWIN) + MESSAGE(FATAL_ERROR Unsupported platform for Nodejs) +ENDIF() + +DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + NODEJS + ${NODEJS_12_18_4_LINUX} FOR LINUX + ${NODEJS_12_18_4_DARWIN} FOR DARWIN +) + +END() diff --git a/build/platform/opengl/ya.make b/build/platform/opengl/ya.make new file mode 100644 index 0000000000..94f0431d18 --- /dev/null +++ b/build/platform/opengl/ya.make @@ -0,0 +1,27 @@ +RESOURCES_LIBRARY() + +OWNER(g:contrib heretic) + +IF (NOT OPENGL_REQUIRED) + MESSAGE(FATAL_ERROR "No OpenGL Toolkit for your build") +ELSE() + IF (OS_LINUX) + IF (OPENGL_VERSION == "18.0.5") + DECLARE_EXTERNAL_RESOURCE(OPENGL sbr:1271121094) + SET(OS_SUFFIX "x86_64-linux-gnu") + ELSE() + ENABLE(OPENGL_NOT_FOUND) + ENDIF() + ELSE() + ENABLE(OPENGL_NOT_FOUND) + ENDIF() + + IF (OPENGL_NOT_FOUND) + MESSAGE(FATAL_ERROR "No OpenGL Toolkit for the selected platform") + ELSE() + CFLAGS(GLOBAL "-I$OPENGL_RESOURCE_GLOBAL/usr/include") + LDFLAGS("-L$OPENGL_RESOURCE_GLOBAL/usr/lib/$OS_SUFFIX") + ENDIF() +ENDIF() + +END() diff --git a/build/platform/perl/5.14/ya.make b/build/platform/perl/5.14/ya.make new file mode 100644 index 0000000000..3db5747945 --- /dev/null +++ b/build/platform/perl/5.14/ya.make @@ -0,0 +1,11 @@ +RESOURCES_LIBRARY() + +OWNER(somov) + +SET(PERL_SDK ubuntu-12) + +SRCDIR(build/platform/perl) + +INCLUDE(${ARCADIA_ROOT}/build/platform/perl/perl.inc) + +END() diff --git a/build/platform/perl/5.18/ya.make b/build/platform/perl/5.18/ya.make new file mode 100644 index 0000000000..1d17311066 --- /dev/null +++ b/build/platform/perl/5.18/ya.make @@ -0,0 +1,11 @@ +RESOURCES_LIBRARY() + +OWNER(somov) + +SET(PERL_SDK ubuntu-14) + +SRCDIR(build/platform/perl) + +INCLUDE(${ARCADIA_ROOT}/build/platform/perl/perl.inc) + +END() diff --git a/build/platform/perl/5.22/ya.make b/build/platform/perl/5.22/ya.make new file mode 100644 index 0000000000..658bcc2552 --- /dev/null +++ b/build/platform/perl/5.22/ya.make @@ -0,0 +1,11 @@ +RESOURCES_LIBRARY() + +OWNER(somov) + +SET(PERL_SDK ubuntu-16) + +SRCDIR(build/platform/perl) + +INCLUDE(${ARCADIA_ROOT}/build/platform/perl/perl.inc) + +END() diff --git a/build/platform/perl/5.26/ya.make b/build/platform/perl/5.26/ya.make new file mode 100644 index 0000000000..c510f6091a --- /dev/null +++ b/build/platform/perl/5.26/ya.make @@ -0,0 +1,11 @@ +RESOURCES_LIBRARY() + +OWNER(somov) + +SET(PERL_SDK ubuntu-18) + +SRCDIR(build/platform/perl) + +INCLUDE(${ARCADIA_ROOT}/build/platform/perl/perl.inc) + +END() diff --git a/build/platform/perl/5.30/ya.make b/build/platform/perl/5.30/ya.make new file mode 100644 index 0000000000..ba0132c6ba --- /dev/null +++ b/build/platform/perl/5.30/ya.make @@ -0,0 +1,11 @@ +RESOURCES_LIBRARY() + +OWNER(somov) + +SET(PERL_SDK ubuntu-20) + +SRCDIR(build/platform/perl) + +INCLUDE(${ARCADIA_ROOT}/build/platform/perl/perl.inc) + +END() diff --git a/build/platform/perl/perl.inc b/build/platform/perl/perl.inc new file mode 100644 index 0000000000..139e65bb33 --- /dev/null +++ b/build/platform/perl/perl.inc @@ -0,0 +1,33 @@ +PROVIDES(system_perl) + +IF (PERL_SDK == "ubuntu-12") + DECLARE_EXTERNAL_RESOURCE(SYSTEM_PERL_514 sbr:337748278) +ELSEIF (PERL_SDK == "ubuntu-14") + DECLARE_EXTERNAL_RESOURCE(SYSTEM_PERL_518 sbr:1655582861) +ELSEIF (PERL_SDK == "ubuntu-16") + DECLARE_EXTERNAL_RESOURCE(SYSTEM_PERL_522 sbr:323251590) +ELSEIF (PERL_SDK == "ubuntu-18") + DECLARE_EXTERNAL_RESOURCE(SYSTEM_PERL_526 sbr:616700320) +ELSEIF (PERL_SDK == "ubuntu-20") + DECLARE_EXTERNAL_RESOURCE(SYSTEM_PERL_530 sbr:2001114055) +ELSE() + MESSAGE(FATAL_ERROR "Building against system perl is not supported on ${PERL_SDK}") +ENDIF() + +IF (PERL_INCLUDE) + CFLAGS(GLOBAL $PERL_INCLUDE) +ENDIF() + +CFLAGS(GLOBAL -I$PERL_ARCHLIB/CORE) + +IF (PERL_LIBS) + LDFLAGS(-L${PERL_LIBS}) +ENDIF() + +IF (NOT OS_WINDOWS) + LDFLAGS(-lperl) +ELSE() + LDFLAGS(perl.lib) +ENDIF() + +CFLAGS(GLOBAL -DUSE_PERL) diff --git a/build/platform/perl/perl_5.18.patch b/build/platform/perl/perl_5.18.patch new file mode 100644 index 0000000000..840227eb54 --- /dev/null +++ b/build/platform/perl/perl_5.18.patch @@ -0,0 +1,51 @@ +diff --unified --recursive a/perl5.18/lib/perl/5.18/CORE/pad.h b/perl5.18/lib/perl/5.18/CORE/pad.h +--- a/perl5.18/lib/perl/5.18/CORE/pad.h 2020-08-10 09:58:43.970483379 +0300 ++++ b/perl5.18/lib/perl/5.18/CORE/pad.h 2020-08-10 10:00:56.850097798 +0300 +@@ -320,7 +320,7 @@ + PL_comppad = (PAD*) (PadlistARRAY(padlist)[nth]); \ + PL_curpad = AvARRAY(PL_comppad); \ + DEBUG_Xv(PerlIO_printf(Perl_debug_log, \ +- "Pad 0x%"UVxf"[0x%"UVxf"] set_cur depth=%d\n", \ ++ "Pad 0x%" UVxf "[0x%" UVxf "] set_cur depth=%d\n", \ + PTR2UV(PL_comppad), PTR2UV(PL_curpad), (int)(nth))); + + +@@ -338,7 +338,7 @@ + PL_comppad = (npad); \ + PL_curpad = PL_comppad ? AvARRAY(PL_comppad) : NULL; \ + DEBUG_Xv(PerlIO_printf(Perl_debug_log, \ +- "Pad 0x%"UVxf"[0x%"UVxf"] save_local\n", \ ++ "Pad 0x%" UVxf "[0x%" UVxf "] save_local\n", \ + PTR2UV(PL_comppad), PTR2UV(PL_curpad))); + + #define PAD_RESTORE_LOCAL(opad) \ +@@ -346,7 +346,7 @@ + PL_comppad = opad; \ + PL_curpad = PL_comppad ? AvARRAY(PL_comppad) : NULL; \ + DEBUG_Xv(PerlIO_printf(Perl_debug_log, \ +- "Pad 0x%"UVxf"[0x%"UVxf"] restore_local\n", \ ++ "Pad 0x%" UVxf "[0x%" UVxf "] restore_local\n", \ + PTR2UV(PL_comppad), PTR2UV(PL_curpad))); + + +diff --unified --recursive a/perl5.18/lib/perl/5.18/CORE/perl.h b/perl5.18/lib/perl/5.18/CORE/perl.h +--- a/perl5.18/lib/perl/5.18/CORE/perl.h 2020-08-10 09:58:43.966483390 +0300 ++++ b/perl5.18/lib/perl/5.18/CORE/perl.h 2020-08-10 10:01:44.649957846 +0300 +@@ -4254,7 +4254,7 @@ + EXTCONST char PL_warn_uninit[] + INIT("Use of uninitialized value%s%s%s"); + EXTCONST char PL_warn_uninit_sv[] +- INIT("Use of uninitialized value%"SVf"%s%s"); ++ INIT("Use of uninitialized value%" SVf "%s%s"); + EXTCONST char PL_warn_nosemi[] + INIT("Semicolon seems to be missing"); + EXTCONST char PL_warn_reserved[] +@@ -4274,7 +4274,7 @@ + EXTCONST char PL_no_aelem[] + INIT("Modification of non-creatable array value attempted, subscript %d"); + EXTCONST char PL_no_helem_sv[] +- INIT("Modification of non-creatable hash value attempted, subscript \"%"SVf"\""); ++ INIT("Modification of non-creatable hash value attempted, subscript \"%" SVf "\""); + EXTCONST char PL_no_modify[] + INIT("Modification of a read-only value attempted"); + EXTCONST char PL_no_mem[sizeof("Out of memory!\n")] diff --git a/build/platform/perl/ya.make b/build/platform/perl/ya.make new file mode 100644 index 0000000000..cc50c05c26 --- /dev/null +++ b/build/platform/perl/ya.make @@ -0,0 +1,28 @@ +LIBRARY() + +OWNER(somov) + +NO_PLATFORM() + +IF (USE_PERL_SYSTEM) + IF (PERL_SDK == "ubuntu-12") + PEERDIR(build/platform/perl/5.14) + ELSEIF (PERL_SDK == "ubuntu-14") + PEERDIR(build/platform/perl/5.18) + ELSEIF (PERL_SDK == "ubuntu-16") + PEERDIR(build/platform/perl/5.22) + ELSEIF (PERL_SDK == "ubuntu-18") + PEERDIR(build/platform/perl/5.26) + ELSEIF (PERL_SDK == "ubuntu-20") + PEERDIR(build/platform/perl/5.30) + ELSE() + MESSAGE(FATAL_ERROR "Building against system perl is not supported on ${PERL_SDK}") + ENDIF() + +ELSE() + + MESSAGE(FATAL_ERROR "There is no perl ready for static linkage. Try using the system one.") + +ENDIF() + +END() diff --git a/build/platform/python/ldflags/ya.make b/build/platform/python/ldflags/ya.make new file mode 100644 index 0000000000..d81ec31876 --- /dev/null +++ b/build/platform/python/ldflags/ya.make @@ -0,0 +1,17 @@ +RESOURCES_LIBRARY() + +OWNER(g:contrib) + +IF (USE_SYSTEM_PYTHON) + IF (OS_LINUX) + LDFLAGS("-L$EXTERNAL_PYTHON_RESOURCE_GLOBAL/python/lib/x86_64-linux-gnu -lpython${PY_VERSION}") + ELSEIF (OS_DARWIN) + LDFLAGS("-L$EXTERNAL_PYTHON_RESOURCE_GLOBAL/python/Python.framework/Versions/${PY_FRAMEWORK_VERSION}/lib -lpython${PY_VERSION}") + ELSEIF (OS_WINDOWS) + LDFLAGS("/LIBPATH:$EXTERNAL_PYTHON_RESOURCE_GLOBAL/python/libs") + ENDIF() +ELSEIF (NOT USE_ARCADIA_PYTHON) + LDFLAGS($PYTHON_LDFLAGS $PYTHON_LIBRARIES) +ENDIF() + +END() diff --git a/build/platform/python/python27/ya.make b/build/platform/python/python27/ya.make new file mode 100644 index 0000000000..35d2ef8405 --- /dev/null +++ b/build/platform/python/python27/ya.make @@ -0,0 +1,22 @@ +RESOURCES_LIBRARY() + +OWNER( + g:contrib + g:yatool +) + +INCLUDE(${ARCADIA_ROOT}/build/platform/python/resources.inc) + +IF (OS_LINUX) + IF (ARCH_ARM64 OR ARCH_AARCH64) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON27 ${PYTHON27_LINUX_ARM64}) + ELSE() + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON27 ${PYTHON27_LINUX}) + ENDIF() +ELSEIF (OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON27 ${PYTHON27_DARWIN}) +ELSEIF (OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON27 ${PYTHON27_WINDOWS}) +ENDIF() + +END() diff --git a/build/platform/python/python310/ya.make b/build/platform/python/python310/ya.make new file mode 100644 index 0000000000..fea3696e6d --- /dev/null +++ b/build/platform/python/python310/ya.make @@ -0,0 +1,30 @@ +RESOURCES_LIBRARY() + +OWNER( + g:contrib + g:yatool +) + +INCLUDE(${ARCADIA_ROOT}/build/platform/python/resources.inc) + +DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + PYTHON310 + ${PYTHON310_DARWIN} FOR DARWIN + ${PYTHON310_DARWIN_ARM64} FOR DARWIN-ARM64 + ${PYTHON310_LINUX} FOR LINUX + ${PYTHON310_WINDOWS} FOR WIN32 +) + +IF (OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON310 ${PYTHON310_LINUX}) +ELSEIF (OS_DARWIN) + IF (ARCH_ARM64) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON310 ${PYTHON310_DARWIN_ARM64}) + ELSEIF(ARCH_X86_64) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON310 ${PYTHON310_DARWIN}) + ENDIF() +ELSEIF (OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON310 ${PYTHON310_WINDOWS}) +ENDIF() + +END() diff --git a/build/platform/python/python34/ya.make b/build/platform/python/python34/ya.make new file mode 100644 index 0000000000..61be788bec --- /dev/null +++ b/build/platform/python/python34/ya.make @@ -0,0 +1,18 @@ +RESOURCES_LIBRARY() + +OWNER( + g:contrib + g:yatool +) + +INCLUDE(${ARCADIA_ROOT}/build/platform/python/resources.inc) + +IF (OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON34 ${PYTHON34_LINUX}) +ELSEIF (OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON34 ${PYTHON34_DARWIN}) +ELSEIF (OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON34 ${PYTHON34_WINDOWS}) +ENDIF() + +END() diff --git a/build/platform/python/python35/ya.make b/build/platform/python/python35/ya.make new file mode 100644 index 0000000000..7a6292efa0 --- /dev/null +++ b/build/platform/python/python35/ya.make @@ -0,0 +1,18 @@ +RESOURCES_LIBRARY() + +OWNER( + g:contrib + g:yatool +) + +INCLUDE(${ARCADIA_ROOT}/build/platform/python/resources.inc) + +IF (OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON35 ${PYTHON35_LINUX}) +ELSEIF (OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON35 ${PYTHON35_DARWIN}) +ELSEIF (OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON35 ${PYTHON35_WINDOWS}) +ENDIF() + +END() diff --git a/build/platform/python/python36/ya.make b/build/platform/python/python36/ya.make new file mode 100644 index 0000000000..c9dcf5d88b --- /dev/null +++ b/build/platform/python/python36/ya.make @@ -0,0 +1,18 @@ +RESOURCES_LIBRARY() + +OWNER( + g:contrib + g:yatool +) + +INCLUDE(${ARCADIA_ROOT}/build/platform/python/resources.inc) + +IF (OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON36 ${PYTHON36_LINUX}) +ELSEIF (OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON36 ${PYTHON36_DARWIN}) +ELSEIF (OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON36 ${PYTHON36_WINDOWS}) +ENDIF() + +END() diff --git a/build/platform/python/python37/ya.make b/build/platform/python/python37/ya.make new file mode 100644 index 0000000000..724c3f5b76 --- /dev/null +++ b/build/platform/python/python37/ya.make @@ -0,0 +1,18 @@ +RESOURCES_LIBRARY() + +OWNER( + g:contrib + g:yatool +) + +INCLUDE(${ARCADIA_ROOT}/build/platform/python/resources.inc) + +IF (OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON37 ${PYTHON37_LINUX}) +ELSEIF (OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON37 ${PYTHON37_DARWIN}) +ELSEIF (OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON37 ${PYTHON37_WINDOWS}) +ENDIF() + +END() diff --git a/build/platform/python/python38/ya.make b/build/platform/python/python38/ya.make new file mode 100644 index 0000000000..b6820ca6ca --- /dev/null +++ b/build/platform/python/python38/ya.make @@ -0,0 +1,23 @@ +RESOURCES_LIBRARY() + +OWNER( + g:contrib + g:yatool +) + +INCLUDE(${ARCADIA_ROOT}/build/platform/python/resources.inc) + +IF (OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON38 ${PYTHON38_LINUX}) +ELSEIF (OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON38 ${PYTHON38_DARWIN}) + IF (ARCH_ARM64) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON38 ${PYTHON38_DARWIN_ARM64}) + ELSEIF(ARCH_X86_64) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON38 ${PYTHON38_DARWIN}) + ENDIF() +ELSEIF (OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON38 ${PYTHON38_WINDOWS}) +ENDIF() + +END() diff --git a/build/platform/python/python39/ya.make b/build/platform/python/python39/ya.make new file mode 100644 index 0000000000..2579542d1e --- /dev/null +++ b/build/platform/python/python39/ya.make @@ -0,0 +1,22 @@ +RESOURCES_LIBRARY() + +OWNER( + g:contrib + g:yatool +) + +INCLUDE(${ARCADIA_ROOT}/build/platform/python/resources.inc) + +IF (OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON39 ${PYTHON39_LINUX}) +ELSEIF (OS_DARWIN) + IF (ARCH_ARM64) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON39 ${PYTHON39_DARWIN_ARM64}) + ELSEIF(ARCH_X86_64) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON39 ${PYTHON39_DARWIN}) + ENDIF() +ELSEIF (OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON39 ${PYTHON39_WINDOWS}) +ENDIF() + +END() diff --git a/build/platform/python/readme.md b/build/platform/python/readme.md new file mode 100644 index 0000000000..1eaafad35b --- /dev/null +++ b/build/platform/python/readme.md @@ -0,0 +1,83 @@ +# Инструкция по добавлению нового бандла с системным питоном + +## Майним бандлы системного питона +Бандлы системного питон майнятся для трех платформ: linux, darwin, windows. +Подставляем под PYTHON_VERSION - версию нужного питона +### Linux + +1. Устанавливаем систему с версией ubuntu, из которой планируется брать системный питон. Здесь есть два варианта + 1. Если нужно собрать системный питон, который будет запускать тесты на дистбилде, то нужно использовать ubuntu такой же версии, что и на дистбилде. + Тут стоит учитывать, что на дистбилде может быть достаточно старая версия ubuntu, на котором не будет нужной версии питона. + 2. Выбрать ту версию ubuntu, в которой есть нужный питон +2. `mkdir -p ~/work/packages` +3. `cd ~/work/packages` +4. майним deb-пакеты питона + 1. Майним системный питон для запуска на дистбилде: + + apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances python{PYTHON_VERSION}-dev python{|3}-pkg-resources python{|3}-setuptools | grep "^\w" | sort -u) + rm libc6* libc-* + + 2. Майним системный питон для сборки сошек: + + apt download python{PYTHON_VERSION} python{PYTHON_VERSION}-dev python{PYTHON_VERSION}-minimal libpython{PYTHON_VERSION} libpython{PYTHON_VERSION}-dev libpython{PYTHON_VERSION}-stdlib libpython{PYTHON_VERSION}-minimal + +5. `cd ..` +6. `for path in $(ls packages); do ar -xf packages/$path; tar -xf data.tar.xz; done;` +7. `mv usr python` +8. `tar -czf python{PYTHON_VERSION}_linux.tar.gz python` +9. `ya upload python{PYTHON_VERSION}_linux.tar.gz -d "Ubuntu {UBUNTU_VERSION} x86_64 python{PYTHON_VERSION} installation" --do-not-remove` + +UBUNTU_VERSION - версия ubuntu, на которой майнился системный питон + +### Darwin +1. Находим macbook. +2. Все установленные питоны лежат в `/Library/Frameworks/Python.framework/Versions` +3. Копируем `/Library/Frameworks/Python.framework` в директорию с именем `python` +4. Чистим `python/Python.framework/Versions/` от ненужных питонов +5. Проверяем, что симлинки указывают в правильные места + 1. `python/Python.framework/Versions/Current -> {PYTHON_VERSION}` + 2. `python/Python.framework/Headers -> Versions/Current/Headers` + 3. `python/Python.framework/Python -> Versions/Current/Python` + 4. `python/Python.framework/Resources -> Versions/Current/Resources` +6. `tar -czf python{PYTHON_VERSION}_darwin.tar.gz python` +7. `ya upload python{PYTHON_VERSION}_darwin.tar.gz -d "Darwin x86_64 python{PYTHON_VERSION} installation" --do-not-remove` + +Если нужного питона нет в системе, его нужно установить из `python.org`, его установку можно найти в стандартном месте. + +Если нужен питон из `brew`, его установку можно найти в `/usr/local/Cellar/python*/{python_version}/Frameworks/`, + а дальше следовать стандартной инструкции + +### Windows +1. Находим машинку с windows +2. Устанавливаем нужную версию питона из `python.org` +3. Копируем содержимое установки питона в директорию `python` +4. Пакуем директорию `python` в `python{PYTHON_VERSION}_windows.tar.gz` +5. `ya upload python{PYTHON_VERSION}_windows.tar.gz -d "Windows x86_64 python{PYTHON_VERSION} installation" --do-not-remove` + +## Добавляем бандлы системного питона в сборку + +1. Конфигурация бандлов системных питонов находится здесь [build/platform/python](https://a.yandex-team.ru/arc/trunk/arcadia/build/platform/python) +2. Добавляем сендбокс ресурсы собранных бандлов в файл [resources.inc](https://a.yandex-team.ru/arc/trunk/arcadia/build/platform/python/resources.inc) + + SET(PYTHON38_LINUX sbr:1211259884) + +3. Добавляем служебные переменные `_SYSTEM_PYTHON*, PY_VERSION, PY_FRAMEWORK_VERSION` для системного питона, если их еще нет, +в [ymake.core.conf](https://a.yandex-team.ru/arc/trunk/arcadia/build/ymake.core.conf?rev=7640792#L380) по аналогии. + + "3.8" ? { + _SYSTEM_PYTHON38=yes + PY_VERSION=3.8 + PY_FRAMEWORK_VERSION=3.8 + } + +4. Добавляем ресурс в [build/platform/python/ya.make](https://a.yandex-team.ru/arc/trunk/arcadia/build/platform/python/ya.make) + + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON38_LINUX}) + +## Проверяем сборку +1. Создаем тривиальный PY2MODULE с использование `c api` положенного питона, или находим подходящий в репозитории +2. Собираем его: + 1. linux `ya make -DUSE_SYSTEM_PYTHON=3.8 --target-platform linux` + 2. darwin `ya make -DUSE_SYSTEM_PYTHON=3.8 --target-platform darwin` + 3. windows `ya make -DUSE_SYSTEM_PYTHON=3.8 --target-platform win` +3. Проверяем, что получившиеся модули импортятся в питонах на соответсвующих системах diff --git a/build/platform/python/resources.inc b/build/platform/python/resources.inc new file mode 100644 index 0000000000..a730a5039b --- /dev/null +++ b/build/platform/python/resources.inc @@ -0,0 +1,32 @@ +SET(PYTHON27_LINUX sbr:1666107838) # Different from others(compatible with running tests) DEVTOOLS-7424 +SET(PYTHON34_LINUX sbr:419260733) +SET(PYTHON35_LINUX sbr:1658217692) # Different from others(compatible with running tests) DEVTOOLS-7424 +SET(PYTHON36_LINUX sbr:2569180519) # Different from others(compatible with running tests) DEVTOOLS-7424 +SET(PYTHON37_LINUX sbr:616675620) +SET(PYTHON38_LINUX sbr:1211259884) +SET(PYTHON39_LINUX sbr:2019057022) +SET(PYTHON310_LINUX sbr:2505611617) + +SET(PYTHON27_LINUX_ARM64 sbr:2145006545) + +SET(PYTHON27_DARWIN sbr:426406952) +SET(PYTHON34_DARWIN sbr:426379328) +SET(PYTHON35_DARWIN sbr:426409804) +SET(PYTHON36_DARWIN sbr:426412777) +SET(PYTHON37_DARWIN sbr:616740054) +SET(PYTHON38_DARWIN sbr:1211286783) +SET(PYTHON39_DARWIN sbr:2046345566) +SET(PYTHON310_DARWIN sbr:2505677448) + +SET(PYTHON38_DARWIN_ARM64 sbr:2577173323) +SET(PYTHON39_DARWIN_ARM64 sbr:2533263197) +SET(PYTHON310_DARWIN_ARM64 sbr:2577250782) + +SET(PYTHON27_WINDOWS sbr:629001312) +SET(PYTHON34_WINDOWS sbr:419220860) +SET(PYTHON35_WINDOWS sbr:410155020) +SET(PYTHON36_WINDOWS sbr:410161131) +SET(PYTHON37_WINDOWS sbr:629042628) +SET(PYTHON38_WINDOWS sbr:1211466284) +SET(PYTHON39_WINDOWS sbr:2018972280) +SET(PYTHON310_WINDOWS sbr:2506068927) diff --git a/build/platform/python/tests/test_common.py b/build/platform/python/tests/test_common.py new file mode 100644 index 0000000000..7a685330ea --- /dev/null +++ b/build/platform/python/tests/test_common.py @@ -0,0 +1,31 @@ +import subprocess + +import pytest + +from build.platform.python.tests import testlib + +PYTHON_VERSIONS = ["2.7", "3.4", "3.5", "3.6"] # 3.7, 3.8 are not runnable + + +@pytest.mark.parametrize("pyver", PYTHON_VERSIONS) +def test_version_matched(pyver): + testlib.check_python_version(pyver) + + +@pytest.mark.parametrize("pyver", PYTHON_VERSIONS) +def test_python_max_unicode_bytes(pyver): + cmd = [testlib.get_python_bin(pyver), '-c', 'import sys; print(sys.maxunicode)'] + maxunicode = subprocess.check_output(cmd, stderr=subprocess.STDOUT).decode('utf-8') + assert int(maxunicode) > 65535, "Found UCS2 build" + + +@pytest.mark.parametrize("pyver", PYTHON_VERSIONS) +def test_python_imports(pyver): + imports = { + "2.7": ['pkg_resources'], + "3.4": [], + "3.5": ['pkg_resources'], + "3.6": [], + } + for imp in imports[pyver]: + subprocess.check_call([testlib.get_python_bin(pyver), '-c', 'import ' + imp]) diff --git a/build/platform/python/tests/testlib.py b/build/platform/python/tests/testlib.py new file mode 100644 index 0000000000..d12f2815d4 --- /dev/null +++ b/build/platform/python/tests/testlib.py @@ -0,0 +1,21 @@ +import os +import subprocess + +import yatest.common + + +def get_python_bin(ver): + res_name = 'EXTERNAL_PYTHON{}_RESOURCE_GLOBAL'.format(ver.replace('.', '')) + gr = yatest.common.global_resources() + if res_name in gr: + bindir = os.path.join(gr[res_name], 'python', 'bin') + if ('python' + ver) in os.listdir(bindir): + return os.path.join(bindir, 'python' + ver) + return os.path.join(bindir, 'python') + + raise AssertionError("Resource '{}' is not available: {}".format(res_name, gr)) + + +def check_python_version(version): + ver = subprocess.check_output([get_python_bin(version), '-V'], stderr=subprocess.STDOUT).decode('utf-8') + assert version in ver diff --git a/build/platform/python/tests/ya.make b/build/platform/python/tests/ya.make new file mode 100644 index 0000000000..0d8965240e --- /dev/null +++ b/build/platform/python/tests/ya.make @@ -0,0 +1,36 @@ +PY3TEST() + +OWNER( + g:contrib + g:yatool +) + +IF (OS_DARWIN) + SIZE(LARGE) + + TAG( + ya:fat + ya:force_sandbox ya:exotic_platform + ) +ENDIF() + +PY_SRCS( + testlib.py +) + +TEST_SRCS( + test_common.py +) + +PEERDIR( + build/platform/python/python27 + build/platform/python/python34 + build/platform/python/python35 + build/platform/python/python36 + build/platform/python/python37 + build/platform/python/python38 + build/platform/python/python39 + build/platform/python/python310 +) + +END() diff --git a/build/platform/python/ya.make b/build/platform/python/ya.make new file mode 100644 index 0000000000..247e65f4c9 --- /dev/null +++ b/build/platform/python/ya.make @@ -0,0 +1,136 @@ +RESOURCES_LIBRARY() + +OWNER( + g:contrib + g:yatool +) + +INCLUDE(resources.inc) + +IF (USE_SYSTEM_PYTHON) + IF (OS_LINUX) + IF (ARCH_ARM64 OR ARCH_AARCH64) + IF (_SYSTEM_PYTHON27) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON27_LINUX_ARM64}) + ELSE() + ENABLE(PYTHON_NOT_FOUND) + ENDIF() + ELSEIF (ARCH_X86_64) + IF (_SYSTEM_PYTHON27) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON27_LINUX}) + ELSEIF (_SYSTEM_PYTHON34) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON34_LINUX}) + ELSEIF (_SYSTEM_PYTHON35) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON35_LINUX}) + ELSEIF (_SYSTEM_PYTHON36) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON36_LINUX}) + ELSEIF (_SYSTEM_PYTHON37) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON37_LINUX}) + ELSEIF (_SYSTEM_PYTHON38) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON38_LINUX}) + ELSEIF (_SYSTEM_PYTHON39) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON39_LINUX}) + ELSEIF (_SYSTEM_PYTHON310) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON310_LINUX}) + ELSE() + ENABLE(PYTHON_NOT_FOUND) + ENDIF() + ELSE() + ENABLE(PYTHON_NOT_FOUND) + ENDIF() + CFLAGS( + GLOBAL "-isystem$EXTERNAL_PYTHON_RESOURCE_GLOBAL/python/include" + GLOBAL "-isystem$EXTERNAL_PYTHON_RESOURCE_GLOBAL/python/include/python${PY_VERSION}" + ) + ELSEIF (OS_DARWIN) + IF (PYTHON_DISTR == "macos-brew") + IF (ARCH_X86_64) + IF (_SYSTEM_PYTHON27) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON sbr:562720527) + ELSEIF (_SYSTEM_PYTHON36) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON sbr:562721643) + ELSE() + ENABLE(PYTHON_NOT_FOUND) + ENDIF() + ELSE() + ENABLE(PYTHON_NOT_FOUND) + ENDIF() + ELSE() + IF (ARCH_X86_64) + IF (_SYSTEM_PYTHON27) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON27_DARWIN}) + ELSEIF (_SYSTEM_PYTHON34) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON34_DARWIN}) + ELSEIF (_SYSTEM_PYTHON35) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON35_DARWIN}) + ELSEIF (_SYSTEM_PYTHON36) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON36_DARWIN}) + ELSEIF (_SYSTEM_PYTHON37) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON37_DARWIN}) + ELSEIF (_SYSTEM_PYTHON38) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON38_DARWIN}) + ELSEIF (_SYSTEM_PYTHON39) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON39_DARWIN}) + ELSEIF (_SYSTEM_PYTHON310) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON310_DARWIN}) + ELSE() + ENABLE(PYTHON_NOT_FOUND) + ENDIF() + ELSEIF(ARCH_ARM64) + IF (_SYSTEM_PYTHON38) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON38_DARWIN_ARM64}) + ELSEIF(_SYSTEM_PYTHON39) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON39_DARWIN_ARM64}) + ELSEIF(_SYSTEM_PYTHON310) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON310_DARWIN_ARM64}) + ELSE() + ENABLE(PYTHON_NOT_FOUND) + ENDIF() + ELSE() + ENABLE(PYTHON_NOT_FOUND) + ENDIF() + ENDIF() + CFLAGS(GLOBAL "-isystem$EXTERNAL_PYTHON_RESOURCE_GLOBAL/python/Python.framework/Versions/${PY_FRAMEWORK_VERSION}/include/python${PY_VERSION}") + ELSEIF (OS_WINDOWS) + IF (ARCH_X86_64) + IF (_SYSTEM_PYTHON27) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON27_WINDOWS}) + ELSEIF (_SYSTEM_PYTHON34) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON34_WINDOWS}) + ELSEIF (_SYSTEM_PYTHON35) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON35_WINDOWS}) + ELSEIF (_SYSTEM_PYTHON36) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON36_WINDOWS}) + ELSEIF (_SYSTEM_PYTHON37) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON37_WINDOWS}) + ELSEIF (_SYSTEM_PYTHON38) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON38_WINDOWS}) + ELSEIF (_SYSTEM_PYTHON39) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON39_WINDOWS}) + ELSEIF (_SYSTEM_PYTHON310) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_PYTHON ${PYTHON310_WINDOWS}) + ELSE() + ENABLE(PYTHON_NOT_FOUND) + ENDIF() + ELSE() + ENABLE(PYTHON_NOT_FOUND) + ENDIF() + CFLAGS(GLOBAL "/I$EXTERNAL_PYTHON_RESOURCE_GLOBAL/python/include") + LDFLAGS("/LIBPATH:$EXTERNAL_PYTHON_RESOURCE_GLOBAL/python/libs") + ENDIF() + + IF (PYTHON_NOT_FOUND) + MESSAGE(FATAL_ERROR "No system Python ${USE_SYSTEM_PYTHON} for the selected platform") + ENDIF() +ELSEIF (NOT USE_ARCADIA_PYTHON) + CFLAGS(GLOBAL $PYTHON_FLAGS) + IF (OS_WINDOWS) + LDFLAGS($PYTHON_LDFLAGS $PYTHON_LIBRARIES) + ENDIF() +ENDIF() + +END() + +RECURSE_FOR_TESTS( + tests +) diff --git a/build/platform/python/ymake_python3/ya.make b/build/platform/python/ymake_python3/ya.make new file mode 100644 index 0000000000..c781448641 --- /dev/null +++ b/build/platform/python/ymake_python3/ya.make @@ -0,0 +1,33 @@ +RESOURCES_LIBRARY() + +OWNER( + g:arcadia-devtools + g:yatool +) + +SET(YMAKE_PYTHON3_LINUX sbr:2693706966) +SET(YMAKE_PYTHON3_DARWIN sbr:2693705780) +SET(YMAKE_PYTHON3_DARWIN_ARM64 sbr:2693704462) +SET(YMAKE_PYTHON3_WINDOWS sbr:2693706398) + +DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + YMAKE_PYTHON3 + ${YMAKE_PYTHON3_DARWIN} FOR DARWIN + ${YMAKE_PYTHON3_DARWIN_ARM64} FOR DARWIN-ARM64 + ${YMAKE_PYTHON3_LINUX} FOR LINUX + ${YMAKE_PYTHON3_WINDOWS} FOR WIN32 +) + +IF (OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_YMAKE_PYTHON3 ${YMAKE_PYTHON3_LINUX}) +ELSEIF (OS_DARWIN) + IF (ARCH_ARM64) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_YMAKE_PYTHON3 ${YMAKE_PYTHON3_DARWIN_ARM64}) + ELSEIF(ARCH_X86_64) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_YMAKE_PYTHON3 ${YMAKE_PYTHON3_DARWIN}) + ENDIF() +ELSEIF (OS_WINDOWS) + DECLARE_EXTERNAL_RESOURCE(EXTERNAL_YMAKE_PYTHON3 ${YMAKE_PYTHON3_WINDOWS}) +ENDIF() + +END() diff --git a/build/platform/qt/ya.make b/build/platform/qt/ya.make new file mode 100644 index 0000000000..e058ef99b1 --- /dev/null +++ b/build/platform/qt/ya.make @@ -0,0 +1,34 @@ +RESOURCES_LIBRARY() + +OWNER(g:contrib heretic) + +IF (NOT QT_REQUIRED) + MESSAGE(FATAL_ERROR "No QT Toolkit for your build") +ELSE() + IF (OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(QT sbr:2694823276) + ELSEIF (OS_DARWIN) + CFLAGS(GLOBAL "-F$QT_RESOURCE_GLOBAL/lib") + LDFLAGS("-F$QT_RESOURCE_GLOBAL/lib") + DECLARE_EXTERNAL_RESOURCE(QT sbr:2694837565) + ELSE() + ENABLE(QT_NOT_FOUND) + ENDIF() + + IF (HOST_OS_LINUX) + DECLARE_EXTERNAL_RESOURCE(HOST_QT sbr:2694823276) + ELSEIF (HOST_OS_DARWIN) + DECLARE_EXTERNAL_RESOURCE(HOST_QT sbr:2694837565) + ELSE() + ENABLE(QT_NOT_FOUND) + ENDIF() + + IF (QT_NOT_FOUND) + MESSAGE(FATAL_ERROR "No QT Toolkit for the selected platform") + ELSE() + CFLAGS(GLOBAL "-isystem$QT_RESOURCE_GLOBAL/include") + LDFLAGS("-L$QT_RESOURCE_GLOBAL/lib") + ENDIF() +ENDIF() + +END() diff --git a/build/platform/test_tool/a.yaml b/build/platform/test_tool/a.yaml new file mode 100644 index 0000000000..298148e450 --- /dev/null +++ b/build/platform/test_tool/a.yaml @@ -0,0 +1,16 @@ +service: devtools +title: test_tool acceptance +ci: + release-title-source: flow + secret: sec-01ekd5wc1dmdd544yp1xt3s9b8 + runtime: + sandbox-owner: DEVTOOLS-LARGE + autocheck: + large-autostart: + - target: devtools/ya/build/tests/cross_compilation/mac_builds_linux + toolchains: + - default-darwin-x86_64-release + - target: devtools/ya/test/tests/port_manager/fat + toolchains: + - default-linux-x86_64-release-musl + - default-darwin-x86_64-release diff --git a/build/platform/test_tool/host.ya.make.inc b/build/platform/test_tool/host.ya.make.inc new file mode 100644 index 0000000000..c25f2b1326 --- /dev/null +++ b/build/platform/test_tool/host.ya.make.inc @@ -0,0 +1,16 @@ +IF (HOST_OS_DARWIN AND HOST_ARCH_X86_64) + DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:2764984950) + DECLARE_EXTERNAL_RESOURCE(TEST_TOOL3_HOST sbr:2764990673) +ELSEIF (HOST_OS_DARWIN AND HOST_ARCH_ARM64) + DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:2764984688) + DECLARE_EXTERNAL_RESOURCE(TEST_TOOL3_HOST sbr:2764990185) +ELSEIF (HOST_OS_LINUX AND HOST_ARCH_PPC64LE) + DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:2764984559) + DECLARE_EXTERNAL_RESOURCE(TEST_TOOL3_HOST sbr:2764990014) +ELSEIF (HOST_OS_LINUX AND HOST_ARCH_X86_64) + DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:2764985330) + DECLARE_EXTERNAL_RESOURCE(TEST_TOOL3_HOST sbr:2764990852) +ELSEIF (HOST_OS_WINDOWS AND HOST_ARCH_X86_64) + DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_HOST sbr:2764984404) + DECLARE_EXTERNAL_RESOURCE(TEST_TOOL3_HOST sbr:2764989842) +ENDIF() diff --git a/build/platform/test_tool/ya.make b/build/platform/test_tool/ya.make new file mode 100644 index 0000000000..fd97d51ed8 --- /dev/null +++ b/build/platform/test_tool/ya.make @@ -0,0 +1,20 @@ +RESOURCES_LIBRARY() +OWNER( + g:yatest + heretic +) + +IF (TEST_TOOL_HOST_LOCAL) + MESSAGE(WARNING Host test tool $TEST_TOOL_HOST_LOCAL will be used) +ENDIF() +INCLUDE(host.ya.make.inc) +IF (TEST_TOOL_TARGET_LOCAL) + MESSAGE(WARNING Target test tool $TEST_TOOL_TARGET_LOCAL will be used) +ENDIF() +IF (OS_IOS AND NOT BUILD_IOS_APP) + DECLARE_EXTERNAL_RESOURCE(TEST_TOOL_TARGET sbr:707351393) + INCLUDE(${ARCADIA_ROOT}/build/platform/xcode/tools/ya.make.inc) +ENDIF() + +END() + diff --git a/build/platform/wine/ya.make b/build/platform/wine/ya.make new file mode 100644 index 0000000000..7d74cb279b --- /dev/null +++ b/build/platform/wine/ya.make @@ -0,0 +1,10 @@ +RESOURCES_LIBRARY() + +OWNER(neksard) + +# do not forget to update resources in ya.conf.json +DECLARE_EXTERNAL_RESOURCE(WINE_TOOL sbr:1093314933) +DECLARE_EXTERNAL_RESOURCE(WINE32_TOOL sbr:2264052281) + +SET(NEED_PLATFORM_PEERDIRS no) +END() diff --git a/build/platform/xcode/swift/ya.make b/build/platform/xcode/swift/ya.make new file mode 100644 index 0000000000..3d50525acb --- /dev/null +++ b/build/platform/xcode/swift/ya.make @@ -0,0 +1,12 @@ +RESOURCES_LIBRARY() +OWNER(heretic) + +IF (HOST_OS_DARWIN) + SET(__XCODE_RESOURCE_NAME SWIFT_XCODE_TOOLCHAIN_ROOT) + SET(__XCODE_TOOLCHAIN_VERSION ${SWIFT_XCODE_TOOLCHAIN_VERSION}) + INCLUDE(${ARCADIA_ROOT}/build/platform/xcode/ya.make.inc) +ELSE() + MESSAGE(FATAL_ERROR Unsupported host platform for swift compiler) +ENDIF() + +END() diff --git a/build/platform/xcode/tools/ya.make b/build/platform/xcode/tools/ya.make new file mode 100644 index 0000000000..4c4e135179 --- /dev/null +++ b/build/platform/xcode/tools/ya.make @@ -0,0 +1,4 @@ +RESOURCES_LIBRARY() +OWNER(heretic) +INCLUDE(ya.make.inc) +END() diff --git a/build/platform/xcode/tools/ya.make.inc b/build/platform/xcode/tools/ya.make.inc new file mode 100644 index 0000000000..a154917e33 --- /dev/null +++ b/build/platform/xcode/tools/ya.make.inc @@ -0,0 +1,9 @@ +IF (NOT HOST_OS_DARWIN) + MESSAGE(FATAL_ERROR Unsupported host platform for Xcode tools) +ENDIF() +IF (LOCAL_XCODE_TOOLS) # Local XCode installation is used instead. +ELSEIF (XCODE_TOOLS_VERSION == "10.1") + DECLARE_EXTERNAL_RESOURCE(XCODE_TOOLS_ROOT sbr:799017771) +ELSE() + MESSAGE(FATAL_ERROR Unsupported Xcode tools version: $XCODE_TOOLS_VERSION) +ENDIF() diff --git a/build/platform/xcode/ya.make.inc b/build/platform/xcode/ya.make.inc new file mode 100644 index 0000000000..3b24e18448 --- /dev/null +++ b/build/platform/xcode/ya.make.inc @@ -0,0 +1,16 @@ +IF (NOT __XCODE_RESOURCE_NAME) + MESSAGE(FATAL_ERROR "Unspecified __XCODE_RESOURCE_NAME variable") +ENDIF() +IF (NOT __XCODE_TOOLCHAIN_VERSION) + MESSAGE(FATAL_ERROR "Unspecified Xcode toolchain version for" $XCODE_RESOURCE_NAME) +ELSEIF (__XCODE_TOOLCHAIN_VERSION == "10.2.1") + DECLARE_EXTERNAL_RESOURCE(${__XCODE_RESOURCE_NAME} sbr:971159365) +ELSEIF (__XCODE_TOOLCHAIN_VERSION == "9.2") + DECLARE_EXTERNAL_RESOURCE(${__XCODE_RESOURCE_NAME} sbr:498971125) +ELSEIF (__XCODE_TOOLCHAIN_VERSION == "8.3.3") + DECLARE_EXTERNAL_RESOURCE(${__XCODE_RESOURCE_NAME} sbr:701155000) +ELSEIF (__XCODE_TOOLCHAIN_VERSION == "8.2.1") + DECLARE_EXTERNAL_RESOURCE(${__XCODE_RESOURCE_NAME} sbr:500014407) +ELSE() + MESSAGE(FATAL_ERROR "Unsupported Xcode toolchain version" $__XCODE_TOOLCHAIN_VERSION "for" $XCODE_RESOURCE_NAME) +ENDIF() diff --git a/build/platform/yfm/ya.make b/build/platform/yfm/ya.make new file mode 100644 index 0000000000..ece089e998 --- /dev/null +++ b/build/platform/yfm/ya.make @@ -0,0 +1,19 @@ +OWNER( + workfork +) + +RESOURCES_LIBRARY() + +IF(NOT HOST_OS_LINUX AND NOT HOST_OS_WINDOWS AND NOT HOST_OS_DARWIN) + MESSAGE(FATAL_ERROR Unsupported platform for YFM tool) +ENDIF() + +DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE( + YFM_TOOL + sbr:2614616596 FOR DARWIN-ARM64 + sbr:2614616596 FOR DARWIN + sbr:2614615780 FOR LINUX + sbr:2614617315 FOR WIN32 +) + +END() diff --git a/build/platform/yocto_sdk/yocto_sdk/ya.make b/build/platform/yocto_sdk/yocto_sdk/ya.make new file mode 100644 index 0000000000..37d1727168 --- /dev/null +++ b/build/platform/yocto_sdk/yocto_sdk/ya.make @@ -0,0 +1,11 @@ +RESOURCES_LIBRARY() + +OWNER(heretic) + +DECLARE_EXTERNAL_RESOURCE(YOCTO_SDK_ROOT sbr:882588946) +CFLAGS( + GLOBAL -cxx-isystem GLOBAL $YOCTO_SDK_ROOT_RESOURCE_GLOBAL/usr/include/c++/5.3.0/arm-poky-linux-gnueabi + GLOBAL -cxx-isystem GLOBAL $YOCTO_SDK_ROOT_RESOURCE_GLOBAL/usr/include/c++/5.3.0 +) + +END() |