⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 makefile

📁 这是DOS系统的源代码,汇编写的,值得看看,对开发操作系统的人员有价值
💻
📖 第 1 页 / 共 2 页
字号:
	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 + -