ध्यान दें: यह सेक्शन, Bazel डेवलपर के लिए है. नियम बनाने वाले लोगों को इसकी ज़रूरत नहीं है.
SkyFunction की कई क्लास, टूलचेन रिज़ॉल्यूशन प्रोसेस को लागू करती हैं:
RegisteredToolchainsFunction
औरRegisteredExecutionPlatformsFunction
मौजूदा समय के हिसाब से, उपलब्ध टूलचेन और एक्ज़ीक्यूशन प्लैटफ़ॉर्म खोजें .SingleToolchainResolutionFunction
यह हर एक्सीक्यूशन प्लैटफ़ॉर्म के लिए, एक टाइप का टूलचेन हल करता है. इसका मतलब है कि यह उसे इस्तेमाल करने के लिए, रजिस्टर किए गए सबसे अच्छे टूलचेन को ये वीडियो कैसे बनाए जाते हैं:target_compatible_with
एट्रिब्यूट की जांच करके, पक्का करें कि टूलचेन और टारगेट प्लैटफ़ॉर्म साथ काम करते हों.exec_compatible_with
एट्रिब्यूट की जांच करके, पक्का करें कि टूलचेन और एक्सीक्यूशन प्लैटफ़ॉर्म साथ काम करते हों.- अगर एक से ज़्यादा टूलचेन बचे हैं, तो सबसे ज़्यादा प्राथमिकता वाला टूलचेन चुनें. यह वह टूलचेन होता है जिसे सबसे पहले रजिस्टर किया गया था.
ToolchainResolutionFunction
, अनुरोध किए गए हर टूलचेन टाइप के लिएSingleToolchainResolutionFunction
को कॉल करता है. इसके बाद, इस्तेमाल करने के लिए सबसे सही प्लैटफ़ॉर्म तय करता है.- सबसे पहले, ऐसे सभी प्लैटफ़ॉर्म हटाएं जिनमें अनुरोध किए गए हर टाइप के टूलचेन के लिए मान्य टूलचेन नहीं है.
- अगर एक से ज़्यादा प्लैटफ़ॉर्म बचे हैं, तो सबसे ज़्यादा प्राथमिकता वाला प्लैटफ़ॉर्म चुनें. यह वह प्लैटफ़ॉर्म होता है जिसे सबसे पहले रजिस्टर किया गया था.
- अगर एक्ज़ीक्यूशन प्लैटफ़ॉर्म पहले से ही टूलचेन के ज़रिए सेट किया गया हो ट्रांज़िशन है, तो नीचे बताए गए तरीके से इसे पहले चुना जाएगा.
जैसा कि टूलचेन और कॉन्फ़िगरेशन में बताया गया है,
टारगेट से टूलचेन पर निर्भरता एक खास कॉन्फ़िगरेशन का इस्तेमाल करती है, जो
दोनों के लिए, एक्ज़ीक्यूशन प्लैटफ़ॉर्म को एक जैसा बनाता है. "टूलचेन ट्रांज़िशन" के नाम के बावजूद, इसे कॉन्फ़िगरेशन ट्रांज़िशन के तौर पर लागू नहीं किया जाता. इसके बजाय, इसे ConfiguredTargetKey
के खास सबक्लास के तौर पर लागू किया जाता है. इसे ToolchainDependencyConfiguredTargetKey
कहा जाता है.
ConfiguredTargetKey
के अन्य डेटा के अलावा, इस सब-क्लास में भी
एक्ज़ीक्यूशन प्लैटफ़ॉर्म का लेबल. जब ToolchainResolutionFunction
यह तय कर रहा हो कि किस प्लैटफ़ॉर्म का इस्तेमाल करना है, तो अगर ToolchainDependencyConfiguredTargetKey
में मौजूद, ज़बरदस्ती लागू किए गए प्लैटफ़ॉर्म की वैल्यू मान्य है, तो उसका इस्तेमाल किया जाएगा. भले ही, वह सबसे ज़्यादा प्राथमिकता वाला प्लैटफ़ॉर्म न हो.
ध्यान दें: अगर फ़ोर्स किया गया प्लैटफ़ॉर्म मान्य नहीं है (क्योंकि कोई मान्य टूलचेन नहीं है या नियम या टारगेट से जुड़ी पाबंदियों की वजह से), तो सबसे ज़्यादा प्राथमिकता वाले मान्य प्लैटफ़ॉर्म का इस्तेमाल किया जाएगा.