Android.mk revision 1cfba2bc6023e2d86243d48289e2c822d0bab209
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 41LOCAL_PATH := $(call my-dir) 42 43local_javac_flags=-encoding UTF-8 44#local_javac_flags+=-Xlint:all -Xlint:-serial,-deprecation,-unchecked 45local_javac_flags+=-Xmaxwarns 9999999 46 47core_cflags := -Wall -Wextra -Werror 48core_cppflags := -std=gnu++11 49 50# 51# Build for the target (device). 52# 53 54# Create the conscrypt library 55include $(CLEAR_VARS) 56LOCAL_SRC_FILES := $(call all-java-files-under,src/main/java) 57LOCAL_JAVA_LIBRARIES := core 58LOCAL_NO_STANDARD_LIBRARIES := true 59LOCAL_JAVACFLAGS := $(local_javac_flags) 60LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt 61LOCAL_MODULE_TAGS := optional 62LOCAL_MODULE := conscrypt 63LOCAL_REQUIRED_MODULES := libjavacrypto 64LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 65include $(BUILD_JAVA_LIBRARY) 66 67# Create the conscrypt library without jarjar for tests 68include $(CLEAR_VARS) 69LOCAL_SRC_FILES := $(call all-java-files-under,src/main/java) 70LOCAL_JAVA_LIBRARIES := core 71LOCAL_NO_STANDARD_LIBRARIES := true 72LOCAL_JAVACFLAGS := $(local_javac_flags) 73LOCAL_MODULE_TAGS := optional 74LOCAL_MODULE := conscrypt-nojarjar 75LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 76include $(BUILD_STATIC_JAVA_LIBRARY) 77 78ifeq ($(LIBCORE_SKIP_TESTS),) 79# Make the conscrypt-tests library. 80include $(CLEAR_VARS) 81LOCAL_SRC_FILES := $(call all-java-files-under,src/test/java) 82LOCAL_NO_STANDARD_LIBRARIES := true 83LOCAL_JAVA_LIBRARIES := bouncycastle core core-junit 84LOCAL_STATIC_JAVA_LIBRARIES := core-tests-support conscrypt-nojarjar 85LOCAL_JAVACFLAGS := $(local_javac_flags) 86LOCAL_MODULE_TAGS := optional 87LOCAL_MODULE := conscrypt-tests 88LOCAL_REQUIRED_MODULES := libjavacrypto 89LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt 90LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 91include $(BUILD_STATIC_JAVA_LIBRARY) 92endif 93 94# Platform conscrypt crypto JNI library 95include $(CLEAR_VARS) 96LOCAL_CFLAGS += $(core_cflags) 97LOCAL_CFLAGS += -DJNI_JARJAR_PREFIX="com/android/" 98LOCAL_CPPFLAGS += $(core_cppflags) 99LOCAL_SRC_FILES := \ 100 src/main/native/org_conscrypt_NativeCrypto.cpp 101LOCAL_C_INCLUDES += \ 102 external/openssl/include \ 103 libcore/include \ 104 libcore/luni/src/main/native 105LOCAL_SHARED_LIBRARIES := libcrypto libjavacore liblog libnativehelper libssl libz 106LOCAL_MODULE_TAGS := optional 107LOCAL_MODULE := libjavacrypto 108LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 109include $(BUILD_SHARED_LIBRARY) 110 111# Unbundled Conscrypt jar 112include $(CLEAR_VARS) 113exclude_src_files := \ 114 src/main/java/org/conscrypt/CertPinManager.java \ 115 src/main/java/org/conscrypt/FileClientSessionCache.java \ 116 src/main/java/org/conscrypt/JSSEProvider.java \ 117 src/main/java/org/conscrypt/PinFailureLogger.java \ 118 src/main/java/org/conscrypt/PinListEntry.java \ 119 src/main/java/org/conscrypt/Platform.java \ 120 src/main/java/org/conscrypt/TrustedCertificateIndex.java \ 121 src/main/java/org/conscrypt/TrustedCertificateKeyStoreSpi.java \ 122 src/main/java/org/conscrypt/TrustedCertificateStore.java \ 123 src/main/java/org/conscrypt/TrustManagerFactoryImpl.java \ 124 src/main/java/org/conscrypt/TrustManagerImpl.java 125unbundled_src_files := $(call all-java-files-under,src/main/java) 126unbundled_src_files += $(call all-java-files-under,src/compat/java) 127unbundled_src_files := $(filter-out $(exclude_src_files), $(unbundled_src_files)) 128LOCAL_SRC_FILES := $(unbundled_src_files) 129LOCAL_SDK_VERSION := 9 130LOCAL_JAVACFLAGS := $(local_javac_flags) 131LOCAL_MODULE_TAGS := optional 132LOCAL_MODULE := conscrypt-unbundled 133LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 134include $(BUILD_STATIC_JAVA_LIBRARY) 135 136# Unbundled Conscrypt crypto JNI library 137include $(CLEAR_VARS) 138LOCAL_CFLAGS += $(core_cflags) 139LOCAL_CPPFLAGS += $(core_cppflags) 140LOCAL_SRC_FILES := \ 141 src/main/native/org_conscrypt_NativeCrypto.cpp \ 142 src/compat/native/JNIHelp.cpp 143LOCAL_C_INCLUDES += \ 144 external/openssl/include \ 145 external/conscrypt/src/compat/native 146LOCAL_SHARED_LIBRARIES := liblog libz libdl 147LOCAL_STATIC_LIBRARIES := libssl_static libcrypto_static 148LOCAL_MODULE_TAGS := optional 149LOCAL_MODULE := libconscrypt_jni 150LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 151LOCAL_SDK_VERSION := 9 152include $(BUILD_SHARED_LIBRARY) 153 154# 155# Build for the host. 156# 157 158ifeq ($(WITH_HOST_DALVIK),true) 159 # Make the conscrypt-hostdex library 160 include $(CLEAR_VARS) 161 LOCAL_SRC_FILES := $(call all-java-files-under,src/main/java) 162 LOCAL_JAVACFLAGS := $(local_javac_flags) 163 LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt 164 LOCAL_MODULE_TAGS := optional 165 LOCAL_MODULE := conscrypt-hostdex 166 LOCAL_REQUIRED_MODULES := libjavacrypto 167 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 168 include $(BUILD_HOST_DALVIK_JAVA_LIBRARY) 169 170 # Make the conscrypt-hostdex-nojarjar for tests 171 include $(CLEAR_VARS) 172 LOCAL_SRC_FILES := $(call all-java-files-under,src/main/java) 173 LOCAL_JAVACFLAGS := $(local_javac_flags) 174 LOCAL_BUILD_HOST_DEX := true 175 LOCAL_MODULE_TAGS := optional 176 LOCAL_MODULE := conscrypt-hostdex-nojarjar 177 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 178 include $(BUILD_HOST_DALVIK_JAVA_LIBRARY) 179 180 # Make the conscrypt-tests library. 181 ifeq ($(LIBCORE_SKIP_TESTS),) 182 include $(CLEAR_VARS) 183 LOCAL_SRC_FILES := $(call all-java-files-under,src/test/java) 184 LOCAL_JAVA_LIBRARIES := bouncycastle-hostdex core-junit-hostdex core-tests-support-hostdex conscrypt-hostdex-nojarjar 185 LOCAL_JAVACFLAGS := $(local_javac_flags) 186 LOCAL_MODULE_TAGS := optional 187 LOCAL_MODULE := conscrypt-tests-hostdex 188 LOCAL_REQUIRED_MODULES := libjavacrypto 189 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 190 include $(BUILD_HOST_DALVIK_JAVA_LIBRARY) 191 endif 192 193 # Conscrypt native library for host 194 include $(CLEAR_VARS) 195 LOCAL_SRC_FILES += \ 196 src/main/native/org_conscrypt_NativeCrypto.cpp 197 LOCAL_C_INCLUDES += \ 198 external/openssl/include \ 199 libcore/include \ 200 libcore/luni/src/main/native 201 LOCAL_CPPFLAGS += $(core_cppflags) 202 LOCAL_LDLIBS += -lpthread 203 LOCAL_MODULE_TAGS := optional 204 LOCAL_MODULE := libjavacrypto 205 LOCAL_CFLAGS += -DJNI_JARJAR_PREFIX="com/android/" 206 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 207 LOCAL_SHARED_LIBRARIES := libcrypto-host libjavacore liblog libnativehelper libssl-host 208 include $(BUILD_HOST_SHARED_LIBRARY) 209 210 # Conscrypt native library for nojarjar'd version 211 include $(CLEAR_VARS) 212 LOCAL_SRC_FILES += \ 213 src/main/native/org_conscrypt_NativeCrypto.cpp 214 LOCAL_C_INCLUDES += \ 215 external/openssl/include \ 216 libcore/include \ 217 libcore/luni/src/main/native 218 LOCAL_CPPFLAGS += $(core_cppflags) -DCONSCRYPT_NOT_UNBUNDLED 219 LOCAL_LDLIBS += -lpthread 220 LOCAL_MODULE_TAGS := optional 221 LOCAL_MODULE := libconscrypt_jni 222 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk 223 LOCAL_SHARED_LIBRARIES := libcrypto-host libjavacore liblog libnativehelper libssl-host 224 include $(BUILD_HOST_SHARED_LIBRARY) 225endif 226