1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 # Use of this source code is governed by a BSD-style license that can be 3 # found in the LICENSE file. 4 [[def ExpandDict(key, value_in, pre_list=[], post_list=[]):]] 5 [[ value = value_in or [] ]] 6 [[ pre = pre_list or [] ]] 7 [[ post = post_list or [] ]] 8 [[ if type(value) is not dict:]] 9 [[ out = pre]] 10 [[ out.extend(value)]] 11 [[ out.extend(post)]] 12 [[ if out:]] 13 {{key}} = {{' '.join(out)}} 14 [[ ]] 15 [[ return]] 16 [[ ]] 17 [[ for subkey in value:]] 18 [[ out = pre]] 19 [[ out.extend(value[subkey])]] 20 [[ out.extend(post)]] 21 {{key}}_{{subkey}} = {{' '.join(out)}} 22 [[ ]] 23 {{key}} = $({{key}}_$(TOOLCHAIN)) 24 [[]] 25 26 [[target = targets[0] ]] 27 # GNU Makefile based on shared rules provided by the Native Client SDK. 28 # See README.Makefiles for more details. 29 30 VALID_TOOLCHAINS := {{' '.join(tools)}} 31 NACL_SDK_ROOT ?= $(abspath $(CURDIR)/../..) 32 [[if 'INCLUDES' in target:]] 33 EXTRA_INC_PATHS={{' '.join(target['INCLUDES'])}} 34 [[]] 35 36 include $(NACL_SDK_ROOT)/tools/common.mk 37 38 TARGET = {{target['NAME']}} 39 [[ExpandDict('DEPS', targets[0].get('DEPS', []))]] 40 [[ExpandDict('LIBS', targets[0].get('LIBS', []), pre_list=['$(DEPS)'])]] 41 [[flags = target.get('CFLAGS', [])]] 42 [[flags.extend(target.get('CXXFLAGS', []))]] 43 [[ExpandDict('CFLAGS', flags)]] 44 [[if 'CFLAGS_GCC' in target:]] 45 ifneq ($(TOOLCHAIN),pnacl) 46 CFLAGS += {{' '.join(target['CFLAGS_GCC'])}} 47 endif 48 [[]] 49 50 [[for define in target.get('DEFINES', []):]] 51 CFLAGS += -D{{define}} 52 [[]] 53 54 SOURCES = \ 55 [[for source in sorted(target['SOURCES']):]] 56 {{source}} \ 57 [[]] 58 59 all: install 60 61 # Build rules generated by macros from common.mk: 62 63 [[if targets[0].get('DEPS'):]] 64 $(foreach dep,$(DEPS),$(eval $(call DEPEND_RULE,$(dep)))) 65 [[]] 66 $(foreach src,$(SOURCES),$(eval $(call COMPILE_RULE,$(src),$(CFLAGS)))) 67 $(eval $(call LIB_RULE,$(TARGET),$(SOURCES))) 68 69 [[if target['TYPE'] != 'static-lib':]] 70 ifneq (,$(findstring $(TOOLCHAIN),glibc bionic)) 71 $(eval $(call SO_RULE,$(TARGET),$(SOURCES),$(LIBS),$(DEPS))) 72 endif 73 [[]] 74 {{post}} 75