# -*- 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/. with Files('**'): BUG_COMPONENT = ('Firefox Build System', 'General') with Files('mozunit/**'): BUG_COMPONENT = ('Testing', 'Python Test') DIST_INSTALL = False # For sanity's sake, we compile nsinstall without the wrapped system # headers, so that we can use it to set up the wrapped system headers. NoVisibilityFlags() CONFIGURE_SUBST_FILES += [ 'tests/src-simple/Makefile', ] if CONFIG['HOST_OS_ARCH'] != 'WINNT': HOST_SOURCES += [ 'nsinstall.c', 'pathsub.c', ] HostProgram('nsinstall_real') PYTHON_UNITTEST_MANIFESTS += [ 'tests/python.ini', ] if CONFIG['CC_TYPE'] in ('clang', 'gcc') and CONFIG['MOZ_OPTIMIZE']: CFLAGS += ['-O3'] HOST_DEFINES = { 'UNICODE': True, '_UNICODE': True, } include('stl-headers.mozbuild') if CONFIG['WRAP_STL_INCLUDES']: stl_compiler = None if CONFIG['CC_TYPE'] in ('clang', 'gcc'): stl_compiler = 'gcc' elif CONFIG['CC_TYPE'] == 'clang-cl': stl_compiler = 'msvc' if stl_compiler: # Note that the 'stl_wrappers' folder is known to the build system as # containing generated files; if this is changed here then the code in # GeneratedFile.__init__ in python/mozbuild/mozbuild/frontend/data.py # might need to be updated accordingly as well. template_file = SRCDIR + '/%s-stl-wrapper.template.h' % stl_compiler output_dir = '../dist/stl_wrappers' # We have to use a sentinel file as the first file because the # file_generate action will create it for us, but we want to create all # the files in gen_wrappers() outputs = tuple(['stl.sentinel'] + ['%s/%s' % (output_dir, h) for h in stl_headers]) GENERATED_FILES += [outputs] stl = GENERATED_FILES[outputs] stl.script = 'make-stl-wrappers.py:gen_wrappers' stl.flags = [output_dir, stl_compiler, template_file] stl.flags.extend(stl_headers) # Wrap to make it easier to use correctly # NOTE: If we aren't wrapping STL includes, we're building part of the browser # which won't need this wrapper, such as L10N. Just don't try to generate the # wrapper in that case. if CONFIG['OS_ARCH'] == 'WINNT': GeneratedFile('../dist/stl_wrappers/windows.h', script='make-windows-h-wrapper.py', entry_point='generate', inputs = ['windows-h-constant.decls.h', 'windows-h-unicode.decls.h', 'windows-h-wrapper.template.h'], flags=[stl_compiler]) if CONFIG['WRAP_SYSTEM_INCLUDES']: include('system-headers.mozbuild') output_dir = '../dist/system_wrappers' outputs = tuple(['system-header.sentinel'] + ['%s/%s' % (output_dir, h) for h in stl_headers + system_headers]) GENERATED_FILES += [outputs] system = GENERATED_FILES[outputs] system.script = 'make-system-wrappers.py:gen_wrappers' system.flags = [output_dir] system.flags.extend(stl_headers) system.flags.extend(system_headers)