ifeq ($(shell uname -s),SPAD)
OS=spad
else
ifeq ($(shell uname -s),OS/2)
OS=os2
else
OS=unix
endif
endif

WARNINGS=-Wall -Wundef -Wpointer-arith -Wmissing-prototypes -Wmissing-declarations -Wpacked -Wnested-externs -Winline -Wno-unused-parameter -Wno-missing-braces -Wno-address -Wno-array-bounds -Wstrict-aliasing=2
#WARNINGS=-Wall -Wundef -Wpointer-arith -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline -Wno-missing-braces

#WARNINGS=-Wimplicit -Wuninitialized -Wreturn-type -Wunused -Wmissing-prototypes

ARCH=IA32

ifeq ($(OS),unix)
HOST_EXE=
else
HOST_EXE=.EXE
endif

COMMON_FILES=FS/BIND_SYS.EXE FS/KERNEL.SYS FS/CRT0.O FS/KERNEL.DLL FS/SHELL.DLL FS/SHELL.EXE FS/DMAN.EXE FS/SYSCALLS.SYS FS/NULL.SYS FS/PIPE.SYS FS/RANDOM.SYS FS/TTY.DLL FS/CTTY.SYS FS/TTYSRVR.SYS FS/BIO.DLL FS/BIOQUE.DLL FS/BIO.IOC FS/ATA.DLL FS/ACTRL.SYS FS/PROMISE.SYS FS/K2.SYS FS/AD.SYS FS/FD.SYS FS/SCSI.DLL FS/SCSIPLUG.CMD FS/CDROM.IOC FS/SCSI.IOC FS/SD.SYS FS/SD.SCS FS/INIA100.SYS FS/MPT.SYS FS/USBMSD.SYS FS/USBMSD.USB FS/RAID.SYS FS/SCANPART.EXE FS/SWAPPER.SYS FS/MKSWAP.EXE FS/VFS.DLL FS/SPADFS.SYS FS/MKSPADFS.EXE FS/SPADFSCK.EXE FS/FAT.SYS FS/EXT2.SYS FS/HPFS.SYS FS/CDFS.SYS FS/NET.DLL FS/NETQUE.DLL FS/TCPIP.SYS FS/EAPOL.SYS FS/ROOTER.EXE FS/PLIP.SYS FS/NE.SYS FS/RTL.SYS FS/3C.SYS FS/SK.SYS FS/IPG.SYS FS/SOUND.IOC FS/SB.SYS FS/WSS.SYS FS/I810.SYS FS/VIA82.SYS FS/HDA.SYS FS/SIO.SYS FS/PIO.SYS FS/USBPRINT.SYS FS/USBPRINT.USB FS/SIOCOM.EXE FS/MOUSE.SYS FS/USBHID.SYS FS/USBHID.USB FS/USB.DLL FS/USBHUB.EXE FS/USBHUB.USB FS/OHCI.SYS FS/UHCI.SYS FS/USBPLUG.CMD FS/GPM.DLL FS/VGA.DLL FS/VGAGL.DLL FS/LIBC.DLL FS/LIBC.A FS/M.DLL FS/M.A FS/CHARSET.DLL FS/ICONV.EXE FS/MD.DLL FS/PTHREAD.DLL FS/LINK.EXE FS/SESSION.EXE FS/TELNETD.EXE FS/SSHD.EXE FS/SSHAUTH.EXE FS/IO.EXE FS/PCI.IDS FS/PCIID.DLL FS/LSPCI.EXE

COMMON_TARGETS=OBJ/MKSPADFS$(HOST_EXE) OBJ/BIND_SYS$(HOST_EXE)

INCLUDE=-nostdinc -I. -IINCLUDE -IARCH/$(ARCH)
INCLUDE_SPECIAL=-IOTHER
ifeq ($(OS),unix)
INCLUDE_HOST=-idirafter . -idirafter INCLUDE -idirafter ARCH/$(ARCH)
else
ifeq ($(OS),spad)
INCLUDE_HOST=-idirafter INCLUDE.:/ -idirafter . -idirafter INCLUDE -idirafter ARCH/$(ARCH)
else
INCLUDE_HOST=-idirafter . -idirafter INCLUDE -idirafter ARCH/$(ARCH)
endif
endif

EXCLUDE_INLINES=-fno-builtin-strlen -fno-builtin-memcmp -fno-builtin-strcmp -fno-builtin-strncmp -fno-builtin-ffs -fno-builtin-ffsimax -fno-builtin-ffsl -fno-builtin-ffsll -fno-builtin-fls -fno-builtin-flsimax -fno-builtin-flsl -fno-builtin-flsll -fno-builtin-fork
GENERIC_OPT=-fomit-frame-pointer -mpreferred-stack-boundary=2 -mincoming-stack-boundary=4 -mno-accumulate-outgoing-args -mpush-args -fconserve-stack $(EXCLUDE_INLINES)
SPEED_OPT=-O2 -frename-registers $(CPU) $(GENERIC_OPT)
SIZE_OPT=-Os -fno-if-conversion -mtune=pentium $(GENERIC_OPT) -D__NO_INLINES

PREPROC_FLAGS=-D__SPAD__ -D__SPAD_TREE__ -U__linux__ $(INCLUDE)
GENERIC_FLAGS=-march=i486 -mregparm=3 -freg-struct-return -malign-double -m128bit-long-double -std=gnu89 -fno-strict-aliasing

ifeq ($(OS),unix)
C=gcc44
CPU=-mtune=barcelona
else
ifeq ($(OS),os2)
C=gcc3
CPU=-mcpu=pentiumpro
SIZE_OPT=-Os -mcpu=k6 $(GENERIC_OPT) -D__NO_INLINES
else
C=gcc
CPU=-mtune=barcelona
endif
endif

CC=$(C) $(WARNINGS) $(PREPROC_FLAGS) $(GENERIC_FLAGS) $(SPEED_OPT) -x c
CC_SIZE=$(C) $(WARNINGS) $(PREPROC_FLAGS) $(GENERIC_FLAGS) $(SIZE_OPT) -x c
CC_RELOC=$(C) $(WARNINGS) $(PREPROC_FLAGS) $(GENERIC_FLAGS) $(SIZE_OPT) -fpic -x c
ASM=as
PREP=$(C) $(WARNINGS) $(PREPROC_FLAGS) -E
PREPASM=$(C) $(WARNINGS) $(PREPROC_FLAGS) -c
BINLD=ld -Ttext 0x0 -s --oformat binary
HOST_CC=$(C) $(WARNINGS) $(INCLUDE_HOST) -x c -gstabs -Os -std=gnu89 -fno-strict-aliasing
CP=cp

include ARCH/$(ARCH)/MAKEFILE


OBJ/LINK$(HOST_EXE) : PRG/LINK/LINK.C LIB/MD/MD5C.C LIB/MD/SHA1C.C LIB/MD/RMD160C.C LIB/MD/SHA256C.C ARCH/$(ARCH)/TOOLS/LINKA.I
	$(HOST_CC) -o $@ PRG/LINK/LINK.C LIB/MD/MD5C.C LIB/MD/SHA1C.C LIB/MD/RMD160C.C LIB/MD/SHA256C.C -lbfd -liberty


OBJ/BIND_SYS$(HOST_EXE) : PRG/BIND_SYS/BIND_SYS.C
	$(HOST_CC) -o $@ $< -lz

OBJ/BIND_SYS.O : PRG/BIND_SYS/BIND_SYS.C
	$(CC_SIZE) -c -o $@ $<

FS/BIND_SYS.EXE : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/BIND_SYS.O
	$^ -l INT/KERNEL.INT -l INT/LIBC.INT -l OTHER/Z.INT -o $@ -y SYM/BIND_SYS.SYM

OBJ/FSDIMG.O : PRG/BIND_SYS/FSD.C PRG/BIND_SYS/ADLER32.C PRG/BIND_SYS/INFFAST.C PRG/BIND_SYS/INFLATE.C PRG/BIND_SYS/INFTREES.C
	$(CC_RELOC) -c -o $@ $<

FS/FSD.BIN : OBJ/LINK$(HOST_EXE) OBJ/FSDIMG.O $(FSD_ARCH_OBJ)
	$^ $(FSD_LINK_FLAGS) -o $@ -s -y SYM/FSD.SYM


OBJ/BOOTSTRP.O : KERNEL/BOOTSTRP.C KERNEL/LINKSIZE.I
	$(CC) -c -o $@ $<

BOOTSTRP_OBJ = OBJ/BOOTSTRP.O

OBJ/BOOTSTRP.SYS : OBJ/LINK$(HOST_EXE) $(BOOTSTRP_ARCH_OBJ) $(BOOTSTRP_OBJ)
	$^ -o $@ -s -y SYM/BOOTSTRP.SYM -jmp _START


OBJ/INIT.O : KERNEL/INIT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/FEATURE.O : KERNEL/FEATURE.C
	$(CC_SIZE) -c -o $@ $<

OBJ/FEATUREC.O : KERNEL/FEATUREC.C
	$(CC) -c -o $@ $<

OBJ/FSDLDR.O : KERNEL/FSDLDR.C
	$(CC_SIZE) -c -o $@ $<

OBJ/IRQ.O : KERNEL/IRQ.C
	$(CC) -c -o $@ $<

OBJ/LIBC.O : KERNEL/LIBC.C KERNEL/LIBCGETN.I
	$(CC) -c -o $@ $<

OBJ/QSORT.O : KERNEL/QSORT.C
	$(CC) -c -o $@ $<

OBJ/RND_KRNL.O : KERNEL/RND_KRNL.C
	$(CC) -c -o $@ $<

OBJ/ENV.O : KERNEL/ENV.C
	$(CC) -c -o $@ $<

OBJ/KLIBC.O : KERNEL/KLIBC.C
	$(CC_SIZE) -c -o $@ $<

OBJ/PROC.O : KERNEL/PROC.C KERNEL/PROCHNDL.I KERNEL/PROCIO.I
	$(CC) -c -o $@ $<

OBJ/VSPROC.O : KERNEL/VSPROC.C KERNEL/VSPROCM.I
	$(CC) -c -o $@ $<

OBJ/LIBPROC.O : KERNEL/LIBPROC.C ARCH/$(ARCH)/KERNEL/LIBPROCA.I
	$(CC) -c -o $@ $<

OBJ/READDIR.O : KERNEL/READDIR.C
	$(CC) -c -o $@ $<

OBJ/CWD.O : KERNEL/CWD.C
	$(CC) -c -o $@ $<

OBJ/AC.O : KERNEL/AC.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WQ.O : KERNEL/WQ.C
	$(CC) -c -o $@ $<

OBJ/THREAD.O : KERNEL/THREAD.C ARCH/$(ARCH)/KERNEL/THREADMD.I
	$(CC) -c -o $@ $<

OBJ/SYSLOG.O : KERNEL/SYSLOG.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SYSLOGK.O : KERNEL/SYSLOGK.C
	$(CC_SIZE) -c -o $@ $<

OBJ/PARAMS.O : KERNEL/PARAMS.C
	$(CC_SIZE) -c -o $@ $<

OBJ/VM.O : KERNEL/VM.C
	$(CC) -c -o $@ $<

OBJ/CACHE.O : KERNEL/CACHE.C
	$(CC) -c -o $@ $<

OBJ/SLAB.O : KERNEL/SLAB.C
	$(CC) -c -o $@ $<

OBJ/BOUNCE.O : KERNEL/BOUNCE.C
	$(CC) -c -o $@ $<

OBJ/IOPORTS.O : KERNEL/IOPORTS.C
	$(CC_SIZE) -c -o $@ $<

OBJ/TIMER.O : KERNEL/TIMER.C
	$(CC) -c -o $@ $<

OBJ/DEV.O : KERNEL/DEV.C
	$(CC) -c -o $@ $<

OBJ/DEVCOM.O : KERNEL/DEVCOM.C KERNEL/GETPUTIO.I
	$(CC) -c -o $@ $<

OBJ/VSPACE.O : KERNEL/VSPACE.C
	$(CC) -c -o $@ $<

OBJ/VSPACE_P.O : KERNEL/VSPACE_P.C
	$(CC) -c -o $@ $<

OBJ/MFS.O : KERNEL/MFS.C KERNEL/MFSIO.I
	$(CC_SIZE) -c -o $@ $<

OBJ/LINK.O : KERNEL/LINK.C KERNEL/LINKSIZE.I
	$(CC_SIZE) -c -o $@ $<

OBJ/DL.O : KERNEL/DL.C
	$(CC_SIZE) -c -o $@ $<

OBJ/DLCOM.O : KERNEL/DLCOM.C
	$(CC_SIZE) -c -o $@ $<

OBJ/FDE.O : KERNEL/FDE.C
	$(CC) -c -o $@ $<

OBJ/KSTUBS.O : KERNEL/KSTUBS.C
	$(CC_SIZE) -c -o $@ $<

OBJ/UNX1.O : KERNEL/UNX/UNX1.C KERNEL/UNX/UNX1OPEN.I
	$(CC) -c -o $@ $<

OBJ/UNX2.O : KERNEL/UNX/UNX2.C
	$(CC) -c -o $@ $<

OBJ/UNX3.O : KERNEL/UNX/UNX3.C
	$(CC) -c -o $@ $<

OBJ/UNX4.O : KERNEL/UNX/UNX4.C
	$(CC_SIZE) -c -o $@ $<

OBJ/UNX5.O : KERNEL/UNX/UNX5.C
	$(CC) -c -o $@ $<

OBJ/UNX6.O : KERNEL/UNX/UNX6.C
	$(CC) -c -o $@ $<

OBJ/UNX7.O : KERNEL/UNX/UNX7.C
	$(CC) -c -o $@ $<

OBJ/COMMON.O : KERNEL/COMMON.C
	$(CC_SIZE) -c -o $@ $<

OBJ/4RANDOM.O : KERNEL/4RANDOM.C
	$(CC) -c -o $@ $<

OBJ/SHARE.O : KERNEL/SMP/SHARE.C
	$(CC_SIZE) -c -o $@ $<

OBJ/IPI.O : KERNEL/SMP/IPI.C
	$(CC_SIZE) -c -o $@ $<

OBJ/MATRIX.O : KERNEL/SMP/MATRIX.C
	$(CC) -c -o $@ $<

OBJ/SPINLOCK.O : KERNEL/SMP/SPINLOCK.C
	$(CC) -c -o $@ $<

KERNEL_OBJ = OBJ/INIT.O OBJ/FEATURE.O OBJ/FEATUREC.O OBJ/FSDLDR.O OBJ/IRQ.O OBJ/LIBC.O OBJ/QSORT.O OBJ/RND_KRNL.O OBJ/ENV.O OBJ/KLIBC.O OBJ/PROC.O OBJ/VSPROC.O OBJ/LIBPROC.O OBJ/READDIR.O OBJ/CWD.O OBJ/AC.O OBJ/WQ.O OBJ/THREAD.O OBJ/SYSLOG.O OBJ/SYSLOGK.O OBJ/PARAMS.O OBJ/VM.O OBJ/CACHE.O OBJ/SLAB.O OBJ/BOUNCE.O OBJ/IOPORTS.O OBJ/TIMER.O OBJ/DEV.O OBJ/DEVCOM.O OBJ/VSPACE.O OBJ/VSPACE_P.O OBJ/MFS.O OBJ/LINK.O OBJ/DL.O OBJ/DLCOM.O OBJ/FDE.O OBJ/KSTUBS.O OBJ/UNX1.O OBJ/UNX2.O OBJ/UNX3.O OBJ/UNX4.O OBJ/UNX5.O OBJ/UNX6.O OBJ/UNX7.O OBJ/COMMON.O OBJ/4RANDOM.O OBJ/SHARE.O OBJ/IPI.O OBJ/MATRIX.O OBJ/SPINLOCK.O

FS/KERNEL.SYS : OBJ/LINK$(HOST_EXE) $(KERNEL_ARCH_OBJ) $(KERNEL_OBJ)
	$^ $(KERNEL_LINK_FLAGS) -m INT/SHELL.INT -d INT/KERNEL.INT OTHER/LIBGCC.A -o $@ -y SYM/KERNEL.SYM


clean-kernel :
	rm -f $(KERNEL_ARCH_OBJ) $(KERNEL_OBJ) $(KERNEL_ARCH_CLEAN_EXTRA) $(BOOTSTRP_ARCH_OBJ) $(BOOTSTRP_OBJ) OBJ/BOOTSTRP.SYS FS/KERNEL.SYS


FS/CRT0.O : LIB/CRT0/CRT0.C
	$(CC) -c -o $@ $<


OBJ/STARTUP.O : LIB/KERNEL/STARTUP.C
	$(CC) -c -o $@ $<

OBJ/USTUBS.O : LIB/KERNEL/USTUBS.C
	$(CC_SIZE) -c -o $@ $<

OBJ/FEATUREU.O : KERNEL/FEATUREU.C
	$(CC_SIZE) -c -o $@ $<

OBJ/ULIBC.O : LIB/KERNEL/ULIBC.C
	$(CC_SIZE) -c -o $@ $<

OBJ/UVM.O : LIB/KERNEL/UVM.C
	$(CC) -c -o $@ $<

OBJ/UIO.O : LIB/KERNEL/UIO.C
	$(CC) -c -o $@ $<

OBJ/UTIMER.O : LIB/KERNEL/UTIMER.C
	$(CC) -c -o $@ $<

OBJ/UTHREAD.O : LIB/KERNEL/UTHREAD.C ARCH/$(ARCH)/LIB/KERNEL/THREADMD.I
	$(CC) -c -o $@ $<

OBJ/USIGNAL.O : LIB/KERNEL/USIGNAL.C ARCH/$(ARCH)/LIB/KERNEL/SIGSTACK.H
	$(CC) -c -o $@ $<

OBJ/UDL.O : LIB/KERNEL/UDL.C
	$(CC) -c -o $@ $<

OBJ/UPROC.O : LIB/KERNEL/UPROC.C
	$(CC) -c -o $@ $<

OBJ/UEXEC.O : LIB/KERNEL/UEXEC.C ARCH/$(ARCH)/LIB/KERNEL/UEXEC.I
	$(CC) -c -o $@ $<

OBJ/URANDOM.O : LIB/KERNEL/URANDOM.C
	$(CC_SIZE) -c -o $@ $<

OBJ/UPTY.O : LIB/KERNEL/UPTY.C
	$(CC_SIZE) -c -o $@ $<

OBJ/IPCFTOK.O : LIB/KERNEL/IPCFTOK.C
	$(CC_SIZE) -c -o $@ $<

OBJ/IPCSHM.O : LIB/KERNEL/IPCSHM.C
	$(CC_SIZE) -c -o $@ $<

OBJ/IPCSEM.O : LIB/KERNEL/IPCSEM.C
	$(CC_SIZE) -c -o $@ $<

LIBKERNEL_OBJ = OBJ/STARTUP.O OBJ/USTUBS.O OBJ/FEATUREU.O OBJ/FEATUREC.O OBJ/SPINLOCK.O OBJ/LIBC.O OBJ/QSORT.O OBJ/RND_KRNL.O OBJ/ENV.O OBJ/ULIBC.O OBJ/LIBPROC.O OBJ/READDIR.O OBJ/CWD.O OBJ/AC.O OBJ/WQ.O OBJ/SYSLOG.O OBJ/UVM.O OBJ/SLAB.O OBJ/DEVCOM.O OBJ/VSPACE.O OBJ/UIO.O OBJ/UTIMER.O OBJ/UTHREAD.O OBJ/USIGNAL.O OBJ/UNX1.O OBJ/UNX2.O OBJ/UNX3.O OBJ/UNX4.O OBJ/UNX5.O OBJ/UNX6.O OBJ/UNX7.O OBJ/LINK.O OBJ/UDL.O OBJ/DLCOM.O OBJ/FDE.O OBJ/UPROC.O OBJ/UEXEC.O OBJ/COMMON.O OBJ/4RANDOM.O OBJ/URANDOM.O OBJ/UPTY.O OBJ/IPCFTOK.O OBJ/IPCSHM.O OBJ/IPCSEM.O

FS/KERNEL.DLL : OBJ/LINK$(HOST_EXE) $(LIBKERNEL_ARCH_OBJ) $(LIBKERNEL_OBJ)
	$^ $(LIBKERNEL_LINK_FLAGS) -d INT/KERNEL.INT OTHER/LIBGCC.A -o $@ -y SYM/UKERNEL.SYM


clean-libkernel :
	rm -f $(LIBKERNEL_ARCH_OBJ) $(LIBKERNEL_OBJ) $(LIBKERNEL_ARCH_CLEAN_EXTRA) $(BOOTSTRP_ARCH_OBJ) $(BOOTSTRP_OBJ) OBJ/BOOTSTRP.SYS FS/KERNEL.DLL


OBJ/SHELL.O : LIB/SHELL/SHELL.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SHELLCMD.O : LIB/SHELL/SHELLCMD.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SHELLJOB.O : LIB/SHELL/SHELLJOB.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SHELLINT.O : LIB/SHELL/SHELLINT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SHELLEXP.O : LIB/SHELL/SHELLEXP.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SHELLFN.O : LIB/SHELL/SHELLFN.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SHELLDIR.O : LIB/SHELL/SHELLDIR.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SHELLLN.O : LIB/SHELL/SHELLLN.C
	$(CC_SIZE) -c -o $@ $<

SHELL_OBJ = OBJ/SHELL.O OBJ/SHELLCMD.O OBJ/SHELLJOB.O OBJ/SHELLINT.O OBJ/SHELLEXP.O OBJ/SHELLFN.O OBJ/SHELLDIR.O OBJ/SHELLLN.O

FS/SHELL.DLL : OBJ/LINK$(HOST_EXE) $(SHELL_OBJ)
	$^ -d INT/SHELL.INT -l INT/KERNEL.INT -m INT/LIBC.INT -m INT/MD.INT OTHER/LIBGCC.A -o $@ -y SYM/SHELL.SYM

OBJ/SHELLEXE.O : LIB/SHELL/SHELLEXE.C
	$(CC_SIZE) -c -o $@ $<

FS/SHELL.EXE : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/SHELLEXE.O
	$^ -share -l INT/KERNEL.INT -l INT/SHELL.INT -o $@ -y SYM/SHELLEXE.SYM

clean-shell :
	rm -f $(SHELL_OBJ) FS/SHELL.DLL OBJ/SHELLEXE.O FS/SHELL.EXE


OBJ/DMAN.O : PRG/DMAN/DMAN.C
	$(CC_SIZE) -c -o $@ $<

OBJ/DMANDB.O : PRG/DMAN/DMANDB.C
	$(CC_SIZE) -c -o $@ $<

OBJ/DMANDFS.O : PRG/DMAN/DMANDFS.C
	$(CC_SIZE) -c -o $@ $<

OBJ/DMANLOOP.O : PRG/DMAN/DMANLOOP.C
	$(CC_SIZE) -c -o $@ $<

OBJ/DMANLOAD.O : PRG/DMAN/DMANLOAD.C
	$(CC_SIZE) -c -o $@ $<

OBJ/DMANRST.O : PRG/DMAN/DMANRST.C ARCH/$(ARCH)/UTILS/DMANRST.I
	$(CC_SIZE) -c -o $@ $<

DMAN_OBJ = OBJ/DMAN.O OBJ/DMANDB.O OBJ/DMANDFS.O OBJ/DMANLOOP.O OBJ/DMANLOAD.O OBJ/DMANRST.O

FS/DMAN.EXE : OBJ/LINK$(HOST_EXE) FS/CRT0.O $(DMAN_OBJ)
	$^ -l INT/KERNEL.INT -l ARCH/$(ARCH)/INT/BIOS16.INT -o $@ -y SYM/DMAN.SYM

clean-dman :
	rm -f $(DMAN_OBJ) FS/DMAN.EXE


OBJ/SYSCALLS.O : DRIVERS/SYSCALLS/SYSCALLS.C
	$(CC) -c -o $@ $<

FS/SYSCALLS.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/SYSCALLS.O
	$^ -device -l INT/KERNEL.INT -o $@ -y SYM/SYSCALLS.SYM


OBJ/NULL.O : DRIVERS/SYSCALLS/NULL.C
	$(CC) -c -o $@ $<

FS/NULL.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/NULL.O
	$^ -device -l INT/KERNEL.INT -o $@ -y SYM/NULL.SYM


OBJ/PIPE.O : DRIVERS/SYSCALLS/PIPE.C
	$(CC) -c -o $@ $<

FS/PIPE.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/PIPE.O
	$^ -device -l INT/KERNEL.INT -o $@ -y SYM/PIPE.SYM


OBJ/RANDOM.O : DRIVERS/SYSCALLS/RANDOM.C
	$(CC) -c -o $@ $<

FS/RANDOM.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/RANDOM.O
	$^ -device -l INT/KERNEL.INT -l INT/MD.INT -o $@ -y SYM/RANDOM.SYM


OBJ/TTY.O : DRIVERS/TTY/TTY.C
	$(CC) -c -o $@ $<

FS/TTY.DLL : OBJ/LINK$(HOST_EXE) OBJ/TTY.O
	$^ -d INT/TTY.INT -l INT/KERNEL.INT -l INT/MD.INT -o $@ -y SYM/TTY.SYM

OBJ/CTTY.O : DRIVERS/TTY/CTTY.C
	$(CC_SIZE) -c -o $@ $<

FS/CTTY.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/CTTY.O
	$^ -device -share -l INT/KERNEL.INT -l INT/TTY.INT -o $@ -y SYM/CTTY.SYM

OBJ/TTYSRVR.O : DRIVERS/TTY/TTYSRVR.C
	$(CC) -c -o $@ $<

FS/TTYSRVR.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/TTYSRVR.O
	$^ -device -l INT/KERNEL.INT -l INT/TTY.INT -o $@ -y SYM/TTYSRVR.SYM

clean-tty :
	rm -f OBJ/TTY.O FS/TTY.DLL OBJ/CTTY.O FS/CTTY.SYS OBJ/TTYSRVR.O FS/TTYSRVR.SYS OBJ/SWAPTTY.O FS/SWAPPER.SYS


OBJ/BIO.O : DRIVERS/BIO/LIB/BIO.C DRIVERS/BIO/LIB/SBIO.I
	$(CC) -c -o $@ $<

FS/BIO.DLL : OBJ/LINK$(HOST_EXE) OBJ/BIO.O
	$^ -d INT/BIO.INT -l INT/KERNEL.INT -o $@ -y SYM/BIO.SYM

OBJ/BIOQUE.O : DRIVERS/BIO/LIB/BIOQUE.C
	$(CC) -c -o $@ $<

FS/BIOQUE.DLL : OBJ/LINK$(HOST_EXE) OBJ/BIOQUE.O
	$^ -d INT/BIOQUE.INT -l INT/KERNEL.INT -o $@ -y SYM/BIOQUE.SYM

OBJ/BIOIOC.O : DRIVERS/BIO/LIB/BIOIOC.C
	$(CC_SIZE) -c -o $@ $<

FS/BIO.IOC : OBJ/LINK$(HOST_EXE) OBJ/BIOIOC.O
	$^ -d INT/IOC.INT -l INT/KERNEL.INT -o $@ -y SYM/BIOIOC.SYM


OBJ/ATASG.O : DRIVERS/BIO/ATA/LIB/ATASG.C
	$(CC) -c -o $@ $<

OBJ/ATASYNC.O : DRIVERS/BIO/ATA/LIB/ATASYNC.C
	$(CC_SIZE) -c -o $@ $<

OBJ/ATAHLP.O : DRIVERS/BIO/ATA/LIB/ATAHLP.C
	$(CC_SIZE) -c -o $@ $<

OBJ/ATAXFER.O : DRIVERS/BIO/ATA/LIB/ATAXFER.C
	$(CC_SIZE) -c -o $@ $<

OBJ/ATACYCLE.O : DRIVERS/BIO/ATA/LIB/ATACYCLE.C
	$(CC_SIZE) -c -o $@ $<

OBJ/ATABLIST.O : DRIVERS/BIO/ATA/LIB/ATABLIST.C
	$(CC_SIZE) -c -o $@ $<

OBJ/ATAPI.O : DRIVERS/BIO/ATA/LIB/ATAPI.C
	$(CC_SIZE) -c -o $@ $<

ATA_OBJ = OBJ/ATASG.O OBJ/ATASYNC.O OBJ/ATAHLP.O OBJ/ATAXFER.O OBJ/ATACYCLE.O OBJ/ATABLIST.O OBJ/ATAPI.O

FS/ATA.DLL : OBJ/LINK$(HOST_EXE) $(ATA_OBJ)
	$^ -d INT/ATA.INT -l INT/KERNEL.INT -o $@ -y SYM/ATA.SYM

ACTRL_INCL = DRIVERS/BIO/ATA/HOST/FN_ATTCH.I DRIVERS/BIO/ATA/HOST/FN_INI.I DRIVERS/BIO/ATA/HOST/FN_CORE.I DRIVERS/BIO/ATA/HOST/FN_ATAPI.I DRIVERS/BIO/ATA/HOST/FN_AFLAG.I

OBJ/ACTRL.O : DRIVERS/BIO/ATA/HOST/ACTRL.C $(ACTRL_INCL)
	$(CC) -c -o $@ $<

OBJ/A_RZ1000.O : DRIVERS/BIO/ATA/HOST/A_RZ1000.C
	$(CC_SIZE) -c -o $@ $<

OBJ/A_VIA.O : DRIVERS/BIO/ATA/HOST/A_VIA.C
	$(CC_SIZE) -c -o $@ $<

OBJ/A_INTEL.O : DRIVERS/BIO/ATA/HOST/A_INTEL.C
	$(CC) -c -o $@ $<

OBJ/A_SVW.O : DRIVERS/BIO/ATA/HOST/A_SVW.C
	$(CC_SIZE) -c -o $@ $<

OBJ/A_ALI.O : DRIVERS/BIO/ATA/HOST/A_ALI.C
	$(CC) -c -o $@ $<

OBJ/A_IT821.O : DRIVERS/BIO/ATA/HOST/A_IT821.C
	$(CC) -c -o $@ $<

OBJ/A_TRIFLX.O : DRIVERS/BIO/ATA/HOST/A_TRIFLX.C
	$(CC) -c -o $@ $<

OBJ/A_CMD.O : DRIVERS/BIO/ATA/HOST/A_CMD.C
	$(CC) -c -o $@ $<

OBJ/A_SII.O : DRIVERS/BIO/ATA/HOST/A_SII.C
	$(CC_SIZE) -c -o $@ $<

OBJ/A_PDC.O : DRIVERS/BIO/ATA/HOST/A_PDC.C
	$(CC) -c -o $@ $<

OBJ/A_PDC2.O : DRIVERS/BIO/ATA/HOST/A_PDC2.C
	$(CC_SIZE) -c -o $@ $<

OBJ/A_HPT.O : DRIVERS/BIO/ATA/HOST/A_HPT.C
	$(CC) -c -o $@ $<

OBJ/A_JMB.O : DRIVERS/BIO/ATA/HOST/A_JMB.C
	$(CC_SIZE) -c -o $@ $<

OBJ/A_VT6421.O : DRIVERS/BIO/ATA/HOST/A_VT6421.C
	$(CC_SIZE) -c -o $@ $<

OBJ/A_ULI.O : DRIVERS/BIO/ATA/HOST/A_ULI.C
	$(CC_SIZE) -c -o $@ $<

ACTRL_OBJ = OBJ/ACTRL.O OBJ/A_RZ1000.O OBJ/A_VIA.O OBJ/A_INTEL.O OBJ/A_SVW.O OBJ/A_ALI.O OBJ/A_IT821.O OBJ/A_TRIFLX.O OBJ/A_CMD.O OBJ/A_SII.O OBJ/A_PDC.O OBJ/A_PDC2.O OBJ/A_HPT.O OBJ/A_JMB.O OBJ/A_VT6421.O OBJ/A_ULI.O

FS/ACTRL.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O $(ACTRL_OBJ)
	$^ -device -share -l INT/KERNEL.INT -l INT/BIOQUE.INT -l INT/ATA.INT -m INT/PCI.INT OTHER/LIBGCC.A -o $@ -y SYM/ACTRL.SYM

OBJ/PROMISE.O : DRIVERS/BIO/ATA/HOST/PROMISE.C $(ACTRL_INCL)
	$(CC) -c -o $@ $<

FS/PROMISE.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/PROMISE.O
	$^ -device -share -l INT/KERNEL.INT -l INT/PCI.INT -l INT/BIOQUE.INT -l INT/ATA.INT -o $@ -y SYM/PROMISE.SYM

OBJ/K2.O : DRIVERS/BIO/ATA/HOST/K2.C $(ACTRL_INCL)
	$(CC) -c -o $@ $<

FS/K2.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/K2.O
	$^ -device -share -l INT/KERNEL.INT -l INT/PCI.INT -l INT/BIOQUE.INT -l INT/ATA.INT -o $@ -y SYM/K2.SYM

OBJ/AD.O : DRIVERS/BIO/ATA/TARGET/AD.C
	$(CC) -c -o $@ $<

FS/AD.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/AD.O
	$^ -device -share -l INT/KERNEL.INT -l INT/BIO.INT -l INT/BIOQUE.INT -l INT/ATA.INT -o $@ -y SYM/AD.SYM

clean-ata :
	rm -f $(ATA_OBJ) FS/ATA.DLL $(ACTRL_OBJ) FS/ACTRL.SYS OBJ/PROMISE.O FS/PROMISE.SYS OBJ/K2.O FS/K2.SYS OBJ/AD.O FS/AD.SYS

OBJ/FD.O : DRIVERS/BIO/FD/FD.C
	$(CC_SIZE) -c -o $@ $<

FS/FD.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/FD.O
	$^ -device -l INT/KERNEL.INT -l INT/BIO.INT -l INT/BIOQUE.INT -l INT/ISADMA.INT -l INT/CMOS.INT -o $@ -y SYM/FD.SYM

OBJ/SCSISYNC.O : DRIVERS/BIO/SCSI/LIB/SCSISYNC.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SCSISTD.O : DRIVERS/BIO/SCSI/LIB/SCSISTD.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SCSISENS.O : DRIVERS/BIO/SCSI/LIB/SCSISENS.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SCSICMD.O : DRIVERS/BIO/SCSI/LIB/SCSICMD.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SCSILUN.O : DRIVERS/BIO/SCSI/LIB/SCSILUN.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SCSIHOST.O : DRIVERS/BIO/SCSI/LIB/SCSIHOST.C
	$(CC) -c -o $@ $<

SCSI_OBJ = OBJ/SCSISYNC.O OBJ/SCSISTD.O OBJ/SCSISENS.O OBJ/SCSICMD.O OBJ/SCSILUN.O OBJ/SCSIHOST.O

FS/SCSI.DLL : OBJ/LINK$(HOST_EXE) $(SCSI_OBJ)
	$^ -d INT/SCSI.INT -l INT/KERNEL.INT -o $@ -y SYM/SCSI.SYM

FS/SCSIPLUG.CMD : DRIVERS/BIO/SCSI/SCRIPTS/SCSIPLUG.CMD
	$(CP) $< $@

OBJ/CDROMIOC.O : DRIVERS/BIO/SCSI/TARGET/CDROMIOC.C
	$(CC_SIZE) -c -o $@ $<

FS/CDROM.IOC : OBJ/LINK$(HOST_EXE) OBJ/CDROMIOC.O
	$^ -d INT/IOC.INT -l INT/KERNEL.INT -l INT/SCSI.INT -o $@ -y SYM/CDROMIOC.SYM

OBJ/SCSIIOC.O : DRIVERS/BIO/SCSI/TARGET/SCSIIOC.C
	$(CC) -c -o $@ $<

FS/SCSI.IOC : OBJ/LINK$(HOST_EXE) OBJ/SCSIIOC.O
	$^ -d INT/IOC.INT -l INT/KERNEL.INT OTHER/LIBGCC.A -o $@ -y SYM/SCSIIOC.SYM

OBJ/SD.O : DRIVERS/BIO/SCSI/TARGET/SD.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SDMEDIA.O : DRIVERS/BIO/SCSI/TARGET/SDMEDIA.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SDBIO.O : DRIVERS/BIO/SCSI/TARGET/SDBIO.C
	$(CC) -c -o $@ $<

OBJ/SDLSEC.O : DRIVERS/BIO/SCSI/TARGET/SDLSEC.C
	$(CC) -c -o $@ $<

OBJ/SDPSTHRU.O : DRIVERS/BIO/SCSI/TARGET/SDPSTHRU.C
	$(CC) -c -o $@ $<

SD_OBJ = OBJ/SD.O OBJ/SDMEDIA.O OBJ/SDBIO.O OBJ/SDLSEC.O OBJ/SDPSTHRU.O

FS/SD.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O $(SD_OBJ)
	$^ -device -share -l INT/KERNEL.INT -l INT/BIO.INT -l INT/BIOQUE.INT -l INT/SCSI.INT -o $@ -y SYM/SD.SYM

FS/SD.SCS : DRIVERS/BIO/SCSI/TARGET/SD.SCS
	$(CP) $< $@

OBJ/INIA100.O : DRIVERS/BIO/SCSI/HOST/INIA100.C
	$(CC) -c -o $@ $<

FS/INIA100.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/INIA100.O
	$^ -device -share -l INT/KERNEL.INT -l INT/PCI.INT -l INT/SCSI.INT -o $@ -y SYM/INIA100.SYM

OBJ/MPT.O : DRIVERS/BIO/SCSI/HOST/MPT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/MPTCFG.O : DRIVERS/BIO/SCSI/HOST/MPTCFG.C
	$(CC_SIZE) -c -o $@ $<

OBJ/MPTSCSI.O : DRIVERS/BIO/SCSI/HOST/MPTSCSI.C
	$(CC_SIZE) -c -o $@ $<

OBJ/MPTCORE.O : DRIVERS/BIO/SCSI/HOST/MPTCORE.C
	$(CC) -c -o $@ $<

FS/MPT.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/MPT.O OBJ/MPTCFG.O OBJ/MPTSCSI.O OBJ/MPTCORE.O
	$^ -device -share -l INT/KERNEL.INT -l INT/PCI.INT -l INT/SCSI.INT -o $@ -y SYM/MPT.SYM

OBJ/USBMSD.O : DRIVERS/BIO/SCSI/HOST/USBMSD.C
	$(CC) -c -o $@ $<

FS/USBMSD.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/USBMSD.O
	$^ -device -share -l INT/KERNEL.INT -l INT/USB.INT -l INT/SCSI.INT -o $@ -y SYM/USBMSD.SYM

FS/USBMSD.USB : DRIVERS/BIO/SCSI/HOST/USBMSD.USB
	$(CP) $< $@

clean-scsi :
	rm -f $(SCSI_OBJ) FS/SCSI.DLL $(SD_OBJ) FS/SD.SYS OBJ/INIA100.O FS/INIA100.SYS OBJ/MPT.O OBJ/MPTCFG.O OBJ/MPTSCSI.O OBJ/MPTCORE.O FS/MPT.SYS OBJ/USBMSD.O FS/USBMSD.SYS FS/USBMSD.USB $(ATA_OBJ) FS/ATA.DLL $(ACTRL_OBJ) FS/ACTRL.SYS OBJ/PROMISE.O FS/PROMISE.SYS

OBJ/RAID.O : DRIVERS/BIO/RAID/RAID.C KERNEL/GETHSIZE.I
	$(CC_SIZE) -c -o $@ $<

OBJ/RAIDCOM.O : DRIVERS/BIO/RAID/RAIDCOM.C
	$(CC) -c -o $@ $<

OBJ/RAIDLN.O : DRIVERS/BIO/RAID/RAIDLN.C
	$(CC) -c -o $@ $<

OBJ/RAID0.O : DRIVERS/BIO/RAID/RAID0.C
	$(CC) -c -o $@ $<

RAID_OBJ = OBJ/RAID.O OBJ/RAIDCOM.O OBJ/RAIDLN.O OBJ/RAID0.O

FS/RAID.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O $(RAID_OBJ)
	$^ -device -share -l INT/KERNEL.INT -l INT/BIO.INT OTHER/LIBGCC.A -o $@ -y SYM/RAID.SYM

OBJ/SCANPART.O : DRIVERS/BIO/UTILS/SCANPART.C
	$(CC_SIZE) -c -o $@ $<

FS/SCANPART.EXE : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/SCANPART.O
	$^ -l INT/KERNEL.INT -o $@ -y SYM/SCANPART.SYM

clean-bio : clean-scsi clean-ata
	rm -f OBJ/BIO.O FS/BIO.DLL OBJ/BIOQUE.O FS/BIOQUE.DLL OBJ/FD.O FS/FD.SYS $(RAID_OBJ) FS/RAID.SYS OBJ/SCANPART.O FS/SCANPART.EXE


OBJ/SWAPPER.O : DRIVERS/SWAPPER/SWAPPER.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SWAPDATA.O : DRIVERS/SWAPPER/SWAPDATA.C
	$(CC) -c -o $@ $<

OBJ/SWAPOP.O : DRIVERS/SWAPPER/SWAPOP.C
	$(CC) -c -o $@ $<

OBJ/SWAPPAGE.O : DRIVERS/SWAPPER/SWAPPAGE.C DRIVERS/SWAPPER/SWAPPND.I
	$(CC) -c -o $@ $<

OBJ/SWAPIO.O : DRIVERS/SWAPPER/SWAPIO.C
	$(CC) -c -o $@ $<

OBJ/SWAPLD.O : DRIVERS/SWAPPER/SWAPLD.C
	$(CC) -c -o $@ $<

OBJ/SWAPLINK.O : DRIVERS/SWAPPER/SWAPLINK.C DRIVERS/SWAPPER/SWAPPND.I
	$(CC) -c -o $@ $<

OBJ/SWAPTTY.O : DRIVERS/SWAPPER/SWAPTTY.C
	$(CC_SIZE) -c -o $@ $<

SWAPPER_OBJ = OBJ/SWAPPER.O OBJ/SWAPDATA.O OBJ/SWAPOP.O OBJ/SWAPPAGE.O OBJ/SWAPIO.O OBJ/SWAPLD.O OBJ/SWAPLINK.O OBJ/SWAPTTY.O OBJ/VFSZONE.O OBJ/CODEPAD.O OBJ/FEATUREU.O

FS/SWAPPER.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O $(SWAPPER_OBJ)
	$^ -device -l INT/KERNEL.INT -l INT/MD.INT -l INT/TTY.INT -o $@ -y SYM/SWAPPER.SYM


OBJ/MKSWAP.O : DRIVERS/SWAPPER/MKSWAP.C KERNEL/GETHSIZE.I
	$(CC_SIZE) -c -o $@ $<

FS/MKSWAP.EXE : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/MKSWAP.O
	$^ -l INT/KERNEL.INT -o $@ -y SYM/MKSWAP.SYM


OBJ/VFS.O : DRIVERS/FS/LIB/VFS.C
	$(CC_SIZE) -c -o $@ $<

OBJ/VFSZONE.O : DRIVERS/FS/LIB/VFSZONE.C
	$(CC_SIZE) -c -o $@ $<

OBJ/VFSBUF.O : DRIVERS/FS/LIB/VFSBUF.C
	$(CC) -c -o $@ $<

OBJ/VFSMISC.O : DRIVERS/FS/LIB/VFSMISC.C
	$(CC) -c -o $@ $<

OBJ/VFSSYNC.O : DRIVERS/FS/LIB/VFSSYNC.C
	$(CC) -c -o $@ $<

OBJ/VFSFNODE.O : DRIVERS/FS/LIB/VFSFNODE.C
	$(CC) -c -o $@ $<

OBJ/VFSFILE.O : DRIVERS/FS/LIB/VFSFILE.C DRIVERS/FS/LIB/VFSFILEI.I DRIVERS/FS/LIB/VFSFILEM.I
	$(CC) -c -o $@ $<

OBJ/VFSSPAGE.O : DRIVERS/FS/LIB/VFSSPAGE.C
	$(CC) -c -o $@ $<

OBJ/VFSWPAGE.O : DRIVERS/FS/LIB/VFSWPAGE.C
	$(CC) -c -o $@ $<

VFS_OBJ = OBJ/VFS.O OBJ/VFSZONE.O OBJ/VFSBUF.O OBJ/VFSMISC.O OBJ/VFSSYNC.O OBJ/VFSFNODE.O OBJ/VFSFILE.O OBJ/VFSSPAGE.O OBJ/VFSWPAGE.O

FS/VFS.DLL : OBJ/LINK$(HOST_EXE) $(VFS_OBJ)
	$^ -d INT/VFS.INT -l INT/KERNEL.INT -o $@ -y SYM/VFS.SYM


OBJ/SFS.O : DRIVERS/FS/SPADFS/SFS.C
	$(CC) -c -o $@ $<

OBJ/SFSFNODE.O : DRIVERS/FS/SPADFS/SFSFNODE.C
	$(CC) -c -o $@ $<

OBJ/SFSFILE.O : DRIVERS/FS/SPADFS/SFSFILE.C
	$(CC) -c -o $@ $<

OBJ/SFSSYNC.O : DRIVERS/FS/SPADFS/SFSSYNC.C
	$(CC) -c -o $@ $<

OBJ/SFSAPAGE.O : DRIVERS/FS/SPADFS/SFSAPAGE.C
	$(CC) -c -o $@ $<

OBJ/SFSALLOC.O : DRIVERS/FS/SPADFS/SFSALLOC.C
	$(CC) -c -o $@ $<

OBJ/SFSDIR.O : DRIVERS/FS/SPADFS/SFSDIR.C
	$(CC) -c -o $@ $<

SPADFS_OBJ = OBJ/SFS.O OBJ/SFSFNODE.O OBJ/SFSFILE.O OBJ/SFSSYNC.O OBJ/SFSAPAGE.O OBJ/SFSALLOC.O OBJ/SFSDIR.O

FS/SPADFS.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O $(SPADFS_OBJ)
	$^ -device -share -l INT/KERNEL.INT -l INT/VFS.INT OTHER/LIBGCC.A -o $@ -y SYM/SPADFS.SYM

OBJ/MKSPADFS.O : DRIVERS/FS/SPADFS/UTILS/MKSPADFS/MKSPADFS.C KERNEL/GETHSIZE.I
	$(CC_SIZE) -c -o $@ $<

FS/MKSPADFS.EXE : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/MKSPADFS.O
	$^ -l INT/KERNEL.INT -l INT/LIBC.INT OTHER/LIBGCC.A -o $@ -y SYM/MKSPADFS.SYM

OBJ/MKSPADFS$(HOST_EXE) : DRIVERS/FS/SPADFS/UTILS/MKSPADFS/MKSPADFS.C
	$(HOST_CC) -o $@ -D__NOT_FROM_SPAD $^

OBJ/SCK.O : DRIVERS/FS/SPADFS/UTILS/SPADFSCK/SCK.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SCKFN.O : DRIVERS/FS/SPADFS/UTILS/SPADFSCK/SCKFN.C
	$(CC) -c -o $@ $<

OBJ/SCKLOG.O : DRIVERS/FS/SPADFS/UTILS/SPADFSCK/SCKLOG.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SCKBUF.O : DRIVERS/FS/SPADFS/UTILS/SPADFSCK/SCKBUF.C
	$(CC) -c -o $@ $<

OBJ/SCKUTIL.O : DRIVERS/FS/SPADFS/UTILS/SPADFSCK/SCKUTIL.C
	$(CC) -c -o $@ $<

OBJ/SCKALLOC.O : DRIVERS/FS/SPADFS/UTILS/SPADFSCK/SCKALLOC.C
	$(CC) -c -o $@ $<

OBJ/SCKXL.O : DRIVERS/FS/SPADFS/UTILS/SPADFSCK/SCKXL.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SCKSUPER.O : DRIVERS/FS/SPADFS/UTILS/SPADFSCK/SCKSUPER.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SCKCCT.O : DRIVERS/FS/SPADFS/UTILS/SPADFSCK/SCKCCT.C
	$(CC) -c -o $@ $<

OBJ/SCKAPAGE.O : DRIVERS/FS/SPADFS/UTILS/SPADFSCK/SCKAPAGE.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SCKFBLK.O : DRIVERS/FS/SPADFS/UTILS/SPADFSCK/SCKFBLK.C
	$(CC) -c -o $@ $<

OBJ/SCKFXFN.O : DRIVERS/FS/SPADFS/UTILS/SPADFSCK/SCKFXFN.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SCKHDLNK.O : DRIVERS/FS/SPADFS/UTILS/SPADFSCK/SCKHDLNK.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SCKDIR.O : DRIVERS/FS/SPADFS/UTILS/SPADFSCK/SCKDIR.C
	$(CC) -c -o $@ $<

OBJ/SCKFILE.O : DRIVERS/FS/SPADFS/UTILS/SPADFSCK/SCKFILE.C
	$(CC) -c -o $@ $<

OBJ/SCKEA.O : DRIVERS/FS/SPADFS/UTILS/SPADFSCK/SCKEA.C
	$(CC) -c -o $@ $<

OBJ/SCKRCV.O : DRIVERS/FS/SPADFS/UTILS/SPADFSCK/SCKRCV.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SCKCRT.O : DRIVERS/FS/SPADFS/UTILS/SPADFSCK/SCKCRT.C
	$(CC_SIZE) -c -o $@ $<

SPADFSCK_OBJ = OBJ/SCK.O OBJ/SCKFN.O OBJ/SCKLOG.O OBJ/SCKBUF.O OBJ/SCKUTIL.O OBJ/SCKALLOC.O OBJ/SCKXL.O OBJ/SCKSUPER.O OBJ/SCKCCT.O OBJ/SCKAPAGE.O OBJ/SCKFBLK.O OBJ/SCKFXFN.O OBJ/SCKHDLNK.O OBJ/SCKDIR.O OBJ/SCKFILE.O OBJ/SCKEA.O OBJ/SCKRCV.O OBJ/SCKCRT.O

FS/SPADFSCK.EXE : OBJ/LINK$(HOST_EXE) FS/CRT0.O $(SPADFSCK_OBJ)
	$^ -l INT/KERNEL.INT OTHER/LIBGCC.A -o $@ -y SYM/SPADFSCK.SYM

clean-spadfsck :
	rm -f $(SPADFSCK_OBJ) FS/SPADFSCK.EXE

OBJ/FAT.O : DRIVERS/FS/FAT/FAT.C
	$(CC) -c -o $@ $<

OBJ/FATFAT.O : DRIVERS/FS/FAT/FATFAT.C
	$(CC) -c -o $@ $<

OBJ/FATALLOC.O : DRIVERS/FS/FAT/FATALLOC.C
	$(CC) -c -o $@ $<

OBJ/FATFNODE.O : DRIVERS/FS/FAT/FATFNODE.C
	$(CC) -c -o $@ $<

OBJ/FATFILE.O : DRIVERS/FS/FAT/FATFILE.C
	$(CC) -c -o $@ $<

OBJ/FATSYNC.O : DRIVERS/FS/FAT/FATSYNC.C
	$(CC) -c -o $@ $<

FAT_OBJ = OBJ/FAT.O OBJ/FATFAT.O OBJ/FATALLOC.O OBJ/FATFNODE.O OBJ/FATFILE.O OBJ/FATSYNC.O

FS/FAT.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O $(FAT_OBJ)
	$^ -device -share -l INT/KERNEL.INT -l INT/VFS.INT -o $@ -y SYM/FAT.SYM


OBJ/EXT2.O : DRIVERS/FS/EXT2/EXT2.C
	$(CC) -c -o $@ $<

OBJ/EXT2ALOC.O : DRIVERS/FS/EXT2/EXT2ALOC.C
	$(CC) -c -o $@ $<

OBJ/EXT2PREA.O : DRIVERS/FS/EXT2/EXT2PREA.C
	$(CC) -c -o $@ $<

OBJ/EXT2FNOD.O : DRIVERS/FS/EXT2/EXT2FNOD.C
	$(CC) -c -o $@ $<

OBJ/EXT2SYNC.O : DRIVERS/FS/EXT2/EXT2SYNC.C
	$(CC) -c -o $@ $<

EXT2_OBJ = OBJ/EXT2.O OBJ/EXT2ALOC.O OBJ/EXT2PREA.O OBJ/EXT2FNOD.O OBJ/EXT2SYNC.O

FS/EXT2.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O $(EXT2_OBJ)
	$^ -device -share -l INT/KERNEL.INT -l INT/VFS.INT -o $@ -y SYM/EXT2.SYM


OBJ/HPFS.O : DRIVERS/FS/HPFS/HPFS.C
	$(CC) -c -o $@ $<

OBJ/HPFSALOC.O : DRIVERS/FS/HPFS/HPFSALOC.C
	$(CC) -c -o $@ $<

OBJ/HPFSFNOD.O : DRIVERS/FS/HPFS/HPFSFNOD.C
	$(CC) -c -o $@ $<

OBJ/HPFSFILE.O : DRIVERS/FS/HPFS/HPFSFILE.C
	$(CC) -c -o $@ $<

OBJ/HPFSPREA.O : DRIVERS/FS/HPFS/HPFSPREA.C
	$(CC) -c -o $@ $<

OBJ/HPFSMAP.O : DRIVERS/FS/HPFS/HPFSMAP.C
	$(CC) -c -o $@ $<

OBJ/HPFSSYNC.O : DRIVERS/FS/HPFS/HPFSSYNC.C
	$(CC) -c -o $@ $<

HPFS_OBJ = OBJ/HPFS.O OBJ/HPFSALOC.O OBJ/HPFSFNOD.O OBJ/HPFSFILE.O OBJ/HPFSPREA.O OBJ/HPFSMAP.O OBJ/HPFSSYNC.O

FS/HPFS.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O $(HPFS_OBJ)
	$^ -device -share -l INT/KERNEL.INT -l INT/VFS.INT -o $@ -y SYM/HPFS.SYM


OBJ/CDFS.O : DRIVERS/FS/CDFS/CDFS.C
	$(CC_SIZE) -c -o $@ $<

OBJ/CDFSSUSP.O : DRIVERS/FS/CDFS/CDFSSUSP.C
	$(CC) -c -o $@ $<

OBJ/CDFSTIME.O : DRIVERS/FS/CDFS/CDFSTIME.C
	$(CC) -c -o $@ $<

OBJ/CDFSFNOD.O : DRIVERS/FS/CDFS/CDFSFNOD.C
	$(CC) -c -o $@ $<

CDFS_OBJ = OBJ/CDFS.O OBJ/CDFSSUSP.O OBJ/CDFSTIME.O OBJ/CDFSFNOD.O

FS/CDFS.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O $(CDFS_OBJ)
	$^ -device -share -l INT/KERNEL.INT -l INT/VFS.INT -o $@ -y SYM/CDFS.SYM


clean-fs : 
	rm -f $(SWAPPER_OBJ) FS/SWAPPER.SYS $(VFS_OBJ) FS/VFS.DLL $(SPADFS_OBJ) FS/SPADFS.SYS $(FAT_OBJ) FS/FAT.SYS $(EXT2_OBJ) FS/EXT2.SYS $(HPFS_OBJ) FS/HPFS.SYS $(CDFS_OBJ) FS/CDFS.SYS


OBJ/NETPKT.O : DRIVERS/NET/LIB/NETPKT.C
	$(CC) -c -o $@ $<

OBJ/NETPROT.O : DRIVERS/NET/LIB/NETPROT.C
	$(CC) -c -o $@ $<

OBJ/NETSOCK.O : DRIVERS/NET/LIB/NETSOCK.C
	$(CC) -c -o $@ $<

OBJ/NETUTIL.O : DRIVERS/NET/LIB/NETUTIL.C
	$(CC_SIZE) -c -o $@ $<

OBJ/NETETHER.O : DRIVERS/NET/LIB/NETETHER.C
	$(CC_SIZE) -c -o $@ $<

NET_OBJ = OBJ/NETPKT.O OBJ/NETPROT.O OBJ/NETSOCK.O OBJ/NETUTIL.O OBJ/NETETHER.O

FS/NET.DLL : OBJ/LINK$(HOST_EXE) $(NET_ARCH_OBJ) $(NET_OBJ)
	$^ -d INT/NET.INT -l INT/KERNEL.INT -o $@ OTHER/LIBGCC.A -y SYM/NET.SYM

OBJ/NETQUE.O : DRIVERS/NET/LIB/NETQUE.C
	$(CC) -c -o $@ $<

NETQUE_OBJ = OBJ/NETQUE.O

FS/NETQUE.DLL : OBJ/LINK$(HOST_EXE) $(NETQUE_OBJ)
	$^ -d INT/NETQUE.INT -l INT/KERNEL.INT -o $@ OTHER/LIBGCC.A -y SYM/NETQUE.SYM


OBJ/IPMAIN.O : DRIVERS/NET/TCPIP/IPMAIN.C
	$(CC_SIZE) -c -o $@ $<

OBJ/IPSOCKET.O : DRIVERS/NET/TCPIP/IPSOCKET.C
	$(CC) -c -o $@ $<

OBJ/IPNETACL.O : DRIVERS/NET/TCPIP/IPNETACL.C
	$(CC) -c -o $@ $<

OBJ/IPIF.O : DRIVERS/NET/TCPIP/IPIF.C
	$(CC) -c -o $@ $<

OBJ/IPDHCP.O : DRIVERS/NET/TCPIP/IPDHCP.C
	$(CC_SIZE) -c -o $@ $<

OBJ/IPINPUT.O : DRIVERS/NET/TCPIP/IPINPUT.C
	$(CC) -c -o $@ $<

OBJ/IPARP.O : DRIVERS/NET/TCPIP/IPARP.C
	$(CC_SIZE) -c -o $@ $<

OBJ/IPFRAG.O : DRIVERS/NET/TCPIP/IPFRAG.C
	$(CC_SIZE) -c -o $@ $<

OBJ/IPIGMP.O : DRIVERS/NET/TCPIP/IPIGMP.C
	$(CC_SIZE) -c -o $@ $<

OBJ/IPICMP.O : DRIVERS/NET/TCPIP/IPICMP.C
	$(CC_SIZE) -c -o $@ $<

OBJ/IPTCP.O : DRIVERS/NET/TCPIP/IPTCP.C DRIVERS/NET/TCPIP/IPTCP_RW.I
	$(CC) -c -o $@ $<

OBJ/IPUDP.O : DRIVERS/NET/TCPIP/IPUDP.C DRIVERS/NET/TCPIP/IPUDP_RW.I
	$(CC) -c -o $@ $<

OBJ/IPRND.O : DRIVERS/NET/TCPIP/IPRND.C
	$(CC_SIZE) -c -o $@ $<

OBJ/IPKILL.O : DRIVERS/NET/TCPIP/IPKILL.C
	$(CC_SIZE) -c -o $@ $<

TCPIP_OBJ = OBJ/IPMAIN.O OBJ/IPSOCKET.O OBJ/IPNETACL.O OBJ/IPIF.O OBJ/IPDHCP.O OBJ/IPINPUT.O OBJ/IPARP.O OBJ/IPFRAG.O OBJ/IPIGMP.O OBJ/IPICMP.O OBJ/IPTCP.O OBJ/IPUDP.O OBJ/IPRND.O OBJ/IPKILL.O

FS/TCPIP.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O $(TCPIP_OBJ)
	$^ -device -l INT/KERNEL.INT -l INT/NET.INT -o $@ -y SYM/TCPIP.SYM


OBJ/EAP.O : DRIVERS/NET/EAP/EAP.C
	$(CC_SIZE) -c -o $@ $<

OBJ/EAPOL.O : DRIVERS/NET/EAP/EAPOL.C
	$(CC_SIZE) -c -o $@ $<

EAPOL_OBJ = OBJ/EAP.O OBJ/EAPOL.O

FS/EAPOL.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O $(EAPOL_OBJ)
	$^ -device -share -l INT/KERNEL.INT -l INT/NET.INT -o $@ -y SYM/EAPOL.SYM

OBJ/ROOTER.O : DRIVERS/NET/EAP/ROOTER.C
	$(CC_SIZE) $(INCLUDE_SPECIAL) -c -o $@ $<

OBJ/ROOTSSL.O : DRIVERS/NET/EAP/ROOTSSL.C
	$(CC_SIZE) $(INCLUDE_SPECIAL) -c -o $@ $<

OBJ/ROOTCFG.O : DRIVERS/NET/EAP/ROOTCFG.C
	$(CC_SIZE) $(INCLUDE_SPECIAL) -c -o $@ $<

OBJ/ROOTINST.O : DRIVERS/NET/EAP/ROOTINST.C
	$(CC_SIZE) $(INCLUDE_SPECIAL) -c -o $@ $<

OBJ/ROOTTLS.O : DRIVERS/NET/EAP/ROOTTLS.C
	$(CC_SIZE) $(INCLUDE_SPECIAL) -c -o $@ $<

ROOTER_OBJ = OBJ/ROOTER.O OBJ/ROOTSSL.O OBJ/ROOTCFG.O OBJ/ROOTINST.O OBJ/ROOTTLS.O

FS/ROOTER.EXE : OBJ/LINK$(HOST_EXE) FS/CRT0.O $(ROOTER_OBJ)
	$^ -l INT/KERNEL.INT -l INT/LIBC.INT -l INT/PTHREAD.INT -l OTHER/CRYPTO.INT -l OTHER/SSL.INT -o $@ -y SYM/ROOTER.SYM

clean-eap :
	rm -f $(EAPOL_OBJ) FS/EAPOL.SYS $(ROOTER_OBJ) FS/ROOTER.EXE


OBJ/PLIP.O : DRIVERS/NET/NIC/PLIP.C
	$(CC) -c -o $@ $<

FS/PLIP.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/PLIP.O
	$^ -device -share -l INT/KERNEL.INT -l INT/NET.INT -l INT/NETQUE.INT -o $@ -y SYM/PLIP.SYM

OBJ/NE.O : DRIVERS/NET/NIC/NE.C
	$(CC) -c -o $@ $<

FS/NE.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/NE.O
	$^ -device -share -l INT/KERNEL.INT -l INT/NET.INT -l INT/NETQUE.INT -m INT/PCI.INT -o $@ -y SYM/NE.SYM

OBJ/RTL.O : DRIVERS/NET/NIC/RTL.C DRIVERS/NET/NIC/MII.I
	$(CC) -c -o $@ $<

FS/RTL.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/RTL.O
	$^ -device -share -l INT/KERNEL.INT -l INT/NET.INT -l INT/NETQUE.INT -l INT/PCI.INT -o $@ -y SYM/RTL.SYM

OBJ/3C.O : DRIVERS/NET/NIC/3C.C
	$(CC_SIZE) -c -o $@ $<

OBJ/3CEL.O : DRIVERS/NET/NIC/3CEL.C
	$(CC) -c -o $@ $<

OBJ/3CPIO.O : DRIVERS/NET/NIC/3CPIO.C DRIVERS/NET/NIC/3CXL.I DRIVERS/NET/NIC/MII.I
	$(CC) -c -o $@ $<

OBJ/3CMMIO.O : DRIVERS/NET/NIC/3CMMIO.C DRIVERS/NET/NIC/3CXL.I DRIVERS/NET/NIC/MII.I
	$(CC) -c -o $@ $<

FS/3C.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/3C.O OBJ/3CEL.O OBJ/3CPIO.O OBJ/3CMMIO.O
	$^ -device -share -l INT/KERNEL.INT -l INT/NET.INT -l INT/NETQUE.INT -m INT/PCI.INT -o $@ -y SYM/3C.SYM

OBJ/SK.O : DRIVERS/NET/NIC/SK.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SKGE.O : DRIVERS/NET/NIC/SKGE.C
	$(CC) -c -o $@ $<

OBJ/SKY2.O : DRIVERS/NET/NIC/SKY2.C
	$(CC) -c -o $@ $<

FS/SK.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/SK.O OBJ/SKGE.O OBJ/SKY2.O
	$^ -device -share -l INT/KERNEL.INT -l INT/NET.INT -l INT/NETQUE.INT -l INT/PCI.INT -o $@ -y SYM/SK.SYM

OBJ/IPG.O : DRIVERS/NET/NIC/IPG.C DRIVERS/NET/NIC/MII.I
	$(CC_SIZE) -c -o $@ $<

OBJ/IPGEPROM.O : DRIVERS/NET/NIC/IPGEPROM.C
	$(CC_SIZE) -c -o $@ $<

OBJ/IPGPHY.O : DRIVERS/NET/NIC/IPGPHY.C
	$(CC_SIZE) -c -o $@ $<

OBJ/IPGLINK.O : DRIVERS/NET/NIC/IPGLINK.C
	$(CC_SIZE) -c -o $@ $<

OBJ/IPGCORE.O : DRIVERS/NET/NIC/IPGCORE.C
	$(CC) -c -o $@ $<

FS/IPG.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/IPG.O OBJ/IPGEPROM.O OBJ/IPGPHY.O OBJ/IPGLINK.O OBJ/IPGCORE.O
	$^ -device -share -l INT/KERNEL.INT -l INT/NET.INT -l INT/NETQUE.INT -l INT/PCI.INT OTHER/LIBGCC.A -o $@ -y SYM/IPG.SYM


clean-net :
	rm -f $(NET_ARCH_OBJ) $(NET_OBJ) FS/NET.DLL $(NETQUE_OBJ) FS/NETQUE.DLL $(TCPIP_OBJ) FS/TCPIP.SYS $(EAPOL_OBJ) FS/EAPOL.SYS $(ROOTER_OBJ) FS/ROOTER.EXE OBJ/PLIP.O FS/PLIP.SYS OBJ/NE.O FS/NE.SYS OBJ/RTL.O FS/RTL.SYS OBJ/3C.O OBJ/3CEL.O OBJ/3CPIO.O OBJ/3CMMIO.O FS/3C.SYS OBJ/SK.O OBJ/SKGE.O OBJ/SKY2.O FS/SK.SYS OBJ/IPG.O OBJ/IPGEPROM.O OBJ/IPGPHY.O OBJ/IPGLINK.O OBJ/IPGCORE.O FS/IPG.SYS


OBJ/SOUNDIOC.O : DRIVERS/SOUND/SOUNDIOC.C
	$(CC) -c -o $@ $<

FS/SOUND.IOC : OBJ/LINK$(HOST_EXE) OBJ/SOUNDIOC.O
	$^ -d INT/IOC.INT -l INT/KERNEL.INT -o $@ -y SYM/SOUNDIOC.SYM


OBJ/SB.O : DRIVERS/SOUND/SB.C DRIVERS/SOUND/OSS.I
	$(CC) -c -o $@ $<

FS/SB.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/SB.O
	$^ -device -l INT/KERNEL.INT -l INT/ISADMA.INT OTHER/LIBGCC.A -o $@ -y SYM/SB.SYM


OBJ/WSS.O : DRIVERS/SOUND/WSS.C DRIVERS/SOUND/OSS.I
	$(CC) -c -o $@ $<

FS/WSS.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/WSS.O
	$^ -device -l INT/KERNEL.INT -l INT/ISADMA.INT OTHER/LIBGCC.A -o $@ -y SYM/WSS.SYM


OBJ/I810.O : DRIVERS/SOUND/I810.C DRIVERS/SOUND/OSS.I DRIVERS/SOUND/AC97.I
	$(CC) -c -o $@ $<

FS/I810.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/I810.O
	$^ -device -l INT/KERNEL.INT -l INT/PCI.INT OTHER/LIBGCC.A -o $@ -y SYM/I810.SYM


OBJ/VIA82.O : DRIVERS/SOUND/VIA82.C DRIVERS/SOUND/OSS.I DRIVERS/SOUND/AC97.I
	$(CC) -c -o $@ $<

FS/VIA82.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/VIA82.O
	$^ -device -l INT/KERNEL.INT -l INT/PCI.INT OTHER/LIBGCC.A -o $@ -y SYM/VIA82.SYM


OBJ/HDA.O : DRIVERS/SOUND/HDA.C
	$(CC) -c -o $@ $<

OBJ/HDAOSS.O : DRIVERS/SOUND/HDAOSS.C DRIVERS/SOUND/OSS.I
	$(CC) -c -o $@ $<

OBJ/HDACODEC.O : DRIVERS/SOUND/HDACODEC.C
	$(CC_SIZE) -c -o $@ $<

FS/HDA.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/HDA.O OBJ/HDAOSS.O OBJ/HDACODEC.O
	$^ -device -l INT/KERNEL.INT -l INT/PCI.INT OTHER/LIBGCC.A -o $@ -y SYM/HDA.SYM


OBJ/SIO.O : DRIVERS/PORT/SIO.C
	$(CC) -c -o $@ $<

FS/SIO.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/SIO.O
	$^ -device -share -l INT/KERNEL.INT -o $@ -y SYM/SIO.SYM

OBJ/PIO.O : DRIVERS/PORT/PIO.C
	$(CC) -c -o $@ $<

OBJ/PIOPRINT.O : DRIVERS/PORT/PIOPRINT.C DRIVERS/PORT/PIOXPAND.I
	$(CC_SIZE) -c -o $@ $<

FS/PIO.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/PIO.O OBJ/PIOPRINT.O
	$^ -device -share -l INT/KERNEL.INT -o $@ -y SYM/PIO.SYM

OBJ/USBPRINT.O : DRIVERS/PORT/USBPRINT.C DRIVERS/PORT/PIOXPAND.I
	$(CC_SIZE) -c -o $@ $<

FS/USBPRINT.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/USBPRINT.O
	$^ -device -share -l INT/KERNEL.INT -l INT/USB.INT -o $@ -y SYM/USBPRINT.SYM

FS/USBPRINT.USB : DRIVERS/PORT/USBPRINT.USB
	$(CP) $< $@

OBJ/SIOCOM.O : DRIVERS/PORT/SIOCOM.C
	$(CC_SIZE) -c -o $@ $<

FS/SIOCOM.EXE : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/SIOCOM.O
	$^ -l INT/KERNEL.INT -o $@ -y SYM/SIOCOM.SYM

OBJ/MOUSE.O : DRIVERS/MOUSE/MOUSE.C
	$(CC_SIZE) -c -o $@ $<

FS/MOUSE.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/MOUSE.O
	$^ -device -l INT/KERNEL.INT -o $@ -y SYM/MOUSE.SYM


OBJ/USBHID.O : DRIVERS/KEYBOARD/USBHID.C
	$(CC_SIZE) -c -o $@ $<

FS/USBHID.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/USBHID.O
	$^ -device -share -l INT/KERNEL.INT -l INT/USB.INT -o $@ -y SYM/USBHID.SYM

FS/USBHID.USB : DRIVERS/KEYBOARD/USBHID.USB
	$(CP) $< $@


OBJ/USB.O : DRIVERS/USB/LIB/USB.C
	$(CC_SIZE) -c -o $@ $<

OBJ/USBDEV.O : DRIVERS/USB/LIB/USBDEV.C
	$(CC_SIZE) -c -o $@ $<

OBJ/USBSYNC.O : DRIVERS/USB/LIB/USBSYNC.C
	$(CC_SIZE) -c -o $@ $<

OBJ/USBBUG.O : DRIVERS/USB/LIB/USBBUG.C
	$(CC_SIZE) -c -o $@ $<

OBJ/USBHLPR.O : DRIVERS/USB/LIB/USBHLPR.C
	$(CC_SIZE) -c -o $@ $<

OBJ/USBROOT.O : DRIVERS/USB/LIB/USBROOT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/USBHUB.O : DRIVERS/USB/LIB/USBHUB.C
	$(CC_SIZE) -c -o $@ $<

OBJ/USBPLUG.O : DRIVERS/USB/LIB/USBPLUG.C
	$(CC_SIZE) -c -o $@ $<

USB_OBJ = OBJ/USB.O OBJ/USBDEV.O OBJ/USBSYNC.O OBJ/USBBUG.O OBJ/USBHLPR.O OBJ/USBROOT.O OBJ/USBHUB.O OBJ/USBPLUG.O

FS/USB.DLL : OBJ/LINK$(HOST_EXE) $(USB_OBJ)
	$^ -d INT/USB.INT -l INT/KERNEL.INT -l INT/SHELL.INT -o $@ -y SYM/USB.SYM

OBJ/USBHUBEX.O : DRIVERS/USB/HUBLDR/USBHUBEX.C
	$(CC_SIZE) -c -o $@ $<

FS/USBHUB.EXE : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/USBHUBEX.O
	$^ -share -l INT/KERNEL.INT -l INT/USB.INT -o $@ -y SYM/USBHUB.SYM

FS/USBHUB.USB : DRIVERS/USB/HUBLDR/USBHUB.USB
	$(CP) $< $@


OBJ/EHCIBUST.O : DRIVERS/USB/HOST/EHCIBUST.C
	$(CC_SIZE) -c -o $@ $<

OBJ/EHCITAKE.O : DRIVERS/USB/HOST/EHCITAKE.C
	$(CC_SIZE) -c -o $@ $<

OBJ/OHCI.O : DRIVERS/USB/HOST/OHCI.C
	$(CC) -c -o $@ $<

FS/OHCI.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/OHCI.O OBJ/EHCIBUST.O OBJ/EHCITAKE.O
	$^ -device -share -l INT/KERNEL.INT -l INT/PCI.INT -l INT/USB.INT -o $@ -y SYM/OHCI.SYM

OBJ/UHCI.O : DRIVERS/USB/HOST/UHCI.C
	$(CC) -c -o $@ $<

FS/UHCI.SYS : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/UHCI.O OBJ/EHCIBUST.O OBJ/EHCITAKE.O
	$^ -device -share -l INT/KERNEL.INT -l INT/PCI.INT -l INT/USB.INT -o $@ -y SYM/UHCI.SYM

FS/USBPLUG.CMD : DRIVERS/USB/SCRIPTS/USBPLUG.CMD
	$(CP) $< $@


clean-usb :
	rm -f $(USB_OBJ) FS/USB.DLL OBJ/USBHUBEX.O FS/USBHUB.EXE FS/USBHUB.USB OBJ/OHCI.O FS/OHCI.SYS OBJ/UHCI.O FS/UHCI.SYS FS/USBPLUG.CMD OBJ/USBMSD.O FS/USBMSD.SYS FS/USBMSD.USB OBJ/USBHID.O FS/USBHID.SYS FS/USBHID.USB OBJ/USBPRINT.O FS/USBPRINT.SYS FS/USBPRINT.USB

OBJ/GPMLOW.O : LIB/GPM/GPMLOW.C
	$(CC_SIZE) -c -o $@ $<

OBJ/GPMHIGH.O : LIB/GPM/GPMHIGH.C
	$(CC_SIZE) -c -o $@ $<

OBJ/GPMXTRA.O : LIB/GPM/GPMXTRA.C
	$(CC_SIZE) -c -o $@ $<

GPM_OBJ = OBJ/GPMLOW.O OBJ/GPMHIGH.O OBJ/GPMXTRA.O

FS/GPM.DLL : OBJ/LINK$(HOST_EXE) $(GPM_OBJ)
	$^ -d INT/GPM.INT -l INT/KERNEL.INT -l INT/LIBC.INT -o $@ -y SYM/GPM.SYM


OBJ/VGAINIT.O : LIB/VGA/VGAINIT.C
	$(CC) -c -o $@ $<

OBJ/VGATIM.O : LIB/VGA/VGATIM.C
	$(CC_SIZE) -c -o $@ $<

OBJ/VGADRAW.O : LIB/VGA/VGADRAW.C
	$(CC) -c -o $@ $<

OBJ/VGAKBD.O : LIB/VGA/VGAKBD.C
	$(CC) -c -o $@ $<

OBJ/VGAMOUSE.O : LIB/VGA/VGAMOUSE.C
	$(CC) -c -o $@ $<

VGA_OBJ = OBJ/VGAINIT.O OBJ/VGATIM.O OBJ/VGADRAW.O OBJ/VGAKBD.O OBJ/VGAMOUSE.O

FS/VGA.DLL : OBJ/LINK$(HOST_EXE) $(VGA_OBJ)
	$^ -d INT/VGA.INT -l INT/KERNEL.INT -o $@ -y SYM/VGA.SYM


OBJ/CBITMAP.O : LIB/VGAGL/CBITMAP.C
	$(CC) -c -o $@ $<

OBJ/DRIVER.O : LIB/VGAGL/DRIVER.C
	$(CC) -c -o $@ $<

OBJ/FONT8X8.O : LIB/VGAGL/FONT8X8.C
	$(CC) -c -o $@ $<

OBJ/GRLIB.O : LIB/VGAGL/GRLIB.C
	$(CC) -c -o $@ $<

OBJ/LINE.O : LIB/VGAGL/LINE.C
	$(CC) -c -o $@ $<

OBJ/MEM.O : LIB/VGAGL/MEM.C
	$(CC) -c -o $@ $<

#OBJ/MEMS.O : LIB/VGAGL/MEM.S
#	$(PREPASM) -o $@ $<

OBJ/PALETTE.O : LIB/VGAGL/PALETTE.C
	$(CC) -c -o $@ $<

OBJ/SCALE.O : LIB/VGAGL/SCALE.C
	$(CC) -c -o $@ $<

OBJ/TEXT.O : LIB/VGAGL/TEXT.C
	$(CC) -c -o $@ $<

VGAGL_OBJ = OBJ/CBITMAP.O OBJ/DRIVER.O OBJ/FONT8X8.O OBJ/GRLIB.O OBJ/LINE.O OBJ/MEM.O OBJ/PALETTE.O OBJ/SCALE.O OBJ/TEXT.O

FS/VGAGL.DLL : OBJ/LINK$(HOST_EXE) $(VGAGL_OBJ)
	$^ -d INT/VGAGL.INT -l INT/KERNEL.INT -l INT/LIBC.INT -l INT/VGA.INT -o $@ -y SYM/VGAGL.SYM


###########
# CHARSET #
###########

OBJ/CHRCACHE.O : LIB/CHARSET/CHRCACHE.C
	$(CC_SIZE) -c -o $@ $<

OBJ/CHR8B.O : LIB/CHARSET/CHR8B.C
	$(CC) -c -o $@ $<

OBJ/CHRFALLB.O : LIB/CHARSET/CHRFALLB.C
	$(CC) -c -o $@ $<

OBJ/CHRALI.O : LIB/CHARSET/CHRALI.C
	$(CC_SIZE) -c -o $@ $<

OBJ/CHRUTIL.O : LIB/CHARSET/CHRUTIL.C
	$(CC) -c -o $@ $<

OBJ/CHRICONV.O : LIB/CHARSET/CHRICONV.C
	$(CC) -c -o $@ $<

OBJ/CHRICSET.O : LIB/CHARSET/CHRICSET.C
	$(CC) -c -o $@ $<

OBJ/CHRLIST.O : LIB/CHARSET/CHRLIST.C
	$(CC_SIZE) -c -o $@ $<

CHARSET_OBJ = OBJ/CHRCACHE.O OBJ/CHR8B.O OBJ/CHRFALLB.O OBJ/CHRALI.O OBJ/CHRUTIL.O OBJ/CHRICONV.O OBJ/CHRICSET.O OBJ/CHRLIST.O

FS/CHARSET.DLL : OBJ/LINK$(HOST_EXE) $(CHARSET_OBJ)
	$^ -d INT/CHARSET.INT -l INT/KERNEL.INT -o $@ -y SYM/CHARSET.SYM

OBJ/ICONV.O : PRG/ICONV/ICONV.C
	$(CC) -c -o $@ $<

FS/ICONV.EXE : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/ICONV.O
	$^ -l INT/KERNEL.INT -l INT/CHARSET.INT -o $@ -y SYM/ICONV.SYM


#########
# STDIO #
#########

OBJ/ASPRINTF.O : LIB/LIBC/STDIO/ASPRINTF.C
	$(CC) -c -o $@ $<

OBJ/CLRERR.O : LIB/LIBC/STDIO/CLRERR.C
	$(CC) -c -o $@ $<

OBJ/FCLOSE.O : LIB/LIBC/STDIO/FCLOSE.C
	$(CC) -c -o $@ $<

OBJ/FDOPEN.O : LIB/LIBC/STDIO/FDOPEN.C
	$(CC) -c -o $@ $<

OBJ/FEOF.O : LIB/LIBC/STDIO/FEOF.C
	$(CC) -c -o $@ $<

OBJ/FERROR.O : LIB/LIBC/STDIO/FERROR.C
	$(CC) -c -o $@ $<

OBJ/FFLUSH.O : LIB/LIBC/STDIO/FFLUSH.C
	$(CC) -c -o $@ $<

OBJ/FGETC.O : LIB/LIBC/STDIO/FGETC.C
	$(CC) -c -o $@ $<

OBJ/FGETLN.O : LIB/LIBC/STDIO/FGETLN.C
	$(CC) -c -o $@ $<

OBJ/FGETPOS.O : LIB/LIBC/STDIO/FGETPOS.C
	$(CC) -c -o $@ $<

OBJ/FGETS.O : LIB/LIBC/STDIO/FGETS.C
	$(CC) -c -o $@ $<

OBJ/FILENO.O : LIB/LIBC/STDIO/FILENO.C
	$(CC) -c -o $@ $<

OBJ/FINDFP.O : LIB/LIBC/STDIO/FINDFP.C
	$(CC) -c -o $@ $<

OBJ/FLAGS.O : LIB/LIBC/STDIO/FLAGS.C
	$(CC) -c -o $@ $<

OBJ/FOPEN.O : LIB/LIBC/STDIO/FOPEN.C
	$(CC) -c -o $@ $<

OBJ/FPRINTF.O : LIB/LIBC/STDIO/FPRINTF.C
	$(CC) -c -o $@ $<

OBJ/FPURGE.O : LIB/LIBC/STDIO/FPURGE.C
	$(CC) -c -o $@ $<

OBJ/FPUTC.O : LIB/LIBC/STDIO/FPUTC.C
	$(CC) -c -o $@ $<

OBJ/FPUTS.O : LIB/LIBC/STDIO/FPUTS.C
	$(CC) -c -o $@ $<

OBJ/FREAD.O : LIB/LIBC/STDIO/FREAD.C
	$(CC) -c -o $@ $<

OBJ/FREOPEN.O : LIB/LIBC/STDIO/FREOPEN.C
	$(CC) -c -o $@ $<

OBJ/FSCANF.O : LIB/LIBC/STDIO/FSCANF.C
	$(CC) -c -o $@ $<

OBJ/FSEEK.O : LIB/LIBC/STDIO/FSEEK.C
	$(CC) -c -o $@ $<

OBJ/FSETPOS.O : LIB/LIBC/STDIO/FSETPOS.C
	$(CC) -c -o $@ $<

OBJ/FTELL.O : LIB/LIBC/STDIO/FTELL.C
	$(CC) -c -o $@ $<

OBJ/FUNOPEN.O : LIB/LIBC/STDIO/FUNOPEN.C
	$(CC) -c -o $@ $<

OBJ/FVWRITE.O : LIB/LIBC/STDIO/FVWRITE.C
	$(CC) -c -o $@ $<

OBJ/FWALK.O : LIB/LIBC/STDIO/FWALK.C
	$(CC) -c -o $@ $<

OBJ/FWRITE.O : LIB/LIBC/STDIO/FWRITE.C
	$(CC) -c -o $@ $<

OBJ/GETS.O : LIB/LIBC/STDIO/GETS.C
	$(CC_SIZE) -c -o $@ $<

OBJ/GETW.O : LIB/LIBC/STDIO/GETW.C
	$(CC) -c -o $@ $<

OBJ/MAKEBUF.O : LIB/LIBC/STDIO/MAKEBUF.C
	$(CC) -c -o $@ $<

OBJ/MKTEMP.O : LIB/LIBC/STDIO/MKTEMP.C
	$(CC) -c -o $@ $<

OBJ/PERROR.O : LIB/LIBC/STDIO/PERROR.C
	$(CC_SIZE) -c -o $@ $<

OBJ/PRINTF.O : LIB/LIBC/STDIO/PRINTF.C
	$(CC) -c -o $@ $<

OBJ/PUTS.O : LIB/LIBC/STDIO/PUTS.C
	$(CC) -c -o $@ $<

OBJ/PUTW.O : LIB/LIBC/STDIO/PUTW.C
	$(CC) -c -o $@ $<

OBJ/REFILL.O : LIB/LIBC/STDIO/REFILL.C
	$(CC) -c -o $@ $<

OBJ/REMOVE.O : LIB/LIBC/STDIO/REMOVE.C
	$(CC) -c -o $@ $<

OBJ/REWIND.O : LIB/LIBC/STDIO/REWIND.C
	$(CC) -c -o $@ $<

OBJ/RGET.O : LIB/LIBC/STDIO/RGET.C
	$(CC) -c -o $@ $<

OBJ/SCANF.O : LIB/LIBC/STDIO/SCANF.C
	$(CC) -c -o $@ $<

OBJ/SETBUF.O : LIB/LIBC/STDIO/SETBUF.C
	$(CC) -c -o $@ $<

OBJ/SETBUFFER.O : LIB/LIBC/STDIO/SETBUFFER.C
	$(CC) -c -o $@ $<

OBJ/SETVBUF.O : LIB/LIBC/STDIO/SETVBUF.C
	$(CC) -c -o $@ $<

OBJ/SNPRINTF.O : LIB/LIBC/STDIO/SNPRINTF.C
	$(CC) -c -o $@ $<

OBJ/SPRINTF.O : LIB/LIBC/STDIO/SPRINTF.C
	$(CC) -c -o $@ $<

OBJ/SSCANF.O : LIB/LIBC/STDIO/SSCANF.C
	$(CC) -c -o $@ $<

OBJ/STDIO.O : LIB/LIBC/STDIO/STDIO.C
	$(CC) -c -o $@ $<

OBJ/TEMPNAM.O : LIB/LIBC/STDIO/TEMPNAM.C
	$(CC) -c -o $@ $<

OBJ/TMPFILE.O : LIB/LIBC/STDIO/TMPFILE.C
	$(CC) -c -o $@ $<

OBJ/TMPNAM.O : LIB/LIBC/STDIO/TMPNAM.C
	$(CC) -c -o $@ $<

OBJ/UNGETC.O : LIB/LIBC/STDIO/UNGETC.C
	$(CC) -c -o $@ $<

OBJ/VASPRINTF.O : LIB/LIBC/STDIO/VASPRINTF.C
	$(CC) -c -o $@ $<

OBJ/VFPRINTF.O : LIB/LIBC/STDIO/VFPRINTF.C
	$(CC) -c -o $@ $<

OBJ/VFSCANF.O : LIB/LIBC/STDIO/VFSCANF.C
	$(CC) -c -o $@ $<

OBJ/VPRINTF.O : LIB/LIBC/STDIO/VPRINTF.C
	$(CC) -c -o $@ $<

OBJ/VSCANF.O : LIB/LIBC/STDIO/VSCANF.C
	$(CC) -c -o $@ $<

OBJ/VSNPRINTF.O : LIB/LIBC/STDIO/VSNPRINTF.C
	$(CC) -c -o $@ $<

OBJ/VSPRINTF.O : LIB/LIBC/STDIO/VSPRINTF.C
	$(CC) -c -o $@ $<

OBJ/VSSCANF.O : LIB/LIBC/STDIO/VSSCANF.C
	$(CC) -c -o $@ $<

OBJ/WBUF.O : LIB/LIBC/STDIO/WBUF.C
	$(CC) -c -o $@ $<

OBJ/WSETUP.O : LIB/LIBC/STDIO/WSETUP.C
	$(CC) -c -o $@ $<

OBJ/FLOCK.O : LIB/LIBC/STDIO/FLOCK.C
	$(CC) -c -o $@ $<

OBJ/STDIO_INTERNAL.O : LIB/LIBC/STDIO/STDIO_INTERNAL.C
	$(CC) -c -o $@ $<

STDIO_OBJ = OBJ/ASPRINTF.O OBJ/CLRERR.O OBJ/FCLOSE.O OBJ/FDOPEN.O OBJ/FEOF.O OBJ/FERROR.O OBJ/FFLUSH.O OBJ/FGETC.O OBJ/FGETLN.O OBJ/FGETPOS.O OBJ/FGETS.O OBJ/FILENO.O OBJ/FINDFP.O OBJ/FLAGS.O OBJ/FOPEN.O OBJ/FPRINTF.O OBJ/FPURGE.O OBJ/FPUTC.O OBJ/FPUTS.O OBJ/FREAD.O OBJ/FREOPEN.O OBJ/FSCANF.O OBJ/FSEEK.O OBJ/FSETPOS.O OBJ/FTELL.O OBJ/FUNOPEN.O OBJ/FVWRITE.O OBJ/FWALK.O OBJ/FWRITE.O OBJ/GETS.O OBJ/GETW.O OBJ/MAKEBUF.O OBJ/MKTEMP.O OBJ/PERROR.O OBJ/PRINTF.O OBJ/PUTS.O OBJ/PUTW.O OBJ/REFILL.O OBJ/REMOVE.O OBJ/REWIND.O OBJ/RGET.O OBJ/SCANF.O OBJ/SETBUF.O OBJ/SETBUFFER.O OBJ/SETVBUF.O OBJ/SNPRINTF.O OBJ/SPRINTF.O OBJ/SSCANF.O OBJ/STDIO.O OBJ/TEMPNAM.O OBJ/TMPFILE.O OBJ/TMPNAM.O OBJ/UNGETC.O OBJ/VASPRINTF.O OBJ/VFPRINTF.O OBJ/VFSCANF.O OBJ/VPRINTF.O OBJ/VSCANF.O OBJ/VSNPRINTF.O OBJ/VSPRINTF.O OBJ/VSSCANF.O OBJ/WBUF.O OBJ/WSETUP.O OBJ/FLOCK.O OBJ/STDIO_INTERNAL.O

##########
# STDLIB #
##########

OBJ/ABORT.O : LIB/LIBC/STDLIB/ABORT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/ATEXIT.O : LIB/LIBC/STDLIB/ATEXIT.C
	$(CC) -c -o $@ $<

OBJ/ATOF.O : LIB/LIBC/STDLIB/ATOF.C
	$(CC) -c -o $@ $<

OBJ/ATOI.O : LIB/LIBC/STDLIB/ATOI.C
	$(CC) -c -o $@ $<

OBJ/ATOL.O : LIB/LIBC/STDLIB/ATOL.C
	$(CC) -c -o $@ $<

OBJ/ATOLL.O : LIB/LIBC/STDLIB/ATOLL.C
	$(CC) -c -o $@ $<

OBJ/BSEARCH.O : LIB/LIBC/STDLIB/BSEARCH.C
	$(CC) -c -o $@ $<

OBJ/EXIT.O : LIB/LIBC/STDLIB/EXIT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/GETSUBOPT.O : LIB/LIBC/STDLIB/GETSUBOPT.C
	$(CC) -c -o $@ $<

OBJ/HCREATE.O : LIB/LIBC/STDLIB/HCREATE.C
	$(CC) -c -o $@ $<

OBJ/STRTOD.O : LIB/LIBC/STDLIB/STRTOD.C
	$(CC) -fno-strict-aliasing -c -o $@ $<

OBJ/STRTOL.O : LIB/LIBC/STDLIB/STRTOL.C
	$(CC) -c -o $@ $<

OBJ/STRTOLL.O : LIB/LIBC/STDLIB/STRTOLL.C
	$(CC) -c -o $@ $<

OBJ/STRTOUL.O : LIB/LIBC/STDLIB/STRTOUL.C
	$(CC) -c -o $@ $<

OBJ/STRTOULL.O : LIB/LIBC/STDLIB/STRTOULL.C
	$(CC) -c -o $@ $<

OBJ/SYSTEM.O : LIB/LIBC/STDLIB/SYSTEM.C
	$(CC) -c -o $@ $<

OBJ/TDELETE.O : LIB/LIBC/STDLIB/TDELETE.C
	$(CC) -c -o $@ $<

OBJ/TFIND.O : LIB/LIBC/STDLIB/TFIND.C
	$(CC) -c -o $@ $<

OBJ/TSEARCH.O : LIB/LIBC/STDLIB/TSEARCH.C
	$(CC) -c -o $@ $<

OBJ/TWALK.O : LIB/LIBC/STDLIB/TWALK.C
	$(CC) -c -o $@ $<

OBJ/TDESTROY.O : LIB/LIBC/STDLIB/TDESTROY.C
	$(CC) -c -o $@ $<

STDLIB_OBJ = OBJ/ABORT.O OBJ/ATEXIT.O OBJ/ATOF.O OBJ/ATOI.O OBJ/ATOL.O OBJ/ATOLL.O OBJ/BSEARCH.O OBJ/EXIT.O OBJ/GETSUBOPT.O OBJ/HCREATE.O OBJ/STRTOD.O OBJ/STRTOL.O OBJ/STRTOLL.O OBJ/STRTOUL.O OBJ/STRTOULL.O OBJ/SYSTEM.O OBJ/TDELETE.O OBJ/TFIND.O OBJ/TSEARCH.O OBJ/TWALK.O OBJ/TDESTROY.O

##########
# LOCALE #
##########

OBJ/BIG5.O : LIB/LIBC/LOCALE/BIG5.C
	$(CC_SIZE) -c -o $@ $<

OBJ/BTOWC.O : LIB/LIBC/LOCALE/BTOWC.C
	$(CC_SIZE) -c -o $@ $<

OBJ/COLLATE.O : LIB/LIBC/LOCALE/COLLATE.C
	$(CC_SIZE) -c -o $@ $<

OBJ/COLLCMP.O : LIB/LIBC/LOCALE/COLLCMP.C
	$(CC_SIZE) -c -o $@ $<

OBJ/EUC.O : LIB/LIBC/LOCALE/EUC.C
	$(CC_SIZE) -c -o $@ $<

OBJ/FIX_GROUPING.O : LIB/LIBC/LOCALE/FIX_GROUPING.C
	$(CC_SIZE) -c -o $@ $<

OBJ/GB18030.O : LIB/LIBC/LOCALE/GB18030.C
	$(CC_SIZE) -c -o $@ $<

OBJ/GB2312.O : LIB/LIBC/LOCALE/GB2312.C
	$(CC_SIZE) -c -o $@ $<

OBJ/GBK.O : LIB/LIBC/LOCALE/GBK.C
	$(CC_SIZE) -c -o $@ $<

OBJ/ISCTYPE.O : LIB/LIBC/LOCALE/ISCTYPE.C
	$(CC_SIZE) -c -o $@ $<

OBJ/ISWCTYPE.O : LIB/LIBC/LOCALE/ISWCTYPE.C
	$(CC_SIZE) -c -o $@ $<

OBJ/LDPART.O : LIB/LIBC/LOCALE/LDPART.C
	$(CC_SIZE) -c -o $@ $<

OBJ/LMESSAGES.O : LIB/LIBC/LOCALE/LMESSAGES.C
	$(CC_SIZE) -c -o $@ $<

OBJ/LMONETARY.O : LIB/LIBC/LOCALE/LMONETARY.C
	$(CC_SIZE) -c -o $@ $<

OBJ/LNUMERIC.O : LIB/LIBC/LOCALE/LNUMERIC.C
	$(CC_SIZE) -c -o $@ $<

OBJ/LOCALECONV.O : LIB/LIBC/LOCALE/LOCALECONV.C
	$(CC_SIZE) -c -o $@ $<

OBJ/MBLEN.O : LIB/LIBC/LOCALE/MBLEN.C
	$(CC_SIZE) -c -o $@ $<

OBJ/MBRLEN.O : LIB/LIBC/LOCALE/MBRLEN.C
	$(CC_SIZE) -c -o $@ $<

OBJ/MBRTOWC.O : LIB/LIBC/LOCALE/MBRTOWC.C
	$(CC_SIZE) -c -o $@ $<

OBJ/MBSINIT.O : LIB/LIBC/LOCALE/MBSINIT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/MBSNRTOWCS.O : LIB/LIBC/LOCALE/MBSNRTOWCS.C
	$(CC_SIZE) -c -o $@ $<

OBJ/MBSRTOWCS.O : LIB/LIBC/LOCALE/MBSRTOWCS.C
	$(CC_SIZE) -c -o $@ $<

OBJ/MBSTOWCS.O : LIB/LIBC/LOCALE/MBSTOWCS.C
	$(CC_SIZE) -c -o $@ $<

OBJ/MBTOWC.O : LIB/LIBC/LOCALE/MBTOWC.C
	$(CC_SIZE) -c -o $@ $<

OBJ/MSKANJI.O : LIB/LIBC/LOCALE/MSKANJI.C
	$(CC_SIZE) -c -o $@ $<

OBJ/NEXTWCTYPE.O : LIB/LIBC/LOCALE/NEXTWCTYPE.C
	$(CC_SIZE) -c -o $@ $<

OBJ/NL_LANGINFO.O : LIB/LIBC/LOCALE/NL_LANGINFO.C
	$(CC_SIZE) -c -o $@ $<

OBJ/NOMACROS.O : LIB/LIBC/LOCALE/NOMACROS.C
	$(CC_SIZE) -c -o $@ $<

OBJ/NONE.O : LIB/LIBC/LOCALE/NONE.C
	$(CC_SIZE) -c -o $@ $<

OBJ/RPMATCH.O : LIB/LIBC/LOCALE/RPMATCH.C
	$(CC_SIZE) -c -o $@ $<

OBJ/RUNE.O : LIB/LIBC/LOCALE/RUNE.C
	$(CC_SIZE) -c -o $@ $<

OBJ/RUNETYPE.O : LIB/LIBC/LOCALE/RUNETYPE.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SETLOCALE.O : LIB/LIBC/LOCALE/SETLOCALE.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SETRUNELOCALE.O : LIB/LIBC/LOCALE/SETRUNELOCALE.C
	$(CC_SIZE) -c -o $@ $<

OBJ/TABLE.O : LIB/LIBC/LOCALE/TABLE.C
	$(CC_SIZE) -c -o $@ $<

OBJ/TOLOWER.O : LIB/LIBC/LOCALE/TOLOWER.C
	$(CC_SIZE) -c -o $@ $<

OBJ/TOUPPER.O : LIB/LIBC/LOCALE/TOUPPER.C
	$(CC_SIZE) -c -o $@ $<

OBJ/UTF8.O : LIB/LIBC/LOCALE/UTF8.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCRTOMB.O : LIB/LIBC/LOCALE/WCRTOMB.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSFTIME.O : LIB/LIBC/LOCALE/WCSFTIME.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSNRTOMBS.O : LIB/LIBC/LOCALE/WCSNRTOMBS.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSRTOMBS.O : LIB/LIBC/LOCALE/WCSRTOMBS.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSTOD.O : LIB/LIBC/LOCALE/WCSTOD.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSTOF.O : LIB/LIBC/LOCALE/WCSTOF.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSTOIMAX.O : LIB/LIBC/LOCALE/WCSTOIMAX.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSTOL.O : LIB/LIBC/LOCALE/WCSTOL.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSTOLL.O : LIB/LIBC/LOCALE/WCSTOLL.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSTOMBS.O : LIB/LIBC/LOCALE/WCSTOMBS.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSTOUL.O : LIB/LIBC/LOCALE/WCSTOUL.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSTOULL.O : LIB/LIBC/LOCALE/WCSTOULL.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSTOUMAX.O : LIB/LIBC/LOCALE/WCSTOUMAX.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCTOB.O : LIB/LIBC/LOCALE/WCTOB.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCTOMB.O : LIB/LIBC/LOCALE/WCTOMB.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCTRANS.O : LIB/LIBC/LOCALE/WCTRANS.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCTYPE.O : LIB/LIBC/LOCALE/WCTYPE.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCWIDTH.O : LIB/LIBC/LOCALE/WCWIDTH.C
	$(CC_SIZE) -c -o $@ $<

LOCALE_OBJ = OBJ/BIG5.O OBJ/BTOWC.O OBJ/COLLATE.O OBJ/COLLCMP.O OBJ/EUC.O OBJ/FIX_GROUPING.O OBJ/GB18030.O OBJ/GB2312.O OBJ/GBK.O OBJ/ISCTYPE.O OBJ/ISWCTYPE.O OBJ/LDPART.O OBJ/LMESSAGES.O OBJ/LMONETARY.O OBJ/LNUMERIC.O OBJ/LOCALECONV.O OBJ/MBLEN.O OBJ/MBRLEN.O OBJ/MBRTOWC.O OBJ/MBSINIT.O OBJ/MBSNRTOWCS.O OBJ/MBSRTOWCS.O OBJ/MBSTOWCS.O OBJ/MBTOWC.O OBJ/MSKANJI.O OBJ/NEXTWCTYPE.O OBJ/NL_LANGINFO.O OBJ/NOMACROS.O OBJ/NONE.O OBJ/RPMATCH.O OBJ/RUNE.O OBJ/RUNETYPE.O OBJ/SETLOCALE.O OBJ/SETRUNELOCALE.O OBJ/TABLE.O OBJ/TOLOWER.O OBJ/TOUPPER.O OBJ/UTF8.O OBJ/WCRTOMB.O OBJ/WCSFTIME.O OBJ/WCSNRTOMBS.O OBJ/WCSRTOMBS.O OBJ/WCSTOD.O OBJ/WCSTOF.O OBJ/WCSTOIMAX.O OBJ/WCSTOL.O OBJ/WCSTOLL.O OBJ/WCSTOMBS.O OBJ/WCSTOUL.O OBJ/WCSTOULL.O OBJ/WCSTOUMAX.O OBJ/WCTOB.O OBJ/WCTOMB.O OBJ/WCTRANS.O OBJ/WCTYPE.O OBJ/WCWIDTH.O

###########
# STDTIME #
###########

OBJ/ASCTIME.O : LIB/LIBC/STDTIME/ASCTIME.C
	$(CC) -c -o $@ $<

OBJ/DIFFTIME.O : LIB/LIBC/STDTIME/DIFFTIME.C
	$(CC) -c -o $@ $<

OBJ/LOCALTIME.O : LIB/LIBC/STDTIME/LOCALTIME.C
	$(CC) -c -o $@ $<

OBJ/STRFTIME.O : LIB/LIBC/STDTIME/STRFTIME.C
	$(CC) -c -o $@ $<

OBJ/STRPTIME.O : LIB/LIBC/STDTIME/STRPTIME.C
	$(CC) -c -o $@ $<

OBJ/TIMELOCAL.O : LIB/LIBC/STDTIME/TIMELOCAL.C
	$(CC) -c -o $@ $<

STDTIME_OBJ = OBJ/ASCTIME.O OBJ/DIFFTIME.O OBJ/LOCALTIME.O OBJ/STRFTIME.O OBJ/STRPTIME.O OBJ/TIMELOCAL.O

##########
# STRING #
##########

OBJ/STRCASECMP.O : LIB/LIBC/STRING/STRCASECMP.C
	$(CC) -c -o $@ $<

OBJ/STRCASESTR.O : LIB/LIBC/STRING/STRCASESTR.C
	$(CC) -c -o $@ $<

OBJ/STRCOLL.O : LIB/LIBC/STRING/STRCOLL.C
	$(CC) -c -o $@ $<

OBJ/STRDUP.O : LIB/LIBC/STRING/STRDUP.C
	$(CC) -c -o $@ $<

OBJ/STRMODE.O : LIB/LIBC/STRING/STRMODE.C
	$(CC) -c -o $@ $<

OBJ/STRSEP.O : LIB/LIBC/STRING/STRSEP.C
	$(CC) -c -o $@ $<

OBJ/STRTOK.O : LIB/LIBC/STRING/STRTOK.C
	$(CC) -c -o $@ $<

OBJ/STRXFRM.O : LIB/LIBC/STRING/STRXFRM.C
	$(CC) -c -o $@ $<

OBJ/WCSCAT.O : LIB/LIBC/STRING/WCSCAT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSCHR.O : LIB/LIBC/STRING/WCSCHR.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSCMP.O : LIB/LIBC/STRING/WCSCMP.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSCOLL.O : LIB/LIBC/STRING/WCSCOLL.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSCPY.O : LIB/LIBC/STRING/WCSCPY.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSCSPN.O : LIB/LIBC/STRING/WCSCSPN.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSLCAT.O : LIB/LIBC/STRING/WCSLCAT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSLCPY.O : LIB/LIBC/STRING/WCSLCPY.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSLEN.O : LIB/LIBC/STRING/WCSLEN.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSNCAT.O : LIB/LIBC/STRING/WCSNCAT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSNCMP.O : LIB/LIBC/STRING/WCSNCMP.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSNCPY.O : LIB/LIBC/STRING/WCSNCPY.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSPBRK.O : LIB/LIBC/STRING/WCSPBRK.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSRCHR.O : LIB/LIBC/STRING/WCSRCHR.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSSPN.O : LIB/LIBC/STRING/WCSSPN.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSSTR.O : LIB/LIBC/STRING/WCSSTR.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSTOK.O : LIB/LIBC/STRING/WCSTOK.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSWIDTH.O : LIB/LIBC/STRING/WCSWIDTH.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WCSXFRM.O : LIB/LIBC/STRING/WCSXFRM.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WMEMCHR.O : LIB/LIBC/STRING/WMEMCHR.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WMEMCMP.O : LIB/LIBC/STRING/WMEMCMP.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WMEMCPY.O : LIB/LIBC/STRING/WMEMCPY.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WMEMMOVE.O : LIB/LIBC/STRING/WMEMMOVE.C
	$(CC_SIZE) -c -o $@ $<

OBJ/WMEMSET.O : LIB/LIBC/STRING/WMEMSET.C
	$(CC_SIZE) -c -o $@ $<

STRING_OBJ = OBJ/STRCASECMP.O OBJ/STRCASESTR.O OBJ/STRCOLL.O OBJ/STRDUP.O OBJ/STRMODE.O OBJ/STRSEP.O OBJ/STRTOK.O OBJ/STRXFRM.O OBJ/WCSCAT.O OBJ/WCSCHR.O OBJ/WCSCMP.O OBJ/WCSCOLL.O OBJ/WCSCPY.O OBJ/WCSCSPN.O OBJ/WCSLCAT.O OBJ/WCSLCPY.O OBJ/WCSLEN.O OBJ/WCSNCAT.O OBJ/WCSNCMP.O OBJ/WCSNCPY.O OBJ/WCSPBRK.O OBJ/WCSRCHR.O OBJ/WCSSPN.O OBJ/WCSSTR.O OBJ/WCSTOK.O OBJ/WCSWIDTH.O OBJ/WCSXFRM.O OBJ/WMEMCHR.O OBJ/WMEMCMP.O OBJ/WMEMCPY.O OBJ/WMEMMOVE.O OBJ/WMEMSET.O

#######
# GEN #
#######

OBJ/ALARM.O : LIB/LIBC/GEN/ALARM.C
	$(CC) -c -o $@ $<

OBJ/CTERMID.O : LIB/LIBC/GEN/CTERMID.C
	$(CC) -c -o $@ $<

OBJ/ERR.O : LIB/LIBC/GEN/ERR.C
	$(CC_SIZE) -c -o $@ $<

OBJ/FTS.O : LIB/LIBC/GEN/FTS.C
	$(CC) -c -o $@ $<

OBJ/GETPROGNAME.O : LIB/LIBC/GEN/GETPROGNAME.C
	$(CC) -c -o $@ $<

OBJ/LOCKF.O : LIB/LIBC/GEN/LOCKF.C
	$(CC) -c -o $@ $<

OBJ/POPEN.O : LIB/LIBC/GEN/POPEN.C
	$(CC) -c -o $@ $<

OBJ/READPASSPHRASE.O : LIB/LIBC/GEN/READPASSPHRASE.C
	$(CC_SIZE) -c -o $@ $<

OBJ/SCANDIR.O : LIB/LIBC/GEN/SCANDIR.C
	$(CC) -c -o $@ $<

OBJ/SETPROGNAME.O : LIB/LIBC/GEN/SETPROGNAME.C
	$(CC_SIZE) -c -o $@ $<

OBJ/TERMIOS.O : LIB/LIBC/GEN/TERMIOS.C
	$(CC) -c -o $@ $<

OBJ/TIMEZONE.O : LIB/LIBC/GEN/TIMEZONE.C
	$(CC) -c -o $@ $<

OBJ/UALARM.O : LIB/LIBC/GEN/UALARM.C
	$(CC) -c -o $@ $<

OBJ/UNVIS.O : LIB/LIBC/GEN/UNVIS.C
	$(CC) -c -o $@ $<

OBJ/VIS.O : LIB/LIBC/GEN/VIS.C
	$(CC) -c -o $@ $<

GEN_OBJ = OBJ/ALARM.O OBJ/CTERMID.O OBJ/ERR.O OBJ/FTS.O OBJ/GETPROGNAME.O OBJ/LOCKF.O OBJ/POPEN.O OBJ/READPASSPHRASE.O OBJ/SCANDIR.O OBJ/SETPROGNAME.O OBJ/TERMIOS.O OBJ/TIMEZONE.O OBJ/UALARM.O OBJ/UNVIS.O OBJ/VIS.O

#######
# NLS #
#######

OBJ/MSGCAT.O : LIB/LIBC/NLS/MSGCAT.C
	$(CC_SIZE) -c -o $@ $<

NLS_OBJ = OBJ/MSGCAT.O

#########
# REGEX #
#########

OBJ/REGEX.O : LIB/LIBC/REGEX/REGEX.C LIB/LIBC/REGEX/REGCOMP.C LIB/LIBC/REGEX/REGEXEC.C LIB/LIBC/REGEX/REGEX_INTERNAL.C
	$(CC) -c -o $@ $<

REGEX_OBJ = OBJ/REGEX.O

#######
# GNU #
#######

OBJ/GETOPT.O : LIB/LIBC/GNU/GETOPT.C
	$(CC) -c -o $@ $<

OBJ/GETOPT1.O : LIB/LIBC/GNU/GETOPT1.C
	$(CC) -c -o $@ $<

GNU_OBJ = OBJ/GETOPT.O OBJ/GETOPT1.O

###########
# GETTEXT #
###########

OBJ/BINDTEXTDOM.O : LIB/LIBC/GETTEXT/BINDTEXTDOM.C
	$(CC_SIZE) -c -o $@ $<

OBJ/DCGETTEXT.O : LIB/LIBC/GETTEXT/DCGETTEXT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/DCIGETTEXT.O : LIB/LIBC/GETTEXT/DCIGETTEXT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/DCNGETTEXT.O : LIB/LIBC/GETTEXT/DCNGETTEXT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/DGETTEXT.O : LIB/LIBC/GETTEXT/DGETTEXT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/DNGETTEXT.O : LIB/LIBC/GETTEXT/DNGETTEXT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/EXPLODENAME.O : LIB/LIBC/GETTEXT/EXPLODENAME.C
	$(CC_SIZE) -c -o $@ $<

OBJ/FINDDOMAIN.O : LIB/LIBC/GETTEXT/FINDDOMAIN.C
	$(CC_SIZE) -c -o $@ $<

OBJ/GETTEXT.O : LIB/LIBC/GETTEXT/GETTEXT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/L10NFLIST.O : LIB/LIBC/GETTEXT/L10NFLIST.C
	$(CC_SIZE) -c -o $@ $<

OBJ/LOADMSGCAT.O : LIB/LIBC/GETTEXT/LOADMSGCAT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/LOCALCHARSET.O : LIB/LIBC/GETTEXT/LOCALCHARSET.C
	$(CC_SIZE) -c -o $@ $<

OBJ/LOCALEALIAS.O : LIB/LIBC/GETTEXT/LOCALEALIAS.C
	$(CC_SIZE) -c -o $@ $<

OBJ/LOCALENAME.O : LIB/LIBC/GETTEXT/LOCALENAME.C
	$(CC_SIZE) -c -o $@ $<

OBJ/LOG.O : LIB/LIBC/GETTEXT/LOG.C
	$(CC_SIZE) -c -o $@ $<

OBJ/NGETTEXT.O : LIB/LIBC/GETTEXT/NGETTEXT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/OSDEP.O : LIB/LIBC/GETTEXT/OSDEP.C
	$(CC_SIZE) -c -o $@ $<

OBJ/PLURAL-EXP.O : LIB/LIBC/GETTEXT/PLURAL-EXP.C
	$(CC_SIZE) -c -o $@ $<

OBJ/PLURAL.O : LIB/LIBC/GETTEXT/PLURAL.C
	$(CC_SIZE) -c -o $@ $<

OBJ/PRINTF-ARGS.O : LIB/LIBC/GETTEXT/PRINTF-ARGS.C
	$(CC_SIZE) -c -o $@ $<

OBJ/PRINTF-PARSE.O : LIB/LIBC/GETTEXT/PRINTF-PARSE.C
	$(CC_SIZE) -c -o $@ $<

OBJ/PRINTFG.O : LIB/LIBC/GETTEXT/PRINTFG.C
	$(CC_SIZE) -c -o $@ $<

OBJ/RELOCATABLE.O : LIB/LIBC/GETTEXT/RELOCATABLE.C
	$(CC_SIZE) -c -o $@ $<

OBJ/TEXTDOMAIN.O : LIB/LIBC/GETTEXT/TEXTDOMAIN.C
	$(CC_SIZE) -c -o $@ $<

OBJ/VASNPRINTF.O : LIB/LIBC/GETTEXT/VASNPRINTF.C
	$(CC_SIZE) -c -o $@ $<

GETTEXT_OBJ = OBJ/BINDTEXTDOM.O OBJ/DCGETTEXT.O OBJ/DCIGETTEXT.O OBJ/DCNGETTEXT.O OBJ/DGETTEXT.O OBJ/DNGETTEXT.O OBJ/EXPLODENAME.O OBJ/FINDDOMAIN.O OBJ/GETTEXT.O OBJ/L10NFLIST.O OBJ/LOADMSGCAT.O OBJ/LOCALCHARSET.O OBJ/LOCALEALIAS.O OBJ/LOCALENAME.O OBJ/LOG.O OBJ/NGETTEXT.O OBJ/OSDEP.O OBJ/PLURAL-EXP.O OBJ/PLURAL.O OBJ/PRINTF-ARGS.O OBJ/PRINTF-PARSE.O OBJ/PRINTFG.O OBJ/RELOCATABLE.O OBJ/TEXTDOMAIN.O OBJ/VASNPRINTF.O

########
# SPAD #
########

OBJ/BASENAME.O : LIB/LIBC/SPAD/BASENAME.C
	$(CC) -c -o $@ $<

OBJ/DAEMON.O : LIB/LIBC/SPAD/DAEMON.C
	$(CC_SIZE) -c -o $@ $<

OBJ/DIRNAME.O : LIB/LIBC/SPAD/DIRNAME.C
	$(CC) -c -o $@ $<

OBJ/ERROR.O : LIB/LIBC/SPAD/ERROR.C
	$(CC_SIZE) -c -o $@ $<

OBJ/FNMATCH.O : LIB/LIBC/SPAD/FNMATCH.C
	$(CC) -c -o $@ $<

OBJ/GLOB.O : LIB/LIBC/SPAD/GLOB.C
	$(CC) -c -o $@ $<

OBJ/GETDOMAINNAME.O : LIB/LIBC/SPAD/GETDOMAINNAME.C
	$(CC) -c -o $@ $<

OBJ/GETGRENT.O : LIB/LIBC/SPAD/GETGRENT.C
	$(CC) -c -o $@ $<

OBJ/GETHOSTNAME.O : LIB/LIBC/SPAD/GETHOSTNAME.C
	$(CC) -c -o $@ $<

OBJ/GETLOGIN.O : LIB/LIBC/SPAD/GETLOGIN.C
	$(CC) -c -o $@ $<

OBJ/GETPWENT.O : LIB/LIBC/SPAD/GETPWENT.C
	$(CC) -c -o $@ $<

OBJ/ICONVST.O : LIB/LIBC/SPAD/ICONVST.C
	$(CC) -c -o $@ $<

OBJ/ISATTY.O : LIB/LIBC/SPAD/ISATTY.C
	$(CC) -c -o $@ $<

OBJ/LIBCINIT.O : LIB/LIBC/SPAD/LIBCINIT.C
	$(CC) -c -o $@ $<

OBJ/MNTENT.O : LIB/LIBC/SPAD/MNTENT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/NICE.O : LIB/LIBC/SPAD/NICE.C
	$(CC_SIZE) -c -o $@ $<

OBJ/PSIGNAL.O : LIB/LIBC/SPAD/PSIGNAL.C
	$(CC) -c -o $@ $<

OBJ/PTHST.O : LIB/LIBC/SPAD/PTHST.C
	$(CC) -c -o $@ $<

OBJ/REALPATH.O : LIB/LIBC/SPAD/REALPATH.C
	$(CC) -c -o $@ $<

OBJ/SYSCONF.O : LIB/LIBC/SPAD/SYSCONF.C
	$(CC) -c -o $@ $<

OBJ/USYSLOG.O : LIB/LIBC/SPAD/USYSLOG.C
	$(CC_SIZE) -c -o $@ $<

OBJ/TTYNAME.O : LIB/LIBC/SPAD/TTYNAME.C
	$(CC) -c -o $@ $<

SPAD_OBJ = OBJ/BASENAME.O OBJ/DAEMON.O OBJ/DIRNAME.O OBJ/ERROR.O OBJ/FNMATCH.O OBJ/GLOB.O OBJ/GETDOMAINNAME.O OBJ/GETGRENT.O OBJ/GETHOSTNAME.O OBJ/GETLOGIN.O OBJ/GETPWENT.O OBJ/ICONVST.O OBJ/ISATTY.O OBJ/LIBCINIT.O OBJ/MNTENT.O OBJ/NICE.O OBJ/PSIGNAL.O OBJ/PTHST.O OBJ/REALPATH.O OBJ/SYSCONF.O OBJ/USYSLOG.O OBJ/TTYNAME.O

#######
# NET #
#######

OBJ/ADDR2ASCII.O : LIB/LIBC/NET/ADDR2ASCII.C
	$(CC) -c -o $@ $<

OBJ/ASCII2ADDR.O : LIB/LIBC/NET/ASCII2ADDR.C
	$(CC) -c -o $@ $<

OBJ/INET_ADDR.O : LIB/LIBC/NET/INET_ADDR.C
	$(CC) -c -o $@ $<

OBJ/INET_LNAOF.O : LIB/LIBC/NET/INET_LNAOF.C
	$(CC) -c -o $@ $<

OBJ/INET_MAKEADDR.O : LIB/LIBC/NET/INET_MAKEADDR.C
	$(CC) -c -o $@ $<

OBJ/INET_NETA.O : LIB/LIBC/NET/INET_NETA.C
	$(CC) -c -o $@ $<

OBJ/INET_NETOF.O : LIB/LIBC/NET/INET_NETOF.C
	$(CC) -c -o $@ $<

OBJ/INET_NETWORK.O : LIB/LIBC/NET/INET_NETWORK.C
	$(CC) -c -o $@ $<

OBJ/INET_NET_NTOP.O : LIB/LIBC/NET/INET_NET_NTOP.C
	$(CC) -c -o $@ $<

OBJ/INET_NET_PTON.O : LIB/LIBC/NET/INET_NET_PTON.C
	$(CC) -c -o $@ $<

OBJ/INET_NTOA.O : LIB/LIBC/NET/INET_NTOA.C
	$(CC) -c -o $@ $<

OBJ/INET_NTOP.O : LIB/LIBC/NET/INET_NTOP.C
	$(CC) -c -o $@ $<

OBJ/INET_PTON.O : LIB/LIBC/NET/INET_PTON.C
	$(CC) -c -o $@ $<

OBJ/NSAP_ADDR.O : LIB/LIBC/NET/NSAP_ADDR.C
	$(CC) -c -o $@ $<

OBJ/NS_NAME.O : LIB/LIBC/NET/NS_NAME.C
	$(CC_SIZE) -c -o $@ $<

OBJ/NS_NETINT.O : LIB/LIBC/NET/NS_NETINT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/NS_PARSE.O : LIB/LIBC/NET/NS_PARSE.C
	$(CC_SIZE) -c -o $@ $<

OBJ/NS_PRINT.O : LIB/LIBC/NET/NS_PRINT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/NS_TTL.O : LIB/LIBC/NET/NS_TTL.C
	$(CC_SIZE) -c -o $@ $<

OBJ/BASE64.O : LIB/LIBC/NET/BASE64.C
	$(CC) -c -o $@ $<

OBJ/RES_COMP.O : LIB/LIBC/NET/RES_COMP.C
	$(CC_SIZE) -c -o $@ $<

OBJ/RES_DATA.O : LIB/LIBC/NET/RES_DATA.C
	$(CC_SIZE) -c -o $@ $<

OBJ/RES_DEBUG.O : LIB/LIBC/NET/RES_DEBUG.C
	$(CC_SIZE) -c -o $@ $<

OBJ/RES_INIT.O : LIB/LIBC/NET/RES_INIT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/RES_MKQUERY.O : LIB/LIBC/NET/RES_MKQUERY.C
	$(CC_SIZE) -c -o $@ $<

OBJ/RES_MKUPDATE.O : LIB/LIBC/NET/RES_MKUPDATE.C
	$(CC_SIZE) -c -o $@ $<

OBJ/RES_QUERY.O : LIB/LIBC/NET/RES_QUERY.C
	$(CC_SIZE) -c -o $@ $<

OBJ/RES_SEND.O : LIB/LIBC/NET/RES_SEND.C
	$(CC_SIZE) -c -o $@ $<

OBJ/RES_UPDATE.O : LIB/LIBC/NET/RES_UPDATE.C
	$(CC_SIZE) -c -o $@ $<

OBJ/GETHOSTNAMADR.O : LIB/LIBC/NET/GETHOSTNAMADR.C
	$(CC_SIZE) -c -o $@ $<

OBJ/GETNETNAMADR.O : LIB/LIBC/NET/GETNETNAMADR.C
	$(CC_SIZE) -c -o $@ $<

OBJ/GETPROTOENT.O : LIB/LIBC/NET/GETPROTOENT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/GETSERVENT.O : LIB/LIBC/NET/GETSERVENT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/NAME6.O : LIB/LIBC/NET/NAME6.C
	$(CC_SIZE) -c -o $@ $<

OBJ/GETHOSTBYHT.O : LIB/LIBC/NET/GETHOSTBYHT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/GETNETBYHT.O : LIB/LIBC/NET/GETNETBYHT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/GETPROTONAME.O : LIB/LIBC/NET/GETPROTONAME.C
	$(CC_SIZE) -c -o $@ $<

OBJ/GETPROTO.O : LIB/LIBC/NET/GETPROTO.C
	$(CC_SIZE) -c -o $@ $<

OBJ/GETSERVBYNAME.O : LIB/LIBC/NET/GETSERVBYNAME.C
	$(CC_SIZE) -c -o $@ $<

OBJ/GETSERVBYPORT.O : LIB/LIBC/NET/GETSERVBYPORT.C
	$(CC_SIZE) -c -o $@ $<

OBJ/HERROR.O : LIB/LIBC/NET/HERROR.C
	$(CC_SIZE) -c -o $@ $<

OBJ/GETADDRINFO.O : LIB/LIBC/NET/GETADDRINFO.C
	$(CC_SIZE) -c -o $@ $<

OBJ/GETNAMEINFO.O : LIB/LIBC/NET/GETNAMEINFO.C
	$(CC_SIZE) -c -o $@ $<

OBJ/GETHOSTBYNIS.O : LIB/LIBC/NET/GETHOSTBYNIS.C
	$(CC_SIZE) -c -o $@ $<

OBJ/GETHOSTBYDNS.O : LIB/LIBC/NET/GETHOSTBYDNS.C
	$(CC_SIZE) -c -o $@ $<

OBJ/GETNETBYNIS.O : LIB/LIBC/NET/GETNETBYNIS.C
	$(CC_SIZE) -c -o $@ $<

OBJ/GETNETBYDNS.O : LIB/LIBC/NET/GETNETBYDNS.C
	$(CC_SIZE) -c -o $@ $<

OBJ/MAP_V4V6.O : LIB/LIBC/NET/MAP_V4V6.C
	$(CC_SIZE) -c -o $@ $<

LIBC_NET_OBJ = OBJ/ADDR2ASCII.O OBJ/ASCII2ADDR.O OBJ/INET_ADDR.O OBJ/INET_LNAOF.O OBJ/INET_MAKEADDR.O OBJ/INET_NETA.O OBJ/INET_NETOF.O OBJ/INET_NETWORK.O OBJ/INET_NET_NTOP.O OBJ/INET_NET_PTON.O OBJ/INET_NTOA.O OBJ/INET_NTOP.O OBJ/INET_PTON.O OBJ/NSAP_ADDR.O OBJ/NS_NAME.O OBJ/NS_NETINT.O OBJ/NS_PARSE.O OBJ/NS_PRINT.O OBJ/NS_TTL.O OBJ/BASE64.O OBJ/RES_COMP.O OBJ/RES_DATA.O OBJ/RES_DEBUG.O OBJ/RES_INIT.O OBJ/RES_MKQUERY.O OBJ/RES_MKUPDATE.O OBJ/RES_QUERY.O OBJ/RES_SEND.O OBJ/RES_UPDATE.O OBJ/GETHOSTNAMADR.O OBJ/GETNETNAMADR.O OBJ/GETPROTOENT.O OBJ/GETSERVENT.O OBJ/NAME6.O OBJ/GETHOSTBYHT.O OBJ/GETNETBYHT.O OBJ/GETPROTONAME.O OBJ/GETPROTO.O OBJ/GETSERVBYNAME.O OBJ/GETSERVBYPORT.O OBJ/HERROR.O OBJ/GETADDRINFO.O OBJ/GETNAMEINFO.O OBJ/GETHOSTBYNIS.O OBJ/GETHOSTBYDNS.O OBJ/GETNETBYNIS.O OBJ/GETNETBYDNS.O OBJ/MAP_V4V6.O

LIBC_LIBM_OBJ = OBJ/S_ISNAN.O OBJ/ISINF.O

FS/LIBC.DLL : OBJ/LINK$(HOST_EXE) $(STDIO_OBJ) $(STDLIB_OBJ) $(STRING_OBJ) $(GEN_OBJ) $(GNU_OBJ) $(GETTEXT_OBJ) $(SPAD_OBJ) $(LOCALE_OBJ) $(STDTIME_OBJ) $(NLS_OBJ) $(REGEX_OBJ) $(LIBC_NET_OBJ) $(ARCH_GEN_OBJ) $(LIBC_LIBM_OBJ)
	$^ -d INT/LIBC.INT -l INT/KERNEL.INT -m INT/CHARSET.INT -m INT/PTHREAD.INT OTHER/LIBGCC.A -o $@ -y SYM/LIBC.SYM

FS/LIBC.A : $(STDIO_OBJ) $(STDLIB_OBJ) $(STRING_OBJ) $(GEN_OBJ) $(GNU_OBJ) $(GETTEXT_OBJ) $(SPAD_OBJ) $(LOCALE_OBJ) $(STDTIME_OBJ) $(NLS_OBJ) $(REGEX_OBJ) $(LIBC_NET_OBJ) $(ARCH_GEN_OBJ) $(CHARSET_OBJ)
	ar rcs FS/LIBC.A $^

clean-libc :
	rm -f $(STDIO_OBJ) $(STDLIB_OBJ) $(STRING_OBJ) $(GEN_OBJ) $(GETTEXT_OBJ) $(SPAD_OBJ) $(LOCALE_OBJ) $(STDTIME_OBJ) $(NLS_OBJ) $(REGEX_OBJ) $(LIBC_NET_OBJ) $(DB_BTREE_OBJ) $(DB_DB_OBJ) $(DB_HASH_OBJ) $(DB_MPOOL_OBJ) $(DB_RECNO_OBJ) $(ARCH_GEN_OBJ) FS/LIBC.DLL FS/LIBC.A


OBJ/B_EXP.O : LIB/LIBM/B_EXP.C
	$(CC) -c -o $@ $<

OBJ/B_LOG.O : LIB/LIBM/B_LOG.C
	$(CC) -c -o $@ $<

OBJ/B_TGAMMA.O : LIB/LIBM/B_TGAMMA.C
	$(CC) -c -o $@ $<

OBJ/E_ACOS.O : LIB/LIBM/E_ACOS.C
	$(CC) -c -o $@ $<

OBJ/E_ACOSF.O : LIB/LIBM/E_ACOSF.C
	$(CC) -c -o $@ $<

OBJ/E_ACOSH.O : LIB/LIBM/E_ACOSH.C
	$(CC) -c -o $@ $<

OBJ/E_ACOSHF.O : LIB/LIBM/E_ACOSHF.C
	$(CC) -c -o $@ $<

OBJ/E_ASIN.O : LIB/LIBM/E_ASIN.C
	$(CC) -c -o $@ $<

OBJ/E_ASINF.O : LIB/LIBM/E_ASINF.C
	$(CC) -c -o $@ $<

OBJ/E_ATAN2.O : LIB/LIBM/E_ATAN2.C
	$(CC) -c -o $@ $<

OBJ/E_ATAN2F.O : LIB/LIBM/E_ATAN2F.C
	$(CC) -c -o $@ $<

OBJ/E_ATANH.O : LIB/LIBM/E_ATANH.C
	$(CC) -c -o $@ $<

OBJ/E_ATANHF.O : LIB/LIBM/E_ATANHF.C
	$(CC) -c -o $@ $<

OBJ/E_COSH.O : LIB/LIBM/E_COSH.C
	$(CC) -c -o $@ $<

OBJ/E_COSHF.O : LIB/LIBM/E_COSHF.C
	$(CC) -c -o $@ $<

OBJ/E_EXPF.O : LIB/LIBM/E_EXPF.C
	$(CC) -c -o $@ $<

OBJ/E_FMODF.O : LIB/LIBM/E_FMODF.C
	$(CC) -c -o $@ $<

OBJ/E_GAMMA.O : LIB/LIBM/E_GAMMA.C
	$(CC) -c -o $@ $<

OBJ/E_GAMMAF.O : LIB/LIBM/E_GAMMAF.C
	$(CC) -c -o $@ $<

OBJ/E_GAMMAF_R.O : LIB/LIBM/E_GAMMAF_R.C
	$(CC) -c -o $@ $<

OBJ/E_GAMMA_R.O : LIB/LIBM/E_GAMMA_R.C
	$(CC) -c -o $@ $<

OBJ/E_HYPOT.O : LIB/LIBM/E_HYPOT.C
	$(CC) -c -o $@ $<

OBJ/E_HYPOTF.O : LIB/LIBM/E_HYPOTF.C
	$(CC) -c -o $@ $<

OBJ/E_J0.O : LIB/LIBM/E_J0.C
	$(CC) -c -o $@ $<

OBJ/E_J0F.O : LIB/LIBM/E_J0F.C
	$(CC) -c -o $@ $<

OBJ/E_J1.O : LIB/LIBM/E_J1.C
	$(CC) -c -o $@ $<

OBJ/E_J1F.O : LIB/LIBM/E_J1F.C
	$(CC) -c -o $@ $<

OBJ/E_JN.O : LIB/LIBM/E_JN.C
	$(CC) -c -o $@ $<

OBJ/E_JNF.O : LIB/LIBM/E_JNF.C
	$(CC) -c -o $@ $<

OBJ/E_LGAMMA.O : LIB/LIBM/E_LGAMMA.C
	$(CC) -c -o $@ $<

OBJ/E_LGAMMAF.O : LIB/LIBM/E_LGAMMAF.C
	$(CC) -c -o $@ $<

OBJ/E_LGAMMAF_R.O : LIB/LIBM/E_LGAMMAF_R.C
	$(CC) -c -o $@ $<

OBJ/E_LGAMMA_R.O : LIB/LIBM/E_LGAMMA_R.C
	$(CC) -c -o $@ $<

OBJ/E_POW.O : LIB/LIBM/E_POW.C
	$(CC) -c -o $@ $<

OBJ/E_POWF.O : LIB/LIBM/E_POWF.C
	$(CC) -c -o $@ $<

OBJ/E_REM_PIO2.O : LIB/LIBM/E_REM_PIO2.C
	$(CC) -c -o $@ $<

OBJ/E_REM_PIO2F.O : LIB/LIBM/E_REM_PIO2F.C
	$(CC) -c -o $@ $<

OBJ/E_SINH.O : LIB/LIBM/E_SINH.C
	$(CC) -c -o $@ $<

OBJ/E_SINHF.O : LIB/LIBM/E_SINHF.C
	$(CC) -c -o $@ $<

OBJ/K_COS.O : LIB/LIBM/K_COS.C
	$(CC) -c -o $@ $<

OBJ/K_COSF.O : LIB/LIBM/K_COSF.C
	$(CC) -c -o $@ $<

OBJ/K_REM_PIO2.O : LIB/LIBM/K_REM_PIO2.C
	$(CC) -c -o $@ $<

OBJ/K_REM_PIO2F.O : LIB/LIBM/K_REM_PIO2F.C
	$(CC) -c -o $@ $<

OBJ/K_SIN.O : LIB/LIBM/K_SIN.C
	$(CC) -c -o $@ $<

OBJ/K_SINF.O : LIB/LIBM/K_SINF.C
	$(CC) -c -o $@ $<

OBJ/K_TAN.O : LIB/LIBM/K_TAN.C
	$(CC) -c -o $@ $<

OBJ/S_ASINH.O : LIB/LIBM/S_ASINH.C
	$(CC) -c -o $@ $<

OBJ/S_ASINHF.O : LIB/LIBM/S_ASINHF.C
	$(CC) -c -o $@ $<

OBJ/S_ATAN.O : LIB/LIBM/S_ATAN.C
	$(CC) -c -o $@ $<

OBJ/S_ATANF.O : LIB/LIBM/S_ATANF.C
	$(CC) -c -o $@ $<

OBJ/S_CBRT.O : LIB/LIBM/S_CBRT.C
	$(CC) -c -o $@ $<

OBJ/S_CBRTF.O : LIB/LIBM/S_CBRTF.C
	$(CC) -c -o $@ $<

OBJ/S_CIMAG.O : LIB/LIBM/S_CIMAG.C
	$(CC) -c -o $@ $<

OBJ/S_CIMAGF.O : LIB/LIBM/S_CIMAGF.C
	$(CC) -c -o $@ $<

OBJ/S_CIMAGL.O : LIB/LIBM/S_CIMAGL.C
	$(CC) -c -o $@ $<

OBJ/S_CONJ.O : LIB/LIBM/S_CONJ.C
	$(CC) -c -o $@ $<

OBJ/S_CONJF.O : LIB/LIBM/S_CONJF.C
	$(CC) -c -o $@ $<

OBJ/S_CONJL.O : LIB/LIBM/S_CONJL.C
	$(CC) -c -o $@ $<

OBJ/S_COSF.O : LIB/LIBM/S_COSF.C LIB/LIBM/K_SINF.C LIB/LIBM/K_COSF.C
	$(CC) -c -o $@ $<

OBJ/S_CREAL.O : LIB/LIBM/S_CREAL.C
	$(CC) -c -o $@ $<

OBJ/S_CREALF.O : LIB/LIBM/S_CREALF.C
	$(CC) -c -o $@ $<

OBJ/S_CREALL.O : LIB/LIBM/S_CREALL.C
	$(CC) -c -o $@ $<

OBJ/S_ERF.O : LIB/LIBM/S_ERF.C
	$(CC) -c -o $@ $<

OBJ/S_ERFF.O : LIB/LIBM/S_ERFF.C
	$(CC) -c -o $@ $<

OBJ/S_EXP2.O : LIB/LIBM/S_EXP2.C
	$(CC) -c -o $@ $<

OBJ/S_EXP2F.O : LIB/LIBM/S_EXP2F.C
	$(CC) -c -o $@ $<

OBJ/S_EXPM1.O : LIB/LIBM/S_EXPM1.C
	$(CC) -c -o $@ $<

OBJ/S_EXPM1F.O : LIB/LIBM/S_EXPM1F.C
	$(CC) -c -o $@ $<

OBJ/S_FABSF.O : LIB/LIBM/S_FABSF.C
	$(CC) -c -o $@ $<

OBJ/S_FABSL.O : LIB/LIBM/S_FABSL.C
	$(CC) -c -o $@ $<

OBJ/S_FDIM.O : LIB/LIBM/S_FDIM.C
	$(CC) -c -o $@ $<

OBJ/S_FINITEF.O : LIB/LIBM/S_FINITEF.C
	$(CC) -c -o $@ $<

OBJ/S_FMA.O : LIB/LIBM/S_FMA.C
	$(CC) -c -o $@ $<

OBJ/S_FMAF.O : LIB/LIBM/S_FMAF.C
	$(CC) -c -o $@ $<

OBJ/S_FMAL.O : LIB/LIBM/S_FMAL.C
	$(CC) -c -o $@ $<

OBJ/S_FMAX.O : LIB/LIBM/S_FMAX.C
	$(CC) -c -o $@ $<

OBJ/S_FMAXF.O : LIB/LIBM/S_FMAXF.C
	$(CC) -c -o $@ $<

OBJ/S_FMAXL.O : LIB/LIBM/S_FMAXL.C
	$(CC) -c -o $@ $<

OBJ/S_FMIN.O : LIB/LIBM/S_FMIN.C
	$(CC) -c -o $@ $<

OBJ/S_FMINF.O : LIB/LIBM/S_FMINF.C
	$(CC) -c -o $@ $<

OBJ/S_FMINL.O : LIB/LIBM/S_FMINL.C
	$(CC) -c -o $@ $<

OBJ/S_FREXP.O : LIB/LIBM/S_FREXP.C
	$(CC) -c -o $@ $<

OBJ/S_FREXPF.O : LIB/LIBM/S_FREXPF.C
	$(CC) -c -o $@ $<

OBJ/S_FREXPL.O : LIB/LIBM/S_FREXPL.C
	$(CC) -c -o $@ $<

OBJ/S_ILOGB.O : LIB/LIBM/S_ILOGB.C
	$(CC) -c -o $@ $<

OBJ/S_ILOGBF.O : LIB/LIBM/S_ILOGBF.C
	$(CC) -c -o $@ $<

OBJ/S_ILOGBL.O : LIB/LIBM/S_ILOGBL.C
	$(CC) -c -o $@ $<

OBJ/S_ISFINITE.O : LIB/LIBM/S_ISFINITE.C
	$(CC) -c -o $@ $<

OBJ/S_ISNAN.O : LIB/LIBM/S_ISNAN.C
	$(CC) -c -o $@ $<

OBJ/S_ISNORMAL.O : LIB/LIBM/S_ISNORMAL.C
	$(CC) -c -o $@ $<

OBJ/S_LLROUND.O : LIB/LIBM/S_LLROUND.C
	$(CC) -c -o $@ $<

OBJ/S_LLROUNDF.O : LIB/LIBM/S_LLROUNDF.C
	$(CC) -c -o $@ $<

OBJ/S_LLROUNDL.O : LIB/LIBM/S_LLROUNDL.C
	$(CC) -c -o $@ $<

OBJ/S_LOG1P.O : LIB/LIBM/S_LOG1P.C
	$(CC) -c -o $@ $<

OBJ/S_LOG1PF.O : LIB/LIBM/S_LOG1PF.C
	$(CC) -c -o $@ $<

OBJ/S_LROUND.O : LIB/LIBM/S_LROUND.C
	$(CC) -c -o $@ $<

OBJ/S_LROUNDF.O : LIB/LIBM/S_LROUNDF.C
	$(CC) -c -o $@ $<

OBJ/S_LROUNDL.O : LIB/LIBM/S_LROUNDL.C
	$(CC) -c -o $@ $<

OBJ/S_MODF.O : LIB/LIBM/S_MODF.C
	$(CC) -c -o $@ $<

OBJ/S_MODFF.O : LIB/LIBM/S_MODFF.C
	$(CC) -c -o $@ $<

OBJ/S_NEARBYINT.O : LIB/LIBM/S_NEARBYINT.C
	$(CC) -c -o $@ $<

OBJ/S_NEXTAFTER.O : LIB/LIBM/S_NEXTAFTER.C
	$(CC) -c -o $@ $<

OBJ/S_NEXTAFTERF.O : LIB/LIBM/S_NEXTAFTERF.C
	$(CC) -c -o $@ $<

OBJ/S_NEXTAFTERL.O : LIB/LIBM/S_NEXTAFTERL.C
	$(CC) -c -o $@ $<

OBJ/S_NEXTTOWARD.O : LIB/LIBM/S_NEXTTOWARD.C
	$(CC) -c -o $@ $<

OBJ/S_NEXTTOWARDF.O : LIB/LIBM/S_NEXTTOWARDF.C
	$(CC) -c -o $@ $<

OBJ/S_ROUND.O : LIB/LIBM/S_ROUND.C
	$(CC) -c -o $@ $<

OBJ/S_ROUNDF.O : LIB/LIBM/S_ROUNDF.C
	$(CC) -c -o $@ $<

OBJ/S_ROUNDL.O : LIB/LIBM/S_ROUNDL.C
	$(CC) -c -o $@ $<

OBJ/S_SCALBLN.O : LIB/LIBM/S_SCALBLN.C
	$(CC) -c -o $@ $<

OBJ/S_SIGNBIT.O : LIB/LIBM/S_SIGNBIT.C
	$(CC) -c -o $@ $<

OBJ/S_SIGNGAM.O : LIB/LIBM/S_SIGNGAM.C
	$(CC) -c -o $@ $<

OBJ/S_SINF.O : LIB/LIBM/S_SINF.C LIB/LIBM/K_SINF.C LIB/LIBM/K_COSF.C
	$(CC) -c -o $@ $<

OBJ/S_TANF.O : LIB/LIBM/S_TANF.C LIB/LIBM/K_TANF.C
	$(CC) -c -o $@ $<

OBJ/S_TANH.O : LIB/LIBM/S_TANH.C
	$(CC) -c -o $@ $<

OBJ/S_TANHF.O : LIB/LIBM/S_TANHF.C
	$(CC) -c -o $@ $<

OBJ/W_CABS.O : LIB/LIBM/W_CABS.C
	$(CC) -c -o $@ $<

OBJ/W_CABSF.O : LIB/LIBM/W_CABSF.C
	$(CC) -c -o $@ $<

OBJ/W_DREM.O : LIB/LIBM/W_DREM.C
	$(CC) -c -o $@ $<

OBJ/W_DREMF.O : LIB/LIBM/W_DREMF.C
	$(CC) -c -o $@ $<

OBJ/ISINF.O : LIB/LIBM/ISINF.C
	$(CC) -c -o $@ $<

OBJ/FPCLASSIFY.O : LIB/LIBM/FPCLASSIFY.C
	$(CC) -c -o $@ $<

LIBM_OBJ = OBJ/B_EXP.O OBJ/B_LOG.O OBJ/B_TGAMMA.O OBJ/E_ACOS.O OBJ/E_ACOSF.O OBJ/E_ACOSH.O OBJ/E_ACOSHF.O OBJ/E_ASIN.O OBJ/E_ASINF.O OBJ/E_ATAN2.O OBJ/E_ATAN2F.O OBJ/E_ATANH.O OBJ/E_ATANHF.O OBJ/E_COSH.O OBJ/E_COSHF.O OBJ/E_EXPF.O OBJ/E_FMODF.O OBJ/E_GAMMA.O OBJ/E_GAMMAF.O OBJ/E_GAMMAF_R.O OBJ/E_GAMMA_R.O OBJ/E_HYPOT.O OBJ/E_HYPOTF.O OBJ/E_J0.O OBJ/E_J0F.O OBJ/E_J1.O OBJ/E_J1F.O OBJ/E_JN.O OBJ/E_JNF.O OBJ/E_LGAMMA.O OBJ/E_LGAMMAF.O OBJ/E_LGAMMAF_R.O OBJ/E_LGAMMA_R.O OBJ/E_POW.O OBJ/E_POWF.O OBJ/E_REM_PIO2.O OBJ/E_REM_PIO2F.O OBJ/E_SINH.O OBJ/E_SINHF.O OBJ/K_COS.O OBJ/K_COSF.O OBJ/K_REM_PIO2.O OBJ/K_REM_PIO2F.O OBJ/K_SIN.O OBJ/K_SINF.O OBJ/K_TAN.O OBJ/S_ASINH.O OBJ/S_ASINHF.O OBJ/S_ATAN.O OBJ/S_ATANF.O OBJ/S_CBRT.O OBJ/S_CBRTF.O OBJ/S_CIMAG.O OBJ/S_CIMAGF.O OBJ/S_CIMAGL.O OBJ/S_CONJ.O OBJ/S_CONJF.O OBJ/S_CONJL.O OBJ/S_COSF.O OBJ/S_CREAL.O OBJ/S_CREALF.O OBJ/S_CREALL.O OBJ/S_ERF.O OBJ/S_ERFF.O OBJ/S_EXP2.O OBJ/S_EXP2F.O OBJ/S_EXPM1.O OBJ/S_EXPM1F.O OBJ/S_FABSF.O OBJ/S_FABSL.O OBJ/S_FDIM.O OBJ/S_FINITEF.O OBJ/S_FMA.O OBJ/S_FMAF.O OBJ/S_FMAL.O OBJ/S_FMAX.O OBJ/S_FMAXF.O OBJ/S_FMAXL.O OBJ/S_FMIN.O OBJ/S_FMINF.O OBJ/S_FMINL.O OBJ/S_FREXP.O OBJ/S_FREXPF.O OBJ/S_FREXPL.O OBJ/S_ILOGB.O OBJ/S_ILOGBF.O OBJ/S_ILOGBL.O OBJ/S_ISFINITE.O OBJ/S_ISNAN.O OBJ/S_ISNORMAL.O OBJ/S_LLROUND.O OBJ/S_LLROUNDF.O OBJ/S_LLROUNDL.O OBJ/S_LOG1P.O OBJ/S_LOG1PF.O OBJ/S_LROUND.O OBJ/S_LROUNDF.O OBJ/S_LROUNDL.O OBJ/S_MODF.O OBJ/S_MODFF.O OBJ/S_NEARBYINT.O OBJ/S_NEXTAFTER.O OBJ/S_NEXTAFTERF.O OBJ/S_NEXTAFTERL.O OBJ/S_NEXTTOWARD.O OBJ/S_NEXTTOWARDF.O OBJ/S_ROUND.O OBJ/S_ROUNDF.O OBJ/S_ROUNDL.O OBJ/S_SCALBLN.O OBJ/S_SIGNBIT.O OBJ/S_SIGNGAM.O OBJ/S_SINF.O OBJ/S_TANF.O OBJ/S_TANH.O OBJ/S_TANHF.O OBJ/W_CABS.O OBJ/W_CABSF.O OBJ/W_DREM.O OBJ/W_DREMF.O OBJ/ISINF.O OBJ/FPCLASSIFY.O

FS/M.DLL : OBJ/LINK$(HOST_EXE) $(ARCH_LIBM_OBJ) $(LIBM_OBJ)
	$^ -d INT/M.INT -l INT/KERNEL.INT -l INT/LIBC.INT OTHER/LIBGCC.A -o $@ -y SYM/M.SYM

FS/M.A : $(ARCH_LIBM_OBJ) $(LIBM_OBJ)
	ar rcs FS/M.A $^

clean-libm :
	rm -f $(ARCH_LIBM_OBJ) $(LIBM_OBJ) FS/M.DLL FS/M.A


OBJ/MD5C.O : LIB/MD/MD5C.C
	$(CC) -c -o $@ $<

OBJ/MD5HL.O : LIB/MD/MD5HL.C
	$(CC) -c -o $@ $<

OBJ/SHA1C.O : LIB/MD/SHA1C.C
	$(CC) -c -o $@ $<

OBJ/SHA1HL.O : LIB/MD/SHA1HL.C
	$(CC) -c -o $@ $<

OBJ/RMD160C.O : LIB/MD/RMD160C.C
	$(CC) -c -o $@ $<

OBJ/RMD160HL.O : LIB/MD/RMD160HL.C
	$(CC) -c -o $@ $<

OBJ/SHA256C.O : LIB/MD/SHA256C.C
	$(CC) -c -o $@ $<

OBJ/SHA256HL.O : LIB/MD/SHA256HL.C
	$(CC) -c -o $@ $<

MD_OBJ = OBJ/MD5C.O OBJ/MD5HL.O OBJ/SHA1C.O OBJ/SHA1HL.O OBJ/RMD160C.O OBJ/RMD160HL.O OBJ/SHA256C.O OBJ/SHA256HL.O

FS/MD.DLL : OBJ/LINK$(HOST_EXE) $(MD_OBJ)
	$^ -d INT/MD.INT -l INT/KERNEL.INT -o $@ -y SYM/MD.SYM


OBJ/PTHREAD.O : LIB/PTHREAD/PTHREAD.C
	$(CC) -c -o $@ $<

OBJ/PTHSCHED.O : LIB/PTHREAD/PTHSCHED.C
	$(CC) -c -o $@ $<

OBJ/PTHONCE.O : LIB/PTHREAD/PTHONCE.C
	$(CC) -c -o $@ $<

OBJ/PTHATTR.O : LIB/PTHREAD/PTHATTR.C
	$(CC) -c -o $@ $<

OBJ/PTHTIME.O : LIB/PTHREAD/PTHTIME.C
	$(CC) -c -o $@ $<

OBJ/PTHCOND.O : LIB/PTHREAD/PTHCOND.C
	$(CC) -c -o $@ $<

OBJ/PTHMUTEX.O : LIB/PTHREAD/PTHMUTEX.C
	$(CC) -c -o $@ $<

OBJ/PTHRWLK.O : LIB/PTHREAD/PTHRWLK.C
	$(CC) -c -o $@ $<

OBJ/PTHSPIN.O : LIB/PTHREAD/PTHSPIN.C
	$(CC) -c -o $@ $<

OBJ/PTHSPEC.O : LIB/PTHREAD/PTHSPEC.C
	$(CC) -c -o $@ $<

OBJ/PTHMISC.O : LIB/PTHREAD/PTHMISC.C
	$(CC) -c -o $@ $<

OBJ/PTHCAN.O : LIB/PTHREAD/PTHCAN.C
	$(CC) -c -o $@ $<

PTHREAD_OBJ = OBJ/PTHREAD.O OBJ/PTHSCHED.O OBJ/PTHONCE.O OBJ/PTHATTR.O OBJ/PTHTIME.O OBJ/PTHCOND.O OBJ/PTHMUTEX.O OBJ/PTHRWLK.O OBJ/PTHSPIN.O OBJ/PTHSPEC.O OBJ/PTHMISC.O OBJ/PTHCAN.O

FS/PTHREAD.DLL : OBJ/LINK$(HOST_EXE) $(PTHREAD_OBJ)
	$^ -d INT/PTHREAD.INT -l INT/KERNEL.INT -o $@ -y SYM/PTHREAD.SYM

clean-pthread :
	rm -f $(PTHREAD_OBJ) FS/PTHREAD.DLL


OBJ/SLINK.O : PRG/LINK/LINK.C ARCH/$(ARCH)/TOOLS/LINKA.I
	$(CC) -DLINK $(INCLUDE_SPECIAL) -c -o $@ $<

FS/LINK.EXE : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/SLINK.O
	$^ -l INT/KERNEL.INT -l INT/LIBC.INT -l INT/MD.INT OTHER/LIBGCC.A -LOTHER -lbfd -liberty -o $@ -y SYM/LINK.SYM


OBJ/SESSION.O : PRG/SESSION/SESSION.C
	$(CC) -c -o $@ $<

FS/SESSION.EXE : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/SESSION.O
	$^ -share -l INT/KERNEL.INT -l INT/SHELL.INT -o $@ -y SYM/SESSION.SYM


OBJ/TELNETD.O : PRG/TELNETD/TELNETD.C
	$(CC_SIZE) -c -o $@ $<

FS/TELNETD.EXE : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/TELNETD.O
	$^ -l INT/KERNEL.INT -l INT/LIBC.INT -o $@ -y SYM/TELNETD.SYM


OBJ/SSHD.O : PRG/SSHD/SSHD.C
	$(CC) $(INCLUDE_SPECIAL) -c -o $@ $<

OBJ/SSHDBN.O : PRG/SSHD/SSHDBN.C
	$(CC) $(INCLUDE_SPECIAL) -c -o $@ $<

OBJ/SSHDPKT.O : PRG/SSHD/SSHDPKT.C
	$(CC) $(INCLUDE_SPECIAL) -c -o $@ $<

OBJ/SSHDKEX.O : PRG/SSHD/SSHDKEX.C
	$(CC) $(INCLUDE_SPECIAL) -c -o $@ $<

OBJ/SSHDPUB.O : PRG/SSHD/SSHDPUB.C
	$(CC) $(INCLUDE_SPECIAL) -c -o $@ $<

OBJ/SSHDSKEY.O : PRG/SSHD/SSHDSKEY.C
	$(CC) $(INCLUDE_SPECIAL) -c -o $@ $<

OBJ/SSHDCIPH.O : PRG/SSHD/SSHDCIPH.C
	$(CC) $(INCLUDE_SPECIAL) -c -o $@ $<

OBJ/SSHDMAC.O : PRG/SSHD/SSHDMAC.C
	$(CC) $(INCLUDE_SPECIAL) -c -o $@ $<

OBJ/SSHDCMPR.O : PRG/SSHD/SSHDCMPR.C
	$(CC) $(INCLUDE_SPECIAL) -c -o $@ $<

OBJ/SSHDAUTH.O : PRG/SSHD/SSHDAUTH.C
	$(CC) $(INCLUDE_SPECIAL) -c -o $@ $<

OBJ/SSHDTTY.O : PRG/SSHD/SSHDTTY.C
	$(CC) $(INCLUDE_SPECIAL) -c -o $@ $<

SSHD_OBJ = OBJ/SSHD.O OBJ/SSHDBN.O OBJ/SSHDPKT.O OBJ/SSHDKEX.O OBJ/SSHDPUB.O OBJ/SSHDSKEY.O OBJ/SSHDCIPH.O OBJ/SSHDMAC.O OBJ/SSHDCMPR.O OBJ/SSHDAUTH.O OBJ/SSHDTTY.O

FS/SSHD.EXE : OBJ/LINK$(HOST_EXE) FS/CRT0.O $(SSHD_OBJ)
	$^ -l INT/KERNEL.INT -l INT/LIBC.INT -l OTHER/CRYPTO.INT -o $@ -y SYM/SSHD.SYM

OBJ/SSHAUTH.O : PRG/SSHD/SSHAUTH.C
	$(CC) $(INCLUDE_SPECIAL) -c -o $@ $<

FS/SSHAUTH.EXE : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/SSHAUTH.O OBJ/SSHDBN.O OBJ/SSHDPUB.O
	$^ -l INT/KERNEL.INT -l INT/LIBC.INT -l OTHER/CRYPTO.INT -o $@ -y SYM/SSHAUTH.SYM

clean-sshd :
	rm -f $(SSHD_OBJ) FS/SSHD.EXE OBJ/SSHAUTH.O FS/SSHAUTH.EXE


OBJ/IO.O : PRG/UTILS/IO.C
	$(CC_SIZE) -c -o $@ $<

FS/IO.EXE : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/IO.O
	$^ -l INT/KERNEL.INT -l INT/CMOS.INT -m INT/PCI.INT -o $@ -y SYM/IO.SYM

FS/PCI.IDS : LIB/PCI/PCI.IDS
	$(CP) $< $@

OBJ/PCIID.O : LIB/PCI/PCIID.C
	$(CC_SIZE) -c -o $@ $<

FS/PCIID.DLL : OBJ/LINK$(HOST_EXE) OBJ/PCIID.O
	$^ -d INT/PCIID.INT -l INT/KERNEL.INT -o $@ -y SYM/PCIID.SYM

OBJ/LSPCI.O : PRG/UTILS/LSPCI.C
	$(CC_SIZE) -c -o $@ $<

FS/LSPCI.EXE : OBJ/LINK$(HOST_EXE) FS/CRT0.O OBJ/LSPCI.O
	$^ -l INT/KERNEL.INT -l INT/PCI.INT -l INT/PCIID.INT -o $@ -y SYM/LSPCI.SYM


clean : 
ifeq ($(OS),unix)
	rm -f FS/* OBJ/* SYM/*
else
	rm -f FS/* OBJ/*.* SYM/*
endif

distclean : clean
	rm -rf OBJ/* OTHER/*.A
	sh -c "cd DOC; make clean"

