Committed William Osborne's wxPalmOS port

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29996 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
2004-10-19 13:40:30 +00:00
parent 698b34facd
commit ffecfa5aeb
260 changed files with 40716 additions and 44 deletions

22
build/palmos/.cdtproject Normal file
View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<cdtproject id="org.eclipse.cdt.make.core.make">
<extension id="org.eclipse.cdt.make.core.MakeScannerProvider" point="org.eclipse.cdt.core.ScannerInfoProvider"/>
<extension id="org.eclipse.cdt.core.Elf" point="org.eclipse.cdt.core.BinaryParser"/>
<data>
<item id="org.eclipse.cdt.make.core.makeScannerInfo">
<includePath path="$(SDK6_LOCATION)headers"/>
<includePath path="$(SDK6_LOCATION)headers\EntryNums"/>
<includePath path="$(SDK6_LOCATION)headers\posix"/>
<includePath path="$(SDK6_LOCATION)headers\posix\arm"/>
<includePath path="$(SDK6_LOCATION)headers\posix\arpa"/>
<includePath path="$(SDK6_LOCATION)headers\posix\machine"/>
<includePath path="$(SDK6_LOCATION)headers\posix\machine\arm"/>
<includePath path="$(SDK6_LOCATION)headers\posix\machine\x86"/>
<includePath path="$(SDK6_LOCATION)headers\posix\net"/>
<includePath path="$(SDK6_LOCATION)headers\posix\netinet"/>
<includePath path="$(SDK6_LOCATION)headers\posix\sys"/>
<includePath path="$(SDK6_LOCATION)headers\streams"/>
<definedSymbol symbol="__arm__"/>
</item>
</data>
</cdtproject>

126
build/palmos/.project Normal file
View File

@@ -0,0 +1,126 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>wxWidgets</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>com.palmsource.eclipse.palmoscore.palmOSMakeBuilder</name>
<arguments>
<dictionary>
<key>CREATOR_ID</key>
<value>STRT</value>
</dictionary>
<dictionary>
<key>DB_HIDDEN</key>
<value>false</value>
</dictionary>
<dictionary>
<key>TARGET</key>
<value>Simulator</value>
</dictionary>
<dictionary>
<key>DB_TYPE</key>
<value>appl</value>
</dictionary>
<dictionary>
<key>VERSION</key>
<value>1</value>
</dictionary>
<dictionary>
<key>SDK</key>
<value>com.palmsource.eclipse.sdk.palmos6</value>
</dictionary>
<dictionary>
<key>DB_RESET_INSTALL</key>
<value>false</value>
</dictionary>
<dictionary>
<key>APP_NAME</key>
<value>wxWidgets</value>
</dictionary>
<dictionary>
<key>PROJECT_NAME</key>
<value>wxWidgets</value>
</dictionary>
<dictionary>
<key>OS_API</key>
<value>Protein</value>
</dictionary>
<dictionary>
<key>PROJECT_TYPE</key>
<value>appl</value>
</dictionary>
<dictionary>
<key>DB_BACKUP</key>
<value>true</value>
</dictionary>
<dictionary>
<key>DB_PREVENT_COPY</key>
<value>false</value>
</dictionary>
<dictionary>
<key>DEBUG_OR_RELEASE</key>
<value>Debug</value>
</dictionary>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.make.core.makeBuilder</name>
<arguments>
<dictionary>
<key>org.eclipse.cdt.core.errorOutputParser</key>
<value>org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.VCErrorParser;</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
<value>clean all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.incrementalBuildTarget</key>
<value>all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
<value>false</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildLocation</key>
<value></value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.buildCommand</key>
<value>make</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.enabledIncrementalBuild</key>
<value>true</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
<value>all</value>
</dictionary>
<dictionary>
<key>org.eclipse.cdt.make.core.stopOnError</key>
<value>false</value>
</dictionary>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.palmsource.eclipse.palmos6dev.palmOSProteinNature</nature>
<nature>com.palmsource.eclipse.palmoscore.palmOSNature</nature>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.make.core.makeNature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
</natures>
</projectDescription>

View File

@@ -0,0 +1,72 @@
# This file auto-generated by Palm OS Make builder. Don't modify directly!!!
# This value is unescaped. Either quote the value or escape special characters when you use it.
ifeq ($(TOOLS_DIR), )
TOOLS_DIR = C:/Program Files/PalmSource/Palm OS Developer Suite/PalmOSTools/
endif
# This value is unescaped. Either quote the value or escape special characters when you use it.
ifeq ($(SDK_LOCATION), )
SDK_LOCATION = C:/Program Files/PalmSource/Palm OS Developer Suite/sdk-6/
endif
ifeq ($(SDK_VERSION), )
SDK_VERSION = sdk-6
endif
ifeq ($(CREATOR_ID), )
CREATOR_ID = STRT
endif
ifeq ($(DB_HIDDEN), )
DB_HIDDEN = false
endif
ifeq ($(TARGET), )
TARGET = Simulator
endif
ifeq ($(DB_TYPE), )
DB_TYPE = appl
endif
ifeq ($(VERSION), )
VERSION = 1
endif
ifeq ($(DB_RESET_INSTALL), )
DB_RESET_INSTALL = false
endif
ifeq ($(SDK), )
SDK = com.palmsource.eclipse.sdk.palmos6
endif
ifeq ($(APP_NAME), )
APP_NAME = wxWidgets
endif
ifeq ($(OS_API), )
OS_API = Protein
endif
ifeq ($(PROJECT_NAME), )
PROJECT_NAME = wxWidgets
endif
ifeq ($(PROJECT_TYPE), )
PROJECT_TYPE = appl
endif
ifeq ($(DB_BACKUP), )
DB_BACKUP = true
endif
ifeq ($(DB_PREVENT_COPY), )
DB_PREVENT_COPY = false
endif
ifeq ($(DEBUG_OR_RELEASE), )
DEBUG_OR_RELEASE = Debug
endif

456
build/palmos/makefile Normal file
View File

@@ -0,0 +1,456 @@
## --------------------------------------------------------------------------
# Palm OS Generic Protein Makefile for Eclipse v1.0.0
#
# Fill in this file to specify your project and the source that you want
# to build, and the settings involved in the build. The makefile-engine.mk
# will then do the hard work of the makefile and dependency handling.
#
# After starting a new project, please remember the following steps...
# 1. Add all sources and resources in SOURCES and RESOURCES
# 2. Review the other settings as needed.
#
## --------------------------------------------------------------------------
SHELL = /bin/sh
## conditionally include an auto-generated.mk for dynamic definitions
-include auto-generated.mk
## --------------------------------------------------------------------------
# Set up the artifact name.
# The database name and other file names are based on the application name
## --------------------------------------------------------------------------
ARTIFACT_NAME = wxWidgets
EMPTY =
SPACE =$(EMPTY) $(EMPTY)
ESCAPED_ARTIFACT_NAME = $(subst $(SPACE),\ ,$(ARTIFACT_NAME))
PROJECT_NAME = wxWidgets
PRC_NAME = wxWidgets.prc
## --------------------------------------------------------------------------
# Sources and Resources and Definition files
# List all the sources (.c/.cpp), resources (.xrd), and definition file (.sld)
# in your project. Use project relative path names with forward slashes
# (src/code.cpp). Please do not use spaces in directory or file names.
#
# A note about XRD resource files: If you have existing .rsrc or .rcp files,
# refer to the documentation for the GenerateXRD tool to convert them into
# XRD files for use with all Palm OS SDKs.
## --------------------------------------------------------------------------
# TODO: Update all sources and resources
SOURCES = ../../samples/minimal/minimal.cpp \
../../src/common/accesscmn.cpp \
../../src/common/appbase.cpp \
../../src/common/appcmn.cpp \
../../src/common/artprov.cpp \
../../src/common/artstd.cpp \
../../src/common/bmpbase.cpp \
../../src/common/bookctrl.cpp \
../../src/common/choiccmn.cpp \
../../src/common/clipcmn.cpp \
../../src/common/clntdata.cpp \
../../src/common/cmdproc.cpp \
../../src/common/cmndata.cpp \
../../src/common/config.cpp \
../../src/common/containr.cpp \
../../src/common/cshelp.cpp \
../../src/common/ctrlcmn.cpp \
../../src/common/ctrlsub.cpp \
../../src/common/datacmn.cpp \
../../src/common/datetime.cpp \
../../src/common/datstrm.cpp \
../../src/common/db.cpp \
../../src/common/dbgrid.cpp \
../../src/common/dbtable.cpp \
../../src/common/dcbase.cpp \
../../src/common/dircmn.cpp \
../../src/common/dlgcmn.cpp \
../../src/common/dndcmn.cpp \
../../src/common/dobjcmn.cpp \
../../src/common/docmdi.cpp \
../../src/common/docview.cpp \
../../src/common/dpycmn.cpp \
../../src/common/dseldlg.cpp \
../../src/common/dynarray.cpp \
../../src/common/dynlib.cpp \
../../src/common/dynload.cpp \
../../src/common/effects.cpp \
../../src/common/encconv.cpp \
../../src/common/event.cpp \
../../src/common/fddlgcmn.cpp \
../../src/common/ffile.cpp \
../../src/common/file.cpp \
../../src/common/fileconf.cpp \
../../src/common/filesys.cpp \
../../src/common/fldlgcmn.cpp \
../../src/common/fmapbase.cpp \
../../src/common/fontcmn.cpp \
../../src/common/fontmap.cpp \
../../src/common/framecmn.cpp \
../../src/common/fs_inet.cpp \
../../src/common/fs_mem.cpp \
../../src/common/fs_zip.cpp \
../../src/common/ftp.cpp \
../../src/common/gaugecmn.cpp \
../../src/common/gbsizer.cpp \
../../src/common/gdicmn.cpp \
../../src/common/geometry.cpp \
../../src/common/gifdecod.cpp \
../../src/common/hash.cpp \
../../src/common/hashmap.cpp \
../../src/common/helpbase.cpp \
../../src/common/http.cpp \
../../src/common/iconbndl.cpp \
../../src/common/imagall.cpp \
../../src/common/imagbmp.cpp \
../../src/common/image.cpp \
../../src/common/imagfill.cpp \
../../src/common/imaggif.cpp \
../../src/common/imagiff.cpp \
../../src/common/imagjpeg.cpp \
../../src/common/imagpcx.cpp \
../../src/common/imagpng.cpp \
../../src/common/imagpnm.cpp \
../../src/common/imagtiff.cpp \
../../src/common/imagxpm.cpp \
../../src/common/init.cpp \
../../src/common/intl.cpp \
../../src/common/ipcbase.cpp \
../../src/common/layout.cpp \
../../src/common/lboxcmn.cpp \
../../src/common/list.cpp \
../../src/common/log.cpp \
../../src/common/longlong.cpp \
../../src/common/matrix.cpp \
../../src/common/memory.cpp \
../../src/common/menucmn.cpp \
../../src/common/mimecmn.cpp \
../../src/common/module.cpp \
../../src/common/msgout.cpp \
../../src/common/mstream.cpp \
../../src/common/nbkbase.cpp \
../../src/common/object.cpp \
../../src/common/paper.cpp \
../../src/common/popupcmn.cpp \
../../src/common/prntbase.cpp \
../../src/common/process.cpp \
../../src/common/protocol.cpp \
../../src/common/quantize.cpp \
../../src/common/radiocmn.cpp \
../../src/common/regex.cpp \
../../src/common/rendcmn.cpp \
../../src/common/rgncmn.cpp \
../../src/common/sckaddr.cpp \
../../src/common/sckfile.cpp \
../../src/common/sckipc.cpp \
../../src/common/sckstrm.cpp \
../../src/common/settcmn.cpp \
../../src/common/sizer.cpp \
../../src/common/socket.cpp \
../../src/common/statbar.cpp \
../../src/common/strconv.cpp \
../../src/common/stream.cpp \
../../src/common/string.cpp \
../../src/common/sysopt.cpp \
../../src/common/taskbarcmn.cpp \
../../src/common/tbarbase.cpp \
../../src/common/textbuf.cpp \
../../src/common/textcmn.cpp \
../../src/common/textfile.cpp \
../../src/common/timercmn.cpp \
../../src/common/tokenzr.cpp \
../../src/common/toplvcmn.cpp \
../../src/common/treebase.cpp \
../../src/common/txtstrm.cpp \
../../src/common/url.cpp \
../../src/common/utilscmn.cpp \
../../src/common/valgen.cpp \
../../src/common/validate.cpp \
../../src/common/valtext.cpp \
../../src/common/variant.cpp \
../../src/common/wfstream.cpp \
../../src/common/wincmn.cpp \
../../src/common/wxchar.cpp \
../../src/common/xpmdecod.cpp \
../../src/common/xti.cpp \
../../src/common/xtistrm.cpp \
../../src/common/xtixml.cpp \
../../src/common/zipstrm.cpp \
../../src/common/zstream.cpp \
../../src/generic/renderg.cpp \
../../src/generic/statusbr.cpp \
../../src/palmos/accel.cpp \
../../src/palmos/app.cpp \
../../src/palmos/base.cpp \
../../src/palmos/bitmap.cpp \
../../src/palmos/bmpbuttn.cpp \
../../src/palmos/brush.cpp \
../../src/palmos/button.cpp \
../../src/palmos/caret.cpp \
../../src/palmos/checkbox.cpp \
../../src/palmos/checklst.cpp \
../../src/palmos/choice.cpp \
../../src/palmos/clipbrd.cpp \
../../src/palmos/colordlg.cpp \
../../src/palmos/colour.cpp \
../../src/palmos/combobox.cpp \
../../src/palmos/control.cpp \
../../src/palmos/crashrpt.cpp \
../../src/palmos/cursor.cpp \
../../src/palmos/data.cpp \
../../src/palmos/dc.cpp \
../../src/palmos/dcclient.cpp \
../../src/palmos/dcmemory.cpp \
../../src/palmos/dcprint.cpp \
../../src/palmos/dcscreen.cpp \
../../src/palmos/dialog.cpp \
../../src/palmos/dialup.cpp \
../../src/palmos/dib.cpp \
../../src/palmos/dir.cpp \
../../src/palmos/dirdlg.cpp \
../../src/palmos/display.cpp \
../../src/palmos/dragimag.cpp \
../../src/palmos/dummy.cpp \
../../src/palmos/enhmeta.cpp \
../../src/palmos/evtloop.cpp \
../../src/palmos/fdrepdlg.cpp \
../../src/palmos/filedlg.cpp \
../../src/palmos/font.cpp \
../../src/palmos/fontdlg.cpp \
../../src/palmos/fontenum.cpp \
../../src/palmos/fontutil.cpp \
../../src/palmos/frame.cpp \
../../src/palmos/gauge.cpp \
../../src/palmos/gdiimage.cpp \
../../src/palmos/gdiobj.cpp \
../../src/palmos/glcanvas.cpp \
../../src/palmos/help.cpp \
../../src/palmos/icon.cpp \
../../src/palmos/imaglist.cpp \
../../src/palmos/iniconf.cpp \
../../src/palmos/joystick.cpp \
../../src/palmos/listbox.cpp \
../../src/palmos/listctrl.cpp \
../../src/palmos/main.cpp \
../../src/palmos/mdi.cpp \
../../src/palmos/menu.cpp \
../../src/palmos/menuitem.cpp \
../../src/palmos/metafile.cpp \
../../src/palmos/mimetype.cpp \
../../src/palmos/minifram.cpp \
../../src/palmos/msgdlg.cpp \
../../src/palmos/mslu.cpp \
../../src/palmos/nativdlg.cpp \
../../src/palmos/notebook.cpp \
../../src/palmos/ownerdrw.cpp \
../../src/palmos/palette.cpp \
../../src/palmos/pen.cpp \
../../src/palmos/popupwin.cpp \
../../src/palmos/printdlg.cpp \
../../src/palmos/printpalm.cpp \
../../src/palmos/radiobox.cpp \
../../src/palmos/radiobut.cpp \
../../src/palmos/regconf.cpp \
../../src/palmos/region.cpp \
../../src/palmos/registry.cpp \
../../src/palmos/renderer.cpp \
../../src/palmos/scrolbar.cpp \
../../src/palmos/settings.cpp \
../../src/palmos/slider.cpp \
../../src/palmos/snglinst.cpp \
../../src/palmos/sound.cpp \
../../src/palmos/spinbutt.cpp \
../../src/palmos/spinctrl.cpp \
../../src/palmos/statbmp.cpp \
../../src/palmos/statbox.cpp \
../../src/palmos/statusbar.cpp \
../../src/palmos/statline.cpp \
../../src/palmos/stattext.cpp \
../../src/palmos/taskbar.cpp \
../../src/palmos/toolbar.cpp \
../../src/palmos/textctrl.cpp \
../../src/palmos/tglbtn.cpp \
../../src/palmos/thread.cpp \
../../src/palmos/timer.cpp \
../../src/palmos/tooltip.cpp \
../../src/palmos/toplevel.cpp \
../../src/palmos/treectrl.cpp \
../../src/palmos/utils.cpp \
../../src/palmos/utilsexc.cpp \
../../src/palmos/utilsgui.cpp \
../../src/palmos/volume.cpp \
../../src/palmos/window.cpp
RESOURCES = ../../include/wx/palmos/wxWidgets.xrd ../../include/wx/palmos/Version.xrd
DEFS_FILE = ../../include/wx/palmos/wxWidgets.def
SLD_FILE = ../../include/wx/palmos/wxWidgets.sld
## --------------------------------------------------------------------------
# Review Database information
# Register Creator ID at: http://dev.palmos.com/creatorid/
## --------------------------------------------------------------------------
CREATOR_ID = bapp
DB_TYPE = appl
DATABASE_RESET =
DATABASE_BACKUP = -b
DATABASE_HIDDEN =
DATABASE_PROTECT =
DATABASE_VERSION = 1
LOCALE = enUS
DATABASE_NAME = $(APP_NAME)
## --------------------------------------------------------------------------
# Choose SDK
# Supported values:
# sdk-6
## --------------------------------------------------------------------------
SDK_VERSION = sdk-6
ifeq ($(SDK_LOCATION),)
SDK_LOCATION=../../
endif
## --------------------------------------------------------------------------
# Build Settings
# Review the following for your needs.
# The default settings build with debug information and no optimization and
# a target platform of an actual device.
## --------------------------------------------------------------------------
#
# Set Debug or Release configuration for this project via the project
# properties (right-click on the project and select Properties).
#
DEBUG_OR_RELEASE=Debug
#
# Set the target platform for the build; either Device or Simulator
# Use Device as a target for emulator builds.
#
TARGET_PLATFORM=Simulator
# Specify the level of optimization that you want:
# NONE, SOME, FULL, INTRAPROCEDURAL, INTERPROCEDURAL, INLINING.
# Leave blank to select FULL for release builds, and NONE for
# debug builds.
# INTRAPROCEDURAL, INTERPROCEDURAL, INLINING are applicable to
# device builds only; simulator builds will translate those levels
# to FULL.
OPTIMIZE_LEVEL = NONE
# Specify warning level
# NONE = suppress all warnings
# ALL = enable all warnings
# <undefined> = default warnings
WARNING_LEVEL =
# Specify exception handling support
# true = enable it
# false = don't enable it
ENABLE_EXCEPTION_HANDLING=true
# List additional libraries to link with
# (Full or project relative path)
ADDITIONAL_LINK_LIBRARIES =
ADDITIONAL_SIM_LINK_LIBRARIES =
# Additional paths to look for #include "header"
# (Source file directories are automatically included)
# Please note that both local and system include paths should
# either use "cygwin" syntax or if in Windows syntax the should
# be quoted. ie: ../MyLibrary/headers or "C:\Source\MyLibrary\headers"
# Additionally, you must explicly specify the "-I" prior to each
# path included in this variable. Spaces are used to separate
# each path from each other.
LOCAL_INCLUDE_PATHS = -Irsc -I../../include
LOCAL_SIM_INCLUDE_PATHS = -Irsc -I../../include
# Additional paths to look for #include <header>
# (Palm OS SDK directories are automatically included)
# Additionally, you must explicly specify the "-I" prior to each
# path included in this variable. Spaces are used to separate
# each path from each other.
SYSTEM_INCLUDE_PATHS =
SYSTEM_SIM_INCLUDE_PATHS =
# Specify any needed preprocessor symbols.
# If you set DEFINES to "ASSERTLEVEL=1", the compiler will see "-DASSERTLEVEL=1"
# (separate individual entries with spaces)
DEFINES =
SIM_DEFINES =
# Specify additional compiler flags for all files
ADDITIONAL_COMPILER_FLAGS =
ADDITIONAL_SIM_COMPILER_FLAGS =
# Specify additional linker flags
ADDITIONAL_LINKER_FLAGS =
ADDITIONAL_SIM_LINKER_FLAGS =
# Specify additional archival flags (for static libraries)
ADDITIONAL_AR_FLAGS =
ADDITIONAL_SIM_AR_FLAGS =
# Tools Directory
# Normally you wouldn't want to override this since the necessary tools
# are in the PATH. But if you experimenting with other tools, then
# reset the directory here
# If overridden, end with a trailing '/'
ifeq ($(TOOLS_DIR), )
TOOLS_DIR = ../../../PalmOSTools/
endif
## --------------------------------------------------------------------------
# Resource Settings
## --------------------------------------------------------------------------
# Specify the target text encoding
# LATIN, JAPANESE, SIMPLIFIED_CHINESE
TEXTENCODING = LATIN
# Specify error levels for locale and text encoding
# NOCHECK
# STRICT
# <default>
LOCALE_CHECKING =
# Specific if encoding should be checked
# FALSE, TRUE
STRICT_ENCODING = FALSE
## --------------------------------------------------------------------------
# Output Settings
## --------------------------------------------------------------------------
# Modify if you want object and output files to be in different locations
# (However, please note that all three object directories must be different
# for the makefile engine to properly operate.)
# OUTPUT_DIR is the "main" output directory, where all linked and binary objects
# will be put.
DEBUG_DEVICE_OUTPUT_DIR := DebugDevice
RELEASE_DEVICE_OUTPUT_DIR := ReleaseDevice
DEBUG_SIMULATOR_OUTPUT_DIR := DebugSim
RELEASE_SIMULATOR_OUTPUT_DIR := ReleaseSim
RSC_OBJ_DIR := ResourceObjs
## --------------------------------------------------------------------------
# Makefiles
## --------------------------------------------------------------------------
## include the makefile engine
include makefile-engine.mk
## conditionally include your own custom.mk for your specific overrides or definitions
## this is useful if you don't want to use the auto-generated.mk values
## for some reason
-include custom.mk

View File

@@ -0,0 +1,746 @@
## Palm OS Protein Generic Makefile Engine for Eclipse v1.0.0
#
# Last edit: 7/22/04
#
# This makefile engine is capable of compiling Protein
# applications for Palm OS.
#
# This makefile engine assumes that the following variables are
# set outside of this makefile by a referencing master makefile
# (see a master makefile generated by a Palm OS Developer
# Suite wizard for detailed explanation of each variable):
#
# SOURCES
# RESOURCES
# DATABASE_RESET
# DATABASE_BACKUP
# DATABASE_HIDDEN
# DATABASE_PROTECT
# DATABASE_BUNDLE
# DATABASE_VERSION
# DATABASE_NAME
# PROJECT_TYPE
# DEBUG_OR_RELEASE
# OPTIMIZE_LEVEL
# WARNING_LEVEL
# ENABLE_EXCEPTIONS
# ENABLE_ASSERTIONS
# ADDITIONAL_LINK_LIBRARIES
# ADDITIONAL_SIM_LINK_LIBRARIES
# LOCAL_INCLUDE_PATHS
# LOCAL_SIM_INCLUDE_PATHS
# SYSTEM_INCLUDE_PATHS
# SYSTEM_SIM_INCLUDE_PATHS
# DEFINES
# SIM_DEFINES
# ADDITIONAL_COMPILER_FLAGS
# ADDITIONAL_SIM_COMPILER_FLAGS
# ADDITIONAL_LINKER_FLAGS
# ADDITIONAL_SIM_LINKER_FLAGS
# ADDITIONAL_AR_FLAGS
# ADDITIONAL_SIM_AR_FLAGS
# TEXTENCODING
# LOCALE_CHECKING
# STRICT_ENCODING
# SDK_LOCATION
# TARGET_PLATFORM
#
# Additionally, the user of this makefile engine may obtain the
# dynamic values for:
# SDK_LOCATION
# SDK_VERSION
# TOOLS_DIR
# by doing an optional include of a makefile segment that is
# generated during the Palm OS Developer Suite standard make build.
# The makefile line to accomplish this is:
# -include auto-generated.mk
# All master makefiles generated by Palm OS Developer Suite
# wizards include this line already to pick up and use these
# dynamic definitions.
#
# All variable values may be overridden by editing the make command
# for the project (Project->Properties->C/C++ Make Project->Make Builder,
# Build Command field).
#
###############################################################################
# Defaults
comma:= ,
ifeq ($(TOOLS_DIR), )
TOOLS_DIR =
endif
# Locale (defaults to English)
ifeq ($(LOCALE), )
LOCALE := enUS
endif
ifeq ($(CREATOR_ID), )
CREATOR_ID = STRT
endif
ifeq ($(DB_TYPE), )
DB_TYPE = appl
endif
ifeq ($(SLD_FILE), )
SLD_FILE = none
endif
ifeq ($(DEBUG_DEVICE_OUTPUT_DIR), )
DEBUG_DEVICE_OUTPUT_DIR = DebugDevice
endif
ifeq ($(RELEASE_DEVICE_OUTPUT_DIR), )
RELEASE_DEVICE_OUTPUT_DIR = ReleaseDevice
endif
ifeq ($(DEBUG_SIMULATOR_OUTPUT_DIR), )
DEBUG_SIMULATOR_OUTPUT_DIR = DebugSim
endif
ifeq ($(RELEASE_SIMULATOR_OUTPUT_DIR), )
RELEASE_SIMULATOR_OUTPUT_DIR = ReleaseSim
endif
ifeq ($(SDK_VERSION), )
SDK_VERSION = sdk-6
endif
ifeq ($(ENABLE_EXCEPTIONS), )
ENABLE_EXCEPTIONS=TRUE
endif
###############################################################################
# App/PRC/Database Names
#
# The difference between App Name and Database name is that App Name may
# contain spaces while the database name is the App name with spaces removed.
# (Coded in such a way that if the user already explicitly defined these
# variables previously, we'll go with those).
ifeq ($(DATABASE_NAME), )
ifeq ($(ESCAPED_ARTIFACT_NAME), )
# Database name defaults if ARTIFACT_NAME is empty
DATABASE_NAME = StartApp
else
DATABASE_NAME = $(ESCAPED_ARTIFACT_NAME)
endif
endif
ifeq ($(PRC_NAME), )
ifeq ($(ESCAPED_ARTIFACT_NAME), )
# PRC name defaults if ESCAPED_ARTIFACT_NAME is empty
PRC_NAME = Start.prc
else
PRC_NAME = $(DATABASE_NAME).prc
endif
endif
ifeq ($(LIB_NAME), )
ifeq ($(ESCAPED_ARTIFACT_NAME), )
# LIB name defaults if ESCAPED_ARTIFACT_NAME is empty
LIB_NAME = Start.a
else
LIB_NAME = $(DATABASE_NAME).a
endif
endif
ifeq ($(SIM_LIB_NAME), )
ifeq ($(ESCAPED_ARTIFACT_NAME), )
# SIM LIB name defaults if ESCAPED_ARTIFACT_NAME is empty
SIM_LIB_NAME = Start.lib
else
SIM_LIB_NAME = $(DATABASE_NAME).lib
endif
endif
###############################################################################
# Compile and Link Settings
TARGET_FORMAT=PalmOS6
# Compiler settings... compiler + optimizations + debug
# This is a makefile for Palm OS 6 so the compilers used are as follows:
# Device target compiler is pacc
# Simulator target compiler is gcc
CC = "$(TOOLS_DIR)pacc"
SIM_CC = gcc
CFLAGS += -D__PALMOS_KERNEL__=1 -D__PALMOS__=0x06000000
SIM_CFLAGS += -fexceptions -mno-cygwin -mwindows -D__PALMOS_KERNEL__=1 -D__PALMOS__=0x06000000 -D_SUPPORTS_NAMESPACE=0 -D_SUPPORTS_RTTI=1 -DTARGET_PLATFORM=TARGET_PLATFORM_PALMSIM_WIN32 -DTARGET_HOST=TARGET_HOST_PALMOS
# Warning level for device target
ifeq ($(WARNING_LEVEL), ALL)
CFLAGS += -W4
else
ifeq ($(WARNING_LEVEL), SOME)
CFLAGS += -W2
else
ifeq ($(WARNING_LEVEL), NONE)
CFLAGS += -W0
endif
endif
endif
# Warning level for simulator target
ifeq ($(SIM_WARNING_LEVEL), ALL)
SIM_CFLAGS += -Wall
else
ifeq ($(SIM_WARNING_LEVEL), NONE)
SIM_CFLAGS += -w
endif
endif
# Warnings as errors for device builds
ifeq ($(WARNING_AS_ERROR), TRUE)
CFLAGS += -Werror
endif
# Warnings as errors for simulator builds
ifeq ($(SIM_WARNING_AS_ERROR), TRUE)
SIM_CFLAGS += -Werror
endif
# Adding after other warnings flags so this is always in effect
SIM_CFLAGS += -Wno-multichar
# Verbose output for device build
ifeq ($(VERBOSE), TRUE)
CFLAGS += -v
endif
# Verbose output for simulator build
ifeq ($(SIM_VERBOSE), TRUE)
SIM_CFLAGS += -v
endif
# Dislay logo
ifeq ($(ARM_LOGO), TRUE)
CFLAGS += -logo
else
CFLAGS += -nologo
endif
# Exception handling support
ifeq ($(ENABLE_EXCEPTIONS), TRUE)
CFLAGS += -ex
LDFLAGS += -ex
endif
# Assertion handling support
ifeq ($(ENABLE_ASSERTIONS), TRUE)
CFLAGS += -UNDEBUG
else
CFLAGS += -DNDEBUG=1
endif
# Additional linker flags
ifdef ADDITIONAL_PALINK_FLAGS
LDFLAGS += $(ADDITIONAL_PALINK_FLAGS)
endif
# Optimization settings
ifeq ($(OPTIMIZE_LEVEL), INLINING)
OPTIMIZER_FLAG = -O5
SIM_OPTIMIZER_FLAG = -O3
else
ifeq ($(OPTIMIZE_LEVEL), INTERPROCEDURAL)
OPTIMIZER_FLAG = -O4
SIM_OPTIMIZER_FLAG = -O3
else
ifeq ($(OPTIMIZE_LEVEL), FULL)
OPTIMIZER_FLAG = -O3
SIM_OPTIMIZER_FLAG = -O3
else
ifeq ($(OPTIMIZE_LEVEL), INTRAPROCEDURAL)
OPTIMIZER_FLAG = -O2
SIM_OPTIMIZER_FLAG = -O3
else
ifeq ($(OPTIMIZE_LEVEL), SOME)
OPTIMIZER_FLAG = -O1
SIM_OPTIMIZER_FLAG = -O1
else
ifeq ($(OPTIMIZE_LEVEL), NONE)
OPTIMIZER_FLAG = -O0
SIM_OPTIMIZER_FLAG = -O0
else
# Default to 0 for debug, 3 for release
ifeq ($(DEBUG_OR_RELEASE), Debug)
OPTIMIZER_FLAG = -O0
SIM_OPTIMIZER_FLAG = -O0
else
OPTIMIZER_FLAG = -O3
SIM_OPTIMIZER_FLAG = -O3
endif
endif
endif
endif
endif
endif
endif
# Debug settings (can override optimize settings)
ifeq ($(DEBUG_OR_RELEASE), Debug)
DEBUG_FLAG += -g
BUILD_TYPE_FLAG = -DBUILD_TYPE=BUILD_TYPE_DEBUG
TRACE_OUTPUT_FLAG = -DTRACE_OUTPUT=TRACE_OUTPUT_ON
else
BUILD_TYPE_FLAG = -DBUILD_TYPE=BUILD_TYPE_RELEASE
TRACE_OUTPUT_FLAG = -DTRACE_OUTPUT=TRACE_OUTPUT_OFF
endif
ifeq ($(DEBUG_OR_RELEASE), Debug)
OBJ_DIR = $(DEBUG_DEVICE_OUTPUT_DIR)
SIM_OBJ_DIR = $(DEBUG_SIMULATOR_OUTPUT_DIR)
else
OBJ_DIR = $(RELEASE_DEVICE_OUTPUT_DIR)
SIM_OBJ_DIR = $(RELEASE_SIMULATOR_OUTPUT_DIR)
endif
CFLAGS += $(OPTIMIZER_FLAG) $(DEBUG_FLAG) $(BUILD_TYPE_FLAG) $(TRACE_OUTPUT_FLAG)
SIM_CFLAGS += $(SIM_OPTIMIZER_FLAG) $(DEBUG_FLAG) $(BUILD_TYPE_FLAG) $(TRACE_OUTPUT_FLAG)
# Linker settings (must come after setting DEBUG_FLAG)
LD = "$(TOOLS_DIR)pacc"
SIM_LD = gcc
LDFLAGS += $(DEBUG_FLAG) -nologo -Wl,-nolocals
SIM_LDFLAGS += $(DEBUG_FLAG) -mno-cygwin -mwindows $(SIM_OBJ_DIR)/gcc_link.def -shared -nostdlib -u___divdi3 -u___moddi3 -u___udivdi3 -u___umoddi3
SIM_LIBS = -L "$(TOOLS_DIR)misclibs" -lpxstlport -lpxsupc++ -lpxgcc -lgcc
ifeq ($(DEBUG_OR_RELEASE), Debug)
LDFLAGS += -Wl,-debug -Wl,-libpath -Wl,"$(SDK_LOCATION)libraries/ARM_4T/Debug/Default"
SIM_LIBS += "$(SDK_LOCATION)libraries/Simulator/Debug/PalmOS.lib"
else
LDFLAGS += -Wl,-libpath -Wl,"$(SDK_LOCATION)libraries/ARM_4T/Release/Default"
SIM_LIBS += "$(SDK_LOCATION)libraries/Simulator/Release/PalmOS.lib"
endif
LDOBJS = PalmOS.a SystemGlue.a FloatMgr.sa
ifeq ($(TARGET_PLATFORM), Device)
NATIVE_OBJ_DIR := $(OBJ_DIR)
RSC_OBJ_DIR := $(OBJ_DIR)
else
NATIVE_OBJ_DIR := $(SIM_OBJ_DIR)
RSC_OBJ_DIR := $(SIM_OBJ_DIR)
endif
# Librarian settings
AR="$(TOOLS_DIR)palib"
SIM_AR=ar
ARFLAGS= -c -a
SIM_ARFLAGS=-rc
LINKER_OUTPUT := $(OBJ_DIR)/$(DATABASE_NAME).axf
SIM_LINKER_OUTPUT := $(SIM_OBJ_DIR)/$(DATABASE_NAME).dll
TARGET := $(OBJ_DIR)/$(PRC_NAME)
SIM_TARGET := $(SIM_OBJ_DIR)/$(PRC_NAME)
STATIC_LIB_TARGET := $(OBJ_DIR)/$(LIB_NAME)
SIM_STATIC_LIB_TARGET := $(SIM_OBJ_DIR)/$(SIM_LIB_NAME)
###############################################################################
# Resource flags (PalmRC)
RFLAGS +=
# Default text encoding is Latin
ifeq ($(PRC_TEXT_ENCODING), )
PRC_TEXT_ENCODING = LATIN
endif
ifeq ($(PRC_TEXT_ENCODING), LATIN)
RFLAGS += -target 4.0
else
ifeq ($(PRC_TEXT_ENCODING), JAPANESE)
RFLAGS += -target 4.0J
else
ifeq ($(PRC_TEXT_ENCODING), SIMPLIFIED_CHINESE)
RFLAGS += -target 4.0CS
endif
endif
endif
ifeq ($(PRC_NO_LOCALE_CHECK), TRUE)
RFLAGS += -noLocaleCheck
endif
ifeq ($(PRC_STRICT_LOCALE), TRUE)
RFLAGS += -strictLocale
endif
ifeq ($(PRC_STRICT_ENCODING), TRUE)
RFLAGS += -strictTextEncoding
endif
ifdef PRC_OVERLAY_FILTER
RFLAGS += -overlayFilter $(PRC_OVERLAY_FILTER)
endif
ifeq ($(PRC_NO_WARN_SIZE), TRUE)
RFLAGS += -noWarnSize
endif
ifeq ($(PRC_QUIET), TRUE)
RFLAGS += -quiet
endif
ifeq ($(PRCMERGE_QUIET), TRUE)
PRCFLAGS += -quiet
endif
###############################################################################
# function for converting sources to object file names in one of output directories
define SOURCE_LIST_TO_OBJS
$(addprefix $(OBJ_DIR)/, $(addsuffix .o, $(foreach file, $(SOURCES), \
$(basename $(notdir $(file))))))
endef
# function for converting sources to object file names in $(SIM_OBJ_DIR)
define SOURCE_LIST_TO_SIM_OBJS
$(addprefix $(SIM_OBJ_DIR)/, $(addsuffix .o, $(foreach file, $(SOURCES), \
$(basename $(notdir $(file))))))
endef
# function for converting resources into resource object files
define RESOURCE_LIST_TO_OBJS
$(addprefix $(RSC_OBJ_DIR)/, $(addsuffix .trc, $(foreach file, $(RESOURCES), \
$(basename $(file)))))
endef
OBJS = $(SOURCE_LIST_TO_OBJS)
SIM_OBJS = $(SOURCE_LIST_TO_SIM_OBJS)
SOURCE_PATHS += $(sort $(foreach file, $(SOURCES), $(dir $(file))))
RESOURCE_OBJS = $(RESOURCE_LIST_TO_OBJS)
RESOURCE_PATHS += $(sort $(foreach file, $(RESOURCES), $(dir $(file))))
SLD_BASENAME := $(addsuffix _Startup, $(basename $(notdir $(SLD_FILE))))
SLD_OBJ := $(addprefix $(OBJ_DIR)/, $(addsuffix .o, $(SLD_BASENAME)))
SLD_SIM_OBJ := $(addprefix $(SIM_OBJ_DIR)/, $(addsuffix .o, $(SLD_BASENAME)))
VPATH :=
VPATH += $(addprefix :, $(subst ,:, $(filter-out $($(subst, :, ,$(VPATH))), $(SOURCE_PATHS) $(RESOURCE_PATHS) )))
SYSTEM_INCLUDES = $(SYSTEM_INCLUDE_PATHS) -I "$(SDK_LOCATION)headers" -I "$(SDK_LOCATION)headers/posix"
INCLUDES = $(LOCAL_INCLUDE_PATHS) $(foreach path, $(SOURCE_PATHS), $(addprefix -I, $(path))) $(SYSTEM_INCLUDES) $(PRE_INCLUDE_PATHS)
CPP_INCLUDES = -I "$(TOOLS_DIR)include/stlport"
SIM_SYSTEM_INCLUDES = $(SYSTEM_SIM_INCLUDE_PATHS) -I "$(SDK_LOCATION)headers" -I "$(SDK_LOCATION)headers/posix"
SIM_INCLUDES = $(LOCAL_SIM_INCLUDE_PATHS) $(foreach path, $(SOURCE_PATHS), $(addprefix -I, $(path))) $(SIM_SYSTEM_INCLUDES) $(SIM_PRE_INCLUDE_PATHS)
SIM_CPP_INCLUDES = -I "$(TOOLS_DIR)include/stlport"
# Now add additional settings specified by user
LDFLAGS += $(ADDITIONAL_LINK_LIBRARIES)
LDFLAGS += $(foreach libpath, $(ADDITIONAL_LINK_LIBPATH), $(addprefix -libpath , $(libpath)))
LDFLAGS += $(foreach option, $(ADDITIONAL_LINKER_FLAGS), $(addprefix -Wl$(comma), $(option)))
CFLAGS += $(foreach define, $(DEFINES), $(addprefix -D, $(define)))
CFLAGS += $(foreach define, $(UNDEFINES), $(addprefix -U, $(define)))
CFLAGS += $(ADDITIONAL_COMPILER_FLAGS)
SIM_LDFLAGS += $(ADDITIONAL_SIM_LINK_LIBRARIES)
SIM_LDFLAGS += $(ADDITIONAL_SIM_LINKER_FLAGS)
SIM_LDFLAGS += $(foreach libpath, $(ADDITIONAL_SIM_LINK_LIBPATH), $(addprefix -L, $(libpath)))
SIM_CFLAGS += $(foreach define, $(SIM_DEFINES), $(addprefix -D, $(define)))
SIM_CFLAGS += $(foreach define, $(SIM_UNDEFINES), $(addprefix -U, $(define)))
SIM_CFLAGS += $(ADDITIONAL_SIM_COMPILER_FLAGS)
# Specifyc additional archival flags (for static libraries)
ARFLAGS += $(ADDITIONAL_AR_FLAGS)
SIM_ARFLAGS += $(ADDITIONAL_SIM_AR_FLAGS)
RFLAGS += $(ADDITIONAL_PRC_FLAGS)
PRCFLAGS += $(ADDITIONAL_PRCMERGE_FLAGS)
###############################################################################
# Flags for PRC creation
PRCFLAGS += -dbFlagExtendedDB -dbFlagExecutable
PRCFLAGS += -dbVersion $(DATABASE_VERSION) $(DATABASE_PROTECT) $(DATABASE_HIDDEN) $(DATABASE_BACKUP) $(DATABASE_RESET) $(DATABASE_BUNDLE)
###############################################################################
# Flags for pslib
PSLIB_DEV_FLAGS =
PSLIB_SIM_FLAGS = -outSimgcc
ifeq ($(PROJECT_TYPE), slib)
PSLIB_DEV_FLAGS += -outEntryNums $(OBJ_DIR)/$(DATABASE_NAME)_Client.h -outObjStubs $(OBJ_DIR)/$(DATABASE_NAME)_Client.sa
PSLIB_SIM_FLAGS += -outEntryNums $(SIM_OBJ_DIR)/$(DATABASE_NAME)_Client.h -outSimStubs $(SIM_OBJ_DIR)/$(DATABASE_NAME)_Client.slib
endif
###############################################################################
# Project make target determination
ifeq ($(TARGET_PLATFORM), Device)
ifeq ($(PROJECT_TYPE), )
PROJECT_TARGET = device
endif
ifeq ($(PROJECT_TYPE), appl)
PROJECT_TARGET = device
endif
ifeq ($(PROJECT_TYPE), slib)
PROJECT_TARGET = device_shared_lib
endif
ifeq ($(PROJECT_TYPE), lib)
PROJECT_TARGET = device_static_lib
endif
else
ifeq ($(PROJECT_TYPE), )
PROJECT_TARGET = simulator
endif
ifeq ($(PROJECT_TYPE), appl)
PROJECT_TARGET = simulator
endif
ifeq ($(PROJECT_TYPE), slib)
PROJECT_TARGET = simulator_shared_lib
endif
ifeq ($(PROJECT_TYPE), lib)
PROJECT_TARGET = simulator_static_lib
endif
endif
###############################################################################
# Eclipse requires an all target to get the work done
all: $(PROJECT_TARGET)
# This rule is only valid for projects created as application projects.
# Don't invoke this make target directly; instead change the value of
# TARGET_PLATFORM to Device in the main makefile
device: $(OBJ_DIR) $(TARGET)
# This rule is only valid for projects created as application projects.
# Don't invoke this make target directly; instead change the value of
# TARGET_PLATFORM to Simulator in the main makefile
simulator: $(SIM_OBJ_DIR) $(SIM_TARGET)
# This rule is only valid for projects created as shared library projects.
# Don't invoke this make target directly; instead change the value of
# TARGET_PLATFORM to Device in the main makefile
device_shared_lib: $(OBJ_DIR) $(TARGET)
# This rule is only valid for projects created as shared library projects.
# Don't invoke this make target directly; instead change the value of
# TARGET_PLATFORM to Simulator in the main makefile
simulator_shared_lib: $(SIM_OBJ_DIR) $(SIM_TARGET)
# This rule is only valid for projects created as static library projects.
# Don't invoke this make target directly; instead change the value of
# TARGET_PLATFORM to Device in the main makefile
device_static_lib: $(OBJ_DIR) $(STATIC_LIB_TARGET)
# This rule is only valid for projects created as static library projects.
# Don't invoke this make target directly; instead change the value of
# TARGET_PLATFORM to Simulator in the main makefile
simulator_static_lib: $(SIM_OBJ_DIR) $(SIM_STATIC_LIB_TARGET)
# rule to create the object file directories if needed
$(OBJ_DIR):
@[ -d $(OBJ_DIR) ] || mkdir $(OBJ_DIR) > /dev/null 2>&1
$(SIM_OBJ_DIR):
@[ -d $(SIM_OBJ_DIR) ] || mkdir $(SIM_OBJ_DIR) > /dev/null 2>&1
# main C/C++ sources
$(OBJ_DIR)/%.o : %.c makefile
$(CC) -c $< $(INCLUDES) $(CFLAGS) -o $@
$(OBJ_DIR)/%.o : %.cpp makefile
$(CC) -c $< $(INCLUDES) $(CPP_INCLUDES) $(CFLAGS) -o $@
$(OBJ_DIR)/%.o : %.cp makefile
$(CC) -c $< $(INCLUDES) $(CPP_INCLUDES) $(CFLAGS) -o $@
$(OBJ_DIR)/%.o : %.cc makefile
$(CC) -c $< $(INCLUDES) $(CPP_INCLUDES) $(CFLAGS) -o $@
$(OBJ_DIR)/%.o : %.C makefile
$(CC) -c $< $(INCLUDES) $(CFLAGS) -o $@
$(OBJ_DIR)/%.o : %.CC makefile
$(CC) -c $< $(INCLUDES) $(CPP_INCLUDES) $(CFLAGS) -o $@
$(OBJ_DIR)/%.o : %.CPP makefile
$(CC) -c $< $(INCLUDES) $(CPP_INCLUDES) $(CFLAGS) -o $@
# Simulator C/C++ sources
$(SIM_OBJ_DIR)/%.o : %.c makefile
$(SIM_CC) -c $< $(SIM_INCLUDES) -std=c99 $(SIM_CFLAGS) -o $@
$(SIM_OBJ_DIR)/%.o : %.cpp makefile
$(SIM_CC) -c $< $(SIM_INCLUDES) $(SIM_CPP_INCLUDES) -frtti $(SIM_CFLAGS) -o $@
$(SIM_OBJ_DIR)/%.o : %.cp makefile
$(SIM_CC) -c $< $(SIM_INCLUDES) $(SIM_CPP_INCLUDES) -frtti $(SIM_CFLAGS) -o $@
$(SIM_OBJ_DIR)/%.o : %.cc makefile
$(SIM_CC) -c $< $(SIM_INCLUDES) $(SIM_CPP_INCLUDES) -frtti $(SIM_CFLAGS) -o $@
$(SIM_OBJ_DIR)/%.o : %.C makefile
$(SIM_CC) -c $< $(SIM_INCLUDES) -std=c99 $(SIM_CFLAGS) -o $@
$(SIM_OBJ_DIR)/%.o : %.CC makefile
$(SIM_CC) -c $< $(SIM_INCLUDES) $(SIM_CPP_INCLUDES) -frtti $(SIM_CFLAGS) -o $@
$(SIM_OBJ_DIR)/%.o : %.CPP makefile
$(SIM_CC) -c $< $(SIM_INCLUDES) $(SIM_CPP_INCLUDES) -frtti $(SIM_CFLAGS) -o $@
# XRD source processing
$(RSC_OBJ_DIR)/%.trc : %.xrd makefile
"$(TOOLS_DIR)PalmRC" -p $(TARGET_FORMAT) -makeDeps $(@D)/$(*F).deps $(RFLAGS) -locale $(LOCALE) "`cygpath -w -a ./$<`" -o $@
$(RSC_OBJ_DIR)/%.trc : %.XRD makefile
"$(TOOLS_DIR)PalmRC" -p $(TARGET_FORMAT) -makeDeps $(@D)/$(*F).deps $(RFLAGS) -locale $(LOCALE) "`cygpath -w -a ./$<`" -o $@
# Definition file source processing
$(SLD_OBJ) : makefile
@echo "...Processing definition file for Device..."
"$(TOOLS_DIR)pslib" -inDef "$(SLD_FILE)" $(PSLIB_DEV_FLAGS) -outObjStartup $@ -type '$(DB_TYPE)' -creator '$(CREATOR_ID)' -execName $(DATABASE_NAME)
$(SLD_SIM_OBJ) : makefile
@echo "...Processing definition file for Simulator..."
"$(TOOLS_DIR)pslib" -inDef "$(SLD_FILE)" $(PSLIB_SIM_FLAGS) -outSimStartup $@ -outSimRsrc $(SIM_OBJ_DIR)/acod0000.bin -outSimDefs $(SIM_OBJ_DIR)/gcc_link.def -type '$(DB_TYPE)' -creator '$(CREATOR_ID)' -execName $(DATABASE_NAME)
# Linking step
$(LINKER_OUTPUT) : $(OBJS)
@echo "...Linking for Device Target..."
$(LD) -o $(LINKER_OUTPUT) $(OBJS) $(SLD_OBJ) $(LDOBJS) $(LDFLAGS)
$(SIM_LINKER_OUTPUT) : $(SIM_OBJS)
@echo "...Linking for Simulator Target..."
$(SIM_LD) --entry 0 -o $(SIM_LINKER_OUTPUT) $(SIM_OBJS) $(SLD_SIM_OBJ) $(SIM_LDFLAGS) $(SIM_LIBS)
# Final target creation
$(TARGET): $(SLD_OBJ) $(LINKER_OUTPUT) $(RESOURCE_OBJS)
@echo "...Creating PRC for Device: $(TARGET)"
"$(TOOLS_DIR)pelf2bin" -format 6 -directory $(OBJ_DIR) -code acod -data adat -rsrc 0x0000 $(LINKER_OUTPUT)
"$(TOOLS_DIR)PRCMerge" -dbType '$(DB_TYPE)' -dbCreator '$(CREATOR_ID)' -dbName $(DATABASE_NAME) $(PRCFLAGS) -o $(TARGET) $(RESOURCE_OBJS) $(OBJ_DIR)/adat0000.bin $(OBJ_DIR)/acod0000.bin
@echo ...Done with Device build...
@echo
$(SIM_TARGET): $(SLD_SIM_OBJ) $(SIM_LINKER_OUTPUT) $(RESOURCE_OBJS)
@echo "...Creating PRC for Simulator: $(SIM_TARGET)"
cp -f "$(SDK_LOCATION)misctools/Resources/amdd_fake" $(SIM_OBJ_DIR)/adat0000.bin
"$(TOOLS_DIR)PRCMerge" -dbType '$(DB_TYPE)' -dbCreator '$(CREATOR_ID)' -dbName $(DATABASE_NAME) $(PRCFLAGS) -o $(SIM_TARGET) $(RESOURCE_OBJS) $(SIM_OBJ_DIR)/adat0000.bin $(SIM_OBJ_DIR)/acod0000.bin
@echo ...Done with Simulator build...
@echo
$(STATIC_LIB_TARGET) : $(OBJS)
@echo "...Linking Static Library for Device Target..."
$(AR) $(ARFLAGS) $(STATIC_LIB_TARGET) $(OBJS)
$(SIM_STATIC_LIB_TARGET) : $(SIM_OBJS)
@echo "...Linking Static Library for Simulator Target..."
$(SIM_AR) $(SIM_ARFLAGS) $(SIM_STATIC_LIB_TARGET) $(SIM_OBJS)
FORCE:
# Eclipse requires a clean command
clean :: FORCE
-rm -rf $(NATIVE_OBJ_DIR)/*
printvars :: FORCE
@echo "SDK_LOCATION"
@echo $(SDK_LOCATION)
@echo "CFLAGS"
@echo $(CFLAGS)
@echo "SIM_CFLAGS"
@echo $(SIM_CFLAGS)
@echo "LDFLAGS"
@echo $(LDFLAGS)
@echo "SIM_LDFLAGS"
@echo $(SIM_LDFLAGS)
@echo "OBJS"
@echo $(OBJS)
@echo "SIM_OBJS"
@echo $(SIM_OBJS)
@echo "SLD_OBJ"
@echo $(SLD_OBJ)
@echo "SLD_SIM_OBJ"
@echo $(SLD_SIM_OBJ)
@echo "TARGET"
@echo $(TARGET)
@echo "SIM_TARGET"
@echo $(SIM_TARGET)
@echo "SOURCE_PATHS"
@echo $(SOURCE_PATHS)
@echo "RESOURCE_OBJS"
@echo $(RESOURCE_OBJS)
@echo "RESOURCE_PATHS"
@echo $(RESOURCE_PATHS)
@echo "OBJ_DIR"
@echo $(OBJ_DIR)
@echo "SIM_OBJ_DIR"
@echo $(SIM_OBJ_DIR)
@echo "RSC_OBJ_DIR"
@echo $(RSC_OBJ_DIR)
@echo "LINKER_OUTPUT"
@echo $(LINKER_OUTPUT)
@echo "SIM_LINKER_OUTPUT"
@echo $(SIM_LINKER_OUTPUT)
@echo "SIM_GCC_SLIBS"
@echo $(SIM_GCC_SLIBS)
@echo "SIM_GCC_SLIB_PATHS"
@echo $(SIM_GCC_SLIB_PATHS)
@echo "VPATH"
@echo $(VPATH)
#
# dependency generation
# Generate dependencies with depend target "make depend"
#
DEPFLAG = -MM
#
# Adds $(SIM_OBJ_DIR) to target .o file
# ...Search for string starting at the beginning of the line [^]
# ...that contain anything followed by .o [.*\.o]
# ...and remember that string [\(...\)]
# ...replace that string with $(SIM_OBJ_DIR)/<tagged string> [$$(SIM_OBJ_DIR)/\1]
# ($ is doubled so that make doesn't interpret the variable syntax)
#
SOURCE_SEDSCRIPT = sed -e's%^\(.*\.o\)%$$(OBJ_DIR)/\1%'
SOURCE_SIM_SEDSCRIPT = sed -e's%^\(.*\.o\)%$$(SIM_OBJ_DIR)/\1%'
# Command adds $(RSC_OBJ_DIR) and converts .xrd to .trc
RESOURCE_TARGET_SEDSCRIPT = sed -e';s%^\(.*\).xrd%$$(RSC_OBJ_DIR)/\1.trc%'
# Command to escape spaces in a path
ESCAPE_SPACES_SEDSCRIPT = sed 's/ /\\\ /g'
# Take out all newlines (and/or returns) and replace with spaces
# ...putting all dependencies on the same line
RESOURCE_PREREQ_SEDSCRIPT = tr '\r\n' ' '
depend :: FORCE
@echo "" > .dependencies
@$(SIM_CC) $(SIM_INCLUDES) $(SIM_CFLAGS) $(DEPFLAG) $(SOURCES) | $(SOURCE_SIM_SEDSCRIPT) >> .dependencies
@$(SIM_CC) $(SIM_INCLUDES) $(SIM_CFLAGS) $(DEPFLAG) $(SOURCES) | $(SOURCE_SEDSCRIPT) >> .dependencies
@for i in $(RESOURCES); do \
echo "$$i: \\" | $(RESOURCE_TARGET_SEDSCRIPT) >> .resdependencies; \
"$(TOOLS_DIR)PalmRC" -p $(TARGET_FORMAT) $(RFLAGS) -locale $(LOCALE) -makedeps $$i.tmp "`cygpath -w -a ./$$i`"; \
cygpath -m -f $$i.tmp | $(ESCAPE_SPACES_SEDSCRIPT) >> $$i.deps; \
rm -rf $$i.tmp; \
cat $$i.deps | $(RESOURCE_PREREQ_SEDSCRIPT) >> .resdependencies; \
echo "" >> .resdependencies; \
rm -rf $$i.deps; \
cat .resdependencies >> .dependencies; \
rm -rf .resdependencies; \
done
cleandepend :: FORCE
-rm -f .dependencies
-include .dependencies