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:=-Xmaxwarns 9999999 44 #local_javac_flags+=-Xlint:all -Xlint:-serial,-deprecation,-unchecked 45 46 core_cflags := -Wall -Wextra -Werror -Wunused 47 core_cppflags := -std=gnu++11 -Wall -Wextra -Werror -Wunused 48 49 # 50 # Build for the target (device). 51 # 52 53 include $(CLEAR_VARS) 54 LOCAL_CPP_EXTENSION := cc 55 LOCAL_SRC_FILES := src/gen/native/generate_constants.cc 56 LOCAL_MODULE := conscrypt_generate_constants 57 LOCAL_SHARED_LIBRARIES := libcrypto-host libssl-host 58 include $(BUILD_HOST_EXECUTABLE) 59 60 conscrypt_generate_constants_exe := $(LOCAL_INSTALLED_MODULE) 61 conscrypt_gen_java_files := $(TARGET_OUT_COMMON_GEN)/conscrypt/NativeConstants.java 62 63 $(conscrypt_gen_java_files): $(conscrypt_generate_constants_exe) 64 mkdir -p $(dir $@) 65 $< > $@ 66 67 # Create the conscrypt library 68 include $(CLEAR_VARS) 69 LOCAL_SRC_FILES := $(call all-java-files-under,src/main/java) 70 LOCAL_SRC_FILES += $(call all-java-files-under,src/platform/java) 71 LOCAL_GENERATED_SOURCES := $(conscrypt_gen_java_files) 72 LOCAL_JAVA_LIBRARIES := core-libart 73 LOCAL_NO_STANDARD_LIBRARIES := true 74 LOCAL_JAVACFLAGS := $(local_javac_flags) 75 LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt 76 LOCAL_MODULE_TAGS := optional 77 LOCAL_MODULE := conscrypt 78 LOCAL_REQUIRED_MODULES := libjavacrypto 79 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 80 include $(BUILD_JAVA_LIBRARY) 81 82 # Create the conscrypt library without jarjar for tests 83 include $(CLEAR_VARS) 84 LOCAL_SRC_FILES := $(call all-java-files-under,src/main/java) 85 LOCAL_SRC_FILES += $(call all-java-files-under,src/platform/java) 86 LOCAL_GENERATED_SOURCES := $(conscrypt_gen_java_files) 87 LOCAL_JAVA_LIBRARIES := core-libart 88 LOCAL_NO_STANDARD_LIBRARIES := true 89 LOCAL_JAVACFLAGS := $(local_javac_flags) 90 LOCAL_MODULE_TAGS := optional 91 LOCAL_MODULE := conscrypt-nojarjar 92 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 93 include $(BUILD_STATIC_JAVA_LIBRARY) 94 95 ifeq ($(LIBCORE_SKIP_TESTS),) 96 # Make the conscrypt-tests library. 97 include $(CLEAR_VARS) 98 LOCAL_SRC_FILES := $(call all-java-files-under,src/test/java) 99 LOCAL_NO_STANDARD_LIBRARIES := true 100 LOCAL_JAVA_LIBRARIES := core-libart core-junit bouncycastle 101 LOCAL_STATIC_JAVA_LIBRARIES := core-tests-support conscrypt-nojarjar 102 LOCAL_JAVACFLAGS := $(local_javac_flags) 103 LOCAL_MODULE_TAGS := optional 104 LOCAL_MODULE := conscrypt-tests 105 LOCAL_REQUIRED_MODULES := libjavacrypto 106 LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt 107 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 108 include $(BUILD_STATIC_JAVA_LIBRARY) 109 endif 110 111 # Platform conscrypt crypto JNI library 112 include $(CLEAR_VARS) 113 ifneq (,$(wildcard $(TOP)/external/boringssl/flavor.mk)) 114 include $(TOP)/external/boringssl/flavor.mk 115 else 116 include $(TOP)/external/openssl/flavor.mk 117 endif 118 LOCAL_CFLAGS += $(core_cflags) 119 LOCAL_CFLAGS += -DJNI_JARJAR_PREFIX="com/android/" 120 LOCAL_CPPFLAGS += $(core_cppflags) 121 LOCAL_SRC_FILES := \ 122 src/main/native/org_conscrypt_NativeCrypto.cpp 123 LOCAL_C_INCLUDES += \ 124 external/openssl/include \ 125 external/openssl \ 126 libcore/include \ 127 libcore/luni/src/main/native 128 LOCAL_SHARED_LIBRARIES := libcrypto libjavacore liblog libnativehelper libssl libz 129 ifeq ($(OPENSSL_FLAVOR),BoringSSL) 130 LOCAL_SHARED_LIBRARIES += libkeystore-engine 131 endif 132 LOCAL_MODULE_TAGS := optional 133 LOCAL_MODULE := libjavacrypto 134 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 135 include $(BUILD_SHARED_LIBRARY) 136 137 # Unbundled Conscrypt jar 138 include $(CLEAR_VARS) 139 LOCAL_SRC_FILES := $(call all-java-files-under,src/main/java) 140 LOCAL_SRC_FILES += $(call all-java-files-under,src/compat/java) 141 LOCAL_GENERATED_SOURCES := $(conscrypt_gen_java_files) 142 LOCAL_SDK_VERSION := 9 143 LOCAL_JAVACFLAGS := $(local_javac_flags) 144 LOCAL_MODULE_TAGS := optional 145 LOCAL_MODULE := conscrypt_unbundled 146 LOCAL_JAVA_LIBRARIES := conscrypt-stubs 147 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 148 LOCAL_JACK_FLAGS := -D jack.classpath.default-libraries=false 149 include $(BUILD_STATIC_JAVA_LIBRARY) 150 151 # Stub library for unbundled builds 152 include $(CLEAR_VARS) 153 LOCAL_SRC_FILES := $(call all-java-files-under,src/stub/java) 154 LOCAL_SDK_VERSION := 9 155 LOCAL_JAVACFLAGS := $(local_javac_flags) 156 LOCAL_MODULE := conscrypt-stubs 157 LOCAL_JACK_FLAGS := -D jack.classpath.default-libraries=false 158 include $(BUILD_STATIC_JAVA_LIBRARY) 159 160 # Unbundled Conscrypt crypto JNI library 161 include $(CLEAR_VARS) 162 LOCAL_CFLAGS += $(core_cflags) 163 LOCAL_CPPFLAGS += $(core_cppflags) 164 LOCAL_SRC_FILES := \ 165 src/main/native/org_conscrypt_NativeCrypto.cpp \ 166 src/compat/native/JNIHelp.cpp 167 LOCAL_C_INCLUDES += \ 168 external/openssl/include \ 169 external/openssl \ 170 external/conscrypt/src/compat/native 171 # NO_KEYSTORE_ENGINE instructs the BoringSSL build of Conscrypt not to support 172 # the keystore ENGINE. It is not available in this build configuration. 173 LOCAL_CFLAGS += -DNO_KEYSTORE_ENGINE 174 LOCAL_LDFLAGS := -llog -lz -ldl 175 LOCAL_STATIC_LIBRARIES := libssl_static libcrypto_static 176 LOCAL_MODULE_TAGS := optional 177 LOCAL_MODULE := libconscrypt_jni 178 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 179 LOCAL_SDK_VERSION := 9 180 include $(BUILD_SHARED_LIBRARY) 181 182 # Static unbundled Conscrypt crypto JNI library 183 include $(CLEAR_VARS) 184 LOCAL_CFLAGS += $(core_cflags) 185 LOCAL_CPPFLAGS += $(core_cppflags) -DJNI_JARJAR_PREFIX="com/google/android/gms/" -DCONSCRYPT_UNBUNDLED -DSTATIC_LIB 186 LOCAL_SRC_FILES := \ 187 src/main/native/org_conscrypt_NativeCrypto.cpp \ 188 src/compat/native/JNIHelp.cpp 189 LOCAL_C_INCLUDES += \ 190 external/openssl/include \ 191 external/openssl \ 192 external/conscrypt/src/compat/native 193 LOCAL_MODULE_TAGS := optional 194 LOCAL_MODULE := libconscrypt_static 195 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 196 LOCAL_STATIC_LIBRARIES := libssl_static libcrypto_static 197 LOCAL_SDK_VERSION := 9 198 include $(BUILD_STATIC_LIBRARY) 199 200 # 201 # Build for the host. 202 # 203 204 ifeq ($(HOST_OS),linux) 205 206 # Make the conscrypt-hostdex library 207 include $(CLEAR_VARS) 208 LOCAL_SRC_FILES := $(call all-java-files-under,src/main/java) 209 LOCAL_SRC_FILES += $(call all-java-files-under,src/platform/java) 210 LOCAL_GENERATED_SOURCES := $(conscrypt_gen_java_files) 211 LOCAL_JAVACFLAGS := $(local_javac_flags) 212 LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt 213 LOCAL_MODULE_TAGS := optional 214 LOCAL_MODULE := conscrypt-hostdex 215 LOCAL_REQUIRED_MODULES := libjavacrypto 216 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 217 include $(BUILD_HOST_DALVIK_JAVA_LIBRARY) 218 219 # Make the conscrypt-hostdex-nojarjar for tests 220 include $(CLEAR_VARS) 221 LOCAL_SRC_FILES := $(call all-java-files-under,src/main/java) 222 LOCAL_SRC_FILES += $(call all-java-files-under,src/platform/java) 223 LOCAL_GENERATED_SOURCES := $(conscrypt_gen_java_files) 224 LOCAL_JAVACFLAGS := $(local_javac_flags) 225 LOCAL_BUILD_HOST_DEX := true 226 LOCAL_MODULE_TAGS := optional 227 LOCAL_MODULE := conscrypt-hostdex-nojarjar 228 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 229 include $(BUILD_HOST_DALVIK_JAVA_LIBRARY) 230 231 # Make the conscrypt-tests library. 232 ifeq ($(LIBCORE_SKIP_TESTS),) 233 include $(CLEAR_VARS) 234 LOCAL_SRC_FILES := $(call all-java-files-under,src/test/java) 235 LOCAL_JAVA_LIBRARIES := bouncycastle-hostdex core-junit-hostdex core-tests-support-hostdex conscrypt-hostdex-nojarjar 236 LOCAL_JAVACFLAGS := $(local_javac_flags) 237 LOCAL_MODULE_TAGS := optional 238 LOCAL_MODULE := conscrypt-tests-hostdex 239 LOCAL_REQUIRED_MODULES := libjavacrypto 240 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 241 include $(BUILD_HOST_DALVIK_JAVA_LIBRARY) 242 endif 243 244 # Conscrypt native library for host 245 include $(CLEAR_VARS) 246 LOCAL_CLANG := true 247 LOCAL_SRC_FILES += \ 248 src/main/native/org_conscrypt_NativeCrypto.cpp 249 LOCAL_C_INCLUDES += \ 250 external/openssl/include \ 251 external/openssl \ 252 libcore/include \ 253 libcore/luni/src/main/native 254 LOCAL_CPPFLAGS += $(core_cppflags) 255 LOCAL_LDLIBS += -lpthread 256 LOCAL_MODULE_TAGS := optional 257 LOCAL_MODULE := libjavacrypto 258 LOCAL_CFLAGS += -DJNI_JARJAR_PREFIX="com/android/" 259 # NO_KEYSTORE_ENGINE instructs the BoringSSL build of Conscrypt not to support 260 # the keystore ENGINE. It is not available in this build configuration. 261 LOCAL_CFLAGS += -DNO_KEYSTORE_ENGINE 262 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 263 LOCAL_SHARED_LIBRARIES := libcrypto-host libjavacore liblog libnativehelper libssl-host 264 LOCAL_MULTILIB := both 265 include $(BUILD_HOST_SHARED_LIBRARY) 266 267 # Conscrypt native library for nojarjar'd version 268 # Don't build this for unbundled conscrypt build 269 ifeq (,$(TARGET_BUILD_APPS)) 270 include $(CLEAR_VARS) 271 LOCAL_CLANG := true 272 LOCAL_SRC_FILES += \ 273 src/main/native/org_conscrypt_NativeCrypto.cpp 274 LOCAL_C_INCLUDES += \ 275 external/openssl/include \ 276 external/openssl \ 277 libcore/include \ 278 libcore/luni/src/main/native 279 LOCAL_CPPFLAGS += $(core_cppflags) -DCONSCRYPT_NOT_UNBUNDLED 280 LOCAL_LDLIBS += -lpthread 281 LOCAL_MODULE_TAGS := optional 282 LOCAL_MODULE := libconscrypt_jni 283 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 284 # NO_KEYSTORE_ENGINE instructs the BoringSSL build of Conscrypt not to 285 # support the keystore ENGINE. It is not available in this build 286 # configuration. 287 LOCAL_CFLAGS += -DNO_KEYSTORE_ENGINE 288 LOCAL_SHARED_LIBRARIES := libcrypto-host libjavacore liblog libnativehelper libssl-host 289 LOCAL_MULTILIB := both 290 include $(BUILD_HOST_SHARED_LIBRARY) 291 endif 292 293 endif # HOST_OS == linux 294 295 # clear out local variables 296 core_cflags := 297 core_cppflags := 298 local_javac_flags := 299