mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-01 17:23:59 +00:00
47c853314f
There are, sadly, many combinations of linkage in use throughout the tree. The main differentiator, though, is between program/libraries related to Gecko or not. Kind of. Some need mozglue, some don't. Some need dependent linkage, some standalone. Anyways, these new templates remove the need to manually define the right dependencies against xpcomglue, nspr, mozalloc and mozglue in most cases. Places that build programs and were resetting MOZ_GLUE_PROGRAM_LDFLAGS or that build libraries and were resetting MOZ_GLUE_LDFLAGS can now just not use those Gecko-specific templates.
119 lines
2.8 KiB
Python
119 lines
2.8 KiB
Python
# -*- Mode: python; c-basic-offset: 4; 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']]
|
|
elif CONFIG['OS_TARGET'] == 'Android':
|
|
USE_LIBS += ['stlport']
|
|
|
|
|
|
@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 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):
|
|
'''Template for build tools executables.'''
|
|
HOST_PROGRAM = name
|
|
|
|
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')
|