# -*- 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/. if CONFIG["MOZ_GECKO_PROFILER"]: DEFINES["MOZ_REPLACE_MALLOC_PREFIX"] = "profiler" XPIDL_MODULE = "profiler" XPIDL_SOURCES += [ "gecko/nsIProfiler.idl", ] EXPORTS += [ "public/ChildProfilerController.h", "public/GeckoProfilerReporter.h", "public/ProfilerChild.h", "public/ProfilerCodeAddressService.h", "public/ProfilerParent.h", "public/shared-libraries.h", ] UNIFIED_SOURCES += [ "core/PageInformation.cpp", "core/platform.cpp", "core/ProfileBuffer.cpp", "core/ProfileBufferEntry.cpp", "core/ProfiledThreadData.cpp", "core/ProfilerBacktrace.cpp", "core/ProfilerCodeAddressService.cpp", "core/ProfilerMarkers.cpp", "core/RegisteredThread.cpp", "gecko/ChildProfilerController.cpp", "gecko/nsProfilerStartParams.cpp", "gecko/ProfilerChild.cpp", "gecko/ProfilerIOInterposeObserver.cpp", "gecko/ProfilerParent.cpp", ] if CONFIG["MOZ_REPLACE_MALLOC"] and CONFIG["MOZ_PROFILER_MEMORY"]: SOURCES += [ "core/memory_hooks.cpp", # Non-unified because of order of #includes ] XPCOM_MANIFESTS += [ "gecko/components.conf", ] if CONFIG["OS_TARGET"] == "Darwin": # This file cannot be built in unified mode because it includes # "nsLocalFile.h", which pulls in a system header which uses a type # called TextRange, which conflicts with mozilla::TextRange due to # a "using namespace mozilla;" declaration from a different file. SOURCES += [ "gecko/nsProfiler.cpp", ] else: UNIFIED_SOURCES += [ "gecko/nsProfiler.cpp", ] if CONFIG["OS_TARGET"] in ("Android", "Linux", "FreeBSD"): if CONFIG["CPU_ARCH"] in ("arm", "aarch64", "x86", "x86_64", "mips64"): UNIFIED_SOURCES += [ "lul/AutoObjectMapper.cpp", "lul/LulCommon.cpp", "lul/LulDwarf.cpp", "lul/LulDwarfSummariser.cpp", "lul/LulElf.cpp", "lul/LulMain.cpp", "lul/platform-linux-lul.cpp", ] # These files cannot be built in unified mode because of name clashes with mozglue headers on Android. SOURCES += [ "core/shared-libraries-linux.cc", ] if not CONFIG["MOZ_CRASHREPORTER"]: SOURCES += [ "/toolkit/crashreporter/google-breakpad/src/common/linux/elfutils.cc", "/toolkit/crashreporter/google-breakpad/src/common/linux/file_id.cc", "/toolkit/crashreporter/google-breakpad/src/common/linux/linux_libc_support.cc", "/toolkit/crashreporter/google-breakpad/src/common/linux/memory_mapped_file.cc", ] if not CONFIG["HAVE_GETCONTEXT"]: SOURCES += [ "/toolkit/crashreporter/google-breakpad/src/common/linux/breakpad_getcontext.S" ] if CONFIG["CPU_ARCH"] == "arm" and CONFIG["OS_TARGET"] != "FreeBSD": SOURCES += [ "core/EHABIStackWalk.cpp", ] elif CONFIG["OS_TARGET"] == "Darwin": UNIFIED_SOURCES += [ "core/shared-libraries-macos.cc", ] elif CONFIG["OS_TARGET"] == "WINNT": SOURCES += [ "core/shared-libraries-win32.cc", ] LOCAL_INCLUDES += [ "/caps", "/docshell/base", "/ipc/chromium/src", "/mozglue/linker", "/netwerk/base", "/netwerk/protocol/http", "/toolkit/crashreporter/google-breakpad/src", "/tools/profiler/core/", "/tools/profiler/gecko/", "/xpcom/base", ] if CONFIG["OS_TARGET"] == "Android": DEFINES["ANDROID_NDK_MAJOR_VERSION"] = CONFIG["ANDROID_NDK_MAJOR_VERSION"] DEFINES["ANDROID_NDK_MINOR_VERSION"] = CONFIG["ANDROID_NDK_MINOR_VERSION"] LOCAL_INCLUDES += [ # We need access to Breakpad's getcontext(3) which is suitable for Android "/toolkit/crashreporter/google-breakpad/src/common/android/include", ] if CONFIG["ENABLE_TESTS"]: DIRS += ["tests/gtest"] FINAL_LIBRARY = "xul" IPDL_SOURCES += [ "gecko/PProfiler.ipdl", "gecko/ProfilerTypes.ipdlh", ] include("/ipc/chromium/chromium-config.mozbuild") EXPORTS += [ "public/GeckoProfiler.h", ] EXPORTS.mozilla += [ "public/ProfileBufferEntrySerializationGeckoExtensions.h", "public/ProfileJSONWriter.h", "public/ProfilerCounts.h", "public/ProfilerLabels.h", "public/ProfilerMarkers.h", "public/ProfilerMarkersDetail.h", "public/ProfilerMarkersPrerequisites.h", "public/ProfilerMarkerTypes.h", "public/ProfilerState.h", ] if CONFIG["MOZ_VTUNE"]: DEFINES["MOZ_VTUNE_INSTRUMENTATION"] = True UNIFIED_SOURCES += [ "core/VTuneProfiler.cpp", ] if CONFIG["MOZ_TASK_TRACER"]: EXPORTS += [ "tasktracer/GeckoTaskTracer.h", "tasktracer/GeckoTaskTracerImpl.h", "tasktracer/SourceEventTypeMap.h", "tasktracer/TracedTaskCommon.h", ] UNIFIED_SOURCES += [ "tasktracer/GeckoTaskTracer.cpp", "tasktracer/TracedTaskCommon.cpp", ] XPCSHELL_TESTS_MANIFESTS += ["tests/xpcshell/xpcshell.ini"] MOCHITEST_CHROME_MANIFESTS += ["tests/chrome/chrome.ini"] BROWSER_CHROME_MANIFESTS += ["tests/browser/browser.ini"] if CONFIG["CC_TYPE"] in ("clang", "gcc"): CXXFLAGS += [ "-Wno-error=shadow", "-Wno-error=stack-protector", "-Wno-ignored-qualifiers", # due to use of breakpad headers ] with Files("**"): BUG_COMPONENT = ("Core", "Gecko Profiler")