📄 makefile
字号:
echo $D\kernel5.map >> $D\kernel5.llk
echo $D\kernel5.lib >> $D\kernel5.llk
#############################################################################
# User
CCPARM=-c -AS -Iuser -Fo$D\ -NT
user: $D\user.lib
{user}.asm{$D}.obj:
$(TL)\masm $(AFLAGS) -Iuser $(DEFS) $<, $@;
{user}.c{$D}.obj:
$(CC) $(CCFLAGS) $(DEFS) $(CCPARM) $(CORE) $<
# - default rule for SMALL_COW_INTERNAL
USER_O = $D\alarm.obj $D\box.obj $D\button.obj $D\color.obj \
$D\defcolor.obj $D\getchar.obj \
!IFNDEF MAKE_WIN
$D\eventlow.obj \
!ENDIF
$D\screen.obj $D\screen2.obj \
!IFNDEF MAKE_CBOX
$D\menu.obj $D\menu2.obj $D\menucore.obj $D\msgbox.obj \
$D\event.obj $D\dirlist.obj $D\dlgcore.obj $D\dlgutil.obj \
$D\overlap.obj $D\overlutl.obj $D\parse.obj $D\rect.obj \
$D\scroll.obj $D\sdm.obj $D\sdmasm.obj \
$D\sdmcab.obj $D\sdmtmc.obj $D\sedit.obj $D\static.obj \
$D\listbox.obj $D\medit.obj $D\meditasm.obj $D\keystub.obj \
$D\window.obj $D\general.obj $D\case.obj \
!ENDIF
$D\graphic.obj $D\helpstub.obj $D\inswap.obj $D\kanji.obj \
$D\strings.obj $D\trapstub.obj $D\util.obj $D\keysynth.obj
USER_O3 = $D\dirlist3.obj $D\util3.obj
USER_O5 = $D\dirlist5.obj $D\util5.obj
USER_M3 = $D\dirlist3.m3 $D\util3.m3
USER_M5 = $D\dirlist5.m5 $D\util5.m5
!IF "$(OSTARG)" == "DOS3"
USER_OBJ = $(USER_O) $(USER_O3)
!ELSE
!IF "$(OSTARG)" == "OS2"
USER_OBJ = $(USER_O) $(USER_O5)
!ELSE
!IF "$(OSTARG)" == "DUAL"
USER_OBJ = $(USER_O) $(USER_M3) $(USER_M5)
!ENDIF
!ENDIF
!ENDIF
$D\user.lib: $(USER_OBJ) nullib.lib $D\user.llk
$(TL)\lib @$D\user.llk
$D\user.llk: makefile
echo nullib > $D\user.llk
tools\catresp $D\user.llk @<<
$(USER_OBJ:.obj=)
<<
echo $D\user.map >> $D\user.llk
echo $D\user.lib >> $D\user.llk
# -----------------------------------------------
# Special swap segments
!IF "$(SWAP)" == "COWS"
# - special rules (COWS variant)
$D\color.obj: user\color.c
$(CC) $(CCFLAGS) $(DEFS) $(CCPARM) INIT user\color.c
$D\defcolor.obj: user\defcolor.c
$(CC) $(CCFLAGS) $(DEFS) $(CCPARM) INIT user\defcolor.c
!ENDIF ;SWAP COWS
!IF "$(SWAP)" == "COWT"
echo --- Error Tiny swapped not supported in Make yet
abort !!!
!ENDIF ;SWAP COWT
#############################################################################
# CBox:
!IF "$(OSTARG)" == "DUAL"
CBOXHDR = $D\cboxhdr.obj
!ELSE
CBOXHDR = cbox\cboxhdr.obj
!ENDIF
!IFDEF MAKE_CBOX
cbox: $D\version.inc $(CBOXHDR) cbox\runreal.exe $D\cbox.lib
!ELSE
cbox:
!ENDIF
# - files for swapped version
T=0.tmp
CBOX_OBJ = $D\winmain.obj $D\dos.obj $D\inchar.obj \
$D\fileio.obj $D\drive.obj $D\print.obj $D\printmp.obj \
$D\win.obj $D\dosio.obj
CBOX_M3 = $(CBOX_OBJ:.obj=.m3) $D\prompt.m3
CBOX_M5 = $(CBOX_OBJ:.obj=.m5)
CBOX_D = $D\video.obj $D\gettbl.obj $D\gen.obj $D\math.obj \
$D\vidmp.obj $D\vidword.obj
CBOX_M = $(CBOX_M3) $(CBOX_M5) $(CBOX_D)
# version independent
{cbox}.asm{cbox}.m3:
$(TL)\masm $(AFLAGS) -Icbox $(DEFS) $<, $T;
modobj -s DOS3 -e dual3.xpt $T $@
mv $@ $D\$(<B)3.obj
tools\touch $@
{cbox}.asm{cbox}.m5:
$(TL)\masm $(AFLAGS) -Icbox $(DEFSOS2) $<, $T;
modobj -s OS2 -e dual5.xpt $T $@
mv $@ $D\$(<B)5.obj
tools\touch $@
{cbox}.asm{cbox}.obj:
$(TL)\masm $(AFLAGS) -Icbox $(DEFS) $<, $@;
# not version independent
{cbox}.asm{$D}.m3:
$(TL)\masm $(AFLAGS) -Icbox $(DEFS) $<, $T;
modobj -s DOS3 -e dual3.xpt $T $@
mv $@ $D\$(<B)3.obj
tools\touch $@
{cbox}.asm{$D}.m5:
$(TL)\masm $(AFLAGS) -Icbox $(DEFSOS2) $<, $T;
modobj -s OS2 -e dual5.xpt $T $@
mv $@ $D\$(<B)5.obj
tools\touch $@
{cbox}.asm{$D}.obj:
$(TL)\masm $(AFLAGS) -Icbox $(DEFS) $<, $@;
# RunReal.exe : special stub for running real mode version
cbox\runreal.exe: cbox\runreal.obj
$(TL)\masm cbox\runreal,cbox\runreal;
$(TL)\link /CP:1 cbox\runreal,cbox\runreal.exe;
!IF "$(OSTARG)" == "DUAL"
$D\cbox.lib: $(CBOX_M) nullib.lib $D\cbox.llk
$(TL)\lib @$D\cbox.llk
$D\cbox.llk: makefile
echo nullib > $D\cbox.llk
tools\catresp $D\cbox.llk @<<
$(CBOX_M3:.m3=3) $(CBOX_M5:.m5=5) $(CBOX_D)
<<
!ELSE
$D\cbox.lib: $(CBOX_OBJ) $(CBOX_D) nullib.lib $D\prompt.obj $D\cbox.llk
$(TL)\lib @$D\cbox.llk
$D\cbox.llk: makefile
echo nullib > $D\cbox.llk
tools\catresp $D\cbox.llk @<<
$(CBOX_OBJ) $(CBOX_D) $D\prompt.obj
<<
!ENDIF
echo $D\cbox.map >> $D\cbox.llk
echo $D\cbox.lib >> $D\cbox.llk
# ---------------------------------------------------------------------------
# Extra Libraries included for COWS and CBOX
!IFDEF MAKE_CBOX
!IF "$(FINAL)" == "cboxs.lib"
EXTRA_LIB = $D\cbox.lib lib\math.d86 lib\winter.e86 lib\sbmgr.e86
!ENDIF
!IF "$(FINAL)" == "dcboxs.lib"
EXTRA_LIB = $D\cbox.lib lib\dmath.d86 lib\dwinter.e86 lib\dsbmgr.e86
!ENDIF
!IF "$(FINAL)" == "cboxw.lib"
EXTRA_LIB = $D\cbox.lib lib\math.d86 lib\winter.e86 lib\sbmgr.e86
!ENDIF
!IF "$(FINAL)" == "dcboxw.lib"
EXTRA_LIB = $D\cbox.lib lib\dmath.d86 lib\dwinter.e86 lib\dsbmgr.e86
!ENDIF
!IF "$(FINAL)" == "cbox5.lib"
EXTRA_LIB = $D\cbox.lib lib\math.os2 lib\winter.os2 lib\sbmgr.os2 lib\doscalls.lib
!ENDIF
!IF "$(FINAL)" == "dcbox5.lib"
EXTRA_LIB = $D\cbox.lib lib\dmath.os2 lib\dwinter.os2 lib\dsbmgr.os2 lib\doscalls.lib
!ENDIF
!IF "$(FINAL)" == "cboxd.lib"
EXTRA_LIB = $D\cbox.lib lib\math.dmd lib\winter.dmd lib\sbmgr.dmd \
$(TL)\lib\doscalls.lib
!ENDIF
!IF "$(FINAL)" == "dcboxd.lib"
EXTRA_LIB = $D\cbox.lib lib\dmath.dmd lib\dwinter.dmd lib\dsbmgr.dmd \
$(TL)\lib\doscalls.lib
!ENDIF
!ELSE
# Not-CBOX
!IF "$(FINAL)" == "dcowd.lib"
EXTRA_LIB = lib\doscalls.lib
!ELSE
EXTRA_LIB=
!ENDIF
!ENDIF
#############################################################################
# Windows specific glue (in place of kernel)
{win}.asm{$D}.obj:
$(TL)\masm $(AFLAGS) -Iwin $(DEFS) $<, $@;
{win}.c{$D}.obj:
$(CC) $(CCFLAGS) $(DEFS) $(CCPARM) $(CORE) $<
# - files for Windows
KERNEL_WIN = $D\winstart.obj $D\winmouse.obj
$D\win.lib: $(KERNEL_WIN) nullib.lib $D\win.llk
$(TL)\lib @$D\win.llk
$D\win.llk: makefile
echo nullib > $D\win.llk
tools\catresp $D\win.llk @<<
$(KERNEL_WIN:.obj=)
<<
echo $D\win.map >> $D\win.llk
echo $D\win.lib >> $D\win.llk
#############################################################################
#############################################################################
# Final:
final: $(FINAL)
# - names of sub libraries
FIXED3_DRV = lib\fx_csd3.obj lib\fx_kbd3.obj lib\fx_syd3.obj
FIXEDD_DRV = $D\fxdcsd3.m3 $D\fxdcsd5.m5 $D\fxdkbdw.m3 $D\fxdkbd5.m5 \
$D\fxdsyd3.m3 $D\fxdsyd5.m5
FIXED5_DRV = lib\fx_csd5.obj lib\fx_kbd5.obj lib\fx_syd5.obj
!IF "$(DEBUG)" == "DEBUG"
FIXED3_DRV = lib\fx_csd3.obj lib\dfx_kbd3.obj lib\fx_syd3.obj
!ENDIF
!IF "$(DEBUG)" == "DEBUG"
FIXEDD_DRV = $D\fxdcsd3.m3 $D\fxdcsd5.m5 $D\dfxdkbdw.m3 $D\dfxdkbd5.m5 \
$D\fxdsyd3.m3 $D\fxdsyd5.m5
!ENDIF
!IF "$(FINAL)" == "cboxw.lib"
FIXED3_DRV = lib\fx_csd3.obj lib\fx_kbdw.obj lib\fx_syd3.obj
!ENDIF
!IF "$(FINAL)" == "dcboxw.lib"
FIXED3_DRV = lib\fx_csd3.obj lib\dfx_kbdw.obj lib\fx_syd3.obj
!ENDIF
!IF "$(FINAL)" == "dcowsqc.lib"
FIXED3_DRV = lib\fx_twin.obj lib\dfx_kbd3.obj lib\fx_syd3.obj
!ENDIF
!IF "$(FINAL)" == "cowsqc.lib"
FIXED3_DRV = lib\fx_twin.obj lib\fx_kbd3.obj lib\fx_syd3.obj
!ENDIF
!IF "$(FINAL)" == "dcowqb.lib"
FIXED3_DRV = lib\fx_twin.obj lib\dfx_kbd3.obj lib\fx_syd3.obj
!ENDIF
!IF "$(FINAL)" == "cowqb.lib"
FIXED3_DRV = lib\fx_twin.obj lib\fx_kbd3.obj lib\fx_syd3.obj
!ENDIF
!IF "$(FINAL)" == "dcowlqb.lib"
FIXED3_DRV = lib\fx_twin.obj lib\dfx_kbd3.obj lib\fx_syd3.obj
!ENDIF
!IF "$(FINAL)" == "cowlqb.lib"
FIXED3_DRV = lib\fx_twin.obj lib\fx_kbd3.obj lib\fx_syd3.obj
!ENDIF
!IF "$(FINAL)" == "dkowqb.lib"
FIXED3_DRV = lib\fx_twink.obj lib\dfx_kbdk.obj lib\fx_syd3.obj
!ENDIF
!IF "$(FINAL)" == "kowqb.lib"
FIXED3_DRV = lib\fx_twink.obj lib\fx_kbdk.obj lib\fx_syd3.obj
!ENDIF
!IF "$(KERNEL)" == "kernel.lib"
ALL_LIB = $D\kernel.lib $D\user.lib $(FIXED3_DRV) dstamp.obj
!ENDIF
!IF "$(KERNEL)" == "kerneld.lib"
ALL_LIB = $D\kerneld.lib $D\user.lib $(FIXEDD_DRV) dstampd.obj
!ENDIF
!IF "$(KERNEL)" == "kernel3.lib"
ALL_LIB = $D\kernel3.lib $D\user.lib $(FIXED3_DRV) dstamp3.obj
!ENDIF
!IF "$(KERNEL)" == "kernel5.lib"
ALL_LIB = $D\kernel5.lib $D\user.lib $(FIXED5_DRV) dstamp5.obj
!ENDIF
!IF "$(KERNEL)" == "win.lib"
ALL_LIB = $D\win.lib $D\user.lib
!ENDIF
$(FINAL): nullib.lib $(ALL_LIB) $(EXTRA_LIB)
$(TL)\lib @<<
nullib
$(ALL_LIB) $(EXTRA_LIB)
$D\final.map
$(FINAL)
<<
#############################################################################
# Version stamps
dstamp.obj: $(COWSLIB) stamp.asm
type stamp.asm > dstamp.asm
tools\echotime DB 'CW (/t)' >> dstamp.asm
type stamp2.asm >> dstamp.asm
$(TL)\masm dstamp.asm;
dstampd.obj: $(COWDLIB) stamp.asm
type stamp.asm > dstampd.asm
tools\echotime DB 'CW (/t)' >> dstampd.asm
type stamp2.asm >> dstampd.asm
$(TL)\masm dstampd.asm;
dstamp3.obj: $(COW3LIB) stamp.asm
type stamp.asm > dstamp3.asm
tools\echotime DB 'CW 3 (/t)' >> dstamp3.asm
type stamp2.asm >> dstamp3.asm
$(TL)\masm dstamp3.asm;
dstamp5.obj: $(COW5LIB) stamp.asm
type stamp.asm > dstamp5.asm
tools\echotime DB 'OS/2 CW (/t)' >> dstamp5.asm
type stamp2.asm >> dstamp5.asm
$(TL)\masm dstamp5.asm;
#############################################################################
#############################################################################
# Misc:
clean:
echo : Not yet defined
depfile: makefile
echo ##### Dependency File ##### > depfile
tools\mkdep -s .obj -P $$D\ -I inc -I loader loader\*.asm >> depfile
tools\mkdep -s .obj -P $$D\ -I inc -I kernel kernel\*.asm kernel\*.c >> depfile
tools\mkdep -s .obj -P $$D\ -I inc -I user user\*.asm user\*.c >> depfile
tools\mkdep -s .obj -P $$D\ -I inc -I cbox cbox\*.asm cbox\*.c >> depfile
#############################################################################
# LATER:
#
## - fixstub utility -- move to tools
#fixstub.exe: fixstub.c
# $(CC) fixstub.c
#
#############################################################################
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -