| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 1 | # This is included by the top-level Makefile. | 
|  | 2 | # It sets up standard variables based on the | 
|  | 3 | # current configuration and platform, which | 
|  | 4 | # are not specific to what is being built. | 
|  | 5 |  | 
| Ying Wang | 6714dbc | 2010-03-30 16:42:15 -0700 | [diff] [blame] | 6 | # Only use ANDROID_BUILD_SHELL to wrap around bash. | 
|  | 7 | # DO NOT use other shells such as zsh. | 
| Ying Wang | 2ce495a | 2010-03-30 12:55:13 -0700 | [diff] [blame] | 8 | ifdef ANDROID_BUILD_SHELL | 
|  | 9 | SHELL := $(ANDROID_BUILD_SHELL) | 
|  | 10 | else | 
| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 11 | # Use bash, not whatever shell somebody has installed as /bin/sh | 
|  | 12 | # This is repeated from main.mk, since envsetup.sh runs this file | 
|  | 13 | # directly. | 
|  | 14 | SHELL := /bin/bash | 
| Ying Wang | 2ce495a | 2010-03-30 12:55:13 -0700 | [diff] [blame] | 15 | endif | 
| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 16 |  | 
| Joe Onorato | bc8abb6 | 2010-01-04 12:57:38 -0800 | [diff] [blame] | 17 | # Tell python not to spam the source tree with .pyc files.  This | 
|  | 18 | # only has an effect on python 2.6 and above. | 
|  | 19 | export PYTHONDONTWRITEBYTECODE := 1 | 
|  | 20 |  | 
| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 21 | # Standard source directories. | 
|  | 22 | SRC_DOCS:= $(TOPDIR)docs | 
|  | 23 | # TODO: Enforce some kind of layering; only add include paths | 
|  | 24 | #       when a module links against a particular library. | 
|  | 25 | # TODO: See if we can remove most of these from the global list. | 
|  | 26 | SRC_HEADERS := \ | 
|  | 27 | $(TOPDIR)system/core/include \ | 
|  | 28 | $(TOPDIR)hardware/libhardware/include \ | 
|  | 29 | $(TOPDIR)hardware/libhardware_legacy/include \ | 
|  | 30 | $(TOPDIR)hardware/ril/include \ | 
|  | 31 | $(TOPDIR)dalvik/libnativehelper/include \ | 
|  | 32 | $(TOPDIR)frameworks/base/include \ | 
|  | 33 | $(TOPDIR)frameworks/base/opengl/include \ | 
|  | 34 | $(TOPDIR)external/skia/include | 
|  | 35 | SRC_HOST_HEADERS:=$(TOPDIR)tools/include | 
|  | 36 | SRC_LIBRARIES:= $(TOPDIR)libs | 
|  | 37 | SRC_SERVERS:= $(TOPDIR)servers | 
|  | 38 | SRC_TARGET_DIR := $(TOPDIR)build/target | 
|  | 39 | SRC_API_DIR := $(TOPDIR)frameworks/base/api | 
|  | 40 |  | 
|  | 41 | # Some specific paths to tools | 
|  | 42 | SRC_DROIDDOC_DIR := $(TOPDIR)build/tools/droiddoc | 
|  | 43 |  | 
|  | 44 | # Various mappings to avoid hard-coding paths all over the place | 
|  | 45 | include $(BUILD_SYSTEM)/pathmap.mk | 
|  | 46 |  | 
|  | 47 | # ############################################################### | 
|  | 48 | # Build system internal files | 
|  | 49 | # ############################################################### | 
|  | 50 |  | 
|  | 51 | BUILD_COMBOS:= $(BUILD_SYSTEM)/combo | 
|  | 52 |  | 
|  | 53 | CLEAR_VARS:= $(BUILD_SYSTEM)/clear_vars.mk | 
|  | 54 | BUILD_HOST_STATIC_LIBRARY:= $(BUILD_SYSTEM)/host_static_library.mk | 
|  | 55 | BUILD_HOST_SHARED_LIBRARY:= $(BUILD_SYSTEM)/host_shared_library.mk | 
|  | 56 | BUILD_STATIC_LIBRARY:= $(BUILD_SYSTEM)/static_library.mk | 
|  | 57 | BUILD_RAW_STATIC_LIBRARY := $(BUILD_SYSTEM)/raw_static_library.mk | 
|  | 58 | BUILD_SHARED_LIBRARY:= $(BUILD_SYSTEM)/shared_library.mk | 
|  | 59 | BUILD_EXECUTABLE:= $(BUILD_SYSTEM)/executable.mk | 
|  | 60 | BUILD_RAW_EXECUTABLE:= $(BUILD_SYSTEM)/raw_executable.mk | 
|  | 61 | BUILD_HOST_EXECUTABLE:= $(BUILD_SYSTEM)/host_executable.mk | 
|  | 62 | BUILD_PACKAGE:= $(BUILD_SYSTEM)/package.mk | 
|  | 63 | BUILD_HOST_PREBUILT:= $(BUILD_SYSTEM)/host_prebuilt.mk | 
|  | 64 | BUILD_PREBUILT:= $(BUILD_SYSTEM)/prebuilt.mk | 
|  | 65 | BUILD_MULTI_PREBUILT:= $(BUILD_SYSTEM)/multi_prebuilt.mk | 
|  | 66 | BUILD_JAVA_LIBRARY:= $(BUILD_SYSTEM)/java_library.mk | 
|  | 67 | BUILD_STATIC_JAVA_LIBRARY:= $(BUILD_SYSTEM)/static_java_library.mk | 
|  | 68 | BUILD_HOST_JAVA_LIBRARY:= $(BUILD_SYSTEM)/host_java_library.mk | 
|  | 69 | BUILD_DROIDDOC:= $(BUILD_SYSTEM)/droiddoc.mk | 
|  | 70 | BUILD_COPY_HEADERS := $(BUILD_SYSTEM)/copy_headers.mk | 
|  | 71 | BUILD_KEY_CHAR_MAP := $(BUILD_SYSTEM)/key_char_map.mk | 
|  | 72 |  | 
|  | 73 | # ############################################################### | 
|  | 74 | # Parse out any modifier targets. | 
|  | 75 | # ############################################################### | 
|  | 76 |  | 
|  | 77 | # The 'showcommands' goal says to show the full command | 
|  | 78 | # lines being executed, instead of a short message about | 
|  | 79 | # the kind of operation being done. | 
|  | 80 | SHOW_COMMANDS:= $(filter showcommands,$(MAKECMDGOALS)) | 
|  | 81 |  | 
|  | 82 |  | 
|  | 83 | # ############################################################### | 
|  | 84 | # Set common values | 
|  | 85 | # ############################################################### | 
|  | 86 |  | 
|  | 87 | # These can be changed to modify both host and device modules. | 
| Marco Nelissen | e4aaa36 | 2009-07-13 20:42:49 -0700 | [diff] [blame] | 88 | COMMON_GLOBAL_CFLAGS:= -DANDROID -fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith | 
| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 89 | COMMON_RELEASE_CFLAGS:= -DNDEBUG -UDEBUG | 
|  | 90 |  | 
| Marco Nelissen | 7f0a18f | 2009-08-13 11:13:21 -0700 | [diff] [blame] | 91 | COMMON_GLOBAL_CPPFLAGS:= $(COMMON_GLOBAL_CFLAGS) -Wsign-promo | 
| Marco Nelissen | 73a075d | 2009-07-08 17:51:18 -0700 | [diff] [blame] | 92 | COMMON_RELEASE_CPPFLAGS:= $(COMMON_RELEASE_CFLAGS) | 
| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 93 |  | 
|  | 94 | # Set the extensions used for various packages | 
|  | 95 | COMMON_PACKAGE_SUFFIX := .zip | 
|  | 96 | COMMON_JAVA_PACKAGE_SUFFIX := .jar | 
|  | 97 | COMMON_ANDROID_PACKAGE_SUFFIX := .apk | 
|  | 98 |  | 
|  | 99 | # list of flags to turn specific warnings in to errors | 
| Marco Nelissen | bac9a7f | 2009-07-13 17:51:59 -0700 | [diff] [blame] | 100 | TARGET_ERROR_FLAGS := -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point | 
| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 101 |  | 
| Patrick Scott | f4f85a2 | 2009-06-25 10:38:26 -0400 | [diff] [blame] | 102 | # TODO: do symbol compression | 
|  | 103 | TARGET_COMPRESS_MODULE_SYMBOLS := false | 
|  | 104 |  | 
|  | 105 | # Default is to prelink modules. | 
|  | 106 | TARGET_PRELINK_MODULE := true | 
|  | 107 |  | 
| Thorsten Glaser | 2213aab | 2010-06-03 19:57:02 +0200 | [diff] [blame] | 108 | # Default shell is ash. Other possible value is mksh. | 
|  | 109 | TARGET_SHELL := ash | 
|  | 110 |  | 
| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 111 | # ############################################################### | 
|  | 112 | # Include sub-configuration files | 
|  | 113 | # ############################################################### | 
|  | 114 |  | 
|  | 115 | # --------------------------------------------------------------- | 
|  | 116 | # Try to include buildspec.mk, which will try to set stuff up. | 
|  | 117 | # If this file doesn't exist, the environemnt variables will | 
|  | 118 | # be used, and if that doesn't work, then the default is an | 
|  | 119 | # arm build | 
|  | 120 | -include $(TOPDIR)buildspec.mk | 
|  | 121 |  | 
|  | 122 | # --------------------------------------------------------------- | 
|  | 123 | # Define most of the global variables.  These are the ones that | 
|  | 124 | # are specific to the user's build configuration. | 
|  | 125 | include $(BUILD_SYSTEM)/envsetup.mk | 
|  | 126 |  | 
| Patrick Scott | 87c8657 | 2009-06-23 15:25:06 -0400 | [diff] [blame] | 127 | # Boards may be defined under $(SRC_TARGET_DIR)/board/$(TARGET_DEVICE) | 
|  | 128 | # or under vendor/*/$(TARGET_DEVICE).  Search in both places, but | 
|  | 129 | # make sure only one exists. | 
|  | 130 | # Real boards should always be associated with an OEM vendor. | 
|  | 131 | board_config_mk := \ | 
|  | 132 | $(strip $(wildcard \ | 
|  | 133 | $(SRC_TARGET_DIR)/board/$(TARGET_DEVICE)/BoardConfig.mk \ | 
| Jean-Baptiste Queru | 8d05416 | 2010-01-22 13:25:24 -0800 | [diff] [blame] | 134 | device/*/$(TARGET_DEVICE)/BoardConfig.mk \ | 
| Patrick Scott | 87c8657 | 2009-06-23 15:25:06 -0400 | [diff] [blame] | 135 | vendor/*/$(TARGET_DEVICE)/BoardConfig.mk \ | 
|  | 136 | )) | 
|  | 137 | ifeq ($(board_config_mk),) | 
|  | 138 | $(error No config file found for TARGET_DEVICE $(TARGET_DEVICE)) | 
|  | 139 | endif | 
|  | 140 | ifneq ($(words $(board_config_mk)),1) | 
|  | 141 | $(error Multiple board config files for TARGET_DEVICE $(TARGET_DEVICE): $(board_config_mk)) | 
|  | 142 | endif | 
|  | 143 | include $(board_config_mk) | 
|  | 144 | TARGET_DEVICE_DIR := $(patsubst %/,%,$(dir $(board_config_mk))) | 
|  | 145 | board_config_mk := | 
|  | 146 |  | 
| Bruce Beare | b73dc66 | 2010-07-12 07:53:28 -0700 | [diff] [blame] | 147 | include $(BUILD_SYSTEM)/dumpvar.mk | 
|  | 148 |  | 
| Patrick Scott | 87c8657 | 2009-06-23 15:25:06 -0400 | [diff] [blame] | 149 | # Clean up/verify variables defined by the board config file. | 
|  | 150 | TARGET_BOOTLOADER_BOARD_NAME := $(strip $(TARGET_BOOTLOADER_BOARD_NAME)) | 
|  | 151 | TARGET_CPU_ABI := $(strip $(TARGET_CPU_ABI)) | 
|  | 152 | ifeq ($(TARGET_CPU_ABI),) | 
|  | 153 | $(error No TARGET_CPU_ABI defined by board config: $(board_config_mk)) | 
|  | 154 | endif | 
| David 'Digit' Turner | 2edfb71 | 2009-11-06 15:12:00 -0800 | [diff] [blame] | 155 | TARGET_CPU_ABI2 := $(strip $(TARGET_CPU_ABI2)) | 
| Patrick Scott | 87c8657 | 2009-06-23 15:25:06 -0400 | [diff] [blame] | 156 |  | 
| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 157 | # $(1): os/arch | 
|  | 158 | define select-android-config-h | 
|  | 159 | system/core/include/arch/$(1)/AndroidConfig.h | 
|  | 160 | endef | 
|  | 161 |  | 
|  | 162 | combo_target := HOST_ | 
|  | 163 | include $(BUILD_SYSTEM)/combo/select.mk | 
|  | 164 |  | 
|  | 165 | # on windows, the tools have .exe at the end, and we depend on the | 
|  | 166 | # host config stuff being done first | 
|  | 167 |  | 
|  | 168 | combo_target := TARGET_ | 
|  | 169 | include $(BUILD_SYSTEM)/combo/select.mk | 
|  | 170 |  | 
|  | 171 | # Pick a Java compiler. | 
|  | 172 | include $(BUILD_SYSTEM)/combo/javac.mk | 
|  | 173 |  | 
|  | 174 | # --------------------------------------------------------------- | 
|  | 175 | # Check that the configuration is current.  We check that | 
|  | 176 | # BUILD_ENV_SEQUENCE_NUMBER is current against this value. | 
|  | 177 | # Don't fail if we're called from envsetup, so they have a | 
|  | 178 | # chance to update their environment. | 
|  | 179 |  | 
|  | 180 | ifeq (,$(strip $(CALLED_FROM_SETUP))) | 
|  | 181 | ifneq (,$(strip $(BUILD_ENV_SEQUENCE_NUMBER))) | 
|  | 182 | ifneq ($(BUILD_ENV_SEQUENCE_NUMBER),$(CORRECT_BUILD_ENV_SEQUENCE_NUMBER)) | 
|  | 183 | $(warning BUILD_ENV_SEQUENCE_NUMBER is set incorrectly.) | 
|  | 184 | $(info *** If you use envsetup/lunch/choosecombo:) | 
|  | 185 | $(info ***   - Re-execute envsetup (". envsetup.sh")) | 
|  | 186 | $(info ***   - Re-run lunch or choosecombo) | 
|  | 187 | $(info *** If you use buildspec.mk:) | 
|  | 188 | $(info ***   - Look at buildspec.mk.default to see what has changed) | 
|  | 189 | $(info ***   - Update BUILD_ENV_SEQUENCE_NUMBER to "$(CORRECT_BUILD_ENV_SEQUENCE_NUMBER)") | 
|  | 190 | $(error bailing..) | 
|  | 191 | endif | 
|  | 192 | endif | 
|  | 193 | endif | 
|  | 194 |  | 
|  | 195 |  | 
|  | 196 | # --------------------------------------------------------------- | 
|  | 197 | # Generic tools. | 
|  | 198 |  | 
|  | 199 | LEX:= flex | 
|  | 200 | YACC:= bison -d | 
|  | 201 | DOXYGEN:= doxygen | 
|  | 202 | AAPT := $(HOST_OUT_EXECUTABLES)/aapt$(HOST_EXECUTABLE_SUFFIX) | 
| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 203 | AIDL := $(HOST_OUT_EXECUTABLES)/aidl$(HOST_EXECUTABLE_SUFFIX) | 
|  | 204 | ICUDATA := $(HOST_OUT_EXECUTABLES)/icudata$(HOST_EXECUTABLE_SUFFIX) | 
|  | 205 | SIGNAPK_JAR := $(HOST_OUT_JAVA_LIBRARIES)/signapk$(COMMON_JAVA_PACKAGE_SUFFIX) | 
|  | 206 | MKBOOTFS := $(HOST_OUT_EXECUTABLES)/mkbootfs$(HOST_EXECUTABLE_SUFFIX) | 
| Doug Zongker | 8b70e8c | 2009-05-27 09:14:25 -0700 | [diff] [blame] | 207 | MINIGZIP := $(HOST_OUT_EXECUTABLES)/minigzip$(HOST_EXECUTABLE_SUFFIX) | 
| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 208 | MKBOOTIMG := $(HOST_OUT_EXECUTABLES)/mkbootimg$(HOST_EXECUTABLE_SUFFIX) | 
|  | 209 | MKYAFFS2 := $(HOST_OUT_EXECUTABLES)/mkyaffs2image$(HOST_EXECUTABLE_SUFFIX) | 
|  | 210 | APICHECK := $(HOST_OUT_EXECUTABLES)/apicheck$(HOST_EXECUTABLE_SUFFIX) | 
|  | 211 | FS_GET_STATS := $(HOST_OUT_EXECUTABLES)/fs_get_stats$(HOST_EXECUTABLE_SUFFIX) | 
|  | 212 | MKEXT2IMG := $(HOST_OUT_EXECUTABLES)/genext2fs$(HOST_EXECUTABLE_SUFFIX) | 
|  | 213 | MKEXT2BOOTIMG := external/genext2fs/mkbootimg_ext2.sh | 
|  | 214 | MKTARBALL := build/tools/mktarball.sh | 
|  | 215 | TUNE2FS := tune2fs | 
|  | 216 | E2FSCK := e2fsck | 
|  | 217 | JARJAR := java -jar $(HOST_OUT_JAVA_LIBRARIES)/jarjar.jar | 
| Joe Onorato | 2daa2b3 | 2009-08-30 13:39:24 -0700 | [diff] [blame] | 218 | PROGUARD := external/proguard/bin/proguard.sh | 
| Doug Zongker | 9bd4962 | 2009-11-30 14:28:59 -0800 | [diff] [blame] | 219 | JAVATAGS := build/tools/java-event-log-tags.py | 
| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 220 |  | 
| Raphael | 9ca1628 | 2010-04-16 17:50:09 -0700 | [diff] [blame] | 221 | # ACP is always for the build OS, not for the host OS | 
|  | 222 | ACP := $(BUILD_OUT_EXECUTABLES)/acp$(BUILD_EXECUTABLE_SUFFIX) | 
|  | 223 |  | 
| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 224 | # dx is java behind a shell script; no .exe necessary. | 
|  | 225 | DX := $(HOST_OUT_EXECUTABLES)/dx | 
|  | 226 | KCM := $(HOST_OUT_EXECUTABLES)/kcm$(HOST_EXECUTABLE_SUFFIX) | 
|  | 227 | ZIPALIGN := $(HOST_OUT_EXECUTABLES)/zipalign$(HOST_EXECUTABLE_SUFFIX) | 
|  | 228 | FINDBUGS := prebuilt/common/findbugs/bin/findbugs | 
|  | 229 | LOCALIZE := $(HOST_OUT_EXECUTABLES)/localize$(HOST_EXECUTABLE_SUFFIX) | 
|  | 230 | EMMA_JAR := external/emma/lib/emma$(COMMON_JAVA_PACKAGE_SUFFIX) | 
|  | 231 |  | 
|  | 232 | # Binary prelinker/compressor tools | 
|  | 233 | APRIORI := $(HOST_OUT_EXECUTABLES)/apriori$(HOST_EXECUTABLE_SUFFIX) | 
|  | 234 | LSD := $(HOST_OUT_EXECUTABLES)/lsd$(HOST_EXECUTABLE_SUFFIX) | 
| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 235 |  | 
|  | 236 | # Deal with archaic version of bison on Mac OS X. | 
|  | 237 | ifeq ($(filter 1.28,$(shell $(YACC) -V)),) | 
|  | 238 | YACC_HEADER_SUFFIX:= .hpp | 
|  | 239 | else | 
|  | 240 | YACC_HEADER_SUFFIX:= .cpp.h | 
|  | 241 | endif | 
|  | 242 |  | 
|  | 243 | # Don't use column under Windows, cygwin or not | 
|  | 244 | ifeq ($(HOST_OS),windows) | 
|  | 245 | COLUMN:= cat | 
|  | 246 | else | 
|  | 247 | COLUMN:= column | 
|  | 248 | endif | 
|  | 249 |  | 
|  | 250 | dir := $(shell uname) | 
|  | 251 | ifeq ($(HOST_OS),windows) | 
|  | 252 | dir := $(HOST_OS) | 
|  | 253 | endif | 
|  | 254 | ifeq ($(HOST_OS),darwin) | 
|  | 255 | dir := $(HOST_OS)-$(HOST_ARCH) | 
|  | 256 | endif | 
|  | 257 | OLD_FLEX := prebuilt/$(HOST_PREBUILT_TAG)/flex/flex-2.5.4a$(HOST_EXECUTABLE_SUFFIX) | 
|  | 258 |  | 
|  | 259 | ifeq ($(HOST_OS),darwin) | 
|  | 260 | # Mac OS' screwy version of java uses a non-standard directory layout | 
|  | 261 | # and doesn't even seem to have tools.jar.  On the other hand, javac seems | 
|  | 262 | # to be able to magically find the classes in there, wherever they are, so | 
|  | 263 | # leave this blank | 
|  | 264 | HOST_JDK_TOOLS_JAR := | 
|  | 265 | else | 
|  | 266 | HOST_JDK_TOOLS_JAR:= $(shell $(BUILD_SYSTEM)/find-jdk-tools-jar.sh) | 
|  | 267 | endif | 
|  | 268 |  | 
|  | 269 | # It's called md5 on Mac OS and md5sum on Linux | 
|  | 270 | ifeq ($(HOST_OS),darwin) | 
|  | 271 | MD5SUM:=md5 -q | 
|  | 272 | else | 
|  | 273 | MD5SUM:=md5sum | 
|  | 274 | endif | 
|  | 275 |  | 
|  | 276 | # ############################################################### | 
|  | 277 | # Set up final options. | 
|  | 278 | # ############################################################### | 
|  | 279 |  | 
|  | 280 | HOST_GLOBAL_CFLAGS += $(COMMON_GLOBAL_CFLAGS) | 
| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 281 | HOST_RELEASE_CFLAGS += $(COMMON_RELEASE_CFLAGS) | 
|  | 282 |  | 
|  | 283 | HOST_GLOBAL_CPPFLAGS += $(COMMON_GLOBAL_CPPFLAGS) | 
| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 284 | HOST_RELEASE_CPPFLAGS += $(COMMON_RELEASE_CPPFLAGS) | 
|  | 285 |  | 
|  | 286 | TARGET_GLOBAL_CFLAGS += $(COMMON_GLOBAL_CFLAGS) | 
| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 287 | TARGET_RELEASE_CFLAGS += $(COMMON_RELEASE_CFLAGS) | 
|  | 288 |  | 
|  | 289 | TARGET_GLOBAL_CPPFLAGS += $(COMMON_GLOBAL_CPPFLAGS) | 
| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 290 | TARGET_RELEASE_CPPFLAGS += $(COMMON_RELEASE_CPPFLAGS) | 
|  | 291 |  | 
|  | 292 | HOST_GLOBAL_LD_DIRS += -L$(HOST_OUT_INTERMEDIATE_LIBRARIES) | 
|  | 293 | TARGET_GLOBAL_LD_DIRS += -L$(TARGET_OUT_INTERMEDIATE_LIBRARIES) | 
|  | 294 |  | 
|  | 295 | HOST_PROJECT_INCLUDES:= $(SRC_HEADERS) $(SRC_HOST_HEADERS) $(HOST_OUT_HEADERS) | 
|  | 296 | TARGET_PROJECT_INCLUDES:= $(SRC_HEADERS) $(TARGET_OUT_HEADERS) | 
|  | 297 |  | 
|  | 298 | # Many host compilers don't support these flags, so we have to make | 
|  | 299 | # sure to only specify them for the target compilers checked in to | 
| Dave Bort | 9528248 | 2009-04-23 18:44:55 -0700 | [diff] [blame] | 300 | # the source tree. The simulator passes the target flags to the | 
| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 301 | # host compiler, so only set them for the target when the target | 
|  | 302 | # is not the simulator. | 
|  | 303 | ifneq ($(TARGET_SIMULATOR),true) | 
|  | 304 | TARGET_GLOBAL_CFLAGS += $(TARGET_ERROR_FLAGS) | 
|  | 305 | TARGET_GLOBAL_CPPFLAGS += $(TARGET_ERROR_FLAGS) | 
|  | 306 | endif | 
|  | 307 |  | 
| Dave Bort | 9528248 | 2009-04-23 18:44:55 -0700 | [diff] [blame] | 308 | HOST_GLOBAL_CFLAGS += $(HOST_RELEASE_CFLAGS) | 
|  | 309 | HOST_GLOBAL_CPPFLAGS += $(HOST_RELEASE_CPPFLAGS) | 
| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 310 |  | 
| Dave Bort | 9528248 | 2009-04-23 18:44:55 -0700 | [diff] [blame] | 311 | TARGET_GLOBAL_CFLAGS += $(TARGET_RELEASE_CFLAGS) | 
|  | 312 | TARGET_GLOBAL_CPPFLAGS += $(TARGET_RELEASE_CPPFLAGS) | 
| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 313 |  | 
| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 314 | PREBUILT_IS_PRESENT := $(if $(wildcard prebuilt/Android.mk),true) | 
|  | 315 |  | 
| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 316 | # ############################################################### | 
|  | 317 | # Collect a list of the SDK versions that we could compile against | 
|  | 318 | # For use with the LOCAL_SDK_VERSION variable for include $(BUILD_PACKAGE) | 
|  | 319 | # ############################################################### | 
|  | 320 |  | 
| Ying Wang | 0f6f4ca | 2010-06-09 10:26:26 -0700 | [diff] [blame] | 321 | HISTORICAL_SDK_VERSIONS_ROOT := $(TOPDIR)prebuilt/sdk | 
|  | 322 |  | 
|  | 323 | # Historical SDK version N is stored in $(HISTORICAL_SDK_VERSIONS_ROOT)/N. | 
|  | 324 | # The 'current' version is whatever this source tree is. | 
| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 325 | # | 
|  | 326 | # sgrax     is the opposite of xargs.  It takes the list of args and puts them | 
|  | 327 | #           on each line for sort to process. | 
|  | 328 | # sort -g   is a numeric sort, so 1 2 3 10 instead of 1 10 2 3. | 
| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 329 |  | 
| Ying Wang | 0f6f4ca | 2010-06-09 10:26:26 -0700 | [diff] [blame] | 330 | # Numerically sort a list of numbers | 
|  | 331 | # $(1): the list of numbers to be sorted | 
|  | 332 | define numerically_sort | 
|  | 333 | $(shell function sgrax() { \ | 
|  | 334 | while [ -n "$$1" ] ; do echo $$1 ; shift ; done \ | 
|  | 335 | } ; \ | 
|  | 336 | ( sgrax $(1) | sort -g ) ) | 
|  | 337 | endef | 
|  | 338 |  | 
|  | 339 | TARGET_AVAILABLE_SDK_VERSIONS := current $(call numerically_sort,\ | 
|  | 340 | $(patsubst $(HISTORICAL_SDK_VERSIONS_ROOT)/%/android.jar,%, \ | 
|  | 341 | $(wildcard $(HISTORICAL_SDK_VERSIONS_ROOT)/*/android.jar))) | 
| The Android Open Source Project | 88b6079 | 2009-03-03 19:28:42 -0800 | [diff] [blame] | 342 |  | 
|  | 343 | INTERNAL_PLATFORM_API_FILE := $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/public_api.xml |