mirror of
git://xwords.git.sourceforge.net/gitroot/xwords/xwords
synced 2024-12-29 10:26:36 +01:00
ad78ec1fd8
while heartbeat feature was enabled. Fixed the problem on Linux, but experience on Treo650 is still better without HB feature, so turning it off on Palm. This seems ready for beta, but will test a bit more.
337 lines
9.7 KiB
Makefile
337 lines
9.7 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
|
|
SVNREV = $(shell svnversion -n .. | tr ':' '_')
|
|
|
|
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_$(SVNREV).prc
|
|
else
|
|
ifeq ($(ARCH),68K_ONLY)
|
|
PLATFORM := $(PLATFORM)_68konly
|
|
TARGET=$(PLATFORM)/xw4_68K_$(SVNREV).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_$(SVNREV).prc
|
|
else
|
|
ifeq ($(ARCH),COMBINED)
|
|
PLATFORM := $(PLATFORM)_combined
|
|
BUILD_AS_PNOLET = 1
|
|
FEATURE_PNOAND68K = -DFEATURE_PNOAND68K
|
|
TARGET=$(PLATFORM)/xw4_COMB_$(SVNREV).prc
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
PLATFORM := $(PLATFORM)_$(shell echo $(LANG) | tr [A-Z] [a-z])
|
|
|
|
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
|
|
|
|
MYDEFS_COMMON = $(PASSTHRU) -DXW_FEATURE_UTILS -DPOINTER_SUPPORT \
|
|
-DKEY_SUPPORT -DOVERRIDE_EDGE_FOR_INDEX -DCOLOR_SUPPORT \
|
|
-DSHOW_PROGRESS $(HASHDEF) -DNO_REG_REQUIRED -DPERIMETER_FOCUS
|
|
|
|
# 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
|
|
BLUETOOTH = -DXWFEATURE_BLUETOOTH -DBT_USE_L2CAP
|
|
# -DCOMMS_HEARTBEAT
|
|
#BLUETOOTH = -DXWFEATURE_BLUETOOTH -DBT_USE_RFCOMM
|
|
MYDEFS_COMMON += $(BLUETOOTH)
|
|
|
|
# Add menu allowing to choose to run 68K or ARM
|
|
ifeq ($(ARCH),COMBINED)
|
|
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
|
|
ifdef BLUETOOTH
|
|
INCLUDES += -I/usr/local/share/palmdev/sdk-5r3/include/Extensions/Bluetooth
|
|
endif
|
|
|
|
XWFEATURE_FIVEWAY = -DXWFEATURE_FIVEWAY -DKEYBOARD_NAV
|
|
XWFEATURE_FIVEWAY += -DDO_TUNGSTEN_FIVEWAY
|
|
|
|
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)
|
|
|
|
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 \
|
|
$(PLATFORM)/palmdbg.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: $(PLATFORM)/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.
|
|
|
|
$(PLATFORM)/LocalizedStrIncludes.h StrL03e8.bin: \
|
|
./l10n/StrRes_$(LANG).pre ./l10n/mkstrsres.c
|
|
gcc $(CFLAGS) $(FORMATDEFINES) \
|
|
-DLANGSTRFILE=\"$<\" ./l10n/mkstrsres.c \
|
|
-o mkstrsres
|
|
mkdir -p $(PLATFORM)
|
|
./mkstrsres StrL03e8.bin $(PLATFORM)/LocalizedStrIncludes.h
|
|
rm -f mkstrsres
|
|
|
|
ifneq (x$(BUILD_AS_PNOLET)x, xx)
|
|
.PHONY : pnolet
|
|
|
|
pnolet: $(PLATFORM)/LocalizedStrIncludes.h
|
|
$(MAKE) -f Makefile.PNO MEMDEBUG=$(MEMDEBUG) PLATFORM=$(PLATFORM) \
|
|
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)/* $(PLATFORM)/LocalizedStrIncludes.h \
|
|
gdbload
|
|
ifneq (x$(BUILD_AS_PNOLET)x, xx)
|
|
$(MAKE) -f Makefile.PNO PLATFORM=$(PLATFORM) 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"
|