यूनिक्स के एक विकासवादी समस्या को हल करने के लिए ऑटोकॉन्फ़ और ऑटोमेक की स्थापना की गई थी।
जैसा कि यूनिक्स अलग-अलग दिशाओं में विकसित हुआ था, जो डेवलपर्स चाहते थे कि पोर्टेबल कोड इस तरह कोड लिखने के लिए प्रवृत्त हो:
#if RUNNING_ON_BSD
Set things up in the BSD way
#if RUNNING_ON_SYSTEMV
Set things up in the SystemV way
#endif
जैसा कि यूनिक्स को अलग-अलग कार्यान्वयन (बीएसडी, सिस्टमवी, कई विक्रेता कांटे, और बाद में लिनक्स और अन्य यूनिक्स जैसी प्रणालियों) में कांटा लगाया गया था, डेवलपर्स के लिए यह महत्वपूर्ण हो गया कि वे कोड लिखने के लिए पोर्टेबल कोड लिखना चाहते थे जो ऑपरेटिंग सिस्टम के किसी विशेष ब्रांड पर निर्भर नहीं था। , लेकिन ऑपरेटिंग सिस्टम द्वारा उजागर सुविधाओं पर। यह महत्वपूर्ण है क्योंकि एक यूनिक्स संस्करण एक नई सुविधा पेश करेगा, उदाहरण के लिए "भेजें" सिस्टम कॉल, और बाद में अन्य ऑपरेटिंग सिस्टम इसे अपनाएंगे। ब्रांडों और संस्करणों के लिए जाँच किए गए कोड की स्पेगेटी होने के बजाय, डेवलपर्स ने सुविधाओं द्वारा जांच शुरू की, इसलिए कोड बन गया:
#if HAVE_SEND
Use Send here
#else
Use something else
#endif
अधिकांश README फाइलें 90 के नुकीले डेवलपर्स में एक config.h फ़ाइल को संपादित करने के लिए स्रोत कोड को संकलित करने के लिए फाइल करती हैं और टिप्पणी करती हैं कि सिस्टम पर उपलब्ध उचित सुविधाएँ, या परीक्षण किए गए प्रत्येक ऑपरेटिंग सिस्टम कॉन्फ़िगरेशन के लिए मानक config.h फ़ाइलों को शिप करेगी।
यह प्रक्रिया बोझिल और त्रुटि प्रवण दोनों थी और इस तरह से ऑटोकॉन्फ़ आया। आपको ऑटोकॉन्फ़ के बारे में सोचना चाहिए क्योंकि विशेष मैक्रोज़ के साथ शेल कमांड से बनी एक भाषा जो कि config.h की मानव संपादन प्रक्रिया को बदलने के लिए सक्षम थी, जो एक टूल के साथ है जो कार्यक्षमता के लिए ऑपरेटिंग सिस्टम की जांच करती है।
आप आमतौर पर अपने प्रोबिंग कोड को फाइल config.ac में लिखते हैं और फिर ऑटोकॉन्फ़ कमांड चलाते हैं जो इस फाइल को निष्पादन योग्य कॉन्फ़िगर कमांड के लिए संकलित करेगा जिसे आपने देखा है।
इसलिए जब आप चलाते ./configure && make
हैं तो आप अपने सिस्टम पर उपलब्ध सुविधाओं के लिए जांच कर रहे थे और तब कॉन्फ़िगरेशन के साथ निष्पादन योग्य का निर्माण किया गया था।
जब ओपन सोर्स प्रोजेक्ट्स ने सोर्स कोड कंट्रोल सिस्टम का उपयोग करना शुरू किया, तो यह config.ac फ़ाइल में जांच करने के लिए समझ में आया, लेकिन संकलन (कॉन्फ़िगर) का परिणाम नहीं। ऑटोजेन.श मात्र एक छोटी सी लिपि है जो आपके लिए सही कमांड दलीलों के साथ ऑटोकॉन्फ़ कंपाइलर को आमंत्रित करती है।
-
समुदाय में मौजूदा प्रथाओं से स्वचालित विकास भी हुआ। GNU प्रोजेक्ट ने मेकफाइल्स के लिए नियमित लक्ष्य निर्धारित किया:
make all
परियोजना का निर्माण करेगा
make clean
परियोजना से सभी संकलित फ़ाइलों को हटा देगा
make install
सॉफ्टवेयर स्थापित करेगा
- जैसी चीजों
make dist
और make distcheck
वितरण के लिए स्रोत तैयार करने और सत्यापित करें कि परिणाम एक पूर्ण स्रोत कोड पैकेज था होगा
- और इसी तरह...
बिल्डिंग कंप्लीट मेकफाइल्स बोझ बन गए क्योंकि बहुत सारे बॉयलरप्लेट थे जो बार-बार दोहराए जाते थे। तो आटोमकेक एक नया कंपाइलर था जो ऑटोकॉन्फ़ और प्रोसेस्ड "सोर्स" मेकफाइल (मेकफाइल.म नाम) मेकफाइल्स में एकीकृत था जिसे फिर ऑटोकॉनफ को खिलाया जा सकता था।
स्वचालित / ऑटोकॉन्फ़ टूलचेन वास्तव में कई अन्य सहायक उपकरणों का उपयोग करता है और अन्य विशिष्ट कार्यों के लिए उन्हें अन्य घटकों द्वारा संवर्धित किया जाता है। जैसे-जैसे इन आदेशों को चलाने की जटिलता बढ़ती गई, रेडी-टू-रन स्क्रिप्ट की आवश्यकता पैदा हुई और यहीं से ऑटोजेन.शिश की शुरुआत हुई।
जहां तक मुझे पता है, गनोम प्रोजेक्ट था जिसने इस हेल्पर स्क्रिप्ट के उपयोग को पेश किया था