FreeDOS/kernel/makefile
Bart Oldeman aa352cc548 * combine the INIT class with the CODE class (classes can span
multiple physical segments)
    * re-add _TEXT to LGROUP to be able to simplify the patchobj magic
    * don't specify -zPI_GROUP for the init code in Borland compilers
      (unnecessary, it will be put there because of segs.inc)
    * remove STDPATCH; it is no longer necessary


git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@588 6ac86273-5f31-0410-b378-82cca8765d1b
2003-06-15 12:56:57 +00:00

264 lines
6.7 KiB
Makefile

#
# Makefile for Borland C++ 3.1 for kernel.sys
#
# $Id$
#
!include "..\mkfiles\generic.mak"
RELEASE = 1.00
# Compiler and Options
INCLUDE=..\hdr
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) $<
# *List Macros*
EXE_dependencies = \
apisupt.obj \
asmsupt.obj \
blockio.obj \
break.obj \
chario.obj \
config.obj \
console.obj \
dosidle.obj \
dosfns.obj \
dosnames.obj \
dsk.obj \
initdisk.obj \
initclk.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 \
lfnapi.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 \
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
$(XUPX) kernel.exe
..\utils\exeflat kernel.exe kernel.sys 0x60 -S0x10 -S0x8B $(UPXOPT)
clobber: clean
-$(RM) kernel.exe kernel.sys status.me
clean:
-$(RM) *.res *.obj *.bak *.crf *.xrf *.map *.lst *.cod *.err
# 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.res: $(EXE_dependencies) $(LIBS)
-$(RM) kernel.res
..\utils\echoto kernel.res kernel.obj iprf.obj+
..\utils\echoto kernel.res entry.obj io.obj blockio.obj chario.obj dosfns.obj console.obj+
..\utils\echoto kernel.res printer.obj serial.obj dsk.obj initdisk.obj initclk.obj error.obj fatdir.obj fatfs.obj+
..\utils\echoto kernel.res fattab.obj fcbfns.obj initoem.obj initHMA.obj inthndlr.obj ioctl.obj nls_hc.obj+
..\utils\echoto kernel.res main.obj config.obj memmgr.obj misc.obj newstuff.obj nls.obj intr.obj+
..\utils\echoto kernel.res dosnames.obj prf.obj strings.obj network.obj sysclk.obj syspack.obj+
..\utils\echoto kernel.res systime.obj task.obj int2f.obj irqstack.obj apisupt.obj+
..\utils\echoto kernel.res asmsupt.obj execrh.obj nlssupt.obj procsupt.obj break.obj+
..\utils\echoto kernel.res dosidle.obj dyninit.obj lfnapi.obj
..\utils\echoto kernel.res kernel.exe
..\utils\echoto kernel.res kernel.map
..\utils\echoto kernel.res ..\lib\libm.lib ..\lib\device.lib
kernel.exe: kernel.res $(EXE_dependencies) $(LIBS)
$(LINK) @kernel.res;
# *Individual File Dependencies*
kernel.obj: kernel.asm segs.inc ludivmul.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
execrh.obj: execrh.asm segs.inc
int2f.obj: int2f.asm segs.inc
intr.obj: intr.asm segs.inc
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 ..\mkfiles\generic.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)
lfnapi.obj: lfnapi.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
$(INITPATCH) $*.obj
initoem.obj: initoem.c $(INITHEADERS) $(HEADERS) $(CONFIGURATION)
$(CC) $(INITCFLAGS) $*.c
$(INITPATCH) $*.obj
main.obj: main.c $(INITHEADERS) $(HEADERS) $(CONFIGURATION)
$(CC) $(INITCFLAGS) $*.c
$(INITPATCH) $*.obj
inithma.obj: inithma.c $(INITHEADERS) $(HEADERS) $(CONFIGURATION)
$(CC) $(INITCFLAGS) $*.c
$(INITPATCH) $*.obj
dyninit.obj: dyninit.c $(INITHEADERS) $(HEADERS) $(CONFIGURATION)
$(CC) $(INITCFLAGS) $*.c
$(INITPATCH) $*.obj
initdisk.obj: initdisk.c $(INITHEADERS) $(HEADERS) $(CONFIGURATION)
$(CC) $(INITCFLAGS) $*.c
$(INITPATCH) $*.obj
initclk.obj: initclk.c $(INITHEADERS) $(HEADERS) $(CONFIGURATION)
$(CC) $(INITCFLAGS) $*.c
$(INITPATCH) $*.obj
#the printf for INIT_TEXT - yet another special case, this file includes prf.c
iprf.obj: iprf.c prf.c $(HDR)\portab.h $(CONFIGURATION)
$(CC) $(INITCFLAGS) $*.c
$(INITPATCH) $*.obj