======= Stiahnutie a instalacia zavislosti ======
Stiahnut vhodne zdrojaky (aktualne pouzivame directfb 1.4.17) z [[http://directfb.org/downloads/Core/DirectFB-1.4/DirectFB-1.4.17.tar.gz|directfb.org]]
Nainstalovat niektore libky ako: libjpeg-dev, libfreetype6-dev, pkg-config, libpng12-dev, lib32z1-dev
**Pre Kubunut 16_4 64 bit LTS:** \\
Je pri instalacii potrebne ku kazdemu baliku pridavat suffix '**:i386**', ktory vynuti nainstalovanie 32 bitnovych verzii kniznic
apt-get install libjpeg-dev:i386
apt-get install libfreetype6-dev:i386
apt-get install pkg-config:i386
apt-get install libpng12-dev:i386
apt-get install lib32z1-dev -- tu mozno bude treba "sudo apt-get -o Dpkg::Options::="--force-overwrite" install zlib1g-dev:i386" kym neopravia bug
======= Manualna kompilacia pre platformu 386 =======
Zdrojove subory pre verziu 1.4.16 sa nachadzaju na servri phoenix:
/usr/local/emtest/DevelInstall/directfb
skopirovat do
/opt/devel/
Rozbalit a nakonfigurovat a nainstalovat cez:
./configure --prefix=/usr/
make
sudo make install
**Pre Kubuntu 16.04 LTS 64bit:**
./configure --prefix=/usr/ --with-sysroot=/usr/lib/i386-linux-gnu CFLAGS='-m32' CXXFLAGS='-m32' LDFLAGS='-m32 -L/usr/lib/i386-linux-gnu/' --enable-png=yes --enable-jpeg=yes LIBPNG_LIBS=-lpng12
Pocas kompilacie to skonci chybou pri subore mkdgifft.o. Je potrebne v korenovom priecinku v /tools upravit MAKEFILE a doplnit pre CXXFLAGS parameter -m32. Dokompilovat zdrojaky v priecinku tools prikazom 'make clean && make'. Nasledne sa vratit o uroven vyssie a pokracovat prikazom 'make'.
CXXFLAGS = -g -O2 -m32
Po uspesnej kompilacii nasymlinkovat priecinok z /usr/lib/directfb-1.4-6 do /usr/lib/i386-linux-gnu/usr/lib/ pretoze pri configure bol nastaveny sysroot pre 32bit:
ln -s /usr/lib/directfb-1.4-6 /usr/lib/i386-linux-gnu/
====== Konfiguracia directfb pre platformu 386 ======
* V home/ adresari vytvorit a naeditovat subor ~/.directfbrc (system=x11, mouse podla typu pouzitej mysi (mouse napr. z Xorgu))
system=x11
mouse-protocol=MouseSystems
no-cursor
mode=600x800-60
* Pridat sa do skupin tty a video
sudo addgroup tty
sudo addgroup video
* Po odhlaseni a prihlaseni, vyskusat spustit test. aplikaciu napr. dfbmaster
* Vyskusat citacku, s upravenym HwConfig.xml:
======= Manualna kompilacia pre platformu ARM verzie emtest_xscale* =======
** Pozor na prefix !!! treba upravit podla nastavenia na strojceku **
* **1.4.16** - Prvotna konfiguracia, uz sa nepozuiva, pozri verziu 1.4.17.
./configure --prefix=/home/sipikal/DFB --with-inputdrivers=tslib --with-gfxdrivers=none --enable-debug --enable-trace --enable-x11=no --host=arm-linux LIBS=-lm TSLIB_LIBS=-L/usr/toolchain-arm-26/usr/lib TSLIB_CFLAGS=-I/usr/toolchain-arm-26/usr/include CFLAGS="-I/usr/toolchain-arm-26/usr/include -I/usr/toolchain-arm-26/include --sysroot=/usr/toolchain-arm-26/ -isysroot /usr/toolchain-arm-26"
* **1.4.16** - Chybalo definovanie gcc
./configure --with-gfxdrivers=none --prefix=/opt/emtest/var/DFB/ --with-inputdrivers=tslib --enable-debug --enable-trace --enable-x11=no --host=arm-linux LIBS="-lm -lpng -lfreetype" LIBPNG_LIBS=-L/usr/toolchain-arm-26/usr/lib LIBPNG_CFLAGS=-I/usr/toolchain-arm-26/usr/include TSLIB_LIBS=-L/usr/toolchain-arm-26/usr/lib TSLIB_CFLAGS=-I/usr/toolchain-arm-26/usr/include CFLAGS="-I/usr/toolchain-arm-26/usr/include -I/usr/toolchain-arm-26/usr/include/libpng12 -I/usr/toolchain-arm-26/include --sysroot=/usr/toolchain-arm-26/ -isysroot /usr/toolchain-arm-26" CPPFLAGS="-I/usr/toolchain-arm-26/usr/include -I/usr/toolchain-arm-26/usr/include/libpng12" FREETYPE_LIBS=-L/usr/toolchain-arm-26/usr/lib FREETYPE_CFLAGS=-I/usr/toolchain-arm-26/usr/include
* **1.4.17**
./configure --with-gfxdrivers=none --prefix=/opt/emtest/var/DFB/ --with-inputdrivers=tslib --enable-debug --enable-trace --enable-x11=no --host=arm-linux LIBS="-lm -lpthread -lpng" LIBPNG_LIBS=-L/usr/toolchain-arm-26/usr/lib LIBPNG_CFLAGS=-I/usr/toolchain-arm-26/usr/include TSLIB_LIBS=-L/usr/toolchain-arm-26/usr/lib TSLIB_CFLAGS=-I/usr/toolchain-arm-26/usr/include CFLAGS="-L/usr/toolchain-arm-26/usr/arm-linux-uclibcgnueabi/lib -I/usr/toolchain-arm-26/usr/include -I/usr/toolchain-arm-26/usr/include/libpng12 -I/usr/toolchain-arm-26/usr/arm-linux-uclibcgnueabi/include/c++/4.2.1 -I/usr/toolchain-arm-26/usr/arm-linux-uclibcgnueabi/include/c++/4.2.1/arm-linux-uclibcgnueabi -I/usr/toolchain-arm-26/usr/arm-linux-uclibcgnueabi/include/c++/4.2.1/arm-linux-uclibcgnueabi/list -I/usr/toolchain-arm-26/include --sysroot=/usr/toolchain-arm-26/ -isysroot /usr/toolchain-arm-26" CXXFLAGS="-I/usr/toolchain-arm-26/usr/include -I/usr/toolchain-arm-26/usr/include/libpng12" FREETYPE_LIBS=-L/usr/toolchain-arm-26/usr/lib FREETYPE_CFLAGS=-I/usr/toolchain-arm-26/usr/include --without-tools --enable-devmem=no CC=/usr/toolchain-arm-26/usr/bin/arm-linux-uclibcgnueabi-gcc --disable-video4linux CXX=/usr/toolchain-arm-26/usr/bin/arm-linux-g++ --enable-x11=no --enable-x11vdpau=no --enable-shared=yes
* **1.6.3 DirectFB** - Na emtest_xscale a emtest_xscale_26 platformy nie je mozne skompilovat, pretoze je zavislost na novsiu libc
./configure --with-gfxdrivers=none --prefix=/opt/emtest/var/DFB/ --with-inputdrivers=tslib --enable-debug --enable-trace --enable-x11=no --host=arm-linux LIBS="-lm -lpng -lfreetype" LIBPNG_LIBS=-L/usr/toolchain-arm-26/usr/lib LIBPNG_CFLAGS=-I/usr/toolchain-arm-26/usr/include TSLIB_LIBS=-L/usr/toolchain-arm-26/usr/lib TSLIB_CFLAGS=-I/usr/toolchain-arm-26/usr/include CFLAGS="-L/usr/toolchain-arm-26/usr/arm-linux-uclibcgnueabi/lib -I/usr/toolchain-arm-26/usr/include -I/usr/toolchain-arm-26/usr/include/libpng12 -I/usr/toolchain-arm-26/include --sysroot=/usr/toolchain-arm-26/ -isysroot /usr/toolchain-arm-26" CPPFLAGS="-I/usr/toolchain-arm-26/usr/include -I/usr/toolchain-arm-26/usr/include/libpng12" FREETYPE_LIBS=-L/usr/toolchain-arm-26/usr/lib FREETYPE_CFLAGS=-I/usr/toolchain-arm-26/usr/include --without-tools
* **1.7.7 - Na mikroelektronika imx53 citacku**
Stiahnut je to mozne z:
wget http://sources.webos-ports.org/downloads/DirectFB-1.7.7.tar.gz
Configure prikaz:
./configure $CROSS_BUILD --with-inputdrivers=linuxinput,tslib --with-gfxdrivers=none
Je potrebne vykonat patch:
system.c - Funkciu direct_trap: - Je potrebne definovat 'sigval_t' ako 'union sigval'
-- sigval_t
++ union sigval
mutex.h - odstranit:
#define DIRECT_RECURSIVE_MUTEX_INITIALIZER(name) { PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP }
trace.h - nahradit:
-- static DirectMutex buffers_lock = DIRECT_RECURSIVE_MUTEX_INITIALIZER(buffers_lock);
++ 'static DirectMutex buffers_lock = DIRECT_MUTEX_INITIALIZER(buffers_lock);'
directfb.c - vykonat sofistikovanjsi patch:
Za funkciu DirectFBSetOption pridat:
++static pthread_once_t lock_init_once = PTHREAD_ONCE_INIT;
++static DirectMutex lock;
++
++static void lock_init(void)
++{
++ direct_recursive_mutex_init(&lock);
++}
A nasledne v DirectFBCreate:
-- 'static DirectMutex lock = DIRECT_RECURSIVE_MUTEX_INITIALIZER(lock);'
++ 'pthread_once(&lock_init_once, lock_init);'
======= Mikroelektronika citacka - uprava systemu =======
do suboru /etc/fb.modes pridat:
mode "320x240-59"
# D: 6.500 MHz, H: 15.046 kHz, V: 59.472 Hz
geometry 320 240 320 720 16
timings 153846 56 24 3 6 32 4
vsync high
rgba 5/11,6/5,5/0,0/0
endmode
====== Struktura a pozadovane moduly pre ARM architekturu ======
Do aplikacie sa linkuju a nasledne sa davaju do instalacneho balika kniznice 'libdirefb*', 'libfusion*', 'libdirect*' + su potrebne include path-y
Boldom su znazornene priecinky
\\
Kurzivou vyzadovane moduly
**Moduly a suborova struktura:**
* Nazov directfb + verzia, aktualne **directfb-1.4.17**
* **inputdrivers**
- //libdirectfb_tslib.so// - driver pre podporu touch screen-u
* **systems**
- //libdirectfb_fbdev.so//
- //libdirectfb_dummy.so//
* **interfaces**
* **ICoreResourceManager**
- //libicoreresourcemanager_test.so//
* **IDirectFBFont**
- //libidirectfbfont_dgiff.so//
- //libidirectfbfont_ft2.so//
* **IDirectFBImageProvider**
- //libidirectfbimageprovider_dfiff.so//
- //libidirectfbimageprovider_gif.so//
- //libidirectfbimageprovider_jpeg.so//
- //libidirectfbimageprovider_png.so//
* **IDirectFBVideoProvider**
- //libidirectfbvideoprovider_gif.so//
* **wm**
- //libdirectfbwm_default.so//
======= Co robit ak postup nefunguje ? =======
* Ak zavretie aplikacie, proces Xorg vytazi procesor na 100 % ?
Je potrebne pouzit iny graficky driver grafickej karty.
* Ak chyba po vykonani skriptu 'configure' libpng, libjpeg
pozri bod 1, Stiahnutie a instalacia zavislosti
* Ak dfbmaster pouziva inu verziu DirectFB ako projekt v Qt Creatore (pouzita verzia sa vypise na konzolu po spusteni) - je potrebne odinstalovat starsiu verziu DirectFB
sudo apt-get purge libdirectfb-dev && sudo apt-get autoremove