1 # -*- mode: makefile -*- 2 # Copyright (C) 2013 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 Conscrypt Java library, native code, 18 # and associated tests. 19 # 20 21 # 22 # Common definitions for host and target. 23 # 24 25 # Conscrypt is divided into modules. 26 # 27 # The structure is: 28 # 29 # src/ 30 # main/ # To be shipped on every device. 31 # java/ # Java source for library code. 32 # native/ # C++ source for library code. 33 # resources/ # Support files. 34 # test/ # Built only on demand, for testing. 35 # java/ # Java source for tests. 36 # native/ # C++ source for tests (rare). 37 # resources/ # Support files. 38 # 39 # All subdirectories are optional (hence the "2> /dev/null"s below). 40 41 LOCAL_PATH := $(call my-dir) 42 43 local_javac_flags=-encoding UTF-8 44 #local_javac_flags+=-Xlint:all -Xlint:-serial,-deprecation,-unchecked 45 local_javac_flags+=-Xmaxwarns 9999999 46 47 core_cflags := -Wall -Wextra -Werror 48 core_cppflags := -std=gnu++11 49 50 # 51 # Build for the target (device). 52 # 53 54 # Create the conscrypt library 55 include $(CLEAR_VARS) 56 LOCAL_SRC_FILES := $(call all-java-files-under,src/main/java) 57 LOCAL_SRC_FILES += $(call all-java-files-under,src/platform/java) 58 LOCAL_JAVA_LIBRARIES := core-libart 59 LOCAL_NO_STANDARD_LIBRARIES := true 60 LOCAL_JAVACFLAGS := $(local_javac_flags) 61 LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt 62 LOCAL_MODULE_TAGS := optional 63 LOCAL_MODULE := conscrypt 64 LOCAL_REQUIRED_MODULES := libjavacrypto 65 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 66 include $(BUILD_JAVA_LIBRARY) 67 68 # Create the conscrypt library without jarjar for tests 69 include $(CLEAR_VARS) 70 LOCAL_SRC_FILES := $(call all-java-files-under,src/main/java) 71 LOCAL_SRC_FILES += $(call all-java-files-under,src/platform/java) 72 LOCAL_JAVA_LIBRARIES := core-libart 73 LOCAL_NO_STANDARD_LIBRARIES := true 74 LOCAL_JAVACFLAGS := $(local_javac_flags) 75 LOCAL_MODULE_TAGS := optional 76 LOCAL_MODULE := conscrypt-nojarjar 77 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 78 include $(BUILD_STATIC_JAVA_LIBRARY) 79 80 ifeq ($(LIBCORE_SKIP_TESTS),) 81 # Make the conscrypt-tests library. 82 include $(CLEAR_VARS) 83 LOCAL_SRC_FILES := $(call all-java-files-under,src/test/java) 84 LOCAL_NO_STANDARD_LIBRARIES := true 85 LOCAL_JAVA_LIBRARIES := core-libart core-junit bouncycastle 86 LOCAL_STATIC_JAVA_LIBRARIES := core-tests-support conscrypt-nojarjar 87 LOCAL_JAVACFLAGS := $(local_javac_flags) 88 LOCAL_MODULE_TAGS := optional 89 LOCAL_MODULE := conscrypt-tests 90 LOCAL_REQUIRED_MODULES := libjavacrypto 91 LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt 92 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 93 include $(BUILD_STATIC_JAVA_LIBRARY) 94 endif 95 96 # Platform conscrypt crypto JNI library 97 include $(CLEAR_VARS) 98 LOCAL_CFLAGS += $(core_cflags) 99 LOCAL_CFLAGS += -DJNI_JARJAR_PREFIX="com/android/" 100 LOCAL_CPPFLAGS += $(core_cppflags) 101 LOCAL_SRC_FILES := \ 102 src/main/native/org_conscrypt_NativeCrypto.cpp 103 LOCAL_C_INCLUDES += \ 104 external/openssl/include \ 105 external/openssl \ 106 libcore/include \ 107 libcore/luni/src/main/native 108 LOCAL_SHARED_LIBRARIES := libcrypto libjavacore liblog libnativehelper libssl libz 109 LOCAL_MODULE_TAGS := optional 110 LOCAL_MODULE := libjavacrypto 111 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 112 include $(BUILD_SHARED_LIBRARY) 113 114 # Unbundled Conscrypt jar 115 include $(CLEAR_VARS) 116 LOCAL_SRC_FILES := $(call all-java-files-under,src/main/java) 117 LOCAL_SRC_FILES += $(call all-java-files-under,src/compat/java) 118 LOCAL_SDK_VERSION := 9 119 LOCAL_JAVACFLAGS := $(local_javac_flags) 120 LOCAL_MODULE_TAGS := optional 121 LOCAL_MODULE := conscrypt_unbundled 122 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 123 include $(BUILD_STATIC_JAVA_LIBRARY) 124 125 # Unbundled Conscrypt crypto JNI library 126 include $(CLEAR_VARS) 127 LOCAL_CFLAGS += $(core_cflags) 128 LOCAL_CPPFLAGS += $(core_cppflags) 129 LOCAL_SRC_FILES := \ 130 src/main/native/org_conscrypt_NativeCrypto.cpp \ 131 src/compat/native/JNIHelp.cpp 132 LOCAL_C_INCLUDES += \ 133 external/openssl/include \ 134 external/openssl \ 135 external/conscrypt/src/compat/native 136 LOCAL_LDFLAGS := -llog -lz -ldl 137 LOCAL_STATIC_LIBRARIES := libssl_static libcrypto_static 138 LOCAL_MODULE_TAGS := optional 139 LOCAL_MODULE := libconscrypt_jni 140 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 141 LOCAL_SDK_VERSION := 9 142 include $(BUILD_SHARED_LIBRARY) 143 144 # Static unbundled Conscrypt crypto JNI library 145 include $(CLEAR_VARS) 146 LOCAL_CFLAGS += $(core_cflags) 147 LOCAL_CPPFLAGS += $(core_cppflags) -DJNI_JARJAR_PREFIX="com/google/android/gms/" -DCONSCRYPT_UNBUNDLED -DSTATIC_LIB 148 LOCAL_SRC_FILES := \ 149 src/main/native/org_conscrypt_NativeCrypto.cpp \ 150 src/compat/native/JNIHelp.cpp 151 LOCAL_C_INCLUDES += \ 152 external/openssl/include \ 153 external/openssl \ 154 external/conscrypt/src/compat/native 155 LOCAL_MODULE_TAGS := optional 156 LOCAL_MODULE := libconscrypt_static 157 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 158 LOCAL_SDK_VERSION := 9 159 include $(BUILD_STATIC_LIBRARY) 160 161 # 162 # Build for the host. 163 # 164 165 # Make the conscrypt-hostdex library 166 include $(CLEAR_VARS) 167 LOCAL_SRC_FILES := $(call all-java-files-under,src/main/java) 168 LOCAL_SRC_FILES += $(call all-java-files-under,src/platform/java) 169 LOCAL_JAVACFLAGS := $(local_javac_flags) 170 LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt 171 LOCAL_MODULE_TAGS := optional 172 LOCAL_MODULE := conscrypt-hostdex 173 LOCAL_REQUIRED_MODULES := libjavacrypto 174 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 175 include $(BUILD_HOST_DALVIK_JAVA_LIBRARY) 176 177 # Make the conscrypt-hostdex-nojarjar for tests 178 include $(CLEAR_VARS) 179 LOCAL_SRC_FILES := $(call all-java-files-under,src/main/java) 180 LOCAL_SRC_FILES += $(call all-java-files-under,src/platform/java) 181 LOCAL_JAVACFLAGS := $(local_javac_flags) 182 LOCAL_BUILD_HOST_DEX := true 183 LOCAL_MODULE_TAGS := optional 184 LOCAL_MODULE := conscrypt-hostdex-nojarjar 185 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 186 include $(BUILD_HOST_DALVIK_JAVA_LIBRARY) 187 188 # Make the conscrypt-tests library. 189 ifeq ($(LIBCORE_SKIP_TESTS),) 190 include $(CLEAR_VARS) 191 LOCAL_SRC_FILES := $(call all-java-files-under,src/test/java) 192 LOCAL_JAVA_LIBRARIES := bouncycastle-hostdex core-junit-hostdex core-tests-support-hostdex conscrypt-hostdex-nojarjar 193 LOCAL_JAVACFLAGS := $(local_javac_flags) 194 LOCAL_MODULE_TAGS := optional 195 LOCAL_MODULE := conscrypt-tests-hostdex 196 LOCAL_REQUIRED_MODULES := libjavacrypto 197 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 198 include $(BUILD_HOST_DALVIK_JAVA_LIBRARY) 199 endif 200 201 # Conscrypt native library for host 202 include $(CLEAR_VARS) 203 LOCAL_CLANG := true 204 LOCAL_SRC_FILES += \ 205 src/main/native/org_conscrypt_NativeCrypto.cpp 206 LOCAL_C_INCLUDES += \ 207 external/openssl/include \ 208 external/openssl \ 209 libcore/include \ 210 libcore/luni/src/main/native 211 LOCAL_CPPFLAGS += $(core_cppflags) 212 LOCAL_LDLIBS += -lpthread 213 LOCAL_MODULE_TAGS := optional 214 LOCAL_MODULE := libjavacrypto 215 LOCAL_CFLAGS += -DJNI_JARJAR_PREFIX="com/android/" 216 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 217 LOCAL_SHARED_LIBRARIES := libcrypto-host libjavacore liblog libnativehelper libssl-host 218 include $(BUILD_HOST_SHARED_LIBRARY) 219 220 # Conscrypt native library for nojarjar'd version 221 # Don't build this for unbundled conscrypt build 222 ifeq (,$(TARGET_BUILD_APPS)) 223 include $(CLEAR_VARS) 224 LOCAL_CLANG := true 225 LOCAL_SRC_FILES += \ 226 src/main/native/org_conscrypt_NativeCrypto.cpp 227 LOCAL_C_INCLUDES += \ 228 external/openssl/include \ 229 external/openssl \ 230 libcore/include \ 231 libcore/luni/src/main/native 232 LOCAL_CPPFLAGS += $(core_cppflags) -DCONSCRYPT_NOT_UNBUNDLED 233 LOCAL_LDLIBS += -lpthread 234 LOCAL_MODULE_TAGS := optional 235 LOCAL_MODULE := libconscrypt_jni 236 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 237 LOCAL_SHARED_LIBRARIES := libcrypto-host libjavacore liblog libnativehelper libssl-host 238 include $(BUILD_HOST_SHARED_LIBRARY) 239 endif 240