# # The contents of this file are subject to the Netscape 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/NPL/ # # 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. # # The Original Code is mozilla.org code. # # The Initial Developer of the Original Code is Netscape # Communications Corporation. Portions created by Netscape are # Copyright (C) 1998 Netscape Communications Corporation. All # Rights Reserved. # # Contributor(s): # DEPTH = . topsrcdir = @top_srcdir@ srcdir = @srcdir@ VPATH = @srcdir@ include $(DEPTH)/config/autoconf.mk include $(topsrcdir)/build/unix/modules.mk ifneq ($(BUILD_MODULES),all) DIRS = $(BUILD_MODULE_DIRS) EXPORT_DIRS = $(BUILD_MODULE_DEP_DIRS) else # # And now for something completely different... # Divide the default build into tiers. # Tiers must be defined on module boundaries # default: $(SUBMAKEFILES) $(MAKE) nspr $(MAKE) tier_0 ifdef MOZ_LDAP_XPCOM # Call each of ldap's stages individually since # its default target isn't -j safe $(MAKE) -C directory/c-sdk/ldap export $(MAKE) -C directory/c-sdk/ldap install endif $(MAKE) tier_1 $(MAKE) tier_9 # Make sure that the existing rulesets work DIRS = $(NSPRPUB_DIR) $(tier_0_dirs) $(tier_1_dirs) $(tier_9_dirs) ifdef MOZ_LDAP_XPCOM DIRS += directory/c-sdk/ldap endif # # tier 0 - base build config dirs # tier_0_dirs = \ config \ build \ include \ $(NULL) # # tier 1 - base libraries # tier_1_dirs = js # MacOSX needs to build lib for MoreFiles before xpcom ifeq ($(MOZ_WIDGET_TOOLKIT),mac) tier_1_dirs += lib/mac/MoreFiles endif # intl should not be in here - it's just temporary until # xpconnect's dependency on intl is repaired - see bug 106130 tier_9_dirs += \ modules/libreg \ string \ xpcom \ intl \ $(NULL) ifndef MOZ_NATIVE_ZLIB tier_9_dirs += modules/zlib endif # Linux and Solaris installer needs standalone libjar, hence standalone zlib ifneq (,$(filter Linux SunOS,$(OS_ARCH))) tier_9_dirs += modules/zlib/standalone endif tier_9_dirs += \ modules/libjar \ $(NULL) # # tier 9 - mozilla application # ifdef MOZ_JAVA_SUPPLEMENT tier_9_dirs += \ java/util \ java/webclient \ $(NULL) endif ifndef MOZ_NATIVE_JPEG tier_9_dirs += jpeg endif tier_9_dirs += dbm js/src/xpconnect ifdef MOZ_OJI tier_9_dirs += js/src/liveconnect endif ifdef MOZ_JSDEBUGGER tier_9_dirs += js/jsd endif ifdef MOZ_ENABLE_XLIB tier_9_dirs += gfx/src/xlibrgb widget/src/xlibxtbin endif ifdef MOZ_ENABLE_GTK tier_9_dirs += widget/src/gtksuperwin widget/src/gtkxtbin endif tier_9_dirs += \ widget/timer \ modules/libutil \ netwerk \ modules/mpfilelocprovider \ uriloader \ modules/libpref \ modules/libimg \ modules/oji \ caps \ rdf \ expat \ htmlparser \ gfx \ gfx2 \ modules/libpr0n \ modules/plugin \ dom \ view \ widget \ content \ layout \ db \ docshell \ webshell \ embedding \ editor \ sun-java \ profile \ themes \ $(NULL) ifdef ACCESSIBILITY tier_9_dirs += accessible endif # This must preceed xpfe ifdef MOZ_JPROF tier_9_dirs += tools/jprof endif tier_9_dirs += xpfe xpinstall ifdef MOZ_PSM tier_9_dirs += security/manager endif ifdef MOZ_LDAP_XPCOM tier_9_dirs += directory/xpcom endif ifdef MOZ_EXTENSIONS tier_9_dirs += extensions endif ifdef MOZ_MAIL_NEWS tier_9_dirs += mailnews endif ifdef MOZ_CALENDAR tier_9_dirs += calendar endif ifdef MOZ_LEAKY tier_9_dirs += tools/leaky endif ifdef ENABLE_TESTS tier_9_dirs += xpcom/tests endif ifdef NS_TRACE_MALLOC tier_9_dirs += tools/trace-malloc endif tier_9_dirs += l10n ifneq (,$(MOZ_STATIC_COMPONENTS)$(MOZ_META_COMPONENTS)) tier_9_dirs += modules/staticmod endif tier_9_dirs += xpfe/bootstrap endif # BUILD_MODULES == all STATIC_MAKEFILES := $(NSPRPUB_DIR) directory/c-sdk/ldap ifdef MOZ_PSM STATIC_MAKEFILES += security/nss endif GARBAGE_DIRS += dist DIST_GARBAGE = config.cache config.log config.status config-defs.h \ dependencies.beos config/autoconf.mk config/myrules.mk config/myconfig.mk \ unallmakefiles \ $(topsrcdir)/.mozconfig.mk $(topsrcdir)/.mozconfig.out include $(topsrcdir)/config/rules.mk tier_%: @echo "$@: $($@_dirs)" @$(EXIT_ON_ERROR) \ for d in $($@_dirs); do $(UPDATE_TITLE) \ $(MAKE) -C $$d export; \ done ; \ $(PERL) $(MOZILLA_DIR)/config/purge-old-headers.pl $(DIST)/include ;\ for d in $($@_dirs); do $(UPDATE_TITLE) \ $(MAKE) -C $$d libs; \ done # # Individual modules # boehm: ifdef GC_LEAK_DETECTOR $(MAKE) -C gc/boehm endif nspr: boehm ifdef NSPRPUB_DIR $(MAKE) -C $(NSPRPUB_DIR) endif # Ugly OS/2 gmake hack - create myconfig.mk and myrules.mk if they aren't there ifeq ($(OS_ARCH),OS2) export:: if test ! -f config/myrules.mk; then touch config/myrules.mk fi if test ! -f config/myconfig.mk; then touch config/myconfig.mk fi endif # For modules.mk standalone build export:: +$(LOOP_OVER_EXPORT_DIRS) export:: @$(PERL) $(MOZILLA_DIR)/config/purge-old-headers.pl $(DIST)/include distclean:: cat unallmakefiles | $(XARGS) rm -f rm -f unallmakefiles $(DIST_GARBAGE)