Autoconf ve Automake, Unix'in evrimsel bir problemini çözmek için kuruldu.
Unix farklı yönlere geliştikçe, taşınabilir kod isteyen geliştiriciler şöyle kod yazma eğilimindeydi:
#if RUNNING_ON_BSD
Set things up in the BSD way
#if RUNNING_ON_SYSTEMV
Set things up in the SystemV way
#endif
Unix farklı uygulamalara dahil edildiğinden (BSD, SystemV, birçok satıcı çatal ve daha sonra Linux ve diğer Unix benzeri sistemler), belirli bir işletim sistemine bağlı olmayan bir kod yazmak için taşınabilir kod yazmak isteyen geliştiriciler için önemli hale geldi. , ancak işletim sisteminin maruz kaldığı özelliklerde. Bu önemlidir, çünkü bir Unix sürümü yeni bir özellik sunar; örneğin "gönder" sistem çağrısı ve daha sonra diğer işletim sistemleri bunu benimser. Markalar ve sürümleri kontrol eden bir kod spagetti almak yerine, geliştiriciler özelliklere göre araştırma yapmaya başladılar.
#if HAVE_SEND
Use Send here
#else
Use something else
#endif
Kaynak kodu derlemek için çoğu README dosyası, 90'ın işaretçilerine bir config.h dosyasını düzenlemek ve sistemde uygun özelliklerin mevcut olduğunu yorumlamakta ya da test edilen her işletim sistemi yapılandırması için standart config.h dosyalarını gönderecektir.
Bu işlem hem hantal hem de hataya açıktı ve Autoconf böyle oldu. Autoconf'u, config.h'nin insan düzenleme sürecini işlevsellik için işletim sistemini denetleyen bir araçla değiştirebilecek özel makrolara sahip, kabuk komutlarından oluşan bir dil olarak düşünmelisiniz.
Sondalama kodunuzu configure.ac dosyasına yazın ve bu dosyayı derlediğiniz autoconf komutunu çalıştırıp çalıştırdığınız configure komutuna çalıştırın.
Bu nedenle, çalıştırdığınızda ./configure && make
, sisteminizde mevcut olan özellikleri araştırıyor ve ardından çalıştırılabilir dosyayı tespit edilen konfigürasyon ile oluşturuyorsunuz.
Açık kaynak projeleri kaynak kod kontrol sistemlerini kullanmaya başladığında, configure.ac dosyasını kontrol etmek mantıklıydı, ancak derlemenin sonucunu (configure) değil. Autogen.sh, yalnızca autoconf derleyicisini sizin için doğru komut argümanları ile çağıran küçük bir betiktir.
-
Automake ayrıca topluluktaki mevcut uygulamalardan da çıktı. GNU projesi Makefiles için düzenli bir hedefler kümesi standartlaştırdı:
make all
projeyi inşa eder
make clean
derlenmiş tüm dosyaları projeden kaldırır
make install
yazılımı kurardı
- gibi şeyler
make dist
ve make distcheck
dağıtımı için kaynak hazırlamak ve sonuç tam bir kaynak kod paketi olduğunu doğrulamak olur
- ve bunun gibi...
Binaya uygun hale getirilmiş makefil'lerin yapımı oldukça zahmetli oldu çünkü tekrar tekrar tekrarlanan birçok kazan plakası vardı. Yani Automake, autoconf ile entegre olan ve "kaynak" Makefile (Makefile.am) adı verilen, daha sonra Autoconf'a beslenebilecek Makefiles'e işlenen yeni bir derleyiciydi.
Automake / autoconf toolchain gerçekte başka birçok yardımcı alet kullanır ve diğer özel görevler için diğer bileşenler tarafından artırılır. Bu komutları sırayla çalıştırmanın karmaşıklığı arttıkça, çalışmaya hazır bir komut dosyasına olan ihtiyaç doğdu ve işte bu noktada autogen.sh çıktı.
Bildiğim kadarıyla, Gnome bu yardımcı betiği autogen.sh'ın kullanımını tanıtan bir projeydi.