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 := $(LOCAL_CFLAGS) -Wall -Wextra -Werror
     70 core_cppflags += -std=gnu++11
     71 
     72 core_test_files := \
     73   luni/src/test/native/dalvik_system_JniTest.cpp \
     74   luni/src/test/native/test_openssl_engine.cpp \
     75 
     76 #
     77 # Build for the target (device).
     78 #
     79 
     80 include $(CLEAR_VARS)
     81 LOCAL_CFLAGS += $(core_cflags)
     82 LOCAL_CPPFLAGS += $(core_cppflags)
     83 LOCAL_SRC_FILES += $(core_src_files)
     84 LOCAL_C_INCLUDES += $(core_c_includes)
     85 LOCAL_SHARED_LIBRARIES += $(core_shared_libraries) libcrypto libdl libexpat libicuuc libicui18n libnativehelper libz libutils
     86 LOCAL_STATIC_LIBRARIES += $(core_static_libraries) libziparchive
     87 LOCAL_MODULE_TAGS := optional
     88 LOCAL_MODULE := libjavacore
     89 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk
     90 include external/stlport/libstlport.mk
     91 include $(BUILD_SHARED_LIBRARY)
     92 
     93 # Test JNI library.
     94 ifeq ($(LIBCORE_SKIP_TESTS),)
     95 
     96 include $(CLEAR_VARS)
     97 LOCAL_CFLAGS += $(core_cflags)
     98 LOCAL_CPPFLAGS += $(core_cppflags)
     99 LOCAL_SRC_FILES += $(core_test_files)
    100 LOCAL_C_INCLUDES += libcore/include external/openssl/include
    101 LOCAL_SHARED_LIBRARIES += libcrypto
    102 LOCAL_MODULE_TAGS := optional
    103 LOCAL_MODULE := libjavacoretests
    104 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk
    105 include external/stlport/libstlport.mk
    106 include $(BUILD_SHARED_LIBRARY)
    107 
    108 endif # LIBCORE_SKIP_TESTS
    109 
    110 
    111 #
    112 # Build for the host.
    113 #
    114 
    115 include $(CLEAR_VARS)
    116 LOCAL_CLANG := true
    117 LOCAL_SRC_FILES += $(core_src_files)
    118 LOCAL_CFLAGS += $(core_cflags)
    119 LOCAL_C_INCLUDES += $(core_c_includes)
    120 LOCAL_CPPFLAGS += $(core_cppflags)
    121 LOCAL_LDLIBS += -ldl -lpthread
    122 ifeq ($(HOST_OS),linux)
    123 LOCAL_LDLIBS += -lrt
    124 endif
    125 LOCAL_MODULE_TAGS := optional
    126 LOCAL_MODULE := libjavacore
    127 LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk
    128 LOCAL_SHARED_LIBRARIES += $(core_shared_libraries) libexpat-host libicuuc-host libicui18n-host libcrypto-host libz-host
    129 LOCAL_STATIC_LIBRARIES += $(core_static_libraries) libziparchive-host libutils
    130 LOCAL_MULTILIB := both
    131 include $(BUILD_HOST_SHARED_LIBRARY)
    132 
    133 ifeq ($(LIBCORE_SKIP_TESTS),)
    134     include $(CLEAR_VARS)
    135     LOCAL_CLANG := true
    136     LOCAL_SRC_FILES += $(core_test_files)
    137     LOCAL_CFLAGS += $(core_cflags)
    138     LOCAL_C_INCLUDES += libcore/include external/openssl/include
    139     LOCAL_CPPFLAGS += $(core_cppflags)
    140     LOCAL_LDLIBS += -ldl -lpthread
    141     LOCAL_MODULE_TAGS := optional
    142     LOCAL_MODULE := libjavacoretests
    143     LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/NativeCode.mk
    144     LOCAL_SHARED_LIBRARIES := libcrypto-host
    145     include $(BUILD_HOST_SHARED_LIBRARY)
    146 endif # LIBCORE_SKIP_TESTS
    147