blob: f36bdd91cdebfcd9409485bec04be41e34e86eaa [file] [log] [blame]
# 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'])}}
[[]]
include $(NACL_SDK_ROOT)/tools/common.mk
TARGET = {{target['NAME']}}
[[ExpandDict('DEPS', targets[0].get('DEPS', []))]]
[[ExpandDict('LIBS', targets[0].get('LIBS', []), pre_list=['$(DEPS)'])]]
[[flags = target.get('CFLAGS', [])]]
[[flags.extend(target.get('CXXFLAGS', []))]]
[[ExpandDict('CFLAGS', flags)]]
[[if 'CFLAGS_GCC' in target:]]
ifneq ($(TOOLCHAIN),pnacl)
CFLAGS += {{' '.join(target['CFLAGS_GCC'])}}
endif
[[]]
[[for define in target.get('DEFINES', []):]]
CFLAGS += -D{{define}}
[[]]
SOURCES = \
[[for source in sorted(target['SOURCES']):]]
{{source}} \
[[]]
all: install
# Build rules generated by macros from common.mk:
[[if targets[0].get('DEPS'):]]
$(foreach dep,$(DEPS),$(eval $(call DEPEND_RULE,$(dep))))
[[]]
$(foreach src,$(SOURCES),$(eval $(call COMPILE_RULE,$(src),$(CFLAGS))))
$(eval $(call LIB_RULE,$(TARGET),$(SOURCES)))
[[if target['TYPE'] != 'static-lib':]]
ifneq (,$(findstring $(TOOLCHAIN),glibc bionic))
$(eval $(call SO_RULE,$(TARGET),$(SOURCES),$(LIBS),$(DEPS)))
endif
[[]]
{{post}}