忍者ブログ

なんだか

知らないほうが幸せかもしれない

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

msysでmingw32なgcc-4.7のprereleaseをbootstrapで作ってみるテストその1

本家mingw32のgccはノーパッチ?だったので、なるべくpatchなしでやってます。

$ mkdir gcc47
$ cd gcc47
$ wget http://www.dnsbalance.ring.gr.jp/archives/lang/egcs/snapshots/4.7-20130126/gcc-4.7-20130126.tar.bz2
$ tar xjf gcc-4.7-20130126.tar.bz2
$ cd gcc-4.7-20130126/gcc
$ patch < gcc-diagnostic-mingw.patch
$ cd ../..
$ mkdir 20130127
$ cd 20130127
$ ../gcc-4.7-20130126/configure --enable-languages=c,c++,ada,fortran,objc,obj-c++ --disable-sjlj-exceptions --with-dwarf2 --enable-shared --disable-win32-registry --enable-version-specific-runtime-libs --build=mingw32 --prefix=/mingw CFLAGS='-g -O2 -fomit-frame-pointer' CXXFLAGS='-g -O2 -fomit-frame-pointer' CFLAGS_FOR_TARGET='-g -O2 -fomit-frame-pointer' CXXFLAGS_FOR_TARGET='-g -O2 -fomit-frame-pointer'
$ make

gnatのビルドでコンパイルエラーになりますが、ほとんどcastすればいいだけです。
ハマリどころは、gcc/ada/tracebak.cのこの行ぐらいです。
#define IS_BAD_PTR(ptr) (IsBadCodePtr((FARPROC)ptr))

adaがええだと思えない人には関係ないことです。

libadaでコケたら、これです。
$ sed -i 's/$(LN_S) $(ADA_RTS_DIR)/$(LN_S)r $(ADA_RTS_DIR)/' mingw32/libada/Makefile
$ make LN_S="ln -s"

どうも、失敗したようなので、続く?

拍手[0回]

PR

msysでmingw32なgcc-4.8をbootstrapで作ってみるテスト(メッセージの文字化け対策)

メッセージの文字化けが理由がわかりました。
vfprintfのメッセージを出力しているのですが、libibertyに下請け処理があり
それ経由で1byte毎に出力すると最近のwindowsは、漢字等が文字化けするようです。

いまどきのwindowsは、ダサすぎのような
gccがvfprintfをビルドイン関数に置き換えるからのようでした。

メッセージをリダイレクトするとちゃんと読めるので理由がいまひとつなぞです。

差分はこんな感じです。

--- gcc/diagnostic.c.mingw 2013-02-01 22:48:16 +0900
+++ gcc/diagnostic.c 2013-02-01 22:49:51 +0900
@@ -1104,9 +1104,17 @@ fnotice (FILE *file, const char *cmsgid,
 {
   va_list ap;
 
+#if 1
+  char buf[4096];
+  va_start (ap, cmsgid);
+  vsnprintf(buf,sizeof(buf), _(cmsgid), ap);
+  fputs (buf,file);
+  va_end (ap);
+#else
   va_start (ap, cmsgid);
   vfprintf (file, _(cmsgid), ap);
   va_end (ap);
+#endif
 }
 
 /* Inform the user that an error occurred while trying to report some



$ /msys-temp/gcc48/bin/gcc -v
組み込み spec を使用しています。
COLLECT_GCC=C:\msys-temp\gcc48\bin\gcc.exe
COLLECT_LTO_WRAPPER=c:/msys-temp/gcc48/bin/../libexec/gcc/mingw32/4.8.0/lto-wrapper.exe
ターゲット: mingw32
configure 設定: ../gcc-4.8-20130127/configure --enable-languages=c,c++ --disable-sjlj-exceptions --with-dwarf2 --enable-shared --enable-libgomp --disable-win32-registry --enable-version-specific-runtime-libs --build=mingw32 --prefix=/msys-temp/gcc48
スレッドモデル: win32
gcc バージョン 4.8.0 20130127 (experimental) (GCC)

拍手[0回]

msysでmingw32なgcc-4.8をbootstrapで作ってみるテスト

gcc-4.8の正式リリース前にmsys上でmingw32なgccをbootstrapモードで作ってみました。
gmp->mpfr->mpc->cloog->gcc-4.8の順にやりました。

事前に/etc/fstabに
$ notepad /etc/fstab
C:\msys-temp /msys-temp
を追加して
$ mkdir /msys-temp
$ mingw-get install msys-bison-bin
$ mingw-get install msys-flex-bin
$ mingw-get install msys-wget-bin

1.gmp-5.1.0の作成

$ cd /msys-temp 
$ mkdir gmp
$ cd gmp
$ wget ftp://ftp.gmplib.org/pub/gmp-5.1.0/gmp-5.1.0.tar.bz2
$ tar xjf gmp-5.1.0.tar.bz2
$ mkdir 47
$ cd 47
$ ../gmp-5.1.0/configure --prefix=/mingw --enable-shared --disable-static
$ make
$ make install

2.mpfr-3.1.1の作成

$ cd /msys-temp 
$ mkdir mpfr
$ cd mpfr
$ wget http://www.mpfr.org/mpfr-current/mpfr-3.1.1.tar.xz
$ tar xJf mpfr-3.1.1.tar.xz
$ mkdir 47
$ cd 47
$ ../mpfr-3.1.1/configure --prefix=/mingw --enable-shared --disable-static
$ make
$ make install

3.mpc-1.0.1の作成

$ cd /msys-temp 
$ mkdir mpc
$ cd mpc
$ wget http://www.multiprecision.org/mpc/download/mpc-1.0.1.tar.gz
$ tar xf mpc-1.0.1.tar.gz
$ mkdir 47
$ cd 47
$ ../mpc-1.0.1/configure --prefix=/mingw --enable-shared --disable-static
$ make
$ make install

4.cloog-0.18.0の作成

$ cd /msys-temp 
$ mkdir cloog
$ cd cloog
$ wget http://www.bastoul.net/cloog/pages/download/count.php3?url=./cloog-0.18.0.tar.gz
$ mv count.php3?url=.%2Fcloog-0.18.0.tar.gz cloog-0.18.0.tar.gz
$ tar xf cloog-0.18.0.tar.gz
$ sed -i 's/GIT_HEAD_ID="UNKNOWN"/GIT_HEAD_ID="isl-0.11.1"/' cloog-0.18.0/isl/configure
$ mkdir 47
$ cd 47
$ ../cloog-0.18.0/configure --prefix=/mingw --enable-shared --disable-static
$ sed -i 's/allow_undefined_flag="unsupported"/allow_undefined_flag="supported"/' libtool
$ sed -i 's/allow_undefined_flag="unsupported"/allow_undefined_flag="supported"/' isl/libtool
$ make
$ make install

5.mingw32-gcc(4.8)の作成
$ cd ~/
$ mkdir gcc
$ wget http://www.dnsbalance.ring.gr.jp/archives/lang/egcs/snapshots/4.8-20130127/gcc-4.8-20130127.tar.bz2
$ tar xjf gcc-4.8-20130127.tar.bz2
$ mkdir mingw32
$ cd mingw32
$ ../gcc-4.8-20130127/configure --enable-languages=c,c++ --disable-sjlj-exceptions --with-dwarf2 --enable-shared --enable-libgomp --disable-win32-registry --enable-version-specific-runtime-libs --build=mingw32 --prefix=/msys-temp/gcc48

checking for version 0.10 of ISL... no
checking for version 0.11 of ISL... yes
checking for version 0.17.0 of CLooG... no
checking for version 0.18.0 of CLooG... yes

$ sed -i "s/STAGE_CONFIGURE_FLAGS=--enable-werror-always/STAGE_CONFIGURE_FLAGS=#--enable-werror-always/" Makefile
$ make
$ make install
$ LANG=C /msys-temp/gcc48/bin/gcc -v
Using built-in specs.
COLLECT_GCC=C:\msys-temp\gcc48\bin\gcc.exe
COLLECT_LTO_WRAPPER=c:/msys-temp/gcc48/bin/../libexec/gcc/mingw32/4.8.0/lto-wrapper.exe
Target: mingw32
Configured with: ../gcc-4.8-20130127/configure --enable-languages=c,c++ --disable-sjlj-exceptions --with-dwarf2 --enable-shared --enable-libgomp --disable-win32-registry --enable-version-specific-runtime-libs --build=mingw32 --prefix=/msys-temp/gcc48
Thread model: win32
gcc version 4.8.0 20130127 (experimental) (GCC)

ビルドはできたけど、日本語表示が化けまくりになってしまった。
終わり

拍手[0回]

gcc-4.8から

gcc本体がc++コンパイラじゃないとビルド出来ないようになったようだ。
以前から、アナウンスされてたけど、ホントになってた。
(gcc-20130127.tar.bz2で確認)

拍手[0回]

cygwinでi686-w64-mingw32の4.8を作ってみる

1.cygwinなcloogの作成 (cloog-0.18.0をgcc-4.8でうまく使えるようにしてみる)

$ mkdir cloog
$ cd cloog
$ wget http://www.bastoul.net/cloog/pages/download/count.php3?url=./cloog-0.18.0.tar.gz
$ mv count.php3?url=.%2Fcloog-0.18.0.tar.gz cloog-0.18.0.tar.gz
$ tar xf cloog-0.18.0.tar.gz
$ sed -i 's/GIT_HEAD_ID="UNKNOWN"/GIT_HEAD_ID="isl-0.11.1"/' cloog-0.18.0/isl/configure
$ mkdir cygwin
$ cd cygwin
$ ../cloog-0.18.0/configure --prefix=/usr --enable-shared --disable-static
$ make -j4 LDLFAGS=-no-undefined
$ sed -i 's/allow_undefined_flag="unsupported"/allow_undefined_flag="supported"/' libtool
$ sed -i 's/allow_undefined_flag="unsupported"/allow_undefined_flag="supported"/' isl/libtool
$ make -j4
$ make install

2.i686-w64-mingw32-binutils(2.23.1)の作成

$ cd ~
$ wget http://www.dnsbalance.ring.gr.jp/archives/GNU/binutils/binutils-2.23.1.tar.bz2
$ tar xjf binutils-2.23.1.tar.bz2
$ mkdir mingw32
$ cd mingw32
$ ../binutils-2.23.1/configure --prefix=/usr/local/4.8 --build=i686-pc-cygwin
--host=i686-pc-cygwin --target=i686-w64-mingw32
$ make -j4
$ make install

3.i686-w64-mingw32-gcc(4.8)の作成

$ cd ~/
$ mkdir gcc48
$ wget http://www.dnsbalance.ring.gr.jp/archives/lang/egcs/snapshots/4.8-20130127/gcc-4.8-20130127.tar.bz2
$ tar xjf  gcc-4.8-20130127.tar.bz2
$ mkdir mingw32
$ cd mingw32
$
../gcc-4.8-20130127/configure --prefix=/usr/local/4.8 --build=i686-pc-cygwin
--host=i686-pc-cygwin --target=i686-w64-mingw32
--with-sysroot=/usr/i686-w64-mingw32/sys-root --disable-multilib
--disable-win32-registry --enable-languages=c,c++
--enable-fully-dynamic-string --enable-libgomp --enable-sjlj-exceptions
--enable-version-specific-runtime-libs --with-dwarf2
--enable-decimal-float=bid --enable-lto
checking for version 0.10 of ISL... no
checking for version 0.11 of ISL... yes
checking for version 0.17.0 of CLooG... no
checking for version 0.18.0 of CLooG... yes
$ make -j4
$ make install
$ cp /usr/local/4.8/lib/gcc/i686-w64-mingw32/lib/libgcc_s.a /usr/local/4.8/lib/gcc/i686-w64-mingw32/4.8.0
$ cp /usr/local/4.8/lib/gcc/i686-w64-mingw32/libgcc_s_sjlj-1.dll /usr/local/4.8/bin

cloogがあるとloopの最適化が強力?になるらしい。
Necessary to build GCC with the Graphite loop optimizations.

mingw32なcross-gccが必要な人向け

4.mingw32なcloogの作成

$ cd ~
$ cd cloog
$ mkdir mingw32
$ cd mingw32
$ export PATH=/usr/local/4.8/bin:$PATH
$ ../cloog-0.18.0/configure --prefix=/usr/i686-w64-mingw32/sys-root/mingw --enable-shared --disable-static --host=i686-w64-mingw32 CC=/usr/local/4.8/bin/i686-w64-mingw32-gcc CXX=/usr/local/4.8/bin/i686-w64-mingw32-g++
$ make -j4 LDLFAGS=-no-undefined
$ sed -i 's/allow_undefined_flag="unsupported"/allow_undefined_flag="supported"/' libtool
$ sed -i 's/allow_undefined_flag="unsupported"/allow_undefined_flag="supported"/' isl/libtool
$ make -j4
$ make install

拍手[0回]

カレンダー

12 2025/01 02
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

フリーエリア

最新CM

最新記事

(07/27)
(03/27)
(03/26)
(03/23)
(03/22)
(03/19)
(03/18)
(03/18)
(03/15)
(03/14)
(03/13)
(03/12)
(03/11)
(03/11)
(03/08)
(03/08)
(03/06)
(03/05)
(03/02)
(03/01)
(02/28)
(02/27)
(02/24)
(02/23)
(02/22)

プロフィール

HN:
kenrou
性別:
非公開

バーコード

ブログ内検索

最古記事

(12/15)
(12/16)
(12/17)
(12/18)
(12/19)
(12/20)
(12/21)
(12/22)
(12/23)
(12/24)
(12/25)
(12/26)
(12/27)
(12/28)
(12/29)
(12/30)
(12/31)
(01/01)
(01/02)
(01/21)
(01/22)
(01/23)
(01/24)
(01/24)
(01/28)

P R

忍者アナライズ

コガネモチ

忍者カウンター

カレンダー

12 2025/01 02
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31