I took a look at this issue more carefully. Here is what the Makefile
does under MSYS:

check-TESTS: $(TESTS)
        @failed=0; all=0; xfail=0; xpass=0; skip=0; \
        srcdir=$(srcdir); export srcdir; \
        list='$(TESTS)'; \
        if test -n "$$list"; then \
          for tst in $$list; do \
            if test -f ./$$tst; then dir=./; \
            elif test -f $$tst; then dir=; \
            else dir="$(srcdir)/"; fi; \
            if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
              all=`expr $$all + 1`; \
              case " $(XFAIL_TESTS) " in \
              *" $$tst "*) \
                xpass=`expr $$xpass + 1`; \
                failed=`expr $$failed + 1`; \
                echo "XPASS: $$tst"; \
              ;; \
              *) \
                echo "PASS: $$tst"; \
              ;; \
              esac; \
            elif test $$? -ne 77; then \
              all=`expr $$all + 1`; \
              case " $(XFAIL_TESTS) " in \
              *" $$tst "*) \
                xfail=`expr $$xfail + 1`; \
                echo "XFAIL: $$tst"; \
              ;; \
              *) \
                failed=`expr $$failed + 1`; \
                echo "FAIL: $$tst"; \
              ;; \
              esac; \
            else \
              skip=`expr $$skip + 1`; \
              echo "SKIP: $$tst"; \
            fi; \
          done; \
 ......<SNIP>

Basically $$tst is the test that is being run, which changes in the
loop. On MSYS $(TESTS_ENVIRONMENT) is blank, and $${dir} is ./

There are test files in the /tests directory (where this makefile is).
These have names like t-parity.exe. There are also test wrappers, with
names like t-parity, which are scripts, which presumably set up the
environment correctly to test the shared library. The corresponding
tests, with names like t-parity.exe are in the .libs directory.

The excerpt from the Makefile above clearly tests the static ones, in
the actual /tests directory, not the shared ones in the /tests/.libs
directory.

The problem appears to be that under MSYS, if $(TESTS_ENVIRONMENT)
$${dir}$$tst; is not the correct way to determine the return value of
a program. Instead, one should do if [ "$?" -eq "0" ]; assuming that
the test has just been run. But this won't work because the entire
make check thing is one line of bash script (note the \ characters at
the end of each line) and under MSYS, $? gives the return value of the
command run on the previous line.

I actually don't have any idea how to get the return value from a
program in MSYS.

Anyhow, I've cc'ed this to mpir-dev and the discussion can continue
there, if anyone is interested or has some insight. The discussion
about how to fix the problem will be too long for mpir-devel.

Bill.

2009/6/4 Bill Hart <goodwillh...@googlemail.com>:
> 2009/6/4 Cactus <rieman...@googlemail.com>:
>>
>>
>>
>> On Jun 4, 11:15 am, Peter_APIIT <peterap...@gmail.com> wrote:
>>> How about command to rebuild with cpp interface in static library
>>> format ?
>>
>> To build the static library for the C++ interface with MSVC, first
>> build the version of GMP you want.
>
> You mean MPIR, not GMP. :-)
>
>> This will produce the static C
>> library mpir.lib.
>>
>> Then build the C++ interface as a static library with the lib_mpir_cpp
>> project.  This will produce the mpirxx.lib library, which is the C++
>> interface to mpir.
>>
>> Then link both mpir.lib and mpirxx.lib with your C++ application.
>>
>>    Brian
>>
>> >>
>>
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"mpir-devel" group.
To post to this group, send email to mpir-devel@googlegroups.com
To unsubscribe from this group, send email to 
mpir-devel+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/mpir-devel?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to