Hi Farid,

I got stdcxx-4.2.2 from svn and applied the mingw.patch you provided.

I assume that you are building stdcxx-4.2.2 using Cygwin, and targeting
MinGW. My objective is to build stdcxx-4.2.2 using MinGW. I don't use Cygwin
and I don't plan to use it.

There were two fixes I had to make, to get the build of the patched
stdcxx-4.2.2 to run:

Fix #1 -- /stdcxx-4.2.2/CNUmakefile:

On lines 583, 591 and 592 of /stdcxx-4.2.2/GNUmakefile:

    ln -sf $(TOPDIR)/GNUmakefile         $(buildpath)/GNUmakefile;          
\ **
    ln -sf $(ETCDIR)/GNUmakefile.cfg     $(buildpath)/include/GNUmakefile;  
\
    ln -sf $(ETCDIR)/GNUmakefile.lib     $(LIBDIR)/GNUmakefile;             
\
    ln -sf $(ETCDIR)/GNUmakefile.rwt     $(buildpath)/rwtest/GNUmakefile;   
\
    ln -sf $(ETCDIR)/GNUmakefile.exm     $(EXMDIR)/GNUmakefile;             
\
    ln -sf $(ETCDIR)/GNUmakefile.tst     $(TSTDIR)/GNUmakefile;             
\
    ln -sf $(ETCDIR)/GNUmakefile.ph      $(PHTSTDIR)/GNUmakefile;           
\
    ln -sf $(ETCDIR)/GNUmakefile.bin     $(BINDIR)/GNUmakefile;             
\
    ln -sf $(ETCDIR)/makefile.common     $(buildpath)/makefile.common;      
\ **
    ln -sf $(ETCDIR)/makefile.rules      $(buildpath)/makefile.rules;       
\ **
    ln -sf $(ETCDIR)/configure.sh        $(buildpath)/include/configure;    
\
    ln -sf $(BINDIR)/exec                $(buildpath)/run;                  
\
    ln -sf $(BINDIR)/exec                $(BINDIR)/run;                     
\
    ln -sf $(ETCDIR)/run_locale_utils.sh $(BINDIR)/run_utils;               
\
    ln -sf $(BINDIR)/exec                $(TSTDIR)/run;                     
\
    ln -sf $(BINDIR)/exec                $(PHTSTDIR)/run;                   
\
    ln -sf $(BINDIR)/exec                $(EXMDIR)/run

On the three lines marked ** above, I added an explicit file name after the
$(buildpath) because the MinGW <ls> command, was REPLACING the
/stdcxx-4.2.1/build/ directory name, with a link (named /stdcxx-4.2.1/build)
to the file, instead of creating a link to the file (with the name of the
file), IN the /stdcxx-4.2.1/build/ directory.


Fix #2 -- Your /stdcxx-4.2.2/build file:

I renamed the /stdcxx-4.2.2/build file that came with the svn download, to
/stdcxx-4.2.1/build_faridz, because the presence of the build FILE was
preventing the GNUmakefile from creating the /stdcxx-4.2.2/build/ DIRECTORY.

* * *
* * *

The build go a LOT further with the patched stdcxx-4.2.2 than it did with
the stdcxx-4.2.1.

According to Windows XP, the final size of the /stdcxx-4.2.1/build/
directory (including sub-directories) is 126 MB.

There is an /stdcxx-4.2.2/build/liblibstd.a file of size 2.33 MB.

HOWEVER, the build ended with the following displayed on the MSYS console:

<MSYS:>
[...]
generating dependencies for $(TOPDIR)/tests/self/0.alloc.cpp
gcc -M -I/stdcxx-4.2.2/include/ansi   -I/stdcxx-4.2.2/include
-I/stdcxx-4.2.2/build/include -I/stdcxx-4.2.2/tests/include  -pedantic
-nostdinc++ -mno-cygwin  -W -Wall -Wcast-qual -Winline -Wshadow
-Wwrite-strings -Wno-long-long -Wcast-align 
/stdcxx-4.2.2/tests/self/0.alloc.cpp
make[2]: Leaving directory `/stdcxx-4.2.2/build/tests'
make[2]: Entering directory `/stdcxx-4.2.2/build/tests'
[...]
gcc -c -I/stdcxx-4.2.2/include/ansi   -I/stdcxx-4.2.2/include
-I/stdcxx-4.2.2/build/include -I/stdcxx-4.2.2/tests/include  -pedantic
-nostdinc++ -mno-cygwin  -W -Wall -Wcast-qual -Winline -Wshadow
-Wwrite-strings -Wno-long-long -Wcast-align  
/stdcxx-4.2.2/tests/regress/18.c.limits.stdcxx-988.cpp
i:/apps/stdcxx-4.2.2/tests/regress/18.c.limits.stdcxx-988.cpp: In function
`int main()':
i:/apps/stdcxx-4.2.2/tests/regress/18.c.limits.stdcxx-988.cpp:144: error:
`LONG_BIT' was not declared in this scope
i:/apps/stdcxx-4.2.2/tests/regress/18.c.limits.stdcxx-988.cpp:145: error:
`_POSIX_SSIZE_MAX' was not declared in this scope
i:/apps/stdcxx-4.2.2/tests/regress/18.c.limits.stdcxx-988.cpp:146: error:
`WORD_BIT' was not declared in this scope
i:/apps/stdcxx-4.2.2/tests/regress/18.c.limits.stdcxx-988.cpp:151: warning:
this decimal constant is unsigned only in ISO C90
i:/apps/stdcxx-4.2.2/tests/regress/18.c.limits.stdcxx-988.cpp:152: warning:
this decimal constant is unsigned only in ISO C90
i:/apps/stdcxx-4.2.2/tests/regress/18.c.limits.stdcxx-988.cpp:144: warning:
unused variable 'LONG_BIT'
i:/apps/stdcxx-4.2.2/tests/regress/18.c.limits.stdcxx-988.cpp:145: warning:
unused variable '_POSIX_SSIZE_MAX'
i:/apps/stdcxx-4.2.2/tests/regress/18.c.limits.stdcxx-988.cpp:146: warning:
unused variable 'WORD_BIT'
make[2]: *** [18.c.limits.stdcxx-988.o] Error 1
make[2]: Leaving directory `/stdcxx-4.2.2/build/tests'
make[1]: [tests] Error 2 (ignored)
make[1]: Leaving directory `/stdcxx-4.2.2/build'
[EMAIL PROTECTED] /stdcxx-4.2.2
$ 
</MSYS:>

In the line "make[1]: [tests] Error 2 (ignored)", does the "(ignored)" mean
that <make> did not terminate prematurely, and that file:

  /stdcxx-4.2.2/tests/regress/18.c.limits.stdcxx-988.cpp
 
is the last test source file to be compiled?
 
According to the /stdcxx-4.2.2/README file, the last build step is the
locale databases. The build I ran left the /stdcxx-4.2.2/nls/ directory
completely EMPTY.
 
* * *
* * *

Please let me know -- did the build complete successfully? If not, and I
need to fix the 18.c.limits.stdcxx-988.cpp compile error, what changes to I
need to make to fix the compile error?

Thanks,

Steve


Farid Zaripov-2 wrote:
> 
> Hi Steve.
> 
>> I am trying to build stdcxx-4.2.1 on Windows XP (SP2), using the
>> MinGW(3.4.5) + MSYS(1.0.10) + (with gcc, g++, etc.) 
>> operating environment.
> 
>   The 4.2.1 version of the stdcxx isn't ported to MinGW.
> 
>   You need to get (yet unreleased) 4.2.2 version from svn, i.e.:
> 
>   svn co http://svn.apache.org/repos/asf/stdcxx/branches/4.2.x
> stdcxx-4.2.2
> 
>   Then apply this patch: http://people.apache.org/~faridz/mingw.patch
> 
> Farid.
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Building-stdcxx-4.2.1-Using-MinGW%2BMSYS-On-Windows-XP-%28SP2%29-tp20672758p20712556.html
Sent from the stdcxx-user mailing list archive at Nabble.com.

Reply via email to