# # 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) tier_0 $(MAKE) nspr $(MAKE) ldap $(MAKE) tier_1 $(MAKE) tier_9 ifdef MOZ_PSM $(MAKE) tier_95 endif ifdef MOZ_MAIL_NEWS $(MAKE) tier_97 endif ifdef MOZ_CALENDAR $(MAKE) tier_98 endif $(MAKE) tier_99 # Make sure that the existing rulesets work DIRS = \ $(tier_0_dirs) \ $(tier_1_dirs) \ $(tier_9_dirs) \ $(NULL) ifdef GC_LEAK_DETECTOR DIRS += gc/boehm endif ifdef MOZ_PSM DIRS += $(tier_95_dirs) endif ifdef MOZ_MAIL_NEWS DIRS += $(tier_97_dirs) endif ifdef MOZ_CALENDAR DIRS += $(tier_98_dirs) endif DIRS += $(tier_99_dirs) # # 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 ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT))) tier_1_dirs += lib/mac/MoreFiles endif # # tier 9 - core components (xpcom,necko,gecko) # # 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 # Installer needs standalone libjar, hence standalone zlib ifneq (,$(filter Linux SunOS WINNT,$(OS_ARCH))) tier_9_dirs += modules/zlib/standalone endif tier_9_dirs += \ modules/libjar \ $(NULL) 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 ifdef MOZ_INTERNAL_LIBART_LGPL tier_9_dirs += other-licenses/libart_lgpl endif tier_9_dirs += \ 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 ifdef MOZ_LDAP_XPCOM tier_9_dirs += directory/xpcom endif # This must preceed xpfe ifdef MOZ_JPROF tier_9_dirs += tools/jprof endif tier_9_dirs += xpfe xpinstall ifdef MOZ_EXTENSIONS tier_9_dirs += extensions 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 # # tier 9x - application features # ifdef MOZ_PSM tier_95_dirs += security/manager endif ifdef MOZ_MAIL_NEWS tier_97_dirs += mailnews endif ifdef MOZ_CALENDAR tier_98_dirs += calendar endif # # tier 99 - application binaries # ifneq (,$(MOZ_STATIC_COMPONENTS)$(MOZ_META_COMPONENTS)) tier_99_dirs += modules/staticmod endif tier_99_dirs += xpfe/bootstrap ifdef MOZ_ENABLE_GTK tier_99_dirs += embedding/browser/gtk/tests endif endif # BUILD_MODULES == all STATIC_MAKEFILES := nsprpub 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 # Build psuedo-external modules first when export is explicitly called export:: $(MAKE) -C config export $(MAKE) nspr $(MAKE) ldap include $(topsrcdir)/config/rules.mk # Clean up after psuedo-external modules clean clobber realclean clobber_all distclean:: ifndef MOZ_NATIVE_NSPR $(MAKE) -C nsprpub $@ endif ifdef MOZ_LDAP_XPCOM $(MAKE) -C directory/c-sdk/ldap $@ endif 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 ifndef MOZ_NATIVE_NSPR $(MAKE) -C nsprpub endif ldap: ifdef MOZ_LDAP_XPCOM $(MAKE) -C directory/c-sdk/ldap export $(MAKE) -C directory/c-sdk/ldap install 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)