FreeBSD + MinGWのGCCにGCC 4.1.1を加える

FreeBSDMinGWで使うコンパイラGCC 4.1.1を加えるメモ。
GCC 4.1.1を使ってWindowsアプリをクロスコンパイル出来る様にする。

準備

あらかじめPortsでdevel/mingw32-gccをインストールしておく。


GCC 4.1.1のインストール場所を${HOME}/mingw/gcc41として、${HOME}/mingw/gcc41/mingw32ディレクトリを作り、その下に/usr/local/mingw32以下のincludeとlibをコピーする。

$ mkdir -p ~/mingw/gcc41
$ cd ~/mingw/gcc41
$ mkdir mingw32 ; cd mingw32
$ cp -R /usr/local/mingw32/include include
$ cp -R /usr/local/mingw32/lib lib

GCC 4.1.1のソースを用意する。
ftp://ftp.riken.go.jp/GNU/gnu/gcc/gcc-4.1.1/gcc-4.1.1.tar.bz2

GCC 4.1.1のコンパイル&インストール

ソースを展開して、configureを下記の通りにする。
CFLAGSのオプションは自分の環境に合わせる。

$ CFLAGS="-O2 -march=pentium4 -fno-strict-aliasing -pipe" \
 ./configure \
 --prefix=${HOME}/mingw/gcc41 \
 --target=mingw32 \
 --enable-languages=c,c++ \
 --with-gcc \
 --with-as=/usr/local/bin/mingw32-as \
 --with-ld=/usr/local/bin/mingw32-ld \
 --enable-threads \
 --disable-debug \
 --disable-nls \
 --disable-shared \
 --disable-win32-registry


あとは、「gmake && gmake install」でインストールされる。
${HOME}/mingw/gcc41/bin/mingw32-gccを${HOME}/bin/mingw32-gcc41にシンボリックリンクを貼って、${HOME}/binにパスを通しておく。

Windows版Firefoxのビルドメモ・libpngを差し替える

Windows XP + Visual Studio 2005でFirefoxをビルドするメモ。
Firefox 2.0.0.1のソースに含まれてるlibpngを差し替える改造をする。


改造するポイントは2点。

  • libpngのバージョンを現時点の最新版(1.2.16)にする。
  • MMXのコードを使って速度を上げる。


以下手順

続きを読む

Windowsの改行コードをUNIXの改行コードに変換するスクリプトを作る

シェルスクリプトPerlスクリプト等にWindowsの改行コードを使われると正しく動かない。
UNIXの改行コードに変換してやればいいのだが、いちいち「tr」コマンド等を使うのは面倒なので、改行コード変換スクリプトを作っておく。


一番下の内容を「dos2unix」と言う名前で保存して、

$ dos2unix hoge.txt
または
$ dos2unix hoge.txt 644

としてやれば、Windowsの改行コード(CR LF)がUNIXの改行コード(LF)に変換される。

#!/bin/sh

#
# dos2unix
#

TMPDIR=/tmp
MODE=644

if [ $# -lt 1 ]; then
    echo "Usage: dos2unix file [mode]"
    exit
fi

if [ $# -gt 1 ]; then
    MODE=$2
fi

if [ -x ${TMPDIR}/dos2unix-tmp ]; then
    rm ${TMPDIR}/dos2unix-tmp
fi

perl -pe 's/\r\n/\n/' $1 > ${TMPDIR}/dos2unix-tmp
mv -f ${TMPDIR}/dos2unix-tmp $1
chmod ${MODE} $1

portupgradeのカテゴリが変更してる

portupgradeのカテゴリがsysutilsから新しく出来たports-mgmtに移動してる。


おかげでportsnapの後にportversionでバージョンを確認しようとしたらエラーで止まる。
エラーメッセージを見ると、/usr/ports/sysutils/portupgradeに移動できないみたい事を言われてる。


PortsのINDEXファイルを消して、「portsdb -Fu」とコマンドを入力して、「portupgrade -v portupgrade」でportupgradeを入れ直したらエラーメッセージが出なくなった。
もっとスマートな対処方がある気がする…


/usr/ports/UPDATINGの中身より。

20070205:
  AFFECTS: everybody
  AUTHOR: pav@FreeBSD.org

  New ports category was created - /usr/ports/ports-mgmt

  Most significant port moved to this new category is portupgrade.
  So don't be alarmed, it was not deleted. You can find it now in

  /usr/ports/ports-mgmt/portupgrade

Vine Linux 4.0でOpenALを試す

Vine Linux 4.0でOpenALの3Dオーディオはどんな感じなのか試してみた。

OpenALのインストール

openalがパッケージ化されてるので、openalopenal-develをapt-getかSynapticで入れる。

OpenALを使うプログラムをインストール

以前にインストールしたMPlyaerはOpenALを使うみたいで、これをコンパイルし直せばいいらしい。
MPlayerコンパイル時に、特にconfigureにはオプションを付けなくてもOpenALのライブラリを勝手にリンクしてくれる。


MPlayerをインストールし直したら、「mplayer -ao help」でopenalが使えるのを確認できる。

$ mplayer -ao help
MPlayer 1.0rc1-3.3.6 (C) 2000-2006 MPlayer Team
CPU: Mobile Intel(R) Pentium(R) 4 - M CPU 2.20GHz (Family: 15, Model: 2, Stepping: 9)
CPUflags:  MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Compiled with runtime CPU detection.
Available audio output drivers:
        oss     OSS/ioctl audio output
        alsa    ALSA-0.9.x-1.x audio output
        arts    aRts audio output
        esd     EsounD audio output
        sdl     SDLlib audio output
        openal  OpenAL audio output
        mpegpes DVB audio output
        null    Null audio output
        pcm     RAW PCM/WAVE file writer audio output


サウンドOpenALで聴くにはこの様にする。

$ mplayer -ao openal hoge.wav


よく聴いてみると、3Dサウンドに聞こえる…様な気もする。

portupgradeの挙動がおかしくなった・・・

このままだとportupgradeが使えなくて困る。


とりあえず、portupgradeとruby18-bdbをpkg_deleteして、/var/db/ports/portupgrade/optionsを削除。
portupgradeをオプションを試行錯誤しながら入れたら直った。

# cd /usr/ports/sysutils/portupgrade
# make
# make install