xwords/palm/Makefile.PNO
ehouse 3c6405d0d1 First shot at bluetooth support (turned off in Makefile by default).
A full robot vs. robot game now works between two Treos.  Added UI to
choose BT as transport mechanism, and added new send proc to establish
socket connection between host and guest.  Works only for two devices:
no piconet yet.  No error recovery, ability to quit game in middle,
start new game, etc.
2006-08-23 04:44:55 +00:00

111 lines
3.5 KiB
Makefile

# -*- mode: Makefile; compile-command: "make ARCH=ARM_ONLY"; -*-
PLATFORM = PALM_PNO
PALMDIR = /usr/local/share/palmdev/sdk-5r3/include
# Which arm suite to use? Well, the suite in prc-tools-arm is broken
# on debian at the moment: builds code that doesn't work. But older
# versions, e.g. on current debian stable, are ok. For current debian
# the workaround is to build your own crosscompilation toolchain,
# which should put arm-elf-gcc in your path. We'll use that if we
# find it. Otherwise we fall back to the prc-tools-arm chain.
WHICH = $(shell if which arm-elf-gcc > /dev/null ; then echo elf; else echo palmos; fi)
CC_ARM = arm-$(WHICH)-gcc
OC_ARM= arm-$(WHICH)-objcopy
OD_ARM = arm-$(WHICH)-objdump
OPT = -Os
MINUS_G = -g
INCLUDE += \
-I$(PALMDIR) \
-I$(PALMDIR)/Libraries \
-I$(PALMDIR)/Dynamic \
-I$(PALMDIR)/Core \
-I$(PALMDIR)/Extensions/ExpansionMgr \
-I$(PALMDIR)/Core/UI \
-I$(PALMDIR)/Core/System \
-I$(PALMDIR)/Core/System/Unix \
-I$(PALMDIR)/Core/Hardware \
-I$(PALMDIR)/Extensions/Bluetooth \
-I. -I../common -I../relay
# NOTE!!!! Added the -w flag to supress all warnings since arm-elf-gcc
# does so much bitching about the Palm headers. Need to fix that, or
# use the arm-palmos-gcc, or something. But for now, -w....
CCFLAGS = $(OPT) $(MINUS_G) -Wall -Wunused-parameter -D__PALMOS__ -D__palmos__ -Asystem=palmos
ARMCCFS = $(CCFLAGS) -DNATIVE \
-nostartfiles -mshort-load-bytes -nodefaultlibs -ffixed-r9 \
-mpic-register=r10 -msingle-pic-base -fpic \
-Wno-multichar \
$(INCLUDE)
ARMLDFS = -Xlinker --script=./ldscript.arm -lgcc
# ARM-specific
ARM_DEFINES = $(MYDEFS) -DXW_TARGET_PNO -D__LITTLE_ENDIAN
# turn show progress off for now
# ARM_DEFINES += -USHOW_PROGRESS
include ../common/config.mk
OBJS = $(PLATFORM)/pnolet.o \
$(PLATFORM)/palmmain.o \
$(PLATFORM)/palmsavg.o \
$(PLATFORM)/gameutil.o \
$(PLATFORM)/newgame.o \
$(PLATFORM)/palmdict.o \
$(PLATFORM)/palmdraw.o \
$(PLATFORM)/palmutil.o \
$(PLATFORM)/dictui.o \
$(PLATFORM)/dictlist.o \
$(PLATFORM)/palmir.o \
$(PLATFORM)/palmip.o \
$(PLATFORM)/palmbt.o \
$(PLATFORM)/prefsdlg.o \
$(PLATFORM)/connsdlg.o \
$(PLATFORM)/pace_gen.o \
$(PLATFORM)/pace_man.o \
$(COMMONOBJ)
# The target of this makefile is the .bin files that comprise the
# pnolet. There will be more than just PNOC0000.bin, but the others
# get made as a matter of course and as long as they all get included
# in the .prc we're fine.
all: Pnoc0000.bin Pnog0000.bin
$(PLATFORM)/%.o : %.c $(MAKEFILE)
mkdir -p $(PLATFORM)
$(CC_ARM) -o $@ -c $(ARM_DEFINES) -DHERE $(ARMCCFS) $<
$(COMMONOBJDIR)/%.o : $(COMMONDIR)/%.c $(MAKEFILE)
mkdir -p $(COMMONOBJDIR)
$(CC_ARM) -o $@ -c $(ARM_DEFINES) -DHERE $(ARMCCFS) $<
Pnoc_bin.pre Pnog0000.bin: pace_gen.h $(OBJS)
$(CC_ARM) $(OBJS) $(ARMCCFS) $(ARMLDFS) -Wl,-Map,Pnoc_bin.map -o tmp.out
# @$(OD_ARM) --disassemble-all tmp.out
$(OC_ARM) -j .text -O binary tmp.out Pnoc_bin.pre
$(OC_ARM) -j .got -O binary tmp.out Pnog0000.bin
# @rm -f tmp.out
# create not only Pnoc0000.bin but any others required to fit the
# pnolet into 50K chunks (for hotsyncing...)
Pnoc0000.bin: Pnoc_bin.pre
rm -f Pnoc????.bin
split -a 4 -b 50k -d $< Pnoc
for f in $$(ls Pnoc????); do mv $$f $$f.bin; done
pace_gen.c pace_gen.h: ./gen_pace.pl funcfile.txt
rm -f $@ _dirList
./gen_pace.pl -func funcfile.txt \
-file $(PALMDIR)/Core/UI \
-file $(PALMDIR)/Core/System \
-file $(PALMDIR)/Extensions/ExpansionMgr \
-oc pace_gen.c -oh pace_gen.h
rm -f _dirList
clean:
rm -rf $(OBJS) pace_gen.c pace_gen.h *.bin Pnoc_bin.pre