| Elliott Hughes | c3d30bf | 2011-01-07 16:24:47 -0800 | [diff] [blame] | 1 | # -*- mode: makefile -*- | 
| Dan Bornstein | 6ac43c2 | 2009-10-24 15:33:49 -0700 | [diff] [blame] | 2 | # Copyright (C) 2007 The Android Open Source Project | 
 | 3 | # | 
 | 4 | # Licensed under the Apache License, Version 2.0 (the "License"); | 
 | 5 | # you may not use this file except in compliance with the License. | 
 | 6 | # You may obtain a copy of the License at | 
 | 7 | # | 
 | 8 | #      http://www.apache.org/licenses/LICENSE-2.0 | 
 | 9 | # | 
 | 10 | # Unless required by applicable law or agreed to in writing, software | 
 | 11 | # distributed under the License is distributed on an "AS IS" BASIS, | 
 | 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 | 13 | # See the License for the specific language governing permissions and | 
 | 14 | # limitations under the License. | 
 | 15 |  | 
 | 16 | # | 
 | 17 | # Definitions for building the native code needed for the core library. | 
 | 18 | # | 
 | 19 |  | 
 | 20 | # | 
 | 21 | # Common definitions for host and target. | 
 | 22 | # | 
 | 23 |  | 
| Dan Bornstein | 6ac43c2 | 2009-10-24 15:33:49 -0700 | [diff] [blame] | 24 | # These two definitions are used to help sanity check what's put in | 
 | 25 | # sub.mk. See, the "error" directives immediately below. | 
 | 26 | core_magic_local_target := ...//::default:://... | 
 | 27 | core_local_path := $(LOCAL_PATH) | 
 | 28 |  | 
 | 29 | # Include a submakefile, resolve its source file locations, | 
 | 30 | # and stick them on core_src_files.  The submakefiles are | 
 | 31 | # free to append to LOCAL_SRC_FILES, LOCAL_C_INCLUDES, | 
 | 32 | # LOCAL_SHARED_LIBRARIES, or LOCAL_STATIC_LIBRARIES, but nothing | 
 | 33 | # else. All other LOCAL_* variables will be ignored. | 
 | 34 | # | 
 | 35 | # $(1): directory containing the makefile to include | 
 | 36 | define include-core-native-dir | 
 | 37 |     LOCAL_SRC_FILES := | 
 | 38 |     include $(LOCAL_PATH)/$(1)/sub.mk | 
 | 39 |     ifneq ($$(LOCAL_MODULE),$(core_magic_local_target)) | 
 | 40 |         $$(error $(LOCAL_PATH)/$(1)/sub.mk should not include CLEAR_VARS \ | 
 | 41 |             or define LOCAL_MODULE) | 
 | 42 |     endif | 
 | 43 |     ifneq ($$(LOCAL_PATH),$(core_local_path)) | 
 | 44 |         $$(error $(LOCAL_PATH)/$(1)/sub.mk should not define LOCAL_PATH) | 
 | 45 |     endif | 
 | 46 |     core_src_files += $$(addprefix $(1)/,$$(LOCAL_SRC_FILES)) | 
 | 47 |     LOCAL_SRC_FILES := | 
 | 48 | endef | 
 | 49 |  | 
| Dan Bornstein | 6ac43c2 | 2009-10-24 15:33:49 -0700 | [diff] [blame] | 50 | # Set up the default state. Note: We use CLEAR_VARS here, even though | 
 | 51 | # we aren't quite defining a new rule yet, to make sure that the | 
 | 52 | # sub.mk files don't see anything stray from the last rule that was | 
 | 53 | # set up. | 
 | 54 | include $(CLEAR_VARS) | 
 | 55 | LOCAL_MODULE := $(core_magic_local_target) | 
| Elliott Hughes | 73d3e26 | 2012-08-28 17:56:09 -0700 | [diff] [blame] | 56 | LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk | 
| Dan Bornstein | 6ac43c2 | 2009-10-24 15:33:49 -0700 | [diff] [blame] | 57 | core_src_files := | 
 | 58 |  | 
 | 59 | # Include the sub.mk files. | 
 | 60 | $(foreach dir, \ | 
| Jean-Baptiste Queru | 2e7fae9 | 2012-04-19 13:15:27 -0700 | [diff] [blame] | 61 |     dalvik/src/main/native luni/src/main/native, \ | 
| Dan Bornstein | 6ac43c2 | 2009-10-24 15:33:49 -0700 | [diff] [blame] | 62 |     $(eval $(call include-core-native-dir,$(dir)))) | 
 | 63 |  | 
 | 64 | # Extract out the allowed LOCAL_* variables. Note: $(sort) also | 
 | 65 | # removes duplicates. | 
| Jean-Baptiste Queru | 6e1c2a9 | 2010-04-30 10:13:35 -0700 | [diff] [blame] | 66 | core_c_includes := $(sort libcore/include $(LOCAL_C_INCLUDES) $(JNI_H_INCLUDE)) | 
| Dan Bornstein | 6ac43c2 | 2009-10-24 15:33:49 -0700 | [diff] [blame] | 67 | core_shared_libraries := $(sort $(LOCAL_SHARED_LIBRARIES)) | 
 | 68 | core_static_libraries := $(sort $(LOCAL_STATIC_LIBRARIES)) | 
 | 69 |  | 
 | 70 |  | 
 | 71 | # | 
 | 72 | # Build for the target (device). | 
 | 73 | # | 
 | 74 |  | 
 | 75 | include $(CLEAR_VARS) | 
 | 76 |  | 
| Elliott Hughes | 24144d4 | 2010-08-12 15:54:56 -0700 | [diff] [blame] | 77 | LOCAL_CFLAGS += -Wall -Wextra -Werror | 
| Elliott Hughes | 2f03cca | 2011-03-08 14:36:03 -0800 | [diff] [blame] | 78 | LOCAL_CFLAGS += $(core_cflags) | 
| Andy McFadden | 1f504c8 | 2012-01-20 14:13:31 -0800 | [diff] [blame] | 79 | LOCAL_CPPFLAGS += $(core_cppflags) | 
| Elliott Hughes | 64f2ba4 | 2010-02-02 23:06:12 -0800 | [diff] [blame] | 80 | ifeq ($(TARGET_ARCH),arm) | 
 | 81 | # Ignore "note: the mangling of 'va_list' has changed in GCC 4.4" | 
 | 82 | LOCAL_CFLAGS += -Wno-psabi | 
 | 83 | endif | 
 | 84 |  | 
| Dan Bornstein | 6ac43c2 | 2009-10-24 15:33:49 -0700 | [diff] [blame] | 85 | # Define the rules. | 
 | 86 | LOCAL_SRC_FILES := $(core_src_files) | 
| Marco Nelissen | bb25321 | 2010-11-22 15:58:23 -0800 | [diff] [blame] | 87 | LOCAL_C_INCLUDES := $(core_c_includes) | 
| Elliott Hughes | 7cd6760 | 2012-05-03 17:21:04 -0700 | [diff] [blame] | 88 | LOCAL_SHARED_LIBRARIES := $(core_shared_libraries) libexpat libicuuc libicui18n libssl libcrypto libz libnativehelper | 
| Dan Bornstein | 6ac43c2 | 2009-10-24 15:33:49 -0700 | [diff] [blame] | 89 | LOCAL_STATIC_LIBRARIES := $(core_static_libraries) | 
| Jesse Wilson | 53fbc0a | 2010-09-16 15:46:05 -0700 | [diff] [blame] | 90 | LOCAL_MODULE_TAGS := optional | 
| Dan Bornstein | 6ac43c2 | 2009-10-24 15:33:49 -0700 | [diff] [blame] | 91 | LOCAL_MODULE := libjavacore | 
| Elliott Hughes | 73d3e26 | 2012-08-28 17:56:09 -0700 | [diff] [blame] | 92 | LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk | 
| Brian Carlstrom | 2cfb2ad | 2010-11-19 10:44:43 -0800 | [diff] [blame] | 93 |  | 
| Elliott Hughes | c3d30bf | 2011-01-07 16:24:47 -0800 | [diff] [blame] | 94 | LOCAL_C_INCLUDES += external/stlport/stlport bionic/ bionic/libstdc++/include | 
| Brian Carlstrom | 2cfb2ad | 2010-11-19 10:44:43 -0800 | [diff] [blame] | 95 | LOCAL_SHARED_LIBRARIES += libstlport | 
| Brian Carlstrom | 2cfb2ad | 2010-11-19 10:44:43 -0800 | [diff] [blame] | 96 |  | 
| Elliott Hughes | 7cd6760 | 2012-05-03 17:21:04 -0700 | [diff] [blame] | 97 | include $(BUILD_SHARED_LIBRARY) | 
| Dan Bornstein | 6ac43c2 | 2009-10-24 15:33:49 -0700 | [diff] [blame] | 98 |  | 
| Dan Bornstein | 6ac43c2 | 2009-10-24 15:33:49 -0700 | [diff] [blame] | 99 | # | 
 | 100 | # Build for the host. | 
 | 101 | # | 
 | 102 |  | 
 | 103 | ifeq ($(WITH_HOST_DALVIK),true) | 
| Dan Bornstein | 6ac43c2 | 2009-10-24 15:33:49 -0700 | [diff] [blame] | 104 |     include $(CLEAR_VARS) | 
| Dan Bornstein | 6ac43c2 | 2009-10-24 15:33:49 -0700 | [diff] [blame] | 105 |     # Define the rules. | 
 | 106 |     LOCAL_SRC_FILES := $(core_src_files) | 
| Elliott Hughes | 2f03cca | 2011-03-08 14:36:03 -0800 | [diff] [blame] | 107 |     LOCAL_CFLAGS += $(core_cflags) | 
| Dan Bornstein | 6ac43c2 | 2009-10-24 15:33:49 -0700 | [diff] [blame] | 108 |     LOCAL_C_INCLUDES := $(core_c_includes) | 
| Elliott Hughes | 7cd6760 | 2012-05-03 17:21:04 -0700 | [diff] [blame] | 109 |     LOCAL_CPPFLAGS += $(core_cppflags) | 
 | 110 |     LOCAL_LDLIBS += -ldl -lpthread | 
| Jesse Wilson | 53fbc0a | 2010-09-16 15:46:05 -0700 | [diff] [blame] | 111 |     LOCAL_MODULE_TAGS := optional | 
| Elliott Hughes | 7cd6760 | 2012-05-03 17:21:04 -0700 | [diff] [blame] | 112 |     LOCAL_MODULE := libjavacore | 
| Elliott Hughes | 73d3e26 | 2012-08-28 17:56:09 -0700 | [diff] [blame] | 113 |     LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk | 
| Elliott Hughes | 7cd6760 | 2012-05-03 17:21:04 -0700 | [diff] [blame] | 114 |     LOCAL_SHARED_LIBRARIES := $(core_shared_libraries) libexpat libicuuc libicui18n libssl libcrypto libz-host | 
 | 115 |     LOCAL_STATIC_LIBRARIES := $(core_static_libraries) | 
 | 116 |     include $(BUILD_HOST_SHARED_LIBRARY) | 
| Elliott Hughes | 845ce3c | 2009-11-13 17:07:00 -0800 | [diff] [blame] | 117 | endif |