diff options
author | svidyuk <svidyuk@yandex-team.ru> | 2022-04-13 09:27:11 +0300 |
---|---|---|
committer | svidyuk <svidyuk@yandex-team.ru> | 2022-04-13 09:27:11 +0300 |
commit | c4847818d8a382f7a09aa3b3d998fcd2148e8779 (patch) | |
tree | 43c96ff4f9b0c0af6621a20e6490ab70f22c83d5 | |
parent | 212c9e2367f2392b02e60c5f2f873871032617ee (diff) | |
download | ydb-c4847818d8a382f7a09aa3b3d998fcd2148e8779.tar.gz |
Resolution for cmake target names conflicts
DEVTOOLS-9035
ref:2d37e3e9223ccf599361560aa5b1cfae6f0aa6c0
-rw-r--r-- | build/conf/opensource.conf | 34 | ||||
-rw-r--r-- | build/ymake.core.conf | 27 |
2 files changed, 39 insertions, 22 deletions
diff --git a/build/conf/opensource.conf b/build/conf/opensource.conf index 9d84163f10..83c23d1421 100644 --- a/build/conf/opensource.conf +++ b/build/conf/opensource.conf @@ -18,3 +18,37 @@ when ($OPENSOURCE) { HAVE_MKL=no
USE_MKL=no
}
+
+# Extra macros to control how cmake export works
+
+CMAKE_PACKAGE=
+CMAKE_PACKAGE_COMPONENT=
+CMAKE_PACKAGE_TARGET=
+CONAN_REFERENCE=
+CONAN_PKG_OPTS=
+### @usage: OPENSOURCE_EXPORT_REPLACEMENT(CMAKE PkgName CMAKE_TARGET PkgName::PkgTarget CONAN ConanRef CMAKE_COMPONENT OptCmakePkgComponent)
+###
+### Use specified conan/system pacakcge when exporting cmake build scripts for arcadia C++ project
+### for opensource publication.
+macro OPENSOURCE_EXPORT_REPLACEMENT(CMAKE[], CMAKE_TARGET[], CMAKE_COMPONENET[], CONAN[], CONAN_OPTIONS[]) {
+ SET(CMAKE_PACKAGE $CMAKE)
+ SET(CMAKE_PACKAGE_COMPONENT $CMAKE_COMPONENET)
+ SET(CMAKE_LINK_TARGET $CMAKE_TARGET)
+ SET(CONAN_REFERENCE $CONAN)
+ SET(CONAN_PKG_OPTS $CONAN_OPTIONS)
+}
+
+CMAKE_TARGET_NAME=$REALPRJNAME
+CMAKE_TARGET_ARTEFACT_RENAME_RULES=
+### @usage CMAKE_EXPORTED_TARGET_NAME(Name)
+###
+### Forces to use the name given as cmake target name without changing the name of output artefact.
+### This macro should be used to resolve target name conflicts in exported cmake project when
+### changing module name is not applicable. For example both CUDA and non-CUDA py modules for
+### catboost should have same name lib_catboost.so and both of them are defined as PY_ANY_MODULE(_catboost).
+### adding CMAKE_EXPORTED_TARGET_NAME(_catboost_non_cuda) to the non CUDA module ya.make file
+### changes exported cmake target name but preserve generated artefact file name.
+macro CMAKE_EXPORTED_TARGET_NAME(Name) {
+ SET(CMAKE_TARGET_NAME $Name)
+ SET(CMAKE_TARGET_ARTEFACT_RENAME_RULES && set_target_property OUTPUT_NAME $REALPRJNAME)
+}
diff --git a/build/ymake.core.conf b/build/ymake.core.conf index ed28722c9d..a35ea5f154 100644 --- a/build/ymake.core.conf +++ b/build/ymake.core.conf @@ -1736,7 +1736,7 @@ module _BASE_PROGRAM: _LINK_UNIT { } } -CPP_PROGRAM_SEM=add_executable $MODDIR $REALPRJNAME ${hide:TARGET} ${hide:AUTO_INPUT} \ +CPP_PROGRAM_SEM=add_executable $MODDIR $CMAKE_TARGET_NAME ${hide:TARGET} ${hide:AUTO_INPUT} $CMAKE_TARGET_ARTEFACT_RENAME_RULES \ && vcs_info \ && target_link_options PRIVATE $LDFLAGS $OBJADDE_LIB $OBJADDE \ && target_include_directories PRIVATE $_C__INCLUDE_OWNED \ @@ -2496,7 +2496,7 @@ module _LIBRARY: _BASE_UNIT { } } -CPP_LIBRARY_SEM=add_library ${MODDIR} $REALPRJNAME ${hide:TARGET} ${hide:AUTO_INPUT} \ +CPP_LIBRARY_SEM=add_library ${MODDIR} $CMAKE_TARGET_NAME ${hide:TARGET} ${hide:AUTO_INPUT} $CMAKE_TARGET_ARTEFACT_RENAME_RULES \ && library_fake_marker FAKE_MODULE ${FAKE_MODULE} \ && consumer_link_library PUBLIC $CMAKE_LINK_TARGET \ && target_include_directories PUBLIC $_C__INCLUDE_GLOBAL \ @@ -2505,7 +2505,7 @@ CPP_LIBRARY_SEM=add_library ${MODDIR} $REALPRJNAME ${hide:TARGET} ${hide:AUTO_IN && target_compile_options PUBLIC $USER_CFLAGS_GLOBAL_RAW $USER_CXXFLAGS_GLOBAL_RAW \ && target_link_options INTERFACE $LDFLAGS_GLOBAL_RAW \ && add_language C && add_language CXX -CPP_OBJ_LIBRARY_SEM=add_global_library_for ${MODDIR} ${suf=.global:REALPRJNAME} $REALPRJNAME ${hide:GLOBAL_TARGET} ${hide:AUTO_INPUT} \ +CPP_OBJ_LIBRARY_SEM=add_global_library_for ${MODDIR} ${suf=.global:CMAKE_TARGET_NAME} $CMAKE_TARGET_NAME ${hide:GLOBAL_TARGET} ${hide:AUTO_INPUT} \ && target_include_directories PUBLIC $_C__INCLUDE_GLOBAL \ && target_include_directories PRIVATE $_C__INCLUDE_OWNED \ && target_compile_options PRIVATE $USER_CFLAGS $USER_CXXFLAGS \ @@ -2637,7 +2637,7 @@ otherwise { LINK_FAT_OBJECT_CMD=$LINK_FAT_OBJECT_LIBRARY } -FAT_OBJECT_SEM=add_fat_object ${MODDIR} ${REALPRJNAME} ${hide:TARGET} ${hide:AUTO_INPUT} \ +FAT_OBJECT_SEM=add_fat_object ${MODDIR} ${CMAKE_TARGET_NAME} ${hide:TARGET} ${hide:AUTO_INPUT} ${CMAKE_TARGET_ARTEFACT_RENAME_RULES} \ && target_include_directories PRIVATE $_C__INCLUDE_OWNED \ && target_compile_options PRIVATE $USER_CFLAGS $USER_CXXFLAGS \ && set_global_flags FAT_OBJECT_PREFIX ${MODULE_PREFIX} \ @@ -2694,7 +2694,7 @@ _EXPORT_SCRIPT_SEM= macro _ADD_DYNLYB_SEM(Libname) { .SEM=add_library ${MODDIR} ${Libname} SHARED ${hide:TARGET} ${hide:AUTO_INPUT} && target_include_directories PUBLIC $_C__INCLUDE_GLOBAL && target_include_directories PRIVATE $_C__INCLUDE_OWNED && target_compile_options PRIVATE $USER_CFLAGS $USER_CXXFLAGS && target_compile_options PUBLIC $USER_CFLAGS_GLOBAL_RAW $USER_CXXFLAGS_GLOBAL_RAW && vcs_info $_EXPORT_SCRIPT_SEM } -CPP_DYN_LIBRARY_SEM=$_ADD_DYNLYB_SEM($REALPRJNAME) +CPP_DYN_LIBRARY_SEM=$_ADD_DYNLYB_SEM($CMAKE_TARGET_NAME) $CMAKE_TARGET_ARTEFACT_RENAME_RULES ### @usage: DLL_UNIT # internal ### @@ -9250,23 +9250,6 @@ macro ORIGINAL_SOURCE(Source) { ENABLE(UNUSED_MACRO) } -CMAKE_PACKAGE= -CMAKE_PACKAGE_COMPONENT= -CMAKE_PACKAGE_TARGET= -CONAN_REFERENCE= -CONAN_PKG_OPTS= -### @usage: OPENSOURCE_EXPORT_REPLACEMENT(CMAKE PkgName CMAKE_TARGET PkgName::PkgTarget CONAN ConanRef CMAKE_COMPONENT OptCmakePkgComponent) -### -### Use specified conan/system pacakcge when exporting cmake build scripts for arcadia C++ project -### for opensource publication. -macro OPENSOURCE_EXPORT_REPLACEMENT(CMAKE[], CMAKE_TARGET[], CMAKE_COMPONENET[], CONAN[], CONAN_OPTIONS[]) { - SET(CMAKE_PACKAGE $CMAKE) - SET(CMAKE_PACKAGE_COMPONENT $CMAKE_COMPONENET) - SET(CMAKE_LINK_TARGET $CMAKE_TARGET) - SET(CONAN_REFERENCE $CONAN) - SET(CONAN_PKG_OPTS $CONAN_OPTIONS) -} - # tag:licence CREDITS_FILE_EXTRA_EXT= CREDITS_FLAGS= |