Newer
Older
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
# The contents of this file are subject to the Mozilla Public License Version
# 1.1 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
# for the specific language governing rights and limitations under the
# License.

dmose%mozilla.org
committed
# The Original Code is mozilla.org code.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1998
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
# Stephen Lamm

bsmedberg%covad.net
committed
# Benjamin Smedberg <bsmedberg@covad.net>
# Chase Phillips <chase@mozilla.org>

mark%moxienet.com
committed
# Mark Mentovai <mark@moxienet.com>
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.

dmose%mozilla.org
committed
#
# ***** END LICENSE BLOCK *****

bsmedberg%covad.net
committed
# Build a mozilla application.

slamm%netscape.com
committed
# To checkout and build a tree,

slamm%netscape.com
committed
# 1. cvs co mozilla/client.mk
# 2. cd mozilla

bsmedberg%covad.net
committed
# 3. create your .mozconfig file with
# mk_add_options MOZ_CO_PROJECT=
# suite,browser

bsmedberg%covad.net
committed
# 4. gmake -f client.mk
#
# This script will pick up the CVSROOT from the CVS/Root file. If you wish
# to use a different CVSROOT, you must set CVSROOT in your environment:
#

jwatt%jwatt.org
committed
# export CVSROOT=:pserver:anonymous:anonymous@cvs-mirror.mozilla.org:/cvsroot

bsmedberg%covad.net
committed
# export CVSROOT=:pserver:username%somedomain.org@cvs.mozilla.org:/cvsroot
#
# You must specify which products/modules you wish to checkout, with
# MOZ_CO_PROJECT and MOZ_CO_MODULE variables.

bsmedberg%covad.net
committed
#
# MOZ_CO_PROJECT possibilities include the following:
# suite (Seamonkey suite)
# browser (aka Firefox)
# mail (aka Thunderbird)

dougt%meer.net
committed
# minimo (small browser for devices)

bsmedberg%covad.net
committed
# composer (standalone composer, aka NVU)
# calendar (aka Sunbird, use this to build the calendar extensions also)
# xulrunner

benjamin%smedbergs.us
committed
# camino
# tamarin

bsmedberg%covad.net
committed
#
# Other common MOZ_CO_MODULE options include the following:
# mozilla/other-licenses/libart_lgpl

darin%meer.net
committed
# mozilla/other-licenses/bsdiff

bsmedberg%covad.net
committed
# mozilla/tools/codesighs

slamm%netscape.com
committed
# Other targets (gmake -f client.mk [targets...]),

slamm%netscape.com
committed
# checkout
# build
# clean (realclean is now the same as clean)
# distclean

bsmedberg%covad.net
committed
# See http://www.mozilla.org/build/ for more information.

slamm%netscape.com
committed
# Options:

bsmedberg%covad.net
committed
# MOZ_BUILD_PROJECTS - Build multiple projects in subdirectories
# of MOZ_OBJDIR

slamm%netscape.com
committed
# MOZ_OBJDIR - Destination object directory
# MOZ_CO_DATE - Date tag to use for checkout (default: none)

bsmedberg%covad.net
committed
# MOZ_CO_LOCALES_DATE - Date tag to use for locale checkout
# (default: MOZ_CO_DATE)

bsmedberg%covad.net
committed
# MOZ_CO_MODULE - Module to checkout

slamm%netscape.com
committed
# MOZ_CVS_FLAGS - Flags to pass cvs (default: -q -z3)
# MOZ_CO_FLAGS - Flags to pass after 'cvs co' (default: -P)
# MOZ_MAKE_FLAGS - Flags to pass to $(MAKE)

bsmedberg%covad.net
committed
# MOZ_CO_LOCALES - localizations to pull (MOZ_CO_LOCALES="de-DE,pt-BR")
# MOZ_LOCALE_DIRS - directories which contain localizations
# LOCALES_CVSROOT - CVSROOT to use to pull localizations

mark%moxienet.com
committed
# MOZ_PREFLIGHT_ALL } - Makefiles to run before any project in
# MOZ_PREFLIGHT } MOZ_BUILD_PROJECTS, before each project, after
# MOZ_POSTFLIGHT } each project, and after all projects; these
# MOZ_POSTFLIGHT_ALL } variables contain space-separated lists

mark%moxienet.com
committed
# MOZ_UNIFY_BDATE - Set to use the same bdate for each project in
# MOZ_BUILD_PROJECTS

slamm%netscape.com
committed
#

slamm%netscape.com
committed

bsmedberg%covad.net
committed
AVAILABLE_PROJECTS = \

bsmedberg%covad.net
committed
suite \
toolkit \
browser \
mail \

dougt%meer.net
committed
minimo \

bsmedberg%covad.net
committed
composer \
calendar \
xulrunner \

benjamin%smedbergs.us
committed
camino \
tamarin \

bsmedberg%covad.net
committed
$(NULL)

silver%warwickcompsoc.co.uk
committed
# Trailing / on top-level mozilla dir required to stop fast-update thinking
# it is a module name.
MODULES_NS_necko := \

silver%warwickcompsoc.co.uk
committed
mozilla/ \
$(NULL)
MODULES_necko := \
mozilla/README \
mozilla/config \
mozilla/build \
mozilla/intl \
mozilla/modules/libpref \
mozilla/modules/zlib \
mozilla/netwerk \
mozilla/xpcom \
mozilla/tools/test-harness \
$(NULL)
MODULES_NS_core := \
$(MODULES_NS_necko) \

benjamin%smedbergs.us
committed
mozilla/js \
mozilla/js/src \
mozilla/js/jsd \

ajschult%verizon.net
committed
mozilla/db \
$(NULL)

benjamin%smedbergs.us
committed

bsmedberg%covad.net
committed
MODULES_core := \
$(MODULES_necko) \

benjamin%smedbergs.us
committed
mozilla/caps \
mozilla/content \
mozilla/db/mdb \
mozilla/db/mork \
mozilla/docshell \
mozilla/dom \
mozilla/editor \
mozilla/embedding \
mozilla/extensions \
mozilla/gfx \
mozilla/parser \
mozilla/layout \
mozilla/jpeg \
mozilla/js/src/fdlibm \
mozilla/js/src/liveconnect \
mozilla/js/src/xpconnect \
mozilla/js/jsd/idl \
mozilla/modules/libimg \
mozilla/modules/libjar \
mozilla/modules/libpr0n \
mozilla/modules/libreg \
mozilla/modules/libutil \
mozilla/modules/oji \
mozilla/modules/plugin \

benjamin%smedbergs.us
committed
mozilla/modules/staticmod \

benjamin%smedbergs.us
committed
mozilla/plugin/oji \
mozilla/profile \
mozilla/rdf \
mozilla/security/manager \
mozilla/sun-java \

bsmedberg%covad.net
committed
mozilla/ipc/ipcd \
mozilla/modules/libpr0n \

darin%meer.net
committed
mozilla/modules/libmar \
mozilla/modules/libbz2 \

bsmedberg%covad.net
committed
mozilla/accessible \

bzbarsky%mit.edu
committed
mozilla/other-licenses/atk-1.0 \

bsmedberg%covad.net
committed
mozilla/security/manager \

benjamin%smedbergs.us
committed
mozilla/tools/elf-dynstr-gc \
mozilla/uriloader \
mozilla/view \
mozilla/webshell \
mozilla/widget \
mozilla/xpfe \
mozilla/xpinstall \

bsmedberg%covad.net
committed
mozilla/toolkit \
mozilla/storage \
mozilla/db/sqlite3 \
mozilla/db/morkreader \

bsmedberg%covad.net
committed
$(NULL)
LOCALES_necko := \

bsmedberg%covad.net
committed
netwerk \
$(NULL)
LOCALES_core := \
$(LOCALES_necko) \

bsmedberg%covad.net
committed
dom \
$(NULL)
BOOTSTRAP_necko := \

benjamin%smedbergs.us
committed
mozilla/browser/config/version.txt \
mozilla/mail/config/version.txt \
mozilla/calendar/sunbird/config/version.txt \

bugzilla%standard8.demon.co.uk
committed
mozilla/suite/config/version.txt \

benjamin%smedbergs.us
committed
BOOTSTRAP_core := \
$(BOOTSTRAP_necko) \
$(NULL)

benjamin%smedbergs.us
committed
MODULES_NS_toolkit := \
$(MODULES_NS_core) \
$(NULL)

bsmedberg%covad.net
committed
MODULES_toolkit := \

kairo%kairo.at
committed
$(MODULES_core) \

bsmedberg%covad.net
committed
mozilla/chrome \
$(NULL)
LOCALES_toolkit := \

kairo%kairo.at
committed
$(LOCALES_core) \

bsmedberg%covad.net
committed
toolkit \

bsmedberg%covad.net
committed
security/manager \

bsmedberg%covad.net
committed
$(NULL)

benjamin%smedbergs.us
committed
BOOTSTRAP_toolkit := \
$(BOOTSTRAP_core) \
$(NULL)
MODULES_NS_suite := \

bugzilla%standard8.demon.co.uk
committed
$(MODULES_NS_toolkit) \

benjamin%smedbergs.us
committed
$(NULL)

kairo%kairo.at
committed
MODULES_suite := \

bugzilla%standard8.demon.co.uk
committed
$(MODULES_toolkit) \

benjamin%smedbergs.us
committed
mozilla/directory/xpcom \
mozilla/mailnews \
mozilla/themes \

kairo%kairo.at
committed
mozilla/suite \
$(NULL)
LOCALES_suite := \

bugzilla%standard8.demon.co.uk
committed
$(LOCALES_toolkit) \

kairo%kairo.at
committed
suite \
editor/ui \
extensions/reporter \

kairo%kairo.at
committed
$(NULL)

benjamin%smedbergs.us
committed
BOOTSTRAP_suite := \

bugzilla%standard8.demon.co.uk
committed
$(BOOTSTRAP_toolkit) \

benjamin%smedbergs.us
committed
$(NULL)
MODULES_NS_browser := \
$(MODULES_NS_toolkit) \
$(NULL)

bsmedberg%covad.net
committed
MODULES_browser := \
$(MODULES_toolkit) \
mozilla/browser \
mozilla/other-licenses/branding/firefox \
mozilla/other-licenses/7zstub/firefox \
$(NULL)
LOCALES_browser := \
$(LOCALES_toolkit) \

bsmedberg%covad.net
committed
browser \
extensions/reporter \
extensions/spellcheck \

bsmedberg%covad.net
committed
other-licenses/branding/firefox \

bsmedberg%covad.net
committed
$(NULL)

benjamin%smedbergs.us
committed
BOOTSTRAP_browser := \
$(BOOTSTRAP_toolkit) \
mozilla/browser/config/mozconfig \
$(NULL)
MODULES_NS_minimo := \
$(MODULES_NS_toolkit) \
$(NULL)

bsmedberg%covad.net
committed
MODULES_minimo := \
$(MODULES_toolkit) \
mozilla/minimo \
$(NULL)

dougt%meer.net
committed

benjamin%smedbergs.us
committed
BOOTSTRAP_minimo := \
$(BOOTSTRAP_toolkit) \
$(NULL)
MODULES_NS_mail := \
$(MODULES_NS_toolkit) \
$(NULL)

bsmedberg%covad.net
committed
MODULES_mail := \
$(MODULES_toolkit) \

benjamin%smedbergs.us
committed
mozilla/directory/xpcom \
mozilla/mailnews \

bsmedberg%covad.net
committed
mozilla/mail \
mozilla/other-licenses/branding/thunderbird \
mozilla/other-licenses/7zstub/thunderbird \
$(NULL)
LOCALES_mail := \
$(LOCALES_toolkit) \

bsmedberg%covad.net
committed
mail \
other-licenses/branding/thunderbird \

bsmedberg%covad.net
committed
editor/ui \
extensions/spellcheck \

bsmedberg%covad.net
committed
$(NULL)

benjamin%smedbergs.us
committed
BOOTSTRAP_mail := \
$(BOOTSTRAP_toolkit) \
mozilla/mail/config/mozconfig \
$(NULL)

bsmedberg%covad.net
committed
MODULES_composer := \
$(MODULES_toolkit) \
mozilla/composer \
$(NULL)

benjamin%smedbergs.us
committed
MODULES_NS_calendar := \
$(MODULES_NS_toolkit) \
$(NULL)

bsmedberg%covad.net
committed
MODULES_calendar := \
$(MODULES_toolkit) \

shaver%mozilla.org
committed
mozilla/storage \
mozilla/db/sqlite3 \

bsmedberg%covad.net
committed
mozilla/calendar \
mozilla/other-licenses/branding/sunbird \

mattwillis%gmail.com
committed
mozilla/other-licenses/7zstub/sunbird \
$(NULL)
LOCALES_calendar := \
$(LOCALES_toolkit) \
calendar \
other-licenses/branding/sunbird \

bsmedberg%covad.net
committed
$(NULL)

benjamin%smedbergs.us
committed
BOOTSTRAP_calendar := \
$(BOOTSTRAP_toolkit) \
mozilla/calendar/sunbird/config/mozconfig \
$(NULL)
MODULES_NS_xulrunner := \
$(MODULES_NS_toolkit) \
$(NULL)

bsmedberg%covad.net
committed
MODULES_xulrunner := \
$(MODULES_toolkit) \
mozilla/xulrunner \
$(NULL)

axel%pike.org
committed
LOCALES_xulrunner := \
$(LOCALES_toolkit) \
$(NULL)

benjamin%smedbergs.us
committed
BOOTSTRAP_xulrunner := \
$(BOOTSTRAP_toolkit) \
mozilla/xulrunner/config/mozconfig \
$(NULL)

benjamin%smedbergs.us
committed
MODULES_NS_camino := \

benjamin%smedbergs.us
committed
$(MODULES_NS_toolkit) \
$(NULL)

benjamin%smedbergs.us
committed
MODULES_camino := \

kairo%kairo.at
committed
$(MODULES_core) \
mozilla/themes \

bsmedberg%covad.net
committed
$(NULL)

benjamin%smedbergs.us
committed
BOOTSTRAP_camino := \

benjamin%smedbergs.us
committed
$(BOOTSTRAP_toolkit) \
mozilla/camino/config/mozconfig \
$(NULL)
MODULES_tamarin := \
mozilla/js/tamarin \
mozilla/modules/zlib \
$(NULL)
MODULES_all := \
mozilla/other-licenses/bsdiff \
mozilla/other-licenses/libart_lgpl \
mozilla/tools/trace-malloc \
mozilla/tools/jprof \
mozilla/tools/codesighs \
mozilla/tools/update-packaging \
$(NULL)

slamm%netscape.com
committed
#######################################################################
# Checkout Tags
#
# For branches, uncomment the MOZ_CO_TAG line with the proper tag,
# and commit this file on that tag.

bsmedberg%covad.net
committed
#MOZ_CO_TAG = <tag>
NSPR_CO_TAG = NSPRPUB_PRE_4_2_CLIENT_BRANCH
NSS_CO_TAG = NSS_3_11_5_RTM

bugzilla@standard8.demon.co.uk
committed
LDAPCSDK_CO_TAG = LDAPCSDK_6_0_3_CLIENT_BRANCH

bsmedberg%covad.net
committed
LOCALES_CO_TAG =

slamm%netscape.com
committed
#######################################################################
# Defines
#

bsmedberg%covad.net
committed
comma := ,

slamm%netscape.com
committed
CWD := $(shell pwd)

benjamin%smedbergs.us
committed
ifneq (1,$(words $(CWD)))
$(error The mozilla directory cannot be located in a path with spaces.)
endif
ifneq (, $(wildcard client.mk))

slamm%netscape.com
committed
# Ran from mozilla directory
ROOTDIR := $(shell dirname $(CWD))
TOPSRCDIR := $(CWD)

slamm%netscape.com
committed
else

slamm%netscape.com
committed
# Ran from mozilla/.. directory (?)
ROOTDIR := $(CWD)
TOPSRCDIR := $(CWD)/mozilla

slamm%netscape.com
committed
endif
# on os2, TOPSRCDIR may have two forward slashes in a row, which doesn't
# work; replace first instance with one forward slash
TOPSRCDIR := $(shell echo "$(TOPSRCDIR)" | sed -e 's%//%/%')
ifndef TOPSRCDIR_MOZ
TOPSRCDIR_MOZ=$(TOPSRCDIR)
endif
# if ROOTDIR equals only drive letter (i.e. "C:"), set to "/"
DIRNAME := $(shell echo "$(ROOTDIR)" | sed -e 's/^.://')

slamm%netscape.com
committed
AUTOCONF := autoconf
MKDIR := mkdir
SH := /bin/sh

slamm%netscape.com
committed
MAKE := gmake

slamm%netscape.com
committed
endif

mark%moxienet.com
committed
PERL ?= perl

slamm%netscape.com
committed
CONFIG_GUESS_SCRIPT := $(wildcard $(TOPSRCDIR)/build/autoconf/config.guess)
ifdef CONFIG_GUESS_SCRIPT
CONFIG_GUESS = $(shell $(CONFIG_GUESS_SCRIPT))

slamm%netscape.com
committed
else

slamm%netscape.com
committed
_IS_FIRST_CHECKOUT := 1

benjamin%smedbergs.us
committed
####################################
# Sanity checks
ifneq (,$(filter MINGW%,$(shell uname -s)))
# check for CRLF line endings
ifneq (0,$(shell $(PERL) -e 'binmode(STDIN); while (<STDIN>) { if (/\r/) { print "1"; exit } } print "0"' < $(TOPSRCDIR)/client.mk))
$(error This source tree appears to have Windows-style line endings. To \
convert it to Unix-style line endings, run \
"python mozilla/build/win32/mozilla-dos2unix.py")
endif
endif

slamm%netscape.com
committed
####################################
# CVS
# Add the CVS root to CVS_FLAGS if needed

slamm%netscape.com
committed
CVS_ROOT_IN_TREE := $(shell cat $(TOPSRCDIR)/CVS/Root 2>/dev/null)

slamm%netscape.com
committed
ifneq ($(CVS_ROOT_IN_TREE),)
ifneq ($(CVS_ROOT_IN_TREE),$(CVSROOT))

slamm%netscape.com
committed
CVS_FLAGS := -d $(CVS_ROOT_IN_TREE)

slamm%netscape.com
committed
endif

bsmedberg%covad.net
committed
CVS_CO_DATE_FLAGS = $(if $(MOZ_CO_DATE),-D "$(MOZ_CO_DATE)")

bsmedberg%covad.net
committed
CVS_CO_LOCALES_DATE_FLAGS = $(if $(MOZ_CO_LOCALES_DATE),-D "$(MOZ_CO_LOCALES_DATE)")

bsmedberg%covad.net
committed
CVSCO = $(CVS) $(CVS_FLAGS) co $(MOZ_CO_FLAGS) $(if $(MOZ_CO_TAG),-r $(MOZ_CO_TAG)) $(CVS_CO_DATE_FLAGS)

bsmedberg%covad.net
committed

slamm%netscape.com
committed
CVSCO_LOGFILE := $(ROOTDIR)/cvsco.log
CVSCO_LOGFILE := $(shell echo $(CVSCO_LOGFILE) | sed s%//%/%)

slamm%netscape.com
committed
# if LOCALES_CVSROOT is not specified, set it here
# (and let mozconfig override it)

jwatt%jwatt.org
committed
LOCALES_CVSROOT ?= :pserver:anonymous:anonymous@cvs-mirror.mozilla.org:/l10n

slamm%netscape.com
committed
####################################

slamm%netscape.com
committed
# Load mozconfig Options

slamm%netscape.com
committed

bsmedberg%covad.net
committed
# See build pages, http://www.mozilla.org/build/ for how to set up mozconfig.

slamm%netscape.com
committed
MOZCONFIG_LOADER := mozilla/build/autoconf/mozconfig2client-mk
MOZCONFIG_FINDER := mozilla/build/autoconf/mozconfig-find

benjamin%smedbergs.us
committed
MOZCONFIG_MODULES := mozilla/build/unix/uniq.pl

slamm%netscape.com
committed
run_for_side_effects := \
$(shell cd $(ROOTDIR); \

slamm%netscape.com
committed
if test "$(_IS_FIRST_CHECKOUT)"; then \
$(CVSCO) $(MOZCONFIG_FINDER) $(MOZCONFIG_LOADER) $(MOZCONFIG_MODULES); \

slamm%netscape.com
committed
else true; \
fi; \
$(MOZCONFIG_LOADER) $(TOPSRCDIR) mozilla/.mozconfig.mk > mozilla/.mozconfig.out)
include $(TOPSRCDIR)/.mozconfig.mk

slamm%netscape.com
committed

slamm%netscape.com
committed
####################################
# Options that may come from mozconfig

slamm%netscape.com
committed

bsmedberg%covad.net
committed
MOZ_PROJECT_LIST := $(subst $(comma), ,$(MOZ_CO_PROJECT))

benjamin%smedbergs.us
committed
MOZ_PROJECT_LIST := $(subst macbrowser,camino,$(MOZ_PROJECT_LIST))

bsmedberg%covad.net
committed
ifneq (,$(filter-out $(AVAILABLE_PROJECTS),$(MOZ_PROJECT_LIST)))
$(error MOZ_CO_PROJECT contains an unrecognized project.)
endif
ifeq (all,$(filter all,$(MOZ_PROJECT_LIST)))
MOZ_PROJECT_LIST := $(AVAILABLE_PROJECTS)
endif

bsmedberg%covad.net
committed
MOZ_MODULE_LIST := $(subst $(comma), ,$(MOZ_CO_MODULE)) $(foreach project,$(MOZ_PROJECT_LIST),$(MODULES_$(project)))

benjamin%smedbergs.us
committed
MOZ_MODULE_LIST_NS := $(foreach project,$(MOZ_PROJECT_LIST),$(MODULES_NS_$(project)))
LOCALE_DIRS := $(MOZ_LOCALE_DIRS) $(foreach project,$(MOZ_PROJECT_LIST),$(LOCALES_$(project)))
MOZCONFIG_MODULES += $(foreach project,$(MOZ_PROJECT_LIST),$(BOOTSTRAP_$(project)))

bsmedberg%covad.net
committed
# Using $(sort) here because it also removes duplicate entries.
MOZ_MODULE_LIST := $(sort $(MOZ_MODULE_LIST))
LOCALE_DIRS := $(sort $(LOCALE_DIRS))

bryner%brianryner.com
committed
MOZCONFIG_MODULES := $(sort $(MOZCONFIG_MODULES))

slamm%netscape.com
committed
# Change CVS flags if anonymous root is requested
ifdef MOZ_CO_USE_MIRROR

jwatt%jwatt.org
committed
CVS_FLAGS := -d :pserver:anonymous:anonymous@cvs-mirror.mozilla.org:/cvsroot

slamm%netscape.com
committed
endif
# MOZ_CVS_FLAGS - Basic CVS flags
ifeq "$(origin MOZ_CVS_FLAGS)" "undefined"
else
CVS_FLAGS := $(MOZ_CVS_FLAGS)
endif

bsmedberg%covad.net
committed
ifdef MOZ_BUILD_PROJECTS
ifndef MOZ_OBJDIR
$(error When MOZ_BUILD_PROJECTS is set, you must set MOZ_OBJDIR)
endif
ifdef MOZ_CURRENT_PROJECT
OBJDIR = $(MOZ_OBJDIR)/$(MOZ_CURRENT_PROJECT)
MOZ_MAKE = $(MAKE) $(MOZ_MAKE_FLAGS) -C $(OBJDIR)
BUILD_PROJECT_ARG = MOZ_BUILD_APP=$(MOZ_CURRENT_PROJECT)
else
OBJDIR = $(error Cannot find the OBJDIR when MOZ_CURRENT_PROJECT is not set.)
MOZ_MAKE = $(error Cannot build in the OBJDIR when MOZ_CURRENT_PROJECT is not set.)
endif
else # MOZ_BUILD_PROJECTS

slamm%netscape.com
committed
ifdef MOZ_OBJDIR

bsmedberg%covad.net
committed
OBJDIR = $(MOZ_OBJDIR)
MOZ_MAKE = $(MAKE) $(MOZ_MAKE_FLAGS) -C $(OBJDIR)

slamm%netscape.com
committed
else
OBJDIR := $(TOPSRCDIR)

seawood%netscape.com
committed
MOZ_MAKE := $(MAKE) $(MOZ_MAKE_FLAGS)

slamm%netscape.com
committed
endif

bsmedberg%covad.net
committed
endif # MOZ_BUILD_PROJECTS
####################################
# CVS defines for NSS
#

bsmedberg%covad.net
committed
NSS_CO_MODULE = \

benjamin%smedbergs.us
committed
mozilla/dbm \

bsmedberg%covad.net
committed
mozilla/security/nss \
mozilla/security/coreconf \

benjamin%smedbergs.us
committed
mozilla/security/dbm \
$(NULL)

cls%seawood.org
committed
ifdef MOZ_CO_FLAGS
NSS_CO_FLAGS := $(MOZ_CO_FLAGS)
endif

bsmedberg%covad.net
committed
NSS_CO_FLAGS := $(NSS_CO_FLAGS) $(if $(NSS_CO_TAG),-r $(NSS_CO_TAG),-A)

wtchang%redhat.com
committed
# Can only pull the tip or branch tags by date
ifeq (,$(filter-out HEAD %BRANCH,$(NSS_CO_TAG)))
CVSCO_NSS = $(CVS) $(CVS_FLAGS) co $(NSS_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(NSS_CO_MODULE)

wtchang%redhat.com
committed
else
CVSCO_NSS = $(CVS) $(CVS_FLAGS) co $(NSS_CO_FLAGS) $(NSS_CO_MODULE)
####################################
# CVS defines for NSPR

slamm%netscape.com
committed
NSPR_CO_MODULE = mozilla/nsprpub
NSPR_CO_FLAGS := -P

cls%seawood.org
committed
ifdef MOZ_CO_FLAGS
NSPR_CO_FLAGS := $(MOZ_CO_FLAGS)
endif

bsmedberg%covad.net
committed
NSPR_CO_FLAGS := $(NSPR_CO_FLAGS) $(if $(NSPR_CO_TAG),-r $(NSPR_CO_TAG),-A)

wtchang%redhat.com
committed
# Can only pull the tip or branch tags by date
ifeq (,$(filter-out HEAD %BRANCH,$(NSPR_CO_TAG)))
CVSCO_NSPR = $(CVS) $(CVS_FLAGS) co $(NSPR_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(NSPR_CO_MODULE)

wtchang%redhat.com
committed
else
CVSCO_NSPR = $(CVS) $(CVS_FLAGS) co $(NSPR_CO_FLAGS) $(NSPR_CO_MODULE)
endif

dmose%mozilla.org
committed
####################################
# CVS defines for the C LDAP SDK
#

dmose%mozilla.org
committed
LDAPCSDK_CO_MODULE = mozilla/directory/c-sdk

dmose%mozilla.org
committed
LDAPCSDK_CO_FLAGS := -P

cls%seawood.org
committed
ifdef MOZ_CO_FLAGS
LDAPCSDK_CO_FLAGS := $(MOZ_CO_FLAGS)
endif

bsmedberg%covad.net
committed
LDAPCSDK_CO_FLAGS := $(LDAPCSDK_CO_FLAGS) $(if $(LDAPCSDK_CO_TAG),-r $(LDAPCSDK_CO_TAG),-A)

bugzilla@standard8.demon.co.uk
committed
# Can only pull the tip or branch tags by date
ifeq (,$(filter-out HEAD %BRANCH,$(LDAPCSDK_CO_TAG)))
CVSCO_LDAPCSDK = $(CVS) $(CVS_FLAGS) co $(LDAPCSDK_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(LDAPCSDK_CO_MODULE)

bugzilla@standard8.demon.co.uk
committed
else
CVSCO_LDAPCSDK = $(CVS) $(CVS_FLAGS) co $(LDAPCSDK_CO_FLAGS) $(LDAPCSDK_CO_MODULE)
endif

dmose%mozilla.org
committed
####################################

bsmedberg%covad.net
committed
# Error on obsolete variables.
#

bsmedberg%covad.net
committed
ifdef MOZ_MAPINFO

bsmedberg%covad.net
committed
$(warning MOZ_MAPINFO is obsolete, use MOZ_CO_MODULE=mozilla/tools/codesighs instead.)

bsmedberg%covad.net
committed
MOZ_MODULE_LIST += mozilla/tools/codesighs
endif

bsmedberg%covad.net
committed
ifdef MOZ_INTERNAL_LIBART_LGPL
$(error MOZ_INTERNAL_LIBART_LGPL is obsolete, use MOZ_CO_MODULE=mozilla/other-licenses/libart_lgpl instead.)
endif

bryner%netscape.com
committed
ifdef MOZ_PHOENIX

bsmedberg%covad.net
committed
$(warning MOZ_PHOENIX is obsolete.)
MOZ_MODULE_LIST += $(MODULES_browser)
# $(error MOZ_PHOENIX is obsolete, use MOZ_CO_PROJECT=browser and --enable-application=browser)

bryner%netscape.com
committed
endif

scott%scott-macgregor.org
committed
ifdef MOZ_THUNDERBIRD

bsmedberg%covad.net
committed
$(warning MOZ_THUNDERBIRD is obsolete.)
MOZ_MODULE_LIST += $(MODULES_mail)
# $(error MOZ_THUNDERBIRD is obsolete, use MOZ_CO_PROJECT=mail and --enable-application=mail)

scott%scott-macgregor.org
committed
endif

bsmedberg%covad.net
committed
###################################
# Checkout main modules

benjamin%smedbergs.us
committed
# sort is used to remove duplicates.
MOZ_MODULE_LIST := $(sort $(MOZ_MODULE_LIST))
MOZ_MODULE_LIST_NS := $(sort $(MOZ_MODULE_LIST_NS))
####################################
# Suppress standalone modules if they're not needed.
#
CONFIGURES := $(TOPSRCDIR)/configure
ifeq (,$(filter mozilla/xpcom,$(MOZ_MODULE_LIST)))
CVSCO_NSPR :=
else
CONFIGURES += $(TOPSRCDIR)/nsprpub/configure
endif
ifeq (,$(filter mozilla/security/manager,$(MOZ_MODULE_LIST)))
CVSCO_NSS :=
endif
ifeq (,$(filter mozilla/directory/xpcom,$(MOZ_MODULE_LIST)))
CVSCO_LDAPCSDK :=
else
CONFIGURES += $(TOPSRCDIR)/directory/c-sdk/configure
endif

bsmedberg%covad.net
committed
MODULES_CO_FLAGS := -P
ifdef MOZ_CO_FLAGS

bsmedberg%covad.net
committed
MODULES_CO_FLAGS := $(MOZ_CO_FLAGS)
endif

bsmedberg%covad.net
committed
MODULES_CO_FLAGS := $(MODULES_CO_FLAGS) $(if $(MOZ_CO_TAG),-r $(MOZ_CO_TAG),-A)

benjamin%smedbergs.us
committed
CVSCO_MODULES_NS = $(CVS) $(CVS_FLAGS) co $(MODULES_CO_FLAGS) $(CVS_CO_DATE_FLAGS) -l $(MOZ_MODULE_LIST_NS)

scott%scott-macgregor.org
committed

bsmedberg%covad.net
committed
ifeq (,$(strip $(MOZ_MODULE_LIST)))

bsmedberg%covad.net
committed
FASTUPDATE_MODULES = $(error No modules or projects were specified. Use MOZ_CO_PROJECT to specify a project for checkout.)
CHECKOUT_MODULES = $(error No modules or projects were specified. Use MOZ_CO_PROJECT to specify a project for checkout.)
else

bsmedberg%covad.net
committed
FASTUPDATE_MODULES := fast_update $(CVS) $(CVS_FLAGS) co $(MODULES_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(MOZ_MODULE_LIST)

benjamin%smedbergs.us
committed
CHECKOUT_MODULES := cvs_co $(CVS) $(CVS_FLAGS) co $(MODULES_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(MOZ_MODULE_LIST);

bsmedberg%covad.net
committed
endif

benjamin%smedbergs.us
committed
ifeq (,$(MOZ_MODULE_LIST_NS))

bsmedberg%covad.net
committed
FASTUPDATE_MODULES_NS := true
CHECKOUT_MODULES_NS := true

ajschult%verizon.net
committed
FASTUPDATE_MODULES_NS := fast_update $(CVSCO_MODULES_NS)

bsmedberg%covad.net
committed
CHECKOUT_MODULES_NS := cvs_co $(CVSCO_MODULES_NS)
###################################
# CVS defines for locales
#

bsmedberg%covad.net
committed
LOCALES_CO_FLAGS := -P
ifdef MOZ_CO_FLAGS
LOCALES_CO_FLAGS := $(MOZ_CO_FLAGS)
endif

bsmedberg%covad.net
committed
LOCALES_CO_FLAGS := $(LOCALES_CO_FLAGS) $(if $(LOCALES_CO_TAG),-r $(LOCALES_CO_TAG),-A)
ifndef MOZ_CO_LOCALES
FASTUPDATE_LOCALES := true
CHECKOUT_LOCALES := true
else

bsmedberg%covad.net
committed
override MOZ_CO_LOCALES := $(subst $(comma), ,$(MOZ_CO_LOCALES))
ifeq (all,$(MOZ_CO_LOCALES))

bsmedberg%covad.net
committed
MOZCONFIG_MODULES += $(foreach project,$(MOZ_PROJECT_LIST),mozilla/$(project)/locales/all-locales)

bsmedberg%covad.net
committed
LOCALE_CO_DIRS := $(sort $(foreach project,$(MOZ_PROJECT_LIST),$(foreach locale,$(shell cat mozilla/$(project)/locales/all-locales),$(foreach dir,$(LOCALES_$(project)),l10n/$(locale)/$(dir)))))

bsmedberg%covad.net
committed
else # MOZ_CO_LOCALES != all

axel%pike.org
committed
LOCALE_CO_DIRS = $(sort $(foreach locale,$(MOZ_CO_LOCALES),$(foreach dir,$(LOCALE_DIRS),l10n/$(locale)/$(dir))))

bsmedberg%covad.net
committed
endif

bsmedberg%covad.net
committed
CVSCO_LOCALES := $(CVS) $(CVS_FLAGS) -d $(LOCALES_CVSROOT) co $(LOCALES_CO_FLAGS) $(CVS_CO_LOCALES_DATE_FLAGS) $(LOCALE_CO_DIRS)
FASTUPDATE_LOCALES := fast_update $(CVSCO_LOCALES)
CHECKOUT_LOCALES := cvs_co $(CVSCO_LOCALES)
endif #MOZ_CO_LOCALES

slamm%netscape.com
committed
#######################################################################

slamm%netscape.com
committed
# Rules
# Print out any options loaded from mozconfig.
all build checkout clean depend distclean export libs install realclean::
@if test -f .mozconfig.out; then \
cat .mozconfig.out; \
rm -f .mozconfig.out; \
else true; \
fi

slamm%netscape.com
committed
ifdef _IS_FIRST_CHECKOUT
all:: checkout build

slamm%netscape.com
committed
else

seawood%netscape.com
committed
all:: checkout alldep

slamm%netscape.com
committed
endif
# Windows equivalents

slamm%netscape.com
committed
pull_all: checkout
build_all: build

seawood%netscape.com
committed
build_all_dep: alldep
build_all_depend: alldep

slamm%netscape.com
committed
clobber clobber_all: clean
pull_and_build_all: checkout alldep
# Do everything from scratch

slamm%netscape.com
committed
everything: checkout clean build

slamm%netscape.com
committed
####################################

slamm%netscape.com
committed
@if test -f $(CVSCO_LOGFILE) ; then \
mv $(CVSCO_LOGFILE) $(CVSCO_LOGFILE).old; \
else true; \
fi
ifdef RUN_AUTOCONF_LOCALLY
@echo "Removing local configures" ; \
cd $(ROOTDIR) && \
endif

slamm%netscape.com
committed
@echo "checkout start: "`date` | tee $(CVSCO_LOGFILE)
@echo '$(CVSCO) $(CVS_CO_DATE_FLAGS) mozilla/client.mk $(MOZCONFIG_MODULES)'; \

seawood%netscape.com
committed
cd $(ROOTDIR) && \
$(CVSCO) $(CVS_CO_DATE_FLAGS) mozilla/client.mk $(MOZCONFIG_MODULES)

seawood%netscape.com
committed
@cd $(ROOTDIR) && $(MAKE) -f mozilla/client.mk real_checkout

slamm%netscape.com
committed
# Start the checkout. Split the output to the tty and a log file.

slamm%netscape.com
committed
real_checkout:
@set -e; \
cvs_co() { set -e; echo "$$@" ; \
"$$@" 2>&1 | tee -a $(CVSCO_LOGFILE); }; \
cvs_co $(CVSCO_NSPR); \
cvs_co $(CVSCO_NSS); \
cvs_co $(CVSCO_LDAPCSDK); \

bsmedberg%covad.net
committed
$(CHECKOUT_MODULES_NS); \

benjamin%smedbergs.us
committed
$(CHECKOUT_MODULES) \

slamm%netscape.com
committed
@echo "checkout finish: "`date` | tee -a $(CVSCO_LOGFILE)
# update the NSS checkout timestamp, if we checked PSM out
@if test -d $(TOPSRCDIR)/security/manager -a \
`egrep -c '^(U|C) mozilla/security/(nss|coreconf)' $(CVSCO_LOGFILE) 2>/dev/null` != 0; then \

bryner%netscape.com
committed
touch $(TOPSRCDIR)/security/manager/.nss.checkout; \
fi

neil@parkwaycc.co.uk
committed
ifdef RUN_AUTOCONF_LOCALLY
cd $(ROOTDIR) && \

neil@parkwaycc.co.uk
committed
endif
# @: Check the log for conflicts. ;
@conflicts=`egrep "^C " $(CVSCO_LOGFILE)` ;\
if test "$$conflicts" ; then \
echo "$(MAKE): *** Conflicts during checkout." ;\
echo "$$conflicts" ;\
echo "$(MAKE): Refer to $(CVSCO_LOGFILE) for full log." ;\

slamm%netscape.com
committed
false; \
else true; \
fi

slamm%netscape.com
committed
# @: Backup the last checkout log.
@if test -f $(CVSCO_LOGFILE) ; then \
mv $(CVSCO_LOGFILE) $(CVSCO_LOGFILE).old; \
else true; \
fi
ifdef RUN_AUTOCONF_LOCALLY
@echo "Removing local configures" ; \
cd $(ROOTDIR) && \
endif
@echo "checkout start: "`date` | tee $(CVSCO_LOGFILE)

seawood%netscape.com
committed
@echo '$(CVSCO) mozilla/client.mk $(MOZCONFIG_MODULES)'; \

seawood%netscape.com
committed
cd $(ROOTDIR) && \

seawood%netscape.com
committed
$(CVSCO) mozilla/client.mk $(MOZCONFIG_MODULES)

seawood%netscape.com
committed
@cd $(TOPSRCDIR) && \
$(MAKE) -f client.mk real_fast-update
# Start the update. Split the output to the tty and a log file.
fast_update() { set -e; config/cvsco-fast-update.pl $$@ 2>&1 | tee -a $(CVSCO_LOGFILE); }; \
cvs_co() { set -e; echo "$$@" ; \
"$$@" 2>&1 | tee -a $(CVSCO_LOGFILE); }; \
fast_update $(CVSCO_NSPR); \
cd $(ROOTDIR); \
cvs_co $(CVSCO_NSS); \
cd mozilla; \
fast_update $(CVSCO_LDAPCSDK); \

bsmedberg%covad.net
committed
$(FASTUPDATE_MODULES); \
$(FASTUPDATE_MODULES_NS); \
$(FASTUPDATE_LOCALES);
@echo "fast_update finish: "`date` | tee -a $(CVSCO_LOGFILE)

bryner%netscape.com
committed
# update the NSS checkout timestamp
@if test `egrep -c '^(U|C) mozilla/security/(nss|coreconf)' $(CVSCO_LOGFILE) 2>/dev/null` != 0; then \
touch $(TOPSRCDIR)/security/manager/.nss.checkout; \

bryner%netscape.com
committed
fi

neil@parkwaycc.co.uk
committed
ifdef RUN_AUTOCONF_LOCALLY
cd $(ROOTDIR) && \

neil@parkwaycc.co.uk
committed
endif
# @: Check the log for conflicts. ;
@conflicts=`egrep "^C " $(CVSCO_LOGFILE)` ;\
if test "$$conflicts" ; then \
echo "$(MAKE): *** Conflicts during fast-update." ;\
echo "$$conflicts" ;\
echo "$(MAKE): Refer to $(CVSCO_LOGFILE) for full log." ;\
false; \
else true; \
fi
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
CVSCO_LOGFILE_L10N := $(ROOTDIR)/cvsco-l10n.log
CVSCO_LOGFILE_L10N := $(shell echo $(CVSCO_LOGFILE_L10N) | sed s%//%/%)
l10n-checkout:
# @: Backup the last checkout log.
@if test -f $(CVSCO_LOGFILE_L10N) ; then \
mv $(CVSCO_LOGFILE_L10N) $(CVSCO_LOGFILE_L10N).old; \
else true; \
fi
@echo "checkout start: "`date` | tee $(CVSCO_LOGFILE_L10N)
@echo '$(CVSCO) $(CVS_CO_DATE_FLAGS) mozilla/client.mk $(MOZCONFIG_MODULES)'; \
cd $(ROOTDIR) && \
$(CVSCO) $(CVS_CO_DATE_FLAGS) mozilla/client.mk $(MOZCONFIG_MODULES)
@cd $(ROOTDIR) && $(MAKE) -f mozilla/client.mk real_l10n-checkout
EN_US_CO_DIRS := $(sort $(foreach dir,$(LOCALE_DIRS),mozilla/$(dir)/locales)) \
$(foreach mod,$(MOZ_PROJECT_LIST),mozilla/$(mod)/config) \
mozilla/client.mk \
$(MOZCONFIG_MODULES) \
mozilla/configure \
mozilla/configure.in \
mozilla/allmakefiles.sh \
mozilla/build \
mozilla/config \
$(NULL)
EN_US_CO_FILES_NS := \
mozilla/toolkit/mozapps/installer \
$(NULL)
# Start the checkout. Split the output to the tty and a log file.
real_l10n-checkout:
@set -e; \
cvs_co() { set -e; echo "$$@" ; \
"$$@" 2>&1 | tee -a $(CVSCO_LOGFILE_L10N); }; \
cvs_co $(CVS) $(CVS_FLAGS) co $(MODULES_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(EN_US_CO_DIRS); \
cvs_co $(CVS) $(CVS_FLAGS) co $(MODULES_CO_FLAGS) $(CVS_CO_DATE_FLAGS) -l $(EN_US_CO_FILES_NS); \
cvs_co $(CVSCO_LOCALES)
@echo "checkout finish: "`date` | tee -a $(CVSCO_LOGFILE_L10N)
# @: Check the log for conflicts. ;
@conflicts=`egrep "^C " $(CVSCO_LOGFILE_L10N)` ;\
if test "$$conflicts" ; then \
echo "$(MAKE): *** Conflicts during checkout." ;\
echo "$$conflicts" ;\
echo "$(MAKE): Refer to $(CVSCO_LOGFILE_L10N) for full log." ;\
false; \
else true; \
fi

slamm%netscape.com
committed
#####################################################
# First Checkout

slamm%netscape.com
committed
ifdef _IS_FIRST_CHECKOUT

slamm%netscape.com
committed
# First time, do build target in a new process to pick up new files.

akkana%netscape.com
committed
$(MAKE) -f $(TOPSRCDIR)/client.mk build

slamm%netscape.com
committed
else

slamm%netscape.com
committed
#####################################################
# After First Checkout

mark%moxienet.com
committed
#####################################################
# Build date unification
ifdef MOZ_UNIFY_BDATE
ifndef MOZ_BUILD_DATE
ifdef MOZ_BUILD_PROJECTS
MOZ_BUILD_DATE = $(shell $(PERL) -I$(TOPSRCDIR)/config $(TOPSRCDIR)/config/bdate.pl)
export MOZ_BUILD_DATE
endif
endif
endif

mark%moxienet.com
committed
#####################################################
# Preflight, before building any project
build profiledbuild alldep preflight_all::
ifeq (,$(MOZ_CURRENT_PROJECT)$(if $(MOZ_PREFLIGHT_ALL),,1))
# Don't run preflight_all for individual projects in multi-project builds
# (when MOZ_CURRENT_PROJECT is set.)
ifndef MOZ_BUILD_PROJECTS
# Building a single project, OBJDIR is usable.
set -e; \
for mkfile in $(MOZ_PREFLIGHT_ALL); do \

benjamin%smedbergs.us
committed
$(MAKE) -f $(TOPSRCDIR)/$$mkfile preflight_all TOPSRCDIR=$(TOPSRCDIR) OBJDIR=$(OBJDIR) MOZ_OBJDIR=$(MOZ_OBJDIR); \

mark%moxienet.com
committed
done
else
# OBJDIR refers to the project-specific OBJDIR, which is not available at
# this point when building multiple projects. Only MOZ_OBJDIR is available.
set -e; \
for mkfile in $(MOZ_PREFLIGHT_ALL); do \

benjamin%smedbergs.us
committed
$(MAKE) -f $(TOPSRCDIR)/$$mkfile preflight_all TOPSRCDIR=$(TOPSRCDIR) MOZ_OBJDIR=$(MOZ_OBJDIR) MOZ_BUILD_PROJECTS="$(MOZ_BUILD_PROJECTS)"; \

mark%moxienet.com
committed
done
endif
endif

bsmedberg%covad.net
committed
# If we're building multiple projects, but haven't specified which project,
# loop through them.
ifeq (,$(MOZ_CURRENT_PROJECT)$(if $(MOZ_BUILD_PROJECTS),,1))

mark%moxienet.com
committed
configure depend build profiledbuild install export libs clean realclean distclean alldep preflight postflight::

bsmedberg%covad.net
committed
set -e; \
for app in $(MOZ_BUILD_PROJECTS); do \
$(MAKE) -f $(TOPSRCDIR)/client.mk $@ MOZ_CURRENT_PROJECT=$$app; \
done
else

slamm%netscape.com
committed

mark%moxienet.com
committed
# MOZ_CURRENT_PROJECT: either doing a single-project build, or building an
# individual project in a multi-project build.

slamm%netscape.com
committed
####################################

slamm%netscape.com
committed
# Configure

bsmedberg%covad.net
committed
CONFIG_STATUS = $(wildcard $(OBJDIR)/config.status)
CONFIG_CACHE = $(wildcard $(OBJDIR)/config.cache)

slamm%netscape.com
committed
ifdef RUN_AUTOCONF_LOCALLY

slamm%netscape.com
committed
EXTRA_CONFIG_DEPS := \

slamm%netscape.com
committed
$(TOPSRCDIR)/aclocal.m4 \
$(wildcard $(TOPSRCDIR)/build/autoconf/*.m4) \

slamm%netscape.com
committed
$(NULL)

slamm%netscape.com
committed
$(TOPSRCDIR)/configure: $(TOPSRCDIR)/configure.in $(EXTRA_CONFIG_DEPS)
@echo Generating $@ using autoconf

slamm%netscape.com
committed
cd $(TOPSRCDIR); $(AUTOCONF)