mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-27 12:50:09 +00:00

Rust libraries can set RUST_LIBRARY_TARGET_DIR so that they can share compilation artifacts with other libraries. This setting needs to be propagated to the backend so it can be communicated to Cargo.
148 lines
3.6 KiB
Python
148 lines
3.6 KiB
Python
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
|
|
# vim: set filetype=python:
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
@template
|
|
def Binary():
|
|
'''Generic template for target binaries. Meant to be used by other
|
|
templates.'''
|
|
|
|
if CONFIG['MOZ_LIBSTDCXX_TARGET_VERSION']:
|
|
USE_LIBS += ['stdc++compat']
|
|
|
|
# Ideally, we'd support not adding this to the LIB_IS_C_ONLY case,
|
|
# but that variable is actually only set in db/sqlite/src, which
|
|
# doesn't build a shared library on the relevant platforms anyways.
|
|
# Eventually, though, we should detect LIB_IS_C_ONLY based on the
|
|
# associated SOURCES (and there might actually be places where we
|
|
# haven't set it but should have).
|
|
if CONFIG['STLPORT_LIBS']:
|
|
OS_LIBS += [CONFIG['STLPORT_LIBS']]
|
|
|
|
|
|
@template
|
|
def Program(name):
|
|
'''Template for program executables.'''
|
|
PROGRAM = name
|
|
|
|
Binary()
|
|
|
|
|
|
@template
|
|
def SimplePrograms(names, ext='.cpp'):
|
|
'''Template for simple program executables.
|
|
|
|
Those have a single source with the same base name as the executable.
|
|
'''
|
|
SIMPLE_PROGRAMS += names
|
|
SOURCES += ['%s%s' % (name, ext) for name in names]
|
|
|
|
Binary()
|
|
|
|
|
|
@template
|
|
def CppUnitTests(names, ext='.cpp'):
|
|
'''Template for C++ unit tests.
|
|
|
|
Those have a single source with the same base name as the executable.
|
|
'''
|
|
CPP_UNIT_TESTS += names
|
|
SOURCES += ['%s%s' % (name, ext) for name in names]
|
|
|
|
Binary()
|
|
|
|
|
|
@template
|
|
def Library(name):
|
|
'''Template for libraries.'''
|
|
LIBRARY_NAME = name
|
|
|
|
|
|
@template
|
|
def RustLibrary(name, features=None, target_dir=None):
|
|
'''Template for Rust libraries.'''
|
|
Library(name)
|
|
|
|
IS_RUST_LIBRARY = True
|
|
|
|
if features:
|
|
RUST_LIBRARY_FEATURES = features
|
|
|
|
if target_dir:
|
|
RUST_LIBRARY_TARGET_DIR = target_dir
|
|
|
|
|
|
@template
|
|
def SharedLibrary(name):
|
|
'''Template for shared libraries.'''
|
|
Library(name)
|
|
|
|
FORCE_SHARED_LIB = True
|
|
|
|
Binary()
|
|
|
|
|
|
@template
|
|
def Framework(name):
|
|
'''Template for OSX Frameworks.'''
|
|
SharedLibrary(name)
|
|
|
|
IS_FRAMEWORK = True
|
|
|
|
|
|
@template
|
|
def HostStdCppCompat():
|
|
'''Template for libstdc++ compatibility for host binaries.'''
|
|
|
|
if CONFIG['MOZ_LIBSTDCXX_HOST_VERSION']:
|
|
HOST_USE_LIBS += ['host_stdc++compat']
|
|
|
|
|
|
@template
|
|
def HostProgram(name, c_only=False):
|
|
'''Template for build tools executables.'''
|
|
HOST_PROGRAM = name
|
|
|
|
# With context-based templates, this won't be needed anymore, and will
|
|
# work better than relying on the caller setting it, but at the moment,
|
|
# this is the best we have. And it doesn't matter /that/ much, so there's
|
|
# really only one place using this, where it does matter to avoid the
|
|
# extra dependency (because it creates a circular one).
|
|
if not c_only:
|
|
HostStdCppCompat()
|
|
|
|
|
|
@template
|
|
def HostSimplePrograms(names, ext='.cpp'):
|
|
'''Template for simple build tools executables.
|
|
|
|
Those have a single source with the same base name as the executable.
|
|
'''
|
|
HOST_SIMPLE_PROGRAMS += names
|
|
HOST_SOURCES += ['%s%s' % (name.replace('host_', ''), ext)
|
|
for name in names]
|
|
|
|
HostStdCppCompat()
|
|
|
|
|
|
@template
|
|
def HostLibrary(name):
|
|
'''Template for build tools libraries.'''
|
|
HOST_LIBRARY_NAME = name
|
|
|
|
@template
|
|
def HostRustLibrary(name, features=None):
|
|
'''Template for host Rust libraries.'''
|
|
HostLibrary(name)
|
|
|
|
IS_RUST_LIBRARY = True
|
|
|
|
if features:
|
|
HOST_RUST_LIBRARY_FEATURES = features
|
|
|
|
|
|
include('gecko_templates.mozbuild')
|
|
include('test_templates.mozbuild')
|