#
# 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

DIRS			:= public

MODULE			= webshell_tests
REQUIRES	= xpcom \
		  string \
		  embed_base \
		  webshell \
		  widget \
		  gfx \
		  layout \
		  content \
		  dom \
		  webbrwsr \
		  docshell \
		  util \
		  uriloader \
		  locale \
		  necko \
		  htmlparser \
		  view \
		  pref \
		  intl \
		  editor \
		  cookie \
		  windowwatcher \
		  xpconnect \
		  js \
		  $(NULL)

PROGRAM			:= viewer$(BIN_SUFFIX)

CPPSRCS			= \
			$(TOOLKIT_CPPSRCS) \
			nsBaseDialog.cpp \
			nsFindDialog.cpp \
			nsXPBaseWindow.cpp \
			nsTableInspectorDialog.cpp \
			nsImageInspectorDialog.cpp \
			nsPrintSetupDialog.cpp \
			nsBrowserWindow.cpp \
			nsEditorMode.cpp \
			nsThrobber.cpp \
			nsViewerApp.cpp \
			nsWebCrawler.cpp \
			nsWebBrowserChrome.cpp \
			nsWindowCreator.cpp \
			$(NULL)

ifeq (,$(filter beos os2 photon mac windows,$(MOZ_WIDGET_TOOLKIT)))
DIRS			+= unix
VIEWER_TK_LIBS	= unix/$(MOZ_WIDGET_TOOLKIT)/libviewer_$(MOZ_WIDGET_TOOLKIT)_s.a
else
ifeq ($(MOZ_WIDGET_TOOLKIT),beos)
BEOS_PROGRAM_RESOURCE	= $(srcdir)/viewer-beos.rsrc
TOOLKIT_CPPSRCS		= nsBeOSMain.cpp
endif
ifeq ($(MOZ_WIDGET_TOOLKIT),os2)
TOOLKIT_CPPSRCS		= nsOS2Main.cpp
endif
ifeq ($(MOZ_WIDGET_TOOLKIT),photon)
TOOLKIT_CPPSRCS		= nsPhMain.cpp nsPhMenu.cpp
endif
ifeq ($(MOZ_WIDGET_TOOLKIT),mac)
TOOLKIT_CPPSRCS		= nsMacMain.cpp
endif
ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
TOOLKIT_CPPSRCS		= nsWinMain.cpp JSConsole.cpp nsWidgetSupport.cpp 
DIRS			+= windows
VIEWER_TK_LIBS		= windows/$(LIB_PREFIX)viewer_windows_s.$(LIB_SUFFIX)
endif # windows
endif # unix

ifeq ($(MOZ_WIDGET_TOOLKIT),gtk)
GTK_GLUE		= -lgtksuperwin
endif

XP_DIST_LIBS		= \
			-lgkgfx \
			$(NULL)

ifeq ($(OS_ARCH),WINNT)
RESFILE		= viewer.res
XP_DIST_LIBS	+= -lxpwidgets_s -ldbgrobot
endif

ifdef MOZ_OJI
ifeq ($(OS_ARCH),WINNT)
XP_DIST_LIBS		+= -ljsj$(MOZ_BITS)$(VERSION_NUMBER)
else
XP_DIST_LIBS		+= -ljsj
endif
endif
ifdef MOZ_PERF_METRICS
XP_DIST_LIBS		+= -lmozutil_s
endif

XP_DIST_LIBS		+= \
			$(EXTRA_DSO_LIBS) \
			$(XPCOM_LIBS) \
			$(MOZ_JS_LIBS) \
			$(NULL)

XP_LIBS			= \
			$(MOZ_WIDGET_SUPPORT_LIBS) \
			$(XP_DIST_LIBS) \
			$(NSPR_LIBS) \
			$(NULL)

LIBS			= \
			$(VIEWER_TK_LIBS) \
			$(GTK_GLUE) \
			$(XP_LIBS) \
			$(TK_LIBS) \
			$(PROFILER_LIBS) \
			$(NULL)

QT_LIBS			= -lviewer_qt_s $(XP_LIBS) $(MOZ_QT_LDFLAGS)
XLIB_LIBS		= -lviewer_xlib_s $(XP_LIBS) $(MOZ_XLIB_LDFLAGS)
GTK_LIBS		= -lviewer_gtk_s -lgtksuperwin $(XP_LIBS) $(MOZ_GTK_LDFLAGS)

ifeq ($(MOZ_OS2_TOOLS),VACPP)
XP_DIST_DEP_LIBS    := $(patsubst -l%,$(DIST)/lib/%.lib,$(XP_DIST_LIBS))
else
XP_DIST_DEP_LIBS	:= $(filter-out -L$(DIST)/bin -L$(DIST)/lib, $(XP_DIST_LIBS))
XP_DIST_DEP_LIBS	:= $(wildcard $(addprefix $(DIST)/,$(patsubst -l%,bin/$(LIB_PREFIX)%$(DLL_SUFFIX),$(XP_DIST_DEP_LIBS:-l%_s=lib/lib%_s)))*)
endif

EXTRA_DEPS		= \
			$(XP_DIST_DEP_LIBS) \
			$(VIEWER_TK_LIBS) \
			$(MOZ_WIDGET_SUPPORT_LIBS) \
			$(NULL)

include $(topsrcdir)/config/config.mk

# Force a build thru DIRS so that dependencies are updated properly
libs::
	+$(LOOP_OVER_DIRS)

include $(topsrcdir)/config/rules.mk

ifeq ($(OS_ARCH),Darwin)
LOCAL_INCLUDES		+= -I$(topsrcdir)/widget/src/mac
endif

CXXFLAGS		+= $(MOZ_TOOLKIT_REGISTRY_CFLAGS)

GARBAGE			+= $(PROGRAM)_gtk $(PROGRAM)_qt $(PROGRAM)_xlib

ifeq ($(OS_ARCH),WINNT)
OS_LIBS		+= shell32.lib ole32.lib oleaut32.lib oleacc.lib \
	imm32.lib uuid.lib comdlg32.lib
LDFLAGS		+= -SUBSYSTEM:CONSOLE
ifdef MOZ_NO_DEBUG_RTL
CXXFLAGS	+= -DMOZ_NO_DEBUG_RTL
endif
ifdef NGPREFS
CXXFLAGS	+= -DNGPREFS
endif
endif

libs:: $(PROGRAM) $(srcdir)/mozilla-viewer.sh
ifneq ($(MOZ_WIDGET_TOOLKIT),os2)
	$(INSTALL) $(srcdir)/mozilla-viewer.sh $(DIST)/bin
endif

unix/gtk/libviewer_gtk_s.a:
	@$(MAKE) -C $(@D) $(@F)

unix/qt/libviewer_qt_s.a:
	@$(MAKE) -C $(@D) $(@F)

unix/xlib/libviewer_xlib_s.a:
	@$(MAKE) -C $(@D) $(@F)

$(PROGRAM)_gtk: $(PROGOBJS) $(EXTRA_DEPS) Makefile Makefile.in unix/gtk/libviewer_gtk_s.a
	$(CCC) $(CXXFLAGS) -o $@ $(PROGOBJS) $(LDFLAGS) $(LIBS_DIR) $(GTK_LIBS) $(OS_LIBS) $(PROFILER_LIBS)
ifdef ENABLE_STRIP
	$(STRIP) $@
endif

$(PROGRAM)_qt: $(PROGOBJS) $(EXTRA_DEPS) Makefile Makefile.in unix/qt/libviewer_qt_s.a
	$(CCC) $(CXXFLAGS) -o $@ $(PROGOBJS) $(LDFLAGS) $(LIBS_DIR) $(QT_LIBS) $(OS_LIBS) $(PROFILER_LIBS)
ifdef ENABLE_STRIP
	$(STRIP) $@
endif

$(PROGRAM)_xlib: $(PROGOBJS) $(EXTRA_DEPS) Makefile Makefile.in unix/xlib/libviewer_xlib_s.a
	$(CCC) $(CXXFLAGS) -o $@ $(PROGOBJS) $(LDFLAGS) $(LIBS_DIR) $(XLIB_LIBS) $(OS_LIBS) $(PROFILER_LIBS)
ifdef ENABLE_STRIP
	$(STRIP) $@
endif

ifdef MOZ_ENABLE_GTK
libs:: $(PROGRAM)_gtk
	$(INSTALL) -m 555 $< $(DIST)/bin
endif

ifdef MOZ_ENABLE_QT
libs:: $(PROGRAM)_qt
	$(INSTALL) -m 555 $< $(DIST)/bin
endif

ifdef MOZ_ENABLE_XLIB
libs:: $(PROGRAM)_xlib
	$(INSTALL) -m 555 $< $(DIST)/bin
endif

