Android.mk revision 7782d132fab6ac9f30b97d76ed3a51126ed3e6d1
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# common/ 30# src/main/java # Common Java source for all platforms. 31# src/jni/ 32# main # Common C++ source for all platforms. 33# unbundled # C++ source used for OpenJDK and unbundled Android. 34# android/ 35# src/main/java # Java source for unbundled Android. 36# openjdk/ 37# src/main/java # Java source for OpenJDK. 38# platform/ 39# src/main/java # Java source for bundled Android. 40# src/test 41# java/ # Java source for bundled tests. 42# resources/ # Support files for bundled tests. 43# 44# All subdirectories are optional (hence the "2> /dev/null"s below). 45 46LOCAL_PATH := $(call my-dir) 47 48local_javac_flags:=-Xmaxwarns 9999999 49#local_javac_flags+=-Xlint:all -Xlint:-serial,-deprecation,-unchecked 50 51core_cflags := -Wall -Wextra -Werror -Wunused 52core_cppflags := -Wall -Wextra -Werror -Wunused 53 54# 55# Build for the target (device). 56# 57 58include $(CLEAR_VARS) 59LOCAL_SRC_FILES := common/src/gen/cpp/generate_constants.cpp 60LOCAL_MODULE := conscrypt_generate_constants 61LOCAL_SHARED_LIBRARIES := libcrypto libssl 62include $(BUILD_HOST_EXECUTABLE) 63 64conscrypt_generate_constants_exe := $(LOCAL_INSTALLED_MODULE) 65conscrypt_gen_java_files := $(TARGET_OUT_COMMON_GEN)/conscrypt/org/conscrypt/NativeConstants.java 66 67$(conscrypt_gen_java_files): $(conscrypt_generate_constants_exe) 68 mkdir -p $(dir $@) 69 $< > $@ 70 71common_java_files := $(filter-out \ 72 %/org/conscrypt/Platform.java \ 73 %/org/conscrypt/NativeCryptoJni.java \ 74 , $(call all-java-files-under,common/src/main/java)) 75 76# Create the conscrypt library 77include $(CLEAR_VARS) 78LOCAL_SRC_FILES := $(common_java_files) 79LOCAL_SRC_FILES += $(call all-java-files-under,platform/src/main/java) 80LOCAL_GENERATED_SOURCES := $(conscrypt_gen_java_files) 81LOCAL_JAVA_LIBRARIES := core-oj core-libart 82LOCAL_NO_STANDARD_LIBRARIES := true 83LOCAL_JAVACFLAGS := $(local_javac_flags) 84LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt 85LOCAL_MODULE_TAGS := optional 86LOCAL_MODULE := conscrypt 87LOCAL_REQUIRED_MODULES := libjavacrypto 88LOCAL_JAVA_LANGUAGE_VERSION := 1.7 89include $(BUILD_JAVA_LIBRARY) 90 91# Create the conscrypt library without jarjar for tests 92include $(CLEAR_VARS) 93LOCAL_SRC_FILES := $(common_java_files) 94LOCAL_SRC_FILES += $(call all-java-files-under,platform/src/main/java) 95LOCAL_GENERATED_SOURCES := $(conscrypt_gen_java_files) 96LOCAL_JAVA_LIBRARIES := core-oj core-libart 97LOCAL_NO_STANDARD_LIBRARIES := true 98LOCAL_JAVACFLAGS := $(local_javac_flags) 99LOCAL_MODULE_TAGS := optional 100LOCAL_MODULE := conscrypt-nojarjar 101LOCAL_JAVA_LANGUAGE_VERSION := 1.7 102include $(BUILD_STATIC_JAVA_LIBRARY) 103 104ifeq ($(LIBCORE_SKIP_TESTS),) 105# Make the conscrypt-tests library. 106include $(CLEAR_VARS) 107LOCAL_SRC_FILES := $(call all-java-files-under,platform/src/test/java) 108LOCAL_JAVA_RESOURCE_DIRS := src/test/resources 109LOCAL_NO_STANDARD_LIBRARIES := true 110LOCAL_JAVA_LIBRARIES := core-oj core-libart core-junit bouncycastle junit4-target mockito-target-minus-junit4 111LOCAL_STATIC_JAVA_LIBRARIES := core-tests-support conscrypt-nojarjar 112LOCAL_JAVACFLAGS := $(local_javac_flags) 113LOCAL_MODULE_TAGS := optional 114LOCAL_MODULE := conscrypt-tests 115LOCAL_REQUIRED_MODULES := libjavacrypto 116LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt 117LOCAL_JAVA_LANGUAGE_VERSION := 1.7 118include $(BUILD_STATIC_JAVA_LIBRARY) 119endif 120 121# Platform conscrypt crypto JNI library 122include $(CLEAR_VARS) 123LOCAL_CFLAGS += $(core_cflags) 124LOCAL_CFLAGS += -DJNI_JARJAR_PREFIX="com/android/" 125LOCAL_CPPFLAGS += $(core_cppflags) 126LOCAL_SRC_FILES := \ 127 common/src/jni/main/cpp/org_conscrypt_NativeCrypto.cpp 128LOCAL_C_INCLUDES += \ 129 external/openssl/include \ 130 external/openssl \ 131 libcore/include \ 132 libcore/luni/src/main/native \ 133 $(LOCAL_PATH)/common/src/jni/main/include 134LOCAL_SHARED_LIBRARIES := libcrypto libjavacore liblog libnativehelper libssl 135LOCAL_MODULE_TAGS := optional 136LOCAL_MODULE := libjavacrypto 137include $(BUILD_SHARED_LIBRARY) 138 139# Unbundled Conscrypt jar 140include $(CLEAR_VARS) 141LOCAL_SRC_FILES := $(common_java_files) 142LOCAL_SRC_FILES += $(call all-java-files-under,android/src/main/java) 143LOCAL_GENERATED_SOURCES := $(conscrypt_gen_java_files) 144LOCAL_SDK_VERSION := 9 145LOCAL_JAVACFLAGS := $(local_javac_flags) 146LOCAL_MODULE_TAGS := optional 147LOCAL_MODULE := conscrypt_unbundled 148LOCAL_JAVA_LIBRARIES := conscrypt-stubs 149LOCAL_JACK_FLAGS := -D jack.classpath.default-libraries=false 150LOCAL_JAVA_LANGUAGE_VERSION := 1.7 151include $(BUILD_STATIC_JAVA_LIBRARY) 152 153# Stub library for unbundled builds 154include $(CLEAR_VARS) 155LOCAL_SRC_FILES := $(call all-java-files-under,android-stub/src/main/java) 156LOCAL_SDK_VERSION := 9 157LOCAL_JAVACFLAGS := $(local_javac_flags) 158LOCAL_MODULE := conscrypt-stubs 159LOCAL_JACK_FLAGS := -D jack.classpath.default-libraries=false 160LOCAL_JAVA_LANGUAGE_VERSION := 1.7 161include $(BUILD_STATIC_JAVA_LIBRARY) 162 163# Static unbundled Conscrypt crypto JNI library 164include $(CLEAR_VARS) 165LOCAL_CFLAGS += $(core_cflags) 166LOCAL_CPPFLAGS += $(core_cppflags) \ 167 -DJNI_JARJAR_PREFIX="com/google/android/gms/" \ 168 -DCONSCRYPT_UNBUNDLED \ 169 -DSTATIC_LIB 170LOCAL_SRC_FILES := \ 171 common/src/jni/main/cpp/org_conscrypt_NativeCrypto.cpp \ 172 common/src/jni/unbundled/cpp/JNIHelp.cpp 173LOCAL_C_INCLUDES += \ 174 external/openssl/include \ 175 external/openssl \ 176 $(LOCAL_PATH)/common/src/jni/main/include \ 177 $(LOCAL_PATH)/common/src/jni/unbundled/include 178LOCAL_MODULE_TAGS := optional 179LOCAL_MODULE := libconscrypt_static 180LOCAL_STATIC_LIBRARIES := libssl libcrypto 181LOCAL_SDK_VERSION := 9 182LOCAL_JAVA_LANGUAGE_VERSION := 1.7 183LOCAL_NDK_STL_VARIANT := c++_shared 184include $(BUILD_STATIC_LIBRARY) 185 186# 187# Build for the host. 188# 189 190ifeq ($(HOST_OS),linux) 191 192# Make the conscrypt-hostdex library 193include $(CLEAR_VARS) 194LOCAL_SRC_FILES := $(common_java_files) 195LOCAL_SRC_FILES += $(call all-java-files-under,platform/src/main/java) 196LOCAL_GENERATED_SOURCES := $(conscrypt_gen_java_files) 197LOCAL_JAVACFLAGS := $(local_javac_flags) 198LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt 199LOCAL_MODULE_TAGS := optional 200LOCAL_MODULE := conscrypt-hostdex 201LOCAL_REQUIRED_MODULES := libjavacrypto 202LOCAL_JAVA_LANGUAGE_VERSION := 1.7 203include $(BUILD_HOST_DALVIK_JAVA_LIBRARY) 204 205# Make the conscrypt-hostdex-nojarjar for tests 206include $(CLEAR_VARS) 207LOCAL_SRC_FILES := $(common_java_files) 208LOCAL_SRC_FILES += $(call all-java-files-under,platform/src/main/java) 209LOCAL_GENERATED_SOURCES := $(conscrypt_gen_java_files) 210LOCAL_JAVACFLAGS := $(local_javac_flags) 211LOCAL_BUILD_HOST_DEX := true 212LOCAL_MODULE_TAGS := optional 213LOCAL_MODULE := conscrypt-hostdex-nojarjar 214LOCAL_JAVA_LANGUAGE_VERSION := 1.7 215include $(BUILD_HOST_DALVIK_STATIC_JAVA_LIBRARY) 216 217# Make the conscrypt-tests library. 218ifeq ($(LIBCORE_SKIP_TESTS),) 219 include $(CLEAR_VARS) 220 LOCAL_SRC_FILES := $(call all-java-files-under,platform/src/test/java) 221 LOCAL_JAVA_RESOURCE_DIRS := platform/src/test/resources 222 LOCAL_JAVA_LIBRARIES := bouncycastle-hostdex core-junit-hostdex core-tests-support-hostdex junit4-target-hostdex mockito-api-hostdex 223 LOCAL_STATIC_JAVA_LIBRARIES := conscrypt-hostdex-nojarjar 224 LOCAL_JAVACFLAGS := $(local_javac_flags) 225 LOCAL_MODULE_TAGS := optional 226 LOCAL_MODULE := conscrypt-tests-hostdex 227 LOCAL_REQUIRED_MODULES := libjavacrypto 228 LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt 229 LOCAL_JAVA_LANGUAGE_VERSION := 1.7 230 include $(BUILD_HOST_DALVIK_JAVA_LIBRARY) 231endif 232 233# Conscrypt native library for host 234include $(CLEAR_VARS) 235LOCAL_CLANG := true 236LOCAL_SRC_FILES += \ 237 common/src/jni/main/cpp/org_conscrypt_NativeCrypto.cpp 238LOCAL_C_INCLUDES += \ 239 external/openssl/include \ 240 external/openssl \ 241 libcore/include \ 242 libcore/luni/src/main/native \ 243 $(LOCAL_PATH)/common/src/jni/main/include 244LOCAL_CPPFLAGS += $(core_cppflags) 245LOCAL_LDLIBS += -lpthread 246LOCAL_MODULE_TAGS := optional 247LOCAL_MODULE := libjavacrypto 248LOCAL_CFLAGS += -DJNI_JARJAR_PREFIX="com/android/" 249LOCAL_SHARED_LIBRARIES := libcrypto libjavacore liblog libnativehelper libssl 250LOCAL_MULTILIB := both 251include $(BUILD_HOST_SHARED_LIBRARY) 252 253endif # HOST_OS == linux 254 255# Conscrypt Java library for host OpenJDK 256include $(CLEAR_VARS) 257LOCAL_SRC_FILES := $(common_java_files) 258LOCAL_SRC_FILES += $(call all-java-files-under,openjdk/src/main/java) 259LOCAL_GENERATED_SOURCES := $(conscrypt_gen_java_files) 260LOCAL_JAVACFLAGS := $(local_javac_flags) -XDignore.symbol.file 261LOCAL_MODULE_TAGS := optional 262LOCAL_MODULE := conscrypt-host 263LOCAL_JAVA_LANGUAGE_VERSION := 1.7 264include $(BUILD_HOST_JAVA_LIBRARY) 265 266# clear out local variables 267core_cflags := 268core_cppflags := 269local_javac_flags := 270common_java_files := 271