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

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

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 向けの環境変数を設定します:
これで 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 というディレクトリ名でクローンしています):
ビルド用の環境変数 WATT_ROOT を設定します:
Open Watcom C コンパイラ用に設定します:
上のコマンドで watcom_*.mak というファイルが大量に作られます。これらが Open Watcom C コンパイラ用の Makefile です。特に watcom_s.mak というのが 16bit PC-DOS 環境用の Makefile です:

※ watcom_l.mak も "16-bit" と記載されていますが、実際作ると 32bit 用だったように見えました
この watcom_s.mak を使って 16bit PC-DOS 向けのクロスビルドを実行します:
クロスビルドに成功すると lib\wattcpws.lib というライブラリファイルが作られます:

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

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

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 向けの環境変数を設定します:
| 環境変数 | 値 |
|---|---|
| WATCOM | C:\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 です:

※ watcom_l.mak も "16-bit" と記載されていますが、実際作ると 32bit 用だったように見えました
この watcom_s.mak を使って 16bit PC-DOS 向けのクロスビルドを実行します:
> wmake -h -f watcom_s.mak
クロスビルドに成功すると lib\wattcpws.lib というライブラリファイルが作られます:
> cd ..\lib > dir

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














