Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / native_client_sdk / src / resources / Makefile.example.template
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
5 # GNU Makefile based on shared rules provided by the Native Client SDK.
6 # See README.Makefiles for more details.
7 [[]]
8 [[def ExpandDict(key, value_in, pre_list=[], post_list=[]):]]
9 [[  value = value_in or [] ]]
10 [[  pre = pre_list or [] ]]
11 [[  post = post_list or [] ]]
12 [[  if type(value) is not dict:]]
13 [[    out = pre]]
14 [[    out.extend(value)]]
15 [[    out.extend(post)]]
16 [[    if out:]]
17 {{key}} = {{' '.join(out)}}
18 [[    ]]
19 [[    return]]
20 [[  ]]
21 [[  for subkey in value:]]
22 [[    out = pre]]
23 [[    out.extend(value[subkey])]]
24 [[    out.extend(post)]]
25 {{key}}_{{subkey}} = {{' '.join(out)}}
26 [[  ]]
27 {{key}} = $({{key}}_$(TOOLCHAIN))
28 [[]]
29
30 VALID_TOOLCHAINS := {{' '.join(tools)}}
31 {{pre}}
32 NACL_SDK_ROOT ?= $(abspath $(CURDIR)/{{rel_sdk}})
33 [[if 'INCLUDES' in targets[0]:]]
34 EXTRA_INC_PATHS={{' '.join(targets[0]['INCLUDES'])}}
35 [[]]
36
37 [[if multi_platform:]]
38 # Build with platform-specific subdirectories, to reduce the download size of
39 # the app.
40 MULTI_PLATFORM = 1
41 [[]]
42
43 include $(NACL_SDK_ROOT)/tools/common.mk
44
45 [[if desc.get('SOCKET_PERMISSIONS'):]]
46 CHROME_ARGS += --allow-nacl-socket-api=localhost
47 [[]]
48
49 TARGET = {{targets[0]['NAME']}}
50 [[if sel_ldr and targets[0].get('SEL_LDR_LIBS'):]]
51 ifdef SEL_LDR
52 [[  ExpandDict('DEPS', targets[0].get('SEL_LDR_DEPS', []))]]
53 [[  ExpandDict('LIBS', targets[0].get('SEL_LDR_LIBS', []))]]
54 else
55 [[  ExpandDict('DEPS', targets[0].get('DEPS', []))]]
56 [[  ExpandDict('LIBS', targets[0].get('LIBS', []))]]
57 endif
58 [[else:]]
59 [[  ExpandDict('DEPS', targets[0].get('DEPS', []))]]
60 [[  ExpandDict('LIBS', targets[0].get('LIBS', []))]]
61 [[]]
62
63 [[for target in targets:]]
64 [[  source_list = (s for s in sorted(target['SOURCES']) if not s.endswith('.h'))]]
65 [[  source_list = ' \\\n  '.join(source_list)]]
66 [[  sources = target['NAME'] + '_SOURCES']]
67 [[  cflags = target['NAME'] + '_CFLAGS']]
68 [[  flags = target.get('CFLAGS', [])]]
69 [[  flags.extend(target.get('CXXFLAGS', []))]]
70 [[  if len(targets) == 1:]]
71 [[    sources = 'SOURCES']]
72 [[    cflags = 'CFLAGS']]
73 [[  ]]
74 [[  ExpandDict(cflags, flags)]]
75 [[  if 'CFLAGS_GCC' in target:]]
76 ifneq ($(TOOLCHAIN),pnacl)
77 {{cflags}} += {{' '.join(target['CFLAGS_GCC'])}}
78 endif
79 [[  ]]
80 {{sources}} = {{source_list}}
81
82 # Build rules generated by macros from common.mk:
83
84 [[if targets[0].get('DEPS'):]]
85 $(foreach dep,$(DEPS),$(eval $(call DEPEND_RULE,$(dep))))
86 [[if len(targets) > 1:]]
87 [[  for target in targets:]]
88 [[    name = target['NAME'] ]]
89 $(foreach src,$({{name}}_SOURCES),$(eval $(call COMPILE_RULE,$(src),$({{name}}_CFLAGS))))
90 [[else:]]
91 $(foreach src,$(SOURCES),$(eval $(call COMPILE_RULE,$(src),$(CFLAGS))))
92 [[]]
93
94 [[for target in targets:]]
95 [[  sources = target['NAME'] + '_SOURCES']]
96 [[  name = target['NAME'] ]]
97 [[  if len(targets) == 1:]]
98 [[    sources = 'SOURCES']]
99 [[    name = '$(TARGET)']]
100 [[  if target['TYPE'] == 'so':]]
101 $(eval $(call SO_RULE,{{name}},$({{sources}})))
102 [[  elif target['TYPE'] == 'so-standalone':]]
103 $(eval $(call SO_RULE,{{name}},$({{sources}}),,,1))
104 [[  else:]]
105 # The PNaCl workflow uses both an unstripped and finalized/stripped binary.
106 # On NaCl, only produce a stripped binary for Release configs (not Debug).
107 ifneq (,$(or $(findstring pnacl,$(TOOLCHAIN)),$(findstring Release,$(CONFIG))))
108 $(eval $(call LINK_RULE,{{name}}_unstripped,$({{sources}}),$(LIBS),$(DEPS)))
109 $(eval $(call STRIP_RULE,{{name}},{{name}}_unstripped))
110 else
111 $(eval $(call LINK_RULE,{{name}},$({{sources}}),$(LIBS),$(DEPS)))
112 endif
113 [[]]
114
115 $(eval $(call NMF_RULE,$(TARGET),)){{post}}