[ https://issues.apache.org/jira/browse/QPID-1675?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Justin Ross closed QPID-1675. ----------------------------- > add Windows build and test notes to wiki > ---------------------------------------- > > Key: QPID-1675 > URL: https://issues.apache.org/jira/browse/QPID-1675 > Project: Qpid > Issue Type: Improvement > Components: Build Tools, C++ Broker, C++ Client, Interop Testing, > Python Test Suite, Website > Affects Versions: M4 > Environment: Hardware: > Any > Windows: > > Windows Vista (64 bit) > Windows Server 2008 (64 bit). > Windows XP (32 bit) > Visual Studio: > Visual Studio 2008 Express (32 bit C++ package) > Visual Studio Team Suite 2008 (32 bit and 64 bit C++ packages) > Visual Studio 2008 Professional (32 bit and 64 bit C++ packages) > Reporter: Vince Seavello > Assignee: Steve Huston > Priority: Trivial > Labels: starter > Fix For: 0.6 > > > 1) Introduction > The following are notes for building and testing QPID M4 on Windows. > This document is split into 4 sections: > - setup for building QPID M4 on Windows. This includes > obtaining sources, supporting technologies, installation > and configuration of the build environment. > - building QPID M4 on Windows. > - running the Linux test suites against the Windows QPID > broker. > - building the tests on a Windows system. > These notes are intended to highlight issues discovered during the build and > testing of QPID on Windows. It's a work in progress. > Comments welcome. > 2) Setup of QPID M4 on Windows > 2.1) Obtaining the sources > M4 C++ broker and client source archive is available on the QPID web site. > http://www.apache.org/dist/qpid/M4/qpid-cpp-M4.tar.gz > The sources contained here will build a Static_Debug version of the broker > and client libraries. To be able to build a Static_Release version, replace > the file cpp/src/qpid/InlineAllocator.h with the M5 version of the file: > > https://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/src/qpid/InlineAllocator.h > 2.2) Setting up for the build > Builds have been taking place using a variety of platforms and versions > of Visual Studio. Platforms include: > Windows: > Windows Vista (64 bit) > Windows Server 2008 (64 bit). > Windows XP (32 bit) > Visual Studio: > Visual Studio 2008 Express (32 bit C++ package) > Visual Studio Team Suite 2008 (32 bit and 64 bit C++ packages) > Visual Studio 2008 Professional (32 bit and 64 bit C++ packages) > 2.3) Technologies Dependencies > 2.3.1) boost > The stated requirement is boost 1.35.0. 1.36.0 is also being tested in > our labs. There are only a few version compatibility issues detected. > You can find install images for boost at: > http://www.boostpro.com/boost_1_35_0_setup.exe > http://www.boostpro.com/boost_1_36_0_setup.exe > Once you've installed one of these, set your environment variables: > for 1.35.0: > BOOST_ROOT = C:\Program Files (x86)\boost\boost_1_35_0 > BOOST_VERSION = 103500 > for 1.36.0: > BOOST_ROOT = C:\Program Files (x86)\boost\boost_1_36_0 > BOOST_VERSION = 103600 > > Note: "Program Files (x86)" is "Program Files" on the 32 bit system. > The boost libs are 32 bit. When building on a 64 bit system the 32 > bit boost libs are installed in "Program Files (x86)". 64 bit boost > build is being looked into. > 2.3.2) python > Use Python 2.6, which is the stated requirement for the QPID build. > Pick up a copy at: > http://www.python.org/ftp/python/2.6/python-2.6.msi > You must include the python directory in the environment variable PATH. > Typically, python is installed in: > C:\python26 > test to see that python is installed correctly and that you have the > correct version: > C:\>python --version > Python 2.6.1 > 2.3.3) ruby > Use Ruby 1.8.6, which is the required version. Pick up a copy at: > http://rubyforge.org/frs/?group_id=167 > You must include the ruby directory in the environment variable PATH. > Typically, ruby is installed in: > C:\ruby\bin > test to see that ruby is installed correctly and that you have the > correct version: > C:\>ruby -v > ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32] > 2.4) Build tools > The QPID build environment on Windows are centered around Visual Studio C++ > Development tools. There is an effort to reduce the overhead of the QPID > build so developers who are unfamiliar with the Visual Studio IDE can build > and test on Windows with as minimal an effort as possible. > 2.4.1) Visual Studio > Microsoft makes Visual Studio Express available at no charge. You can find > it online at the following location: > > http://www.microsoft.com/downloads/details.aspx?FamilyID=3254c868-bcb9-412c-95c6-d100c872ec60&DisplayLang=en > 2.5) M4 preparation > 2.5.1) Initial environment configuration > Most of the prep is in the installation of the helper apps, Visual Studio, > source extraction and patching. When that's all done, there is one more step > you still need to do before you can build anything. > Using the Visual Studio's Command Prompt, change directory to qpid/cpp/src > and run: > nmake protocol_gen.mak > 2.5.2) source changes > The described source fix needed to be able to get a clean Static_Release build > from M4 is listed above. This fix wasn't available before M4 was finalized, so > it was added in M5. > Other fixes may be available in M5 to address other issues, but haven't been > tried in this environment. > Any changes made to source files during this investigation haven't been > submitted. > They are presented here for what they're worth. Diffs of source changes are > appended > at the end of this document. > 2.5.3) Debug vs Release > When building QPID, you may want to change from building static debug to > static release. There are several ways to do this. Look in the tool bar > at the top of the Visual Studio window. Locate the pulldown selection box > that contains the value "Debug" or "Release". Change the value to whichever > active solution configuration you would like to produce. All built > objects/executables will be found in the subdirectories Static_Debug or > Static_Release, depending on your active solution configuration. > 3) Building QPID M4 on Windows > 3.1) QPID Project Files > Visual Studio uses special configuration files to identify the "solution" and > "project" parameters. These are made available in .sln and .vcproj files. > There are a smattering of these files in the M4 source tree, and more are > being > added to the M5 tree as time goes on. > For QPID, look for the following: > qpid/cpp/src/qpid.sln > qpid/cpp/src/broker.vcproj > qpid/cpp/src/client.vcproj > qpid/cpp/src/common.vcproj > qpid/cpp/src/MaxMethodBodySize.vcproj > When you open the solution, you can choose to build the entire solution, or > just a project within. The executables and objects will be in Static_Release > or Static_Debug, depending on your build settings. > Select the solution in the solution explorer pane. Right mouse click and > choose "Build Solution". When complete, you should have built the libraries > and qpidbroker.exe. > 3.2) Libraries > The Windows QPID M4 build will produce 2 libraries: > qpidclients.lib > qpidcommons.lib > The Linux build will also produce a broker library. The Windows build > links the broker source objects directly into the broker, but doesn't > add them to a library. A broker library will be needed for the building > of some tests. > The build of the broker will have compiled all the source objects which > are to live in the broker library. By creating a library by hand we will > be able to link the tests that require the broker library. See libs.mk > later in this document (section 5.4.1). > Libraries are placed in cpp/src. > Our efforts don't include building the qmfconsole library yet, so no > status on that. > 4) Testing AMQP from a Linux system > There isn't a "push button" build and test for Windows. In fact, in M4 > there are relatively few tests that build for Windows. However, the > tests do run on Linux. The Windows broker can be tested by running the > test suites from a Linux platform. > 4.1) localhost vs distributed > The test suites as they are built and run on Linux assume brokers and > tests are running on the localhost. There are a few that try to use ssh > to start and stop processes on a remote host. But, the majority of the > tests start brokers locally, look for PID files and run the tests against > the local brokers. > In order to use these tests against a remote Windows broker, some > modifications will be necessary. These changes are outlined later > in this document. > 4.2) test harnesses > QPID makes use of the boost test framework for some of it's tests, > but there are a number of different tools and programming methods > used. These are: > make - Building and running the tests from the makefile. > Provides a convenient way to produce a push button QPID. > The makefiles allow selection of subsets of tests and > provide some command parameters to the test framework. > boost - Boost provides libraries and header files for > putting together test cases, test suites and overall > test execution control. > /bin/sh shell - the "bridge" between make and the test > cases is handled through shell scripts and other tools, > like valgrind and libtool. There are makefile variables > that can control how some of these tools are utilized. > python - There is a separate python directory with test > cases and test suites. These tests are initiated from > the makefile by calling a wrapper boost test case called > python_tests. > C++ - The .cpp source files in the tests directory are > the main consumers of the boost framework. They typically > provide a common command line interface that every test > shares, as well as additional options specific to the > test itself. Many of these tests have multiple test cases > within and are controlled, to some fashion, by the command > line options. > At the top level is the make file. To initiate the tests, type the > following: > make check > This will build all the QPID sources and tests. After all has been > built, the test suites are run. There are several options you can > use when using make to narrow down the running of the tests. > You can select a specific list of test suites by setting the variable > TESTS: > make check TESTS=perftest > These command line options have been helpful in isolating the various > test suites. > The makefile uses the script run_test to initiate the indicated > test. In most cases, the test being requested is front-ended by a > shell script generated during the make process. > The run_test script can pass command line options through to the > called program, but the makefile isn't set up to send much in the > way of options. Many of the lower level test programs have an option > that accepts a broker address on the command line. In some cases, > the intermediate scripts have a broker option, too. > In order to use the Linux tests against the Windows broker, the > tests have to be redirected to the remote broker address. Rather > than modify the structure of the Makefile.am file used to generate > the final makefile, the broker address can be passed to the tests > in the execution environment. The modified command line invocation > then looks like this: > BROKER="IP_Address" make check TESTS="fanout_perftest" > The run_test script can be modified to look for a broker address > environment variable. Because run_test is used to start many of > the test programs, sometimes the broker address should not to be > passed through. In particular, the broker address is not necessary > when starting and stopping localhost brokers. The run_test script > determines when to pass the broker address by looking at the program > name. > Alternatively, tests can be run directly. The fanout perftest > example can be run like this: > ./perftest --summary --count 30000 --broker IP_Address \ > --mode fanout --npubs 16 --nsubs 16 --size 64 > The python tests can be run by changing directory to the python > test dir and using one of the following command lines: > ./run-tests --skip-self-test -v -s 0-10-errata \ > -I cpp_failing_0-10.txt \ > -b 10.197.62.244:5672 > ./run-tests -v -s 0-10-errata -I cpp_failing_0-10.txt \ > -b 10.197.62.244:5672 > ./run-tests -v -s 0-10-errata -b 10.197.62.244:5672 > 4.3) Changes to Linux tests > Some of the tests, or scripts that initiate the tests, have the > localhost address hardcoded, or look for a broker PID in a local > file. A majority of the changes made to allow the tests to be run > from a Linux system to a Wondows broker deal with this limitation. > The tests that were run successfully against the Windows broker > from a Linux system are: > client_test > quick_perftest > quick_topictest > python_tests > run_federation_tests > fanout_perftest > shared_perftest > multiq_perftest > topic_perftest > txtest > latencytest > echotest > benchmark > 5) Building tests on Windows > The Linux test environment makes use of tools, scripts and methods > that don't work on a Windows platform. These issues will have to be > addressed before a "push button" test can be accomplished similar > to that on the Linux system. > In the mean time, the test programs can be built on a Windows platform > and run by hand. The following sections talk about this. > 5.1) quick and dirty modifications > The modifications described here do not represent "best practice" > coding methodologies. They are presented for information sake. > The following files required some sort of modification to build on > Windows. A diff listing will be added to the end of this document. > cpp/src/tests/ClientSessionTest.cpp > cpp/src/tests/FieldTable.cpp > cpp/src/tests/MessageBuilderTest.cpp > cpp/src/tests/MessageTest.cpp > cpp/src/tests/QueueOptionsTest.cpp > cpp/src/tests/TimerTest.cpp > cpp/src/tests/Uuid.cpp > cpp/src/tests/logging.cpp > cpp/src/tests/perftest.cpp > cpp/src/tests/topic_listener.cpp > cpp/src/tests/topic_publisher.cpp > cpp/src/tests/unit_test.h > While the following needed modification, the have been excluded > from the build due to larger porting issues. > cpp/src/tests/ForkedBroker.h > cpp/src/tests/failover_soak.cpp > cpp/src/tests/ConsoleTest.cpp > 5.2) nmake environment > A small handful of make files have been created to use on a Windows > platform to build the various test programs. The nmake utility is used > with these files to perform the compilation. > tests/libs.mk > tests/tests.mk > 5.3) diff listings > ========================================== > cpp/src/tests/ClientSessionTest.cpp > 38a39,44 > > #if defined(_WIN32) > > # include <windows.h> > > # include <winbase.h> > > #endif > > > > > 225a232,234 > > #if defined(_WIN32) > > Sleep(1000); > > #else > 226a236 > > #endif > 277a288,290 > > #if defined(_WIN32) > > Sleep(2000); > > #else > 278a292 > > #endif > 291a306,308 > > #if defined(_WIN32) > > ::Sleep(300* 1); > > #else > 292a310 > > #endif > ========================================== > cpp/src/tests/FieldTable.cpp > 25c25,27 > < #include <alloca.h> > --- > > #if !defined (_WIN32) > > # include <alloca.h> > > #endif > ========================================== > cpp/src/tests/MessageBuilderTest.cpp > 39c39 > < uint64_t id; > --- > > boost::uint64_t id; > 215c215 > < BOOST_CHECK_EQUAL((uint64_t) 1, > builder.getMessage()->getPersistenceId()); > --- > > BOOST_CHECK_EQUAL((boost::uint64_t) 1, > builder.getMessage()->getPersistenceId()); > ========================================== > cpp/src/tests/MessageTest.cpp > 31c31,33 > < #include <alloca.h> > --- > > #if !defined (_WIN32) > > # include <alloca.h> > > #endif > 81,82c83,84 > < BOOST_CHECK_EQUAL((uint64_t) data1.size() + data2.size(), > msg->contentSize()); > < BOOST_CHECK_EQUAL((uint64_t) data1.size() + data2.size(), > msg->getProperties<MessageProperties>()->getContentLength()); > --- > > BOOST_CHECK_EQUAL((boost::uint64_t) data1.size() + data2.size(), > msg->contentSize()); > > BOOST_CHECK_EQUAL((boost::uint64_t) data1.size() + data2.size(), > msg->getProperties<MessageProperties>()->getContentLength()); > 85c87 > < BOOST_CHECK_EQUAL((uint8_t) PERSISTENT, > msg->getProperties<DeliveryProperties>()->getDeliveryMode()); > --- > > BOOST_CHECK_EQUAL((boost::uint8_t) PERSISTENT, > msg->getProperties<DeliveryProperties>()->getDeliveryMode()); > ========================================== > cpp/src/tests/QueueOptionsTest.cpp > 24c24,26 > < #include <alloca.h> > --- > > #if !defined(_WIN32) > > # include <alloca.h> > > #endif > ========================================== > cpp/src/tests/TimerTest.cpp > 78c78 > < uint64_t difference = abs(expected - actual); > --- > > uint64_t difference = abs((long)(expected - actual)); > ========================================== > cpp/src/tests/Uuid.cpp > 25c25,27 > < #include <alloca.h> > --- > > #if !defined(_WIN32) > > # include <alloca.h> > > #endif > ========================================== > cpp/src/tests/logging.cpp > 25a26 > > # include "qpid/log/windows/SinkOptions.h" > 272a274,276 > > #if defined(_WIN32) > > qpid::log::windows::SinkOptions sinks("test"); > > #else > 273a278 > > #endif > 288a294,296 > > #if defined(_WIN32) > > qpid::log::windows::SinkOptions sinks("test"); > > #else > 289a298 > > #endif > 347a357,360 > > #if defined(_WIN32) > > qpid::log::windows::SinkOptions *sinks = > > dynamic_cast<qpid::log::windows::SinkOptions > *>(opts.sinkOptions.get()); > > #else > 349a363 > > #endif > ========================================== > cpp/src/tests/perftest.cpp > 41c41,43 > < #include <unistd.h> > --- > > #if !defined(_WIN32) > > # include <unistd.h> > > #endif > ========================================== > cpp/src/tests/topic_listener.cpp > 43a44,46 > > #if defined(_WIN32) > > # include <process.h> > > #endif > ========================================== > cpp/src/tests/topic_publisher.cpp > 43c43,45 > < #include <unistd.h> > --- > > #if !defined(_WIN32) > > # include <unistd.h> > > #endif > ========================================== > cpp/src/tests/unit_test.h > 56c56 > < #if (BOOST_VERSION < 103600) > --- > > #if (BOOST_VERSION <= 103600) > 5.4) make files > Once the Visual Studio build has been run, the objects for the > broker are available and can be combined into a broker library. > This nmake file can be used in the tests directory to create the > library. This will be necessary to build the unit_test test suite. > From the tests directory you can run nmake with the tests.mk file > listed below to build the tests. This build file does not build > the files: > ConsoleTest.cpp > failover_soak.cpp > 5.4.1) lib.mk > C89_COMPILER=C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/bin/cl.exe > C89_LINKER=C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/bin/link.exe > LINK="link.exe" > OBJEXT=.obj > INCLUDES=/I "C:/Program Files (x86)/boost/boost_1_36_0/include/103600" /I > "C:/Program Files (x86)/boost/boost_1_36_0/." /I "." /I ".." /I "../gen" > FLAGS=/D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_CRT_NONSTDC_NO_WARNINGS" /D > "NOMINMAX" /D "WIN32_LEAN_AND_MEAN" /D "_SCL_SECURE_NO_WARNINGS" /D > "_CRT_SECURE_NO_WARNINGS" /FD /EHsc /MT /W3 /c /TP /wd4244 /wd4800 /wd4290 > /wd4355 > LIBS=ws2_32.lib secur32.lib rpcrt4.lib kernel32.lib user32.lib gdi32.lib > winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib > uuid.lib odbc32.lib odbccp32.lib > LDFLAGS=/INCREMENTAL:NO /LIBPATH:"." /LIBPATH:"C:\Program Files > (x86)\boost\boost_1_36_0\lib" /DEBUG /SUBSYSTEM:CONSOLE /OPT:REF /OPT:ICF > /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /nologo /errorReport:prompt > RELDIR=Static_Release > ROOTDIR=C:\Users\v-vinsea\Dev\AMQP\qpid-M4\cpp\src\tests > check_PROGRAMS= > check_LTLIBRARIES= > TESTS= > EXTRA_DIST= > CLEANFILES= > .cpp$(OBJEXT): > echo $(CC) /O2 $(INCLUDES) $(FLAGS) > /Fo"..\Static_Release\qmfconsole/I386//" > /Fd"..\Static_Release\qmfconsole/I386/vc90.pdb" $< > broker_OBJECTS=../Static_Release/broker/I386/Acl.obj \ > ../Static_Release/broker/I386/Agent.obj \ > ../Static_Release/broker/I386/Binding.obj \ > ../Static_Release/broker/I386/Bridge.obj \ > ../Static_Release/broker/I386/Bridge2.obj \ > ../Static_Release/broker/I386/Broker.obj \ > ../Static_Release/broker/I386/Broker2.obj \ > ../Static_Release/broker/I386/BrokerDefaults.obj \ > ../Static_Release/broker/I386/BrokerSingleton.obj \ > ../Static_Release/broker/I386/Connection.obj \ > ../Static_Release/broker/I386/Connection2.obj \ > ../Static_Release/broker/I386/Connection3.obj \ > ../Static_Release/broker/I386/ConnectionFactory.obj \ > ../Static_Release/broker/I386/ConnectionHandler.obj \ > ../Static_Release/broker/I386/DeliverableMessage.obj \ > ../Static_Release/broker/I386/DeliveryRecord.obj \ > ../Static_Release/broker/I386/DirectExchange.obj \ > ../Static_Release/broker/I386/DtxAck.obj \ > ../Static_Release/broker/I386/DtxBuffer.obj \ > ../Static_Release/broker/I386/DtxManager.obj \ > ../Static_Release/broker/I386/DtxTimeout.obj \ > ../Static_Release/broker/I386/DtxWorkRecord.obj \ > ../Static_Release/broker/I386/EventAllow.obj \ > ../Static_Release/broker/I386/EventBind.obj \ > ../Static_Release/broker/I386/EventBrokerLinkDown.obj \ > ../Static_Release/broker/I386/EventBrokerLinkUp.obj \ > ../Static_Release/broker/I386/EventClientConnect.obj \ > ../Static_Release/broker/I386/EventClientConnectFail.obj \ > ../Static_Release/broker/I386/EventClientDisconnect.obj \ > ../Static_Release/broker/I386/EventDeny.obj \ > ../Static_Release/broker/I386/EventExchangeDeclare.obj \ > ../Static_Release/broker/I386/EventExchangeDelete.obj \ > ../Static_Release/broker/I386/EventFileLoadFailed.obj \ > ../Static_Release/broker/I386/EventFileLoaded.obj \ > ../Static_Release/broker/I386/EventQueueDeclare.obj \ > ../Static_Release/broker/I386/EventQueueDelete.obj \ > ../Static_Release/broker/I386/EventSubscribe.obj \ > ../Static_Release/broker/I386/EventUnbind.obj \ > ../Static_Release/broker/I386/EventUnsubscribe.obj \ > ../Static_Release/broker/I386/Exchange.obj \ > ../Static_Release/broker/I386/Exchange2.obj \ > ../Static_Release/broker/I386/ExchangeRegistry.obj \ > ../Static_Release/broker/I386/FanOutExchange.obj \ > ../Static_Release/broker/I386/HeadersExchange.obj \ > ../Static_Release/broker/I386/IncompleteMessageList.obj \ > ../Static_Release/broker/I386/Link.obj \ > ../Static_Release/broker/I386/Link2.obj \ > ../Static_Release/broker/I386/LinkRegistry.obj \ > ../Static_Release/broker/I386/ManagementBroker.obj \ > ../Static_Release/broker/I386/ManagementExchange.obj \ > ../Static_Release/broker/I386/Message.obj \ > ../Static_Release/broker/I386/MessageAdapter.obj \ > ../Static_Release/broker/I386/MessageBuilder.obj \ > ../Static_Release/broker/I386/MessageStoreModule.obj \ > ../Static_Release/broker/I386/NameGenerator.obj \ > ../Static_Release/broker/I386/NullMessageStore.obj \ > ../Static_Release/broker/I386/Package.obj \ > ../Static_Release/broker/I386/Package2.obj \ > ../Static_Release/broker/I386/PersistableMessage.obj \ > ../Static_Release/broker/I386/QpiddBroker.obj \ > ../Static_Release/broker/I386/Queue.obj \ > ../Static_Release/broker/I386/Queue2.obj \ > ../Static_Release/broker/I386/QueueBindings.obj \ > ../Static_Release/broker/I386/QueueCleaner.obj \ > ../Static_Release/broker/I386/QueueListeners.obj \ > ../Static_Release/broker/I386/QueuePolicy.obj \ > ../Static_Release/broker/I386/QueueRegistry.obj \ > ../Static_Release/broker/I386/RateTracker.obj \ > ../Static_Release/broker/I386/RecoveredDequeue.obj \ > ../Static_Release/broker/I386/RecoveredEnqueue.obj \ > ../Static_Release/broker/I386/RecoveryManagerImpl.obj \ > ../Static_Release/broker/I386/SaslAuthenticator.obj \ > ../Static_Release/broker/I386/SemanticState.obj \ > ../Static_Release/broker/I386/Session.obj \ > ../Static_Release/broker/I386/SessionAdapter.obj \ > ../Static_Release/broker/I386/SessionHandler.obj \ > ../Static_Release/broker/I386/SessionManager.obj \ > ../Static_Release/broker/I386/SessionState.obj \ > ../Static_Release/broker/I386/System.obj \ > ../Static_Release/broker/I386/System2.obj \ > ../Static_Release/broker/I386/TCPIOPlugin.obj \ > ../Static_Release/broker/I386/Timer.obj \ > ../Static_Release/broker/I386/TopicExchange.obj \ > ../Static_Release/broker/I386/TxAccept.obj \ > ../Static_Release/broker/I386/TxBuffer.obj \ > ../Static_Release/broker/I386/TxPublish.obj \ > ../Static_Release/broker/I386/Vhost.obj \ > ../Static_Release/broker/I386/Vhost2.obj \ > ../Static_Release/broker/I386/qpidd.obj > qmfconsole_OBJECTS=../Static_Release/qmfconsole/I386/ClassKey.obj > lib: > lib.exe /OUT:"../qpidbrokers.lib" $(broker_OBJECTS) > 5.4.2) tests.mk > C89_COMPILER=C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/bin/cl.exe > C89_LINKER=C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/bin/link.exe > LINK="link.exe" > OBJEXT=.obj > EXEEXT=.exe > INCLUDES=/I "C:/Program Files (x86)/boost/boost_1_36_0/include/103600" /I > "C:/Program Files (x86)/boost/boost_1_36_0/." /I "." /I ".." /I "../gen" > FLAGS=/D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_CRT_NONSTDC_NO_WARNINGS" /D > "NOMINMAX" /D "WIN32_LEAN_AND_MEAN" /D "_SCL_SECURE_NO_WARNINGS" /D > "_CRT_SECURE_NO_WARNINGS" /FD /EHsc /MT /W3 /c /TP /wd4244 /wd4800 /wd4290 > /wd4355 > lib_client=..\qpidclients.lib > lib_common=..\qpidcommons.lib > lib_broker=..\qpidbrokers.lib > #lib_console=..\qmfconsoles.lib > LDLIBS=..\qpidclients.lib ..\qpidcommons.lib ..\qpidbrokers.lib > LIBS=ws2_32.lib secur32.lib rpcrt4.lib kernel32.lib user32.lib gdi32.lib > winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib > uuid.lib odbc32.lib odbccp32.lib > LDFLAGS=/INCREMENTAL:NO /LIBPATH:"." /LIBPATH:"C:\Program Files > (x86)\boost\boost_1_36_0\lib" /DEBUG /SUBSYSTEM:CONSOLE /OPT:REF /OPT:ICF > /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /nologo /errorReport:prompt > RELDIR=Static_Release > OBJDIR=$(RELDIR)/tests/I386 > #UNIT_TEST_OBJDIR=$(RELDIR)/unit_test/I386 > ROOTDIR=C:\Users\v-vinsea\Dev\AMQP\qpid-M4\cpp\src\tests > check_PROGRAMS= > check_LTLIBRARIES= > TESTS= > EXTRA_DIST= > CLEANFILES= > SOURCES= > UNIT_TEST_OBJECTS= > unit_test_SOURCES= \ > ConsoleTest.cpp \ > unit_test.cpp \ > exception_test.cpp \ > RefCounted.cpp \ > SessionState.cpp Blob.cpp logging.cpp \ > AsyncCompletion.cpp \ > Url.cpp Uuid.cpp \ > Shlib.cpp FieldValue.cpp FieldTable.cpp Array.cpp \ > QueueOptionsTest.cpp \ > InlineAllocator.cpp \ > InlineVector.cpp \ > ClientSessionTest.cpp \ > SequenceSet.cpp \ > StringUtils.cpp \ > IncompleteMessageList.cpp \ > RangeSet.cpp \ > AtomicValue.cpp \ > QueueTest.cpp \ > AccumulatedAckTest.cpp \ > DtxWorkRecordTest.cpp \ > DeliveryRecordTest.cpp \ > ExchangeTest.cpp \ > HeadersExchangeTest.cpp \ > MessageTest.cpp \ > QueueRegistryTest.cpp \ > QueuePolicyTest.cpp \ > FramingTest.cpp \ > HeaderTest.cpp \ > SequenceNumberTest.cpp \ > TimerTest.cpp \ > TopicExchangeTest.cpp \ > TxBufferTest.cpp \ > TxPublishTest.cpp \ > MessageBuilderTest.cpp \ > ManagementTest.cpp \ > MessageReplayTracker.cpp > perftest_SOURCES=perftest.cpp > txtest_SOURCES=txtest.cpp > latencytest_SOURCES=latencytest.cpp > echotest_SOURCES=echotest.cpp > client_test_SOURCES=client_test.cpp > topic_listener_SOURCES=topic_listener.cpp > topic_publisher_SOURCES=topic_publisher.cpp > publish_SOURCES=publish.cpp > consume_SOURCES=consume.cpp > header_test_SOURCES=header_test.cpp > failover_soak_SOURCES=failover_soak.cpp > declare_queues_SOURCES=declare_queues.cpp > replaying_sender_SOURCES=replaying_sender.cpp > resuming_receiver_SOURCES=resuming_receiver.cpp > txshift_SOURCES=txshift.cpp > txjob_SOURCES=txjob.cpp > receiver_SOURCES=receiver.cpp > sender_SOURCES=sender.cpp > SOURCES=$(SOURCES) $(unit_test_SOURCES) > SOURCES=$(SOURCES) $(perftest_SOURCES) > SOURCES=$(SOURCES) $(txtest_SOURCES) > SOURCES=$(SOURCES) $(latencytest_SOURCES) > SOURCES=$(SOURCES) $(echotest_SOURCES) > SOURCES=$(SOURCES) $(client_test_SOURCES) > SOURCES=$(SOURCES) $(topic_listener_SOURCES) > SOURCES=$(SOURCES) $(topic_publisher_SOURCES) > SOURCES=$(SOURCES) $(publish_SOURCES) > SOURCES=$(SOURCES) $(consume_SOURCES) > SOURCES=$(SOURCES) $(header_test_SOURCES) > #SOURCES=$(SOURCES) $(failover_soak_SOURCES) > SOURCES=$(SOURCES) $(declare_queues_SOURCES) > SOURCES=$(SOURCES) $(replaying_sender_SOURCES) > SOURCES=$(SOURCES) $(resuming_receiver_SOURCES) > SOURCES=$(SOURCES) $(txshift_SOURCES) > SOURCES=$(SOURCES) $(txjob_SOURCES) > SOURCES=$(SOURCES) $(receiver_SOURCES) > SOURCES=$(SOURCES) $(sender_SOURCES) > UNIT_TEST_OBJECTS= \ > $(OBJDIR)/unit_test$(OBJEXT) \ > $(OBJDIR)/exception_test$(OBJEXT) \ > $(OBJDIR)/RefCounted$(OBJEXT) \ > $(OBJDIR)/SessionState$(OBJEXT) \ > $(OBJDIR)/Blob$(OBJEXT) \ > $(OBJDIR)/logging$(OBJEXT) \ > $(OBJDIR)/AsyncCompletion$(OBJEXT) \ > $(OBJDIR)/Url$(OBJEXT) \ > $(OBJDIR)/Uuid$(OBJEXT) \ > $(OBJDIR)/Shlib$(OBJEXT) \ > $(OBJDIR)/FieldValue$(OBJEXT) \ > $(OBJDIR)/FieldTable$(OBJEXT) \ > $(OBJDIR)/Array$(OBJEXT) \ > $(OBJDIR)/QueueOptionsTest$(OBJEXT) \ > $(OBJDIR)/InlineAllocator$(OBJEXT) \ > $(OBJDIR)/InlineVector$(OBJEXT) \ > $(OBJDIR)/ClientSessionTest$(OBJEXT) \ > $(OBJDIR)/SequenceSet$(OBJEXT) \ > $(OBJDIR)/StringUtils$(OBJEXT) \ > $(OBJDIR)/IncompleteMessageList$(OBJEXT) \ > $(OBJDIR)/RangeSet$(OBJEXT) \ > $(OBJDIR)/AtomicValue$(OBJEXT) \ > $(OBJDIR)/QueueTest$(OBJEXT) \ > $(OBJDIR)/AccumulatedAckTest$(OBJEXT) \ > $(OBJDIR)/DtxWorkRecordTest$(OBJEXT) \ > $(OBJDIR)/DeliveryRecordTest$(OBJEXT) \ > $(OBJDIR)/ExchangeTest$(OBJEXT) \ > $(OBJDIR)/HeadersExchangeTest$(OBJEXT) \ > $(OBJDIR)/MessageTest$(OBJEXT) \ > $(OBJDIR)/QueueRegistryTest$(OBJEXT) \ > $(OBJDIR)/QueuePolicyTest$(OBJEXT) \ > $(OBJDIR)/FramingTest$(OBJEXT) \ > $(OBJDIR)/HeaderTest$(OBJEXT) \ > $(OBJDIR)/SequenceNumberTest$(OBJEXT) \ > $(OBJDIR)/TimerTest$(OBJEXT) \ > $(OBJDIR)/TopicExchangeTest$(OBJEXT) \ > $(OBJDIR)/TxBufferTest$(OBJEXT) \ > $(OBJDIR)/TxPublishTest$(OBJEXT) \ > $(OBJDIR)/MessageBuilderTest$(OBJEXT) \ > $(OBJDIR)/ManagementTest$(OBJEXT) \ > $(OBJDIR)/MessageReplayTracker$(OBJEXT) > # $(OBJDIR)/ConsoleTest$(OBJEXT) \ > TESTS=$(TESTS) $(RELDIR)/unit_test$(EXEEXT) > TESTS=$(TESTS) $(RELDIR)/perftest$(EXEEXT) > TESTS=$(TESTS) $(RELDIR)/txtest$(EXEEXT) > TESTS=$(TESTS) $(RELDIR)/latencytest$(EXEEXT) > TESTS=$(TESTS) $(RELDIR)/echotest$(EXEEXT) > TESTS=$(TESTS) $(RELDIR)/client_test$(EXEEXT) > TESTS=$(TESTS) $(RELDIR)/topic_listener$(EXEEXT) > TESTS=$(TESTS) $(RELDIR)/topic_publisher$(EXEEXT) > TESTS=$(TESTS) $(RELDIR)/publish$(EXEEXT) > TESTS=$(TESTS) $(RELDIR)/consume$(EXEEXT) > TESTS=$(TESTS) $(RELDIR)/header_test$(EXEEXT) > #TESTS=$(TESTS) $(RELDIR)/failover_soak$(EXEEXT) > TESTS=$(TESTS) $(RELDIR)/declare_queues$(EXEEXT) > TESTS=$(TESTS) $(RELDIR)/replaying_sender$(EXEEXT) > TESTS=$(TESTS) $(RELDIR)/resuming_receiver$(EXEEXT) > TESTS=$(TESTS) $(RELDIR)/txshift$(EXEEXT) > TESTS=$(TESTS) $(RELDIR)/txjob$(EXEEXT) > TESTS=$(TESTS) $(RELDIR)/receiver$(EXEEXT) > TESTS=$(TESTS) $(RELDIR)/sender$(EXEEXT) > .cpp.obj: > @mkdir -p $(RELDIR) > @mkdir -p $(OBJDIR) > $(CC) /O2 $(INCLUDES) $(FLAGS) /Fo"$(OBJDIR)//" /Fd"$(OBJDIR)/vc90.pdb" > $** > all: $(SOURCES:.cpp=.obj) $(TESTS) > $(RELDIR)/perftest$(EXEEXT): {$(OBJDIR)}$(perftest_SOURCES:.cpp=.obj) > $(LINK) /OUT:$(RELDIR)/%|fF$(EXEEXT) /PDB:$(ROOTDIR)/$(RELDIR)/%|fF.pdb > /MANIFEST /MANIFESTFILE:"$(OBJDIR)\%|fF$(EXEEXT).intermediate.manifest" > /MANIFESTUAC:"level='asInvoker' uiAccess='false'" $(LDFLAGS) $(LDLIBS) > $(LIBS) %|pfF$(OBJEXT) > $(RELDIR)/txtest$(EXEEXT): {$(OBJDIR)}$(txtest_SOURCES:.cpp=.obj) > $(LINK) /OUT:$(RELDIR)/%|fF$(EXEEXT) /PDB:$(ROOTDIR)/$(RELDIR)/%|fF.pdb > /MANIFEST /MANIFESTFILE:"$(OBJDIR)\%|fF$(EXEEXT).intermediate.manifest" > /MANIFESTUAC:"level='asInvoker' uiAccess='false'" $(LDFLAGS) $(LDLIBS) > $(LIBS) %|pfF$(OBJEXT) > $(RELDIR)/latencytest$(EXEEXT): {$(OBJDIR)}$(latencytest_SOURCES:.cpp=.obj) > $(LINK) /OUT:$(RELDIR)/%|fF$(EXEEXT) /PDB:$(ROOTDIR)/$(RELDIR)/%|fF.pdb > /MANIFEST /MANIFESTFILE:"$(OBJDIR)\%|fF$(EXEEXT).intermediate.manifest" > /MANIFESTUAC:"level='asInvoker' uiAccess='false'" $(LDFLAGS) $(LDLIBS) > $(LIBS) %|pfF$(OBJEXT) > $(RELDIR)/echotest$(EXEEXT): {$(OBJDIR)}$(echotest_SOURCES:.cpp=.obj) > $(LINK) /OUT:$(RELDIR)/%|fF$(EXEEXT) /PDB:$(ROOTDIR)/$(RELDIR)/%|fF.pdb > /MANIFEST /MANIFESTFILE:"$(OBJDIR)\%|fF$(EXEEXT).intermediate.manifest" > /MANIFESTUAC:"level='asInvoker' uiAccess='false'" $(LDFLAGS) $(LDLIBS) > $(LIBS) %|pfF$(OBJEXT) > $(RELDIR)/client_test$(EXEEXT): {$(OBJDIR)}$(client_test_SOURCES:.cpp=.obj) > $(LINK) /OUT:$(RELDIR)/%|fF$(EXEEXT) /PDB:$(ROOTDIR)/$(RELDIR)/%|fF.pdb > /MANIFEST /MANIFESTFILE:"$(OBJDIR)\%|fF$(EXEEXT).intermediate.manifest" > /MANIFESTUAC:"level='asInvoker' uiAccess='false'" $(LDFLAGS) $(LDLIBS) > $(LIBS) %|pfF$(OBJEXT) > $(RELDIR)/topic_listener$(EXEEXT): > {$(OBJDIR)}$(topic_listener_SOURCES:.cpp=.obj) > $(LINK) /OUT:$(RELDIR)/%|fF$(EXEEXT) /PDB:$(ROOTDIR)/$(RELDIR)/%|fF.pdb > /MANIFEST /MANIFESTFILE:"$(OBJDIR)\%|fF$(EXEEXT).intermediate.manifest" > /MANIFESTUAC:"level='asInvoker' uiAccess='false'" $(LDFLAGS) $(LDLIBS) > $(LIBS) %|pfF$(OBJEXT) > $(RELDIR)/topic_publisher$(EXEEXT): > {$(OBJDIR)}$(topic_publisher_SOURCES:.cpp=.obj) > $(LINK) /OUT:$(RELDIR)/%|fF$(EXEEXT) /PDB:$(ROOTDIR)/$(RELDIR)/%|fF.pdb > /MANIFEST /MANIFESTFILE:"$(OBJDIR)\%|fF$(EXEEXT).intermediate.manifest" > /MANIFESTUAC:"level='asInvoker' uiAccess='false'" $(LDFLAGS) $(LDLIBS) > $(LIBS) %|pfF$(OBJEXT) > $(RELDIR)/publish$(EXEEXT): {$(OBJDIR)}$(publish_SOURCES:.cpp=.obj) > $(LINK) /OUT:$(RELDIR)/%|fF$(EXEEXT) /PDB:$(ROOTDIR)/$(RELDIR)/%|fF.pdb > /MANIFEST /MANIFESTFILE:"$(OBJDIR)\%|fF$(EXEEXT).intermediate.manifest" > /MANIFESTUAC:"level='asInvoker' uiAccess='false'" $(LDFLAGS) $(LDLIBS) > $(LIBS) %|pfF$(OBJEXT) > $(RELDIR)/consume$(EXEEXT): {$(OBJDIR)}$(consume_SOURCES:.cpp=.obj) > $(LINK) /OUT:$(RELDIR)/%|fF$(EXEEXT) /PDB:$(ROOTDIR)/$(RELDIR)/%|fF.pdb > /MANIFEST /MANIFESTFILE:"$(OBJDIR)\%|fF$(EXEEXT).intermediate.manifest" > /MANIFESTUAC:"level='asInvoker' uiAccess='false'" $(LDFLAGS) $(LDLIBS) > $(LIBS) %|pfF$(OBJEXT) > $(RELDIR)/header_test$(EXEEXT): {$(OBJDIR)}$(header_test_SOURCES:.cpp=.obj) > $(LINK) /OUT:$(RELDIR)/%|fF$(EXEEXT) /PDB:$(ROOTDIR)/$(RELDIR)/%|fF.pdb > /MANIFEST /MANIFESTFILE:"$(OBJDIR)\%|fF$(EXEEXT).intermediate.manifest" > /MANIFESTUAC:"level='asInvoker' uiAccess='false'" $(LDFLAGS) $(LDLIBS) > $(LIBS) %|pfF$(OBJEXT) > $(RELDIR)/failover_soak$(EXEEXT): > {$(OBJDIR)}$(failover_soak_SOURCES:.cpp=.obj) > $(LINK) /OUT:$(RELDIR)/%|fF$(EXEEXT) /PDB:$(ROOTDIR)/$(RELDIR)/%|fF.pdb > /MANIFEST /MANIFESTFILE:"$(OBJDIR)\%|fF$(EXEEXT).intermediate.manifest" > /MANIFESTUAC:"level='asInvoker' uiAccess='false'" $(LDFLAGS) $(LDLIBS) > $(LIBS) %|pfF$(OBJEXT) > $(RELDIR)/declare_queues$(EXEEXT): > {$(OBJDIR)}$(declare_queues_SOURCES:.cpp=.obj) > $(LINK) /OUT:$(RELDIR)/%|fF$(EXEEXT) /PDB:$(ROOTDIR)/$(RELDIR)/%|fF.pdb > /MANIFEST /MANIFESTFILE:"$(OBJDIR)\%|fF$(EXEEXT).intermediate.manifest" > /MANIFESTUAC:"level='asInvoker' uiAccess='false'" $(LDFLAGS) $(LDLIBS) > $(LIBS) %|pfF$(OBJEXT) > $(RELDIR)/replaying_sender$(EXEEXT): > {$(OBJDIR)}$(replaying_sender_SOURCES:.cpp=.obj) > $(LINK) /OUT:$(RELDIR)/%|fF$(EXEEXT) /PDB:$(ROOTDIR)/$(RELDIR)/%|fF.pdb > /MANIFEST /MANIFESTFILE:"$(OBJDIR)\%|fF$(EXEEXT).intermediate.manifest" > /MANIFESTUAC:"level='asInvoker' uiAccess='false'" $(LDFLAGS) $(LDLIBS) > $(LIBS) %|pfF$(OBJEXT) > $(RELDIR)/resuming_receiver$(EXEEXT): > {$(OBJDIR)}$(resuming_receiver_SOURCES:.cpp=.obj) > $(LINK) /OUT:$(RELDIR)/%|fF$(EXEEXT) /PDB:$(ROOTDIR)/$(RELDIR)/%|fF.pdb > /MANIFEST /MANIFESTFILE:"$(OBJDIR)\%|fF$(EXEEXT).intermediate.manifest" > /MANIFESTUAC:"level='asInvoker' uiAccess='false'" $(LDFLAGS) $(LDLIBS) > $(LIBS) %|pfF$(OBJEXT) > $(RELDIR)/txshift$(EXEEXT): {$(OBJDIR)}$(txshift_SOURCES:.cpp=.obj) > $(LINK) /OUT:$(RELDIR)/%|fF$(EXEEXT) /PDB:$(ROOTDIR)/$(RELDIR)/%|fF.pdb > /MANIFEST /MANIFESTFILE:"$(OBJDIR)\%|fF$(EXEEXT).intermediate.manifest" > /MANIFESTUAC:"level='asInvoker' uiAccess='false'" $(LDFLAGS) $(LDLIBS) > $(LIBS) %|pfF$(OBJEXT) > $(RELDIR)/txjob$(EXEEXT): {$(OBJDIR)}$(txjob_SOURCES:.cpp=.obj) > $(LINK) /OUT:$(RELDIR)/%|fF$(EXEEXT) /PDB:$(ROOTDIR)/$(RELDIR)/%|fF.pdb > /MANIFEST /MANIFESTFILE:"$(OBJDIR)\%|fF$(EXEEXT).intermediate.manifest" > /MANIFESTUAC:"level='asInvoker' uiAccess='false'" $(LDFLAGS) $(LDLIBS) > $(LIBS) %|pfF$(OBJEXT) > $(RELDIR)/receiver$(EXEEXT): {$(OBJDIR)}$(receiver_SOURCES:.cpp=.obj) > $(LINK) /OUT:$(RELDIR)/%|fF$(EXEEXT) /PDB:$(ROOTDIR)/$(RELDIR)/%|fF.pdb > /MANIFEST /MANIFESTFILE:"$(OBJDIR)\%|fF$(EXEEXT).intermediate.manifest" > /MANIFESTUAC:"level='asInvoker' uiAccess='false'" $(LDFLAGS) $(LDLIBS) > $(LIBS) %|pfF$(OBJEXT) > $(RELDIR)/sender$(EXEEXT): {$(OBJDIR)}$(sender_SOURCES:.cpp=.obj) > $(LINK) /OUT:$(RELDIR)/%|fF$(EXEEXT) /PDB:$(ROOTDIR)/$(RELDIR)/%|fF.pdb > /MANIFEST /MANIFESTFILE:"$(OBJDIR)\%|fF$(EXEEXT).intermediate.manifest" > /MANIFESTUAC:"level='asInvoker' uiAccess='false'" $(LDFLAGS) $(LDLIBS) > $(LIBS) %|pfF$(OBJEXT) > $(RELDIR)/unit_test$(EXEEXT): {$(OBJDIR)}$(unit_test_SOURCES:.cpp=.obj) > $(LINK) /OUT:$(RELDIR)/%|fF$(EXEEXT) /PDB:$(ROOTDIR)/$(RELDIR)/%|fF.pdb > /MANIFEST /MANIFESTFILE:"$(OBJDIR)\%|fF$(EXEEXT).intermediate.manifest" > /MANIFESTUAC:"level='asInvoker' uiAccess='false'" $(LDFLAGS) $(LDLIBS) > $(LIBS) $(UNIT_TEST_OBJECTS) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org