📄 makefile-engine.mk
字号:
## 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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -