Skip to content

Instantly share code, notes, and snippets.

@lpproj
Created March 19, 2023 05:37
Show Gist options
  • Save lpproj/adb110837947feb06e8f95837343ad60 to your computer and use it in GitHub Desktop.
Save lpproj/adb110837947feb06e8f95837343ad60 to your computer and use it in GitHub Desktop.
#
# Makefile for OpenWatcom's wmake
# wmake -h -f idedev_ow.mak
#
# WCL/WCC specific options:
# important options for this build:
# -ecc default calling conversion: cdecl (compatible with MS/Borland C)
# -zk0 charset: Shift_JIS (cp932)
# -s remove stack check code
# -k4096 (linker) set default stack size: 4096 bytes
# extra options:
# -zq quiet
# -os optimize for size
# -Fr do not produce err file
#
# Assembler options (MASM 6.x/JWasm):
# /Zm MASM 5.1 compatible mode
# /Cp preserve case (public symbols)
# /Gc default calling conversion: cdecl (needed for JWasm)
# /Fr (JWasm) do not produce err file
#
# note:
# まりも氏のidedevを、ためしにOpenWatcomのCコンパイラ(wcl)とJWasmで
# 野良ビルドしてみるためのメモ。
# (ファイル完全無修正では無理でした…)
#
# * OpenWatcomのバージョンはたぶん1.5以上が必要(2.0betaでのみテスト)。
# -eccオプションに対するコンパイラとライブラリ両方のサポートが必須。
# * Cソースコード終端のEOFコードを適当なエディタかツールで除去する必要がある。
# (OpenWatcom1.5以上ではISO C不適合扱いでエラーになる。1.4では無修正で
# 通るが、ライブラリ側の-eccオプション対応が不十分でリンクが失敗する。
# 1.3までのコンパイラはデフォルトのcalling conversionを変更できない)
# (内部が完全にUnicode処理のエディタでうかつに編集すると、IDEDEV.C内の
# 罫線コードが文字化けする点に注意が必要)
# * Watcom Cでコンパイルしたプログラムのデフォルトスタックサイズは2Kバイトだが
# 他のコンパイラを想定したソースだとスタック不足で動作不安定になることが
# 意外とある。MSやBorlandは4~5Kバイト程度なのですこし増やしておくのが無難。
# * アセンブラはMicrosoft MASM 5.1か6.xが必要。OpenWatcom付属のwasmは
# 使えない。JWasmで一応代用できる(-Gcオプション必須)。
#
!ifdef __UNIX__
O=o
A=a
OPT=-
D=/
!else
O=obj
A=lib
OPT=/
D=\
!endif
X=.exe
.ERASE
.EXTENSIONS:
.EXTENSIONS: .com .exe .$(O) .C .S
# use wmake buitin rm & copy
RM_F=rm -f
CP=copy
CC=wcl
CFLAGS=$(OPT)zq $(OPT)s $(OPT)os $(OPT)Fr $(OPT)zk0 $(OPT)ecc
LD=wcl
LDFLAGS=$(OPT)k4096
#AS=ml
#AFLAGS=/nologo /Zm /Cx
AS=jwasm
AFLAGS=-nologo -Zm -Cx -Gc -Fr
.S.$(O):
$(AS) $(OPT)c $(AFLAGS) $(OPT)Fo$@ $<
.C.$(O):
$(CC) $(OPT)c $(CFLAGS) $(OPT)Fo$@ $<
SUBOBJS=dev1.$(O) ata.$(O) misc.$(O)
all: idedev$(X) idedev_$(X)
clean: .SYMBOLIC
-$(RM_F) idedev.exe idedev_.exe
-$(RM_F) *.$(O) *.err
idedev$(X): idedev.$(O) $(SUBOBJS)
$(LD) $(CFLAGS) $(OPT)Fe$@ idedev.$(O) $(SUBOBJS) $(LDFLAGS)
idedev_$(X): idedev_.$(O) $(SUBOBJS)
$(LD) $(CFLAGS) $(OPT)Fe$@ idedev_.$(O) $(SUBOBJS) $(LDFLAGS)
idedev.$(O): IDEDEV.C
idedev_.$(O): IDEDEV_.C
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment