gecko-dev/Makefile.in

495 lines
9.3 KiB
Makefile

#
# 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
ifeq ($(BUILD_MODULES),all)
#
# And now for something completely different...
# Divide the default build into tiers.
# Tiers must be defined on module boundaries
#
default: $(SUBMAKEFILES)
$(RM) -rf $(DIST)/sdk
$(MAKE) -C config export
$(MAKE) nspr
$(MAKE) ldap
$(MAKE) tier_0
$(MAKE) tier_1
$(MAKE) tier_2
$(MAKE) tier_9
ifdef MOZ_PSM
$(MAKE) tier_40
endif
$(MAKE) tier_50
ifdef MOZ_JSDEBUGGER
$(MAKE) tier_93
endif
ifdef MOZ_EXTENSIONS
$(MAKE) tier_94
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_2_dirs) \
$(tier_9_dirs) \
$(tier_40_dirs) \
$(tier_50_dirs) \
$(NULL)
ifdef GC_LEAK_DETECTOR
DIRS += gc/boehm
endif
ifdef MOZ_JSDEBUGGER
DIRS += $(tier_93_dirs)
endif
ifdef MOZ_EXTENSIONS
DIRS += $(tier_94_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 \
$(NULL)
#
# tier 1 - 3rd party individual libraries
#
tier_1_dirs += dbm
ifndef MOZ_NATIVE_JPEG
tier_1_dirs += jpeg
endif
ifndef MOZ_NATIVE_ZLIB
tier_1_dirs += modules/zlib
endif
# Installer needs standalone libjar, hence standalone zlib
ifdef MOZ_INSTALLER
tier_1_dirs += modules/zlib/standalone
endif
ifdef MOZ_INTERNAL_LIBART_LGPL
tier_1_dirs += other-licenses/libart_lgpl
endif
#
# tier 2 - base libraries
#
tier_2_dirs = \
js \
xpcom \
modules/libreg \
xpcom/obsolete \
$(NULL)
ifdef NS_TRACE_MALLOC
tier_2_dirs += tools/trace-malloc/lib tools/trace-malloc
endif
#
# tier 9 - core components (necko,gecko)
#
tier_9_dirs += \
js/src/xpconnect \
intl \
modules/libjar \
$(NULL)
ifdef MOZ_OJI
tier_9_dirs += \
js/src/liveconnect \
modules/oji \
$(NULL)
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_ENABLE_GTK2
tier_9_dirs += widget/src/gtkxtbin
endif
ifdef MOZ_IPCD
tier_9_dirs += ipc/ipcd
endif
tier_9_dirs += \
modules/libutil \
netwerk \
uriloader \
modules/libpref \
modules/libimg \
caps \
rdf \
expat \
htmlparser \
gfx \
modules/libpr0n \
sun-java \
modules/plugin \
dom \
view \
widget \
content \
layout \
db \
xpfe/components/shistory \
docshell \
webshell \
profile \
embedding \
editor \
$(NULL)
ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT)))
tier_9_dirs += xpfe/bootstrap/appleevents
endif
ifdef MOZ_PHOENIX
ifdef MOZ_USE_OFFICIAL_BRANDING
tier_9_dirs += other-licenses/branding/firefox
endif
tier_9_dirs += toolkit/components/profile/public
endif
tier_9_dirs += \
xpfe/appshell \
xpfe/browser/public \
xpfe/components/sidebar/public \
xpfe/components/xremote/public \
$(NULL)
ifdef MOZ_XUL
ifdef MOZ_XUL_APP
tier_9_dirs += chrome
else
tier_9_dirs += rdf/chrome
endif
endif
ifdef ACCESSIBILITY
tier_9_dirs += accessible
endif
ifdef MOZ_LDAP_XPCOM
tier_9_dirs += directory/xpcom
endif
ifndef MOZ_XUL
tier_9_dirs += embedding/minimo/chromelite
endif
#
# tier 40 - security
#
ifdef MOZ_PSM
tier_40_dirs += security/manager
endif
#
# tier 50 - xpfe & toolkit
#
# This must preceed xpfe
ifdef MOZ_JPROF
tier_50_dirs += tools/jprof
endif
ifdef MOZ_XUL_APP
tier_50_dirs += toolkit/components/history/public
else
tier_50_dirs += xpfe/components/history/public
endif
tier_50_dirs += xpfe themes
ifdef MOZ_LEAKY
tier_50_dirs += tools/leaky
endif
ifdef MOZ_MAPINFO
tier_50_dirs += tools/codesighs
endif
ifneq (,$(MOZ_L10N_LANG)$(MOZ_L10N_TOOLS))
tier_50_dirs += l10n
endif
ifdef MOZ_XUL_APP
tier_50_dirs += toolkit
endif
ifdef MOZ_PHOENIX
#xpfe/components/search depends on nsIBookmarksService.idl
#XXXBlake this shell path is a temp hack; toolkit shouldn't depend on browser
tier_50_dirs += browser/components/bookmarks/public browser/components/shell/public
endif
# toolkit/xre/ depends on xpinstall, so it must be in tier 50
ifdef MOZ_XPINSTALL
tier_50_dirs += xpinstall
endif
# mozapps installer needs to be built after xpinstall
ifdef MOZ_XUL_APP
ifdef MOZ_INSTALLER
tier_50_dirs += toolkit/mozapps/installer
endif
endif
#
# tier 9x - application features
#
ifdef MOZ_JSDEBUGGER
tier_93_dirs += js/jsd
endif
ifdef MOZ_EXTENSIONS
tier_94_dirs += extensions
endif
ifdef MOZ_MAIL_NEWS
tier_97_dirs += mailnews
endif
ifdef MOZ_CALENDAR
tier_98_dirs += other-licenses/libical calendar
endif
#
# tier 99 - application binaries
#
ifdef MOZ_COMPONENTLIB
tier_99_dirs += embedding/componentlib
else
ifneq (,$(MOZ_STATIC_COMPONENTS)$(MOZ_META_COMPONENTS))
tier_99_dirs += modules/staticmod
endif
endif # MOZ_COMPONENTLIB
ifdef MOZ_PHOENIX
tier_99_dirs += browser xpfe/bootstrap/init.d
endif
ifdef MOZ_THUNDERBIRD
tier_99_dirs += mail xpfe/bootstrap/init.d
endif
ifdef MOZ_STANDALONE_COMPOSER
tier_99_dirs += composer
endif
ifdef MOZ_XUL_APP
else
ifneq (,$(MOZ_XPFE_COMPONENTS)$(MOZ_XUL))
tier_99_dirs += xpfe/bootstrap
endif
endif
ifneq (,$(MOZ_ENABLE_GTK)$(MOZ_ENABLE_GTK2))
tier_99_dirs += embedding/browser/gtk
endif
# viewer
ifneq (,$(ENABLE_TESTS))
tier_99_dirs += webshell/tests
endif
# winembed, mfcembed
ifeq ($(OS_ARCH),WINNT)
ifneq (,$(ENABLE_TESTS)$(MOZILLA_OFFICIAL))
tier_99_dirs += embedding/tests
endif
endif
# os2embed
ifeq ($(OS_ARCH),OS2)
ifneq (,$(ENABLE_TESTS)$(MOZILLA_OFFICIAL))
tier_99_dirs += embedding/tests
endif
endif
else
# Standalone build
DIRS = $(BUILD_MODULE_DIRS)
# Hack to generate xpidl Makefile
ifneq ($(BUILD_MODULES),all)
ifneq (,$(findstring xpcom, $(BUILD_MODULE_DIRS)))
DIRS := xpcom/typelib $(DIRS)
SUBMAKEFILES := xpcom/typelib/Makefile
endif
endif
default: $(SUBMAKEFILES)
$(MAKE) export
$(MAKE) libs
endif # BUILD_MODULES == all
STATIC_MAKEFILES := nsprpub directory/c-sdk security/nss
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 mozilla-config.h \
$(topsrcdir)/.mozconfig.mk $(topsrcdir)/.mozconfig.out
# Build pseudo-external modules first when export is explicitly called
export::
$(RM) -rf $(DIST)/sdk
$(MAKE) -C config export
$(MAKE) nspr
$(MAKE) ldap
ifneq ($(BUILD_MODULES),all)
ifneq (,$(findstring xpcom, $(BUILD_MODULE_DIRS)))
$(MAKE) -C xpcom/typelib
$(MAKE) export-idl
endif
endif
install::
ifndef MOZ_NATIVE_NSPR
$(MAKE) -C nsprpub real_install DESTDIR=$(DESTDIR) libdir=$(mozappdir) includedir=$(includedir)/nspr
$(RM) -f $(addprefix $(DESTDIR)$(mozappdir)/$(LIB_PREFIX), $(addsuffix .$(LIB_SUFFIX), nspr4 plds4 plc4))
$(RM) -f $(addprefix $(DESTDIR)$(bindir)/,nspr-config compile-et.pl prerr.properties)
endif
ifdef MOZ_LDAP_XPCOM
$(MAKE) -C directory/c-sdk real_install DESTDIR=$(DESTDIR) libdir=$(mozappdir) includedir=$(includedir)/ldap
endif
include $(topsrcdir)/config/rules.mk
# Clean up after pseudo-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 $@
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
endif
export::
@$(PERL) $(MOZILLA_DIR)/config/purge-old-headers.pl $(DIST)/include
distclean::
cat unallmakefiles | $(XARGS) rm -f
rm -f unallmakefiles $(DIST_GARBAGE)
ifeq ($(OS_ARCH),WINNT)
rebase:
ifdef MOZILLA_OFFICIAL
echo rebasing $(DIST)
/bin/find $(DIST) -name "*.dll" > rebase.lst
rebase -b 60000000 -R . -G rebase.lst
rm rebase.lst
endif
splitsymbols:
ifdef MOZILLA_OFFICIAL
echo splitting symbols out of binaries
/bin/find $(DIST) -name "*.dll" -exec splitsym {} \;
/bin/find $(DIST) -name "*.exe" -exec splitsym {} \;
/bin/find $(DIST) -name "*.EXE" -exec splitsym {} \;
mkdir -p $(DIST)/symbols
/bin/find $(DIST) -name "*.dbg" -exec mv {} $(DIST)/symbols \;
endif # MOZILLA_OFFICIAL
signnss:
ifdef MOZILLA_OFFICIAL
echo signing NSS libs
cd $(DIST)/bin; ./shlibsign.exe -v -i softokn3.dll
endif # MOZILLA_OFFICIAL
deliver: splitsymbols rebase signnss
endif # WINNT