opensource.conf 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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. }
  40. # Extra macros to control how cmake export works
  41. when ($OPENSOURCE == "yes" && $EXPORT_CMAKE == "yes") {
  42. # Python version is not actually used in exported cmake's rigth now.
  43. # The only reason to set it is to avoid any deps on contrib/python|contrib/libs/python when
  44. # exporting PY_*_MODULE and force dependency to build/platform/python there.
  45. USE_SYSTEM_PYTHON=3.10
  46. USE_ARCADIA_PYTHON=no
  47. # YMAKE-477. yexport does not support USE_GLOBAL_CMD=no and crashes with OOM.
  48. # USE_GLOBAL_CMD=yes does not work for Windows with ya make builds but works with exported CMake files: YMAKE-657.
  49. USE_GLOBAL_CMD=yes
  50. EXPORT_SEM=yes
  51. EXPORTED_BUILD_SYSTEM_SOURCE_ROOT="${PROJECT_SOURCE_DIR}"
  52. EXPORTED_BUILD_SYSTEM_BUILD_ROOT="${PROJECT_BINARY_DIR}"
  53. }
  54. CMAKE_PACKAGE_SEM=
  55. CONAN_REQUIRES_SEM=
  56. CONAN_OPTIONS_SEM=
  57. CONAN_OS_REQUIRES_SEM=
  58. CONAN_OS_OPTIONS_SEM=
  59. macro _OPENSOURCE_EXPORT_REPLACEMENT_CMAKE(CMAKE[], CMAKE_TARGET[], CMAKE_COMPONENT[]) {
  60. SET(CMAKE_PACKAGE_SEM packages-ITEM && packages-name $CMAKE ${pre= && packages-components :CMAKE_COMPONENT} && mpackages-ITEM && mpackages-name $CMAKE ${pre= && mpackages-components :CMAKE_COMPONENT})
  61. SET(CMAKE_LINK_TARGET $CMAKE_TARGET)
  62. }
  63. ### @usage: OPENSOURCE_EXPORT_REPLACEMENT(CMAKE PkgName CMAKE_COMPONENT OptCmakePkgComponent CMAKE_TARGET PkgName::PkgTarget CONAN ConanRequire CONAN ConanOptions CONAN_ADDITIONAL_SEMS ConanAdditionalSems)
  64. ###
  65. ### Use specified conan/system package when exporting cmake build scripts for arcadia C++ project for opensource publication.
  66. macro OPENSOURCE_EXPORT_REPLACEMENT(CMAKE[], CMAKE_TARGET[], CMAKE_COMPONENT[], CONAN[], CONAN_OPTIONS[], CONAN_ADDITIONAL_SEMS[]) {
  67. _OPENSOURCE_EXPORT_REPLACEMENT_CMAKE(CMAKE $CMAKE CMAKE_TARGET $CMAKE_TARGET CMAKE_COMPONENT $CMAKE_COMPONENT)
  68. SET(CONAN_REQUIRES_SEM && conan-requires $CONAN $CONAN_ADDITIONAL_SEMS)
  69. SET(CONAN_OPTIONS_SEM ${pre=&& conan-options :CONAN_OPTIONS})
  70. }
  71. ### @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)
  72. ###
  73. ### Use specified conan/system package when exporting cmake build scripts for arcadia C++ project for opensource publication.
  74. macro OPENSOURCE_EXPORT_REPLACEMENT_BY_OS(OS[], CMAKE[], CMAKE_TARGET[], CMAKE_COMPONENT[], CONAN[], CONAN_OPTIONS[], CONAN_ADDITIONAL_SEMS[]) {
  75. _OPENSOURCE_EXPORT_REPLACEMENT_CMAKE(CMAKE $CMAKE CMAKE_TARGET $CMAKE_TARGET CMAKE_COMPONENT $CMAKE_COMPONENT)
  76. SET(CONAN_OS_REQUIRES_SEM && conan-os_depends-ITEM && conan-os_depends-os $OS && conan-os_depends-requires $CONAN $CONAN_ADDITIONAL_SEMS)
  77. SET(CONAN_OS_OPTIONS_SEM && conan-os_depends-ITEM && conan-os_depends-os $OS ${pre=&& conan-os_depends-opts :CONAN_OPTIONS})
  78. }
  79. CMAKE_TARGET_NAME=$REALPRJNAME
  80. CMAKE_TARGET_ARTEFACT_RENAME_RULES=
  81. ### @usage CMAKE_EXPORTED_TARGET_NAME(Name)
  82. ###
  83. ### Forces to use the name given as cmake target name without changing the name of output artefact.
  84. ### This macro should be used to resolve target name conflicts in exported cmake project when
  85. ### changing module name is not applicable. For example both CUDA and non-CUDA py modules for
  86. ### catboost should have same name lib_catboost.so and both of them are defined as PY_ANY_MODULE(_catboost).
  87. ### adding CMAKE_EXPORTED_TARGET_NAME(_catboost_non_cuda) to the non CUDA module ya.make file
  88. ### changes exported cmake target name but preserve generated artefact file name.
  89. macro CMAKE_EXPORTED_TARGET_NAME(Name) {
  90. SET(CMAKE_TARGET_NAME $Name)
  91. SET(CMAKE_TARGET_ARTEFACT_RENAME_RULES && target_properties-ITEM && target_properties-name OUTPUT_NAME && target_properties-value $REALPRJNAME)
  92. }
  93. macro ALLOCATOR_IMPL() {
  94. SET(CPP_LIBRARY_INDUCED_LINKS allocators)
  95. }