Gerson Diesel Blog

TI, tecnologia e outras coisas mais…

Programando para PalmOS no Linux utilizando o Eclipse

Quando comecei a escrever este post, me perguntei: -Alguém ainda programa para PalmOs??

Não sei, mas descrevo aqui como construir um ambiente de programação para PalmOS no Linux amd64, utilizando o Eclipse. Encarei isto como um desafio, visto que a Access não dispobilizou um PODS para Linux, preferindo “emular” o compilador no windows utilizando o Cygwin (que barbaridade!).

Uma particularidade desta configuração é o fato da versão do Linux ser para processadores amd64. Como não existe prc-tools para amd64, devemos configurar um ambiente “chroot” para abrigar a versão 32bits do prc-tools e compilar os projetos. O ambiente de desenvolvimento permanece 64 bits, com o Eclipse e o Guikachu (criação dos forms).

Primeiro passo: Instalar o Eclipse.

Eu estou usando o Ganymede, versão 3.4, último disponível na data que baixei. Instale como preferir, baixando do site ou via ferramenta de instalação de pacotes da sua distribuição. Baixando pelo site é possível escolher a versão já configurada para programação C/C++ (CDT). Se instalar pelo instalador de pacotes da distribuição, é necessário instalar o ambiente CDT através da opção Software Update no menu Help do Eclipse.

Segundo Passo: Instalar o Guikachu

O Guikachu (http://gergo.erdi.hu/projects/guikachu/) é um programa para criação de formulários (interface visual) das aplicações para PalmOS. Como não encontrei uma versão compilada da minha distribuição (Debian Lenny), baixei os fontes da versão 1.5.11, descompactei e compilei (./configure –prefix=/usr, make, make install). Nesta parte encontrei uma dificuldade que descrevi no post Erros de compilação ao utilizar o gcc-4.3.

Terceiro Passo: Configurar o ambiente chroot 32 bits

Como descrevi no início do post, não encontrei uma versão do prc-tools para 64bits, então tive que configurar um ambiente chroot 32bits para poder compilar os projetos. A solução para este problema eu encontrei no artigo Solution to prc-tools on AMD64 and other 64-bit machines. Não vou descrever todo o processo, mas coloco os comandos para criar o ambiente. Para quem já tem um ambiente chroot, pule direto para a instalação do prc-tools.

#apt-get install chroot schroot
#chroot /var/chroot/debian_32/

dentro do ambiente chroot:

#vi /etc/apt/sources.list

alterar a linha:

deb http://ftp.debian.org/debian/ sarge main

para

deb http://ftp.debian.org/debian/ sarge main contrib non-free

atualizar a fonte de pacotes

#apt-get update

instalar o prc-tools:

#apt-get install apt-file prc-tools pilrc

Poderão aparecer algumas mensagens relacionadas ao Locale. Para corrigir isto, edite o .bashrc do root, inserindo a linha:

export LC_ALL=C

Feito isto, podemos executar um comando 32bits a partir do ambiente 64bits, utilizando o comando schroot:

#schroot -c debian_32 -p /usr/bin/file /bin/bash

É assim que o projeto será compilado dentro do chroot a partir do Eclipse. Veremos como mais adiante, com a criação de um arquivo Makefile.

Eu precisei configurar o schroot para permitir que o meu usuário acessasse o ambiente chroot. Edite o arquivo /etc/schroot/schroot.conf e inclua as linhas:

[debian_32]
description=Debian sarge 32bits (stable)
location=/var/chroot/debian_32bit
priority=2
#groups=sbuild
users=gerson #coloque seu usuario aqui
root-users=gerson #coloque seu usuario aqui
aliases=stable

Quarto Passo: Instalar o PalmOS SDK do site da Access Developer Network

Baixe o SDK deste link (é necessário registrar-se). Baixe os seguintes arquivos:

– Garnet OS SDK (68K) R3 PRC tools Generic UNIX

– Garnet OS 68K API SDK (Fall 2004 Update). Este segundo deve ser copiado por cima do arquivo anterior (após descompactá-los, claro). Importante: este arquivo possui como final de linha <CR><LF>, causando problemas ao compilar. É necessário converter os arquivos para <LF>, com o seguinte comando:

#find . -type f -exec dos2unix {} \;

(O programa dos2unix faz parte do pacote sysutils;)

Coloque o SDK em uma pasta dentro do ambiente chroot. Ex.: /var/chroot/debian_32/var/PalmOS_SDK. Dê as permissões necessárias para que todos os usuários possam ler os arquivos:

#chmod o+r -R /var/chroot/debian_32/var/PalmOS_SDK

Entre no ambiente chroot:

chroot /dev/chroot/debian_32

prepare o ambiente de compilação:

#palmdev-prep /var/PalmOS_sdk/

saia do ambiente chroot:

#exit

Quinto Passo: Configurando o Eclipse

O workspace do eclipse deve ficar em uma pasta visível pelo chroot debian_32. No meu caso, o workspace está em /var/chroot/debian_32/home/gerson/workspace.

Como projeto exemplo, HelloDiesel, criei uma organização de pastas da seguinte maneira:

hellodiesel

A pasta includes aparece após configurar o projeto: Botão direito do mouse no nome do projeto -> Properties -> C/C++ General -> Paths and Symbols -> aba Includes -> botão Add -> inserir o caminho /var/chroot/debian_32bit/var/PalmOS_sdk/sdk-5r4/include, marcar todas as caixas de opção -> Ok -> Ok. Observe que tenho uma pasta sdk-5r4 abaixo da pasta palmOS_SDK. Ajuste na sua configuração.

Sexto passo: O arquivo Makefile

Esse é o cara que irá chamar o compilador dentro do chroot 32bits a partir do ambiente 64 bits. De barbada coloco aqui o Makefile inteiro:

SCHROOT = schroot -c debian_32 -d /home/gerson/workspace/HelloDiesel --
SCHROOT_BUILD = schroot -c debian_32 -d /home/gerson/workspace/HelloDiesel/build --
PROGNAME = AppMain
APPNAME = 'Hello Diesel'
RESOURCES = src/AppResources
APPID = GHDx
OBJS = build/$(PROGNAME).o
#FLAGS = -O2 -Wunused -Wall -palmos3.1
FLAGS = -O2 -Wunused -Wall

all: clean resources grc
$(SCHROOT) build-prc dist/$(PROGNAME).prc $(APPNAME) $(APPID) build/*.grc \
                                                    build/resources/*.bin

grc:
$(SCHROOT) m68k-palmos-gcc $(FLAGS) -c src/$(PROGNAME).c -o $(OBJS)
$(SCHROOT) m68k-palmos-gcc $(FLAGS) $(OBJS) -o build/$(PROGNAME)
$(SCHROOT_BUILD) m68k-palmos-obj-res $(PROGNAME)

resources: forms
pilrc -H src/AppResources.h rsc/$(PROGNAME).rcp build/resources/

forms:
guikachu2rcp rsc/$(PROGNAME).guikachu

clean:
rm -f build/*.[oa]
rm -f build/*.bin
rm -f build/*.grc
rm -f src/*~
rm -f build/$(PROGNAME)
rm -f dist/*
rm -f rsc/*.rcp
rm -f build/resources/*

Após compilar, o arquivo .prc deve aparecer na pasta DIST. Aí é só sincronizar e testar no Palm.

Opção:  Testar em emulador/simulador

Caso queira testar a aplicação em um emulador ou simulador, pode-se utilizar o POSE (Palm OS Emulator), ou então utilizar o PalmOS Simulator através do wine e utilizar a rom do TX disponível pela web.

Conclusão

Acho que com o fim anunciado do PalmOS, a Access não irá liberar uma versão do PODS para Linux. Além do mais, muitos programadores já estão correndo atrás de um SDK para o WebOS, novo sistema da Palm/Access.

Contudo, para aqueles que ainda desejam programar para o PalmOS (que acredito que levará um tempo para se “dissolver”) no Linux, fica aí este guia para construir um ambiente de programação.

Abraços e até a próxima.

Compartilhe:

, , , ,

One thought on “Programando para PalmOS no Linux utilizando o Eclipse

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>