diff options
Diffstat (limited to 'build/templates.mozbuild')
-rw-r--r-- | build/templates.mozbuild | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/build/templates.mozbuild b/build/templates.mozbuild new file mode 100644 index 000000000..85b700c2a --- /dev/null +++ b/build/templates.mozbuild @@ -0,0 +1,131 @@ +# -*- 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): + '''Template for Rust libraries.''' + Library(name) + + IS_RUST_LIBRARY = True + + +@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 + + +include('gecko_templates.mozbuild') +include('test_templates.mozbuild') |