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
#
# 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 *****

slamm%netscape.com
committed
# This needs CVSROOT set to work, e.g.,
# setenv CVSROOT :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
# or
# setenv CVSROOT :pserver:username%somedomain.org@cvs.mozilla.org:/cvsroot

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

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

slamm%netscape.com
committed
# 3. gmake -f client.mk

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

slamm%netscape.com
committed
# See http://www.mozilla.org/build/unix.html for more information.

slamm%netscape.com
committed
# Options:

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

slamm%netscape.com
committed
# MOZ_CO_MODULE - Module to checkout (default: SeaMonkeyAll)

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)

timeless%mac.com
committed
# MOZ_CO_BRANCH - Branch tag (Deprecated. Use MOZ_CO_TAG below.)
# MOZ_CO_LOCALES - localizations to pull (MOZ_CO_LOCALES="de-DE pt-BR")
# LOCALES_CVSROOT - CVSROOT to use to pull localizations

slamm%netscape.com
committed
#

slamm%netscape.com
committed

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.
NSPR_CO_TAG = NSPRPUB_PRE_4_2_CLIENT_BRANCH
PSM_CO_TAG = #We will now build PSM from the tip instead of a branch.
NSS_CO_TAG = NSS_CLIENT_TAG

dmose%netscape.com
committed
LDAPCSDK_CO_TAG = ldapcsdk_50_client_branch

pavlov%netscape.com
committed
IMGLIB2_CO_TAG =
TOOLKIT_CO_TAG =
BROWSER_CO_TAG =
MAIL_CO_TAG =

daniel%glazman.org
committed
STANDALONE_COMPOSER_CO_TAG =
LOCALES_CO_TAG =
BUILD_MODULES = all

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

slamm%netscape.com
committed
CWD := $(shell pwd)
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

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

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
CVSCO = $(strip $(CVS) $(CVS_FLAGS) co $(CVS_CO_FLAGS))

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

slamm%netscape.com
committed

slamm%netscape.com
committed
ifdef MOZ_CO_TAG

cls%seawood.org
committed
CVS_CO_FLAGS := -r $(MOZ_CO_TAG)

slamm%netscape.com
committed
endif
# if LOCALES_CVSROOT is not specified, set it here
# (and let mozconfig override it)
LOCALES_CVSROOT ?= :pserver:anonymous@cvs-mirror.mozilla.org:/l10n

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

slamm%netscape.com
committed
# Load mozconfig Options

slamm%netscape.com
committed

slamm%netscape.com
committed
# See build pages, http://www.mozilla.org/build/unix.html,
# for how to set up mozconfig.

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

seawood%netscape.com
committed
MOZCONFIG_MODULES := mozilla/build/unix/modules.mk 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
include $(TOPSRCDIR)/build/unix/modules.mk

slamm%netscape.com
committed

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

slamm%netscape.com
committed

slamm%netscape.com
committed
# Change CVS flags if anonymous root is requested
ifdef MOZ_CO_USE_MIRROR
CVS_FLAGS := -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
endif
# MOZ_CVS_FLAGS - Basic CVS flags
ifeq "$(origin MOZ_CVS_FLAGS)" "undefined"
else
CVS_FLAGS := $(MOZ_CVS_FLAGS)
endif

timeless%mac.com
committed
# This option is deprecated. The best way to have client.mk pull a tag

slamm%netscape.com
committed
# is to set MOZ_CO_TAG (see above) and commit that change on the tag.
ifdef MOZ_CO_BRANCH

cls%seawood.org
committed
$(warning Use MOZ_CO_TAG instead of MOZ_CO_BRANCH)
CVS_CO_FLAGS := -r $(MOZ_CO_BRANCH)

slamm%netscape.com
committed
endif
# MOZ_CO_FLAGS - Anything that we should use on all checkouts
ifeq "$(origin MOZ_CO_FLAGS)" "undefined"

slamm%netscape.com
committed
CVS_CO_FLAGS := $(CVS_CO_FLAGS) -P

slamm%netscape.com
committed
CVS_CO_FLAGS := $(CVS_CO_FLAGS) $(MOZ_CO_FLAGS)
ifdef MOZ_CO_DATE
CVS_CO_DATE_FLAGS := -D "$(MOZ_CO_DATE)"
endif

slamm%netscape.com
committed
ifdef MOZ_OBJDIR
OBJDIR := $(MOZ_OBJDIR)

seawood%netscape.com
committed
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
####################################
# CVS defines for PSM
#

seawood%netscape.com
committed
PSM_CO_MODULE= mozilla/security/manager

cls%seawood.org
committed
ifdef MOZ_CO_FLAGS
PSM_CO_FLAGS := $(MOZ_CO_FLAGS)
endif
ifdef PSM_CO_TAG
PSM_CO_FLAGS := $(PSM_CO_FLAGS) -r $(PSM_CO_TAG)
endif
CVSCO_PSM = $(CVS) $(CVS_FLAGS) co $(PSM_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(PSM_CO_MODULE)
####################################
# CVS defines for NSS
#
NSS_CO_MODULE = mozilla/security/nss \
mozilla/security/coreconf \
$(NULL)

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

cls%seawood.org
committed
# Cannot pull static tags by date
ifeq ($(NSS_CO_TAG),NSS_CLIENT_TAG)
CVSCO_NSS = $(CVS) $(CVS_FLAGS) co $(NSS_CO_FLAGS) $(NSS_CO_MODULE)
else
CVSCO_NSS = $(CVS) $(CVS_FLAGS) co $(NSS_CO_FLAGS) $(CVS_CO_DATE_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
ifdef NSPR_CO_TAG
NSPR_CO_FLAGS := $(NSPR_CO_FLAGS) -r $(NSPR_CO_TAG)
endif
# Cannot pull static tags by date
ifeq ($(NSPR_CO_TAG),NSPRPUB_CLIENT_TAG)
CVSCO_NSPR = $(CVS) $(CVS_FLAGS) co $(NSPR_CO_FLAGS) $(NSPR_CO_MODULE)
else
CVSCO_NSPR = $(CVS) $(CVS_FLAGS) co $(NSPR_CO_FLAGS) $(CVS_CO_DATE_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

dmose%mozilla.org
committed
ifdef LDAPCSDK_CO_TAG
LDAPCSDK_CO_FLAGS := $(LDAPCSDK_CO_FLAGS) -r $(LDAPCSDK_CO_TAG)
endif
CVSCO_LDAPCSDK = $(CVS) $(CVS_FLAGS) co $(LDAPCSDK_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(LDAPCSDK_CO_MODULE)

dmose%mozilla.org
committed
####################################
# CVS defines for the C LDAP SDK
#
ACCESSIBLE_CO_MODULE = mozilla/accessible
ACCESSIBLE_CO_FLAGS := -P

cls%seawood.org
committed
ifdef MOZ_CO_FLAGS
ACCESSIBLE_CO_FLAGS := $(MOZ_CO_FLAGS)
endif
ifdef ACCESSIBLE_CO_TAG
ACCESSIBLE_CO_FLAGS := $(ACCESSIBLE_CO_FLAGS) -r $(ACCESSIBLE_CO_TAG)
endif
CVSCO_ACCESSIBLE = $(CVS) $(CVS_FLAGS) co $(ACCESSIBLE_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(ACCESSIBLE_CO_MODULE)

pavlov%netscape.com
committed
####################################
# CVS defines for new image library
#
IMGLIB2_CO_MODULE = mozilla/modules/libpr0n
IMGLIB2_CO_FLAGS := -P

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

pavlov%netscape.com
committed
ifdef IMGLIB2_CO_TAG
IMGLIB2_CO_FLAGS := $(IMGLIB2_CO_FLAGS) -r $(IMGLIB2_CO_TAG)
endif
CVSCO_IMGLIB2 = $(CVS) $(CVS_FLAGS) co $(IMGLIB2_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(IMGLIB2_CO_MODULE)

pavlov%netscape.com
committed

ccarlen%netscape.com
committed
####################################
# CVS defines for ipc module
#
IPC_CO_MODULE = mozilla/ipc/ipcd
IPC_CO_FLAGS := -P -A

ccarlen%netscape.com
committed
ifdef MOZ_CO_FLAGS
IPC_CO_FLAGS := $(MOZ_CO_FLAGS)
endif
ifdef IPC_CO_TAG
IPC_CO_FLAGS := $(IPC_CO_FLAGS) -r $(IPC_CO_TAG)
endif
CVSCO_IPC = $(CVS) $(CVS_FLAGS) co $(IPC_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(IPC_CO_MODULE)
####################################
# CVS defines for Calendar
#
CVSCO_CALENDAR := $(CVSCO) $(CVS_CO_DATE_FLAGS) mozilla/calendar mozilla/other-licenses/libical

seawood%netscape.com
committed
####################################
# CVS defines for SeaMonkey
#
ifeq ($(MOZ_CO_MODULE),)
MOZ_CO_MODULE := SeaMonkeyAll
endif
CVSCO_SEAMONKEY := $(CVSCO) $(CVS_CO_DATE_FLAGS) $(MOZ_CO_MODULE)
####################################
# CVS defines for standalone modules
#

seawood%netscape.com
committed
ifeq ($(BUILD_MODULES),all)
CHECKOUT_STANDALONE := true
CHECKOUT_STANDALONE_NOSUBDIRS := true
else
STANDALONE_CO_MODULE := $(filter-out $(NSPRPUB_DIR) security directory/c-sdk, $(BUILD_MODULE_CVS))
STANDALONE_CO_MODULE += allmakefiles.sh client.mk aclocal.m4 configure configure.in
STANDALONE_CO_MODULE += Makefile.in
STANDALONE_CO_MODULE := $(addprefix mozilla/, $(STANDALONE_CO_MODULE))
CHECKOUT_STANDALONE := cvs_co $(CVSCO) $(CVS_CO_DATE_FLAGS) $(STANDALONE_CO_MODULE)

cls%seawood.org
committed
NOSUBDIRS_MODULE := $(addprefix mozilla/, $(BUILD_MODULE_CVS_NS))
ifneq ($(NOSUBDIRS_MODULE),)

seawood%netscape.com
committed
CHECKOUT_STANDALONE_NOSUBDIRS := cvs_co $(CVSCO) -l $(CVS_CO_DATE_FLAGS) $(NOSUBDIRS_MODULE)
else
CHECKOUT_STANDALONE_NOSUBDIRS := true
endif

cls%seawood.org
committed

seawood%netscape.com
committed
CVSCO_SEAMONKEY :=

cls%seawood.org
committed
ifeq (,$(filter $(NSPRPUB_DIR), $(BUILD_MODULE_CVS)))
CVSCO_NSPR :=
endif
ifeq (,$(filter security security/manager, $(BUILD_MODULE_CVS)))
CVSCO_PSM :=
endif

cls%seawood.org
committed
ifeq (,$(filter directory/c-sdk, $(BUILD_MODULE_CVS)))

dmose%mozilla.org
committed
CVSCO_LDAPCSDK :=
endif
ifeq (,$(filter accessible, $(BUILD_MODULE_CVS)))
CVSCO_ACCESSIBLE :=
endif

pavlov%netscape.com
committed
ifeq (,$(filter modules/libpr0n, $(BUILD_MODULE_CVS)))
CVSCO_IMGLIB2 :=
endif
ifeq (,$(filter ipc, $(BUILD_MODULE_CVS)))
CVSCO_IPC :=
endif
ifeq (,$(filter calendar other-licenses/libical, $(BUILD_MODULE_CVS)))
CVSCO_CALENDAR :=
endif
####################################
# CVS defined for libart (pulled and built if MOZ_INTERNAL_LIBART_LGPL is set)
#
CVSCO_LIBART := $(CVSCO) $(CVS_CO_DATE_FLAGS) mozilla/other-licenses/libart_lgpl
ifdef MOZ_INTERNAL_LIBART_LGPL
FASTUPDATE_LIBART := fast_update $(CVSCO_LIBART)
CHECKOUT_LIBART := cvs_co $(CVSCO_LIBART)
else
CHECKOUT_LIBART := true
FASTUPDATE_LIBART := true
endif

bryner%netscape.com
committed
####################################
# CVS defines for Phoenix (pulled and built if MOZ_PHOENIX is set)
#
BROWSER_CO_FLAGS := -P
ifdef MOZ_CO_FLAGS
BROWSER_CO_FLAGS := $(MOZ_CO_FLAGS)
endif
ifdef BROWSER_CO_TAG
BROWSER_CO_FLAGS := $(BROWSER_CO_FLAGS) -r $(BROWSER_CO_TAG)
endif
BROWSER_CO_DIRS := mozilla/browser mozilla/other-licenses/branding/firefox mozilla/other-licenses/7zstub/firefox

ben%bengoodger.com
committed
CVSCO_PHOENIX := $(CVS) $(CVS_FLAGS) co $(BROWSER_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(BROWSER_CO_DIRS)

bryner%netscape.com
committed
ifdef MOZ_PHOENIX
FASTUPDATE_PHOENIX := fast_update $(CVSCO_PHOENIX)
CHECKOUT_PHOENIX := cvs_co $(CVSCO_PHOENIX)

scott%scott-macgregor.org
committed
MOZ_XUL_APP = 1
LOCALE_DIRS += mozilla/browser/locales

bryner%netscape.com
committed
else
CHECKOUT_PHOENIX := true
FASTUPDATE_PHOENIX := true
endif

scott%scott-macgregor.org
committed
####################################
# CVS defines for Thunderbird (pulled and built if MOZ_THUNDERBIRD is set)
#
MAIL_CO_FLAGS := -P
ifdef MOZ_CO_FLAGS
MAIL_CO_FLAGS := $(MOZ_CO_FLAGS)
endif
ifdef MAIL_CO_TAG
MAIL_CO_FLAGS := $(MAIL_CO_FLAGS) -r $(MAIL_CO_TAG)
endif
MAIL_CO_DIRS := mozilla/mail mozilla/other-licenses/branding/thunderbird mozilla/other-licenses/7zstub/thunderbird

scott%scott-macgregor.org
committed
CVSCO_THUNDERBIRD := $(CVS) $(CVS_FLAGS) co $(MAIL_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(MAIL_CO_DIRS)

scott%scott-macgregor.org
committed
ifdef MOZ_THUNDERBIRD
FASTUPDATE_THUNDERBIRD := fast_update $(CVSCO_THUNDERBIRD)
CHECKOUT_THUNDERBIRD := cvs_co $(CVSCO_THUNDERBIRD)
MOZ_XUL_APP = 1
LOCALE_DIRS += mozilla/mail/locales

scott%scott-macgregor.org
committed
else
FASTUPDATE_THUNDERBIRD := true
CHECKOUT_THUNDERBIRD := true
endif

daniel%glazman.org
committed
####################################
# CVS defines for Standalone Composer (pulled and built if MOZ_STANDALONE_COMPOSER is set)
#
STANDALONE_COMPOSER_CO_FLAGS := -P
ifdef MOZ_CO_FLAGS
STANDALONE_COMPOSER_CO_FLAGS := $(MOZ_CO_FLAGS)
endif
ifdef STANDALONE_COMPOSER_CO_TAG
STANDALONE_COMPOSER_CO_FLAGS := $(STANDALONE_COMPOSER_CO_FLAGS) -r $(STANDALONE_COMPOSER_CO_TAG)
endif
CVSCO_STANDALONE_COMPOSER := $(CVS) $(CVS_FLAGS) co $(STANDALONE_COMPOSER_CO_FLAGS) $(CVS_CO_DATE_FLAGS) mozilla/composer
ifdef MOZ_STANDALONE_COMPOSER
FASTUPDATE_STANDALONE_COMPOSER:= fast_update $(CVSCO_STANDALONE_COMPOSER)
CHECKOUT_STANDALONE_COMPOSER:= cvs_co $(CVSCO_STANDALONE_COMPOSER)
MOZ_XUL_APP = 1
LOCALE_DIRS += mozilla/composer/locales

daniel%glazman.org
committed
else
FASTUPDATE_STANDALONE_COMPOSER:= true
CHECKOUT_STANDALONE_COMPOSER:= true
endif
####################################
# CVS defines for Sunbird (pulled and built if MOZ_SUNBIRD is set)
#
ifdef MOZ_SUNBIRD
MOZ_XUL_APP = 1
endif

scott%scott-macgregor.org
committed
####################################

bryner%brianryner.com
committed
# CVS defines for mozilla/toolkit

scott%scott-macgregor.org
committed
#
TOOLKIT_CO_FLAGS := -P
ifdef MOZ_CO_FLAGS
TOOLKIT_CO_FLAGS := $(MOZ_CO_FLAGS)
endif
ifdef TOOLKIT_CO_TAG
TOOLKIT_CO_FLAGS := $(TOOLKIT_CO_FLAGS) -r $(TOOLKIT_CO_TAG)
endif
CVSCO_MOZTOOLKIT := $(CVS) $(CVS_FLAGS) co $(TOOLKIT_CO_FLAGS) $(CVS_CO_DATE_FLAGS) mozilla/toolkit mozilla/chrome mozilla/xulrunner

scott%scott-macgregor.org
committed
FASTUPDATE_MOZTOOLKIT := fast_update $(CVSCO_MOZTOOLKIT)
CHECKOUT_MOZTOOLKIT := cvs_co $(CVSCO_MOZTOOLKIT)
LOCALE_DIRS += mozilla/toolkit/locales

scott%scott-macgregor.org
committed
####################################
# CVS defines for codesighs (pulled and built if MOZ_MAPINFO is set)
#
CVSCO_CODESIGHS := $(CVSCO) $(CVS_CO_DATE_FLAGS) mozilla/tools/codesighs
ifdef MOZ_MAPINFO
FASTUPDATE_CODESIGHS := fast_update $(CVSCO_CODESIGHS)
CHECKOUT_CODESIGHS := cvs_co $(CVSCO_CODESIGHS)
else
CHECKOUT_CODESIGHS := true
FASTUPDATE_CODESIGHS := true
endif
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
###################################
# CVS defines for locales
#
LOCALES_CO_FLAGS := -P
ifdef LOCALES_CO_TAG
LOCALES_CO_FLAGS := $(LOCALES_CO_FLAGS) -r $(LOCALES_CO_TAG)
endif
ifndef MOZ_CO_LOCALES
FASTUPDATE_LOCALES := true
CHECKOUT_LOCALES := true
else
ifeq (all,$(MOZ_CO_LOCALES))
MOZCONFIG_MODULES += $(addsuffix /all-locales,$(LOCALE_DIRS))
FASTUPDATE_LOCALES := \
for dir in $(LOCALE_DIRS); do \
for locale in `cat $$dir/all-locales`; do \
fast_update $(CVS) $(CVS_FLAGS) -d $(LOCALES_CVSROOT) co $$dir/$$locale; \
done; \
done
CHECKOUT_LOCALES := \
for dir in $(LOCALE_DIRS); do \
for locale in `cat $$dir/all-locales`; do \
cvs_co $(CVS) $(CVS_FLAGS) -d $(LOCALES_CVSROOT) co $(LOCALES_CO_FLAGS) $$dir/$$locale; \
done; \
done
else
LOCALE_CO_DIRS = $(foreach locale,$(MOZ_CO_LOCALES),$(addsuffix /$(locale),$(LOCALE_DIRS)))
CVSCO_LOCALES := $(CVS) $(CVS_FLAGS) -d $(LOCALES_CVSROOT) co $(LOCALES_CO_FLAGS) $(LOCALE_CO_DIRS)
FASTUPDATE_LOCALES := fast_update $(CVSCO_LOCALES)
CHECKOUT_LOCALES := cvs_co $(CVSCO_LOCALES)
endif
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) && \
$(RM) -f mozilla/configure mozilla/nsprpub/configure \
endif

slamm%netscape.com
committed
@echo "checkout start: "`date` | tee $(CVSCO_LOGFILE)

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

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

seawood%netscape.com
committed
$(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); }; \
$(CHECKOUT_STANDALONE); \
$(CHECKOUT_STANDALONE_NOSUBDIRS); \
cvs_co $(CVSCO_NSPR); \
cvs_co $(CVSCO_NSS); \
cvs_co $(CVSCO_PSM); \
cvs_co $(CVSCO_LDAPCSDK); \
cvs_co $(CVSCO_ACCESSIBLE); \
cvs_co $(CVSCO_IMGLIB2); \
cvs_co $(CVSCO_IPC); \
cvs_co $(CVSCO_CALENDAR); \
$(CHECKOUT_LIBART); \
$(CHECKOUT_MOZTOOLKIT); \
$(CHECKOUT_PHOENIX); \
$(CHECKOUT_THUNDERBIRD); \
$(CHECKOUT_STANDALONE_COMPOSER); \
$(CHECKOUT_CODESIGHS); \
$(CHECKOUT_LOCALES); \
cvs_co $(CVSCO_SEAMONKEY);

slamm%netscape.com
committed
@echo "checkout 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; \
fi
# @: 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
ifdef RUN_AUTOCONF_LOCALLY
@echo Generating configures using $(AUTOCONF) ; \
cd $(TOPSRCDIR) && $(AUTOCONF) && \
cd $(TOPSRCDIR)/nsprpub && $(AUTOCONF) && \
cd $(TOPSRCDIR)/directory/c-sdk && $(AUTOCONF)
endif

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) && \
$(RM) -f mozilla/configure mozilla/nsprpub/configure \
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_PSM); \
fast_update $(CVSCO_LDAPCSDK); \
fast_update $(CVSCO_ACCESSIBLE); \
fast_update $(CVSCO_IMGLIB2); \
fast_update $(CVSCO_IPC); \
fast_update $(CVSCO_CALENDAR); \
$(FASTUPDATE_LIBART); \
$(FASTUPDATE_MOZTOOLKIT); \
$(FASTUPDATE_PHOENIX); \
$(FASTUPDATE_THUNDERBIRD); \
$(FASTUPDATE_STANDALONE_COMPOSER); \
$(FASTUPDATE_CODESIGHS); \
$(FASTUPDATE_LOCALES); \
fast_update $(CVSCO_SEAMONKEY);
@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
# @: 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
ifdef RUN_AUTOCONF_LOCALLY
@echo Generating configures using $(AUTOCONF) ; \
cd $(TOPSRCDIR) && $(AUTOCONF) && \
cd $(TOPSRCDIR)/nsprpub && $(AUTOCONF) && \
cd $(TOPSRCDIR)/directory/c-sdk && $(AUTOCONF)
endif

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

slamm%netscape.com
committed
# Web configure

slamm%netscape.com
committed

slamm%netscape.com
committed
WEBCONFIG_FILE := $(HOME)/.mozconfig
MOZCONFIG2CONFIGURATOR := build/autoconf/mozconfig2configurator

slamm%netscape.com
committed
webconfig:
@cd $(TOPSRCDIR); \
url=`$(MOZCONFIG2CONFIGURATOR) $(TOPSRCDIR)`; \
echo Running mozilla with the following url: ;\

slamm%netscape.com
committed
echo ;\
echo $$url ;\
mozilla -remote "openURL($$url)" || \
netscape -remote "openURL($$url)" || \
mozilla $$url || \
netscape $$url ;\

slamm%netscape.com
committed
echo ;\

slamm%netscape.com
committed
echo 1. Fill out the form on the browser. ;\
echo 2. Save the results to $(WEBCONFIG_FILE)

slamm%netscape.com
committed

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
####################################

slamm%netscape.com
committed
# Configure
CONFIG_STATUS := $(wildcard $(OBJDIR)/config.status)
CONFIG_CACHE := $(wildcard $(OBJDIR)/config.cache)
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)
endif
CONFIG_STATUS_DEPS_L10N := $(wildcard $(TOPSRCDIR)/l10n/makefiles.all)

slamm%netscape.com
committed
CONFIG_STATUS_DEPS := \
$(TOPSRCDIR)/configure \
$(TOPSRCDIR)/allmakefiles.sh \
$(TOPSRCDIR)/.mozconfig.mk \

cls%seawood.org
committed
$(wildcard $(TOPSRCDIR)/nsprpub/configure) \
$(wildcard $(TOPSRCDIR)/directory/c-sdk/configure) \

slamm%netscape.com
committed
$(wildcard $(TOPSRCDIR)/mailnews/makefiles) \
$(CONFIG_STATUS_DEPS_L10N) \

cls%seawood.org
committed
$(wildcard $(TOPSRCDIR)/themes/makefiles) \

dbaron%dbaron.org
committed
$(wildcard $(TOPSRCDIR)/config/milestone.txt) \
$(wildcard $(TOPSRCDIR)/config/chrome-versions.sh) \

slamm%netscape.com
committed
$(NULL)

slamm%netscape.com
committed
# 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

slamm%netscape.com
committed
else
CONFIGURE := $(TOPSRCDIR)/configure
endif

seawood%netscape.com
committed
ifdef MOZ_TOOLS
CONFIGURE := $(TOPSRCDIR)/configure

cls%seawood.org
committed
endif

slamm%netscape.com
committed
$(OBJDIR)/Makefile $(OBJDIR)/config.status: $(CONFIG_STATUS_DEPS)
@if test ! -d $(OBJDIR); then $(MKDIR) $(OBJDIR); else true; fi

slamm%netscape.com
committed
@echo cd $(OBJDIR);

cls%seawood.org
committed
@echo $(CONFIGURE) $(CONFIGURE_ARGS)
@cd $(OBJDIR) && $(CONFIGURE_ENV_ARGS) $(CONFIGURE) $(CONFIGURE_ARGS) \

slamm%netscape.com
committed
|| ( echo "*** Fix above errors and then restart with\
\"$(MAKE) -f client.mk build\"" && exit 1 )

slamm%netscape.com
committed
ifdef CONFIG_STATUS
$(OBJDIR)/config/autoconf.mk: $(TOPSRCDIR)/config/autoconf.mk.in
cd $(OBJDIR); \
CONFIG_FILES=config/autoconf.mk ./config.status
endif

cls%seawood.org
committed

slamm%netscape.com
committed
####################################
# Depend
depend:: $(OBJDIR)/Makefile $(OBJDIR)/config.status

seawood%netscape.com
committed
$(MOZ_MAKE) export && $(MOZ_MAKE) depend

slamm%netscape.com
committed
####################################
# Build it
build:: $(OBJDIR)/Makefile $(OBJDIR)/config.status

seawood%netscape.com
committed
$(MOZ_MAKE)

slamm%netscape.com
committed
####################################
# Profile-feedback build (gcc only)
# To use this, you should set the following variables in your mozconfig
# mk_add_options PROFILE_GEN_SCRIPT=/path/to/profile-script
#
# The profile script should exercise the functionality to be included
# in the profile feedback.
profiledbuild:: $(OBJDIR)/Makefile $(OBJDIR)/config.status
$(MOZ_MAKE) MOZ_PROFILE_GENERATE=1
OBJDIR=${OBJDIR} $(PROFILE_GEN_SCRIPT)
$(MOZ_MAKE) clobber_all
$(MOZ_MAKE) MOZ_PROFILE_USE=1

bryner%brianryner.com
committed
find $(OBJDIR) -name "*.da" -exec rm {} \;

slamm%netscape.com
committed
####################################
# Other targets
# Pass these target onto the real build system

seawood%netscape.com
committed
install export libs clean realclean distclean alldep:: $(OBJDIR)/Makefile $(OBJDIR)/config.status

slamm%netscape.com
committed
$(MOZ_MAKE) $@

slamm%netscape.com
committed
cleansrcdir:
@cd $(TOPSRCDIR); \
if [ -f webshell/embed/gtk/Makefile ]; then \
$(MAKE) -C webshell/embed/gtk distclean; \
if [ -f Makefile ]; then \
$(MAKE) distclean ; \
else \

slamm%netscape.com
committed
echo "Removing object files from srcdir..."; \
rm -fr `find . -type d \( -name .deps -print -o -name CVS \
-o -exec test ! -d {}/CVS \; \) -prune \
-o \( -name '*.[ao]' -o -name '*.so' \) -type f -print`; \
build/autoconf/clean-config.sh; \
fi;

slamm%netscape.com
committed

slamm%netscape.com
committed
# (! IS_FIRST_CHECKOUT)
endif

slamm%netscape.com
committed

bryner%netscape.com
committed
echo_objdir:
@echo $(OBJDIR)

seawood%netscape.com
committed
.PHONY: checkout real_checkout depend build export libs alldep install clean realclean distclean cleansrcdir pull_all build_all clobber clobber_all pull_and_build_all everything