CodeWarrior V9.3+SDK68k R4開発環境構築メモ (記2006.9.1)

久しぶりに開発環境を構築してみた。CDでCodeWarriorV9インストール、V9.3アップデータ適用。
ところが68kソースだと問題ないのに、あれ?Armletがコンパイルできない・・・なぜ?
昔コンパイルした記憶はあるのに・・・あれは日本語版だったかな?いや日本語版はV8をちょっと使っただけだったし・・・
・・・いや!なんかおかしいぞ???

単にCodeWarrior V9.0→V9.2を先に当てないとダメだったのが原因(汗;
他にもいろいろ、はまったので構築メモを残しておくことにしました。

作業概要

OSはMicrosoft Windows XP日本語版。
CodeWarrior は 英語版Code Warrior Development Studio for Palm OS Platform V9 を使用。

Step.1 アップデータのダウンロード。
Step.2 Code Warrior V9英語版をCDからインストール。
Step.3 CodeWarrior V9.0→V9.2 アップデータ適用。
Step.4 CodeWarrior V9.2→V9.3 アップデータ適用。
Step.5 PalmOS 5 SDK 68K_R3 インストール。
Step.6 PalmOS 5 SDK 68K_R4 インストール。
Step.7 Build All.mcp を再コンパイル。



Step.1 アップデータのダウンロード。

【Code Warrior のアップデータをダウンロード】

アップデータはFreeScale英語サイトから落とせます。
一応無料ですが登録がちょっと面倒。
CodeWarrior Dvelopment Tools → DownLoad → PALM-OS-9-UPDATES
ここの
PALM-OS-9-02-19-2004 Release Date: 02/19/2004: Palm v9.3 Update for CodeWarrior Development Studio for Palm OS
PALM-OS-9-10-01-2003 Release Date: 10/01/2003: Palm v9.2 Update for CodeWarrior Development Studio for Palm
の2つをダウンロード。(CW_PalmOS_9.2_Update.exeCW_PalmOS_9.3_Update.exe

【palmsourceサイトからダウンロード】

palmsourceのCore Tools から Palm OS SDK へ進む。このときログイン要求があるので登録済みならメイルアドレス/パスワードを入れて進む。未登録なら登録した後に進む。

下記2箇所から PalmOS_5_SDK_68K_R3_no-install.zipPalm_OS_68K_SDK_Fall_2004_CW.zip をダウンロード。


Step.2 Code Warrior V9英語版をCDからインストール。

「Code Warrior Development Studio for Palm OS Platform V9」英語版をCDからインストール。

もし再インストールの場合はコントロールパネルから古いCode Warriorを削除し再起動、その後念の為 C:\Program Files\Metrowerks ディレクトリ、デスクトップの「マイ ドキュメント」内のMetrowerksディレクトリも削除しておく。昔別件※1で障害がでたので以後こうしてる。

"C:\Program Files\Metrowerks\CodeWarrior" 内に各メーカーSDKを配置してる場合は必要であればバックアップを。


Step.3 CodeWarrior V9.0→V9.2 アップデータ適用。

CW_PalmOS_9.2_Update.exe」を実行しCodeWarriorをUpdate ※2

以下はともにチェックしてインストール(しなかったらどうなるかは未確認)。
[x] Palm(R) SG SDK v1.0  ※Palm SDK 5.0R2らしい
[x] Handspring (tm) Support

"C:\Program Files\Metrowerks\CodeWarrior\CW for Palm OS Support\Build All.mcp"をダブルクリックしてプロジェクトを開き再コンパイル。


Step.4 CodeWarrior V9.2→V9.3 アップデータ適用。

CW_PalmOS_9.3_Update.exe」を実行しCodeWarriorをUpdate。
(前回同様PalmSDK5.0R2、Handspring SDKの選択肢は全てチェック)

"C:\Program Files\Metrowerks\CodeWarrior\CW for Palm OS Support\Build All.mcp"をダブルクリックしてプロジェクトを開き再コンパイル確認。


Step.5 PalmOS 5 SDK 68K_R3 インストール。

PalmOS_5_SDK_68K_R3_no-install.zip を適当なところに展開。
基本的にファイルを1つずつ、展開したSDKディレクトリから、対応するCW(CodeWarriorの略)ディレクトリへ手動でファイルを移してインストールする。
その後"C:\Program Files\Metrowerks\CodeWarrior\CW for Palm OS Support\Build All.mcp"をダブルクリックしてプロジェクトを開き再コンパイル確認。

※補足:palmsourceサイトからインストーラ付の Palm_OS_5_SDK_68K__R3.exe ※3もダウンロードできるが、Build All.mcp がうまくコンパイルできなくなる。どうもディレクトリ単位で上書きしているようで、ランタイム等の必要なファイルが消されてしまう様子。

以下はファイルコピーの参考程度に。
CWのインストールされたベースディレクトリを"C:\Program Files\Metrowerks\CodeWarrior"基準に、SDKは展開したディレクトリを基準にしている。

コピー元 "CodeWarrior Support\Plugins\Linkers\PalmRezPostLinker.dll"
コピー先 "Bin\Plugins\Linker\PalmRezPostLinker.dll"
コピー元 "Palm Tools\Palm OS 5 SDK (68K) Other Tools\Palm OS Extras\Japanese Support\CodeWarrior Support\Plugins\Preference Panel\PPalmRez-J.dll"
コピー先 "CW for Palm OS Tools\Palm OS 5 SDK (68K) Other Tools\Palm OS Extras\Japanese Support\CodeWarrior Support\Plugins\Preference Panel\PPalmRez-J.dll"
日本語を扱うか否かで以下2つのうちどちらかのみを行なう。
日本語を扱う場合(普通はこっち)
コピー元 "Palm Tools\Palm OS 5 SDK (68K) Other Tools\Palm OS Extras\Japanese Support\CodeWarrior Support\Plugins\Preference Panel\PPalmRez-J.dll"
コピー先 "Bin\Plugins\Preference Panel\PPalmRez.dll" ※リネームしてるのに注意

日本語を扱わない場合
コピー元 "CodeWarrior Support\Plugins\Preference Panel\PPalmRez.dll"
コピー先 "Bin\Plugins\Preference Panel\PPalmRez.dll"
コピー元 "CodeWarrior Support\Plugins\Support\PalmRez Japanese Support"
"CodeWarrior Support\Plugins\Support\PalmRez ChinSimp Support"
コピー先 Bin\Plugins\Support\ ディレクトリ内

SDKの"Palm OS Support"ディレクトリをCW内の"Palm OS Support"へマージしていく。単純にディレクトリ単位で上書きしていくと "Palm OS Support\CodeWarrior Libraries\Runtime" が消える等問題が起きるのでファイル単位でよく確認してコピーする。(一部ディレクトリ単位でコピーしても問題にならない箇所もある)
以下はさらにコピーするディレクトリ、ファイル等の一覧。

各ディレクトリごとに上書きコピー
コピー元 "Palm OS Support\CodeWarrior Libraries\Comms\"
"Palm OS Support\CodeWarrior Libraries\Palm OS Glue\"
"Palm OS Support\Tools\"
コピー先 "Palm OS Support\CodeWarrior Libraries\Comms\"
"Palm OS Support\CodeWarrior Libraries\Palm OS Glue\"
"Palm OS Support\Tools\"
コピー元 "Palm OS Support\Incs\*.h"
コピー先 "Palm OS Support\Incs\"ディレクトリ内へ
コピー元 "Palm OS Support\Incs\Core\"ディレクトリを
コピー先 "Palm OS Support\Incs\Core\ に上書き"
※CodeWarrior\Palm OS Support\Incs\Core\System\CharAttr.h は消えます。
コピー元 "Palm OS Support\Incs\Dynamic\"ディレクトリを
コピー先 "Palm OS Support\Incs\Dynamic\" に上書き"
コピー元 "Palm OS Support\Incs\Extensions\"ディレクトリを
コピー先 "Palm OS Support\Incs\Extensions\" に上書き"
コピー元 "Palm OS Support\Incs\libraries\"ディレクトリを
コピー先 "Palm OS Support\Incs\libraries\" に上書き
コピー元 "Palm OS Support\CodeWarrior Libraries\StartupCode.lib"
コピー先 "Palm OS Support\CodeWarrior Libraries\StartupCode.lib"
コピー元 "Palm OS Support\CodeWarrior Libraries\Source Code\StartupCode\StartupCode.mcp"
コピー先 "Palm OS Support\CodeWarrior Libraries\Source Code\StartupCode\StartupCode.mcp"
コピー元 "Palm OS Support\CodeWarrior Libraries\Source Code\StartupCode\Src\StartupCode.c"
コピー先 "Palm OS Support\CodeWarrior Libraries\Source Code\StartupCode\Src\StartupCode.c"
コピー元 "Palm OS Support\Tools\ShellCmds\"ディレクトリを
コピー先 "Palm OS Support\Tools\ShellCmds\"に上書き
コピー元 "CodeWarrior Support\(CodeWarrior Examples)\Palm OS 5 SDK (68K) R3 Examples\"ディレクトリを
コピー先 "CodeWarrior\(CodeWarrior Examples)\Palm OS\" ディレクトリ内
コピー元 "CodeWarrior Support\(Project Stationery)\Palm OS Application\"ディレクトリを
コピー先 "Stationery\Palm OS Application" ディレクトリに上書き
コピー元 "Licenses\Palm License.txt"
コピー先 "License\" ディレクトリ内
コピー元 "Palm Documentation\Palm OS 5 SDK (68K) Docs\"
コピー先 "CW for Palm OS Support\Documentation\" ディレクトリ内
コピー元 "Palm Tools\Constructor\*.*"
コピー先 "CW for Palm OS Tools\Constructor for Palm OS\"内ディレクトリへ
※Constructor for Palm OS.exe はVe1.9.1(Time Stamp:2003/9/18)
コピー元 "CW for Palm OS Tools\Palm OS 5 SDK (68K) Other Tools\Overlay Tools\"
コピー先 "CW for Palm OS Tools\Palm OS 5 SDK (68K) Other Tools\Overlay Tools\"
コピー元 "Palm Tools\Palm OS 5 SDK (68K) Other Tools\PalmDebugger\"
コピー先 "CW for Palm OS Tools\Palm OS 5 SDK (68K) Other Tools\PalmDebugger"へ上書きコピー
コピー元 "Palm Tools\Virtual Phone\"
コピー先 "CW for Palm OS Tools\Palm OS 5 SDK (68K) Other Tools\Virtual Phone"へ上書きコピー
コピー元 "PalmOS 5 SDK 68K R3 Readme.txt"
コピー先 CWインストールディレクトリへコピー

Step.6 PalmOS 5 SDK 68K_R4 インストール。

まずC:\Program Files\Metrowerks\CodeWarrior\Palm OS Support ディレクトリを C:\Program Files\Metrowerks\CodeWarrior\Palm OS Support_OLD 等にリネームしておく。
Palm_OS_68K_SDK_Fall_2004_CW.zip を適当な場所に展開。
展開後の \Palm_OS_68K_SDK_Fall_2004_CW\Palm OS Support ディレクトリをC:\Program Files\Metrowerks\CodeWarrior\ 下にコピーする。

Step.7 Build All.mcp を再コンパイル。

"C:\Program Files\Metrowerks\CodeWarrior\CW for Palm OS Support\Build All.mcp"をダブルクリックしてプロジェクトを開く。
このままコンパイルすると 'PalmOS_Headers' が見つけられずエラーとなる(PalmOS 5 SDK 68K_R4 同梱Palm OS 5 SDK (68K) R4 Readme.txt参照)。

■ 'MSL C++.PAlm_OS.68k.mcp' プロジェクト内の各ターゲットにパスを追加する。
さっき開いた 'Build All.mcp' プロジェクト内から、ターゲットウィンドウの'MSL C++.PAlm_OS.68k.mcp' サブプロジェクトをダブルクリックして開く。

'MSL C++.Palm_OS.68k.mcp'内のターゲットを 'MSL C++ Palm OS Release'に選択。
ALT+F7 を押し [Build All Setting]ウィンドウを開く。[Accsess Paths]の項を選び、[System Paths]をクリックし、[Add]ボタンを押して以下のようにパスを追加。
{Compiler}/CW for Palm OS Support
他のターゲットも同様にパスを追加しておく。
MSL C++ Palm OS Debug
MSL C++ Palm OS Rel A4A5
MSL C++ Palm OS Dbg A4A5
MSL C++ Palm OS Release 4i
MSL C++ Palm OS Debug 4i
MSL C++ Palm OS Rel A4A5 4i
MSL C++ Palm OS Dbg A4A5 4i

'MSL C++.PAlm_OS.68k.mcp' サブプロジェクトを閉じる。
'MSL C++.PAlm_OS.68k.mcp' プロジェクトを全コンパイル。

※Build All.mcp の Build All ターゲットや MSL C++.Palm_OS.68k.mcp の Build All ターゲット にパス追加ではうまくいかない。
※short と unsigned short キャストでWarningがでるが無視w


その他必要であれば各社のSDKをインストール。

























































補足欄

※1
GUIリソースをいじってもいないのに突然コンパイル時にフォント関係でリンクエラーが出る場合が過去にあった(当時はCodeWarrior R6)。その際MetroWerksのサポートからこのようなアドバイスをいただいた為。それでも完全に回避できなかったのだが、以後私的おまじないとなっている。



※2
この時点で"C:\Program Files\Metrowerks\CodeWarrior\license.dat"内に

FEATURE Win32_Plugins_Palm_ARM_Pro metrowks 9 permanent uncounted \
45DB34457ED7 HOSTID=ANY

が追加されてます。これがないとARMのコンパイルができない模様。海外のBBSでもこれを知らずに諦めてる人がいました。

あとConstructorもV1.9が入り以下の不具合が対策されています。
ConstructorV1.8以前では私の記憶によるとメモリ残チェックを計算する際のビット幅が足らずにWindowsの仮想メモリが512MBを超えるような環境だと正しく計算できなくなる。


このようなウィンドウがでる場合はその症状に該当する。多分実装当時はPCのメモリがギガオーダーまで増加することを想定してなかったのだろう。
昔はPCのメモリも少なかった為に仮想メモリの自動設定値も小さく問題にならなかった。一時的に回避するには、Windowsの仮想メモリ値を256MB等小さく設定すれば回避できる。現象発見当時はこの方法しか手がなかったが今はConstructorV1.9以降で修正されているのでUpdater適用するのがおすすめ。



※3
palmsourceのダウンロード画面では Palm_OS_5_SDK_68K__R3.exe と PalmOS_5_SDK_68K_R3_no-install.zip の差はインストーラ付か否かの差に見えるのに、PPalmRez.dll だけがなぜか PalmOS_5_SDK_68K_R3_no-install.zip 同梱の方がタイムスタンプが新しく、バイナリも異なる。