PALM PROGRAMMING: Putting it all together.
The Compiler / Linker / Builder.
Written by Mike Andrew on 26-April-02.
This section details the compilation process behind any
and all source code intended for a Palm. It does not discuss
the source code. For a description of source codes and
their syntax, see the relevant section.
Creating a palm application from source involves the use
a cross compiler
a resource compiler
While the terms may be familiar to you, the actual programs used to perform the approve process will not.
It is assumed, before you read further, that you have, in fact, downloaded and installed all necessary components as detailed in previous sections of this SxS.
Rather than elaborate, in English, how this process is achieved, I will use a heavily commented Makefile as an example. You should be able to cut 'n paste the contents below, to achieve most of your intended applications.
Be aware that:
a (dot).prc file is the target binary. It is THE file that will be loaded to the palm (or the emulator). Almost all utilities that deal with a palm (loading, emulators eg) look for (dot)prc files as their source.
A confusingly named (dot).rcp file is the resource source code. Resource source is similar to Pascal in syntax and defines the look 'n feel of your application (pull down menus, icons, etc). Normally, one single (dot)rcp file is sufficient for any application. Accordingly, the name of that file follows the convention of having the same name as the main().c EG. hello.c, hello.rcp, with hello.prc as final output.
In the Makefile below, it is assumed that, the names of the files are:
xxx.c # one (or more) C files
hello.prc # the target binary for the palm
hello.rpc # the resource file
resource.h # for above and very standard practice
# you should be able to simply alter this 1st section to achieve your aims
# the intent of this Makefile is to compile a "hello world" example
# which I detail in a later chapter
# name of program (and it's consequent .rcp, .prc and .def file)
PROGRAM = hello
#The icon title of the application, on the palm
DESCRIPTOR= '$(PROGRAM)' apid
# C sources derived to:
OBJS = hello1.o hello2.o .... helloN.o
#obviously, fix the above line to reflect the source(s) you have!
#Use the line above for a string of (dot)c files.
# All, will ultimately be merged into a single lib. By convention,
# even a single (dot)c source is handled in this manner.
# # end of configurable section
# location of sdk header files (see bottom for detailed explanation)
#The names of: the resource file, the library (which is built by make) and the output
PROGLIB = $(PROGRAM).lib
# compilers and linker
COMPILE = $(CROSS_COMPILER) -c
MAKELIB = $(CROSS_COMPILER) -o
COMPILER_FLAGS = -O2 -Wall -palmos3.5 $(INCLUDE_PALM)
COMPILE_RESOURCE = pilrc -q
LINK = build-prc
PRC2BIN = prc2bin
# to make the application xxx.prc
$(PRC): $(PROGLIB) resource.binaries
(tab)$(LINK) $(PRC) $(DESCRIPTOR) $(PROGLIB) *.bin
see below for a description of the def file, and build-prc syntax.
# To compile the C source(s)
.SUFFIXES: .c .o
(tab)$(COMPILE) $(COMPILER_FLAGS) $<<br>
# to librarize those source(s)
(tab)$(MAKELIB) $(PROGLIB) $(OBJS)
# (tab)$(OBJRES) $(PROGLIB)
#the resource compiler
resource.binaries: $(RESOURCES) resource.h
# clean-up functions
(tab)rm -f *.[oa] *.bin *.grc *~ $(PROGLIB)