Farid Zaripov wrote:
  The tests in "... Dll" (8d, 11d, 12d, 15d) configurations are
compiling with defined _RWSTD_TEST_SRC macro.
I think it's unnecessary. I have investigated what for this define used
and found that is used to disable
__declspec (dllimport) keyword because the rwtest library is always
compiled as static library,

But it should be built as a shared library when stdcxx is. It's
a limitation of our infrastructure that it's always built as an
archive.

There are some interesting use cases (especially on Windows but
on other platforms as well) that our testsuite fails to exercise
as a result. The Rogue Wave proprietary build infrastructure does
create an rwtest shared library when stdcxx is also built that way.
 We should enhance the infrastructure to build rwtest as a shared
library.

(One such test is the ability to pass stdcxx objects such as
std::string across shared library boundaries. Another is the
ability to use the standard iostream objects in the initialization
of another shared library.)

but
_RWSHARED macro (which is defined because the stdlib is dynamic library)
forces __declspec(dllimport)
without _RWSTD_TEST_SRC defined.

  Another (minor) issue is that librarian creates export files
rwtest.exp (due to __declspec (dllexport)) which are useless.

  I see two ways to improve this:
1) generate rwtest as dynamic library when stdlib is dynamic library

I vote for this.

2) generate rwtest always as static library and rename _RWSHARED macro
to _RWTESTSHARED (or any other)
in testdefs.h (to save possibility of generation rwtest library as
dynamic library).

  I don't know what about RWDLL macro, but it's not defined anywhere.

I think it's a vestige of the Rogue Wave build and test infrastructure.
We can't remove it yet, not until we have completed the transition of
the stdcxx test suite.

Martin

Reply via email to