123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- # 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}})
- [[if 'INCLUDES' in targets[0]:]]
- EXTRA_INC_PATHS={{' '.join(targets[0]['INCLUDES'])}}
- [[]]
- TARGET = {{targets[0]['NAME']}}
- [[if multi_platform:]]
- # Build with platform-specific subdirectories, to reduce the download size of
- # the app.
- MULTI_PLATFORM = 1
- [[]]
- include $(NACL_SDK_ROOT)/tools/common.mk
- [[if desc.get('SOCKET_PERMISSIONS'):]]
- CHROME_ARGS += --allow-nacl-socket-api=localhost
- [[]]
- [[ExpandDict('DEPS', targets[0].get('DEPS', []))]]
- [[ExpandDict('LIBS', targets[0].get('LIBS', []))]]
- [[for target in targets:]]
- [[ source_list = sorted(target['SOURCES'] + target.get('EXTRA_SOURCES', []))]]
- [[ source_list = (s for s in source_list 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}}
- [[]]
- # 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:]]
- # The PNaCl workflow uses both an unstripped and finalized/stripped binary.
- # On NaCl, only produce a stripped binary for Release configs (not Debug).
- ifneq (,$(or $(findstring pnacl,$(TOOLCHAIN)),$(findstring Release,$(CONFIG))))
- $(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}}
|