188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Standard rules for building binary object files from
3d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang## asm/c/cpp/yacc/lex/etc source files.
488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project##
588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## The list of object files is exported in $(all_objects).
688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
8d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang#######################################
9d8d37212400ee275bbec78e584c86f60ac10b666Ying Wanginclude $(BUILD_SYSTEM)/base_rules.mk
10d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang#######################################
11d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang
12140761af09832e4ef5013141757e9aace9afcc6fAndrew Hsiehmy_ndk_sysroot :=
13140761af09832e4ef5013141757e9aace9afcc6fAndrew Hsiehmy_ndk_sysroot_include :=
14140761af09832e4ef5013141757e9aace9afcc6fAndrew Hsiehmy_ndk_sysroot_lib :=
15848020f22a5e305ddf8814942e71d8120509a4ecYing Wangifdef LOCAL_SDK_VERSION
16fe1bfe7dc9d29393f3a6add57eb3297bd31e3de6Ying Wang  ifdef LOCAL_NDK_VERSION
17fe1bfe7dc9d29393f3a6add57eb3297bd31e3de6Ying Wang    $(error $(LOCAL_PATH): LOCAL_NDK_VERSION is now retired.)
18fe1bfe7dc9d29393f3a6add57eb3297bd31e3de6Ying Wang  endif
191a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wang  ifdef LOCAL_IS_HOST_MODULE
2076a6dc3a191e8800211eb49398d37deae731094eIan Rogers    $(error $(LOCAL_PATH): LOCAL_SDK_VERSION cannot be used in host module)
211a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wang  endif
22848020f22a5e305ddf8814942e71d8120509a4ecYing Wang  my_ndk_source_root := $(HISTORICAL_NDK_VERSIONS_ROOT)/current/sources
23140761af09832e4ef5013141757e9aace9afcc6fAndrew Hsieh  my_ndk_sysroot := $(HISTORICAL_NDK_VERSIONS_ROOT)/current/platforms/android-$(LOCAL_SDK_VERSION)/arch-$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)
24140761af09832e4ef5013141757e9aace9afcc6fAndrew Hsieh  my_ndk_sysroot_include := $(my_ndk_sysroot)/usr/include
25140761af09832e4ef5013141757e9aace9afcc6fAndrew Hsieh  ifeq (x86_64,$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH))
26140761af09832e4ef5013141757e9aace9afcc6fAndrew Hsieh    my_ndk_sysroot_lib := $(my_ndk_sysroot)/usr/lib64
27140761af09832e4ef5013141757e9aace9afcc6fAndrew Hsieh  else
28140761af09832e4ef5013141757e9aace9afcc6fAndrew Hsieh    my_ndk_sysroot_lib := $(my_ndk_sysroot)/usr/lib
29140761af09832e4ef5013141757e9aace9afcc6fAndrew Hsieh  endif
30cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang
31cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang  # Set up the NDK stl variant. Starting from NDK-r5 the c++ stl resides in a separate location.
32cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang  # See ndk/docs/CPLUSPLUS-SUPPORT.html
33cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang  my_ndk_stl_include_path :=
34cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang  my_ndk_stl_shared_lib_fullpath :=
35cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang  my_ndk_stl_shared_lib :=
36cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang  my_ndk_stl_static_lib :=
3773d800e5199844d2868288c30a496de1cea0c159Andrew Hsieh  my_ndk_stl_cppflags :=
3873d800e5199844d2868288c30a496de1cea0c159Andrew Hsieh  LOCAL_NDK_STL_VARIANT := $(strip $(LOCAL_NDK_STL_VARIANT))
39cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang  ifeq (,$(LOCAL_NDK_STL_VARIANT))
40cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang    LOCAL_NDK_STL_VARIANT := system
41cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang  endif
4273d800e5199844d2868288c30a496de1cea0c159Andrew Hsieh  ifneq (1,$(words $(filter system stlport_static stlport_shared c++_static c++_shared gnustl_static, $(LOCAL_NDK_STL_VARIANT))))
43848020f22a5e305ddf8814942e71d8120509a4ecYing Wang    $(error $(LOCAL_PATH): Unknown LOCAL_NDK_STL_VARIANT $(LOCAL_NDK_STL_VARIANT))
44cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang  endif
45cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang  ifeq (system,$(LOCAL_NDK_STL_VARIANT))
46cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang    my_ndk_stl_include_path := $(my_ndk_source_root)/cxx-stl/system/include
47cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang    # for "system" variant, the shared library exists in the system library and -lstdc++ is added by default.
48cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang  else # LOCAL_NDK_STL_VARIANT is not system
49cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang  ifneq (,$(filter stlport_%, $(LOCAL_NDK_STL_VARIANT)))
50cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang    my_ndk_stl_include_path := $(my_ndk_source_root)/cxx-stl/stlport/stlport
51cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang    ifeq (stlport_static,$(LOCAL_NDK_STL_VARIANT))
526ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang      my_ndk_stl_static_lib := $(my_ndk_source_root)/cxx-stl/stlport/libs/$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)CPU_ABI)/libstlport_static.a
53cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang    else
546ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang      my_ndk_stl_shared_lib_fullpath := $(my_ndk_source_root)/cxx-stl/stlport/libs/$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)CPU_ABI)/libstlport_shared.so
55cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang      my_ndk_stl_shared_lib := -lstlport_shared
56cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang    endif
5773d800e5199844d2868288c30a496de1cea0c159Andrew Hsieh  else # LOCAL_NDK_STL_VARIANT is not stlport_* either
5873d800e5199844d2868288c30a496de1cea0c159Andrew Hsieh  ifneq (,$(filter c++_%, $(LOCAL_NDK_STL_VARIANT)))
5973d800e5199844d2868288c30a496de1cea0c159Andrew Hsieh    my_ndk_stl_include_path := $(my_ndk_source_root)/cxx-stl/llvm-libc++/libcxx/include \
6073d800e5199844d2868288c30a496de1cea0c159Andrew Hsieh                               $(my_ndk_source_root)/cxx-stl/llvm-libc++/gabi++/include \
6173d800e5199844d2868288c30a496de1cea0c159Andrew Hsieh                               $(my_ndk_source_root)/android/support/include
6273d800e5199844d2868288c30a496de1cea0c159Andrew Hsieh    ifeq (c++_static,$(LOCAL_NDK_STL_VARIANT))
6373d800e5199844d2868288c30a496de1cea0c159Andrew Hsieh      my_ndk_stl_static_lib := $(my_ndk_source_root)/cxx-stl/llvm-libc++/libs/$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)CPU_ABI)/libc++_static.a
6473d800e5199844d2868288c30a496de1cea0c159Andrew Hsieh    else
6573d800e5199844d2868288c30a496de1cea0c159Andrew Hsieh      my_ndk_stl_shared_lib_fullpath := $(my_ndk_source_root)/cxx-stl/llvm-libc++/libs/$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)CPU_ABI)/libc++_shared.so
6673d800e5199844d2868288c30a496de1cea0c159Andrew Hsieh      my_ndk_stl_shared_lib := -lc++_shared
6773d800e5199844d2868288c30a496de1cea0c159Andrew Hsieh    endif
6873d800e5199844d2868288c30a496de1cea0c159Andrew Hsieh    my_ndk_stl_cppflags := -std=c++11
69cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang  else
70cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang    # LOCAL_NDK_STL_VARIANT is gnustl_static
714de6fa4069407607813dfdd1993114c79194d337Ben Cheng    my_ndk_stl_include_path := $(my_ndk_source_root)/cxx-stl/gnu-libstdc++/$($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_NDK_GCC_VERSION)/libs/$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)CPU_ABI)/include \
724de6fa4069407607813dfdd1993114c79194d337Ben Cheng                               $(my_ndk_source_root)/cxx-stl/gnu-libstdc++/$($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_NDK_GCC_VERSION)/include
734de6fa4069407607813dfdd1993114c79194d337Ben Cheng    my_ndk_stl_static_lib := $(my_ndk_source_root)/cxx-stl/gnu-libstdc++/$($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_NDK_GCC_VERSION)/libs/$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)CPU_ABI)/libgnustl_static.a
74cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang  endif
75cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang  endif
7673d800e5199844d2868288c30a496de1cea0c159Andrew Hsieh  endif
77704c0c9fcac5f680411666835fc6bd5d052ba8dbYing Wangendif
78cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang
79704c0c9fcac5f680411666835fc6bd5d052ba8dbYing Wang##################################################
80704c0c9fcac5f680411666835fc6bd5d052ba8dbYing Wang# Compute the dependency of the shared libraries
81704c0c9fcac5f680411666835fc6bd5d052ba8dbYing Wang##################################################
82704c0c9fcac5f680411666835fc6bd5d052ba8dbYing Wang# On the target, we compile with -nostdlib, so we must add in the
83704c0c9fcac5f680411666835fc6bd5d052ba8dbYing Wang# default system shared libraries, unless they have requested not
84704c0c9fcac5f680411666835fc6bd5d052ba8dbYing Wang# to by supplying a LOCAL_SYSTEM_SHARED_LIBRARIES value.  One would
85704c0c9fcac5f680411666835fc6bd5d052ba8dbYing Wang# supply that, for example, when building libc itself.
86704c0c9fcac5f680411666835fc6bd5d052ba8dbYing Wangifdef LOCAL_IS_HOST_MODULE
87704c0c9fcac5f680411666835fc6bd5d052ba8dbYing Wang  ifeq ($(LOCAL_SYSTEM_SHARED_LIBRARIES),none)
88d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang      my_system_shared_libraries :=
89d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang  else
90d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang      my_system_shared_libraries := $(LOCAL_SYSTEM_SHARED_LIBRARIES)
91704c0c9fcac5f680411666835fc6bd5d052ba8dbYing Wang  endif
92704c0c9fcac5f680411666835fc6bd5d052ba8dbYing Wangelse
93704c0c9fcac5f680411666835fc6bd5d052ba8dbYing Wang  ifeq ($(LOCAL_SYSTEM_SHARED_LIBRARIES),none)
94d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang      my_system_shared_libraries := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_DEFAULT_SYSTEM_SHARED_LIBRARIES)
95d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang  else
96d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang      my_system_shared_libraries := $(LOCAL_SYSTEM_SHARED_LIBRARIES)
97704c0c9fcac5f680411666835fc6bd5d052ba8dbYing Wang  endif
98704c0c9fcac5f680411666835fc6bd5d052ba8dbYing Wangendif
99704c0c9fcac5f680411666835fc6bd5d052ba8dbYing Wang
1006ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang# The following LOCAL_ variables will be modified in this file.
1016ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang# Because the same LOCAL_ variables may be used to define modules for both 1st arch and 2nd arch,
1026ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang# we can't modify them in place.
103f4f2fbe220da4f2af6f2507575e1a2554c8a32baColin Crossmy_src_files := $(LOCAL_SRC_FILES)
104f4f2fbe220da4f2af6f2507575e1a2554c8a32baColin Crossmy_static_libraries := $(LOCAL_STATIC_LIBRARIES)
105f4f2fbe220da4f2af6f2507575e1a2554c8a32baColin Crossmy_whole_static_libraries := $(LOCAL_WHOLE_STATIC_LIBRARIES)
106f4f2fbe220da4f2af6f2507575e1a2554c8a32baColin Crossmy_shared_libraries := $(LOCAL_SHARED_LIBRARIES)
107f4f2fbe220da4f2af6f2507575e1a2554c8a32baColin Crossmy_cflags := $(LOCAL_CFLAGS)
1086ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wangmy_cppflags := $(LOCAL_CPPFLAGS)
109f4f2fbe220da4f2af6f2507575e1a2554c8a32baColin Crossmy_ldflags := $(LOCAL_LDFLAGS)
110f4f2fbe220da4f2af6f2507575e1a2554c8a32baColin Crossmy_asflags := $(LOCAL_ASFLAGS)
1116ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wangmy_cc := $(LOCAL_CC)
1126ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wangmy_cxx := $(LOCAL_CXX)
113f4f2fbe220da4f2af6f2507575e1a2554c8a32baColin Crossmy_c_includes := $(LOCAL_C_INCLUDES)
114f4f2fbe220da4f2af6f2507575e1a2554c8a32baColin Crossmy_generated_sources := $(LOCAL_GENERATED_SOURCES)
115f4f2fbe220da4f2af6f2507575e1a2554c8a32baColin Cross
11647b755b4867d900af6d06cdb7d1535cd018f4f25Dan Albert# MinGW spits out warnings about -fPIC even for -fpie?!) being ignored because
11747b755b4867d900af6d06cdb7d1535cd018f4f25Dan Albert# all code is position independent, and then those warnings get promoted to
11847b755b4867d900af6d06cdb7d1535cd018f4f25Dan Albert# errors.
11947b755b4867d900af6d06cdb7d1535cd018f4f25Dan Albertifeq ($(strip $(USE_MINGW)),)
120908ab54fda172baa9a646259fafd8af35290f0a6Dan Albertifeq ($(LOCAL_MODULE_CLASS),EXECUTABLES)
121908ab54fda172baa9a646259fafd8af35290f0a6Dan Albertmy_cflags += -fpie
122908ab54fda172baa9a646259fafd8af35290f0a6Dan Albertelse
123908ab54fda172baa9a646259fafd8af35290f0a6Dan Albertmy_cflags += -fPIC
124908ab54fda172baa9a646259fafd8af35290f0a6Dan Albertendif
12547b755b4867d900af6d06cdb7d1535cd018f4f25Dan Albertendif
126908ab54fda172baa9a646259fafd8af35290f0a6Dan Albert
1276feb6d5607ce86a446645564212043964628f540Ying Wangmy_src_files += $(LOCAL_SRC_FILES_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) $(LOCAL_SRC_FILES_$(my_32_64_bit_suffix))
1286feb6d5607ce86a446645564212043964628f540Ying Wangmy_shared_libraries += $(LOCAL_SHARED_LIBRARIES_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) $(LOCAL_SHARED_LIBRARIES_$(my_32_64_bit_suffix))
1296feb6d5607ce86a446645564212043964628f540Ying Wangmy_cflags += $(LOCAL_CFLAGS_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) $(LOCAL_CFLAGS_$(my_32_64_bit_suffix))
1306feb6d5607ce86a446645564212043964628f540Ying Wangmy_cppflags += $(LOCAL_CPPFLAGS_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) $(LOCAL_CPPFLAGS_$(my_32_64_bit_suffix))
1316feb6d5607ce86a446645564212043964628f540Ying Wangmy_ldflags += $(LOCAL_LDFLAGS_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) $(LOCAL_LDFLAGS_$(my_32_64_bit_suffix))
1326feb6d5607ce86a446645564212043964628f540Ying Wangmy_asflags += $(LOCAL_ASFLAGS_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) $(LOCAL_ASFLAGS_$(my_32_64_bit_suffix))
1336feb6d5607ce86a446645564212043964628f540Ying Wangmy_c_includes += $(LOCAL_C_INCLUDES_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) $(LOCAL_C_INCLUDES_$(my_32_64_bit_suffix))
1346feb6d5607ce86a446645564212043964628f540Ying Wangmy_generated_sources += $(LOCAL_GENERATED_SOURCES_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) $(LOCAL_GENERATED_SOURCES_$(my_32_64_bit_suffix))
135f4f2fbe220da4f2af6f2507575e1a2554c8a32baColin Cross
136824344af004bc87a7b7a301e53814258c8412e4fYing Wangmy_clang := $(LOCAL_CLANG)
137824344af004bc87a7b7a301e53814258c8412e4fYing Wangifdef LOCAL_CLANG_$(my_32_64_bit_suffix)
138824344af004bc87a7b7a301e53814258c8412e4fYing Wangmy_clang := $(LOCAL_CLANG_$(my_32_64_bit_suffix))
139824344af004bc87a7b7a301e53814258c8412e4fYing Wangendif
140824344af004bc87a7b7a301e53814258c8412e4fYing Wangifdef LOCAL_CLANG_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)
141824344af004bc87a7b7a301e53814258c8412e4fYing Wangmy_clang := $(LOCAL_CLANG_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH))
142824344af004bc87a7b7a301e53814258c8412e4fYing Wangendif
143824344af004bc87a7b7a301e53814258c8412e4fYing Wang
144f4f2fbe220da4f2af6f2507575e1a2554c8a32baColin Cross# arch-specific static libraries go first so that generic ones can depend on them
1456feb6d5607ce86a446645564212043964628f540Ying Wangmy_static_libraries := $(LOCAL_STATIC_LIBRARIES_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) $(LOCAL_STATIC_LIBRARIES_$(my_32_64_bit_suffix)) $(my_static_libraries)
1466feb6d5607ce86a446645564212043964628f540Ying Wangmy_whole_static_libraries := $(LOCAL_WHOLE_STATIC_LIBRARIES_$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) $(LOCAL_WHOLE_STATIC_LIBRARIES_$(my_32_64_bit_suffix)) $(my_whole_static_libraries)
1476ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang
1486feb6d5607ce86a446645564212043964628f540Ying Wangmy_cflags := $(filter-out $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)GLOBAL_UNSUPPORTED_CFLAGS),$(my_cflags))
1496ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang
150d90de32951835818a12b5fbb29871722ec1a7b1dYing Wang
151d90de32951835818a12b5fbb29871722ec1a7b1dYing Wang# Replace libstdc++ with libc++ if it's seen
152d90de32951835818a12b5fbb29871722ec1a7b1dYing Wangmy_libcxx := $(filter libc++, $(my_shared_libraries))
153d90de32951835818a12b5fbb29871722ec1a7b1dYing Wangifdef my_libcxx
154d90de32951835818a12b5fbb29871722ec1a7b1dYing Wangmy_system_shared_libraries := $(filter-out libstdc++, $(my_system_shared_libraries))
155d90de32951835818a12b5fbb29871722ec1a7b1dYing Wangendif
156d90de32951835818a12b5fbb29871722ec1a7b1dYing Wang
157285045bd83548196aa3695423c6cd500ebe6d6c1Ying Wang# Add static HAL libraries
158285045bd83548196aa3695423c6cd500ebe6d6c1Ying Wangifdef LOCAL_HAL_STATIC_LIBRARIES
159285045bd83548196aa3695423c6cd500ebe6d6c1Ying Wang$(foreach lib, $(LOCAL_HAL_STATIC_LIBRARIES), \
160285045bd83548196aa3695423c6cd500ebe6d6c1Ying Wang    $(eval b_lib := $(filter $(lib).%,$(BOARD_HAL_STATIC_LIBRARIES)))\
1616ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang    $(if $(b_lib), $(eval my_static_libraries += $(b_lib)),\
1626ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang                   $(eval my_static_libraries += $(lib).default)))
163285045bd83548196aa3695423c6cd500ebe6d6c1Ying Wangb_lib :=
164285045bd83548196aa3695423c6cd500ebe6d6c1Ying Wangendif
165285045bd83548196aa3695423c6cd500ebe6d6c1Ying Wang
1666cc9c06854f0e847bdf93d65947c306a83900851Evgeniy Stepanovifeq ($(strip $(LOCAL_ADDRESS_SANITIZER)),true)
167824344af004bc87a7b7a301e53814258c8412e4fYing Wang  my_clang := true
1685d8029f234669cf1688739437810db11dcdb403dEvgeniy Stepanov  # Frame pointer based unwinder in ASan requires ARM frame setup.
1695d8029f234669cf1688739437810db11dcdb403dEvgeniy Stepanov  LOCAL_ARM_MODE := arm
1706ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang  my_cflags += $(ADDRESS_SANITIZER_CONFIG_EXTRA_CFLAGS)
1716ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang  my_ldflags += $(ADDRESS_SANITIZER_CONFIG_EXTRA_LDFLAGS)
1726ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang  my_shared_libraries += $(ADDRESS_SANITIZER_CONFIG_EXTRA_SHARED_LIBRARIES)
1736ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang  my_static_libraries += $(ADDRESS_SANITIZER_CONFIG_EXTRA_STATIC_LIBRARIES)
1746cc9c06854f0e847bdf93d65947c306a83900851Evgeniy Stepanovendif
1756cc9c06854f0e847bdf93d65947c306a83900851Evgeniy Stepanov
176ba8b377d89a3bd37ef6112e21c852be75e07db0aYing Wangifeq ($(strip $($(LOCAL_2ND_ARCH_VAR_PREFIX)WITHOUT_$(my_prefix)CLANG)),true)
177824344af004bc87a7b7a301e53814258c8412e4fYing Wang  my_clang :=
178051a1740eb434e317451c09b72ae09c81cbfa1c1Mike Lockwoodendif
179051a1740eb434e317451c09b72ae09c81cbfa1c1Mike Lockwood
180c8dfc169c80416c5fe501e793acbdf232ca0316cShih-wei Liao# Add in libcompiler_rt for all regular device builds
181daf5e22dbac03e174e22c8209ed97c44c3a2a2c9Mike Lockwoodifeq (,$(LOCAL_SDK_VERSION)$(LOCAL_IS_HOST_MODULE)$(WITHOUT_LIBCOMPILER_RT))
1826ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang  my_static_libraries += $(COMPILER_RT_CONFIG_EXTRA_STATIC_LIBRARIES)
183c72f39664d6e6a9d15b912cd72e7bcef121fcc11Stephen Hinesendif
184c72f39664d6e6a9d15b912cd72e7bcef121fcc11Stephen Hines
185dfbe79b803dbbf0fd4c863200e10bedd69510aa3Ying Wangmy_compiler_dependencies :=
18688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
1872dcc806af56351dca462225be7ecfad7da5aa8f1Jing Yu####################################################
1882dcc806af56351dca462225be7ecfad7da5aa8f1Jing Yu## Add FDO flags if FDO is turned on and supported
1892dcc806af56351dca462225be7ecfad7da5aa8f1Jing Yu####################################################
190f7a909db63b63cea991ea092b9ef0526c1dcd55bDehao Chenifeq ($(strip $(LOCAL_FDO_SUPPORT)), true)
1914a605760297d57f2e1006c145724f10866e34ff2synergydev  ifeq ($(strip $(LOCAL_IS_HOST_MODULE)),)
1926ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang    my_cflags += $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_FDO_CFLAGS)
193f4294cd81617250097a15f4cbe6af937ae3f303cDehao Chen    my_ldflags += $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_FDO_LDFLAGS)
1944a605760297d57f2e1006c145724f10866e34ff2synergydev  endif
1952dcc806af56351dca462225be7ecfad7da5aa8f1Jing Yuendif
1962dcc806af56351dca462225be7ecfad7da5aa8f1Jing Yu
19788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
19820d1ba602b8f56cc396a213f6beecac500af02e2Jim Huang## Explicitly declare assembly-only __ASSEMBLY__ macro for
19920d1ba602b8f56cc396a213f6beecac500af02e2Jim Huang## assembly source
20020d1ba602b8f56cc396a213f6beecac500af02e2Jim Huang###########################################################
2016ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wangmy_asflags += -D__ASSEMBLY__
20220d1ba602b8f56cc396a213f6beecac500af02e2Jim Huang
203d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang
204d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang##########################################################
205d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang## Set up installed module dependency
206d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang## We cannot compute the full path of the LOCAL_SHARED_LIBRARIES for
207d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang## they may cusomize their install path with LOCAL_MODULE_PATH
208d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang##########################################################
209d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang# Get the list of INSTALLED libraries as module names.
210d8d37212400ee275bbec78e584c86f60ac10b666Ying Wangifdef LOCAL_SDK_VERSION
211d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang  installed_shared_library_module_names := \
212d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang      $(my_shared_libraries)
213d8d37212400ee275bbec78e584c86f60ac10b666Ying Wangelse
214d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang  installed_shared_library_module_names := \
215d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang      $(my_system_shared_libraries) $(my_shared_libraries)
216d8d37212400ee275bbec78e584c86f60ac10b666Ying Wangendif
217d8d37212400ee275bbec78e584c86f60ac10b666Ying Wanginstalled_shared_library_module_names := $(sort $(installed_shared_library_module_names))
218d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang
219d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang# The real dependency will be added after all Android.mks are loaded and the install paths
220d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang# of the shared libraries are determined.
221d8d37212400ee275bbec78e584c86f60ac10b666Ying Wangifdef LOCAL_INSTALLED_MODULE
222d8d37212400ee275bbec78e584c86f60ac10b666Ying Wangifdef installed_shared_library_module_names
223d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang$(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)DEPENDENCIES_ON_SHARED_LIBRARIES += \
224e1b867dde77d59bb35f366c2e3d65fe37c696880Ying Wang    $(my_register_name):$(LOCAL_INSTALLED_MODULE):$(subst $(space),$(comma),$(installed_shared_library_module_names))
225d8d37212400ee275bbec78e584c86f60ac10b666Ying Wangendif
226d8d37212400ee275bbec78e584c86f60ac10b666Ying Wangendif
227d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang
22820d1ba602b8f56cc396a213f6beecac500af02e2Jim Huang###########################################################
2291a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wang## Define PRIVATE_ variables from global vars
2301a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wang###########################################################
2317fff9a1a560b822be79f47566f43b76111d7aecfYing Wangifndef LOCAL_IS_HOST_MODULE
232848020f22a5e305ddf8814942e71d8120509a4ecYing Wangifdef LOCAL_SDK_VERSION
2331a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wangmy_target_project_includes :=
234140761af09832e4ef5013141757e9aace9afcc6fAndrew Hsiehmy_target_c_includes := $(my_ndk_stl_include_path) $(my_ndk_sysroot_include)
23573d800e5199844d2868288c30a496de1cea0c159Andrew Hsiehmy_target_global_cppflags := $(my_ndk_stl_cppflags)
2361a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wangelse
2376ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wangmy_target_project_includes := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_PROJECT_INCLUDES)
2386ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wangmy_target_c_includes := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_C_INCLUDES)
23973d800e5199844d2868288c30a496de1cea0c159Andrew Hsiehmy_target_global_cppflags :=
240f4723fa49b6e61f727b6321a4006ee8ba3f393b9Ying Wangendif # LOCAL_SDK_VERSION
241f4723fa49b6e61f727b6321a4006ee8ba3f393b9Ying Wang
242824344af004bc87a7b7a301e53814258c8412e4fYing Wangifeq ($(my_clang),true)
2431f9828387d8d3d0b1a02f99633ac58a68aa366adYing Wangmy_target_global_cflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)CLANG_TARGET_GLOBAL_CFLAGS)
24473d800e5199844d2868288c30a496de1cea0c159Andrew Hsiehmy_target_global_cppflags += $($(LOCAL_2ND_ARCH_VAR_PREFIX)CLANG_TARGET_GLOBAL_CPPFLAGS)
2451f9828387d8d3d0b1a02f99633ac58a68aa366adYing Wangmy_target_global_ldflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)CLANG_TARGET_GLOBAL_LDFLAGS)
246f4723fa49b6e61f727b6321a4006ee8ba3f393b9Ying Wangmy_target_c_includes += $(CLANG_CONFIG_EXTRA_TARGET_C_INCLUDES)
247da4bf4251451d2da8883d636849b65fcc368a575Ying Wangelse
2486ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wangmy_target_global_cflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_CFLAGS)
24973d800e5199844d2868288c30a496de1cea0c159Andrew Hsiehmy_target_global_cppflags += $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_CPPFLAGS)
2506ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wangmy_target_global_ldflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_LDFLAGS)
251824344af004bc87a7b7a301e53814258c8412e4fYing Wangendif # my_clang
252da4bf4251451d2da8883d636849b65fcc368a575Ying Wang
2531a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wang$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_PROJECT_INCLUDES := $(my_target_project_includes)
254a7095e919224888172ba59dd4663d4d47d68c4bbEvgeniy Stepanov$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_C_INCLUDES := $(my_target_c_includes)
2551a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wang$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_GLOBAL_CFLAGS := $(my_target_global_cflags)
256e6f65438a45f0e1b519fb3cd2799f44ca87911a7Logan Chien$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_GLOBAL_CPPFLAGS := $(my_target_global_cppflags)
257e6f65438a45f0e1b519fb3cd2799f44ca87911a7Logan Chien$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_GLOBAL_LDFLAGS := $(my_target_global_ldflags)
258e6f65438a45f0e1b519fb3cd2799f44ca87911a7Logan Chien
2597fff9a1a560b822be79f47566f43b76111d7aecfYing Wangelse # LOCAL_IS_HOST_MODULE
2607fff9a1a560b822be79f47566f43b76111d7aecfYing Wang
261824344af004bc87a7b7a301e53814258c8412e4fYing Wangifeq ($(my_clang),true)
2626feb6d5607ce86a446645564212043964628f540Ying Wangmy_host_global_cflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)CLANG_HOST_GLOBAL_CFLAGS)
2636feb6d5607ce86a446645564212043964628f540Ying Wangmy_host_global_cppflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)CLANG_HOST_GLOBAL_CPPFLAGS)
2646feb6d5607ce86a446645564212043964628f540Ying Wangmy_host_global_ldflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)CLANG_HOST_GLOBAL_LDFLAGS)
2656feb6d5607ce86a446645564212043964628f540Ying Wangmy_host_c_includes := $($(LOCAL_2ND_ARCH_VAR_PREFIX)HOST_C_INCLUDES) $(CLANG_CONFIG_EXTRA_HOST_C_INCLUDES)
266e6f65438a45f0e1b519fb3cd2799f44ca87911a7Logan Chienelse
2676feb6d5607ce86a446645564212043964628f540Ying Wangmy_host_global_cflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)HOST_GLOBAL_CFLAGS)
2686feb6d5607ce86a446645564212043964628f540Ying Wangmy_host_global_cppflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)HOST_GLOBAL_CPPFLAGS)
2696feb6d5607ce86a446645564212043964628f540Ying Wangmy_host_global_ldflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)HOST_GLOBAL_LDFLAGS)
2706feb6d5607ce86a446645564212043964628f540Ying Wangmy_host_c_includes := $($(LOCAL_2ND_ARCH_VAR_PREFIX)HOST_C_INCLUDES)
271824344af004bc87a7b7a301e53814258c8412e4fYing Wangendif # my_clang
272e6f65438a45f0e1b519fb3cd2799f44ca87911a7Logan Chien
273e6f65438a45f0e1b519fb3cd2799f44ca87911a7Logan Chien$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_HOST_C_INCLUDES := $(my_host_c_includes)
274e6f65438a45f0e1b519fb3cd2799f44ca87911a7Logan Chien$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_HOST_GLOBAL_CFLAGS := $(my_host_global_cflags)
275e6f65438a45f0e1b519fb3cd2799f44ca87911a7Logan Chien$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_HOST_GLOBAL_CPPFLAGS := $(my_host_global_cppflags)
276e6f65438a45f0e1b519fb3cd2799f44ca87911a7Logan Chien$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_HOST_GLOBAL_LDFLAGS := $(my_host_global_ldflags)
277e6f65438a45f0e1b519fb3cd2799f44ca87911a7Logan Chienendif # LOCAL_IS_HOST_MODULE
2781a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wang
2791a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wang###########################################################
28088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Define PRIVATE_ variables used by multiple module types
28188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
28288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_NO_DEFAULT_COMPILER_FLAGS := \
283dfbe79b803dbbf0fd4c863200e10bedd69510aa3Ying Wang    $(strip $(LOCAL_NO_DEFAULT_COMPILER_FLAGS))
28488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
2856cea59a4b9b62442a5e17f6954e308a35ba12b5eAndrew Hsiehifeq ($(strip $(WITH_SYNTAX_CHECK)),)
2866cea59a4b9b62442a5e17f6954e308a35ba12b5eAndrew Hsieh  LOCAL_NO_SYNTAX_CHECK := true
2876cea59a4b9b62442a5e17f6954e308a35ba12b5eAndrew Hsiehendif
2886cea59a4b9b62442a5e17f6954e308a35ba12b5eAndrew Hsieh
289906cb78168718dafea120b0a0a6cf239b90a2a71Andrew Hsiehifeq ($(strip $(WITH_STATIC_ANALYZER)),)
290906cb78168718dafea120b0a0a6cf239b90a2a71Andrew Hsieh  LOCAL_NO_STATIC_ANALYZER := true
291906cb78168718dafea120b0a0a6cf239b90a2a71Andrew Hsiehendif
292906cb78168718dafea120b0a0a6cf239b90a2a71Andrew Hsieh
2936cea59a4b9b62442a5e17f6954e308a35ba12b5eAndrew Hsiehifneq ($(strip $(LOCAL_IS_HOST_MODULE)),)
2946cea59a4b9b62442a5e17f6954e308a35ba12b5eAndrew Hsieh  my_syntax_arch := host
2956cea59a4b9b62442a5e17f6954e308a35ba12b5eAndrew Hsiehelse
2966ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang  my_syntax_arch := $(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)
2976cea59a4b9b62442a5e17f6954e308a35ba12b5eAndrew Hsiehendif
2986cea59a4b9b62442a5e17f6954e308a35ba12b5eAndrew Hsieh
2996ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wangifeq ($(strip $(my_cc)),)
300824344af004bc87a7b7a301e53814258c8412e4fYing Wang  ifeq ($(strip $(my_clang)),true)
3016ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang    my_cc := $(CLANG)
302b71e2df30a2a24d5566734b3c41716bee9351fd1Evgeniy Stepanov  else
3036ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang    my_cc := $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)CC)
304b71e2df30a2a24d5566734b3c41716bee9351fd1Evgeniy Stepanov  endif
30588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif
306906cb78168718dafea120b0a0a6cf239b90a2a71Andrew Hsiehifneq ($(LOCAL_NO_STATIC_ANALYZER),true)
3076ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang  my_cc := $(SYNTAX_TOOLS_PREFIX)/ccc-analyzer $(my_syntax_arch) "$(my_cc)"
308906cb78168718dafea120b0a0a6cf239b90a2a71Andrew Hsiehelse
3096cea59a4b9b62442a5e17f6954e308a35ba12b5eAndrew Hsiehifneq ($(LOCAL_NO_SYNTAX_CHECK),true)
3106ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang  my_cc := $(SYNTAX_TOOLS_PREFIX)/ccc-syntax $(my_syntax_arch) "$(my_cc)"
3116cea59a4b9b62442a5e17f6954e308a35ba12b5eAndrew Hsiehendif
312906cb78168718dafea120b0a0a6cf239b90a2a71Andrew Hsiehendif
3136ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CC := $(my_cc)
31488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
3156ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wangifeq ($(strip $(my_cxx)),)
316824344af004bc87a7b7a301e53814258c8412e4fYing Wang  ifeq ($(strip $(my_clang)),true)
3176ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang    my_cxx := $(CLANG_CXX)
318b71e2df30a2a24d5566734b3c41716bee9351fd1Evgeniy Stepanov  else
3196ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang    my_cxx := $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)CXX)
320b71e2df30a2a24d5566734b3c41716bee9351fd1Evgeniy Stepanov  endif
32188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif
322906cb78168718dafea120b0a0a6cf239b90a2a71Andrew Hsiehifneq ($(LOCAL_NO_STATIC_ANALYZER),true)
3236ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang  my_cxx := $(SYNTAX_TOOLS_PREFIX)/cxx-analyzer $(my_syntax_arch) "$(my_cxx)"
324906cb78168718dafea120b0a0a6cf239b90a2a71Andrew Hsiehelse
3256cea59a4b9b62442a5e17f6954e308a35ba12b5eAndrew Hsiehifneq ($(LOCAL_NO_SYNTAX_CHECK),true)
3266ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang  my_cxx := $(SYNTAX_TOOLS_PREFIX)/cxx-syntax $(my_syntax_arch) "$(my_cxx)"
3276cea59a4b9b62442a5e17f6954e308a35ba12b5eAndrew Hsiehendif
328906cb78168718dafea120b0a0a6cf239b90a2a71Andrew Hsiehendif
3296ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CXX := $(my_cxx)
33004cf31597021af3cd045dd9c50d94a87d0394023Dan Albert$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CLANG := $(my_clang)
33188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
33288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# TODO: support a mix of standard extensions so that this isn't necessary
33388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectLOCAL_CPP_EXTENSION := $(strip $(LOCAL_CPP_EXTENSION))
33488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifeq ($(LOCAL_CPP_EXTENSION),)
33588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  LOCAL_CPP_EXTENSION := .cpp
33688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif
33788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CPP_EXTENSION := $(LOCAL_CPP_EXTENSION)
33888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
33988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Certain modules like libdl have to have symbols resolved at runtime and blow
34088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# up if --no-undefined is passed to the linker.
34188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifeq ($(strip $(LOCAL_NO_DEFAULT_COMPILER_FLAGS)),)
34288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifeq ($(strip $(LOCAL_ALLOW_UNDEFINED_SYMBOLS)),)
3436ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang  my_ldflags +=  $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)NO_UNDEFINED_LDFLAGS)
34488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif
34588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif
34688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
347fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8Ying Wangifeq (true,$(LOCAL_GROUP_STATIC_LIBRARIES))
348fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8Ying Wang$(LOCAL_BUILT_MODULE): PRIVATE_GROUP_STATIC_LIBRARIES := true
349fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8Ying Wangelse
350fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8Ying Wang$(LOCAL_BUILT_MODULE): PRIVATE_GROUP_STATIC_LIBRARIES :=
351fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8Ying Wangendif
352fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8Ying Wang
35388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
35488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Define arm-vs-thumb-mode flags.
35588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
35688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectLOCAL_ARM_MODE := $(strip $(LOCAL_ARM_MODE))
3576e087a339b61804aee00dbdf85106653c861e32fColin Crossifeq ($(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH),arm)
35888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectarm_objects_mode := $(if $(LOCAL_ARM_MODE),$(LOCAL_ARM_MODE),arm)
35988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectnormal_objects_mode := $(if $(LOCAL_ARM_MODE),$(LOCAL_ARM_MODE),thumb)
36088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
361952824843b868560713f668887e1961de534a250Dave Bort# Read the values from something like TARGET_arm_CFLAGS or
362952824843b868560713f668887e1961de534a250Dave Bort# TARGET_thumb_CFLAGS.  HOST_(arm|thumb)_CFLAGS values aren't
363952824843b868560713f668887e1961de534a250Dave Bort# actually used (although they are usually empty).
3646ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wangarm_objects_cflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)$(arm_objects_mode)_CFLAGS)
3656ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wangnormal_objects_cflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)$(normal_objects_mode)_CFLAGS)
366824344af004bc87a7b7a301e53814258c8412e4fYing Wangifeq ($(strip $(my_clang)),true)
3671f9828387d8d3d0b1a02f99633ac58a68aa366adYing Wangarm_objects_cflags := $(call $(LOCAL_2ND_ARCH_VAR_PREFIX)convert-to-$(my_host)clang-flags,$(arm_objects_cflags))
3681f9828387d8d3d0b1a02f99633ac58a68aa366adYing Wangnormal_objects_cflags := $(call $(LOCAL_2ND_ARCH_VAR_PREFIX)convert-to-$(my_host)clang-flags,$(normal_objects_cflags))
369f50f4c529919ac4acefd2fb05fb5d47743f6e2c3Evgeniy Stepanovendif
370f50f4c529919ac4acefd2fb05fb5d47743f6e2c3Evgeniy Stepanov
3710d09e587aaa52fe1d3f1bfdd6faec9c5e232e1dfChih-Wei Huangelse
3720d09e587aaa52fe1d3f1bfdd6faec9c5e232e1dfChih-Wei Huangarm_objects_mode :=
3730d09e587aaa52fe1d3f1bfdd6faec9c5e232e1dfChih-Wei Huangnormal_objects_mode :=
3740d09e587aaa52fe1d3f1bfdd6faec9c5e232e1dfChih-Wei Huangarm_objects_cflags :=
3750d09e587aaa52fe1d3f1bfdd6faec9c5e232e1dfChih-Wei Huangnormal_objects_cflags :=
3760d09e587aaa52fe1d3f1bfdd6faec9c5e232e1dfChih-Wei Huangendif
37788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
37888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
37988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Define per-module debugging flags.  Users can turn on
38088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## debugging for a particular module by setting DEBUG_MODULE_ModuleName
38188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## to a non-empty value in their environment or buildspec.mk,
38288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## and setting HOST_/TARGET_CUSTOM_DEBUG_CFLAGS to the
38388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## debug flags that they want to use.
38488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
38588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifdef DEBUG_MODULE_$(strip $(LOCAL_MODULE))
38688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  debug_cflags := $($(my_prefix)CUSTOM_DEBUG_CFLAGS)
38788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectelse
38888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project  debug_cflags :=
38988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif
39088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
391a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray####################################################
392a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray## Compile RenderScript with reflected C++
393a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray####################################################
394a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray
395b8e01854893f7390f23e6df82744b2bd3d0572c4Ying Wangrenderscript_sources := $(filter %.rs %.fs,$(my_src_files))
396a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray
397a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murrayifneq (,$(renderscript_sources))
398a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray
399a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murrayrenderscript_sources_fullpath := $(addprefix $(LOCAL_PATH)/, $(renderscript_sources))
400a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim MurrayRenderScript_file_stamp := $(intermediates)/RenderScriptCPP.stamp
401a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murrayrenderscript_intermediate := $(intermediates)/renderscript
402a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray
403a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murrayifeq ($(LOCAL_RENDERSCRIPT_CC),)
404a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim MurrayLOCAL_RENDERSCRIPT_CC := $(LLVM_RS_CC)
405a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murrayendif
406a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray
407a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray# Turn on all warnings and warnings as errors for RS compiles.
408a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray# This can be disabled with LOCAL_RENDERSCRIPT_FLAGS := -Wno-error
409a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murrayrenderscript_flags := -Wall -Werror
410a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murrayrenderscript_flags += $(LOCAL_RENDERSCRIPT_FLAGS)
411acaada12731639e3feba1dd83d7e44765ec8556cYing Wang# -m32 or -m64
412acaada12731639e3feba1dd83d7e44765ec8556cYing Wangrenderscript_flags += -m$(my_32_64_bit_suffix)
413f0020c615798284cb81792911f98ccdec6606449Tim Murray
4146ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wangrenderscript_includes := \
415a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray    $(TOPDIR)external/clang/lib/Headers \
416a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray    $(TOPDIR)frameworks/rs/scriptc \
417a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray    $(LOCAL_RENDERSCRIPT_INCLUDES)
418a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray
419a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murrayifneq ($(LOCAL_RENDERSCRIPT_INCLUDES_OVERRIDE),)
4206ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wangrenderscript_includes := $(LOCAL_RENDERSCRIPT_INCLUDES_OVERRIDE)
421a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murrayendif
422a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray
4236ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang$(RenderScript_file_stamp): PRIVATE_RS_INCLUDES := $(renderscript_includes)
424a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray$(RenderScript_file_stamp): PRIVATE_RS_CC := $(LOCAL_RENDERSCRIPT_CC)
425a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray$(RenderScript_file_stamp): PRIVATE_RS_FLAGS := $(renderscript_flags)
426a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray$(RenderScript_file_stamp): PRIVATE_RS_SOURCE_FILES := $(renderscript_sources_fullpath)
427a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray$(RenderScript_file_stamp): PRIVATE_RS_OUTPUT_DIR := $(renderscript_intermediate)
428a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray$(RenderScript_file_stamp): $(renderscript_sources_fullpath) $(LOCAL_RENDERSCRIPT_CC)
429a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray	$(transform-renderscripts-to-cpp-and-bc)
430a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray
431a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray# include the dependency files (.d) generated by llvm-rs-cc.
432a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murrayrenderscript_generated_dep_files := $(addprefix $(renderscript_intermediate)/, \
433a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray    $(patsubst %.fs,%.d, $(patsubst %.rs,%.d, $(notdir $(renderscript_sources)))))
434a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray-include $(renderscript_generated_dep_files)
435a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray
436a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim MurrayLOCAL_INTERMEDIATE_TARGETS += $(RenderScript_file_stamp)
437a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray
438a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murrayrs_generated_cpps := $(addprefix \
439a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray    $(renderscript_intermediate)/ScriptC_,$(patsubst %.fs,%.cpp, $(patsubst %.rs,%.cpp, \
440a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray    $(notdir $(renderscript_sources)))))
441a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray
4428ff92526807a6fe726096c84e16fa2bb888effc3Stephen Hines# This is just a dummy rule to make sure gmake doesn't skip updating the dependents.
443a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray$(rs_generated_cpps) : $(RenderScript_file_stamp)
44481ab8339feea95db1caaaa57cc8b3bfa0852dc26Ying Wang	@echo "Updated RS generated cpp file $@."
445a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray
4466ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wangmy_c_includes += $(renderscript_intermediate)
4476ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wangmy_generated_sources += $(rs_generated_cpps)
448a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray
449a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murrayendif
450a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray
451a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray
45288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
45388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Stuff source generated from one-off tools
45488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
4556ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang$(my_generated_sources): PRIVATE_MODULE := $(my_register_name)
45688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
457d826264621a2c3d27228b395bc36edf5510bcc49Colin Crossmy_gen_sources_copy := $(patsubst $(generated_sources_dir)/%,$(intermediates)/%,$(filter $(generated_sources_dir)/%,$(my_generated_sources)))
458d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross
459d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross$(my_gen_sources_copy): $(intermediates)/% : $(generated_sources_dir)/% | $(ACP)
460d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross	@echo "Copy: $@"
461d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross	$(copy-file-to-target)
46288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
463d826264621a2c3d27228b395bc36edf5510bcc49Colin Crossmy_generated_sources := $(patsubst $(generated_sources_dir)/%,$(intermediates)/%,$(my_generated_sources))
464d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross
465d826264621a2c3d27228b395bc36edf5510bcc49Colin CrossALL_GENERATED_SOURCES += $(my_generated_sources)
46688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
46788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
468a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang## Compile the .proto files to .cc and then to .o
469a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang###########################################################
470b8e01854893f7390f23e6df82744b2bd3d0572c4Ying Wangproto_sources := $(filter %.proto,$(my_src_files))
471a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wangproto_generated_objects :=
472a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wangproto_generated_headers :=
473a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wangifneq ($(proto_sources),)
474a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wangproto_sources_fullpath := $(addprefix $(LOCAL_PATH)/, $(proto_sources))
475ead8944e8da9a4b6dbe344b8d93b2c6b2a730f68Ying Wangproto_generated_cc_sources_dir := $(generated_sources_dir)/proto
476a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wangproto_generated_cc_sources := $(addprefix $(proto_generated_cc_sources_dir)/, \
477dfbe79b803dbbf0fd4c863200e10bedd69510aa3Ying Wang    $(patsubst %.proto,%.pb.cc,$(proto_sources_fullpath)))
478ead8944e8da9a4b6dbe344b8d93b2c6b2a730f68Ying Wangproto_generated_headers := $(patsubst %.pb.cc,%.pb.h, $(proto_generated_cc_sources))
479ead8944e8da9a4b6dbe344b8d93b2c6b2a730f68Ying Wangproto_generated_obj_dir := $(intermediates)/proto
480ead8944e8da9a4b6dbe344b8d93b2c6b2a730f68Ying Wangproto_generated_objects := $(addprefix $(proto_generated_obj_dir)/, \
481ead8944e8da9a4b6dbe344b8d93b2c6b2a730f68Ying Wang    $(patsubst %.proto,%.pb.o,$(proto_sources_fullpath)))
482a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang
483490859563413ef331bf63233d43b8a61d73e0aa8Ying Wang# Auto-export the generated proto source dir.
484490859563413ef331bf63233d43b8a61d73e0aa8Ying WangLOCAL_EXPORT_C_INCLUDE_DIRS += $(proto_generated_cc_sources_dir)
485490859563413ef331bf63233d43b8a61d73e0aa8Ying Wang
486ead8944e8da9a4b6dbe344b8d93b2c6b2a730f68Ying Wang# Ensure the transform-proto-to-cc rule is only defined once in multilib build.
487ead8944e8da9a4b6dbe344b8d93b2c6b2a730f68Ying Wangifndef $(my_prefix)_$(LOCAL_MODULE_CLASS)_$(LOCAL_MODULE)_proto_defined
488a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang$(proto_generated_cc_sources): PRIVATE_PROTO_INCLUDES := $(TOP)
489a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang$(proto_generated_cc_sources): PRIVATE_PROTO_CC_OUTPUT_DIR := $(proto_generated_cc_sources_dir)
49033c0d952fcba713f00c1cafc8213274e642aee4cYing Wang$(proto_generated_cc_sources): PRIVATE_PROTOC_FLAGS := $(LOCAL_PROTOC_FLAGS)
491a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang$(proto_generated_cc_sources): $(proto_generated_cc_sources_dir)/%.pb.cc: %.proto $(PROTOC)
492a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang	$(transform-proto-to-cc)
493a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang
4948ff92526807a6fe726096c84e16fa2bb888effc3Stephen Hines# This is just a dummy rule to make sure gmake doesn't skip updating the dependents.
495a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang$(proto_generated_headers): $(proto_generated_cc_sources_dir)/%.pb.h: $(proto_generated_cc_sources_dir)/%.pb.cc
49681ab8339feea95db1caaaa57cc8b3bfa0852dc26Ying Wang	@echo "Updated header file $@."
497a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang
498ead8944e8da9a4b6dbe344b8d93b2c6b2a730f68Ying Wang$(my_prefix)_$(LOCAL_MODULE_CLASS)_$(LOCAL_MODULE)_proto_defined := true
499ead8944e8da9a4b6dbe344b8d93b2c6b2a730f68Ying Wangendif  # transform-proto-to-cc rule included only once
500ead8944e8da9a4b6dbe344b8d93b2c6b2a730f68Ying Wang
501022a7b32efb9ff9ad36dca70696c428b1059ade4Ying Wang$(proto_generated_objects): PRIVATE_ARM_MODE := $(normal_objects_mode)
502022a7b32efb9ff9ad36dca70696c428b1059ade4Ying Wang$(proto_generated_objects): PRIVATE_ARM_CFLAGS := $(normal_objects_cflags)
503ead8944e8da9a4b6dbe344b8d93b2c6b2a730f68Ying Wang$(proto_generated_objects): $(proto_generated_obj_dir)/%.o: $(proto_generated_cc_sources_dir)/%.cc $(proto_generated_headers)
504a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang	$(transform-$(PRIVATE_HOST)cpp-to-o)
505a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang-include $(proto_generated_objects:%.o=%.P)
506a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang
5076ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wangmy_c_includes += external/protobuf/src $(proto_generated_cc_sources_dir)
5086ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wangmy_cflags += -DGOOGLE_PROTOBUF_NO_RTTI
509a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wangifeq ($(LOCAL_PROTOC_OPTIMIZE_TYPE),full)
5106ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wangmy_static_libraries += libprotobuf-cpp-2.3.0-full
511a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wangelse
5126ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wangmy_static_libraries += libprotobuf-cpp-2.3.0-lite
513a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wangendif
514ead8944e8da9a4b6dbe344b8d93b2c6b2a730f68Ying Wangendif  # $(proto_sources) non-empty
515a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang
516a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang
517a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang###########################################################
5189484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffray## YACC: Compile .y and .yy files to .cpp and the to .o.
51988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
52088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
5219484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffrayy_yacc_sources := $(filter %.y,$(my_src_files))
5229484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffrayy_yacc_cpps := $(addprefix \
5239484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffray    $(intermediates)/,$(y_yacc_sources:.y=$(LOCAL_CPP_EXTENSION)))
5249484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffray
5259484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffrayyy_yacc_sources := $(filter %.yy,$(my_src_files))
5269484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffrayyy_yacc_cpps := $(addprefix \
5279484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffray    $(intermediates)/,$(yy_yacc_sources:.yy=$(LOCAL_CPP_EXTENSION)))
5289484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffray
5299484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffrayyacc_cpps := $(y_yacc_cpps) $(yy_yacc_cpps)
53088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectyacc_headers := $(yacc_cpps:$(LOCAL_CPP_EXTENSION)=.h)
53188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectyacc_objects := $(yacc_cpps:$(LOCAL_CPP_EXTENSION)=.o)
53288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
5339484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffrayifneq ($(strip $(y_yacc_cpps)),)
5349484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffray$(y_yacc_cpps): $(intermediates)/%$(LOCAL_CPP_EXTENSION): \
535dfbe79b803dbbf0fd4c863200e10bedd69510aa3Ying Wang    $(TOPDIR)$(LOCAL_PATH)/%.y \
536dfbe79b803dbbf0fd4c863200e10bedd69510aa3Ying Wang    $(lex_cpps) $(LOCAL_ADDITIONAL_DEPENDENCIES)
53788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project	$(call transform-y-to-cpp,$(PRIVATE_CPP_EXTENSION))
53888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(yacc_headers): $(intermediates)/%.h: $(intermediates)/%$(LOCAL_CPP_EXTENSION)
5399484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffrayendif
5409484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffray
5419484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffrayifneq ($(strip $(yy_yacc_cpps)),)
5429484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffray$(yy_yacc_cpps): $(intermediates)/%$(LOCAL_CPP_EXTENSION): \
5439484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffray    $(TOPDIR)$(LOCAL_PATH)/%.yy \
5449484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffray    $(lex_cpps) $(LOCAL_ADDITIONAL_DEPENDENCIES)
5459484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffray	$(call transform-y-to-cpp,$(PRIVATE_CPP_EXTENSION))
5469484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffray$(yacc_headers): $(intermediates)/%.h: $(intermediates)/%$(LOCAL_CPP_EXTENSION)
5479484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffrayendif
54888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
5499484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffrayifneq ($(strip $(yacc_cpps)),)
55088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(yacc_objects): PRIVATE_ARM_MODE := $(normal_objects_mode)
55188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(yacc_objects): PRIVATE_ARM_CFLAGS := $(normal_objects_cflags)
55288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(yacc_objects): $(intermediates)/%.o: $(intermediates)/%$(LOCAL_CPP_EXTENSION)
55388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project	$(transform-$(PRIVATE_HOST)cpp-to-o)
55488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif
55588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
55688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
5579484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffray## LEX: Compile .l and .ll files to .cpp and then to .o.
55888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
55988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
5609484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffrayl_lex_sources := $(filter %.l,$(my_src_files))
5619484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffrayl_lex_cpps := $(addprefix \
5629484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffray    $(intermediates)/,$(l_lex_sources:.l=$(LOCAL_CPP_EXTENSION)))
5639484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffray
5649484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffrayll_lex_sources := $(filter %.ll,$(my_src_files))
5659484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffrayll_lex_cpps := $(addprefix \
5669484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffray    $(intermediates)/,$(ll_lex_sources:.ll=$(LOCAL_CPP_EXTENSION)))
5679484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffray
5689484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffraylex_cpps := $(l_lex_cpps) $(ll_lex_cpps)
56988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectlex_objects := $(lex_cpps:$(LOCAL_CPP_EXTENSION)=.o)
57088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
5719484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffrayifneq ($(strip $(l_lex_cpps)),)
5729484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffray$(l_lex_cpps): $(intermediates)/%$(LOCAL_CPP_EXTENSION): \
573dfbe79b803dbbf0fd4c863200e10bedd69510aa3Ying Wang    $(TOPDIR)$(LOCAL_PATH)/%.l
57488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project	$(transform-l-to-cpp)
5759484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffrayendif
57688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
5779484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffrayifneq ($(strip $(ll_lex_cpps)),)
5789484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffray$(ll_lex_cpps): $(intermediates)/%$(LOCAL_CPP_EXTENSION): \
5799484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffray    $(TOPDIR)$(LOCAL_PATH)/%.ll
5809484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffray	$(transform-l-to-cpp)
5819484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffrayendif
5829484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffray
5839484e2e13ff9024a5498fbc4cf98f1750558dd6aNicolas Geoffrayifneq ($(strip $(lex_cpps)),)
58488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(lex_objects): PRIVATE_ARM_MODE := $(normal_objects_mode)
58588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(lex_objects): PRIVATE_ARM_CFLAGS := $(normal_objects_cflags)
58688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(lex_objects): $(intermediates)/%.o: \
587dfbe79b803dbbf0fd4c863200e10bedd69510aa3Ying Wang    $(intermediates)/%$(LOCAL_CPP_EXTENSION) \
588dfbe79b803dbbf0fd4c863200e10bedd69510aa3Ying Wang    $(LOCAL_ADDITIONAL_DEPENDENCIES) \
589dfbe79b803dbbf0fd4c863200e10bedd69510aa3Ying Wang    $(yacc_headers)
59088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project	$(transform-$(PRIVATE_HOST)cpp-to-o)
59188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif
59288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
59388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
59488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## C++: Compile .cpp files to .o.
59588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
59688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
597e33ba4c49ed461d608c65eb4e09d31ca81d167ffJeff Brown# we also do this on host modules, even though
59888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# it's not really arm, because there are files that are shared.
599b8e01854893f7390f23e6df82744b2bd3d0572c4Ying Wangcpp_arm_sources    := $(patsubst %$(LOCAL_CPP_EXTENSION).arm,%$(LOCAL_CPP_EXTENSION),$(filter %$(LOCAL_CPP_EXTENSION).arm,$(my_src_files)))
60088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectcpp_arm_objects    := $(addprefix $(intermediates)/,$(cpp_arm_sources:$(LOCAL_CPP_EXTENSION)=.o))
60188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
602b8e01854893f7390f23e6df82744b2bd3d0572c4Ying Wangcpp_normal_sources := $(filter %$(LOCAL_CPP_EXTENSION),$(my_src_files))
60388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectcpp_normal_objects := $(addprefix $(intermediates)/,$(cpp_normal_sources:$(LOCAL_CPP_EXTENSION)=.o))
60488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
60588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(cpp_arm_objects):    PRIVATE_ARM_MODE := $(arm_objects_mode)
60688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(cpp_arm_objects):    PRIVATE_ARM_CFLAGS := $(arm_objects_cflags)
60788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(cpp_normal_objects): PRIVATE_ARM_MODE := $(normal_objects_mode)
60888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(cpp_normal_objects): PRIVATE_ARM_CFLAGS := $(normal_objects_cflags)
60988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
61088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectcpp_objects        := $(cpp_arm_objects) $(cpp_normal_objects)
61188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
61288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifneq ($(strip $(cpp_objects)),)
61388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(cpp_objects): $(intermediates)/%.o: \
614dfbe79b803dbbf0fd4c863200e10bedd69510aa3Ying Wang    $(TOPDIR)$(LOCAL_PATH)/%$(LOCAL_CPP_EXTENSION) \
6159c3aa053f5c0ab7d47181cc6966d7ffebb679a96Ying Wang    $(yacc_cpps) $(proto_generated_headers) \
6169c3aa053f5c0ab7d47181cc6966d7ffebb679a96Ying Wang    $(LOCAL_ADDITIONAL_DEPENDENCIES) \
6179c3aa053f5c0ab7d47181cc6966d7ffebb679a96Ying Wang    | $(my_compiler_dependencies)
61888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project	$(transform-$(PRIVATE_HOST)cpp-to-o)
61988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project-include $(cpp_objects:%.o=%.P)
62088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif
62188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
62288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
62388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## C++: Compile generated .cpp files to .o.
62488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
62588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
626ec6d6262acfc431abc3315b9ced28aa981416fdfYing Wanggen_cpp_sources := $(filter %$(LOCAL_CPP_EXTENSION),$(my_generated_sources))
62788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectgen_cpp_objects := $(gen_cpp_sources:%$(LOCAL_CPP_EXTENSION)=%.o)
62888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
62988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifneq ($(strip $(gen_cpp_objects)),)
63088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Compile all generated files as thumb.
63188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# TODO: support compiling certain generated files as arm.
63288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(gen_cpp_objects): PRIVATE_ARM_MODE := $(normal_objects_mode)
63388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(gen_cpp_objects): PRIVATE_ARM_CFLAGS := $(normal_objects_cflags)
634b71e2df30a2a24d5566734b3c41716bee9351fd1Evgeniy Stepanov$(gen_cpp_objects): $(intermediates)/%.o: \
635b71e2df30a2a24d5566734b3c41716bee9351fd1Evgeniy Stepanov    $(intermediates)/%$(LOCAL_CPP_EXTENSION) $(yacc_cpps) \
6369c3aa053f5c0ab7d47181cc6966d7ffebb679a96Ying Wang    $(proto_generated_headers) \
6379c3aa053f5c0ab7d47181cc6966d7ffebb679a96Ying Wang    $(LOCAL_ADDITIONAL_DEPENDENCIES) \
6389c3aa053f5c0ab7d47181cc6966d7ffebb679a96Ying Wang    | $(my_compiler_dependencies)
63988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project	$(transform-$(PRIVATE_HOST)cpp-to-o)
64088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project-include $(gen_cpp_objects:%.o=%.P)
64188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif
64288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
64388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
64488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## S: Compile generated .S and .s files to .o.
64588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
64688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
647ec6d6262acfc431abc3315b9ced28aa981416fdfYing Wanggen_S_sources := $(filter %.S,$(my_generated_sources))
64888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectgen_S_objects := $(gen_S_sources:%.S=%.o)
64988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
65088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifneq ($(strip $(gen_S_sources)),)
651b71e2df30a2a24d5566734b3c41716bee9351fd1Evgeniy Stepanov$(gen_S_objects): $(intermediates)/%.o: $(intermediates)/%.S \
6529c3aa053f5c0ab7d47181cc6966d7ffebb679a96Ying Wang    $(LOCAL_ADDITIONAL_DEPENDENCIES) \
6539c3aa053f5c0ab7d47181cc6966d7ffebb679a96Ying Wang    | $(my_compiler_dependencies)
65488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project	$(transform-$(PRIVATE_HOST)s-to-o)
65588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project-include $(gen_S_objects:%.o=%.P)
65688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif
65788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
658ec6d6262acfc431abc3315b9ced28aa981416fdfYing Wanggen_s_sources := $(filter %.s,$(my_generated_sources))
65988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectgen_s_objects := $(gen_s_sources:%.s=%.o)
66088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
66188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifneq ($(strip $(gen_s_objects)),)
662b71e2df30a2a24d5566734b3c41716bee9351fd1Evgeniy Stepanov$(gen_s_objects): $(intermediates)/%.o: $(intermediates)/%.s \
6639c3aa053f5c0ab7d47181cc6966d7ffebb679a96Ying Wang    $(LOCAL_ADDITIONAL_DEPENDENCIES) \
6649c3aa053f5c0ab7d47181cc6966d7ffebb679a96Ying Wang    | $(my_compiler_dependencies)
66588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project	$(transform-$(PRIVATE_HOST)s-to-o-no-deps)
66688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project-include $(gen_s_objects:%.o=%.P)
66788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif
66888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
66988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectgen_asm_objects := $(gen_S_objects) $(gen_s_objects)
67088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
67188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
672aace2024d723f6914f05bd9d847166c45447a913Torne (Richard Coles)## o: Include generated .o files in output.
673aace2024d723f6914f05bd9d847166c45447a913Torne (Richard Coles)###########################################################
674aace2024d723f6914f05bd9d847166c45447a913Torne (Richard Coles)
675ec6d6262acfc431abc3315b9ced28aa981416fdfYing Wanggen_o_objects := $(filter %.o,$(my_generated_sources))
676aace2024d723f6914f05bd9d847166c45447a913Torne (Richard Coles)
677aace2024d723f6914f05bd9d847166c45447a913Torne (Richard Coles)###########################################################
67888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## C: Compile .c files to .o.
67988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
68088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
681b8e01854893f7390f23e6df82744b2bd3d0572c4Ying Wangc_arm_sources    := $(patsubst %.c.arm,%.c,$(filter %.c.arm,$(my_src_files)))
68288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectc_arm_objects    := $(addprefix $(intermediates)/,$(c_arm_sources:.c=.o))
68388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
684b8e01854893f7390f23e6df82744b2bd3d0572c4Ying Wangc_normal_sources := $(filter %.c,$(my_src_files))
68588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectc_normal_objects := $(addprefix $(intermediates)/,$(c_normal_sources:.c=.o))
68688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
68788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(c_arm_objects):    PRIVATE_ARM_MODE := $(arm_objects_mode)
68888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(c_arm_objects):    PRIVATE_ARM_CFLAGS := $(arm_objects_cflags)
68988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(c_normal_objects): PRIVATE_ARM_MODE := $(normal_objects_mode)
69088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(c_normal_objects): PRIVATE_ARM_CFLAGS := $(normal_objects_cflags)
69188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
69288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectc_objects        := $(c_arm_objects) $(c_normal_objects)
69388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
69488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifneq ($(strip $(c_objects)),)
695b71e2df30a2a24d5566734b3c41716bee9351fd1Evgeniy Stepanov$(c_objects): $(intermediates)/%.o: $(TOPDIR)$(LOCAL_PATH)/%.c $(yacc_cpps) $(proto_generated_headers) \
6969c3aa053f5c0ab7d47181cc6966d7ffebb679a96Ying Wang    $(LOCAL_ADDITIONAL_DEPENDENCIES) \
6979c3aa053f5c0ab7d47181cc6966d7ffebb679a96Ying Wang    | $(my_compiler_dependencies)
69888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project	$(transform-$(PRIVATE_HOST)c-to-o)
69988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project-include $(c_objects:%.o=%.P)
70088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif
70188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
70288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
703e7b3e2c62eddf9c31062fa8a0c9a31e1ef749afdJack Palevich## C: Compile generated .c files to .o.
704e7b3e2c62eddf9c31062fa8a0c9a31e1ef749afdJack Palevich###########################################################
705e7b3e2c62eddf9c31062fa8a0c9a31e1ef749afdJack Palevich
706ec6d6262acfc431abc3315b9ced28aa981416fdfYing Wanggen_c_sources := $(filter %.c,$(my_generated_sources))
707e7b3e2c62eddf9c31062fa8a0c9a31e1ef749afdJack Palevichgen_c_objects := $(gen_c_sources:%.c=%.o)
708e7b3e2c62eddf9c31062fa8a0c9a31e1ef749afdJack Palevich
709e7b3e2c62eddf9c31062fa8a0c9a31e1ef749afdJack Palevichifneq ($(strip $(gen_c_objects)),)
710e7b3e2c62eddf9c31062fa8a0c9a31e1ef749afdJack Palevich# Compile all generated files as thumb.
711e7b3e2c62eddf9c31062fa8a0c9a31e1ef749afdJack Palevich# TODO: support compiling certain generated files as arm.
712e7b3e2c62eddf9c31062fa8a0c9a31e1ef749afdJack Palevich$(gen_c_objects): PRIVATE_ARM_MODE := $(normal_objects_mode)
713e7b3e2c62eddf9c31062fa8a0c9a31e1ef749afdJack Palevich$(gen_c_objects): PRIVATE_ARM_CFLAGS := $(normal_objects_cflags)
714b71e2df30a2a24d5566734b3c41716bee9351fd1Evgeniy Stepanov$(gen_c_objects): $(intermediates)/%.o: $(intermediates)/%.c $(yacc_cpps) $(proto_generated_headers) \
7159c3aa053f5c0ab7d47181cc6966d7ffebb679a96Ying Wang    $(LOCAL_ADDITIONAL_DEPENDENCIES) \
7169c3aa053f5c0ab7d47181cc6966d7ffebb679a96Ying Wang    | $(my_compiler_dependencies)
717e7b3e2c62eddf9c31062fa8a0c9a31e1ef749afdJack Palevich	$(transform-$(PRIVATE_HOST)c-to-o)
718e7b3e2c62eddf9c31062fa8a0c9a31e1ef749afdJack Palevich-include $(gen_c_objects:%.o=%.P)
719e7b3e2c62eddf9c31062fa8a0c9a31e1ef749afdJack Palevichendif
720e7b3e2c62eddf9c31062fa8a0c9a31e1ef749afdJack Palevich
721e7b3e2c62eddf9c31062fa8a0c9a31e1ef749afdJack Palevich###########################################################
7225dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner## ObjC: Compile .m files to .o
7235dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner###########################################################
7245dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner
725b8e01854893f7390f23e6df82744b2bd3d0572c4Ying Wangobjc_sources := $(filter %.m,$(my_src_files))
7265dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turnerobjc_objects := $(addprefix $(intermediates)/,$(objc_sources:.m=.o))
7275dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner
7285dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turnerifneq ($(strip $(objc_objects)),)
729b71e2df30a2a24d5566734b3c41716bee9351fd1Evgeniy Stepanov$(objc_objects): $(intermediates)/%.o: $(TOPDIR)$(LOCAL_PATH)/%.m $(yacc_cpps) $(proto_generated_headers) \
7309c3aa053f5c0ab7d47181cc6966d7ffebb679a96Ying Wang    $(LOCAL_ADDITIONAL_DEPENDENCIES) \
7319c3aa053f5c0ab7d47181cc6966d7ffebb679a96Ying Wang    | $(my_compiler_dependencies)
7325dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner	$(transform-$(PRIVATE_HOST)m-to-o)
7335dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner-include $(objc_objects:%.o=%.P)
7345dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turnerendif
7355dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner
7365dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner###########################################################
73788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## AS: Compile .S files to .o.
73888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
73988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
740b8e01854893f7390f23e6df82744b2bd3d0572c4Ying Wangasm_sources_S := $(filter %.S,$(my_src_files))
74188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectasm_objects_S := $(addprefix $(intermediates)/,$(asm_sources_S:.S=.o))
74288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
74388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifneq ($(strip $(asm_objects_S)),)
744b71e2df30a2a24d5566734b3c41716bee9351fd1Evgeniy Stepanov$(asm_objects_S): $(intermediates)/%.o: $(TOPDIR)$(LOCAL_PATH)/%.S \
7459c3aa053f5c0ab7d47181cc6966d7ffebb679a96Ying Wang    $(LOCAL_ADDITIONAL_DEPENDENCIES) \
7469c3aa053f5c0ab7d47181cc6966d7ffebb679a96Ying Wang    | $(my_compiler_dependencies)
74788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project	$(transform-$(PRIVATE_HOST)s-to-o)
74888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project-include $(asm_objects_S:%.o=%.P)
74988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif
75088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
751b8e01854893f7390f23e6df82744b2bd3d0572c4Ying Wangasm_sources_s := $(filter %.s,$(my_src_files))
75288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectasm_objects_s := $(addprefix $(intermediates)/,$(asm_sources_s:.s=.o))
75388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
75488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifneq ($(strip $(asm_objects_s)),)
755b71e2df30a2a24d5566734b3c41716bee9351fd1Evgeniy Stepanov$(asm_objects_s): $(intermediates)/%.o: $(TOPDIR)$(LOCAL_PATH)/%.s \
7569c3aa053f5c0ab7d47181cc6966d7ffebb679a96Ying Wang    $(LOCAL_ADDITIONAL_DEPENDENCIES) \
7579c3aa053f5c0ab7d47181cc6966d7ffebb679a96Ying Wang    | $(my_compiler_dependencies)
75888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project	$(transform-$(PRIVATE_HOST)s-to-o-no-deps)
75988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project-include $(asm_objects_s:%.o=%.P)
76088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif
76188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
76288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectasm_objects := $(asm_objects_S) $(asm_objects_s)
76388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
76488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
7657b913ce6fa5030519121757bf5b258efba51cc06Ying Wang# .asm for x86 needs to be compiled with yasm.
7667b913ce6fa5030519121757bf5b258efba51cc06Ying Wangifeq (x86,$($(my_prefix)$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH))
7677b913ce6fa5030519121757bf5b258efba51cc06Ying Wangasm_sources_asm := $(filter %.asm,$(my_src_files))
7687b913ce6fa5030519121757bf5b258efba51cc06Ying Wangifneq ($(strip $(asm_sources_asm)),)
7697b913ce6fa5030519121757bf5b258efba51cc06Ying Wangasm_objects_asm := $(addprefix $(intermediates)/,$(asm_sources_asm:.asm=.o))
7707b913ce6fa5030519121757bf5b258efba51cc06Ying Wang$(asm_objects_asm): $(intermediates)/%.o: $(TOPDIR)$(LOCAL_PATH)/%.asm \
7717b913ce6fa5030519121757bf5b258efba51cc06Ying Wang    $(LOCAL_ADDITIONAL_DEPENDENCIES)
7727b913ce6fa5030519121757bf5b258efba51cc06Ying Wang	$(transform-asm-to-o)
7737b913ce6fa5030519121757bf5b258efba51cc06Ying Wang
7747b913ce6fa5030519121757bf5b258efba51cc06Ying Wangasm_objects += $(asm_objects_asm)
7757b913ce6fa5030519121757bf5b258efba51cc06Ying Wangendif
7767b913ce6fa5030519121757bf5b258efba51cc06Ying Wangendif
7777b913ce6fa5030519121757bf5b258efba51cc06Ying Wang
7785f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wang####################################################
7795f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wang## Import includes
7805f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wang####################################################
7815f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wangimport_includes := $(intermediates)/import_includes
7825f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wangimport_includes_deps := $(strip \
7835f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wang    $(foreach l, $(installed_shared_library_module_names), \
7846ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang      $(call intermediates-dir-for,SHARED_LIBRARIES,$(l),$(LOCAL_IS_HOST_MODULE),,$(LOCAL_2ND_ARCH_VAR_PREFIX))/export_includes) \
78590353fe86f300af281017100b33a4cb929d3145fColin Cross    $(foreach l, $(my_static_libraries) $(my_whole_static_libraries), \
7866ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang      $(call intermediates-dir-for,STATIC_LIBRARIES,$(l),$(LOCAL_IS_HOST_MODULE),,$(LOCAL_2ND_ARCH_VAR_PREFIX))/export_includes))
7875f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wang$(import_includes) : $(import_includes_deps)
7885f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wang	@echo Import includes file: $@
7895f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wang	$(hide) mkdir -p $(dir $@) && rm -f $@
7905f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wangifdef import_includes_deps
7915f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wang	$(hide) for f in $^; do \
7925f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wang	  cat $$f >> $@; \
7935f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wang	done
7945f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wangelse
7955f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wang	$(hide) touch $@
7965f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wangendif
7975f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wang
79888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
79988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Common object handling.
80088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
80188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
80288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# some rules depend on asm_objects being first.  If your code depends on
80388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# being first, it's reasonable to require it to be assembly
804a5afbe8ac666615058e200ecf8fbc4908eadb95dTorne (Richard Coles)normal_objects := \
805dfbe79b803dbbf0fd4c863200e10bedd69510aa3Ying Wang    $(asm_objects) \
806dfbe79b803dbbf0fd4c863200e10bedd69510aa3Ying Wang    $(cpp_objects) \
807dfbe79b803dbbf0fd4c863200e10bedd69510aa3Ying Wang    $(gen_cpp_objects) \
808dfbe79b803dbbf0fd4c863200e10bedd69510aa3Ying Wang    $(gen_asm_objects) \
809dfbe79b803dbbf0fd4c863200e10bedd69510aa3Ying Wang    $(c_objects) \
810dfbe79b803dbbf0fd4c863200e10bedd69510aa3Ying Wang    $(gen_c_objects) \
811dfbe79b803dbbf0fd4c863200e10bedd69510aa3Ying Wang    $(objc_objects) \
812dfbe79b803dbbf0fd4c863200e10bedd69510aa3Ying Wang    $(yacc_objects) \
813dfbe79b803dbbf0fd4c863200e10bedd69510aa3Ying Wang    $(lex_objects) \
814dfbe79b803dbbf0fd4c863200e10bedd69510aa3Ying Wang    $(proto_generated_objects) \
815a5afbe8ac666615058e200ecf8fbc4908eadb95dTorne (Richard Coles)    $(addprefix $(TOPDIR)$(LOCAL_PATH)/,$(LOCAL_PREBUILT_OBJ_FILES))
816a5afbe8ac666615058e200ecf8fbc4908eadb95dTorne (Richard Coles)
817a5afbe8ac666615058e200ecf8fbc4908eadb95dTorne (Richard Coles)all_objects := $(normal_objects) $(gen_o_objects)
81888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
8192d20670380a86e119e93644612aea123ce90bb0aColin Crossmy_c_includes += $(TOPDIR)$(LOCAL_PATH) $(intermediates) $(generated_sources_dir)
82088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
821848020f22a5e305ddf8814942e71d8120509a4ecYing Wangifndef LOCAL_SDK_VERSION
8226ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang  my_c_includes += $(JNI_H_INCLUDE)
823bce4b75fa7801fcb88c6a9ade9465806fe18d441Ying Wangendif
824bce4b75fa7801fcb88c6a9ade9465806fe18d441Ying Wang
825a5afbe8ac666615058e200ecf8fbc4908eadb95dTorne (Richard Coles)# all_objects includes gen_o_objects which were part of LOCAL_GENERATED_SOURCES;
826a5afbe8ac666615058e200ecf8fbc4908eadb95dTorne (Richard Coles)# use normal_objects here to avoid creating circular dependencies. This assumes
827a5afbe8ac666615058e200ecf8fbc4908eadb95dTorne (Richard Coles)# that custom build rules which generate .o files don't consume other generated
828a5afbe8ac666615058e200ecf8fbc4908eadb95dTorne (Richard Coles)# sources as input (or if they do they take care of that dependency themselves).
829ec6d6262acfc431abc3315b9ced28aa981416fdfYing Wang$(normal_objects) : | $(my_generated_sources)
830a5afbe8ac666615058e200ecf8fbc4908eadb95dTorne (Richard Coles)$(all_objects) : | $(import_includes)
83188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectALL_C_CPP_ETC_OBJECTS += $(all_objects)
83288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
83388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
83488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
83588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Standard library handling.
83688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
83788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
83888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
83988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# The list of libraries that this module will link against are in
84088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# these variables.  Each is a list of bare module names like "libc libm".
84188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#
84288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# LOCAL_SHARED_LIBRARIES
84388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# LOCAL_STATIC_LIBRARIES
84488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# LOCAL_WHOLE_STATIC_LIBRARIES
84588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#
84688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# We need to convert the bare names into the dependencies that
84788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# we'll use for LOCAL_BUILT_MODULE and LOCAL_INSTALLED_MODULE.
84888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# LOCAL_BUILT_MODULE should depend on the BUILT versions of the
84988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# libraries, so that simply building this module doesn't force
85088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# an install of a library.  Similarly, LOCAL_INSTALLED_MODULE
85188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# should depend on the INSTALLED versions of the libraries so
85288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# that they get installed when this module does.
85388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
85488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# NOTE:
85588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# WHOLE_STATIC_LIBRARIES are libraries that are pulled into the
85688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# module without leaving anything out, which is useful for turning
85788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# a collection of .a files into a .so file.  Linking against a
85888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# normal STATIC_LIBRARY will only pull in code/symbols that are
85988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# referenced by the module. (see gcc/ld's --whole-archive option)
86088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
86188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
86288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Get the list of BUILT libraries, which are under
86388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# various intermediates directories.
86488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectso_suffix := $($(my_prefix)SHLIB_SUFFIX)
86588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projecta_suffix := $($(my_prefix)STATIC_LIB_SUFFIX)
86688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
867848020f22a5e305ddf8814942e71d8120509a4ecYing Wangifdef LOCAL_SDK_VERSION
86888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectbuilt_shared_libraries := \
8696ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang    $(addprefix $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)OUT_INTERMEDIATE_LIBRARIES)/, \
87088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project      $(addsuffix $(so_suffix), \
8716ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang        $(my_shared_libraries)))
87288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
873d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang# Add the NDK libraries to the built module dependency
874cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wangmy_system_shared_libraries_fullpath := \
875cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang    $(my_ndk_stl_shared_lib_fullpath) \
876140761af09832e4ef5013141757e9aace9afcc6fAndrew Hsieh    $(addprefix $(my_ndk_sysroot_lib)/, \
877d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang        $(addsuffix $(so_suffix), $(my_system_shared_libraries)))
8781a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wang
8791a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wangbuilt_shared_libraries += $(my_system_shared_libraries_fullpath)
8801a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wangelse
8811a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wangbuilt_shared_libraries := \
8826ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang    $(addprefix $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)OUT_INTERMEDIATE_LIBRARIES)/, \
8831a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wang      $(addsuffix $(so_suffix), \
884d8d37212400ee275bbec78e584c86f60ac10b666Ying Wang        $(installed_shared_library_module_names)))
8851a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wangendif
8861a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wang
88788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectbuilt_static_libraries := \
8886ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang    $(foreach lib,$(my_static_libraries), \
88988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project      $(call intermediates-dir-for, \
8906ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang        STATIC_LIBRARIES,$(lib),$(LOCAL_IS_HOST_MODULE),,$(LOCAL_2ND_ARCH_VAR_PREFIX))/$(lib)$(a_suffix))
89188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
892848020f22a5e305ddf8814942e71d8120509a4ecYing Wangifdef LOCAL_SDK_VERSION
893cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wangbuilt_static_libraries += $(my_ndk_stl_static_lib)
894cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wangendif
895cce4c973e42a5a2f4256eb2792858b27ea15f375Ying Wang
89688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectbuilt_whole_libraries := \
89790353fe86f300af281017100b33a4cb929d3145fColin Cross    $(foreach lib,$(my_whole_static_libraries), \
89888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project      $(call intermediates-dir-for, \
8996ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang        STATIC_LIBRARIES,$(lib),$(LOCAL_IS_HOST_MODULE),,$(LOCAL_2ND_ARCH_VAR_PREFIX))/$(lib)$(a_suffix))
90088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
90188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# We don't care about installed static libraries, since the
90288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# libraries have already been linked into the module at that point.
90388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# We do, however, care about the NOTICE files for any static
904d14d3b4e64e627172670631f637d70cf0e9a297dSteve Block# libraries that we use. (see notice_files.mk)
90588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
90688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectinstalled_static_library_notice_file_targets := \
90790353fe86f300af281017100b33a4cb929d3145fColin Cross    $(foreach lib,$(my_static_libraries) $(my_whole_static_libraries), \
90888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project      NOTICE-$(if $(LOCAL_IS_HOST_MODULE),HOST,TARGET)-STATIC_LIBRARIES-$(lib))
90988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
9109a8ecf970bf53f7f43a8722212ff4b217a6bb403Doug Kwan# Default is -fno-rtti.
911e3c3c6d4fecf12e725dbf0f5bb9967787149c457Doug Kwanifeq ($(strip $(LOCAL_RTTI_FLAG)),)
912e3c3c6d4fecf12e725dbf0f5bb9967787149c457Doug KwanLOCAL_RTTI_FLAG := -fno-rtti
913e3c3c6d4fecf12e725dbf0f5bb9967787149c457Doug Kwanendif
9149a8ecf970bf53f7f43a8722212ff4b217a6bb403Doug Kwan
91588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
91688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Rule-specific variable definitions
91788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
918e6f65438a45f0e1b519fb3cd2799f44ca87911a7Logan Chien
919824344af004bc87a7b7a301e53814258c8412e4fYing Wangifeq ($(my_clang),true)
9201f9828387d8d3d0b1a02f99633ac58a68aa366adYing Wangmy_cflags := $(call $(LOCAL_2ND_ARCH_VAR_PREFIX)convert-to-$(my_host)clang-flags,$(my_cflags))
9211f9828387d8d3d0b1a02f99633ac58a68aa366adYing Wangmy_cppflags := $(call $(LOCAL_2ND_ARCH_VAR_PREFIX)convert-to-$(my_host)clang-flags,$(my_cppflags))
9221f9828387d8d3d0b1a02f99633ac58a68aa366adYing Wangmy_asflags := $(call $(LOCAL_2ND_ARCH_VAR_PREFIX)convert-to-$(my_host)clang-flags,$(my_asflags))
9231f9828387d8d3d0b1a02f99633ac58a68aa366adYing Wangmy_ldflags := $(call $(LOCAL_2ND_ARCH_VAR_PREFIX)convert-to-$(my_host)clang-flags,$(my_ldflags))
924e6f65438a45f0e1b519fb3cd2799f44ca87911a7Logan Chienendif
925e6f65438a45f0e1b519fb3cd2799f44ca87911a7Logan Chien
92688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_YACCFLAGS := $(LOCAL_YACCFLAGS)
9276ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_ASFLAGS := $(my_asflags)
9287429e21c2e64c1b27787e3768c30207532b56296Ying Wang$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CONLYFLAGS := $(LOCAL_CONLYFLAGS)
9296ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CFLAGS := $(my_cflags)
9306ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CPPFLAGS := $(my_cppflags)
9319a8ecf970bf53f7f43a8722212ff4b217a6bb403Doug Kwan$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_RTTI_FLAG := $(LOCAL_RTTI_FLAG)
93288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_DEBUG_CFLAGS := $(debug_cflags)
9336ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_C_INCLUDES := $(my_c_includes)
9345f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wang$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_IMPORT_INCLUDES := $(import_includes)
9356ef6519170742bf3d56e17d04194e9cb0ecdead7Ying Wang$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_LDFLAGS := $(my_ldflags)
93688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_LDLIBS := $(LOCAL_LDLIBS)
937b8e01854893f7390f23e6df82744b2bd3d0572c4Ying Wang$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_NO_CRT := $(strip $(LOCAL_NO_CRT) $(LOCAL_NO_CRT_$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)))
938d90de32951835818a12b5fbb29871722ec1a7b1dYing Wang$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_LIBCXX := $(my_libcxx)
93988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
94088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# this is really the way to get the files onto the command line instead
94188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# of using $^, because then LOCAL_ADDITIONAL_DEPENDENCIES doesn't work
94288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_ALL_SHARED_LIBRARIES := $(built_shared_libraries)
94388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_ALL_STATIC_LIBRARIES := $(built_static_libraries)
94488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_ALL_WHOLE_STATIC_LIBRARIES := $(built_whole_libraries)
94588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_ALL_OBJECTS := $(all_objects)
94688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
94788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
94888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Define library dependencies.
94988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project###########################################################
95088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# all_libraries is used for the dependencies on LOCAL_BUILT_MODULE.
95188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectall_libraries := \
95288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    $(built_shared_libraries) \
95388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    $(built_static_libraries) \
95488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project    $(built_whole_libraries)
95588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project
95688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Also depend on the notice files for any static libraries that
95788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# are linked into this module.  This will force them to be installed
95888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# when this module is.
95988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(LOCAL_INSTALLED_MODULE): | $(installed_static_library_notice_file_targets)
9605f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wang
9615f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wang###########################################################
9625f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wang# Export includes
9635f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wang###########################################################
9645f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wangexport_includes := $(intermediates)/export_includes
9655f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wang$(export_includes): PRIVATE_EXPORT_C_INCLUDE_DIRS := $(LOCAL_EXPORT_C_INCLUDE_DIRS)
966490859563413ef331bf63233d43b8a61d73e0aa8Ying Wang# Make sure .pb.h are already generated before any dependent source files get compiled.
967490859563413ef331bf63233d43b8a61d73e0aa8Ying Wang$(export_includes) : $(LOCAL_MODULE_MAKEFILE) $(proto_generated_headers)
9685f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wang	@echo Export includes file: $< -- $@
9695f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wang	$(hide) mkdir -p $(dir $@) && rm -f $@
9705f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wangifdef LOCAL_EXPORT_C_INCLUDE_DIRS
9715f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wang	$(hide) for d in $(PRIVATE_EXPORT_C_INCLUDE_DIRS); do \
9725f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wang	        echo "-I $$d" >> $@; \
9735f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wang	        done
9745f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wangelse
9755f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wang	$(hide) touch $@
9765f074803fbc14d091fb83208b81b3ffa10f54f90Ying Wangendif
977616e596385d01bc2de0c4717ba53cb1c9601539dYing Wang
978616e596385d01bc2de0c4717ba53cb1c9601539dYing Wang# Make sure export_includes gets generated when you are running mm/mmm
979616e596385d01bc2de0c4717ba53cb1c9601539dYing Wang$(LOCAL_BUILT_MODULE) : | $(export_includes)
980