1# Copyright (C) 2009 The Android Open Source Project 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14# 15 16# this script is included repeatedly by main.mk to add a new toolchain 17# definition to the NDK build system. 18# 19# '_config_mk' must be defined as the path of a toolchain 20# configuration file (config.mk) that will be included here. 21# 22$(call assert-defined, _config_mk) 23 24# The list of variables that must or may be defined 25# by the toolchain configuration file 26# 27NDK_TOOLCHAIN_VARS_REQUIRED := TOOLCHAIN_ABIS 28NDK_TOOLCHAIN_VARS_OPTIONAL := 29 30# Clear variables that are supposed to be defined by the config file 31$(call clear-vars,$(NDK_TOOLCHAIN_VARS_REQUIRED)) 32$(call clear-vars,$(NDK_TOOLCHAIN_VARS_OPTIONAL)) 33 34# Include the config file 35include $(_config_mk) 36 37# Check that the proper variables were defined 38$(call check-required-vars,$(NDK_TOOLCHAIN_VARS_REQUIRED),$(_config_mk)) 39 40# Check that the file didn't do something stupid 41$(call assert-defined, _config_mk) 42 43# Now record the toolchain-specific information 44_dir := $(patsubst %/,%,$(dir $(_config_mk))) 45_name := $(notdir $(_dir)) 46_abis := $(TOOLCHAIN_ABIS) 47 48_toolchain := NDK_TOOLCHAIN.$(_name) 49 50# check that the toolchain name is unique 51$(if $(strip $($(_toolchain).defined)),\ 52 $(call __ndk_error,Toolchain $(_name) defined in $(_parent) is\ 53 already defined in $(NDK_TOOLCHAIN.$(_name).defined))) 54 55$(_toolchain).defined := $(_toolchain_config) 56$(_toolchain).abis := $(_abis) 57$(_toolchain).setup := $(wildcard $(_dir)/setup.mk) 58 59$(if $(strip $($(_toolchain).setup)),,\ 60 $(call __ndk_error, Toolchain $(_name) lacks a setup.mk in $(_dir))) 61 62NDK_ALL_TOOLCHAINS += $(_name) 63NDK_ALL_ABIS += $(_abis) 64 65# NKD_ABI.<abi>.toolchains records the list of toolchains that support 66# a given ABI 67# 68$(foreach _abi,$(_abis),\ 69 $(eval NDK_ABI.$(_abi).toolchains += $(_name)) \ 70) 71 72# done 73