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