Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/config/makefiles/xpidl/   (Firefox Browser Version 153.0.1©)  Datei vom 27.6.2026 mit Größe 3 kB image not shown  

Quelle  Makefile.in

  Sprache: C
 

This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.

STANDALONE_MAKEFILE := 1

include $(topsrcdir)/config/rules.mk

Building XPIDLs effectively consists of two steps:
java.lang.NullPointerException
#   1) Staging all .idl files to a common directory.
#   2) Doing everything with the .idl files.
java.lang.NullPointerException
Each .idl file is processed into a .h file and typelib information.
The .h file shares the same stem as the input file and is installed
in the common headers include directory.
java.lang.NullPointerException
XPIDL files are logically grouped together by modules. The typelib
information for all XPIDLs in the same module is linked together into
an .xpt file having the name of the module.
java.lang.NullPointerException
As an optimization to reduce overall CPU usage, we process all .idl
belonging to a module with a single command invocation. This prevents
redundant parsing of .idl files and significantly reduces CPU cycles.

For dependency files.
idl_deps_dir := .deps

dist_idl_dir := $(DIST)/idl
dist_include_dir := $(DIST)/include
dist_xpcrs_dir := $(DIST)/xpcrs
stub_file := xptdata.stub
process_py := $(topsrcdir)/python/mozbuild/mozbuild/action/xpidl-process.py
target_file := $(topobjdir)/xpcom/reflect/xptinfo/xptdata.cpp
xptdata_h := $(dist_include_dir)/xptdata.h
generated_files := $(target_file) $(xptdata_h)
code_gen_py := $(topsrcdir)/xpcom/reflect/xptinfo/xptcodegen.py
code_gen_deps := $(topsrcdir)/xpcom/ds/tools/perfecthash.py

TODO we should use py_action, but that would require extra directories to be
in the virtualenv.
%.xpt:
 $(REPORT_BUILD)
 $(call BUILDSTATUS,START_xpt $@)
 $(PYTHON3) $(process_py) --depsdir $(idl_deps_dir) \
  --bindings-conf $(topsrcdir)/dom/bindings/Bindings.conf \
  $(foreach dir,$(all_idl_dirs),-I $(dir)) \
  $(dist_include_dir) $(dist_xpcrs_dir) $(@D) \
  $(basename $(notdir $@)) $($(basename $(notdir $@))_deps)
When some IDL is added or removed, if the actual IDL file was already, or
still is, in the tree, simple dependencies can't detect that the XPT needs
to be rebuilt.
Add the current value of $($(xpidl_module)_deps) in the depend file, such that
we can later check if the value has changed since last build, which will
indicate whether IDLs were added or removed.
Note that removing previously built files is not covered.
 @echo $(basename $(notdir $@))_deps_built = $($(basename $(notdir $@))_deps) >> $(idl_deps_dir)/$(basename $(notdir $@)).pp
 $(call BUILDSTATUS,END_xpt $@)

xpidl_modules := @xpidl_modules@
xpt_files := $(addsuffix .xpt,$(xpidl_modules))

@xpidl_rules@

depends_files := $(foreach root,$(xpidl_modules),$(idl_deps_dir)/$(root).pp)

ifdef COMPILE_ENVIRONMENT
xpidl:: $(generated_files)
endif

See bug 1420119 for why we need the semicolon.
$(target_file) $(xptdata_h) : $(stub_file) ;

$(xpt_files): $(process_py) $(call mkdir_deps,$(idl_deps_dir) $(dist_include_dir) $(dist_xpcrs_dir))

$(stub_file) : $(xpt_files) $(code_gen_py) $(code_gen_deps)
 $(REPORT_BUILD)
 $(call BUILDSTATUS,START_xpt $(notdir $(generated_files)))
 $(PYTHON3) $(code_gen_py) $(generated_files) $(xpt_files)
 @touch $@
 $(call BUILDSTATUS,END_xpt $(notdir $(generated_files)))

-include $(depends_files)

define xpt_deps
$(1): $(call mkdir_deps,$(dir $(1)))
ifneq ($($(basename $(notdir $(1)))_deps),$($(basename $(notdir $(1)))_deps_built))
$(1): FORCE
endif
endef

$(foreach xpt,$(xpt_files),$(eval $(call xpt_deps,$(xpt))))

.PHONY: xpidl

Messung V0.5 in Prozent
C=99 H=67 G=84

¤ Dauer der Verarbeitung: 0.13 Sekunden  (vorverarbeitet am  2026-08-24) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.