| # Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| [[def ExpandDict(key, value_in, pre_list=[], post_list=[]):]] |
| [[ value = value_in or [] ]] |
| [[ pre = pre_list or [] ]] |
| [[ post = post_list or [] ]] |
| [[ if type(value) is not dict:]] |
| [[ out = pre]] |
| [[ out.extend(value)]] |
| [[ out.extend(post)]] |
| [[ if out:]] |
| {{key}} = {{' '.join(out)}} |
| [[ ]] |
| [[ return]] |
| [[ ]] |
| [[ for subkey in value:]] |
| [[ out = pre]] |
| [[ out.extend(value[subkey])]] |
| [[ out.extend(post)]] |
| {{key}}_{{subkey}} = {{' '.join(out)}} |
| [[ ]] |
| {{key}} = $({{key}}_$(TOOLCHAIN)) |
| [[]] |
| |
| [[target = targets[0] ]] |
| # GNU Makefile based on shared rules provided by the Native Client SDK. |
| # See README.Makefiles for more details. |
| |
| VALID_TOOLCHAINS := {{' '.join(tools)}} |
| NACL_SDK_ROOT ?= $(abspath $(CURDIR)/../..) |
| [[if 'INCLUDES' in target:]] |
| EXTRA_INC_PATHS={{' '.join(target['INCLUDES'])}} |
| [[]] |
| |
| TARGET = {{target['NAME']}} |
| |
| include $(NACL_SDK_ROOT)/tools/common.mk |
| |
| [[ExpandDict('DEPS', targets[0].get('DEPS', []))]] |
| [[ExpandDict('LIBS', targets[0].get('LIBS', []), pre_list=['$(DEPS)'])]] |
| |
| [[for target in targets:]] |
| [[ if target['TYPE'] != 'linker-script':]] |
| [[ source_list = (s for s in sorted(target['SOURCES']) if not s.endswith('.h'))]] |
| [[ source_list = ' \\\n '.join(source_list)]] |
| [[ sources = target['NAME'] + '_SOURCES']] |
| [[ cflags = target['NAME'] + '_CFLAGS']] |
| [[ flags = target.get('CFLAGS', [])]] |
| [[ flags.extend(target.get('CXXFLAGS', []))]] |
| [[ if len(targets) == 1:]] |
| [[ sources = 'SOURCES']] |
| [[ cflags = 'CFLAGS']] |
| [[ ]] |
| [[ ExpandDict(cflags, flags)]] |
| [[ for define in target.get('DEFINES', []):]] |
| {{cflags}} += -D{{define}} |
| [[ ]] |
| [[ if 'CFLAGS_GCC' in target:]] |
| ifneq ($(TOOLCHAIN),pnacl) |
| {{cflags}} += {{' '.join(target['CFLAGS_GCC'])}} |
| endif |
| [[ ]] |
| {{sources}} = {{source_list}} |
| |
| [[]] |
| |
| all: install |
| |
| # Build rules generated by macros from common.mk: |
| |
| [[if targets[0].get('DEPS'):]] |
| $(foreach dep,$(DEPS),$(eval $(call DEPEND_RULE,$(dep)))) |
| [[for target in targets:]] |
| [[ name = target['NAME'] ]] |
| [[ if len(targets) == 1:]] |
| [[ sources = 'SOURCES']] |
| [[ cflags = 'CFLAGS']] |
| [[ else:]] |
| [[ sources = name + '_SOURCES']] |
| [[ cflags = name + '_CFLAGS']] |
| [[ if target['TYPE'] == 'linker-script':]] |
| $(eval $(call LINKER_SCRIPT_RULE,{{name}},{{target['SOURCES'][0]}},{{target['SOURCES'][1]}})) |
| [[ else:]] |
| $(foreach src,$({{sources}}),$(eval $(call COMPILE_RULE,$(src),$({{cflags}})))) |
| $(eval $(call LIB_RULE,{{name}},$({{sources}}))) |
| [[ if target['TYPE'] != 'static-lib':]] |
| ifneq (,$(findstring $(TOOLCHAIN),glibc)) |
| $(eval $(call SO_RULE,{{name}},$({{sources}}),$(LIBS),$(DEPS))) |
| endif |
| [[ ]] |
| {{post}} |