Menambahkan Paket ke BuildRoot – Autotools-based

Ada kalanya kita membutuhkan satu aplikasi tertentu yang belum ada di buildroot. Di dalam source buildroot, sudah tersedia dokumentasi yang memudahkan kita untuk menambah paket yang akan kita butuhkan. Kali ini kita akan membahas bagaimana cara menambahkan paket autotools-based ke buildroot.

Paket-paket di buildroot tersedia di direktori package/. Untuk tiap paket, struktur direktorinya kurang lebih sebagai berikut:

[bash]libnfc/
├── Config.in
├── libfoo.mk
└── libfoo-do-something-right.patch[/bash]

Mari kita bahas satu per satu:

Config.in

Adalah file yang mendeskripsikan paket yang akan ditambahkan. Biasanya, file Config.in akan tampak seperti berikut:

[html]config BR2_PACKAGE_LIBFOO
bool "libfoo"
help
This is a comment that explains what libfoo is.

http://foosoftware.org/libfoo/%5B/html%5D

Syntax dari file Config.in ini sama dengan kernel Kconfig. Lebih lanjut, silahkan buka tautan berikut: http://lxr.free-electrons.com/source/Documentation/kbuild/kconfig-language.txt

Kita akan menambahkan libfoo/Config.in ke package/Config.in sebagai berikut:

[html]
source "package/libfoo/Config.in"
[/html]

Makefile untuk aplikasi dengan autotools
Pertama-tama mari kita cermati isi dari file .mk

[bash]
#############################################################
#
# libfoo
#
#############################################################
LIBFOO_VERSION = 1.0
LIBFOO_SOURCE = libfoo-$(LIBFOO_VERSION).tar.gz
LIBFOO_SITE = http://www.foosoftware.org/download
LIBFOO_INSTALL_STAGING = YES
LIBFOO_INSTALL_TARGET = YES
LIBFOO_CONF_OPT = –enable-shared
LIBFOO_DEPENDENCIES = libglib2 host-pkg-config

$(eval $(call AUTOTARGETS,package,libfoo))
[/bash]

Baris 6, kita deklarasikan versi dari aplikasi yang akan kita tambahkan.

Baris 7 dan 8, kita deklarasikan nama dari tarball dan lokasinya di internet. Buildroot akan otomatis mendownload paket dari lokasi tersebut.

Baris 9, kita tentukan paket ini akan diinstall di direktori staging yang berada di output/staging, di sinilah tempat semua aplikasi terinstall, termasuk header file, static library, shared library, dll. Jika _INSTALL_STAGING tidak ditentukan, maka aplikasi tidak akan diinstall di dalam staging, karena biasanya hanya library/pustaka saja yang perlu diinstall di staging untuk dapat digunakan untuk mengompile aplikasi lain.

Baris 10, kita tentukan aplikasi akan diinstall di direktori target yang mana nantinya akan menjadi root filesystem pada target sesungguhnya. Biasanya kita tidak akan menginstall header file, dan hanya menginstall versi stripped dari binari aplikasi. Secara default, konfigurasi ini sudah otomatis berlaku bagi setiap paket, sehingga sebenenarnya tidak perlu dideklarasikan.

Baris 11, Di sini kita sebutkan tambahan parameter konfigurasi paket yang nantinya akan ditautkan ke script ./configure di dalam paket.

Baris 12, kita deklarasikan dependency dari paket yang akan kita buat.

Baris line 14, kita panggil AUTOTARGETS macro yang akan membuat Makefile dan file-file lain yang dibutuhkan untuk mengompile paket. Analoginya, macro ini adalah untuk memanggil script ./configure && make

Proses selanjutnya akan dilakukan secara otomatis oleh buildroot. Hasil dari kompilasi dapat dilihat di output/staging/ output/target/

Pos ini dipublikasikan di Embedded, Linux, System Builder, Tutorial. Tandai permalink.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s