2011-06-24 23:00:04 +04:00
|
|
|
# -*- makefile -*-
|
|
|
|
# vim:set ts=8 sw=8 sts=8 noet:
|
2012-05-21 15:12:37 +04:00
|
|
|
# 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/.
|
1998-11-06 11:39:52 +03:00
|
|
|
|
2017-10-27 23:10:12 +03:00
|
|
|
# Defines main targets for driving the Firefox build system.
|
1998-11-06 11:39:52 +03:00
|
|
|
#
|
2017-10-27 23:10:12 +03:00
|
|
|
# This make file should not be invoked directly. Instead, use
|
|
|
|
# `mach` (likely `mach build`) for invoking the build system.
|
1998-11-06 12:06:37 +03:00
|
|
|
#
|
1999-02-17 20:36:29 +03:00
|
|
|
# Options:
|
1999-04-13 01:20:59 +04:00
|
|
|
# MOZ_OBJDIR - Destination object directory
|
1999-08-20 19:02:00 +04:00
|
|
|
# MOZ_MAKE_FLAGS - Flags to pass to $(MAKE)
|
1999-10-09 04:31:17 +04:00
|
|
|
#
|
2000-03-17 03:56:58 +03:00
|
|
|
#######################################################################
|
|
|
|
# Defines
|
2010-10-28 22:15:15 +04:00
|
|
|
|
2016-03-03 20:47:44 +03:00
|
|
|
ifdef MACH
|
|
|
|
ifndef NO_BUILDSTATUS_MESSAGES
|
|
|
|
define BUILDSTATUS
|
|
|
|
@echo 'BUILDSTATUS $1'
|
|
|
|
|
|
|
|
endef
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
2009-03-12 01:39:24 +03:00
|
|
|
CWD := $(CURDIR)
|
2000-06-08 18:00:17 +04:00
|
|
|
|
|
|
|
ifeq "$(CWD)" "/"
|
|
|
|
CWD := /.
|
|
|
|
endif
|
|
|
|
|
2020-05-05 22:53:22 +03:00
|
|
|
PYTHON3 ?= python3
|
1999-02-20 01:55:50 +03:00
|
|
|
|
1999-03-26 03:03:10 +03:00
|
|
|
####################################
|
1999-04-14 06:34:49 +04:00
|
|
|
# Load mozconfig Options
|
1999-02-17 20:36:29 +03:00
|
|
|
|
2017-11-10 09:27:16 +03:00
|
|
|
include $(OBJDIR)/.mozconfig-client-mk
|
2013-09-05 04:01:44 +04:00
|
|
|
|
2013-11-16 08:40:03 +04:00
|
|
|
ifdef MOZ_PARALLEL_BUILD
|
|
|
|
MOZ_MAKE_FLAGS := $(filter-out -j%,$(MOZ_MAKE_FLAGS))
|
|
|
|
MOZ_MAKE_FLAGS += -j$(MOZ_PARALLEL_BUILD)
|
|
|
|
endif
|
|
|
|
|
2012-11-28 02:01:17 +04:00
|
|
|
# Automatically add -jN to make flags if not defined. N defaults to number of cores.
|
|
|
|
ifeq (,$(findstring -j,$(MOZ_MAKE_FLAGS)))
|
2020-05-05 22:53:22 +03:00
|
|
|
cores=$(shell $(PYTHON3) -c 'import multiprocessing; print(multiprocessing.cpu_count())')
|
2012-11-28 02:01:17 +04:00
|
|
|
MOZ_MAKE_FLAGS += -j$(cores)
|
|
|
|
endif
|
|
|
|
|
2017-08-15 22:30:28 +03:00
|
|
|
ifdef MOZ_AUTOMATION
|
2017-07-26 03:23:25 +03:00
|
|
|
ifeq (4.0,$(firstword $(sort 4.0 $(MAKE_VERSION))))
|
|
|
|
MOZ_MAKE_FLAGS += --output-sync=line
|
|
|
|
endif
|
2017-08-15 22:30:28 +03:00
|
|
|
endif
|
2012-11-28 02:01:17 +04:00
|
|
|
|
2010-08-21 17:24:34 +04:00
|
|
|
MOZ_MAKE = $(MAKE) $(MOZ_MAKE_FLAGS) -C $(OBJDIR)
|
1998-12-19 03:10:52 +03:00
|
|
|
|
2020-10-20 00:16:22 +03:00
|
|
|
# 'configure' scripts generated by autoconf.
|
|
|
|
CONFIGURES := $(TOPSRCDIR)/configure
|
|
|
|
CONFIGURES += $(TOPSRCDIR)/js/src/configure
|
|
|
|
|
1999-03-26 03:03:10 +03:00
|
|
|
#######################################################################
|
1999-02-17 20:36:29 +03:00
|
|
|
# Rules
|
1998-11-13 22:42:43 +03:00
|
|
|
|
2007-05-23 00:07:17 +04:00
|
|
|
# The default rule is build
|
|
|
|
build::
|
2011-03-25 21:50:29 +03:00
|
|
|
|
2017-11-10 02:03:57 +03:00
|
|
|
ifndef MACH
|
|
|
|
$(error client.mk must be used via `mach`. Try running \
|
|
|
|
`./mach $(firstword $(MAKECMDGOALS) $(.DEFAULT_GOAL))`)
|
|
|
|
endif
|
|
|
|
|
2017-11-10 01:59:06 +03:00
|
|
|
# In automation, manage an sccache daemon. The starting of the server
|
|
|
|
# needs to be in a make file so sccache inherits the jobserver.
|
|
|
|
ifdef MOZBUILD_MANAGE_SCCACHE_DAEMON
|
|
|
|
build::
|
|
|
|
# Terminate any sccache server that might still be around.
|
|
|
|
-$(MOZBUILD_MANAGE_SCCACHE_DAEMON) --stop-server > /dev/null 2>&1
|
|
|
|
# Start a new server, ensuring it gets the jobserver file descriptors
|
|
|
|
# from make (but don't use the + prefix when make -n is used, so that
|
|
|
|
# the command doesn't run in that case)
|
2018-09-18 23:02:17 +03:00
|
|
|
mkdir -p $(UPLOAD_PATH)
|
2020-08-26 00:16:53 +03:00
|
|
|
$(if $(findstring n,$(filter-out --%, $(MAKEFLAGS))),,+)env SCCACHE_LOG=sccache=debug SCCACHE_ERROR_LOG=$(UPLOAD_PATH)/sccache.log $(MOZBUILD_MANAGE_SCCACHE_DAEMON) --start-server
|
2017-11-10 01:59:06 +03:00
|
|
|
endif
|
|
|
|
|
2020-10-20 00:16:22 +03:00
|
|
|
####################################
|
|
|
|
# Configure
|
|
|
|
|
|
|
|
$(CONFIGURES): %: %.in
|
|
|
|
@echo Generating $@
|
|
|
|
cp -f $< $@
|
|
|
|
chmod +x $@
|
|
|
|
|
|
|
|
CONFIGURE_ENV_ARGS += \
|
|
|
|
MAKE='$(MAKE)' \
|
|
|
|
$(NULL)
|
|
|
|
|
|
|
|
# configure uses the program name to determine @srcdir@. Calling it without
|
|
|
|
# $(TOPSRCDIR) will set @srcdir@ to "."; otherwise, it is set to the full
|
|
|
|
# path of $(TOPSRCDIR).
|
|
|
|
ifeq ($(TOPSRCDIR),$(OBJDIR))
|
|
|
|
CONFIGURE = ./configure
|
|
|
|
else
|
|
|
|
CONFIGURE = $(TOPSRCDIR)/configure
|
|
|
|
endif
|
|
|
|
|
|
|
|
configure:: $(CONFIGURES)
|
|
|
|
$(call BUILDSTATUS,TIERS configure)
|
|
|
|
$(call BUILDSTATUS,TIER_START configure)
|
|
|
|
@echo cd $(OBJDIR);
|
|
|
|
@echo $(CONFIGURE) $(CONFIGURE_ARGS)
|
|
|
|
@cd $(OBJDIR) && $(CONFIGURE_ENV_ARGS) $(CONFIGURE) $(CONFIGURE_ARGS) \
|
|
|
|
|| ( echo '*** Fix above errors and then restart with\
|
|
|
|
"./mach build"' && exit 1 )
|
|
|
|
@touch $(OBJDIR)/Makefile
|
|
|
|
$(call BUILDSTATUS,TIER_FINISH configure)
|
|
|
|
|
1999-03-26 03:03:10 +03:00
|
|
|
####################################
|
|
|
|
# Build it
|
|
|
|
|
2018-10-17 01:21:36 +03:00
|
|
|
build::
|
2017-11-08 03:38:39 +03:00
|
|
|
+$(MOZ_MAKE)
|
1999-03-26 03:03:10 +03:00
|
|
|
|
2016-06-01 01:22:49 +03:00
|
|
|
ifdef MOZ_AUTOMATION
|
2017-11-08 02:08:26 +03:00
|
|
|
build::
|
2017-11-10 10:31:36 +03:00
|
|
|
+$(MOZ_MAKE) automation/build
|
2016-06-01 01:22:49 +03:00
|
|
|
endif
|
|
|
|
|
2009-02-19 20:23:17 +03:00
|
|
|
# This makefile doesn't support parallel execution. It does pass
|
|
|
|
# MOZ_MAKE_FLAGS to sub-make processes, so they will correctly execute
|
|
|
|
# in parallel.
|
|
|
|
.NOTPARALLEL:
|
|
|
|
|
2017-11-02 01:05:50 +03:00
|
|
|
.PHONY: \
|
2020-10-20 00:16:22 +03:00
|
|
|
build \
|
|
|
|
configure
|