Table of Contents

Stiahnutie a instalacia zavislosti

Stiahnut vhodne zdrojaky (aktualne pouzivame directfb 1.4.17) z 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

system=x11
mouse-protocol=MouseSystems
no-cursor
mode=600x800-60
sudo addgroup <user> tty
sudo addgroup <user> video
<Device Name="UI" ID="0"        Enable="1" Type="DirectFB" />

Manualna kompilacia pre platformu ARM verzie emtest_xscale*

Pozor na prefix !!! treba upravit podla nastavenia na strojceku

./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"
./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
./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
./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

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:

Co robit ak postup nefunguje ?

Je potrebne pouzit iny graficky driver grafickej karty.
pozri bod 1, Stiahnutie a instalacia zavislosti
sudo apt-get purge libdirectfb-dev && sudo apt-get autoremove