• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
30VALID_TOOLCHAINS := {{' '.join(tools)}}
31NACL_SDK_ROOT ?= $(abspath $(CURDIR)/../..)
32[[if 'INCLUDES' in target:]]
33EXTRA_INC_PATHS={{' '.join(target['INCLUDES'])}}
34[[]]
35
36include $(NACL_SDK_ROOT)/tools/common.mk
37
38TARGET = {{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:]]
45ifneq ($(TOOLCHAIN),pnacl)
46CFLAGS += {{' '.join(target['CFLAGS_GCC'])}}
47endif
48[[]]
49
50[[for define in target.get('DEFINES', []):]]
51CFLAGS += -D{{define}}
52[[]]
53
54SOURCES = \
55[[for source in sorted(target['SOURCES']):]]
56  {{source}} \
57[[]]
58
59all: 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':]]
70ifneq (,$(findstring $(TOOLCHAIN),glibc bionic))
71$(eval $(call SO_RULE,$(TARGET),$(SOURCES),$(LIBS),$(DEPS)))
72endif
73[[]]
74{{post}}
75