# # ***** 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. # # 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): # Jeremy Morton (jez9999@runbox.com) # # Alternatively, the contents of this file may be used under the terms of # either of 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. # # ***** END LICENSE BLOCK ***** DEPTH = ../.. topsrcdir = @top_srcdir@ srcdir = @srcdir@ VPATH = @srcdir@ include $(DEPTH)/config/autoconf.mk DIRS = init.d ifeq ($(MOZ_WIDGET_TOOLKIT),os2) DIRS += os2turbo endif # This code removes the console from release builds # (unless you've set MOZ_WINCONSOLE=1). ifndef MOZ_WINCONSOLE ifdef MOZ_DEBUG MOZ_WINCONSOLE=1 else MOZ_WINCONSOLE=0 endif endif ifeq ($(OS_ARCH),WINNT) ifndef BUILD_STATIC_LIBS ifndef MOZ_TIMELINE GRE_BUILD = 1; endif endif endif ifdef GRE_BUILD DEFINES += -DXPCOM_GLUE else MOZILLA_INTERNAL_API = 1 endif DEFINES += -DMOZ_APP_NAME="$(MOZ_APP_NAME)" DEFINES += -DMOZ_APP_DISPLAYNAME="$(MOZ_APP_DISPLAYNAME)" DEFINES += -DMOZ_APP_VERSION="$(MOZ_APP_VERSION)" MODULE = apprunner REQUIRES = xpcom \ string \ webbrwsr \ widget \ dom \ necko \ content \ pref \ appshell \ toolkitcomps \ appcomps \ gfx \ xpinstall \ windowwatcher \ embed_base \ embedcomponents \ docshell \ locale \ profile \ chrome \ xremoteclient \ layout \ $(NULL) # for jprof REQUIRES += jprof ifdef NS_TRACE_MALLOC REQUIRES += tracemalloc endif ifdef MOZ_ENABLE_XREMOTE REQUIRES += xremoteservice endif include $(topsrcdir)/config/config.mk ifeq ($(USE_SHORT_LIBNAME),1) PROGRAM = $(MOZ_APP_NAME)$(BIN_SUFFIX) else PROGRAM = $(MOZ_APP_NAME)-bin$(BIN_SUFFIX) endif # Force applications to be built non-statically # when building the mozcomps meta component ifneq (,$(filter mozcomps,$(MOZ_META_COMPONENTS))) BUILD_STATIC_LIBS= ifdef MOZ_COMPONENTLIB DEFINES += -D_MOZCOMPS_SHARED_LIBRARY -D_BUILD_STATIC_BIN endif endif PREF_JS_EXPORTS = $(srcdir)/browser-prefs.js CPPSRCS = \ nsAppRunner.cpp \ showOSAlert.cpp \ $(NULL) ifneq (,$(filter-out OS2 WINNT,$(OS_ARCH))) STACKWALK_SRC_LCSRCS = \ nsStackFrameUnix.cpp \ nsStackFrameUnix.h \ $(NULL) STACKWALK_CPPSRCS := $(addprefix $(topsrcdir)/xpcom/base/, $(STACKWALK_SRC_LCSRCS)) CPPSRCS += nsSigHandlers.cpp nsStackFrameUnix.cpp endif ifdef BUILD_STATIC_LIBS ifneq ($(MOZ_OS2_TOOLS),VACPP) ifneq (WINNT_,$(OS_ARCH)_$(GNU_CC)) STATIC_COMPONENTS_LINKER_PATH = -L$(DIST)/lib/components endif endif endif LIBS = \ $(STATIC_COMPONENTS_LINKER_PATH) \ $(EXTRA_DSO_LIBS) \ $(NULL) ifdef MOZ_ENABLE_XREMOTE LIBS += $(DEPTH)/widget/src/xremoteclient/$(LIB_PREFIX)xremote_client_s.$(LIB_SUFFIX) LOCAL_INCLUDES += -I$(topsrcdir)/widget/src/xremoteclient endif ifndef BUILD_STATIC_LIBS ifdef NS_TRACE_MALLOC EXTRA_DSO_LIBS += tracemalloc endif ifdef MOZ_COMPONENTLIB EXTRA_DSO_LIBS += $(MOZ_COMPONENTLIB_EXTRA_DSO_LIBS) LIBS += $(MOZ_COMPONENTLIB_EXTRA_LIBS) endif else include $(topsrcdir)/config/static-config.mk EXTRA_DEPS += \ $(STATIC_EXTRA_DEPS) \ $(NULL) DEFINES += $(STATIC_DEFINES) CPPSRCS += $(STATIC_CPPSRCS) EXTRA_DSO_LIBS += $(STATIC_EXTRA_DSO_LIBS) REQUIRES += $(STATIC_REQUIRES) EXTRA_LIBS += $(STATIC_EXTRA_LIBS) endif # If you change anything that mozilla links to, please talk to dougt@netscape.com ifdef GRE_BUILD LIBS += \ $(DIST)/lib/$(LIB_PREFIX)xpcomglue.$(LIB_SUFFIX) \ $(NULL) else LIBS += $(XPCOM_LIBS) endif LIBS += \ $(MOZ_JS_LIBS) \ $(NSPR_LIBS) \ $(NULL) ifdef MOZ_JPROF LIBS += -ljprof endif ifdef GC_LEAK_DETECTOR LIBS += -lboehm endif ifdef WRAP_SYSTEM_INCLUDES DEFINES += -DWRAP_SYSTEM_INCLUDES endif ifeq ($(MOZ_WIDGET_TOOLKIT),beos) BEOS_PROGRAM_RESOURCE = $(srcdir)/apprunner-beos.rsrc CPPSRCS += nsNativeAppSupportBeOS.cpp CPPSRCS += nsNativeAppSupportBase.cpp ifdef BUILD_STATIC_LIBS OS_LIBS += -ltracker -lgame endif endif ifeq ($(MOZ_WIDGET_TOOLKIT),photon) CPPSRCS += nsNativeAppSupportPh.cpp LIBS += -lphexlib -lph endif ifeq ($(MOZ_WIDGET_TOOLKIT),os2) REQUIRES += xpconnect intl profile CPPSRCS += nsNativeAppSupportOS2.cpp CPPSRCS += nsNativeAppSupportBase.cpp RESFILE = splashos2.res endif ifeq ($(MOZ_WIDGET_TOOLKIT),mac) CPPSRCS += nsNativeAppSupportMac.cpp CPPSRCS += nsNativeAppSupportBase.cpp LIBS += $(TK_LIBS) endif ifeq ($(MOZ_WIDGET_TOOLKIT),gtk) SPLASH_XPM = $(srcdir)/splash.xpm CPPSRCS += nsNativeAppSupportGtk.cpp \ nsNativeAppSupportBase.cpp DEFINES += -DSPLASH_XPM=\"$(SPLASH_XPM)\" LIBS += $(MOZ_GTK_LDFLAGS) endif ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2) SPLASH_XPM = $(srcdir)/splash.xpm CPPSRCS += nsNativeAppSupportGtk.cpp \ nsNativeAppSupportBase.cpp DEFINES += -DSPLASH_XPM=\"$(SPLASH_XPM)\" LIBS += $(MOZ_GTK2_LIBS) endif ifeq ($(MOZ_WIDGET_TOOLKIT),qt) LIBS += $(MOZ_QT_LDFLAGS) endif # Add explicit X11 dependency when building against X11 toolkits ifneq (,$(filter gtk gtk2 qt xlib,$(MOZ_WIDGET_TOOLKIT))) LIBS += $(XLDFLAGS) $(XLIBS) endif ifeq ($(MOZ_WIDGET_TOOLKIT),windows) REQUIRES += xpconnect intl appcomps ifdef MOZ_PHOENIX REQUIRES += winhooks endif RCINCLUDE = splash.rc CPPSRCS += nsNativeAppSupportWin.cpp nsNativeAppSupportBase.cpp OS_LIBS += $(call EXPAND_LIBNAME,comctl32 comdlg32 uuid shell32 ole32 oleaut32 version winspool) endif ifndef MOZ_SUITE # Suite icons are all contained within /suite/branding ifneq (,$(filter windows os2 gtk gtk2,$(MOZ_WIDGET_TOOLKIT))) ifneq (,$(filter windows os2,$(MOZ_WIDGET_TOOLKIT))) ICON_SUFFIX=.ico else ICON_SUFFIX=.xpm endif ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2) ICON_DIR=gtk else ICON_DIR=$(MOZ_WIDGET_TOOLKIT) endif # Include icons based on widget toolkit; not all platforms need the same set. # All-platform icons DESKTOP_ICONS = \ abcardWindow \ addressbookWindow \ bmPropsWindow \ bookmark-window \ chatzilla-window \ downloadManager \ editorWindow \ findBookmarkWindow \ findHistoryWindow \ history-window \ jsconsoleWindow \ main-window \ messengerWindow \ msgcomposeWindow \ venkman-window \ winInspectorMain \ $(NULL) ifeq (windows,$(MOZ_WIDGET_TOOLKIT)) # Windows icons DESKTOP_ICONS += \ gif-file \ html-file \ misc-file \ image-file \ jpeg-file \ script-file \ xml-file \ xul-file \ $(NULL) endif ifeq ($(ICON_DIR),gtk) DESKTOP_ICONS_SMALL=$(patsubst %,%16,$(DESKTOP_ICONS)) endif DESKTOP_ICON_FILES = $(addsuffix $(ICON_SUFFIX), $(DESKTOP_ICONS) $(DESKTOP_ICONS_SMALL)) GARBAGE += $(addprefix $(DIST)/bin/chrome/icons/default/,$(DESKTOP_ICON_FILES)) all:: libs:: $(addprefix icons/$(ICON_DIR)/,$(DESKTOP_ICON_FILES)) $(INSTALL) $^ $(DIST)/bin/chrome/icons/default install:: $(addprefix icons/$(ICON_DIR)/,$(DESKTOP_ICON_FILES)) $(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)$(mozappdir)/chrome/icons/default endif endif # MOZ_SUITE ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa) CMMSRCS += nsNativeAppSupportForCocoa.mm LIBS += -framework Cocoa $(TK_LIBS) endif ifeq ($(OS_ARCH),OS2) ifdef BUILD_STATIC_LIBS EXE_DEF_FILE = mozilla.def RCFLAGS += -DMOZ_STATIC_BUILD -i $(DIST)/include/widget endif endif SRCS_IN_OBJDIR=1 ifneq (,$(filter-out OS2 WINNT,$(OS_ARCH))) GARBAGE += $(STACKWALK_SRC_LCSRCS) $(wildcard *.$(OBJ_SUFFIX)) endif include $(topsrcdir)/config/rules.mk ifneq (,$(filter-out OS2 WINNT,$(OS_ARCH))) export:: $(STACKWALK_CPPSRCS) $(INSTALL) $^ . endif ifdef BUILD_STATIC_LIBS include $(topsrcdir)/config/static-rules.mk endif ifeq ($(MOZ_WIDGET_TOOLKIT),gtk) $(PROGRAM): $(SPLASH_XPM) endif ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT))) ifdef BUILD_STATIC_LIBS LIBS += -framework QuickTime -framework IOKit -lcups endif endif ifeq ($(OS_ARCH),WINNT) # # Control the default heap size. # This is the heap returned by GetProcessHeap(). # As we use the CRT heap, the default size is too large and wastes VM. # # The default heap size is 1MB on Win32. # The heap will grow if need be. # # Set it to 256k. See bug 127069. # ifndef GNU_CC LDFLAGS += /HEAP:0x40000 endif endif CXXFLAGS += $(MOZ_TOOLKIT_REGISTRY_CFLAGS) LOCAL_INCLUDES += -I$(srcdir) -I. ifneq (,$(filter-out OS2 WINNT,$(OS_ARCH))) $(MOZ_APP_NAME).1: mozilla.man.in Makefile.in Makefile $(DEPTH)/config/autoconf.mk @sed -e "s|\@bindir\@|$(bindir)|g" -e "s|\@mozappdir\@|$(mozappdir)|g" \ -e "s|\@MOZ_APP_DISPLAYNAME\@|$(MOZ_APP_DISPLAYNAME)|g" \ -e "s|\@MOZ_APP_NAME\@|$(MOZ_APP_NAME)|g" \ -e "s|\@MOZ_APP_VERSION\@|${MOZ_APP_VERSION}|g" < $< > $@ libs:: $(MOZ_APP_NAME).1 $(INSTALL) $< $(DIST)/man/man1 install:: $(MOZ_APP_NAME).1 $(SYSINSTALL) $(IFLAGS1) $< $(DESTDIR)$(mandir)/man1 MOZILLA_SCRIPT=$(MOZ_APP_NAME) $(MOZILLA_SCRIPT):: mozilla.in Makefile.in Makefile $(DEPTH)/config/autoconf.mk cat $< | sed -e "s|%MOZAPPDIR%|$(mozappdir)|" \ -e "s|%MOZ_USER_DIR%|.mozilla|" \ -e "s|%MREDIR%|$(mredir)|" \ -e "s|%MOZ_APP_DISPLAYNAME%|$(MOZ_APP_DISPLAYNAME)|" \ -e "s|%MOZ_APP_NAME%|$(MOZ_APP_NAME)|" \ -e "s|%MOZILLA-BIN%|$(PROGRAM)|g" > $@ chmod +x $@ libs:: $(MOZILLA_SCRIPT) $(INSTALL) $< $(DIST)/bin install:: $(MOZILLA_SCRIPT) $(SYSINSTALL) $(IFLAGS2) $< $(DESTDIR)$(bindir) GARBAGE += $(MOZ_APP_NAME).1 $(MOZILLA_SCRIPT) endif ifeq ($(MOZ_WIDGET_TOOLKIT),photon) libs:: $(srcdir)/splash.bmp $(INSTALL) $< $(DIST)/bin endif ifeq ($(OS_ARCH),OS2) LDFLAGS += -Zlinker /NOE ifdef BUILD_STATIC_LIBS $(EXE_DEF_FILE): rm -f $@ @echo NAME mozilla >$(EXE_DEF_FILE) @echo IMPORTS >>$(EXE_DEF_FILE) @echo WinQueryProperty = PMMERGE.5450 >>$(EXE_DEF_FILE) @echo WinRemoveProperty = PMMERGE.5451 >>$(EXE_DEF_FILE) @echo WinSetProperty = PMMERGE.5452 >>$(EXE_DEF_FILE) endif endif libs:: touch $(DIST)/bin/.autoreg ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT))) INCLUDES += -I$(srcdir)/../appshell/src -I$(srcdir)/appleevents ifdef MOZ_DEBUG APP_NAME = $(MOZ_APP_DISPLAYNAME)Debug else APP_NAME = $(MOZ_APP_DISPLAYNAME) endif libs:: $(PROGRAM) mkdir -p $(DIST)/$(APP_NAME).app/Contents/MacOS rsync -a --exclude CVS --exclude "*.in" $(srcdir)/macbuild/Contents $(DIST)/$(APP_NAME).app sed -e "s/MOZ_APP_NAME/$(MOZ_APP_NAME)/" -e "s/MOZ_APP_DISPLAYNAME/$(MOZ_APP_DISPLAYNAME)/" -e "s/MOZ_APP_VERSION/$(MOZ_APP_VERSION)/" $(srcdir)/macbuild/Contents/Info.plist.in > $(DIST)/$(APP_NAME).app/Contents/Info.plist rsync -a $(DIST)/bin/ $(DIST)/$(APP_NAME).app/Contents/MacOS rm -f $(DIST)/$(APP_NAME).app/Contents/MacOS/$(PROGRAM) rsync -aL $(PROGRAM) $(DIST)/$(APP_NAME).app/Contents/MacOS mkdir -p $(DIST)/$(APP_NAME).app/Contents/Plug-Ins # Bug 297227: the next line only exists to repair broken depend builds, it can # go away once that bug has been closed for a while. rm -rf $(DIST)/$(APP_NAME).app/Contents/Plug-Ins/PrintPDE.plugin rsync -a --copy-unsafe-links $(DIST)/package/PrintPDE.plugin $(DIST)/$(APP_NAME).app/Contents/Plug-Ins cp -RL $(DIST)/package/mozillaSuite.rsrc $(DIST)/$(APP_NAME).app/Contents/Resources/$(PROGRAM).rsrc echo -n APPLMOZZ > $(DIST)/$(APP_NAME).app/Contents/PkgInfo clean clobber:: rm -rf $(DIST)/$(APP_NAME).app endif echo_objs: @echo $(OBJS) ifeq ($(OS_ARCH),OS2) README_FILE = $(topsrcdir)/README/mozilla/README.os2 else README_FILE = $(topsrcdir)/README.txt endif libs:: ifndef MOZ_SUITE ifeq ($(OS_ARCH),OS2) cp $(README_FILE) $(DIST)/bin/README.txt else $(INSTALL) $(README_FILE) $(DIST)/bin endif endif $(INSTALL) $(topsrcdir)/LICENSE $(DIST)/bin