mirror of
git://xwords.git.sourceforge.net/gitroot/xwords/xwords
synced 2025-01-18 22:26:30 +01:00
b0102f8baa
scoreboard and tray on palm; make center drill into the focussed object and spacebar come back up then move the focus among them. Integrate with other focussable objects on main form. Go from separate drawCursor routines to same for all three, with cursor only visible when focus is drilled down. On curses, add a hilite rect routine that can be called after text is laid down, and use for cursors.
339 lines
9.5 KiB
Makefile
339 lines
9.5 KiB
Makefile
# -*- mode: Makefile; compile-command: "make ARCH=68K_ONLY MEMDEBUG=TRUE"; -*-
|
|
# Copyright 2002-2006 by Eric House (xwords@eehouse.org). All rights
|
|
# reserved.
|
|
#
|
|
# This program is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU General Public License
|
|
# as published by the Free Software Foundation; either version 2
|
|
# of the License, or (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
|
|
PLATFORM=obj_palm
|
|
|
|
ifeq ($(MEMDEBUG),TRUE)
|
|
DEBUG = -DMEM_DEBUG -DDEBUG
|
|
PLATFORM := $(PLATFORM)_memdebug
|
|
CFLAGS += $(DEBUG) -g -O0
|
|
CSFLAGS += -O0 -g
|
|
NAME = "CrossDbg"
|
|
ICONTEXT = "CrossDbg"
|
|
APPID ?= Xwdb
|
|
else
|
|
PLATFORM := $(PLATFORM)_rel
|
|
CFLAGS += -O2 -fomit-frame-pointer
|
|
# The -Os flag breaks multilink, at least as I'm using it
|
|
CSFLAGS += -OS -fomit-frame-pointer
|
|
NAME = "Crosswords"
|
|
ICONTEXT = "Crosswords"
|
|
APPID ?= Xwr4
|
|
endif
|
|
|
|
LANG=en_US
|
|
ROOTNAME = $(NAME)
|
|
BITMAPS = ./bmps
|
|
TYPE = appl
|
|
MLPREFIX = /usr
|
|
DICT = $(shell echo $$BASENG_PATH)
|
|
|
|
ARCH ?= ARM_ONLY
|
|
|
|
ifeq ($(ARCH),ARM_ONLY)
|
|
PLATFORM := $(PLATFORM)_armonly
|
|
BUILD_AS_PNOLET = 1
|
|
TARGET=$(PLATFORM)/xw4_ARM.prc
|
|
else
|
|
ifeq ($(ARCH),68K_ONLY)
|
|
PLATFORM := $(PLATFORM)_68konly
|
|
TARGET=$(PLATFORM)/xw4_68K.prc
|
|
else
|
|
ifeq ($(ARCH),SONY)
|
|
# No highres in sony build case
|
|
PLATFORM := $(PLATFORM)_sony
|
|
BUILD_AS_PNOLET = 1
|
|
FEATURE_PNOAND68K = -DFEATURE_PNOAND68K
|
|
TARGET=$(PLATFORM)/xw4_SONY.prc
|
|
else
|
|
ifeq ($(ARCH),COMBINED)
|
|
PLATFORM := $(PLATFORM)_combined
|
|
BUILD_AS_PNOLET = 1
|
|
FEATURE_PNOAND68K = -DFEATURE_PNOAND68K
|
|
TARGET=$(PLATFORM)/xwords4.prc
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
|
|
APPNAME = "$(NAME)"
|
|
|
|
PALM_TOOLS_PREFIX = $(shell echo $$PALM_TOOLS_PREFIX)
|
|
|
|
ifeq (x$(PALM_TOOLS_PREFIX)x, xx)
|
|
PALM_TOOLS_PREFIX = m68k-palmos-
|
|
endif
|
|
#PALM_TOOLS_PREFIX=m68k-palmos-coff-
|
|
|
|
CC = $(PALM_TOOLS_PREFIX)gcc
|
|
AR = $(PALM_TOOLS_PREFIX)ar
|
|
MULTILINK = $(PALM_TOOLS_PREFIX)multilink
|
|
###############################################################################
|
|
# par is a utility for manipulating .prc and .pdb files. See
|
|
# http://djw.org/product/palm/par/index.html to download source.
|
|
###############################################################################
|
|
PAR = par
|
|
PILRC = pilrc
|
|
BUILD-PRC = build-prc
|
|
OBJ-RES = m68k-palmos-obj-res
|
|
|
|
MULTILINK_OPTIONS = -basename $(ROOTNAME) -segmentsize 27k -g \
|
|
-deadstrip -verbose -gdb-script app.gdb
|
|
|
|
ifneq (x$(OWNERNAME)x,xx)
|
|
HASHDEF = -DOWNER_HASH=$$(./namehash $(OWNERNAME))
|
|
endif
|
|
|
|
MYDEFS_COMMON = $(PASSTHRU) -DXW_FEATURE_UTILS -DPOINTER_SUPPORT \
|
|
-DKEY_SUPPORT -DOVERRIDE_EDGE_FOR_INDEX -DCOLOR_SUPPORT \
|
|
-DSHOW_PROGRESS $(HASHDEF) -DNO_REG_REQUIRED
|
|
|
|
# turn on letting users pick tiles "face-up"
|
|
MYDEFS_COMMON += -DFEATURE_TRAY_EDIT
|
|
|
|
# turn on limits to searches on board and in tray (number of tiles to
|
|
# use)
|
|
MYDEFS_COMMON += -DXWFEATURE_SEARCHLIMIT
|
|
|
|
#MYDEFS_COMMON += -DXWFEATURE_HINT_CONFIG
|
|
|
|
# Turn on network play over IP via cellular modem. Very much
|
|
# experimental at this point!
|
|
# MYDEFS_COMMON += -DXWFEATURE_RELAY
|
|
|
|
# turn on bluetooth comms option for 68K and ARM -- which won't work yet
|
|
BLUETOOTH = -DXWFEATURE_BLUETOOTH
|
|
#MYDEFS_COMMON += $(BLUETOOTH)
|
|
|
|
# Add menu allowing to choose to run 68K or ARM
|
|
# ifdef DEBUG
|
|
# MYDEFS_COMMON += -DFEATURE_DUALCHOOSE
|
|
# endif
|
|
|
|
# For Danish and perhaps other languages, custom-measure glyph height
|
|
# so that overtall letters have a chance of fitting.
|
|
MYDEFS_COMMON += -DTALL_FONTS
|
|
|
|
# Turn on ability to handle 4-byte-node DAWG files. These are of type
|
|
# Xwr4, not Xwr3 like the old ones. Currently this option means the
|
|
# binary won't be able to read or even find the old dictionaries.
|
|
# Don't release with this on until there's a UI decision and code on
|
|
# how to help users transition.
|
|
MYDEFS_COMMON += -DNODE_CAN_4
|
|
|
|
MYDEFS_COMMON += -DSVN_REV=\"$(shell svnversion -n .)\"
|
|
|
|
ifdef XWFEATURE_STANDALONE_ONLY
|
|
MYDEFS_COMMON += -DXWFEATURE_STANDALONE_ONLY
|
|
else
|
|
MYDEFS_COMMON += -DXWFEATURE_IR
|
|
endif
|
|
|
|
MYDEFS_ARM = -D__LITTLE_ENDIAN -DXW_TARGET_PNO $(MYDEFS_COMMON)
|
|
MYDEFS_68K = -DPLATFORM_PALM -D__BIG_ENDIAN $(MYDEFS_COMMON) \
|
|
-DAPPNAME=\"$(APPNAME)\" \
|
|
$(BLUETOOTH)
|
|
|
|
|
|
BITMAP_RSRCS = \
|
|
$(BITMAPS)/rightarrow.pbitm \
|
|
$(BITMAPS)/downarrow.pbitm \
|
|
$(BITMAPS)/flipbutton.pbitm \
|
|
$(BITMAPS)/valuebutton.pbitm \
|
|
$(BITMAPS)/lightbulb.pbitm \
|
|
$(BITMAPS)/traybuttons.pbitm \
|
|
$(BITMAPS)/showtray.pbitm \
|
|
$(BITMAPS)/xwords4.pbitm \
|
|
|
|
# INCLUDES += -I/usr/local/share/palmdev/sdk-5r3/Extensions/ExpansionMgr
|
|
INCLUDES += -I/usr/local/share/palmdev/sdk-5r3/include/Extensions/Bluetooth
|
|
|
|
XWFEATURE_FIVEWAY = -DXWFEATURE_FIVEWAY -DKEYBOARD_NAV
|
|
|
|
ifneq (x$(XWFEATURE_FIVEWAY)x, xx)
|
|
INCLUDES += -I/usr/local/share/palmdev/Handspring5
|
|
INCLUDES += -I/usr/local/share/palmdev/Handspring5/68K
|
|
# INCLUDES += -I/usr/local/share/palmdev/duoIncs
|
|
# INCLUDES += -I/usr/local/share/palmdev/duoIncs/68K
|
|
# INCLUDES += -I/usr/local/share/palmdev/duoIncs/68K/System
|
|
# INCLUDES += -I/usr/local/share/palmdev/duoIncs/Common/System
|
|
|
|
MYDEFS_68K += $(XWFEATURE_FIVEWAY)
|
|
MYDEFS_ARM += $(XWFEATURE_FIVEWAY)
|
|
|
|
FNAVS = ./fnav03e9.bin
|
|
endif
|
|
|
|
INCLUDES += -I/usr/local/share/palmdev/sdk-5r3/include/SonyIncs
|
|
INCLUDES += -I/usr/local/share/palmdev/sdk-5r3/include/SonyIncs/System
|
|
INCLUDES += -I/usr/local/share/palmdev/sdk-5r3/include/SonyIncs/Libraries
|
|
MYDEFS_68K += -DCPU_TYPE=CPU_68K
|
|
|
|
include ../common/config.mk
|
|
|
|
OBJS_68K = $(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 \
|
|
$(COMMONOBJ)
|
|
|
|
# if BUILD_AS_PNOLET is defined and FEATURE_PNOAND68K isn't, exclude
|
|
# all but enter68k.o from the 68K part of the binary (code resources).
|
|
ifdef BUILD_AS_PNOLET
|
|
OBJS = $(PLATFORM)/enter68k.o
|
|
PNOLET = pnolet
|
|
endif
|
|
ifndef BUILD_AS_PNOLET
|
|
OBJS += $(OBJS_68K)
|
|
else
|
|
ifdef FEATURE_PNOAND68K
|
|
OBJS += $(OBJS_68K)
|
|
endif
|
|
endif
|
|
|
|
MYDEFS_68K += $(FEATURE_PNOAND68K)
|
|
MYDEFS_ARM += $(FEATURE_PNOAND68K)
|
|
|
|
include ../common/rules.mk
|
|
|
|
CSFLAGS += -S -Wall -DAPPID=\'$(APPID)\' $(MYDEFS_68K) $(INCLUDES)
|
|
CFLAGS += -Wall -DAPPID=\'$(APPID)\' $(MYDEFS_68K) $(INCLUDES)
|
|
# In the non-debug mode (for which DONT_OMIT is undefined) build without
|
|
# the frame pointer.
|
|
|
|
$(TARGET): $(PLATFORM)/objs.prc $(PLATFORM)/res.prc
|
|
$(PAR) -c -a 'resource|backup' -v 4 $@ $(NAME) $(TYPE) $(APPID) $^
|
|
ifdef XW_UPLOAD_SCRIPT
|
|
$(XW_UPLOAD_SCRIPT) $@
|
|
endif
|
|
|
|
solo:
|
|
$(MAKE) XWFEATURE_STANDALONE_ONLY=1
|
|
|
|
gremlins:
|
|
$(MAKE) PASSTHRU="-DDEBUG -DMEM_DEBUG -DFOR_GREMLINS" DONT_OMIT=true
|
|
|
|
#
|
|
REL=405
|
|
REL_PATH=public_html/xwords/4.0.5
|
|
ship-all:
|
|
make clean; make; \
|
|
make; (cd xwconfig && make); \
|
|
for l in fr_FR en_US es_ES es_CT sv_SE de_DE ; do \
|
|
make clean; \
|
|
make LANG=$$l; \
|
|
zip -j xw$(REL)_$$l.zip xwconfig/xwconfig.prc $(TARGET); \
|
|
done
|
|
|
|
.S.o:
|
|
$(CC) $(TARGETFLAGS) -c $<
|
|
|
|
.c.s:
|
|
$(CC) $(CSFLAGS) $<
|
|
|
|
$(BITMAPS)/%.pbitm: $(BITMAPS)/%.bmp
|
|
bmtoa $< > $@
|
|
|
|
$(PLATFORM)/objs.prc: LocalizedStrIncludes.h $(OBJS) gdbload
|
|
@rm -f *.grc *.bin
|
|
ifeq ($(ARCH),ARM_ONLY)
|
|
$(CC) $(OBJS) -o tmp.o
|
|
$(OBJ-RES) tmp.o
|
|
rm -f tmp.o
|
|
else
|
|
$(MULTILINK) $(MULTILINK_OPTIONS) $(OBJS)
|
|
endif
|
|
$(PAR) -c -a resource $(PLATFORM)/objs.prc Code rsrc rsrc *.grc
|
|
@rm -f *.grc *.bin
|
|
|
|
|
|
$(PLATFORM)/res.prc: xwords4.rcp $(HEADERS) StrL03e8.bin $(FNAVS) $(PNOLET)
|
|
$(PILRC) $< >/dev/null
|
|
$(PAR) -c -a 'resource' $@ Rsrc rsrc rsrc *.bin
|
|
rm -f $< *.bin
|
|
|
|
xwords4.rcp: l10n/xwords4_$(LANG).rcp.pre xwords4defines.h $(BITMAP_RSRCS)
|
|
gcc -x c -E -P $(INCLUDES) $(MYDEFS_68K) $(DEBUG) \
|
|
-DICONTEXT=\"$(ICONTEXT)\" $< > $@
|
|
|
|
# LocalizedStrIncludes.h: SVN_REV can change, but I don't have a way
|
|
# to express a dependency on it. If it does change, strings can wind
|
|
# up with offsets out of sync with the .h file. Not sure what to do
|
|
# about this.... Clean builds are probably a safe fallback.
|
|
|
|
LocalizedStrIncludes.h StrL03e8.bin: \
|
|
./l10n/StrRes_$(LANG).pre ./l10n/mkstrsres.c
|
|
gcc $(CFLAGS) $(FORMATDEFINES) \
|
|
-DLANGSTRFILE=\"$<\" ./l10n/mkstrsres.c \
|
|
-o mkstrsres
|
|
./mkstrsres StrL03e8.bin LocalizedStrIncludes.h
|
|
rm -f mkstrsres
|
|
|
|
namehash: namehash.c ownerhash.h
|
|
fnavgen: fnavgen.c
|
|
gcc $< -o $@
|
|
|
|
$(FNAVS): ./fnavgen
|
|
./$<
|
|
|
|
ifneq (x$(BUILD_AS_PNOLET)x, xx)
|
|
.PHONY : pnolet
|
|
|
|
pnolet: LocalizedStrIncludes.h
|
|
$(MAKE) -f Makefile.PNO MEMDEBUG=$(MEMDEBUG) MYDEFS="$(MYDEFS_ARM) -DAPPID=\'$(APPID)\' \
|
|
-DAPPNAME=\\\"$(APPNAME)\\\""
|
|
endif
|
|
|
|
# GDB seems confused by relative paths these days. So generate the
|
|
# file rather than trying to keep in in cvs.
|
|
gdbload:
|
|
echo "source app.gdb" > $@
|
|
echo "load-segments" >> $@
|
|
echo "dir $(shell pwd)" >> $@
|
|
echo "dir $(shell pwd)/../common" >> $@
|
|
|
|
clean:
|
|
cd ../common && $(MAKE) PLATFORM=$(PLATFORM) $@
|
|
rm -rf $(PLATFORM)/*.[oa] xwords4 *.bin *.stamp *.[pg]rc \
|
|
xwords4.rcp *.btxt $(PLATFORM)/* LocalizedStrIncludes.h gdbload
|
|
ifneq (x$(BUILD_AS_PNOLET)x, xx)
|
|
$(MAKE) -f Makefile.PNO clean
|
|
endif
|
|
|
|
#cmod03E8.bin: palmdraw.c Makefile
|
|
# $(CC) -O2 -nostartfiles $(INCLUDES) $(MYDEFS) -o tmp $<
|
|
# $(OBJRES) tmp
|
|
# mv code0001.tmp.grc $@ ; rm *.tmp.grc
|
|
|
|
help:
|
|
@echo "make [ARCH=(ARM_ONLY|68K_ONLY|SONY|COMBINED)] [MEMDEBUG=TRUE] [LANG=fr_FR|en_US|es_ES|es_CT|sv_SE|de_DE] [clean]"
|
|
@echo OR
|
|
@echo "make ship-all"
|
|
@echo OR
|
|
@echo "make gremlins"
|