chromium/native_client_sdk/src/resources/Makefile.library.template

# Copyright 2013 The Chromium Authors
# 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'])}}
[[]]

TARGET = {{target['NAME']}}

include $(NACL_SDK_ROOT)/tools/common.mk

[[ExpandDict('DEPS', targets[0].get('DEPS', []))]]
[[ExpandDict('LIBS', targets[0].get('LIBS', []), pre_list=['$(DEPS)'])]]

[[for target in targets:]]
[[  if target['TYPE'] != 'linker-script':]]
[[    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)]]
[[    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}}

[[]]

all: install

# Build rules generated by macros from common.mk:

[[if targets[0].get('DEPS'):]]
$(foreach dep,$(DEPS),$(eval $(call DEPEND_RULE,$(dep))))
[[for target in targets:]]
[[  name = target['NAME'] ]]
[[  if len(targets) == 1:]]
[[    sources = 'SOURCES']]
[[    cflags = 'CFLAGS']]
[[  else:]]
[[    sources = name + '_SOURCES']]
[[    cflags = name + '_CFLAGS']]
[[  if target['TYPE'] == 'linker-script':]]
$(eval $(call LINKER_SCRIPT_RULE,{{name}},{{target['SOURCES'][0]}},{{target['SOURCES'][1]}}))
[[  else:]]
$(foreach src,$({{sources}}),$(eval $(call COMPILE_RULE,$(src),$({{cflags}}))))
$(eval $(call LIB_RULE,{{name}},$({{sources}})))
[[    if target['TYPE'] != 'static-lib':]]
ifneq (,$(findstring $(TOOLCHAIN),glibc))
$(eval $(call SO_RULE,{{name}},$({{sources}}),$(LIBS),$(DEPS)))
endif
[[  ]]
{{post}}