1 # -*- mode: makefile -*- 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 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 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 55 include $(CLEAR_VARS) 56 LOCAL_MODULE := $(core_magic_local_target) 57 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk 58 core_src_files := 59 60 # Include the sub.mk files. 61 $(foreach dir, \ 62 dalvik/src/main/native luni/src/main/native, \ 63 $(eval $(call include-core-native-dir,$(dir)))) 64 65 # Extract out the allowed LOCAL_* variables. 66 core_c_includes := libcore/include $(LOCAL_C_INCLUDES) 67 core_shared_libraries := $(LOCAL_SHARED_LIBRARIES) 68 core_static_libraries := $(LOCAL_STATIC_LIBRARIES) 69 core_cflags := $(LOCAL_CFLAGS) -Wall -Wextra -Werror 70 core_cppflags += -std=gnu++11 71 72 core_test_files := \ 73 luni/src/test/native/dalvik_system_JniTest.cpp \ 74 luni/src/test/native/test_openssl_engine.cpp \ 75 76 # 77 # Build for the target (device). 78 # 79 80 include $(CLEAR_VARS) 81 LOCAL_CFLAGS += $(core_cflags) 82 LOCAL_CPPFLAGS += $(core_cppflags) 83 LOCAL_SRC_FILES += $(core_src_files) 84 LOCAL_C_INCLUDES += $(core_c_includes) 85 LOCAL_SHARED_LIBRARIES += $(core_shared_libraries) libcrypto libdl libexpat libicuuc libicui18n libnativehelper libz libutils 86 LOCAL_STATIC_LIBRARIES += $(core_static_libraries) libziparchive 87 LOCAL_MODULE_TAGS := optional 88 LOCAL_MODULE := libjavacore 89 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk 90 include external/stlport/libstlport.mk 91 include $(BUILD_SHARED_LIBRARY) 92 93 # Test JNI library. 94 ifeq ($(LIBCORE_SKIP_TESTS),) 95 96 include $(CLEAR_VARS) 97 LOCAL_CFLAGS += $(core_cflags) 98 LOCAL_CPPFLAGS += $(core_cppflags) 99 LOCAL_SRC_FILES += $(core_test_files) 100 LOCAL_C_INCLUDES += libcore/include external/openssl/include 101 LOCAL_SHARED_LIBRARIES += libcrypto 102 LOCAL_MODULE_TAGS := optional 103 LOCAL_MODULE := libjavacoretests 104 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk 105 include external/stlport/libstlport.mk 106 include $(BUILD_SHARED_LIBRARY) 107 108 endif # LIBCORE_SKIP_TESTS 109 110 111 # 112 # Build for the host. 113 # 114 115 include $(CLEAR_VARS) 116 LOCAL_CLANG := true 117 LOCAL_SRC_FILES += $(core_src_files) 118 LOCAL_CFLAGS += $(core_cflags) 119 LOCAL_C_INCLUDES += $(core_c_includes) 120 LOCAL_CPPFLAGS += $(core_cppflags) 121 LOCAL_LDLIBS += -ldl -lpthread 122 ifeq ($(HOST_OS),linux) 123 LOCAL_LDLIBS += -lrt 124 endif 125 LOCAL_MODULE_TAGS := optional 126 LOCAL_MODULE := libjavacore 127 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk 128 LOCAL_SHARED_LIBRARIES += $(core_shared_libraries) libexpat-host libicuuc-host libicui18n-host libcrypto-host libz-host 129 LOCAL_STATIC_LIBRARIES += $(core_static_libraries) libziparchive-host libutils 130 LOCAL_MULTILIB := both 131 include $(BUILD_HOST_SHARED_LIBRARY) 132 133 ifeq ($(LIBCORE_SKIP_TESTS),) 134 include $(CLEAR_VARS) 135 LOCAL_CLANG := true 136 LOCAL_SRC_FILES += $(core_test_files) 137 LOCAL_CFLAGS += $(core_cflags) 138 LOCAL_C_INCLUDES += libcore/include external/openssl/include 139 LOCAL_CPPFLAGS += $(core_cppflags) 140 LOCAL_LDLIBS += -ldl -lpthread 141 LOCAL_MODULE_TAGS := optional 142 LOCAL_MODULE := libjavacoretests 143 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk 144 LOCAL_SHARED_LIBRARIES := libcrypto-host 145 include $(BUILD_HOST_SHARED_LIBRARY) 146 endif # LIBCORE_SKIP_TESTS 147