1999-12-15 09:40:24 +00:00
#
2012-05-21 11:12:37 +00: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-08-21 03:34:44 +00:00
2012-08-04 18:26:44 +00:00
DEPTH = @DEPTH@
1998-08-21 03:34:44 +00:00
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
2009-03-11 20:32:10 +00:00
i f n d e f . P Y M A K E
i f e q ( , $( MAKE_VERSION ) )
$( error GNU Make is required )
e n d i f
i f e q ( , $( filter -out 3.78 3.79,$ ( MAKE_VERSION ) ) )
$( error GNU Make 3.80 or higher is required )
e n d i f
e n d i f
2013-05-17 17:54:53 +00:00
export TOPLEVEL_BUILD := 1
1998-08-21 03:34:44 +00:00
i n c l u d e $( DEPTH ) / c o n f i g / a u t o c o n f . m k
2008-12-19 14:50:24 +00:00
default ::
2005-11-08 17:53:54 +00:00
2009-07-13 11:48:46 +00:00
i f d e f C O M P I L E _ E N V I R O N M E N T
2006-08-29 16:53:40 +00:00
i n c l u d e $( topsrcdir ) / $( MOZ_BUILD_APP ) / b u i l d . m k
2009-07-13 11:48:46 +00:00
e n d i f
2006-03-09 05:47:25 +00:00
2002-10-25 05:59:52 +00:00
2008-12-19 14:50:24 +00:00
i n c l u d e $( topsrcdir ) / c o n f i g / c o n f i g . m k
2008-03-14 15:18:24 +00:00
GARBAGE_DIRS += dist _javagen _profile _tests staticlib
2012-08-29 06:55:58 +00:00
DIST_GARBAGE = config.cache config.log config.status* config-defs.h \
Bug 627277 - Remove (broken) BeOS support. r=biesi,dwitte,gavin,joe,jorendorff,josh,khuey,mfinkle,neil,Pike,roc,shaver,smontagu,taras
2011-02-19 19:10:24 +00:00
config/autoconf.mk \
2002-08-22 00:50:51 +00:00
unallmakefiles mozilla-config.h \
2008-01-28 22:05:47 +00:00
netwerk/necko-config.h xpcom/xpcom-config.h xpcom/xpcom-private.h \
2007-09-10 17:36:17 +00:00
$( topsrcdir) /.mozconfig.mk $( topsrcdir) /.mozconfig.out
1998-10-28 03:40:33 +00:00
2013-04-12 14:03:06 +00:00
i f n d e f M O Z _ P R O F I L E _ U S E
2013-06-25 18:04:03 +00:00
# One of the first things we do in the build is purge "unknown" files
# from the object directory. This serves two purposes:
#
# 1) Remove files from a previous build no longer accounted for in
# this build configuration.
#
# 2) Work around poor build system dependencies by forcing some
# rebuilds.
#
# Ideally #2 does not exist. Our reliance on this aspect should diminish
# over time.
#
# moz.build backend generation simply installs a set of "manifests" into
# a common directory. Each manifest is responsible for defining files in
# a specific subdirectory of the object directory. The invoked Python
# script simply iterates over all the manifests, purging files as
# necessary. To manage new directories or add files to the manifests,
# modify the backend generator.
#
2013-05-21 06:26:20 +00:00
# We need to explicitly put backend.RecursiveMakeBackend.built here
# otherwise the rule in rules.mk doesn't run early enough.
2013-05-17 17:54:56 +00:00
default alldep all :: CLOBBER $( topsrcdir ) /configure config .status backend .RecursiveMakeBackend .built
2013-07-11 20:42:26 +00:00
$( call py_action,purge_manifests,-d _build_manifests/purge .)
2013-04-12 14:03:06 +00:00
e n d i f
2008-12-19 14:50:24 +00:00
2013-03-29 17:34:58 +00:00
CLOBBER : $( topsrcdir ) /CLOBBER
@echo "STOP! The CLOBBER file has changed."
@echo "Please run the build through a sanctioned build wrapper, such as"
@echo "'mach build' or client.mk."
@exit 1
2010-01-23 00:39:13 +00:00
$(topsrcdir)/configure : $( topsrcdir ) /configure .in
@echo "STOP! configure.in has changed, and your configure is out of date."
@echo "Please rerun autoconf and re-configure your build directory."
@echo "To ignore this message, touch 'configure' in the source directory,"
@echo "but your build might not succeed."
@exit 1
config.status : $( topsrcdir ) /configure
@echo "STOP! configure has changed and needs to be run in this build directory."
@echo "Please rerun configure."
@echo "To ignore this message, touch 'config.status' in the build directory,"
@echo "but your build might not succeed."
@exit 1
2002-10-25 05:59:52 +00:00
# Build pseudo-external modules first when export is explicitly called
2002-01-25 22:29:51 +00:00
export ::
2011-04-03 07:16:49 +00:00
$( RM) -r $( DIST) /sdk
2002-01-25 22:29:51 +00:00
$( MAKE) -C config export
2006-08-25 10:45:39 +00:00
$( MAKE) tier_nspr
2002-04-25 20:40:00 +00:00
2008-12-19 14:50:24 +00:00
i f d e f E N A B L E _ T E S T S
# Additional makefile targets to call automated test suites
i n c l u d e $( topsrcdir ) / t e s t i n g / t e s t s u i t e - t a r g e t s . m k
e n d i f
2013-08-20 07:06:32 +00:00
# Hacky way for precompile tier to bypass default tier traversal mechanism.
TIER_precompile_CUSTOM := 1
2000-03-14 06:16:27 +00:00
i n c l u d e $( topsrcdir ) / c o n f i g / r u l e s . m k
2000-02-23 22:47:39 +00:00
2013-08-20 20:03:39 +00:00
default all alldep ::
$( call BUILDSTATUS,TIERS $( TIERS) )
$( foreach tier,$( TIERS) ,$( call SUBMAKE,tier_$( tier) ) )
i n c l u d e $( topsrcdir ) / c o n f i g / m a k e f i l e s / t i e r s . m k
$( foreach tier ,$ ( TIERS ) ,$ ( eval $ ( call CREATE_TIER_RULE ,$ ( tier ) ) ) )
2000-12-12 21:28:24 +00:00
distclean ::
cat unallmakefiles | $( XARGS) rm -f
2011-04-03 07:16:49 +00:00
$( RM) unallmakefiles $( DIST_GARBAGE)
2002-03-01 01:01:42 +00:00
2007-05-02 18:45:36 +00:00
i f e q ( $( OS_ARCH ) , W I N N T )
# we want to copy PDB files on Windows
2011-01-25 20:14:30 +00:00
MAKE_SYM_STORE_ARGS := -c --vcs-info
2008-02-27 00:54:47 +00:00
i f d e f P D B S T R _ P A T H
MAKE_SYM_STORE_ARGS += -i
e n d i f
2010-09-23 16:53:52 +00:00
DUMP_SYMS_BIN ?= $( topsrcdir) /toolkit/crashreporter/tools/win32/dump_syms_vc$( _MSC_VER) .exe
2007-06-27 10:25:14 +00:00
# PDB files don't get moved to dist, so we need to scan the whole objdir
MAKE_SYM_STORE_PATH := .
2007-05-02 18:45:36 +00:00
e n d i f
i f e q ( $( OS_ARCH ) , D a r w i n )
# need to pass arch flags for universal builds
i f d e f U N I V E R S A L _ B I N A R Y
2010-09-26 22:06:01 +00:00
MAKE_SYM_STORE_ARGS := -c -a "i386 x86_64" --vcs-info
2007-06-27 10:25:14 +00:00
MAKE_SYM_STORE_PATH := $( DIST) /universal
2007-05-02 18:45:36 +00:00
e l s e
2009-03-11 15:56:57 +00:00
MAKE_SYM_STORE_ARGS := -c -a $( OS_TEST) --vcs-info
2007-06-27 10:25:14 +00:00
MAKE_SYM_STORE_PATH := $( DIST) /bin
2007-05-02 18:45:36 +00:00
e n d i f
2007-08-19 18:06:53 +00:00
DUMP_SYMS_BIN ?= $( DIST) /host/bin/dump_syms
2007-05-02 18:45:36 +00:00
e n d i f
2008-03-20 01:13:36 +00:00
i f e q ( , $( filter -out Linux SunOS ,$ ( OS_ARCH ) ) )
2009-03-11 15:56:57 +00:00
MAKE_SYM_STORE_ARGS := -c --vcs-info
2007-08-19 18:06:53 +00:00
DUMP_SYMS_BIN ?= $( DIST) /host/bin/dump_syms
2007-06-27 10:25:14 +00:00
MAKE_SYM_STORE_PATH := $( DIST) /bin
2007-05-22 20:20:55 +00:00
e n d i f
2002-03-01 01:01:42 +00:00
2009-02-17 07:46:32 +00:00
SYM_STORE_SOURCE_DIRS := $( topsrcdir)
2009-02-17 14:18:50 +00:00
i n c l u d e $( topsrcdir ) / t o o l k i t / m o z a p p s / i n s t a l l e r / p a c k a g e - n a m e . m k
2007-05-28 01:57:56 +00:00
i f d e f M O Z _ S Y M B O L S _ E X T R A _ B U I L D I D
EXTRA_BUILDID := -$( MOZ_SYMBOLS_EXTRA_BUILDID)
e n d i f
2011-05-19 20:29:50 +00:00
SYMBOL_INDEX_NAME = \
2012-05-14 16:04:37 +00:00
$( MOZ_APP_NAME) -$( MOZ_APP_VERSION) -$( OS_TARGET) -$( BUILDID) -$( CPU_ARCH) $( EXTRA_BUILDID) -symbols.txt
2007-09-10 17:36:17 +00:00
2007-01-11 23:42:21 +00:00
buildsymbols :
2007-08-08 15:19:57 +00:00
i f d e f M O Z _ C R A S H R E P O R T E R
2007-03-26 14:55:27 +00:00
echo building symbol store
2011-04-03 07:16:49 +00:00
$( RM) -r $( DIST) /crashreporter-symbols
$( RM) " $( DIST) / $( SYMBOL_ARCHIVE_BASENAME) .zip "
2009-03-10 17:36:14 +00:00
$( NSINSTALL) -D $( DIST) /crashreporter-symbols
2011-10-06 07:08:14 +00:00
OBJCOPY = " $( OBJCOPY) " \
2009-02-17 07:46:32 +00:00
$( PYTHON) $( topsrcdir) /toolkit/crashreporter/tools/symbolstore.py \
$( MAKE_SYM_STORE_ARGS) \
$( foreach dir,$( SYM_STORE_SOURCE_DIRS) ,-s $( dir) ) \
$( DUMP_SYMS_BIN) \
2009-03-10 17:36:14 +00:00
$( DIST) /crashreporter-symbols \
2012-08-31 19:52:43 +00:00
$( MAKE_SYM_STORE_PATH) | grep -iv test > \
2009-03-10 17:36:14 +00:00
$( DIST) /crashreporter-symbols/$( SYMBOL_INDEX_NAME)
2007-01-11 23:42:21 +00:00
echo packing symbols
2009-11-04 14:59:47 +00:00
$( NSINSTALL) -D $( DIST) /$( PKG_PATH)
2009-03-10 17:36:14 +00:00
cd $( DIST) /crashreporter-symbols && \
2012-08-31 19:52:43 +00:00
zip -r9D " ../ $( PKG_PATH) $( SYMBOL_FULL_ARCHIVE_BASENAME) .zip " . -x "*test*" -x "*Test*"
2010-04-23 20:00:06 +00:00
cd $( DIST) /crashreporter-symbols && \
2010-12-06 15:16:30 +00:00
grep "sym" $( SYMBOL_INDEX_NAME) > $( SYMBOL_INDEX_NAME) .tmp && \
mv $( SYMBOL_INDEX_NAME) .tmp $( SYMBOL_INDEX_NAME)
cd $( DIST) /crashreporter-symbols && \
2012-08-31 19:52:43 +00:00
zip -r9D " ../ $( PKG_PATH) $( SYMBOL_ARCHIVE_BASENAME) .zip " . -i "*.sym" -i "*.txt" -x "*test*" -x "*Test*"
2007-08-08 15:19:57 +00:00
e n d i f # MOZ_CRASHREPORTER
2007-01-11 23:42:21 +00:00
2006-12-06 01:16:05 +00:00
uploadsymbols :
2007-08-08 15:19:57 +00:00
i f d e f M O Z _ C R A S H R E P O R T E R
2011-05-19 20:29:50 +00:00
$( SHELL) $( topsrcdir) /toolkit/crashreporter/tools/upload_symbols.sh $( SYMBOL_INDEX_NAME) " $( DIST) / $( PKG_PATH) $( SYMBOL_FULL_ARCHIVE_BASENAME) .zip "
2006-12-06 01:16:05 +00:00
e n d i f
2010-02-25 16:19:35 +00:00
# defined in package-name.mk
2009-12-20 14:25:48 +00:00
export MOZ_SOURCE_STAMP
2011-08-31 14:49:42 +00:00
#XXX: this is a hack, since we don't want to clobber for MSVC
# PGO support, but we can't do this test in client.mk
i f n e q ( $( OS_ARCH ) _ $( GNU_CC ) , W I N N T _ )
# No point in clobbering if PGO has been explicitly disabled.
i f n d e f N O _ P R O F I L E _ G U I D E D _ O P T I M I Z E
maybe_clobber_profiledbuild : clean
e l s e
maybe_clobber_profiledbuild :
e n d i f
e l s e
maybe_clobber_profiledbuild :
2011-11-04 21:26:53 +00:00
$( RM) $( DIST) /bin/*.pgc
find $( DIST) /$( MOZ_APP_NAME) -name "*.pgc" -exec mv { } $( DIST) /bin \;
2011-08-31 14:49:42 +00:00
e n d i f
.PHONY : maybe_clobber_profiledbuild
2010-10-13 12:43:03 +00:00
# Look for R_386_PC32 relocations in shared libs, these
# break x86_64 builds and SELinux users.
i f e q ( $( OS_TARGET ) _ $( TARGET_XPCOM_ABI ) , L i n u x _ x 8 6 - g c c 3 )
scheck ::
@relcount= ` find $( DIST) /bin -name "*.so" | xargs objdump -R | grep R_386_PC32 | wc -l` && if test $$ relcount -gt 0; then echo "FAILED: R_386_PC32 relocations detected in a shared library. Did you use a system header without adding it to config/system-headers?" ; exit 1; else echo "PASSED" ; fi
e n d i f
2012-07-09 13:47:26 +00:00
js/src/Makefile : subsrcdir := js /src
2013-03-04 19:11:55 +00:00
i f d e f E N A B L E _ T E S T S
# Incorporate static tier directories into tests. This should be incorporated
# into moz.build files someday.
check ::
$( call SUBMAKE,$@ ,js/src)
e n d i f