gecko-dev/js/xpconnect/loader/moz.build
Kris Maglione 3e8d266e8a Bug 1513366: Part 1 - Add do_ImportModule helper for importing JS modules. r=mccr8
This helper makes it considerably easier for C++ code to import a JS module
and wrap it in an appropriately-defined XPIDL interface for its exports.
Typical usage is something like:

Foo.jsm:

  var EXPORTED_SYMBOLS = ["foo"];

  function foo(bar) {
    return bar.toString();
  }

mozIFoo.idl:

  interface mozIFoo : nsISupports {
    AString foo(double meh);
  }

Thing.cpp:

  nsCOMPtr<mozIFoo> foo = do_ImportModule(
    "resource://meh/Foo.jsm");

  MOZ_TRY(foo->Foo(42));

Differential Revision: https://phabricator.services.mozilla.com/D14209

--HG--
extra : rebase_source : 4d518205b173fc210908235b42ddace590e6b7e5
2018-12-11 13:28:20 -08:00

63 lines
1.2 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/.
UNIFIED_SOURCES += [
'AutoMemMap.cpp',
'ChromeScriptLoader.cpp',
'mozJSLoaderUtils.cpp',
'mozJSSubScriptLoader.cpp',
'nsImportModule.cpp',
'ScriptCacheActors.cpp',
'ScriptPreloader.cpp',
'URLPreloader.cpp',
]
# mozJSComponentLoader.cpp cannot be built in unified mode because it uses
# windows.h
SOURCES += [
'mozJSComponentLoader.cpp',
]
IPDL_SOURCES += [
'PScriptCache.ipdl',
]
EXPORTS += [
'nsImportModule.h'
]
EXPORTS.mozilla += [
'AutoMemMap.h',
'ScriptPreloader.h',
'URLPreloader.h',
]
EXPORTS.mozilla.dom += [
'PrecompiledScript.h',
]
EXPORTS.mozilla.loader += [
'AutoMemMap.h',
'ScriptCacheActors.h',
]
EXTRA_JS_MODULES += [
'XPCOMUtils.jsm',
]
FINAL_LIBRARY = 'xul'
LOCAL_INCLUDES += [
'../src',
'../wrappers',
'/dom/base',
'/xpcom/base/',
]
include('/ipc/chromium/chromium-config.mozbuild')
if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
CXXFLAGS += ['-Wno-shadow']