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