1a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner# Copyright (C) 2009 The Android Open Source Project
2a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner#
3a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner# Licensed under the Apache License, Version 2.0 (the "License");
4a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner# you may not use this file except in compliance with the License.
5a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner# You may obtain a copy of the License at
6a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner#
7a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner#      http://www.apache.org/licenses/LICENSE-2.0
8a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner#
9a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner# Unless required by applicable law or agreed to in writing, software
10a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner# distributed under the License is distributed on an "AS IS" BASIS,
11a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner# See the License for the specific language governing permissions and
13a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner# limitations under the License.
14a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner#
15a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner# Handle local variable expor/import during the build
16a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner#
17a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner
18a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner$(call assert-defined,LOCAL_MODULE)
19a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner
20a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner# For LOCAL_CFLAGS, LOCAL_CPPFLAGS and LOCAL_C_INCLUDES, we need
21a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner# to use the exported definitions of the closure of all modules
22a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner# we depend on.
23a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner#
24a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner# I.e. If module 'foo' depends on 'bar' which depends on 'zoo',
25a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner# then 'foo' will get the CFLAGS/CPPFLAGS/C_INCLUDES of both 'bar'
26a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner# and 'zoo'
27a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner#
28a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner
29a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turnerall_depends := $(call module-get-all-dependencies,$(LOCAL_MODULE))
30a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turnerall_depends := $(filter-out $(LOCAL_MODULE),$(all_depends))
31a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner
32a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turnerimported_CFLAGS     := $(call module-get-listed-export,$(all_depends),CFLAGS)
33a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turnerimported_CPPFLAGS   := $(call module-get-listed-export,$(all_depends),CPPFLAGS)
34a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turnerimported_C_INCLUDES := $(call module-get-listed-export,$(all_depends),C_INCLUDES)
35a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner
36a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turnerifdef NDK_DEBUG_IMPORTS
37a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner    $(info Imports for module $(LOCAL_MODULE):)
38a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner    $(info   CFLAGS='$(imported_CFLAGS)')
39a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner    $(info   CPPFLAGS='$(imported_CPPFLAGS)')
40a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner    $(info   C_INCLUDES='$(imported_C_INCLUDES)')
41a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner    $(info All depends='$(all_depends)')
42a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turnerendif
43a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner
442ec1cd210bd56acaf28f694b5040d7fd944eae9eDavid 'Digit' Turner#
452ec1cd210bd56acaf28f694b5040d7fd944eae9eDavid 'Digit' Turner# The imported compiler flags are prepended to their LOCAL_XXXX value
462ec1cd210bd56acaf28f694b5040d7fd944eae9eDavid 'Digit' Turner# (this allows the module to override them).
472ec1cd210bd56acaf28f694b5040d7fd944eae9eDavid 'Digit' Turner#
48a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' TurnerLOCAL_CFLAGS     := $(strip $(imported_CFLAGS) $(LOCAL_CFLAGS))
49a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' TurnerLOCAL_CPPFLAGS   := $(strip $(imported_CPPFLAGS) $(LOCAL_CPPFLAGS))
50a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner
51a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner#
522ec1cd210bd56acaf28f694b5040d7fd944eae9eDavid 'Digit' Turner# The imported include directories are appended to their LOCAL_XXX value
532ec1cd210bd56acaf28f694b5040d7fd944eae9eDavid 'Digit' Turner# (this allows the module to override them)
542ec1cd210bd56acaf28f694b5040d7fd944eae9eDavid 'Digit' Turner#
552ec1cd210bd56acaf28f694b5040d7fd944eae9eDavid 'Digit' TurnerLOCAL_C_INCLUDES := $(strip $(LOCAL_C_INCLUDES) $(imported_C_INCLUDES))
562ec1cd210bd56acaf28f694b5040d7fd944eae9eDavid 'Digit' Turner
572ec1cd210bd56acaf28f694b5040d7fd944eae9eDavid 'Digit' Turner# Similarly, you want the imported flags to appear _after_ the LOCAL_LDLIBS
582ec1cd210bd56acaf28f694b5040d7fd944eae9eDavid 'Digit' Turner# due to the way Unix linkers work (depending libraries must appear before
592ec1cd210bd56acaf28f694b5040d7fd944eae9eDavid 'Digit' Turner# dependees on final link command).
60a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner#
61a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turnerimported_LDLIBS := $(call module-get-listed-export,$(all_depends),LDLIBS)
62a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner
63a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' TurnerLOCAL_LDLIBS := $(strip $(LOCAL_LDLIBS) $(imported_LDLIBS))
64a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner
65a5501b02c2f2a9e1bf9fce42a3faf601adc070e9David 'Digit' Turner# We're done here
66