# vim:set ts=8 sw=8 sts=8 noet:
#
# ***** 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
# IBM Corporation.
# Portions created by the Initial Developer are Copyright (C) 2004
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#  Brian Ryner <bryner@brianryner.com>
#  Allan Beaufour <allan@beaufour.dk>
#
# 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

# Module setup
MODULE		= xforms
LIBRARY_NAME	= xforms
IS_COMPONENT	= 1
ifndef MINIMO
# Do not set EXPORT_LIBRARY as we do not want xforms in the static libs list
#EXPORT_LIBRARY	= 1
FORCE_SHARED_LIB = 1
# required for Windows builds with VS2005+ (links in the c runtime)
USE_STATIC_LIBS  = 1
else
MODULE_NAME	= xforms
EXPORT_LIBRARY	= 1
endif

# Also build schema-validation
DIRS			= ../schema-validation \
		  	  $(NULL)

ifndef MINIMO
ifdef MOZ_XUL_APP
# XPI settings
# XPI_NAME is exported to include schema-validation in xforms package
export XPI_NAME	       = xforms
XPI_PKGNAME            = xforms
USE_EXTENSION_MANIFEST = 1
NO_JAR_AUTO_REG        = 1
INSTALL_EXTENSION_ID   = {cf2812dc-6a7c-4402-b639-4d277dac4c36}
PACKAGE_VERSION        = 0.8.5

# We want to strip the XPI
STRIP_XPI = 1

XULAPP_DEFINES = \
	-DFIREFOX_VERSION=$(FIREFOX_VERSION) \
	-DMOZILLA_VERSION_U=$(MOZILLA_VERSION_U) \
	-DSEAMONKEY_VERSION=$(SEAMONKEY_VERSION) \
	-DBUILD_ID=$(BUILD_ID) \
	-DPACKAGE_VERSION=$(PACKAGE_VERSION) \
	-DID=${INSTALL_EXTENSION_ID} \
	-DTARGET_PLATFORM=$(OS_TARGET)_$(TARGET_XPCOM_ABI) \
	$(NULL)

# Include these in the XPI
DIST_FILES = install.rdf install.js
endif
endif

# XForms depends
REQUIRES	= \
		xpcom \
		string \
		content \
		dom \
		widget \
		necko \
		docshell \
		mimetype \
		caps \
		xpconnect \
		js \
		layout \
		transformiix \
		schemavalidation \
		intl \
		pref \
		htmlparser \
		exthandler \
		chardet \
		pipnss \
		$(NULL)

# XForms IDLs
XPIDLSRCS	= \
		nsIXFormsModelElement.idl \
		nsIXFormsNSModelElement.idl \
		nsIModelElementPrivate.idl \
		nsIXFormsNSInstanceElement.idl \
		nsIInstanceElementPrivate.idl \
		nsIXFormsControl.idl \
		nsIXFormsContextControl.idl \
		nsIXFormsActionElement.idl \
		nsIXFormsActionModuleElement.idl \
		nsIXFormsSwitchElement.idl \
		nsIXFormsCaseElement.idl \
		nsIXFormsCaseUIElement.idl \
		nsIXFormsNSSelect1Element.idl \
		nsIXFormsNSSelectElement.idl \
		nsIXFormsSelectChild.idl \
		nsIXFormsValueElement.idl \
		nsIXFormsRepeatElement.idl \
		nsIXFormsRepeatItemElement.idl \
		nsIXFormsSubmitElement.idl \
		nsIXFormsSubmissionElement.idl \
		nsIXFormsControlBase.idl \
		nsIXFormsDelegate.idl \
		nsIDelegateInternal.idl \
		nsIXFormsUIWidget.idl \
		nsIXFormsItemElement.idl \
		nsIXFormsItemSetUIElement.idl \
		nsIXFormsRepeatUIElement.idl \
		nsIXFormsAccessors.idl \
		nsIXFormsRangeAccessors.idl \
		nsIXFormsUploadElement.idl \
		nsIXFormsUploadUIElement.idl \
		nsIXFormsCopyElement.idl \
		nsIXFormsEphemeralMessageUI.idl \
		nsIXFormsRangeConditionAccessors.idl \
		nsIXFormsNSEditableElement.idl \
		nsIXFormsComboboxUIWidget.idl \
		nsIXFormsXPathFunctions.idl \
		nsIXFormsXPathState.idl \
		nsIXFormsDOMEvent.idl \
		nsIXFormsContextInfo.idl \
		$(NULL)

# XForms source files
CPPSRCS		= \
		nsXFormsElementFactory.cpp \
		nsXFormsUtils.cpp \
		nsXFormsModelElement.cpp \
		nsXFormsInputElement.cpp \
		nsXFormsGroupElement.cpp \
		nsXFormsOutputElement.cpp \
		nsXFormsRepeatElement.cpp \
		nsXFormsContextContainer.cpp \
		nsXFormsTriggerElement.cpp \
		nsXFormsSubmissionElement.cpp \
		nsXFormsStubElement.cpp \
		nsXFormsInstanceElement.cpp \
		nsXFormsAtoms.cpp \
		nsXFormsModule.cpp \
		nsXFormsMDGEngine.cpp \
		nsXFormsXPathAnalyzer.cpp \
		nsXFormsXPathNode.cpp \
		nsXFormsXPathParser.cpp \
		nsXFormsXPathScanner.cpp \
		nsXFormsXPathXMLUtil.cpp \
		nsXFormsActionElement.cpp \
		nsXFormsActionModuleBase.cpp \
		nsXFormsDispatchElement.cpp \
		nsXFormsRebuildElement.cpp \
		nsXFormsRecalculateElement.cpp \
		nsXFormsRefreshElement.cpp \
		nsXFormsRevalidateElement.cpp \
		nsXFormsResetElement.cpp \
		nsXFormsSendElement.cpp \
		nsXFormsSetFocusElement.cpp \
		nsXFormsSetValueElement.cpp \
		nsXFormsSetIndexElement.cpp \
		nsXFormsInsertDeleteElement.cpp \
		nsXFormsLoadElement.cpp \
		nsXFormsMessageElement.cpp \
		nsXFormsMediatypeElement.cpp \
		nsXFormsLabelElement.cpp \
		nsXFormsToggleElement.cpp \
		nsXFormsCaseElement.cpp \
		nsXFormsSwitchElement.cpp \
		nsXFormsUploadElement.cpp \
		nsXFormsSelectElement.cpp \
		nsXFormsSelect1Element.cpp \
		nsXFormsItemElement.cpp \
		nsXFormsValueElement.cpp \
		nsXFormsChoicesElement.cpp \
		nsXFormsItemSetElement.cpp \
		nsXFormsSchemaValidator.cpp \
		nsXFormsNodeState.cpp \
		nsXFormsControlStub.cpp \
		nsXFormsUtilityService.cpp \
		nsXFormsDelegateStub.cpp \
		nsXFormsRangeElement.cpp \
		nsXFormsAccessors.cpp \
		nsXFormsRangeAccessors.cpp \
		nsXFormsCopyElement.cpp \
		nsXFormsRangeConditionAccessors.cpp \
		nsXFormsXPathFunctions.cpp \
		nsXFormsXPathState.cpp \
		nsXFormsDOMEvent.cpp \
		nsXFormsContextInfo.cpp \
		$(NULL)

# Standard Mozilla make rules
EXTRA_DSO_LDOPTS = \
		$(MOZ_COMPONENT_NSPR_LIBS) \
		$(LIBXUL_DIST)/lib/$(LIB_PREFIX)unicharutil_s.$(LIB_SUFFIX) \
		$(XPCOM_GLUE_LDOPTS) \
		$(NULL)

ifeq (,$(filter-out WINNT WINCE,$(OS_ARCH)))
EXTRA_DSO_LDOPTS += $(DIST)/lib/$(LIB_PREFIX)nss3.$(LIB_SUFFIX)
else
EXTRA_DSO_LDOPTS += $(LIBXUL_DIST)/lib/$(LIB_PREFIX)nss3$(DLL_SUFFIX)
endif

# Do not clean schema-validation on distclean, it should handle that itself
distclean:: LOOP_OVER_DIRS=

include $(topsrcdir)/config/rules.mk

# Temporary files that will be deleted on f.x. make clean
GARBAGE		+= install.js install.template
