Para o ubuntu tem dois, o dolphin estavel e o em desenvolvimento ou daily, o dolphin mais novo nao compila no 12.04 por causa do gcc,g++ e do cmake que sao "antigos" entao vc tem que atualizar para que vc possa compilar no 12.04, e tbm nao da para isntalar algumas bibliotecas dev que o sistema ja quer remover pacotes importantes. A ultima do dolphin que saiu para o precise e a 3.5.
Eu nao mudei nenhuma flag para compilar nesse caso, o proprio script ja cuida de identificar a arquitetura e faz as otimizaçoes, inclusive instala o recem compilado dolphin se vc quiser ; ) é so colocar
make && sudo make install que ele gera as saidas e instala tudo em /usr/local automaticamente.
A diferença e nas otimizaçoes, a grosso modo vc pode ir olhando o comando correr quando vc da o cmake, ele vai listar varias coisas e procurar varias bibliotecas, se ele encontra essas bibliotecas, ele compila aquele determinado recurso, se ele nao encontra a lib ele nao compila com aquele recurso extra. Entao a compilação tradicional nao vem com essas opçoes ativas, se o cmake nao indentifica a biblioteca para aquele recurso secundario ele simplesmente passa adiante e vc fica sem aquele recurso secundario habilitado.
Entao eu fui olhando todos os erros que estavam dando por falta de libs e fui isntalando todas ate que nao ocorreram mais nenhum erro significativo(somente 1 por causa de uma lib SDL2) e os "erros" que ficaram eram erros em bibliotecas que eram subistituidas por outras.
Fora isso, no arquivo Cmakelists.txt por exemplo, antes de compilar, vc pode ligar algumas coisas se vc quiser, que vem desligadas por padrao, algumas coisas sao convenientes ligar outras nao, como o suporte ao wayland ou vc poderia aproveitar e ativar para que seja feita uma compilação para o android tbm, ali tbm tem opção para vc desenvolver uma versao debug do dolphin.
A unica coisa que habilitei que achei bacana e o suporte a EGL, esse suporte esta compilado nas duas versoes que estao no dropbox, tanto a dev quanto a normal.
Entao esssa versao que eu compilei vem com varias coisas ativas que a versao padrao nao vem, embora possa nao aparecer mas elas estao la.... ; )
Quando vc da uma sudo make isntall depois de terminado a compilação, ele gera um arquivo de texto simples com a localização de todos os arquivos instalados, ai vc pega esse log e vc pode criar manualmente todas as pastas, estutura de diretorios, cria a pasta DEBIAN o arquivo control, definir os parametros e cria o pacote deb se quiser.
exemplo;
Vc pode criar um arquivo control com o aplicativo padrao equivs-control ou entao e so copiar de uma pacote qualquer, esse arquivo e o mais importante do pacote, nao me lembro se nas distribuiçoes como o fedora existe o arquivo DEBIAN provavelmente nao!!! No Fedora por exemplo vai ser a estrutura das pastas somente, por exemplo /usr/local e o programa.
Package: dolphin-emu-master ----> existem duas versoes a versao padrao e a master
Version: 4.0-926 ---->versao do pacote
Architecture: amd64 ----arquitetura
Original-Manteiner: Pierre Bourdon<delroth@gmail.com> ----> aqui eu decidi manter o nome do mantenedor original do pacote
Installed-Size: 12288
Depends: g++-4.8 , gcc-4.8 , cmake (>= 2.8.
----> aqui as dependencias, se alguma comflitar ou faltar ele da erro e nao isntala
Conflicts: dolphin-emu, dolphin-emu-trunk ----> aqui por exemplo, vc nao pode ter as duas versoes instaladas
Replaces: dolphin-emu, dolphin-emu-trunk ao mesmo tempo
Section: games ----> a sessao que ele vai aparecer no sistema
Priority: extra ----> prioridade que o aplicativo vai ser executado
Homepage:
http://dolphin-emu.org/Description: Gamecube, Wii and Triforce emulator
Dolphin is a Gamecube, Wii and Triforce (arcade machine based on the ----> a descrição tem sempre que começar com um espaço e a
Gamecube) emulator. mudança de linha tem que ter um . do contrario ele nao
. cria o deb, as permissoes do arquivo tem que estar
Games compatibility is very good: a lot of Gamecube and Wii titles work, corretas tbm.
but the emulator might require a lot of processing power in order to run
some games at full speed.
Com o nosso executavel ja estava compilado, pois compilamos na maquina virtual, foi so isntalar algumas dependencias na maquina real para ele funcionar, é um trabalho simples que eu fiz.
Vc pode compilar estaticamente o aplicativo, assim ele nao precisa de dependencias porque elas ja vao estar junto, mas isso e um pouco complicado de fazer, e nao me aventurei nisso, alem de ser mais dificil manter a compatibilidade e de ele gerar um pacote bem maior do que o original.
O arquivo md5suns e o ultimo que vc gera antes de empacotar, eu gero ele com o
masshash, nele tem o md5 de todos os aquivos do pacote e localização. O pessoal do debian tem outros metodos de empacotamento, uma politica com arquivos de verificação como o lintian e outros, o que garante mais segurança, o pacote que eu criei e bem "caseiro" mesmo, tem tbm como vc desmantelar um pacote deb e ver a estrutura e bem insteressante, se vc olhar de perto é uma arquivo compactado
ar sempre composto de tres partes, debian-binary
control.tar.gz e data.tar.gz.
Para gerar o campo depends, as dependencias que o seu programa vai ter, vc pode fazer com o
ldd;
linux-vdso.so.1 => (0x00007fff0f793000) liblzo2.so.2 => /usr/lib/x86_64-linux-gnu/liblzo2.so.2 (0x00007f56fa4f6000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f56fa2df000)
libsfml-network.so.1.6 => /usr/lib/libsfml-network.so.1.6 (0x00007f56fa0c6000)
libgtk-x11-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 (0x00007f56f9a8c000)
libopenal.so.1 => /usr/lib/x86_64-linux-gnu/libopenal.so.1 (0x00007f56f4836000)
libSoundTouch.so.0 => /usr/lib/x86_64-linux-gnu/libSoundTouch.so.0 (0x00007f56f4628000)
libpulse.so.0 => /usr/lib/x86_64-linux-gnu/libpulse.so.0 (0x00007f56f43e0000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f56f40db000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f56f3ddf000)
libgomp.so.1 => /usr/lib/x86_64-linux-gnu/libgomp.so.1 (0x00007f56f3bd0000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f56f39b9000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f56f35f9000)
libpangocairo-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0 (0x00007f56f33ed000)
libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007f56f31e6000)
libatk-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0 (0x00007f56f2fc4000)
libcairo.so.2 => /usr/lib/x86_64-linux-gnu/libcairo.so.2 (0x00007f56f2d06000)
libgdk_pixbuf-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 (0x00007f56f2ae5000)
libgio-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007f56f2796000)
libpangoft2-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0 (0x00007f56f256c000)
libpango-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0 (0x00007f56f2322000)
libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f56f20ec000)
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f56f1df7000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f56f1be5000)
libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f56f19db000)
libXinerama.so.1 => /usr/lib/x86_64-linux-gnu/libXinerama.so.1 (0x00007f56f17d8000)
libXcursor.so.1 => /usr/lib/x86_64-linux-gnu/libXcursor.so.1 (0x00007f56f15cd000)
libXcomposite.so.1 => /usr/lib/x86_64-linux-gnu/libXcomposite.so.1 (0x00007f56f13ca000)
libXdamage.so.1 => /usr/lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007f56f11c7000)
libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007f56f0fbe000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f56f0da0000)
libpulse-simple.so.0 => /usr/lib/x86_64-linux-gnu/libpulse-simple.so.0 (0x00007f56f0b9b000)
libcaca.so.0 => /usr/lib/x86_64-linux-gnu/libcaca.so.0 (0x00007f56f08d0000)
/lib64/ld-linux-x86-64.so.2 (0x00007f56fa739000)
libSM.so.6 => /usr/lib/x86_64-linux-gnu/libSM.so.6 (0x00007f56f06c8000)
libjpeg.so.8 => /usr/lib/x86_64-linux-gnu/libjpeg.so.8 (0x00007f56f0477000)
libtiff.so.4 => /usr/lib/x86_64-linux-gnu/libtiff.so.4 (0x00007f56f0213000)
libjack.so.0 => /usr/lib/x86_64-linux-gnu/libjack.so.0 (0x00007f56effce000)
libX11-xcb.so.1 => /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x00007f56efdcc000)
libxcb-dri2.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0 (0x00007f56efbc7000)
libxcb-xfixes.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-xfixes.so.0 (0x00007f56ef9bf000)
libwayland_ltsq-client.so.0 => /usr/lib/x86_64-linux-gnu/libwayland_ltsq-client.so.0 (0x00007f56ef7b4000)
libwayland_ltsq-server.so.0 => /usr/lib/x86_64-linux-gnu/libwayland_ltsq-server.so.0 (0x00007f56ef5a4000)
libgbm.so.1 => /usr/lib/x86_64-linux-gnu/libgbm.so.1 (0x00007f56ef39d000)
libudev.so.0 => /lib/x86_64-linux-gnu/libudev.so.0 (0x00007f56ef190000)...............
Se vc reparar a primeira entrada é a uma biblioteca de interface com o kernel que sempre aparece.
Para localizar essas libs vc pode usar o apt-file search;
platao@platao-ubuntu:/usr/local/bin$ apt-file search libFLAC.so.8
libflac8: /usr/lib/x86_64-linux-gnu/libFLAC.so.8
libflac8: /usr/lib/x86_64-linux-gnu/libFLAC.so.8.2.0
platao@platao-ubuntu:/usr/local/bin$
Procurando somente a libflack8 por exemplo, as duas dependencias estao no mesmo pacote como vc pode ver. A versao da lib depende do desenvolvedor, da qual ele quis usar.
Depois que vc ja fez tudo, e so empacotar seu pacote caseiro com um
dpkg -b nome do pacote, isso que expliquei aqui e bem superficial!!!, se alguem quiser fazer uma observação aqui sera bem vindo!!!