Home | History | Annotate | Download | only in libcore
      1 # -*- mode: makefile -*-
      2 # Copyright (C) 2007 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 native code needed for the core library.
     18 #
     19 
     20 #
     21 # Common definitions for host and target.
     22 #
     23 
     24 # These two definitions are used to help sanity check what's put in
     25 # sub.mk. See, the "error" directives immediately below.
     26 core_magic_local_target := ...//::default:://...
     27 core_local_path := $(LOCAL_PATH)
     28 
     29 # Include a submakefile, resolve its source file locations,
     30 # and stick them on core_src_files.  The submakefiles are
     31 # free to append to LOCAL_SRC_FILES, LOCAL_C_INCLUDES,
     32 # LOCAL_SHARED_LIBRARIES, or LOCAL_STATIC_LIBRARIES, but nothing
     33 # else. All other LOCAL_* variables will be ignored.
     34 #
     35 # $(1): directory containing the makefile to include
     36 define include-core-native-dir
     37     LOCAL_SRC_FILES :=
     38     include $(LOCAL_PATH)/$(1)/sub.mk
     39     ifneq ($$(LOCAL_MODULE),$(core_magic_local_target))
     40         $$(error $(LOCAL_PATH)/$(1)/sub.mk should not include CLEAR_VARS \
     41             or define LOCAL_MODULE)
     42     endif
     43     ifneq ($$(LOCAL_PATH),$(core_local_path))
     44         $$(error $(LOCAL_PATH)/$(1)/sub.mk should not define LOCAL_PATH)
     45     endif
     46     core_src_files += $$(addprefix $(1)/,$$(LOCAL_SRC_FILES))
     47     LOCAL_SRC_FILES :=
     48 endef
     49 
     50 # Set up the default state. Note: We use CLEAR_VARS here, even though
     51 # we aren't quite defining a new rule yet, to make sure that the
     52 # sub.mk files don't see anything stray from the last rule that was
     53 # set up.
     54 
     55 include $(CLEAR_VARS)
     56 LOCAL_MODULE := $(core_magic_local_target)
     57 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk
     58 core_src_files :=
     59 
     60 # Include the sub.mk files.
     61 $(foreach dir, \
     62     dalvik/src/main/native luni/src/main/native, \
     63     $(eval $(call include-core-native-dir,$(dir))))
     64 
     65 # Extract out the allowed LOCAL_* variables.
     66 core_c_includes := libcore/include $(LOCAL_C_INCLUDES)
     67 core_shared_libraries := $(LOCAL_SHARED_LIBRARIES)
     68 core_static_libraries := $(LOCAL_STATIC_LIBRARIES)
     69 core_cflags := -Wall -Wextra -Werror
     70 core_cppflags += -std=gnu++11
     71 
     72 core_test_files := \
     73   luni/src/test/native/test_openssl_engine.cpp \
     74 
     75 #
     76 # Build for the target (device).
     77 #
     78 
     79 include $(CLEAR_VARS)
     80 LOCAL_CFLAGS += $(core_cflags)
     81 LOCAL_CPPFLAGS += $(core_cppflags)
     82 LOCAL_SRC_FILES += $(core_src_files)
     83 LOCAL_C_INCLUDES += $(core_c_includes)
     84 LOCAL_SHARED_LIBRARIES += $(core_shared_libraries) libcrypto libexpat libicuuc libicui18n libnativehelper libz
     85 LOCAL_STATIC_LIBRARIES += $(core_static_libraries)
     86 LOCAL_MODULE_TAGS := optional
     87 LOCAL_MODULE := libjavacore
     88 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk
     89 include external/stlport/libstlport.mk
     90 include $(BUILD_SHARED_LIBRARY)
     91 
     92 # Platform conscrypt crypto library
     93 include $(CLEAR_VARS)
     94 LOCAL_CFLAGS += $(core_cflags)
     95 LOCAL_CFLAGS += -DJNI_JARJAR_PREFIX="com/android/"
     96 LOCAL_CPPFLAGS += $(core_cppflags)
     97 LOCAL_SRC_FILES := \
     98         crypto/src/main/native/org_conscrypt_NativeCrypto.cpp
     99 LOCAL_C_INCLUDES += $(core_c_includes) \
    100         libcore/luni/src/main/native
    101 LOCAL_SHARED_LIBRARIES += $(core_shared_libraries) libcrypto libssl libnativehelper libz libjavacore
    102 LOCAL_STATIC_LIBRARIES += $(core_static_libraries)
    103 LOCAL_MODULE_TAGS := optional
    104 LOCAL_MODULE := libjavacrypto
    105 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk
    106 include external/stlport/libstlport.mk
    107 include $(BUILD_SHARED_LIBRARY)
    108 
    109 # Test JNI library.
    110 ifeq ($(LIBCORE_SKIP_TESTS),)
    111 
    112 include $(CLEAR_VARS)
    113 LOCAL_CFLAGS += $(core_cflags)
    114 LOCAL_CPPFLAGS += $(core_cppflags)
    115 LOCAL_SRC_FILES += $(core_test_files)
    116 LOCAL_C_INCLUDES += libcore/include external/openssl/include
    117 LOCAL_SHARED_LIBRARIES += libcrypto
    118 LOCAL_MODULE_TAGS := optional
    119 LOCAL_MODULE := libjavacoretests
    120 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk
    121 include external/stlport/libstlport.mk
    122 include $(BUILD_SHARED_LIBRARY)
    123 
    124 endif # LIBCORE_SKIP_TESTS
    125 
    126 
    127 #
    128 # Build for the host.
    129 #
    130 
    131 ifeq ($(WITH_HOST_DALVIK),true)
    132     include $(CLEAR_VARS)
    133     LOCAL_SRC_FILES += $(core_src_files)
    134     LOCAL_CFLAGS += $(core_cflags)
    135     LOCAL_C_INCLUDES += $(core_c_includes)
    136     LOCAL_CPPFLAGS += $(core_cppflags)
    137     LOCAL_LDLIBS += -ldl -lpthread -lrt
    138     LOCAL_MODULE_TAGS := optional
    139     LOCAL_MODULE := libjavacore
    140     LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk
    141     LOCAL_SHARED_LIBRARIES += $(core_shared_libraries) libexpat-host libicuuc-host libicui18n-host libcrypto-host libz-host
    142     LOCAL_STATIC_LIBRARIES += $(core_static_libraries)
    143     include $(BUILD_HOST_SHARED_LIBRARY)
    144 
    145     # Conscrypt native library for host
    146     include $(CLEAR_VARS)
    147     LOCAL_SRC_FILES += \
    148             crypto/src/main/native/org_conscrypt_NativeCrypto.cpp
    149     LOCAL_C_INCLUDES += $(core_c_includes) \
    150             libcore/luni/src/main/native
    151     LOCAL_CPPFLAGS += $(core_cppflags)
    152     LOCAL_LDLIBS += -lpthread
    153     LOCAL_MODULE_TAGS := optional
    154     LOCAL_MODULE := libjavacrypto
    155     LOCAL_CFLAGS += -DJNI_JARJAR_PREFIX="com/android/"
    156     LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk
    157     LOCAL_SHARED_LIBRARIES += $(core_shared_libraries) libssl-host libcrypto-host libjavacore
    158     LOCAL_STATIC_LIBRARIES += $(core_static_libraries)
    159     include $(BUILD_HOST_SHARED_LIBRARY)
    160 
    161     # Conscrypt native library for nojarjar'd version
    162     include $(CLEAR_VARS)
    163     LOCAL_SRC_FILES += \
    164             crypto/src/main/native/org_conscrypt_NativeCrypto.cpp
    165     LOCAL_C_INCLUDES += $(core_c_includes) \
    166             libcore/luni/src/main/native
    167     LOCAL_CPPFLAGS += $(core_cppflags)
    168     LOCAL_LDLIBS += -lpthread
    169     LOCAL_MODULE_TAGS := optional
    170     LOCAL_MODULE := libconscrypt_jni
    171     LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk
    172     LOCAL_SHARED_LIBRARIES += $(core_shared_libraries) libssl-host libcrypto-host libjavacore
    173     LOCAL_STATIC_LIBRARIES += $(core_static_libraries)
    174     include $(BUILD_HOST_SHARED_LIBRARY)
    175 
    176     ifeq ($(LIBCORE_SKIP_TESTS),)
    177     include $(CLEAR_VARS)
    178     LOCAL_SRC_FILES += $(core_test_files)
    179     LOCAL_CFLAGS += $(core_cflags)
    180     LOCAL_C_INCLUDES += libcore/include external/openssl/include
    181     LOCAL_CPPFLAGS += $(core_cppflags)
    182     LOCAL_LDLIBS += -ldl -lpthread
    183     LOCAL_MODULE_TAGS := optional
    184     LOCAL_MODULE := libjavacoretests
    185     LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk
    186     LOCAL_SHARED_LIBRARIES := libcrypto-host
    187     include $(BUILD_HOST_SHARED_LIBRARY)
    188     endif # LIBCORE_SKIP_TESTS
    189 endif
    190