summaryrefslogtreecommitdiffstats
path: root/native_client_sdk/src/resources/Makefile.example.template
diff options
context:
space:
mode:
Diffstat (limited to 'native_client_sdk/src/resources/Makefile.example.template')
-rw-r--r--native_client_sdk/src/resources/Makefile.example.template89
1 files changed, 89 insertions, 0 deletions
diff --git a/native_client_sdk/src/resources/Makefile.example.template b/native_client_sdk/src/resources/Makefile.example.template
new file mode 100644
index 0000000..8c63756
--- /dev/null
+++ b/native_client_sdk/src/resources/Makefile.example.template
@@ -0,0 +1,89 @@
+# 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.
+
+# GNU Makefile based on shared rules provided by the Native Client SDK.
+# See README.Makefiles for more details.
+[[]]
+[[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))
+[[]]
+
+VALID_TOOLCHAINS := {{' '.join(tools)}}
+{{pre}}
+NACL_SDK_ROOT ?= $(abspath $(CURDIR)/{{rel_sdk}})
+include $(NACL_SDK_ROOT)/tools/common.mk
+
+TARGET = {{targets[0]['NAME']}}
+[[ExpandDict('DEPS', targets[0].get('DEPS', []))]]
+[[ExpandDict('LIBS', targets[0].get('LIBS', []), pre_list=['$(DEPS)'])]]
+
+[[for target in targets:]]
+[[ 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)]]
+[[ if 'CFLAGS_GCC' in target:]]
+ifneq ($(TOOLCHAIN),pnacl)
+{{cflags}} += {{' '.join(target['CFLAGS_GCC'])}}
+endif
+[[ ]]
+{{sources}} = {{source_list}}
+
+# Build rules generated by macros from common.mk:
+
+[[if targets[0].get('DEPS'):]]
+$(foreach dep,$(DEPS),$(eval $(call DEPEND_RULE,$(dep))))
+[[if len(targets) > 1:]]
+[[ for target in targets:]]
+[[ name = target['NAME'] ]]
+$(foreach src,$({{name}}_SOURCES),$(eval $(call COMPILE_RULE,$(src),$({{name}}_CFLAGS))))
+[[else:]]
+$(foreach src,$(SOURCES),$(eval $(call COMPILE_RULE,$(src),$(CFLAGS))))
+[[]]
+
+[[for target in targets:]]
+[[ sources = target['NAME'] + '_SOURCES']]
+[[ name = target['NAME'] ]]
+[[ if len(targets) == 1:]]
+[[ sources = 'SOURCES']]
+[[ name = '$(TARGET)']]
+[[ if target['TYPE'] == 'so':]]
+$(eval $(call SO_RULE,{{name}},$({{sources}})))
+[[ elif target['TYPE'] == 'so-standalone':]]
+$(eval $(call SO_RULE,{{name}},$({{sources}}),,,1))
+[[ else:]]
+ifeq ($(CONFIG),Release)
+$(eval $(call LINK_RULE,{{name}}_unstripped,$({{sources}}),$(LIBS),$(DEPS)))
+$(eval $(call STRIP_RULE,{{name}},{{name}}_unstripped))
+else
+$(eval $(call LINK_RULE,{{name}},$({{sources}}),$(LIBS),$(DEPS)))
+endif
+[[]]
+
+$(eval $(call NMF_RULE,$(TARGET),)){{post}}