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 := -Wall -Wextra -Werror 70 core_cppflags += -std=gnu++11 71 72 core_test_files := \ 73 luni/src/test/native/test_openssl_engine.cpp \ 74 75 # 76 # Build for the target (device). 77 # 78 79 include $(CLEAR_VARS) 80 LOCAL_CFLAGS += $(core_cflags) 81 LOCAL_CPPFLAGS += $(core_cppflags) 82 LOCAL_SRC_FILES += $(core_src_files) 83 LOCAL_C_INCLUDES += $(core_c_includes) 84 LOCAL_SHARED_LIBRARIES += $(core_shared_libraries) libcrypto libexpat libicuuc libicui18n libnativehelper libz 85 LOCAL_STATIC_LIBRARIES += $(core_static_libraries) 86 LOCAL_MODULE_TAGS := optional 87 LOCAL_MODULE := libjavacore 88 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk 89 include external/stlport/libstlport.mk 90 include $(BUILD_SHARED_LIBRARY) 91 92 # Platform conscrypt crypto library 93 include $(CLEAR_VARS) 94 LOCAL_CFLAGS += $(core_cflags) 95 LOCAL_CFLAGS += -DJNI_JARJAR_PREFIX="com/android/" 96 LOCAL_CPPFLAGS += $(core_cppflags) 97 LOCAL_SRC_FILES := \ 98 crypto/src/main/native/org_conscrypt_NativeCrypto.cpp 99 LOCAL_C_INCLUDES += $(core_c_includes) \ 100 libcore/luni/src/main/native 101 LOCAL_SHARED_LIBRARIES += $(core_shared_libraries) libcrypto libssl libnativehelper libz libjavacore 102 LOCAL_STATIC_LIBRARIES += $(core_static_libraries) 103 LOCAL_MODULE_TAGS := optional 104 LOCAL_MODULE := libjavacrypto 105 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk 106 include external/stlport/libstlport.mk 107 include $(BUILD_SHARED_LIBRARY) 108 109 # Test JNI library. 110 ifeq ($(LIBCORE_SKIP_TESTS),) 111 112 include $(CLEAR_VARS) 113 LOCAL_CFLAGS += $(core_cflags) 114 LOCAL_CPPFLAGS += $(core_cppflags) 115 LOCAL_SRC_FILES += $(core_test_files) 116 LOCAL_C_INCLUDES += libcore/include external/openssl/include 117 LOCAL_SHARED_LIBRARIES += libcrypto 118 LOCAL_MODULE_TAGS := optional 119 LOCAL_MODULE := libjavacoretests 120 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk 121 include external/stlport/libstlport.mk 122 include $(BUILD_SHARED_LIBRARY) 123 124 endif # LIBCORE_SKIP_TESTS 125 126 127 # 128 # Build for the host. 129 # 130 131 ifeq ($(WITH_HOST_DALVIK),true) 132 include $(CLEAR_VARS) 133 LOCAL_SRC_FILES += $(core_src_files) 134 LOCAL_CFLAGS += $(core_cflags) 135 LOCAL_C_INCLUDES += $(core_c_includes) 136 LOCAL_CPPFLAGS += $(core_cppflags) 137 LOCAL_LDLIBS += -ldl -lpthread -lrt 138 LOCAL_MODULE_TAGS := optional 139 LOCAL_MODULE := libjavacore 140 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk 141 LOCAL_SHARED_LIBRARIES += $(core_shared_libraries) libexpat-host libicuuc-host libicui18n-host libcrypto-host libz-host 142 LOCAL_STATIC_LIBRARIES += $(core_static_libraries) 143 include $(BUILD_HOST_SHARED_LIBRARY) 144 145 # Conscrypt native library for host 146 include $(CLEAR_VARS) 147 LOCAL_SRC_FILES += \ 148 crypto/src/main/native/org_conscrypt_NativeCrypto.cpp 149 LOCAL_C_INCLUDES += $(core_c_includes) \ 150 libcore/luni/src/main/native 151 LOCAL_CPPFLAGS += $(core_cppflags) 152 LOCAL_LDLIBS += -lpthread 153 LOCAL_MODULE_TAGS := optional 154 LOCAL_MODULE := libjavacrypto 155 LOCAL_CFLAGS += -DJNI_JARJAR_PREFIX="com/android/" 156 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk 157 LOCAL_SHARED_LIBRARIES += $(core_shared_libraries) libssl-host libcrypto-host libjavacore 158 LOCAL_STATIC_LIBRARIES += $(core_static_libraries) 159 include $(BUILD_HOST_SHARED_LIBRARY) 160 161 # Conscrypt native library for nojarjar'd version 162 include $(CLEAR_VARS) 163 LOCAL_SRC_FILES += \ 164 crypto/src/main/native/org_conscrypt_NativeCrypto.cpp 165 LOCAL_C_INCLUDES += $(core_c_includes) \ 166 libcore/luni/src/main/native 167 LOCAL_CPPFLAGS += $(core_cppflags) 168 LOCAL_LDLIBS += -lpthread 169 LOCAL_MODULE_TAGS := optional 170 LOCAL_MODULE := libconscrypt_jni 171 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk 172 LOCAL_SHARED_LIBRARIES += $(core_shared_libraries) libssl-host libcrypto-host libjavacore 173 LOCAL_STATIC_LIBRARIES += $(core_static_libraries) 174 include $(BUILD_HOST_SHARED_LIBRARY) 175 176 ifeq ($(LIBCORE_SKIP_TESTS),) 177 include $(CLEAR_VARS) 178 LOCAL_SRC_FILES += $(core_test_files) 179 LOCAL_CFLAGS += $(core_cflags) 180 LOCAL_C_INCLUDES += libcore/include external/openssl/include 181 LOCAL_CPPFLAGS += $(core_cppflags) 182 LOCAL_LDLIBS += -ldl -lpthread 183 LOCAL_MODULE_TAGS := optional 184 LOCAL_MODULE := libjavacoretests 185 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk 186 LOCAL_SHARED_LIBRARIES := libcrypto-host 187 include $(BUILD_HOST_SHARED_LIBRARY) 188 endif # LIBCORE_SKIP_TESTS 189 endif 190