tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

rules.mk (4261B)


      1 # This Source Code Form is subject to the terms of the Mozilla Public
      2 # License, v. 2.0. If a copy of the MPL was not distributed with this
      3 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
      4 
      5 # /!\ Please make sure to update the following comment when you touch this
      6 # file. Thank you /!\
      7 
      8 # The traditional Mozilla build system relied on going through the entire
      9 # build tree a number of times with different targets, and many of the
     10 # things happening at each step required other things happening in previous
     11 # steps without any documentation of those dependencies.
     12 #
     13 # This new build system tries to start afresh by establishing what files or
     14 # operations are needed for the build, and applying the necessary rules to
     15 # have those in place, relying on make dependencies to get them going.
     16 #
     17 # As of writing, only building non-compiled parts of Firefox is supported
     18 # here (a few other things are also left out). This is a starting point, with
     19 # the intent to grow this build system to make it more complete.
     20 #
     21 # This file contains rules and dependencies to get things working. The intent
     22 # is for a Makefile to define some dependencies and variables, and include
     23 # this file. What needs to be defined there, and ends up being generated by
     24 # python/mozbuild/mozbuild/backend/fastermake.py is the following:
     25 # - TOPSRCDIR/TOPOBJDIR, respectively the top source directory and the top
     26 #   object directory
     27 # - PYTHON, the path to the python executable
     28 # - ACDEFINES, which contains a set of -Dvar=name to be used during
     29 #   preprocessing
     30 # - INSTALL_MANIFESTS, which defines the list of base directories handled
     31 #   by install manifests, see further below
     32 #
     33 # A convention used between this file and the Makefile including it is that
     34 # global Make variables names are uppercase, while "local" Make variables
     35 # applied to specific targets are lowercase.
     36 
     37 # Targets to be triggered for a default build
     38 default: $(addprefix install-,$(INSTALL_MANIFESTS))
     39 
     40 ifndef NO_XPIDL
     41 # Targets from the recursive make backend to be built for a default build
     42 default: $(TOPOBJDIR)/config/makefiles/xpidl/xpidl
     43 endif
     44 
     45 # Mac builds require to copy things in dist/bin/*.app
     46 # TODO: remove the MOZ_WIDGET_TOOLKIT and MOZ_BUILD_APP variables from
     47 # faster/Makefile and python/mozbuild/mozbuild/test/backend/test_build.py
     48 # when this is not required anymore.
     49 # We however don't need to do this when using the hybrid
     50 # FasterMake/RecursiveMake backend (FASTER_RECURSIVE_MAKE is set when
     51 # recursing from the RecursiveMake backend)
     52 ifndef FASTER_RECURSIVE_MAKE
     53 ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
     54 default:
     55 $(MAKE) -C $(TOPOBJDIR)/$(MOZ_BUILD_APP)/app repackage
     56 endif
     57 endif
     58 
     59 .PHONY: FORCE
     60 
     61 # Files under the faster/ sub-directory, however, are not meant to use the
     62 # fallback
     63 $(TOPOBJDIR)/faster/%: ;
     64 
     65 # Generic rule to fall back to the recursive make backend.
     66 # This needs to stay after other $(TOPOBJDIR)/* rules because GNU Make
     67 # <3.82 apply pattern rules in definition order, not stem length like
     68 # modern GNU Make.
     69 $(TOPOBJDIR)/%: FORCE
     70 $(MAKE) -C $(dir $@) $(notdir $@)
     71 
     72 # Install files using install manifests
     73 #
     74 # The list of base directories is given in INSTALL_MANIFESTS. The
     75 # corresponding install manifests are named correspondingly, with forward
     76 # slashes replaced with underscores, and prefixed with `install_`. That is,
     77 # the install manifest for `dist/bin` would be `install_dist_bin`.
     78 $(addprefix install-,$(INSTALL_MANIFESTS)): install-%: $(addprefix $(TOPOBJDIR)/,buildid.h source-repo.h)
     79 @# For now, force preprocessed files to be reprocessed every time.
     80 @# The overhead is not that big, and this avoids waiting for proper
     81 @# support for defines tracking in process_install_manifest.
     82 @touch install_$(subst /,_,$*)
     83 $(PYTHON3) -m mozbuild.action.process_install_manifest \
     84 	$(if $(filter copy,$(NSDISTMODE)),--no-symlinks) \
     85 	--track install_$(subst /,_,$*).track \
     86 	$(TOPOBJDIR)/$* \
     87 	-DAB_CD=en-US \
     88 	$(ACDEFINES) \
     89 	install_$(subst /,_,$*)
     90 
     91 # ============================================================================
     92 # Below is a set of additional dependencies and variables used to build things
     93 # that are not supported by data in moz.build.
     94 
     95 $(TOPOBJDIR)/build/.deps/application.ini.stub: $(TOPOBJDIR)/buildid.h $(TOPOBJDIR)/source-repo.h