opensource.conf 5.0 KB

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