Home | History | Annotate | Download | only in conscrypt
      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