Windows 環境で 16bit PC-DOS 用アプリケーションのクロスコンパイルをする機会がありました。Watcom コンパイラのオープンソース版である Open Watcom(V2) を使ってその環境構築を実施するための一連の手順をまとめました:

2026051700


【ダウンロード】
Open Watcom 最新版はこちらからダウンロードできます:
https://github.com/open-watcom/open-watcom-v2/releases/tag/Current-build

2026051601

Open Watcom (V2) にはCコンパイラと Fortran コンパイラがあります。今回用意するのは C コンパイラなので、"open-watcom-2_0-c" で始まるファイルから自分のシステムに合ったもの(例えば Windows 11 であれば "open-watcom-2_0-c-win-x64.exe")を選んでダウンロードします。


【インストール】
ダウンロードしたファイルを実行してインストールします。ちょっと特殊なインストーラーでスクリーンショットが撮れなかったのですが、途中でインストール先ディレクトリを指定する箇所があります。私はデフォルト設定(C:\WATCOM)のままインストールしました。

インストール後、Windows 11 向けの環境変数を設定します:
環境変数
WATCOMC:\WATCOM
INCLUDE%INCLUDE%;%WATCOM%\h;%WATCOM%\h\nt
PATH%PATH%;%WATCOM%\binnt


これで Open Watcom V2 コンパイラが使えるようになりました。


【試しに WATTCP を 16bit PC-DOS 向けにクロスビルド】
実際に 16bit PC-DOS 向けのクロスビルドができるかどうかの確認をしてみます。今回は TCP/IP ライブラリである WATTCP(Watt-32) を 16bit PC-DOS 向けにクロスビルドしてみます。

以下、Windows 用の git がインストール済みであることを前提とします。インストール済みでない場合はこちらからダウンロード&インストールしておいてください。

WATTCP のソースコードは GitHub リポジトリから入手可能です。コマンドプロンプトを開き、git clone します(以下のコマンドの場合は C:\WATTCP というディレクトリ名でクローンしています):
> cd \

> git clone https://github.com/gvanem/Watt-32 WATTCP

> cd WATTCP

ビルド用の環境変数 WATT_ROOT を設定します:
> set WATT_ROOT=c:\WATTCP

Open Watcom C コンパイラ用に設定します:
> configur.bat watcom

上のコマンドで watcom_*.mak というファイルが大量に作られます。これらが Open Watcom C コンパイラ用の Makefile です。特に watcom_s.mak というのが 16bit PC-DOS 環境用の Makefile です:
2026051701

※ watcom_l.mak も "16-bit" と記載されていますが、実際作ると 32bit 用だったように見えました

この watcom_s.mak を使って 16bit PC-DOS 向けのクロスビルドを実行します:
> wmake -h -f watcom_s.mak

クロスビルドに成功すると lib\wattcpws.lib というライブラリファイルが作られます:
> cd ..\lib

> dir

2026051702

無事に 16bit WATTCP ライブラリをビルドすることができました。