Commit ba07db54 authored by Kenny Root's avatar Kenny Root
Browse files

Move conscrypt out libjavacore and split tests

To make the situation with testing a little better and enable building
core libraries totally independent of conscrypt, move the native
registration to a JNI_OnLoad scheme. Also, since we want to separate the
testing, make conscrypt build its own tests library.

Change-Id: I9f2831839059c1c012ec7bdeab2f90b4e2f44bfd
parent a0a63383
......@@ -100,6 +100,7 @@ LOCAL_JAVACFLAGS := $(local_javac_flags)
LOCAL_JARJAR_RULES := $(LOCAL_PATH)/crypto/jarjar-rules.txt
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := conscrypt
LOCAL_REQUIRED_MODULES := libjavacrypto
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
include $(BUILD_JAVA_LIBRARY)
......@@ -118,13 +119,12 @@ include $(BUILD_STATIC_JAVA_LIBRARY)
ifeq ($(LIBCORE_SKIP_TESTS),)
# Make the core-tests library.
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-test-java-files-under,crypto dalvik dom harmony-tests json luni xml)
LOCAL_SRC_FILES := $(call all-test-java-files-under,dalvik dom harmony-tests json luni xml)
LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
LOCAL_NO_STANDARD_LIBRARIES := true
LOCAL_JAVA_LIBRARIES := bouncycastle core core-junit okhttp
LOCAL_STATIC_JAVA_LIBRARIES := core-tests-support sqlite-jdbc mockwebserver nist-pkix-tests conscrypt-nojarjar okhttp-tests
LOCAL_STATIC_JAVA_LIBRARIES := core-tests-support sqlite-jdbc mockwebserver nist-pkix-tests okhttp-tests
LOCAL_JAVACFLAGS := $(local_javac_flags)
LOCAL_JARJAR_RULES := $(LOCAL_PATH)/crypto/jarjar-rules.txt
LOCAL_MODULE := core-tests
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
include $(BUILD_STATIC_JAVA_LIBRARY)
......@@ -137,14 +137,29 @@ LOCAL_SRC_FILES := $(call all-test-java-files-under,support)
LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
LOCAL_NO_STANDARD_LIBRARIES := true
LOCAL_JAVA_LIBRARIES := bouncycastle core core-junit
LOCAL_STATIC_JAVA_LIBRARIES := mockwebserver
LOCAL_JAVACFLAGS := $(local_javac_flags)
LOCAL_JARJAR_RULES := $(LOCAL_PATH)/crypto/jarjar-rules.txt
LOCAL_MODULE := core-tests-support
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
include $(BUILD_STATIC_JAVA_LIBRARY)
endif
ifeq ($(LIBCORE_SKIP_TESTS),)
# Make the conscrypt-tests library.
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-test-java-files-under,crypto)
LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
LOCAL_NO_STANDARD_LIBRARIES := true
LOCAL_JAVA_LIBRARIES := bouncycastle core core-junit
LOCAL_STATIC_JAVA_LIBRARIES := core-tests-support conscrypt-nojarjar
LOCAL_JAVACFLAGS := $(local_javac_flags)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := conscrypt-tests
LOCAL_REQUIRED_MODULES := libjavacrypto
LOCAL_JARJAR_RULES := $(LOCAL_PATH)/crypto/jarjar-rules.txt
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
include $(BUILD_STATIC_JAVA_LIBRARY)
endif
ifeq ($(LIBCORE_SKIP_TESTS),)
# Make the jsr166-tests library.
include $(CLEAR_VARS)
......@@ -215,6 +230,7 @@ ifeq ($(WITH_HOST_DALVIK),true)
LOCAL_BUILD_HOST_DEX := true
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := conscrypt-hostdex
LOCAL_REQUIRED_MODULES := libjavacrypto
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
include $(BUILD_HOST_JAVA_LIBRARY)
......@@ -233,19 +249,49 @@ ifeq ($(WITH_HOST_DALVIK),true)
# Make the core-tests library.
ifeq ($(LIBCORE_SKIP_TESTS),)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-test-java-files-under,crypto dalvik dom json luni support xml)
LOCAL_SRC_FILES := $(call all-test-java-files-under,dalvik dom json luni xml)
LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
LOCAL_NO_STANDARD_LIBRARIES := true
LOCAL_JAVA_LIBRARIES := bouncycastle-hostdex core-hostdex conscrypt-hostdex-nojarjar core-junit-hostdex okhttp-hostdex
LOCAL_JAVA_LIBRARIES := bouncycastle-hostdex core-hostdex core-junit-hostdex core-tests-support-hostdex okhttp-hostdex
LOCAL_STATIC_JAVA_LIBRARIES := sqlite-jdbc-host mockwebserver-host nist-pkix-tests-host
LOCAL_JAVACFLAGS := $(local_javac_flags)
LOCAL_JARJAR_RULES := $(LOCAL_PATH)/crypto/jarjar-rules.txt
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := core-tests-hostdex
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
LOCAL_BUILD_HOST_DEX := true
include $(BUILD_HOST_JAVA_LIBRARY)
endif
# Make the core-tests-support library.
ifeq ($(LIBCORE_SKIP_TESTS),)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-test-java-files-under,support)
LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
LOCAL_NO_STANDARD_LIBRARIES := true
LOCAL_JAVA_LIBRARIES := bouncycastle-hostdex core-hostdex core-junit-hostdex
LOCAL_JAVACFLAGS := $(local_javac_flags)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := core-tests-support-hostdex
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
LOCAL_BUILD_HOST_DEX := true
include $(BUILD_HOST_JAVA_LIBRARY)
endif
# Make the conscrypt-tests library.
ifeq ($(LIBCORE_SKIP_TESTS),)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-test-java-files-under,crypto)
LOCAL_JAVA_RESOURCE_DIRS := $(test_resource_dirs)
LOCAL_NO_STANDARD_LIBRARIES := true
LOCAL_JAVA_LIBRARIES := bouncycastle-hostdex core-hostdex core-junit-hostdex core-tests-support-hostdex conscrypt-hostdex-nojarjar
LOCAL_JAVACFLAGS := $(local_javac_flags)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := conscrypt-tests-hostdex
LOCAL_REQUIRED_MODULES := libjavacrypto
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/JavaLibrary.mk
LOCAL_BUILD_HOST_DEX := true
include $(BUILD_HOST_JAVA_LIBRARY)
endif
endif
#
......
......@@ -59,7 +59,7 @@ core_src_files :=
# Include the sub.mk files.
$(foreach dir, \
crypto/src/main/native dalvik/src/main/native luni/src/main/native, \
dalvik/src/main/native luni/src/main/native, \
$(eval $(call include-core-native-dir,$(dir))))
# Extract out the allowed LOCAL_* variables.
......@@ -67,7 +67,6 @@ core_c_includes := libcore/include $(LOCAL_C_INCLUDES)
core_shared_libraries := $(LOCAL_SHARED_LIBRARIES)
core_static_libraries := $(LOCAL_STATIC_LIBRARIES)
core_cflags := -Wall -Wextra -Werror
core_cflags += -DJNI_JARJAR_PREFIX="com/android/"
core_cppflags += -std=gnu++11
core_test_files := \
......@@ -82,7 +81,7 @@ LOCAL_CFLAGS += $(core_cflags)
LOCAL_CPPFLAGS += $(core_cppflags)
LOCAL_SRC_FILES += $(core_src_files)
LOCAL_C_INCLUDES += $(core_c_includes)
LOCAL_SHARED_LIBRARIES += $(core_shared_libraries) libexpat libicuuc libicui18n libssl libcrypto libz libnativehelper
LOCAL_SHARED_LIBRARIES += $(core_shared_libraries) libcrypto libexpat libicuuc libicui18n libnativehelper libz
LOCAL_STATIC_LIBRARIES += $(core_static_libraries)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := libjavacore
......@@ -90,6 +89,23 @@ LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk
include external/stlport/libstlport.mk
include $(BUILD_SHARED_LIBRARY)
# Platform conscrypt crypto library
include $(CLEAR_VARS)
LOCAL_CFLAGS += $(core_cflags)
LOCAL_CFLAGS += -DJNI_JARJAR_PREFIX="com/android/"
LOCAL_CPPFLAGS += $(core_cppflags)
LOCAL_SRC_FILES := \
crypto/src/main/native/org_conscrypt_NativeCrypto.cpp \
luni/src/main/native/AsynchronousSocketCloseMonitor.cpp
LOCAL_C_INCLUDES += $(core_c_includes) \
libcore/luni/src/main/native
LOCAL_SHARED_LIBRARIES += $(core_shared_libraries) libcrypto libssl libnativehelper libz
LOCAL_STATIC_LIBRARIES += $(core_static_libraries)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := libjavacrypto
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk
include external/stlport/libstlport.mk
include $(BUILD_SHARED_LIBRARY)
# Test JNI library.
ifeq ($(LIBCORE_SKIP_TESTS),)
......@@ -123,7 +139,24 @@ ifeq ($(WITH_HOST_DALVIK),true)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := libjavacore
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk
LOCAL_SHARED_LIBRARIES += $(core_shared_libraries) libexpat-host libicuuc-host libicui18n-host libssl-host libcrypto-host libz-host
LOCAL_SHARED_LIBRARIES += $(core_shared_libraries) libexpat-host libicuuc-host libicui18n-host libcrypto-host libz-host
LOCAL_STATIC_LIBRARIES += $(core_static_libraries)
include $(BUILD_HOST_SHARED_LIBRARY)
# Conscrypt native library for host
include $(CLEAR_VARS)
LOCAL_SRC_FILES += \
crypto/src/main/native/org_conscrypt_NativeCrypto.cpp \
luni/src/main/native/AsynchronousSocketCloseMonitor.cpp
LOCAL_C_INCLUDES += $(core_c_includes) \
libcore/luni/src/main/native
LOCAL_CPPFLAGS += $(core_cppflags)
LOCAL_LDLIBS += -lpthread
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := libjavacrypto
LOCAL_CFLAGS += -DJNI_JARJAR_PREFIX="com/android/"
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk
LOCAL_SHARED_LIBRARIES += $(core_shared_libraries) libssl-host libcrypto-host
LOCAL_STATIC_LIBRARIES += $(core_static_libraries)
include $(BUILD_HOST_SHARED_LIBRARY)
......@@ -132,7 +165,8 @@ ifeq ($(WITH_HOST_DALVIK),true)
LOCAL_SRC_FILES += \
crypto/src/main/native/org_conscrypt_NativeCrypto.cpp \
luni/src/main/native/AsynchronousSocketCloseMonitor.cpp
LOCAL_C_INCLUDES += $(core_c_includes)
LOCAL_C_INCLUDES += $(core_c_includes) \
libcore/luni/src/main/native
LOCAL_CPPFLAGS += $(core_cppflags)
LOCAL_LDLIBS += -lpthread
LOCAL_MODULE_TAGS := optional
......
......@@ -46,11 +46,12 @@ public final class NativeCrypto {
// --- OpenSSL library initialization --------------------------------------
static {
/*
* If we're compiled as part of Android, we don't need to explicitly
* call loadLibrary. Detect this by looking for the jarjar'd package
* name.
* If we're compiled as part of Android, should use a different JNI
* library name. Detect this by looking for the jarjar'd package name.
*/
if (!"com.android.org.conscrypt".equals(NativeCrypto.class.getPackage().getName())) {
if ("com.android.org.conscrypt".equals(NativeCrypto.class.getPackage().getName())) {
System.loadLibrary("javacrypto");
} else {
System.loadLibrary("conscrypt_jni");
}
......
......@@ -8178,8 +8178,6 @@ static void initialize_conscrypt(JNIEnv* env) {
outputStream_flushMethod = env->GetMethodID(outputStreamClass, "flush", "()V");
}
#if defined(CONSCRYPT_UNBUNDLED)
static jclass findClass(JNIEnv* env, const char* name) {
ScopedLocalRef<jclass> localClass(env, env->FindClass(name));
jclass result = reinterpret_cast<jclass>(env->NewGlobalRef(localClass.get()));
......@@ -8191,7 +8189,7 @@ static jclass findClass(JNIEnv* env, const char* name) {
}
// Use JNI_OnLoad for when we're standalone
int JNI_OnLoad(JavaVM *vm, void* reserved) {
int JNI_OnLoad(JavaVM *vm, void*) {
JNI_TRACE("JNI_OnLoad NativeCrypto");
gJavaVM = vm;
......@@ -8213,24 +8211,3 @@ int JNI_OnLoad(JavaVM *vm, void* reserved) {
initialize_conscrypt(env);
return JNI_VERSION_1_6;
}
#else
// Use this when built into Android
void register_org_conscrypt_NativeCrypto(JNIEnv* env) {
JNI_TRACE("register_org_conscrypt_NativeCrypto");
byteArrayClass = JniConstants::byteArrayClass;
calendarClass = JniConstants::calendarClass;
inputStreamClass = JniConstants::inputStreamClass;
integerClass = JniConstants::integerClass;
objectClass = JniConstants::objectClass;
objectArrayClass = JniConstants::objectArrayClass;
outputStreamClass = JniConstants::outputStreamClass;
stringClass = JniConstants::stringClass;
env->GetJavaVM(&gJavaVM);
initialize_conscrypt(env);
}
#endif // defined(CONSCRYPT_UNBUNDLED)
......@@ -73,7 +73,6 @@ int JNI_OnLoad(JavaVM* vm, void*) {
REGISTER(register_libcore_net_RawSocket);
REGISTER(register_org_apache_harmony_dalvik_NativeTestTarget);
REGISTER(register_org_apache_harmony_xml_ExpatParser);
REGISTER(register_org_conscrypt_NativeCrypto);
REGISTER(register_sun_misc_Unsafe);
#undef REGISTER
return JNI_VERSION_1_6;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment