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