a4c844dc62
git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@316 6ac86273-5f31-0410-b378-82cca8765d1b
422 lines
11 KiB
Makefile
422 lines
11 KiB
Makefile
#
|
||
# Makefile for Borland C++ 3.1 for kernel.sys
|
||
#
|
||
# $Id$
|
||
#
|
||
|
||
# $Log$
|
||
# Revision 1.1 2001/11/04 20:10:15 bartoldeman
|
||
# Added new makefile names, utils sources, kconfig.h
|
||
#
|
||
# Revision 1.13 2001/07/24 16:56:29 bartoldeman
|
||
# fixes for FCBs, DJGPP ls, DBLBYTE, dyninit allocation (2024e).
|
||
#
|
||
# Revision 1.12 2001/07/22 01:58:58 bartoldeman
|
||
# Support for Brian's FORMAT, DJGPP libc compilation, cleanups, MSCDEX
|
||
#
|
||
# Revision 1.11 2001/07/09 22:19:33 bartoldeman
|
||
# LBA/FCB/FAT/SYS/Ctrl-C/ioctl fixes + memory savings
|
||
#
|
||
# Revision 1.10 2001/04/21 22:32:53 bartoldeman
|
||
# Init DS=Init CS, fixed stack overflow problems and misc bugs.
|
||
#
|
||
# Revision 1.9 2001/04/16 14:28:32 bartoldeman
|
||
# Kernel build 2024. Fixed critical error handler/config.sys/makefiles/UMBs
|
||
#
|
||
# Revision 1.8 2001/04/15 03:21:50 bartoldeman
|
||
# See history.txt for the list of fixes.
|
||
#
|
||
# Revision 1.7 2001/03/25 17:11:54 bartoldeman
|
||
# Fixed sys.com compilation. Updated to 2023. Also: see history.txt.
|
||
#
|
||
# Revision 1.6 2001/03/21 02:56:26 bartoldeman
|
||
# See history.txt for changes. Bug fixes and HMA support are the main ones.
|
||
#
|
||
# Revision 1.4 2000/08/06 05:50:17 jimtabor
|
||
# Add new files and update cvs with patches and changes
|
||
#
|
||
# Revision 1.3 2000/05/25 20:56:21 jimtabor
|
||
# Fixed project history
|
||
#
|
||
# Revision 1.2 2000/05/08 04:30:00 jimtabor
|
||
# Update CVS to 2020
|
||
#
|
||
# Revision 1.1.1.1 2000/05/06 19:34:53 jhall1
|
||
# The FreeDOS Kernel. A DOS kernel that aims to be 100% compatible with
|
||
# MS-DOS. Distributed under the GNU GPL.
|
||
#
|
||
# Revision 1.14 2000/03/31 05:40:09 jtabor
|
||
# Added Eric W. Biederman Patches
|
||
#
|
||
# Revision 1.13 2000/03/17 22:59:04 kernel
|
||
# Steffen Kaiser's NLS changes
|
||
#
|
||
# Revision 1.12 2000/03/09 06:07:11 kernel
|
||
# 2017f updates by James Tabor
|
||
#
|
||
# Revision 1.11 1999/09/23 04:40:47 jprice
|
||
# *** empty log message ***
|
||
#
|
||
# Revision 1.8 1999/09/13 20:41:41 jprice
|
||
# Some clean up.
|
||
#
|
||
# Revision 1.7 1999/08/25 03:18:09 jprice
|
||
# ror4 patches to allow TC 2.01 compile.
|
||
#
|
||
# Revision 1.6 1999/08/10 17:57:13 jprice
|
||
# ror4 2011-02 patch
|
||
#
|
||
# Revision 1.5 1999/04/23 04:25:15 jprice
|
||
# no message
|
||
#
|
||
# Revision 1.4 1999/04/23 03:45:11 jprice
|
||
# Improved by jprice
|
||
#
|
||
# Revision 1.3 1999/04/16 12:21:22 jprice
|
||
# Steffen c-break handler changes
|
||
#
|
||
# Revision 1.2 1999/04/13 15:48:21 jprice
|
||
# no message
|
||
#
|
||
# Revision 1.1.1.1 1999/03/29 15:41:15 jprice
|
||
# New version without IPL.SYS
|
||
#
|
||
# Revision 1.7 1999/03/01 06:04:37 jprice
|
||
# Fixed so it'll work with config.mak
|
||
#
|
||
# Revision 1.6 1999/03/01 05:46:43 jprice
|
||
# Turned off DEBUG define.
|
||
#
|
||
# Revision 1.5 1999/02/09 04:49:43 jprice
|
||
# Make makefile use common config.mak file
|
||
#
|
||
# Revision 1.4 1999/02/08 05:55:57 jprice
|
||
# Added Pat's 1937 kernel patches
|
||
#
|
||
# Revision 1.3 1999/02/04 03:09:59 jprice
|
||
# Added option to share constants (-d).
|
||
#
|
||
# Revision 1.2 1999/01/22 04:13:26 jprice
|
||
# Formating
|
||
#
|
||
# Revision 1.1.1.1 1999/01/20 05:51:01 jprice
|
||
# Imported sources
|
||
#
|
||
#
|
||
# Rev 1.8.1 10 Jan 1999 SRM
|
||
#Took out "/P-" from TLINK
|
||
#Changed "bcc" to "tcc"
|
||
#
|
||
# Rev 1.9 06 Dec 1998 8:45:40 patv
|
||
#Added new files for I/O subsystem.
|
||
#
|
||
# Rev 1.8 22 Jan 1998 14:50:06 patv
|
||
#Outdated stacks.asm.
|
||
#
|
||
# Rev 1.6 03 Jan 1998 8:36:50 patv
|
||
#Converted data area to SDA format
|
||
#
|
||
# Rev 1.5 30 Jan 1997 7:55:54 patv
|
||
#Added TSC flag for trace support.
|
||
#
|
||
# Rev 1.4 16 Jan 1997 12:46:42 patv
|
||
#pre-Release 0.92 feature additions
|
||
#
|
||
# Rev 1.3 29 Aug 1996 13:07:34 patv
|
||
#Bug fixes for v0.91b
|
||
#
|
||
# Rev 1.2 29 May 1996 21:03:32 patv
|
||
#bug fixes for v0.91a
|
||
#
|
||
# Rev 1.1 19 Feb 1996 3:35:38 patv
|
||
#Added NLS, int2f and config.sys processing
|
||
#
|
||
# Rev 1.0 02 Jul 1995 8:30:22 patv
|
||
#Initial revision.
|
||
#
|
||
# $EndLog$
|
||
#
|
||
|
||
!include "..\config.mak"
|
||
|
||
RELEASE = 1.00
|
||
|
||
# Compiler and Options for Borland C++
|
||
# ------------------------------------
|
||
#
|
||
# -zAname <20> <20> Code class
|
||
# -zBname <20> <20> BSS class
|
||
# -zCname <20> <20> Code segment
|
||
# -zDname <20> <20> BSS segment
|
||
# -zEname <20> <20> Far segment
|
||
# -zFname <20> <20> Far class
|
||
# -zGname <20> <20> BSS group
|
||
# -zHname <20> <20> Far group
|
||
# -zPname <20> <20> Code group
|
||
# -zRname <20> <20> Data segment
|
||
# -zSname <20> <20> Data group
|
||
# -zTname <20> <20> Data class
|
||
# -zX <20><><EFBFBD> Use default name for "X"
|
||
|
||
|
||
# Compiler and Options
|
||
|
||
INCLUDE=$(COMPILERBASE)\include
|
||
LIB= $(COMPILERBASE)\lib
|
||
|
||
LIBPATH = .
|
||
#AFLAGS = /Mx /DSTANDALONE=1 /I..\HDR
|
||
|
||
LIBS =..\LIB\DEVICE.LIB ..\LIB\LIBM.LIB
|
||
#INITCFLAGS =$(ALLCFLAGS) -zAINIT -zCINIT_TEXT -zDIB -zRID -zTID -zPIGROUP -zBIB \
|
||
#-zGIGROUP -zSIGROUP
|
||
#CFLAGS =$(ALLCFLAGS) -zAHMA -zCHMA_TEXT
|
||
HDR=../hdr/
|
||
|
||
# *Implicit Rules*
|
||
# 'standard' compiles
|
||
|
||
.c.obj :
|
||
$(CC) $(CFLAGS) -c $*.c
|
||
$(PATCHOBJ) $*.obj $(STDPATCH)
|
||
|
||
# *List Macros*
|
||
|
||
|
||
EXE_dependencies = \
|
||
apisupt.obj \
|
||
rtlsupt.obj \
|
||
asmsupt.obj \
|
||
blockio.obj \
|
||
break.obj \
|
||
chario.obj \
|
||
config.obj \
|
||
console.obj \
|
||
dosidle.obj \
|
||
dosfns.obj \
|
||
dosnames.obj \
|
||
dsk.obj \
|
||
initdisk.obj \
|
||
entry.obj \
|
||
error.obj \
|
||
execrh.obj \
|
||
fatdir.obj \
|
||
fatfs.obj \
|
||
fattab.obj \
|
||
fcbfns.obj \
|
||
initoem.obj \
|
||
int2f.obj \
|
||
inthndlr.obj \
|
||
io.obj \
|
||
intr.obj \
|
||
ioctl.obj \
|
||
irqstack.obj \
|
||
kernel.obj \
|
||
main.obj \
|
||
memmgr.obj \
|
||
misc.obj \
|
||
newstuff.obj \
|
||
network.obj \
|
||
nls.obj \
|
||
nls_hc.obj \
|
||
nlssupt.obj \
|
||
prf.obj \
|
||
iprf.obj \
|
||
printer.obj \
|
||
procsupt.obj \
|
||
serial.obj \
|
||
strings.obj \
|
||
sysclk.obj \
|
||
syspack.obj \
|
||
systime.obj \
|
||
task.obj \
|
||
inithma.obj \
|
||
dyndata.obj \
|
||
dyninit.obj
|
||
|
||
# *Explicit Rules*
|
||
|
||
production: ..\bin\kernel.sys
|
||
|
||
..\bin\kernel.sys: kernel.sys
|
||
copy kernel.sys ..\bin
|
||
copy kernel.sys ..\bin\$(THETARGET).sys
|
||
copy kernel.map ..\bin\$(THETARGET).map
|
||
|
||
kernel.sys: kernel.exe ..\utils\exeflat.exe
|
||
..\utils\exeflat kernel.exe kernel.sys 0x60
|
||
|
||
clobber: clean
|
||
$(RM) kernel.exe kernel.sys status.me
|
||
|
||
clean:
|
||
$(RM) *.obj *.bak *.crf *.xrf *.map *.lst *.cod
|
||
|
||
# XXX: This is a very ugly way of linking the kernel, forced upon us by the
|
||
# inability of Turbo `make' 2.0 to perform command line redirection. -- ror4
|
||
kernel.exe: $(EXE_dependencies) $(LIBS)
|
||
$(RM) kernel.lib
|
||
$(LIBUTIL) kernel.lib $(LIBPLUS)entry.obj $(LIBPLUS)io.obj $(LIBPLUS)blockio.obj $(LIBPLUS)chario.obj $(LIBPLUS)dosfns.obj $(LIBPLUS)console.obj$(LIBTERM)
|
||
$(LIBUTIL) kernel.lib $(LIBPLUS)printer.obj $(LIBPLUS)serial.obj $(LIBPLUS)dsk.obj $(LIBPLUS)initdisk.obj $(LIBPLUS)error.obj $(LIBPLUS)fatdir.obj $(LIBPLUS)fatfs.obj$(LIBTERM)
|
||
$(LIBUTIL) kernel.lib $(LIBPLUS)fattab.obj $(LIBPLUS)fcbfns.obj $(LIBPLUS)initoem.obj $(LIBPLUS)initHMA.obj $(LIBPLUS)inthndlr.obj $(LIBPLUS)ioctl.obj $(LIBPLUS)nls_hc.obj$(LIBTERM)
|
||
$(LIBUTIL) kernel.lib $(LIBPLUS)main.obj $(LIBPLUS)config.obj $(LIBPLUS)memmgr.obj $(LIBPLUS)misc.obj $(LIBPLUS)newstuff.obj $(LIBPLUS)nls.obj $(LIBPLUS)intr.obj$(LIBTERM)
|
||
$(LIBUTIL) kernel.lib $(LIBPLUS)dosnames.obj $(LIBPLUS)prf.obj $(LIBPLUS)strings.obj $(LIBPLUS)network.obj $(LIBPLUS)sysclk.obj $(LIBPLUS)syspack.obj$(LIBTERM)
|
||
$(LIBUTIL) kernel.lib $(LIBPLUS)systime.obj $(LIBPLUS)task.obj $(LIBPLUS)int2f.obj $(LIBPLUS)irqstack.obj $(LIBPLUS)apisupt.obj$(LIBTERM)
|
||
$(LIBUTIL) kernel.lib $(LIBPLUS)asmsupt.obj $(LIBPLUS)execrh.obj $(LIBPLUS)nlssupt.obj $(LIBPLUS)procsupt.obj $(LIBPLUS)break.obj$(LIBTERM)
|
||
$(LIBUTIL) kernel.lib $(LIBPLUS)dosidle.obj $(LIBPLUS)dyndata.obj $(LIBPLUS)dyninit.obj $(LIBPLUS)rtlsupt.obj $(LIBTERM)
|
||
$(RM) kernel.bak
|
||
$(LINK) kernel iprf,kernel,kernel,kernel+$(LIBS)$(LINKTERM)
|
||
$(RM) kernel.lib
|
||
|
||
# *Individual File Dependencies*
|
||
kernel.obj: kernel.asm segs.inc
|
||
|
||
console.obj: console.asm io.inc
|
||
|
||
printer.obj: printer.asm io.inc
|
||
|
||
serial.obj: serial.asm io.inc
|
||
|
||
entry.obj: entry.asm segs.inc $(HDR)stacks.inc
|
||
|
||
apisupt.obj: apisupt.asm segs.inc
|
||
|
||
rtlsupt.obj: rtlsupt.asm segs.inc
|
||
|
||
execrh.obj: execrh.asm segs.inc
|
||
|
||
int2f.obj: int2f.asm segs.inc
|
||
|
||
intr.obj: intr.asm segs.inc intr.h
|
||
|
||
io.obj: io.asm segs.inc
|
||
|
||
irqstack.obj: irqstack.asm
|
||
|
||
nls_hc.obj: nls_hc.asm segs.inc
|
||
|
||
nlssupt.obj: nlssupt.asm segs.inc
|
||
|
||
procsupt.obj: procsupt.asm segs.inc $(HDR)stacks.inc
|
||
|
||
dosidle.obj: dosidle.asm segs.inc
|
||
|
||
# XXX: Special handling for initialization modules -- this is required because
|
||
# TC 2.01 cannot handle `#pragma option' like TC 3 can. -- ror4
|
||
|
||
INITHEADERS=init-mod.h init-dat.h
|
||
|
||
CONFIGURATION = turboc.cfg makefile ..\config.mak ..\mkfiles\$(COMPILER).MAK
|
||
|
||
HEADERS=\
|
||
$(HDR)portab.h $(HDR)device.h $(HDR)mcb.h $(HDR)pcb.h \
|
||
$(HDR)fat.h $(HDR)fcb.h $(HDR)tail.h $(HDR)time.h $(HDR)process.h \
|
||
$(HDR)dcb.h $(HDR)sft.h $(HDR)cds.h $(HDR)exe.h $(HDR)fnode.h \
|
||
$(HDR)dirmatch.h $(HDR)file.h $(HDR)clock.h $(HDR)kbd.h $(HDR)error.h \
|
||
$(HDR)version.h globals.h proto.h dyndata.h
|
||
|
||
# XXX: I generated these using `gcc -MM' and `sed', so they may not be
|
||
# completely correct... -- ror4
|
||
|
||
blockio.obj: blockio.c $(HEADERS) $(CONFIGURATION)
|
||
|
||
break.obj: break.c $(HEADERS) $(CONFIGURATION)
|
||
|
||
chario.obj: chario.c $(HEADERS) $(CONFIGURATION)
|
||
|
||
dosfns.obj: dosfns.c $(HEADERS) $(CONFIGURATION)
|
||
|
||
dosnames.obj: dosnames.c $(HEADERS) $(CONFIGURATION)
|
||
|
||
dsk.obj: dsk.c $(HEADERS) $(CONFIGURATION)
|
||
|
||
error.obj: error.c $(HEADERS) $(CONFIGURATION)
|
||
|
||
fatdir.obj: fatdir.c $(HEADERS) $(CONFIGURATION)
|
||
|
||
fatfs.obj: fatfs.c $(HEADERS) $(CONFIGURATION)
|
||
|
||
fattab.obj: fattab.c $(HEADERS) $(CONFIGURATION)
|
||
|
||
fcbfns.obj: fcbfns.c $(HEADERS) $(CONFIGURATION)
|
||
|
||
inthndlr.obj: inthndlr.c $(HEADERS) $(CONFIGURATION)
|
||
|
||
ioctl.obj: ioctl.c $(HEADERS) $(CONFIGURATION)
|
||
|
||
memmgr.obj: memmgr.c $(HEADERS) $(CONFIGURATION)
|
||
|
||
misc.obj: misc.c $(HEADERS) $(CONFIGURATION)
|
||
|
||
newstuff.obj: newstuff.c $(HEADERS) $(CONFIGURATION)
|
||
|
||
network.obj: network.c $(HEADERS) $(CONFIGURATION)
|
||
|
||
nls.obj: nls.c $(HEADERS) $(CONFIGURATION)
|
||
|
||
# \
|
||
# 001-437.nls
|
||
|
||
prf.obj: prf.c $(HDR)\portab.h $(CONFIGURATION)
|
||
|
||
strings.obj: strings.c $(CONFIGURATION)
|
||
|
||
sysclk.obj: sysclk.c $(HEADERS) $(CONFIGURATION)
|
||
|
||
syspack.obj: syspack.c $(HEADERS) $(CONFIGURATION)
|
||
|
||
systime.obj: systime.c $(HEADERS) $(CONFIGURATION)
|
||
|
||
task.obj: task.c $(HEADERS) $(CONFIGURATION)
|
||
|
||
# now the funny stuff :-)
|
||
# Files in the INIT segment
|
||
|
||
# $(CC) $(INITCFLAGS) -c $*.c
|
||
# patchobj $*.obj $(INITPATCH)
|
||
|
||
config.obj: config.c $(INITHEADERS) $(HEADERS) $(CONFIGURATION)
|
||
$(CC) $(INITCFLAGS) -c $*.c
|
||
$(PATCHOBJ) $*.obj $(INITPATCH)
|
||
|
||
initoem.obj: initoem.c $(INITHEADERS) $(HEADERS) $(CONFIGURATION)
|
||
$(CC) $(INITCFLAGS) -c $*.c
|
||
$(PATCHOBJ) $*.obj $(INITPATCH)
|
||
|
||
main.obj: main.c $(INITHEADERS) $(HEADERS) $(CONFIGURATION)
|
||
$(CC) $(INITCFLAGS) -c $*.c
|
||
$(PATCHOBJ) $*.obj $(INITPATCH)
|
||
|
||
inithma.obj: inithma.c $(INITHEADERS) $(HEADERS) $(CONFIGURATION)
|
||
$(CC) $(INITCFLAGS) -c $*.c
|
||
$(PATCHOBJ) $*.obj $(INITPATCH)
|
||
|
||
dyninit.obj: dyninit.c $(INITHEADERS) $(HEADERS) $(CONFIGURATION)
|
||
$(CC) $(INITCFLAGS) -c $*.c
|
||
$(PATCHOBJ) $*.obj $(INITPATCH)
|
||
|
||
initdisk.obj: initdisk.c $(INITHEADERS) $(HEADERS) $(CONFIGURATION)
|
||
$(CC) $(INITCFLAGS) -c $*.c
|
||
$(PATCHOBJ) $*.obj $(INITPATCH)
|
||
|
||
|
||
# $(CC) $(CFLAGS) -c $*.c
|
||
# patchobj $*.obj _DATA=DYN_DATA DATA=DYN_DATA CODE=HMA CONST=DCONST
|
||
|
||
dyndata.obj: dyndata.c dyndata.h
|
||
$(CC) $(DYNCFLAGS) -c $*.c
|
||
$(PATCHOBJ) $*.obj $(DYNPATCH)
|
||
|
||
|
||
|
||
#the printf for INIT_TEXT - yet another special case
|
||
# $(CC) -D_INIT $(INITCFLAGS) -Foiprf.obj -c prf.c
|
||
# patchobj Iprf.obj $(INITPATCH)
|
||
|
||
iprf.obj: prf.c $(HDR)\portab.h $(CONFIGURATION)
|
||
$(CC) -D_INIT $(IPRFCFLAGS) -c prf.c
|
||
$(PATCHOBJ) iprf.obj $(INITPATCH)
|
||
|
||
|
||
|