xwords/palm/Makefile

323 lines
8.9 KiB
Makefile
Raw Normal View History

2006-07-28 09:53:18 +02:00
# -*- mode: Makefile; compile-command: "make ARCH=68K_ONLY MEMDEBUG=TRUE"; -*-
# Copyright 2002 by Eric House (xwords@eehouse.org). All rights reserved.
2003-11-16 20:23:48 +01:00
#
# 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)
PLATFORM := $(PLATFORM)_memdebug
CFLAGS += -DMEM_DEBUG -DDEBUG -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
2003-11-16 20:23:48 +01:00
LANG=en_US
ROOTNAME = $(NAME)
2003-11-16 20:23:48 +01:00
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
2005-05-01 19:39:09 +02:00
TARGET=$(PLATFORM)/xw4_ARM.prc
else
ifeq ($(ARCH),68K_ONLY)
PLATFORM := $(PLATFORM)_68konly
2005-05-01 19:39:09 +02:00
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
2005-05-01 19:39:09 +02:00
TARGET=$(PLATFORM)/xw4_SONY.prc
else
ifeq ($(ARCH),COMBINED)
PLATFORM := $(PLATFORM)_combined
2004-10-16 07:05:27 +02:00
BUILD_AS_PNOLET = 1
FEATURE_PNOAND68K = -DFEATURE_PNOAND68K
2005-05-01 19:39:09 +02:00
TARGET=$(PLATFORM)/xwords4.prc
endif
endif
endif
endif
APPNAME = "$(NAME)"
2003-11-16 20:23:48 +01:00
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.
###############################################################################
2003-11-16 20:23:48 +01:00
PAR = par
PILRC = pilrc
BUILD-PRC = build-prc
OBJ-RES = m68k-palmos-obj-res
2003-11-16 20:23:48 +01:00
MULTILINK_OPTIONS = -basename $(ROOTNAME) -segmentsize 27k -g \
-deadstrip -verbose -gdb-script app.gdb
ifneq (x$(OWNERNAME)x,xx)
HASHDEF = -DOWNER_HASH=$$(./namehash $(OWNERNAME))
endif
2004-09-24 03:21:42 +02:00
MYDEFS_COMMON = $(PASSTHRU) -DXW_FEATURE_UTILS -DPOINTER_SUPPORT \
-DKEY_SUPPORT -DOVERRIDE_EDGE_FOR_INDEX -DCOLOR_SUPPORT \
-DSHOW_PROGRESS $(HASHDEF) -DNO_REG_REQUIRED
2003-11-16 20:23:48 +01:00
# turn on letting users pick tiles "face-up"
2004-09-24 03:21:42 +02:00
MYDEFS_COMMON += -DFEATURE_TRAY_EDIT
2004-09-19 05:17:27 +02:00
2004-07-01 03:15:15 +02:00
# turn on limits to searches on board and in tray (number of tiles to
# use)
2004-09-24 03:21:42 +02:00
MYDEFS_COMMON += -DXWFEATURE_SEARCHLIMIT
2004-07-01 03:15:15 +02:00
2004-09-24 03:21:42 +02:00
#MYDEFS_COMMON += -DXWFEATURE_HINT_CONFIG
2004-09-19 05:17:27 +02:00
# Turn on network play over IP via cellular modem. Very much
# experimental at this point!
# MYDEFS_COMMON += -DBEYOND_IR
2003-11-16 20:23:48 +01:00
# turn on bluetooth comms option -- off by default until ready
# MYDEFS_COMMON += -DXWFEATURE_PALM_BLUETOOTH
# For Danish and perhaps other languages, custom-measure glyph height
# so that overtall letters have a chance of fitting.
MYDEFS_COMMON += -DTALL_FONTS
2003-12-10 06:52:39 +01:00
# 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.
2004-09-24 03:21:42 +02:00
MYDEFS_COMMON += -DNODE_CAN_4
2003-12-10 06:52:39 +01:00
MYDEFS_COMMON += -DSVN_REV=\"$(shell svnversion -n .)\"
2003-11-16 20:23:48 +01:00
ifdef XWFEATURE_STANDALONE_ONLY
2004-09-24 03:21:42 +02:00
MYDEFS_COMMON += -DXWFEATURE_STANDALONE_ONLY
2003-11-16 20:23:48 +01:00
else
2004-09-24 03:21:42 +02:00
MYDEFS_COMMON += -DIR_SUPPORT -DIR_EXCHMGR
2003-11-16 20:23:48 +01:00
endif
2004-09-24 03:21:42 +02:00
MYDEFS_ARM = -D__LITTLE_ENDIAN -DXW_TARGET_PNO $(MYDEFS_COMMON)
2004-10-13 02:59:01 +02:00
MYDEFS_68K = -DPLATFORM_PALM -D__BIG_ENDIAN $(MYDEFS_COMMON) -DAPPNAME=\"$(APPNAME)\"
2004-09-24 03:21:42 +02:00
2003-11-16 20:23:48 +01:00
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
2003-11-16 20:23:48 +01:00
2004-09-24 03:21:42 +02:00
# HS_DUO_SUPPORT = 1
2003-11-16 20:23:48 +01:00
ifneq (x$(HS_DUO_SUPPORT)x, xx)
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
2004-09-24 03:21:42 +02:00
MYDEFS_68K += -DHS_DUO_SUPPORT
MYDEFS_ARM += -DHS_DUO_SUPPORT
2003-11-16 20:23:48 +01:00
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
2003-11-16 20:23:48 +01:00
include ../common/config.mk
2004-09-24 03:21:42 +02:00
OBJS_68K = $(PLATFORM)/palmmain.o \
2003-11-16 20:23:48 +01:00
$(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 \
2005-04-03 03:39:08 +02:00
$(PLATFORM)/palmip.o \
$(PLATFORM)/palmbt.o \
2003-11-16 20:23:48 +01:00
$(PLATFORM)/prefsdlg.o \
$(PLATFORM)/connsdlg.o \
$(COMMONOBJ)
2004-09-24 03:21:42 +02:00
# 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
2004-09-24 03:21:42 +02:00
OBJS = $(PLATFORM)/enter68k.o
PNOLET = pnolet
endif
ifndef BUILD_AS_PNOLET
2004-09-24 03:21:42 +02:00
OBJS += $(OBJS_68K)
2004-09-17 09:09:40 +02:00
else
ifdef FEATURE_PNOAND68K
2004-09-24 03:21:42 +02:00
OBJS += $(OBJS_68K)
2004-09-17 09:09:40 +02:00
endif
2004-09-24 03:21:42 +02:00
endif
MYDEFS_68K += $(FEATURE_PNOAND68K)
MYDEFS_ARM += $(FEATURE_PNOAND68K)
2003-11-16 20:23:48 +01:00
include ../common/rules.mk
CSFLAGS += -S -Wall -DAPPID=\'$(APPID)\' $(MYDEFS_68K) $(INCLUDES)
CFLAGS += -Wall -DAPPID=\'$(APPID)\' $(MYDEFS_68K) $(INCLUDES)
2004-09-24 03:21:42 +02:00
# In the non-debug mode (for which DONT_OMIT is undefined) build without
# the frame pointer.
2003-11-16 20:23:48 +01:00
$(TARGET): $(PLATFORM)/objs.prc $(PLATFORM)/res.prc
$(PAR) -c -a 'resource|backup' -v 4 $@ $(NAME) $(TYPE) $(APPID) $^
2005-04-03 03:39:08 +02:00
ifdef XW_UPLOAD_CMD
zip $(TARGET).zip $(TARGET)
$(XW_UPLOAD_CMD) $(TARGET)
$(XW_UPLOAD_CMD) $(TARGET).zip
endif
2003-11-16 20:23:48 +01:00
solo:
$(MAKE) XWFEATURE_STANDALONE_ONLY=1
gremlins:
2004-09-24 03:21:42 +02:00
$(MAKE) PASSTHRU="-DDEBUG -DMEM_DEBUG -DFOR_GREMLINS" DONT_OMIT=true
2003-11-16 20:23:48 +01:00
#
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
2003-11-16 20:23:48 +01:00
$(MULTILINK) $(MULTILINK_OPTIONS) $(OBJS)
endif
2003-11-16 20:23:48 +01:00
$(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)
2003-11-16 20:23:48 +01:00
$(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)
2004-09-24 03:21:42 +02:00
gcc -x c -E -P $(INCLUDES) $(MYDEFS_68K) \
2003-11-16 20:23:48 +01:00
-DICONTEXT=\"$(ICONTEXT)\" $< > $@
2004-09-24 03:21:42 +02:00
LocalizedStrIncludes.h StrL03e8.bin: ./l10n/StrRes_$(LANG).pre ./l10n/mkstrsres.c
2003-11-16 20:23:48 +01:00
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
./$<
2004-09-17 09:09:40 +02:00
ifneq (x$(BUILD_AS_PNOLET)x, xx)
.PHONY : pnolet
2004-09-19 05:17:27 +02:00
pnolet: LocalizedStrIncludes.h
$(MAKE) -f Makefile.PNO MEMDEBUG=$(MEMDEBUG) MYDEFS="$(MYDEFS_ARM) -DAPPID=\'$(APPID)\' \
2004-10-13 02:59:01 +02:00
-DAPPNAME=\\\"$(APPNAME)\\\""
2004-09-17 09:09:40 +02:00
endif
2003-11-16 20:23:48 +01:00
# 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
2004-09-19 05:17:27 +02:00
ifneq (x$(BUILD_AS_PNOLET)x, xx)
$(MAKE) -f Makefile.PNO clean
endif
2003-11-16 20:23:48 +01:00
#cmod03E8.bin: palmdraw.c Makefile
2004-09-24 03:21:42 +02:00
# $(CC) -O2 -nostartfiles $(INCLUDES) $(MYDEFS) -o tmp $<
2003-11-16 20:23:48 +01:00
# $(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"