NativeCode.mk revision 53fbc0a776feebcc04f6c24b34f2c7ba39e6b5a1
16ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Copyright (C) 2007 The Android Open Source Project 26ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# 36ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Licensed under the Apache License, Version 2.0 (the "License"); 46ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# you may not use this file except in compliance with the License. 56ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# You may obtain a copy of the License at 66ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# 76ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# http://www.apache.org/licenses/LICENSE-2.0 86ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# 96ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Unless required by applicable law or agreed to in writing, software 106ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# distributed under the License is distributed on an "AS IS" BASIS, 116ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 126ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# See the License for the specific language governing permissions and 136ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# limitations under the License. 146ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 156ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# 166ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Definitions for building the native code needed for the core library. 176ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# 186ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 196ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# 206ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Common definitions for host and target. 216ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# 226ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 236ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Get the list of all native directories that contain sub.mk files. 246ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# We're using "sub.mk" to make it clear that these are not typical 256ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# android makefiles. 266ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteindefine all-core-native-dirs 276ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein$(patsubst %/sub.mk,%,$(shell cd $(LOCAL_PATH) && ls -d */src/$(1)/native/sub.mk 2> /dev/null)) 286ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteinendef 296ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 306ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# These two definitions are used to help sanity check what's put in 316ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# sub.mk. See, the "error" directives immediately below. 326ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteincore_magic_local_target := ...//::default:://... 336ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteincore_local_path := $(LOCAL_PATH) 346ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 356ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Include a submakefile, resolve its source file locations, 366ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# and stick them on core_src_files. The submakefiles are 376ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# free to append to LOCAL_SRC_FILES, LOCAL_C_INCLUDES, 386ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# LOCAL_SHARED_LIBRARIES, or LOCAL_STATIC_LIBRARIES, but nothing 396ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# else. All other LOCAL_* variables will be ignored. 406ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# 416ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# $(1): directory containing the makefile to include 426ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteindefine include-core-native-dir 436ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein LOCAL_SRC_FILES := 446ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein include $(LOCAL_PATH)/$(1)/sub.mk 456ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein ifneq ($$(LOCAL_MODULE),$(core_magic_local_target)) 466ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein $$(error $(LOCAL_PATH)/$(1)/sub.mk should not include CLEAR_VARS \ 476ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein or define LOCAL_MODULE) 486ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein endif 496ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein ifneq ($$(LOCAL_PATH),$(core_local_path)) 506ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein $$(error $(LOCAL_PATH)/$(1)/sub.mk should not define LOCAL_PATH) 516ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein endif 526ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein core_src_files += $$(addprefix $(1)/,$$(LOCAL_SRC_FILES)) 536ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein LOCAL_SRC_FILES := 546ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteinendef 556ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 566ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Find any native directories containing sub.mk files. 576ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteincore_native_dirs := $(strip $(call all-core-native-dirs,main)) 586ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteinifeq ($(core_native_dirs),) 596ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein $(error No native code defined for libcore) 606ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteinendif 616ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 626ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Set up the default state. Note: We use CLEAR_VARS here, even though 636ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# we aren't quite defining a new rule yet, to make sure that the 646ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# sub.mk files don't see anything stray from the last rule that was 656ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# set up. 666ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteininclude $(CLEAR_VARS) 676ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_MODULE := $(core_magic_local_target) 686ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteincore_src_files := 696ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 706ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Include the sub.mk files. 716ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein$(foreach dir, \ 726ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein $(core_native_dirs), \ 736ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein $(eval $(call include-core-native-dir,$(dir)))) 746ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 756ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Extract out the allowed LOCAL_* variables. Note: $(sort) also 766ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# removes duplicates. 776e1c2a95596e3ea72b48c7b54395131acbeab1daJean-Baptiste Querucore_c_includes := $(sort libcore/include $(LOCAL_C_INCLUDES) $(JNI_H_INCLUDE)) 786ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteincore_shared_libraries := $(sort $(LOCAL_SHARED_LIBRARIES)) 796ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteincore_static_libraries := $(sort $(LOCAL_STATIC_LIBRARIES)) 806ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 816ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 826ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# 836ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Build for the target (device). 846ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# 856ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 866ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteininclude $(CLEAR_VARS) 876ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 8824144d482dcd5deac58a5dca7042379c05b56b5eElliott HughesLOCAL_CFLAGS += -Wall -Wextra -Werror 8944e0e560c92338110953ce806df475fedcdf926eBrian Carlstrom 9064f2ba48fb9306ab1d97f5f83053ee7f48223de8Elliott Hughesifeq ($(TARGET_ARCH),arm) 9164f2ba48fb9306ab1d97f5f83053ee7f48223de8Elliott Hughes# Ignore "note: the mangling of 'va_list' has changed in GCC 4.4" 9264f2ba48fb9306ab1d97f5f83053ee7f48223de8Elliott HughesLOCAL_CFLAGS += -Wno-psabi 9364f2ba48fb9306ab1d97f5f83053ee7f48223de8Elliott Hughesendif 9464f2ba48fb9306ab1d97f5f83053ee7f48223de8Elliott Hughes 956ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Define the rules. 966ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_SRC_FILES := $(core_src_files) 976ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_C_INCLUDES := $(core_c_includes) 986ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_SHARED_LIBRARIES := $(core_shared_libraries) 996ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_STATIC_LIBRARIES := $(core_static_libraries) 10053fbc0a776feebcc04f6c24b34f2c7ba39e6b5a1Jesse WilsonLOCAL_MODULE_TAGS := optional 1016ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinLOCAL_MODULE := libjavacore 1026ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteininclude $(BUILD_STATIC_LIBRARY) 1036ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1046ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Deal with keystores required for security. Note: The path to this file 1056ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# is hardcoded in TrustManagerFactoryImpl.java. 1066ac43c29e4f1918d40441178c22bfca7409101beDan BornsteinALL_PREBUILT += $(TARGET_OUT)/etc/security/cacerts.bks 107cec4dd4b1d33f78997603d0f89c0d0e56e64dbcdPeter Hallam$(TARGET_OUT)/etc/security/cacerts.bks : $(LOCAL_PATH)/luni/src/main/files/cacerts.bks | $(ACP) 1086ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein $(transform-prebuilt-to-target) 1096ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1106ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1116ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# 1126ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# Build for the host. 1136ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein# 1146ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1156ac43c29e4f1918d40441178c22bfca7409101beDan Bornsteinifeq ($(WITH_HOST_DALVIK),true) 1166ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1176ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein include $(CLEAR_VARS) 1186ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 1196ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein # Define the rules. 1206ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein LOCAL_SRC_FILES := $(core_src_files) 1216ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein LOCAL_C_INCLUDES := $(core_c_includes) 1226ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein LOCAL_SHARED_LIBRARIES := $(core_shared_libraries) 1236ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein LOCAL_STATIC_LIBRARIES := $(core_static_libraries) 12453fbc0a776feebcc04f6c24b34f2c7ba39e6b5a1Jesse Wilson LOCAL_MODULE_TAGS := optional 1256ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein LOCAL_MODULE := libjavacore-host 126f7aa935cdd303cbef0a6ad12b95b6399daa7b241Jesse Wilson LOCAL_ADDITIONAL_DEPENDENCIES += $(HOST_OUT)/etc/security/cacerts.bks 1276ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein include $(BUILD_HOST_STATIC_LIBRARY) 1286ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 129f7aa935cdd303cbef0a6ad12b95b6399daa7b241Jesse Wilson $(eval $(call copy-one-file,$(LOCAL_PATH)/luni/src/main/files/cacerts.bks,$(HOST_OUT)/etc/security/cacerts.bks)) 1306ac43c29e4f1918d40441178c22bfca7409101beDan Bornstein 131845ce3cbfd6972542b275c95eddfbb6e94469737Elliott Hughesendif 132