# # ***** 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): # # 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 = xpcom ifndef MOZ_ENABLE_LIBXUL MOZILLA_INTERNAL_API = 1 endif DIRS = dynamic services external ifeq ($(OS_ARCH),WINNT) DIRS += windows endif ifdef DEHYDRA_PATH DIRS += static-checker endif REQUIRES = \ string \ $(NULL) CPPSRCS = \ nsIFileEnumerator.cpp \ TestCallTemplates.cpp \ TestINIParser.cpp \ TestRacingServiceManager.cpp \ TestRegistrationOrder.cpp \ TestThreadPoolListener.cpp \ TestTimers.cpp \ TestOOM.cpp \ TestBlockingProcess.cpp \ TestQuickReturn.cpp \ TestArguments.cpp \ $(NULL) ifndef MOZ_ENABLE_LIBXUL CPPSRCS += \ TestAtoms.cpp \ TestPermanentAtoms.cpp \ $(NULL) endif SIMPLE_PROGRAMS := $(CPPSRCS:.cpp=$(BIN_SUFFIX)) CPP_UNIT_TESTS = \ TestAutoPtr.cpp \ TestCOMPtr.cpp \ TestCOMPtrEq.cpp \ TestFactory.cpp \ TestFile.cpp \ TestHashtables.cpp \ TestID.cpp \ TestObserverArray.cpp \ TestObserverService.cpp \ TestPipe.cpp \ TestServMgr.cpp \ TestTextFormatter.cpp \ $(NULL) ifndef MOZ_ENABLE_LIBXUL CPP_UNIT_TESTS += \ TestArray.cpp \ TestAutoLock.cpp \ TestCRT.cpp \ TestDeque.cpp \ TestEncoding.cpp \ TestExpirationTracker.cpp \ TestPipes.cpp \ TestProxies.cpp \ TestStorageStream.cpp \ TestStrings.cpp \ TestSynchronization.cpp \ TestTArray.cpp \ TestThreadPool.cpp \ TestThreads.cpp \ TestTimeStamp.cpp \ TestXPIDLString.cpp \ $(NULL) endif ifdef MOZ_DEBUG # FIXME bug 456272: testing assertion failures is fragile, # and TestDeadlockDetector doesn't like Windows ifneq ($(OS_ARCH), WINNT) ifneq ($(OS_ARCH), WINCE) CPP_UNIT_TESTS += \ TestDeadlockDetector.cpp \ TestDeadlockDetectorScalability.cpp \ $(NULL) endif endif endif ifndef MOZILLA_INTERNAL_API CPP_UNIT_TESTS += \ TestStringAPI.cpp \ $(NULL) endif include $(topsrcdir)/config/config.mk ifndef MOZILLA_INTERNAL_API LIBS += $(DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) endif LIBS += $(XPCOM_LIBS) # Needed to resolve __yylex (?) ifeq ($(OS_ARCH)$(OS_RELEASE),FreeBSD2) LIBS += -lpcap endif ifdef SOLARIS_SUNPRO_CXX CXXFLAGS += -features=extensions -D__FUNCTION__=__func__ endif ENABLE_CXX_EXCEPTIONS = 1 XPCSHELL_TESTS = unit # Make sure we have symbols in case we need to debug these. MOZ_DEBUG_SYMBOLS = 1 include $(topsrcdir)/config/rules.mk ifeq ($(OS_ARCH),WINCE) EXTRA_LIBS += libcmt.lib endif LOCAL_INCLUDES = \ -I$(srcdir)/../ds \ -I$(srcdir)/services \ $(NULL) libs:: $(INSTALL) $(srcdir)/test.properties $(DIST)/bin/res $(INSTALL) $(SIMPLE_PROGRAMS) $(DEPTH)/_tests/xpcshell/$(MODULE)/unit # Copy TestHarness.h into its own module, for ease of setting up includes # correctly. export:: $(NSINSTALL) -D $(DIST)/include/testing $(INSTALL) $(srcdir)/TestHarness.h $(DIST)/include/testing install:: $(SYSINSTALL) $(IFLAGS1) $(srcdir)/test.properties $(DESTDIR)$(mozappdir)/res ifeq (,$(filter-out WINNT WINCE os2-emx, $(HOST_OS_ARCH))) swapslashes = $(shell echo $(1) | sed -e 's|/|\\|g') getnativepath = $(call swapslashes,$(call normalizepath,$(1))) else getnativepath = $(1) endif abs_srcdir = $(shell cd $(srcdir) && pwd) check:: @echo "Running XPIDL tests" $(XPIDL_COMPILE) -m header $(srcdir)/TestScriptable.idl @if grep Notscriptable TestScriptable.h | grep -q NS_SCRIPTABLE ; then \ echo "Nonscriptable object marked scriptable by xpidl"; \ exit 1; \ fi @if test $$( grep 'NS_IMETHOD[^I].*Scriptable' TestScriptable.h | grep -v -c NS_SCRIPTABLE ) != 0 ; then \ echo "Scriptable object marked nonscriptable by xpidl"; \ exit 1; \ fi rm -f $(DIST)/bin/components/compreg.dat; \ regOrderDir="$(call getnativepath,$(abs_srcdir)/regorder)"; \ XPCOM_DEBUG_BREAK=stack-and-abort $(RUN_TEST_PROGRAM) \ $(DIST)/bin/TestRegistrationOrder$(BIN_SUFFIX) "$$regOrderDir"