opensource.conf 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. EXPORT_CMAKE=no
  2. EXPORT_GRADLE=no
  3. _SEM_IGNORED=IGNORED
  4. when ($OPENSOURCE == "yes" || $OPENSOURCE_PROJECT == "ymake" || $OPENSOURCE_PROJECT == "ya") {
  5. YA_OPENSOURCE=yes
  6. }
  7. when ($CATBOOST_OPENSOURCE == "yes") {
  8. OPENSOURCE=yes
  9. CFLAGS+=-DCATBOOST_OPENSOURCE=yes
  10. CXXFLAGS+=-DCATBOOST_OPENSOURCE=yes
  11. }
  12. when ($OPENSOURCE == "yes") {
  13. CATBOOST_OPENSOURCE=yes
  14. DISABLE_FLAKE8_MIGRATIONS=yes
  15. GO_VET=no
  16. HAVE_MKL=no
  17. LOCAL_YDB_DOCKER_PUBLIC_BUILD=yes
  18. NON_FATAL_ADDINCL_TO_MISSING=yes
  19. SO_OUTPUTS=yes
  20. UDF_NO_PROBE=yes
  21. USE_ASMLIB=no
  22. USE_DYNAMIC_LIBFUSE=yes
  23. USE_MKL=no
  24. VALIDATE_DATA=no
  25. _USE_AIO=dynamic
  26. _USE_ICONV=dynamic
  27. _USE_IDN=dynamic
  28. }
  29. # Extra macros to control how gradle export works
  30. when ($OPENSOURCE == "yes" && $EXPORT_GRADLE == "yes") {
  31. RECURSIVE_ADD_PEERS_TESTS=yes
  32. # The only reason to set it is to avoid any deps on contrib/python|contrib/libs/python when
  33. # exporting PY_*_MODULE and force dependency to build/platform/python there.
  34. USE_SYSTEM_PYTHON=3.10
  35. USE_ARCADIA_PYTHON=no
  36. EXPORT_SEM=yes
  37. EXPORTED_BUILD_SYSTEM_SOURCE_ROOT=${"$"}{PROJECT_SOURCE_DIR}
  38. EXPORTED_BUILD_SYSTEM_BUILD_ROOT=${"$"}{PROJECT_BINARY_DIR}
  39. EXPORT_LANG=JAVA
  40. }
  41. # Extra macros to control how cmake export works
  42. when ($OPENSOURCE == "yes" && $EXPORT_CMAKE == "yes") {
  43. # Python version is not actually used in exported cmake's rigth now.
  44. # The only reason to set it is to avoid any deps on contrib/python|contrib/libs/python when
  45. # exporting PY_*_MODULE and force dependency to build/platform/python there.
  46. USE_SYSTEM_PYTHON=3.10
  47. USE_ARCADIA_PYTHON=no
  48. # YMAKE-477. yexport does not support USE_GLOBAL_CMD=no and crashes with OOM.
  49. # USE_GLOBAL_CMD=yes does not work for Windows with ya make builds but works with exported CMake files: YMAKE-657.
  50. USE_GLOBAL_CMD=yes
  51. EXPORT_SEM=yes
  52. EXPORTED_BUILD_SYSTEM_SOURCE_ROOT="${PROJECT_SOURCE_DIR}"
  53. EXPORTED_BUILD_SYSTEM_BUILD_ROOT="${PROJECT_BINARY_DIR}"
  54. EXPORT_LANG=CPP
  55. }
  56. CMAKE_PACKAGE_SEM=
  57. CONAN_REQUIRES_SEM=
  58. CONAN_OPTIONS_SEM=
  59. CONAN_OS_REQUIRES_SEM=
  60. CONAN_OS_OPTIONS_SEM=
  61. macro _OPENSOURCE_EXPORT_REPLACEMENT_CMAKE(CMAKE[], CMAKE_TARGET[], CMAKE_COMPONENT[]) {
  62. SET(CMAKE_PACKAGE_SEM packages-ITEM && packages-name $CMAKE ${pre= && packages-components :CMAKE_COMPONENT} && mpackages-ITEM && mpackages-name $CMAKE ${pre= && mpackages-components :CMAKE_COMPONENT})
  63. SET(CMAKE_LINK_TARGET $CMAKE_TARGET)
  64. }
  65. ### @usage: OPENSOURCE_EXPORT_REPLACEMENT(CMAKE PkgName CMAKE_COMPONENT OptCmakePkgComponent CMAKE_TARGET PkgName::PkgTarget CONAN ConanRequire CONAN ConanOptions CONAN_ADDITIONAL_SEMS ConanAdditionalSems)
  66. ###
  67. ### Use specified conan/system package when exporting cmake build scripts for arcadia C++ project for opensource publication.
  68. macro OPENSOURCE_EXPORT_REPLACEMENT(CMAKE[], CMAKE_TARGET[], CMAKE_COMPONENT[], CONAN[], CONAN_OPTIONS[], CONAN_ADDITIONAL_SEMS[]) {
  69. _OPENSOURCE_EXPORT_REPLACEMENT_CMAKE(CMAKE $CMAKE CMAKE_TARGET $CMAKE_TARGET CMAKE_COMPONENT $CMAKE_COMPONENT)
  70. SET(CONAN_REQUIRES_SEM && conan-requires $CONAN $CONAN_ADDITIONAL_SEMS)
  71. SET(CONAN_OPTIONS_SEM ${pre=&& conan-options :CONAN_OPTIONS})
  72. }
  73. ### @usage: OPENSOURCE_EXPORT_REPLACEMENT_BY_OS(OS Os CMAKE PkgName CMAKE_COMPONENT OptCmakePkgComponent CMAKE_TARGET PkgName::PkgTarget CONAN ConanRequire CONAN ConanOptions CONAN_ADDITIONAL_SEMS ConanAdditionalSems)
  74. ###
  75. ### Use specified conan/system package when exporting cmake build scripts for arcadia C++ project for opensource publication.
  76. macro OPENSOURCE_EXPORT_REPLACEMENT_BY_OS(OS[], CMAKE[], CMAKE_TARGET[], CMAKE_COMPONENT[], CONAN[], CONAN_OPTIONS[], CONAN_ADDITIONAL_SEMS[]) {
  77. _OPENSOURCE_EXPORT_REPLACEMENT_CMAKE(CMAKE $CMAKE CMAKE_TARGET $CMAKE_TARGET CMAKE_COMPONENT $CMAKE_COMPONENT)
  78. SET(CONAN_OS_REQUIRES_SEM && conan-os_depends-ITEM && conan-os_depends-os $OS && conan-os_depends-requires $CONAN $CONAN_ADDITIONAL_SEMS)
  79. SET(CONAN_OS_OPTIONS_SEM && conan-os_depends-ITEM && conan-os_depends-os $OS ${pre=&& conan-os_depends-opts :CONAN_OPTIONS})
  80. }
  81. CMAKE_TARGET_NAME=$REALPRJNAME
  82. CMAKE_TARGET_ARTEFACT_RENAME_RULES=
  83. ### @usage CMAKE_EXPORTED_TARGET_NAME(Name)
  84. ###
  85. ### Forces to use the name given as cmake target name without changing the name of output artefact.
  86. ### This macro should be used to resolve target name conflicts in exported cmake project when
  87. ### changing module name is not applicable. For example both CUDA and non-CUDA py modules for
  88. ### catboost should have same name lib_catboost.so and both of them are defined as PY_ANY_MODULE(_catboost).
  89. ### adding CMAKE_EXPORTED_TARGET_NAME(_catboost_non_cuda) to the non CUDA module ya.make file
  90. ### changes exported cmake target name but preserve generated artefact file name.
  91. macro CMAKE_EXPORTED_TARGET_NAME(Name) {
  92. SET(CMAKE_TARGET_NAME $Name)
  93. SET(CMAKE_TARGET_ARTEFACT_RENAME_RULES && target_properties-ITEM && target_properties-name OUTPUT_NAME && target_properties-value $REALPRJNAME)
  94. }
  95. macro ALLOCATOR_IMPL() {
  96. SET(CPP_LIBRARY_INDUCED_LINKS allocators)
  97. }