# # ***** 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 \ nsIFileTest.cpp \ TestCallTemplates.cpp \ TestCOMPtr.cpp \ TestCOMPtrEq.cpp \ TestFactory.cpp \ TestHashtables.cpp \ TestID.cpp \ TestINIParser.cpp \ TestObserverService.cpp \ TestServMgr.cpp \ TestAutoPtr.cpp \ TestVersionComparator.cpp \ TestTextFormatter.cpp \ TestPipe.cpp \ TestPipes.cpp \ TestRacingServiceManager.cpp \ TestRegistrationOrder.cpp \ TestProxies.cpp \ TestThreadPoolListener.cpp \ TestTimers.cpp \ TestOOM.cpp \ $(NULL) ifndef MOZ_ENABLE_LIBXUL CPPSRCS += \ TestArray.cpp \ TestTArray.cpp \ TestAtoms.cpp \ TestAutoLock.cpp \ TestCRT.cpp \ TestEncoding.cpp \ TestPermanentAtoms.cpp \ TestThreads.cpp \ TestThreadPool.cpp \ TestXPIDLString.cpp \ TestDeque.cpp \ TestStrings.cpp \ TestStorageStream.cpp \ TestExpirationTracker.cpp \ $(NULL) endif ifndef MOZILLA_INTERNAL_API CPPSRCS += \ TestStringAPI.cpp \ $(NULL) endif SIMPLE_PROGRAMS = $(CPPSRCS:.cpp=$(BIN_SUFFIX)) include $(topsrcdir)/config/config.mk ifndef MOZILLA_INTERNAL_API LIBS += $(DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) endif LIBS += \ $(XPCOM_LIBS) \ $(NSPR_LIBS) \ $(NULL) # Needed to resolve __yylex (?) ifeq ($(OS_ARCH)$(OS_RELEASE),FreeBSD2) LIBS += -lpcap endif ENABLE_CXX_EXCEPTIONS = 1 XPCSHELL_TESTS = unit CPP_UNIT_TESTS = \ TestAutoPtr \ TestCOMPtr \ TestCOMPtrEq \ TestFactory \ TestHashtables \ TestID \ TestObserverService \ TestPipe \ TestPipes \ TestRacingServiceManager \ TestServMgr \ TestTextFormatter \ TestThreadPoolListener \ TestTimers \ $(NULL) ifndef MOZ_ENABLE_LIBXUL CPP_UNIT_TESTS += \ TestArray \ TestAutoLock \ TestCRT \ TestEncoding \ TestExpirationTracker \ TestProxies \ TestThreads \ TestThreadPool \ TestXPIDLString \ TestDeque \ TestStrings \ TestStorageStream \ TestTArray \ $(NULL) endif ifndef MOZILLA_INTERNAL_API CPP_UNIT_TESTS += \ TestStringAPI \ $(NULL) endif # Make sure we have symbols in case we need to debug these. MOZ_DEBUG_SYMBOLS = 1 include $(topsrcdir)/config/rules.mk LOCAL_INCLUDES = \ -I$(srcdir)/../ds \ -I$(srcdir)/services \ $(NULL) libs:: $(INSTALL) $(srcdir)/test.properties $(DIST)/bin/res install:: $(SYSINSTALL) $(IFLAGS1) $(srcdir)/test.properties $(DESTDIR)$(mozappdir)/res ifeq (,$(filter-out WINNT WINCE, $(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 TestVersionComparator tests" @$(PERL) -w $(srcdir)/TestVersionComparatorRunner.pl "$(RUN_TEST_PROGRAM) $(FINAL_TARGET)/TestVersionComparator$(BIN_SUFFIX)" @echo "Running nsTextFormatter tests" @$(RUN_TEST_PROGRAM) $(FINAL_TARGET)/TestTextFormatter$(BIN_SUFFIX) @$(EXIT_ON_ERROR) \ for f in $(CPP_UNIT_TESTS); do \ echo Running $$f; \ XPCOM_DEBUG_BREAK=stack-and-abort $(RUN_TEST_PROGRAM) $(DIST)/bin/$$f; \ echo Finished running $$f; \ done @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"