# ---------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (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.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ---------------------------------------------------------------------------

cc_sources = \
    TestRegistry.cpp \
    activemq/test/AsyncSenderTest.cpp \
    activemq/test/BulkMessageTest.cpp \
    activemq/test/CmsConnectionStartStopTest.cpp \
    activemq/test/CmsSendWithAsyncCallbackTest.cpp \
    activemq/test/CmsTemplateTest.cpp \
    activemq/test/DurableTest.cpp \
    activemq/test/ExpirationTest.cpp \
    activemq/test/JmsMessageGroupsTest.cpp \
    activemq/test/MapMessageTest.cpp \
    activemq/test/MessageCompressionTest.cpp \
    activemq/test/MessagePriorityTest.cpp \
    activemq/test/QueueBrowserTest.cpp \
    activemq/test/SimpleRollbackTest.cpp \
    activemq/test/SimpleTest.cpp \
    activemq/test/SlowListenerTest.cpp \
    activemq/test/TransactionTest.cpp \
    activemq/test/VirtualTopicTest.cpp \
    activemq/test/openwire/OpenWireCmsSendWithAsyncCallbackTest.cpp \
    activemq/test/openwire/OpenWireRedeliveryPolicyTest.cpp \
    activemq/test/openwire/OpenwireAdvisorysTest.cpp \
    activemq/test/openwire/OpenwireAsyncSenderTest.cpp \
    activemq/test/openwire/OpenwireClientAckTest.cpp \
    activemq/test/openwire/OpenwireCmsConnectionStartStopTest.cpp \
    activemq/test/openwire/OpenwireCmsTemplateTest.cpp \
    activemq/test/openwire/OpenwireDurableTest.cpp \
    activemq/test/openwire/OpenwireEnhancedConnectionTest.cpp \
    activemq/test/openwire/OpenwireExpirationTest.cpp \
    activemq/test/openwire/OpenwireIndividualAckTest.cpp \
    activemq/test/openwire/OpenwireJmsMessageGroupsTest.cpp \
    activemq/test/openwire/OpenwireJmsRecoverTest.cpp \
    activemq/test/openwire/OpenwireMapMessageTest.cpp \
    activemq/test/openwire/OpenwireMessageCompressionTest.cpp \
    activemq/test/openwire/OpenwireMessagePriorityTest.cpp \
    activemq/test/openwire/OpenwireNonBlockingRedeliveryTest.cpp \
    activemq/test/openwire/OpenwireOptimizedAckTest.cpp \
    activemq/test/openwire/OpenwireQueueBrowserTest.cpp \
    activemq/test/openwire/OpenwireSimpleRollbackTest.cpp \
    activemq/test/openwire/OpenwireSimpleTest.cpp \
    activemq/test/openwire/OpenwireSlowListenerTest.cpp \
    activemq/test/openwire/OpenwireTempDestinationTest.cpp \
    activemq/test/openwire/OpenwireTransactionTest.cpp \
    activemq/test/openwire/OpenwireVirtualTopicTest.cpp \
    activemq/test/openwire/OpenwireXATransactionsTest.cpp \
    activemq/test/stomp/StompAsyncSenderTest.cpp \
    activemq/test/stomp/StompBulkMessageTest.cpp \
    activemq/test/stomp/StompCmsConnectionStartStopTest.cpp \
    activemq/test/stomp/StompCmsTemplateTest.cpp \
    activemq/test/stomp/StompDurableTest.cpp \
    activemq/test/stomp/StompExpirationTest.cpp \
    activemq/test/stomp/StompJmsMessageGroupsTest.cpp \
    activemq/test/stomp/StompSimpleRollbackTest.cpp \
    activemq/test/stomp/StompSimpleTest.cpp \
    activemq/test/stomp/StompSlowListenerTest.cpp \
    activemq/test/stomp/StompTransactionTest.cpp \
    activemq/util/CMSListener.cpp \
    activemq/util/CMSProvider.cpp \
    activemq/util/IntegrationCommon.cpp \
    main.cpp \
    util/teamcity/TeamCityProgressListener.cpp


h_sources = \
    activemq/test/AsyncSenderTest.h \
    activemq/test/BulkMessageTest.h \
    activemq/test/CMSTestFixture.h \
    activemq/test/CmsConnectionStartStopTest.h \
    activemq/test/CmsSendWithAsyncCallbackTest.h \
    activemq/test/CmsTemplateTest.h \
    activemq/test/DurableTest.h \
    activemq/test/ExpirationTest.h \
    activemq/test/JmsMessageGroupsTest.h \
    activemq/test/MapMessageTest.h \
    activemq/test/MessageCompressionTest.h \
    activemq/test/MessagePriorityTest.h \
    activemq/test/QueueBrowserTest.h \
    activemq/test/SimpleRollbackTest.h \
    activemq/test/SimpleTest.h \
    activemq/test/SlowListenerTest.h \
    activemq/test/TransactionTest.h \
    activemq/test/VirtualTopicTest.h \
    activemq/test/openwire/OpenWireCmsSendWithAsyncCallbackTest.h \
    activemq/test/openwire/OpenWireRedeliveryPolicyTest.h \
    activemq/test/openwire/OpenwireAdvisorysTest.h \
    activemq/test/openwire/OpenwireAsyncSenderTest.h \
    activemq/test/openwire/OpenwireClientAckTest.h \
    activemq/test/openwire/OpenwireCmsConnectionStartStopTest.h \
    activemq/test/openwire/OpenwireCmsTemplateTest.h \
    activemq/test/openwire/OpenwireDurableTest.h \
    activemq/test/openwire/OpenwireEnhancedConnectionTest.h \
    activemq/test/openwire/OpenwireExpirationTest.h \
    activemq/test/openwire/OpenwireIndividualAckTest.h \
    activemq/test/openwire/OpenwireJmsMessageGroupsTest.h \
    activemq/test/openwire/OpenwireJmsRecoverTest.h \
    activemq/test/openwire/OpenwireMapMessageTest.h \
    activemq/test/openwire/OpenwireMessageCompressionTest.h \
    activemq/test/openwire/OpenwireMessagePriorityTest.h \
    activemq/test/openwire/OpenwireNonBlockingRedeliveryTest.h \
    activemq/test/openwire/OpenwireOptimizedAckTest.h \
    activemq/test/openwire/OpenwireQueueBrowserTest.h \
    activemq/test/openwire/OpenwireSimpleRollbackTest.h \
    activemq/test/openwire/OpenwireSimpleTest.h \
    activemq/test/openwire/OpenwireSlowListenerTest.h \
    activemq/test/openwire/OpenwireTempDestinationTest.h \
    activemq/test/openwire/OpenwireTransactionTest.h \
    activemq/test/openwire/OpenwireVirtualTopicTest.h \
    activemq/test/openwire/OpenwireXATransactionsTest.h \
    activemq/test/stomp/StompAsyncSenderTest.h \
    activemq/test/stomp/StompBulkMessageTest.h \
    activemq/test/stomp/StompCmsConnectionStartStopTest.h \
    activemq/test/stomp/StompCmsTemplateTest.h \
    activemq/test/stomp/StompDurableTest.h \
    activemq/test/stomp/StompExpirationTest.h \
    activemq/test/stomp/StompJmsMessageGroupsTest.h \
    activemq/test/stomp/StompSimpleRollbackTest.h \
    activemq/test/stomp/StompSimpleTest.h \
    activemq/test/stomp/StompSlowListenerTest.h \
    activemq/test/stomp/StompTransactionTest.h \
    activemq/util/CMSListener.h \
    activemq/util/CMSProvider.h \
    activemq/util/IntegrationCommon.h \
    util/teamcity/TeamCityProgressListener.h


## Compile this as part of make check
check_PROGRAMS = activemq-test-integration

## 
## Compiler/Linker Options
##
activemq_test_integration_SOURCES = $(cc_sources)
activemq_test_integration_CXXFLAGS = $(AMQ_TEST_CXXFLAGS) -I$(srcdir)/../main @CPPUNIT_CFLAGS@
activemq_test_integration_LDADD= $(AMQ_TEST_LIBS) @CPPUNIT_LIBS@

