blob: 6b286a8fcf416e726c112625e6f9d4e9da585444 [file] [log] [blame]
Kenny Root0e27f2a2013-09-16 13:58:19 -07001# -*- 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
Kenny Root1cfba2b2014-05-27 18:44:53 +000054# Create the conscrypt library
55include $(CLEAR_VARS)
56LOCAL_SRC_FILES := $(call all-java-files-under,src/main/java)
Kenny Root39deada2014-05-30 13:15:27 -070057LOCAL_SRC_FILES += $(call all-java-files-under,src/platform/java)
Kenny Root1cfba2b2014-05-27 18:44:53 +000058LOCAL_JAVA_LIBRARIES := core
59LOCAL_NO_STANDARD_LIBRARIES := true
60LOCAL_JAVACFLAGS := $(local_javac_flags)
61LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt
62LOCAL_MODULE_TAGS := optional
63LOCAL_MODULE := conscrypt
64LOCAL_REQUIRED_MODULES := libjavacrypto
65LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
66include $(BUILD_JAVA_LIBRARY)
67
68# Create the conscrypt library without jarjar for tests
69include $(CLEAR_VARS)
Kenny Root0e27f2a2013-09-16 13:58:19 -070070LOCAL_SRC_FILES := $(call all-java-files-under,src/main/java)
Kenny Root39deada2014-05-30 13:15:27 -070071LOCAL_SRC_FILES += $(call all-java-files-under,src/platform/java)
Kenny Root0e27f2a2013-09-16 13:58:19 -070072LOCAL_JAVA_LIBRARIES := core
73LOCAL_NO_STANDARD_LIBRARIES := true
74LOCAL_JAVACFLAGS := $(local_javac_flags)
75LOCAL_MODULE_TAGS := optional
Kenny Root92b12a82013-10-02 16:44:41 -070076LOCAL_MODULE := conscrypt-nojarjar
Kenny Root0e27f2a2013-09-16 13:58:19 -070077LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
78include $(BUILD_STATIC_JAVA_LIBRARY)
79
80ifeq ($(LIBCORE_SKIP_TESTS),)
81# Make the conscrypt-tests library.
82include $(CLEAR_VARS)
83LOCAL_SRC_FILES := $(call all-java-files-under,src/test/java)
84LOCAL_NO_STANDARD_LIBRARIES := true
85LOCAL_JAVA_LIBRARIES := bouncycastle core core-junit
86LOCAL_STATIC_JAVA_LIBRARIES := core-tests-support conscrypt-nojarjar
87LOCAL_JAVACFLAGS := $(local_javac_flags)
88LOCAL_MODULE_TAGS := optional
Kenny Root92b12a82013-10-02 16:44:41 -070089LOCAL_MODULE := conscrypt-tests
Kenny Root0e27f2a2013-09-16 13:58:19 -070090LOCAL_REQUIRED_MODULES := libjavacrypto
91LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt
92LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
93include $(BUILD_STATIC_JAVA_LIBRARY)
94endif
95
96# Platform conscrypt crypto JNI library
97include $(CLEAR_VARS)
98LOCAL_CFLAGS += $(core_cflags)
99LOCAL_CFLAGS += -DJNI_JARJAR_PREFIX="com/android/"
100LOCAL_CPPFLAGS += $(core_cppflags)
101LOCAL_SRC_FILES := \
102 src/main/native/org_conscrypt_NativeCrypto.cpp
Kenny Root0a84a212013-10-01 17:48:03 -0700103LOCAL_C_INCLUDES += \
104 external/openssl/include \
105 libcore/include \
Kenny Root0e27f2a2013-09-16 13:58:19 -0700106 libcore/luni/src/main/native
Kenny Root0a84a212013-10-01 17:48:03 -0700107LOCAL_SHARED_LIBRARIES := libcrypto libjavacore liblog libnativehelper libssl libz
Kenny Root0e27f2a2013-09-16 13:58:19 -0700108LOCAL_MODULE_TAGS := optional
Kenny Root92b12a82013-10-02 16:44:41 -0700109LOCAL_MODULE := libjavacrypto
Kenny Root0e27f2a2013-09-16 13:58:19 -0700110LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
111include $(BUILD_SHARED_LIBRARY)
112
Kenny Root3e46e4e2014-05-23 13:35:10 -0700113# Unbundled Conscrypt jar
114include $(CLEAR_VARS)
Kenny Root39deada2014-05-30 13:15:27 -0700115LOCAL_SRC_FILES := $(call all-java-files-under,src/main/java)
116LOCAL_SRC_FILES += $(call all-java-files-under,src/compat/java)
Kenny Root3e46e4e2014-05-23 13:35:10 -0700117LOCAL_SDK_VERSION := 9
118LOCAL_JAVACFLAGS := $(local_javac_flags)
119LOCAL_MODULE_TAGS := optional
Kenny Root031510f2014-05-29 13:53:05 -0700120LOCAL_MODULE := conscrypt_unbundled
Kenny Root3e46e4e2014-05-23 13:35:10 -0700121LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
122include $(BUILD_STATIC_JAVA_LIBRARY)
123
124# Unbundled Conscrypt crypto JNI library
125include $(CLEAR_VARS)
126LOCAL_CFLAGS += $(core_cflags)
127LOCAL_CPPFLAGS += $(core_cppflags)
128LOCAL_SRC_FILES := \
129 src/main/native/org_conscrypt_NativeCrypto.cpp \
130 src/compat/native/JNIHelp.cpp
131LOCAL_C_INCLUDES += \
132 external/openssl/include \
133 external/conscrypt/src/compat/native
Kenny Root031510f2014-05-29 13:53:05 -0700134LOCAL_LDFLAGS := -llog -lz -ldl
Kenny Root3e46e4e2014-05-23 13:35:10 -0700135LOCAL_STATIC_LIBRARIES := libssl_static libcrypto_static
136LOCAL_MODULE_TAGS := optional
137LOCAL_MODULE := libconscrypt_jni
138LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
139LOCAL_SDK_VERSION := 9
140include $(BUILD_SHARED_LIBRARY)
141
Kenny Root0e27f2a2013-09-16 13:58:19 -0700142#
143# Build for the host.
144#
145
146ifeq ($(WITH_HOST_DALVIK),true)
Kenny Root1cfba2b2014-05-27 18:44:53 +0000147 # Make the conscrypt-hostdex library
148 include $(CLEAR_VARS)
149 LOCAL_SRC_FILES := $(call all-java-files-under,src/main/java)
Kenny Root39deada2014-05-30 13:15:27 -0700150 LOCAL_SRC_FILES += $(call all-java-files-under,src/platform/java)
Kenny Root1cfba2b2014-05-27 18:44:53 +0000151 LOCAL_JAVACFLAGS := $(local_javac_flags)
152 LOCAL_JARJAR_RULES := $(LOCAL_PATH)/jarjar-rules.txt
153 LOCAL_MODULE_TAGS := optional
154 LOCAL_MODULE := conscrypt-hostdex
155 LOCAL_REQUIRED_MODULES := libjavacrypto
156 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
157 include $(BUILD_HOST_DALVIK_JAVA_LIBRARY)
158
159 # Make the conscrypt-hostdex-nojarjar for tests
Kenny Root0e27f2a2013-09-16 13:58:19 -0700160 include $(CLEAR_VARS)
161 LOCAL_SRC_FILES := $(call all-java-files-under,src/main/java)
Kenny Root39deada2014-05-30 13:15:27 -0700162 LOCAL_SRC_FILES += $(call all-java-files-under,src/platform/java)
Kenny Root0e27f2a2013-09-16 13:58:19 -0700163 LOCAL_JAVACFLAGS := $(local_javac_flags)
164 LOCAL_BUILD_HOST_DEX := true
165 LOCAL_MODULE_TAGS := optional
Kenny Root92b12a82013-10-02 16:44:41 -0700166 LOCAL_MODULE := conscrypt-hostdex-nojarjar
Kenny Root0e27f2a2013-09-16 13:58:19 -0700167 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
Narayan Kamathb32d6792013-10-28 14:22:43 +0000168 include $(BUILD_HOST_DALVIK_JAVA_LIBRARY)
Kenny Root0e27f2a2013-09-16 13:58:19 -0700169
170 # Make the conscrypt-tests library.
171 ifeq ($(LIBCORE_SKIP_TESTS),)
172 include $(CLEAR_VARS)
173 LOCAL_SRC_FILES := $(call all-java-files-under,src/test/java)
Narayan Kamathb32d6792013-10-28 14:22:43 +0000174 LOCAL_JAVA_LIBRARIES := bouncycastle-hostdex core-junit-hostdex core-tests-support-hostdex conscrypt-hostdex-nojarjar
Kenny Root0e27f2a2013-09-16 13:58:19 -0700175 LOCAL_JAVACFLAGS := $(local_javac_flags)
176 LOCAL_MODULE_TAGS := optional
Kenny Root92b12a82013-10-02 16:44:41 -0700177 LOCAL_MODULE := conscrypt-tests-hostdex
Kenny Root0e27f2a2013-09-16 13:58:19 -0700178 LOCAL_REQUIRED_MODULES := libjavacrypto
179 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
Narayan Kamathb32d6792013-10-28 14:22:43 +0000180 include $(BUILD_HOST_DALVIK_JAVA_LIBRARY)
Kenny Root0e27f2a2013-09-16 13:58:19 -0700181 endif
182
183 # Conscrypt native library for host
184 include $(CLEAR_VARS)
185 LOCAL_SRC_FILES += \
186 src/main/native/org_conscrypt_NativeCrypto.cpp
Kenny Root0a84a212013-10-01 17:48:03 -0700187 LOCAL_C_INCLUDES += \
188 external/openssl/include \
189 libcore/include \
Kenny Root0e27f2a2013-09-16 13:58:19 -0700190 libcore/luni/src/main/native
191 LOCAL_CPPFLAGS += $(core_cppflags)
192 LOCAL_LDLIBS += -lpthread
193 LOCAL_MODULE_TAGS := optional
Kenny Root92b12a82013-10-02 16:44:41 -0700194 LOCAL_MODULE := libjavacrypto
Kenny Root0e27f2a2013-09-16 13:58:19 -0700195 LOCAL_CFLAGS += -DJNI_JARJAR_PREFIX="com/android/"
196 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
Kenny Root0a84a212013-10-01 17:48:03 -0700197 LOCAL_SHARED_LIBRARIES := libcrypto-host libjavacore liblog libnativehelper libssl-host
Kenny Root0e27f2a2013-09-16 13:58:19 -0700198 include $(BUILD_HOST_SHARED_LIBRARY)
199
200 # Conscrypt native library for nojarjar'd version
Kenny Root4ccb72f2014-05-30 11:27:32 -0700201 # Don't build this for unbundled conscrypt build
202 ifeq (,$(TARGET_BUILD_APPS))
Kenny Root0e27f2a2013-09-16 13:58:19 -0700203 include $(CLEAR_VARS)
204 LOCAL_SRC_FILES += \
205 src/main/native/org_conscrypt_NativeCrypto.cpp
Kenny Root0a84a212013-10-01 17:48:03 -0700206 LOCAL_C_INCLUDES += \
207 external/openssl/include \
208 libcore/include \
Kenny Root0e27f2a2013-09-16 13:58:19 -0700209 libcore/luni/src/main/native
Kenny Root3e46e4e2014-05-23 13:35:10 -0700210 LOCAL_CPPFLAGS += $(core_cppflags) -DCONSCRYPT_NOT_UNBUNDLED
Kenny Root0e27f2a2013-09-16 13:58:19 -0700211 LOCAL_LDLIBS += -lpthread
212 LOCAL_MODULE_TAGS := optional
Kenny Root92b12a82013-10-02 16:44:41 -0700213 LOCAL_MODULE := libconscrypt_jni
Kenny Root0e27f2a2013-09-16 13:58:19 -0700214 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
Kenny Root7150e322013-10-01 19:54:34 -0700215 LOCAL_SHARED_LIBRARIES := libcrypto-host libjavacore liblog libnativehelper libssl-host
Kenny Root0e27f2a2013-09-16 13:58:19 -0700216 include $(BUILD_HOST_SHARED_LIBRARY)
Kenny Root4ccb72f2014-05-30 11:27:32 -0700217 endif
Kenny Root0e27f2a2013-09-16 13:58:19 -0700218endif