Browse Source

(1of3) Refactor opensource replacement

Refactor opensource replacement
a0c25750dcdcf70f3c41ff614b5b3bcf34b532cf
dimdim11 7 months ago
parent
commit
d27afd6ad6
2 changed files with 29 additions and 42 deletions
  1. 25 14
      build/conf/opensource.conf
  2. 4 28
      build/ymake.core.conf

+ 25 - 14
build/conf/opensource.conf

@@ -54,21 +54,32 @@ when ($OPENSOURCE == "yes" && $EXPORT_CMAKE == "yes") {
     EXPORTED_BUILD_SYSTEM_BUILD_ROOT="${PROJECT_BINARY_DIR}"
 }
 
-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_COMPONENT[], CONAN[], CONAN_OPTIONS[]) {
-    SET(CMAKE_PACKAGE $CMAKE)
-    SET(CMAKE_PACKAGE_COMPONENT $CMAKE_COMPONENT)
+CMAKE_PACKAGE_SEM=
+CONAN_REQUIRES_SEM=
+CONAN_OPTIONS_SEM=
+CONAN_OS_REQUIRES_SEM=
+CONAN_OS_OPTIONS_SEM=
+macro _OPENSOURCE_EXPORT_REPLACEMENT_CMAKE(CMAKE[], CMAKE_TARGET[], CMAKE_COMPONENT[]) {
+    SET(CMAKE_PACKAGE_SEM packages-ITEM && packages-name $CMAKE ${pre= && packages-components :CMAKE_COMPONENT} && mpackages-ITEM && mpackages-name $CMAKE ${pre= && mpackages-components :CMAKE_COMPONENT} && find_package $CMAKE ${pre= COMPONENTS :CMAKE_COMPONENT} )
     SET(CMAKE_LINK_TARGET $CMAKE_TARGET)
-    SET(CONAN_REFERENCE $CONAN)
-    SET(CONAN_PKG_OPTS $CONAN_OPTIONS)
+}
+
+### @usage: OPENSOURCE_EXPORT_REPLACEMENT(CMAKE PkgName CMAKE_COMPONENT OptCmakePkgComponent CMAKE_TARGET PkgName::PkgTarget CONAN ConanRequire CONAN ConanOptions CONAN_ADDITIONAL_SEMS ConanAdditionalSems)
+###
+### Use specified conan/system package when exporting cmake build scripts for arcadia C++ project for opensource publication.
+macro OPENSOURCE_EXPORT_REPLACEMENT(CMAKE[], CMAKE_TARGET[], CMAKE_COMPONENT[], CONAN[], CONAN_OPTIONS[], CONAN_ADDITIONAL_SEMS[]) {
+    _OPENSOURCE_EXPORT_REPLACEMENT_CMAKE(CMAKE $CMAKE CMAKE_TARGET $CMAKE_TARGET CMAKE_COMPONENT $CMAKE_COMPONENT)
+    SET(CONAN_REQUIRES_SEM && conan_require $CONAN && conan-requires $CONAN $CONAN_ADDITIONAL_SEMS)
+    SET(CONAN_OPTIONS_SEM ${pre=&& conan_options :CONAN_OPTIONS} ${pre=&& conan-options :CONAN_OPTIONS})
+}
+
+### @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)
+###
+### Use specified conan/system package when exporting cmake build scripts for arcadia C++ project for opensource publication.
+macro OPENSOURCE_EXPORT_REPLACEMENT_BY_OS(OS[], CMAKE[], CMAKE_TARGET[], CMAKE_COMPONENT[], CONAN[], CONAN_OPTIONS[], CONAN_ADDITIONAL_SEMS[]) {
+    _OPENSOURCE_EXPORT_REPLACEMENT_CMAKE(CMAKE $CMAKE CMAKE_TARGET $CMAKE_TARGET CMAKE_COMPONENT $CMAKE_COMPONENT)
+    SET(CONAN_OS_REQUIRES_SEM && conan-os_depends-ITEM && conan-os_depends-os $OS && conan-os_depends-requires $CONAN $CONAN_ADDITIONAL_SEMS)
+    SET(CONAN_OS_OPTIONS_SEM && conan-os_depends-ITEM && conan-os_depends-os $OS ${pre=&& conan-os_depends-opts :CONAN_OPTIONS})
 }
 
 CMAKE_TARGET_NAME=$REALPRJNAME

+ 4 - 28
build/ymake.core.conf

@@ -1879,8 +1879,6 @@ CPP_OBJ_LIBRARY_SEM=add_global_library_for ${MODDIR} ${suf=.global:CMAKE_TARGET_
 CMAKE_FIND_PKG=
 CMAKE_LINK_TARGET=$REALPRJNAME
 CMAKE_FIND_PKG_COMP=
-CONAN_REQUIRE=
-CONAN_OPTS_SEM=
 
 ### @usage: LIBRARY()
 ###
@@ -1902,19 +1900,8 @@ module LIBRARY: _LIBRARY {
     .DEFAULT_NAME_GENERATOR=ThreeDirNames
     .ARGS_PARSER=Base
 
-    when ($CMAKE_PACKAGE_COMPONENT != "") {
-        CMAKE_FIND_PKG_COMP=COMPONENTS $CMAKE_PACKAGE_COMPONENT && packages-components $CMAKE_PACKAGE_COMPONENT && mpackages-components $CMAKE_PACKAGE_COMPONENT
-    }
-    when ($CMAKE_PACKAGE != "") {
-        CMAKE_FIND_PKG=packages-ITEM && packages-name $CMAKE_PACKAGE && mpackages-ITEM && mpackages-name $CMAKE_PACKAGE && find_package $CMAKE_PACKAGE $CMAKE_FIND_PKG_COMP
-        CPP_LIBRARY_SEM=$CMAKE_FIND_PKG && ${CPP_LIBRARY_INDUCED_SEM_PROPERTY} PUBLIC $CMAKE_LINK_TARGET && ${CPP_LIBRARY_INDUCED_LINKS} $CMAKE_LINK_TARGET $CONAN_REQUIRE $CONAN_OPTS_SEM && IGNORED
-    }
-    when ($CONAN_REFERENCE != "") {
-        CONAN_REQUIRE=&& conan_require $CONAN_REFERENCE && conan-requires $CONAN_REFERENCE
-        CPP_LIBRARY_SEM=$CMAKE_FIND_PKG && ${CPP_LIBRARY_INDUCED_SEM_PROPERTY} PUBLIC $CMAKE_LINK_TARGET && ${CPP_LIBRARY_INDUCED_LINKS} $CMAKE_LINK_TARGET $CONAN_REQUIRE $CONAN_OPTS_SEM && IGNORED
-    }
-    when ($CONAN_PKG_OPTS != "") {
-        CONAN_OPTS_SEM=&& conan_options $CONAN_PKG_OPTS && conan-options $CONAN_PKG_OPTS
+    when ($CMAKE_PACKAGE_SEM != "" || $CONAN_REQUIRES_SEM != "" || $CONAN_OPTS_SEM != "" || $CONAN_OS_REQUIRES_SEM != "" || $CONAN_OS_OPTIONS_SEM != "") {
+        CPP_LIBRARY_SEM=$CMAKE_PACKAGE_SEM && ${CPP_LIBRARY_INDUCED_SEM_PROPERTY} PUBLIC $CMAKE_LINK_TARGET && ${CPP_LIBRARY_INDUCED_LINKS} $CMAKE_LINK_TARGET $CONAN_REQUIRES_SEM $CONAN_OPTIONS_SEM $CONAN_OS_REQUIRES_SEM $CONAN_OS_OPTIONS_SEM && IGNORED
     }
     when ($OPENSOURCE_EXPORT == "no") {
         CPP_LIBRARY_SEM=IGNORED
@@ -1992,19 +1979,8 @@ module RESOURCES_LIBRARY: _BARE_UNIT {
     SET(MODULE_TAG RESOURCE_LIB)
     SET(PEERDIR_TAGS RESOURCE_LIB)
 
-    when ($CMAKE_PACKAGE_COMPONENT != "") {
-        CMAKE_FIND_PKG_COMP=COMPONENTS $CMAKE_PACKAGE_COMPONENT && packages-components $CMAKE_PACKAGE_COMPONENT && mpackages-components $CMAKE_PACKAGE_COMPONENT
-    }
-    when ($CMAKE_PACKAGE != "") {
-        CMAKE_FIND_PKG=packages-ITEM && packages-name $CMAKE_PACKAGE && mpackages-ITEM && mpackages-name $CMAKE_PACKAGE && find_package $CMAKE_PACKAGE $CMAKE_FIND_PKG_COMP
-        RESOURCES_LIBRARY_SEM=$CMAKE_FIND_PKG && ${CPP_LIBRARY_INDUCED_SEM_PROPERTY} PUBLIC $CMAKE_LINK_TARGET && ${CPP_LIBRARY_INDUCED_LINKS} $CMAKE_LINK_TARGET $CONAN_REQUIRE $CONAN_OPTS_SEM && IGNORED
-    }
-    when ($CONAN_REFERENCE != "") {
-        CONAN_REQUIRE=&& conan_require $CONAN_REFERENCE && conan-requires $CONAN_REFERENCE
-        RESOURCES_LIBRARY_SEM=$CMAKE_FIND_PKG && ${CPP_LIBRARY_INDUCED_SEM_PROPERTY} PUBLIC $CMAKE_LINK_TARGET && ${CPP_LIBRARY_INDUCED_LINKS} $CMAKE_LINK_TARGET $CONAN_REQUIRE $CONAN_OPTS_SEM && IGNORED
-    }
-    when ($CONAN_PKG_OPTS != "") {
-        CONAN_OPTS_SEM=&& conan_options $CONAN_PKG_OPTS && conan-options $CONAN_PKG_OPTS
+    when ($CMAKE_PACKAGE_SEM != "" || $CONAN_REQUIRES_SEM != "" || $CONAN_OPTS_SEM != "" || $CONAN_OS_REQUIRES_SEM != "" || $CONAN_OS_OPTIONS_SEM != "") {
+        RESOURCES_LIBRARY_SEM=$CMAKE_PACKAGE_SEM && ${CPP_LIBRARY_INDUCED_SEM_PROPERTY} PUBLIC $CMAKE_LINK_TARGET && ${CPP_LIBRARY_INDUCED_LINKS} $CMAKE_LINK_TARGET $CONAN_REQUIRES_SEM $CONAN_OPTIONS_SEM $CONAN_OS_REQUIRES_SEM $CONAN_OS_OPTIONS_SEM && IGNORED
     }
 
     MODULE_SUFFIX=.pkg.fake