From 7dc4f77a8a57f64fa1a417e8dfbd912234cc5448 Mon Sep 17 00:00:00 2001 From: Julian Barathieu Date: Wed, 2 Jan 2019 16:27:12 +0100 Subject: [PATCH] Evil stuff --- src/Makefile | 134 +++++-------------------------------- src/Makefile.in | 107 ++++++++++++++++++++++++++++++ src/idttool.py | 14 ++++ src/kaleid/Makefile.old | 142 ++++++++++++++++++++++++++++++++++++++++ src/preproc.h | 33 ++++++++++ 5 files changed, 311 insertions(+), 119 deletions(-) create mode 100644 src/Makefile.in create mode 100644 src/idttool.py create mode 100644 src/kaleid/Makefile.old create mode 100644 src/preproc.h diff --git a/src/Makefile b/src/Makefile index e87a049..5a4d5c5 100644 --- a/src/Makefile +++ b/src/Makefile @@ -7,125 +7,21 @@ # Desc: Project Makefile # #----------------------------------------------------------------------------# -CCNAME="/opt/cross-cc/bin/x86_64-elf-gcc" -CC2NAME=gcc -COPTIM=-O2 -CLDSCR=-T kernel.ld -CWARNS=-pedantic -Wall -Wextra -Werror -CINCLUDES=-isystem./kaleid/include -CDEFINES= +kernel: + cpp ./Makefile.in > Makefile.out + python ./idttool.py + make kernel -f Makefile.out.2 + rm Makefile.out Makefile.out.2 -CFLAGS1=-nostdlib -ffreestanding -mcmodel=large -CFLAGS2=-mno-red-zone -mno-mmx -mno-sse -mno-sse2 -CFLAGS=$(CFLAGS1) $(CFLAGS2) +kernel-asm: + cpp -D_TO_ASM ./Makefile.in > Makefile.out + python ./idttool.py + make kernel -f Makefile.out.2 + rm Makefile.out Makefile.out.2 -CC=$(CCNAME) $(COPTIM) $(CWARNS) $(CFLAGS) $(CDEFINES) $(CINCLUDES) -KCC=$(CC) -D_OSK_SOURCE -D_KALEID_KERNEL - -ASM=nasm -ASMFLAGS= -BOOTFLAGS=-f bin - -BINDIR=../bin -OBJDIR=../obj - -BOOTDIR=boot -COMMDIR=kaleid/common -KERNDIR=kaleid/kernel -SYSTDIR=kaleid/system -LINXDIR=kaleid/common/test -INCDIR=kaleid/include - -all: bootloader kernel - -boot.mbr.s: $(BOOTDIR)/mbr.s $(BOOTDIR)/mbr.inc - $(ASM) $(BOOTFLAGS) $(BOOTDIR)/mbr.s -o $(OBJDIR)/boot/mbr.bin - -boot.loader.s: $(BOOTDIR)/loader.s - $(ASM) $(BOOTFLAGS) $(BOOTDIR)/loader.s -o $(OBJDIR)/boot/loader.bin - -bootloader: boot.mbr.s boot.loader.s - cp $(OBJDIR)/boot/mbr.bin $(BINDIR)/mbr.bin - cp $(OBJDIR)/boot/loader.bin $(BINDIR)/loader.bin - -#----------------------------------------------------------------------------# -# TESTING MAKEFILE - -pseudo_kern: - $(ASM) $(BOOTFLAGS) $(BOOTDIR)/pseudo_kernel.s -o $(OBJDIR)/boot/pkernel.bin - -testing: bootloader pseudo_kern - cat $(BINDIR)/bootloader.bin $(OBJDIR)/boot/pkernel.bin > $(BINDIR)/boot.bin - -#----------------------------------------------------------------------------# -# COMMON MAKEFILE - -COBJDIR=$(OBJDIR)/$(COMMDIR) -LOBJDIR=$(OBJDIR)/$(LINXDIR) - -#COMMDEPS=$(COMMDIR)/common.h $(COMMDIR)/stdlib.h $(KERNDIR)/config.h -COMMDEPS=$(INCDIR)/kaleid.h $(INCDIR)/kaldefs.h $(INCDIR)/kaltypes.h \ - $(INCDIR)/kalmask.h $(INCDIR)/kalmask.h $(INCDIR)/kalassrt.h - -COMMSRCS=$(COMMDIR)/string.c $(COMMDIR)/status.c $(COMMDIR)/rand.c \ - $(COMMDIR)/convert.c $(COMMDIR)/memory.c $(COMMDIR)/arith.c - -COMMOBJS=$(COBJDIR)/string.o $(COBJDIR)/status.o $(COBJDIR)/rand.o \ - $(COBJDIR)/memory.o $(COBJDIR)/arith.o \ - $(COBJDIR)/itoa.o $(COBJDIR)/ltoa.o $(COBJDIR)/utoa.o $(COBJDIR)/ultoa.o - -comm-convert: - $(KCC) -c $(COMMDIR)/convert.c -D_NEED_ITOA -o $(COBJDIR)/itoa.o - $(KCC) -c $(COMMDIR)/convert.c -D_NEED_LTOA -o $(COBJDIR)/ltoa.o - $(KCC) -c $(COMMDIR)/convert.c -D_NEED_UTOA -o $(COBJDIR)/utoa.o - $(KCC) -c $(COMMDIR)/convert.c -D_NEED_ULTOA -o $(COBJDIR)/ultoa.o - -common: $(COMMDEPS) $(COMMSRCS) comm-convert - $(KCC) -c $(COMMDIR)/rand.c -o $(COBJDIR)/rand.o - $(KCC) -c $(COMMDIR)/arith.c -o $(COBJDIR)/arith.o - $(KCC) -c $(COMMDIR)/string.c -o $(COBJDIR)/string.o - $(KCC) -c $(COMMDIR)/status.c -o $(COBJDIR)/status.o - $(KCC) -c $(COMMDIR)/memory.c -o $(COBJDIR)/memory.o - -CCC=$(CC2NAME) $(COPTIM) $(CWARNS) $(CINCLUDES) - -tests-comm-convert: - $(CCC) -c $(COMMDIR)/convert.c -D_NEED_ITOA -o $(COBJDIR)/itoa.o - $(CCC) -c $(COMMDIR)/convert.c -D_NEED_LTOA -o $(COBJDIR)/ltoa.o - $(CCC) -c $(COMMDIR)/convert.c -D_NEED_UTOA -o $(COBJDIR)/utoa.o - $(CCC) -c $(COMMDIR)/convert.c -D_NEED_ULTOA -o $(COBJDIR)/ultoa.o - -tests: $(COMMSRCS) tests-comm-convert - $(CCC) -c $(COMMDIR)/rand.c -o $(COBJDIR)/rand.o - $(CCC) -c $(COMMDIR)/arith.c -o $(COBJDIR)/arith.o - $(CCC) -c $(COMMDIR)/string.c -o $(COBJDIR)/string.o - $(CCC) -c $(COMMDIR)/status.c -o $(COBJDIR)/status.o - $(CCC) -c $(COMMDIR)/memory.c -o $(COBJDIR)/memory.o - $(CCC) -c $(LINXDIR)/test-common.c -o $(LOBJDIR)/test-common.o - $(CCC) $(COMMOBJS) $(LOBJDIR)/test-common.o -o $(BINDIR)/kaleid-common.elf - -#----------------------------------------------------------------------------# -# KERNEL MAKEFILE - -KOBJDIR=$(OBJDIR)/$(KERNDIR) - -KERNDEPS=common $(KERNDIR)/init.h $(KERNDIR)/io/terminal.h $(KERNDIR)/ke/lock.h \ - $(KERNDIR)/io/ports.h $(KERNDIR)/ke/panic.h $(KERNDIR)/ke/state.h - -KERNSRCS=$(KERNDIR)/init.c $(KERNDIR)/io/terminal.c $(KERNDIR)/ke/lock.c \ - $(KERNDIR)/io/ports.c $(KERNDIR)/ke/panic.c $(KERNDIR)/ke/state.c - -KERNOBJS=$(KOBJDIR)/init.o $(KOBJDIR)/io/terminal.o $(KOBJDIR)/ke/lock.o \ - $(KOBJDIR)/io/ports.o $(KOBJDIR)/ke/panic.o $(KOBJDIR)/ke/state.o - -kernel: common $(KERNSRCS) - $(KCC) -c $(KERNDIR)/init.c -o $(KOBJDIR)/init.o - $(KCC) -c $(KERNDIR)/ke/lock.c -o $(KOBJDIR)/ke/lock.o - $(KCC) -c $(KERNDIR)/ke/state.c -o $(KOBJDIR)/ke/state.o - $(KCC) -c $(KERNDIR)/ke/panic.c -o $(KOBJDIR)/ke/panic.o - $(KCC) -c $(KERNDIR)/io/ports.c -o $(KOBJDIR)/io/ports.o - $(KCC) -c $(KERNDIR)/io/terminal.c -o $(KOBJDIR)/io/terminal.o - $(KCC) $(CLDSCR) $(COMMOBJS) $(KERNOBJS) -o $(BINDIR)/kaleid-kernel.elf - -#----------------------------------------------------------------------------# +tests: + cpp -D_TESTS ./Makefile.in > Makefile.out + python ./idttool.py + make tests -f Makefile.out.2 + rm Makefile.out Makefile.out.2 diff --git a/src/Makefile.in b/src/Makefile.in new file mode 100644 index 0000000..12bdd68 --- /dev/null +++ b/src/Makefile.in @@ -0,0 +1,107 @@ +//----------------------------------------------------------------------------# +// GNU GPL OS/K # +// # +// Authors: spectral` # +// NeoX # +// # +// Desc: Project Makefile # +//----------------------------------------------------------------------------# + +// The madman's Makefile +#include "preproc.h" + +CCNAME="/opt/cross-cc/bin/x86_64-elf-gcc" +CC2NAME=gcc +COPTIM=-O2 +CLDSCR=-T kernel.ld +CWARNS=-pedantic -Wall -Wextra -Werror +CINCLUDES=-isystem./kaleid/include +CDEFINES= + +CFLAGS1=-nostdlib -ffreestanding -mcmodel=large +CFLAGS2=-mno-red-zone -mno-mmx -mno-sse -mno-sse2 +CFLAGS=$(CFLAGS1) $(CFLAGS2) $(SFLAG) + +CC=$(CCNAME) $(COPTIM) $(CWARNS) $(CFLAGS) $(CDEFINES) $(CINCLUDES) + +ASM=nasm +ASMFLAGS= +BOOTFLAGS=-f bin + +BINDIR=../bin +OBJDIR=../obj + +BOOTDIR=boot +COMMDIR=kaleid/common +KERNDIR=kaleid/kernel +SYSTDIR=kaleid/system +LINXDIR=kaleid/common/test +INCDIR=kaleid/include + +all: bootloader kernel + +boot.mbr.s: $(BOOTDIR)/mbr.s $(BOOTDIR)/mbr.inc + $(ASM) $(BOOTFLAGS) $(BOOTDIR)/mbr.s -o $(OBJDIR)/boot/mbr.bin + +boot.loader.s: $(BOOTDIR)/loader.s + $(ASM) $(BOOTFLAGS) $(BOOTDIR)/loader.s -o $(OBJDIR)/boot/loader.bin + +bootloader: boot.mbr.s boot.loader.s + cp $(OBJDIR)/boot/mbr.bin $(BINDIR)/mbr.bin + cp $(OBJDIR)/boot/loader.bin $(BINDIR)/loader.bin + +//----------------------------------------------------------------------------# +// TESTING MAKEFILE + +pseudo_kern: + $(ASM) $(BOOTFLAGS) $(BOOTDIR)/pseudo_kernel.s -o $(OBJDIR)/boot/pkernel.bin + +testing: bootloader pseudo_kern + cat $(BINDIR)/bootloader.bin $(OBJDIR)/boot/pkernel.bin > $(BINDIR)/boot.bin + +//----------------------------------------------------------------------------# +// COMMON MAKEFILE + +COBJDIR=$(OBJDIR)/$(COMMDIR) +LOBJDIR=$(OBJDIR)/$(LINXDIR) + +COMMOBJS=COBJ5(string,status,rand,memory,arith) COBJ4(itoa,ltoa,utoa,ultoa) + +TCC=$(CC2NAME) $(COPTIM) $(CWARNS) $(CINCLUDES) +KCC=$(CC) -D_OSK_SOURCE -D_KALEID_KERNEL + +comm-convert: + COMPILE_CONVRT(itoa) -D_NEED_ITOA + COMPILE_CONVRT(ltoa) -D_NEED_LTOA + COMPILE_CONVRT(utoa) -D_NEED_UTOA + COMPILE_CONVRT(ultoa) -D_NEED_ULTOA + +common: comm-convert + COMPILE_COMMON(rand) + COMPILE_COMMON(arith) + COMPILE_COMMON(string) + COMPILE_COMMON(status) + COMPILE_COMMON(memory) + +tests: common + $(TCC) -c $(LINXDIR)/test-common.c -o $(LOBJDIR)/test-common.o + $(TCC) $(COMMOBJS) $(LOBJDIR)/test-common.o -o $(BINDIR)/kaleid-common.elf + +//----------------------------------------------------------------------------# +// KERNEL MAKEFILE + +KOBJDIR=$(OBJDIR)/$(KERNDIR) + +KERNOBJS=KOBJ5(init,ke/lock,ke/panic,ke/state,io/ports) KOBJ1(io/terminal) + +kernel: common + COMPILE_KERNEL(init) + COMPILE_KERNEL(ke/lock) + COMPILE_KERNEL(ke/state) + COMPILE_KERNEL(ke/panic) + COMPILE_KERNEL(io/ports) + COMPILE_KERNEL(io/terminal) + LINK_KERNEL(kaleid-kernel.elf) + +//----------------------------------------------------------------------------# + diff --git a/src/idttool.py b/src/idttool.py new file mode 100644 index 0000000..90dfa0e --- /dev/null +++ b/src/idttool.py @@ -0,0 +1,14 @@ +# don't mind this file + +f1 = open("Makefile.out", "r+") +f2 = open("Makefile.out.2", "w+") + +fl = f1.readlines() +for ln in fl: + if ln[0] == ' ' and ln[1] != ' ': + f2.write('\t') + f2.write(ln) + +f1.close() +f2.close() + diff --git a/src/kaleid/Makefile.old b/src/kaleid/Makefile.old new file mode 100644 index 0000000..d3ce7ff --- /dev/null +++ b/src/kaleid/Makefile.old @@ -0,0 +1,142 @@ +#----------------------------------------------------------------------------# +# GNU GPL OS/K # +# # +# Authors: spectral` # +# NeoX # +# # +# Desc: Project Makefile # +#----------------------------------------------------------------------------# + +CCNAME="/opt/cross-cc/bin/x86_64-elf-gcc" +CC2NAME=gcc +COPTIM=-O2 +CLDSCR=-T kernel.ld +CWARNS=-pedantic -Wall -Wextra -Werror +CINCLUDES=-isystem./kaleid/include +CDEFINES= + +# set to -S to produce assembly +# (will be stored in the .o) +# (will also generate errors, but don't mind them) +SFLAG=-S + +CFLAGS1=-nostdlib -ffreestanding -mcmodel=large +CFLAGS2=-mno-red-zone -mno-mmx -mno-sse -mno-sse2 +CFLAGS=$(CFLAGS1) $(CFLAGS2) $(SFLAG) + +CC=$(CCNAME) $(COPTIM) $(CWARNS) $(CFLAGS) $(CDEFINES) $(CINCLUDES) +KCC=$(CC) -D_OSK_SOURCE -D_KALEID_KERNEL + +ASM=nasm +ASMFLAGS= +BOOTFLAGS=-f bin + +BINDIR=../bin +OBJDIR=../obj + +BOOTDIR=boot +COMMDIR=kaleid/common +KERNDIR=kaleid/kernel +SYSTDIR=kaleid/system +LINXDIR=kaleid/common/test +INCDIR=kaleid/include + +all: bootloader kernel + +boot.mbr.s: $(BOOTDIR)/mbr.s $(BOOTDIR)/mbr.inc + $(ASM) $(BOOTFLAGS) $(BOOTDIR)/mbr.s -o $(OBJDIR)/boot/mbr.bin + +boot.loader.s: $(BOOTDIR)/loader.s + $(ASM) $(BOOTFLAGS) $(BOOTDIR)/loader.s -o $(OBJDIR)/boot/loader.bin + +bootloader: boot.mbr.s boot.loader.s + cp $(OBJDIR)/boot/mbr.bin $(BINDIR)/mbr.bin + cp $(OBJDIR)/boot/loader.bin $(BINDIR)/loader.bin + +#----------------------------------------------------------------------------# +# TESTING MAKEFILE + +pseudo_kern: + $(ASM) $(BOOTFLAGS) $(BOOTDIR)/pseudo_kernel.s -o $(OBJDIR)/boot/pkernel.bin + +testing: bootloader pseudo_kern + cat $(BINDIR)/bootloader.bin $(OBJDIR)/boot/pkernel.bin > $(BINDIR)/boot.bin + +#----------------------------------------------------------------------------# +# COMMON MAKEFILE + +COBJDIR=$(OBJDIR)/$(COMMDIR) +LOBJDIR=$(OBJDIR)/$(LINXDIR) + +#COMMDEPS=$(COMMDIR)/common.h $(COMMDIR)/stdlib.h $(KERNDIR)/config.h +COMMDEPS=$(INCDIR)/kaleid.h $(INCDIR)/kaldefs.h $(INCDIR)/kaltypes.h \ + $(INCDIR)/kalmask.h $(INCDIR)/kalmask.h $(INCDIR)/kalassrt.h + +COMMSRCS=$(COMMDIR)/string.c $(COMMDIR)/status.c $(COMMDIR)/rand.c \ + $(COMMDIR)/convert.c $(COMMDIR)/memory.c $(COMMDIR)/arith.c + +COMMOBJS=$(COBJDIR)/string.o $(COBJDIR)/status.o $(COBJDIR)/rand.o \ + $(COBJDIR)/memory.o $(COBJDIR)/arith.o \ + $(COBJDIR)/itoa.o $(COBJDIR)/ltoa.o $(COBJDIR)/utoa.o $(COBJDIR)/ultoa.o + +comm-convert: + $(KCC) -c $(COMMDIR)/convert.c -D_NEED_ITOA -o $(COBJDIR)/itoa.o + $(KCC) -c $(COMMDIR)/convert.c -D_NEED_LTOA -o $(COBJDIR)/ltoa.o + $(KCC) -c $(COMMDIR)/convert.c -D_NEED_UTOA -o $(COBJDIR)/utoa.o + $(KCC) -c $(COMMDIR)/convert.c -D_NEED_ULTOA -o $(COBJDIR)/ultoa.o + +common: $(COMMDEPS) $(COMMSRCS) comm-convert + $(KCC) -c $(COMMDIR)/rand.c -o $(COBJDIR)/rand.o + $(KCC) -c $(COMMDIR)/arith.c -o $(COBJDIR)/arith.o + $(KCC) -c $(COMMDIR)/string.c -o $(COBJDIR)/string.o + $(KCC) -c $(COMMDIR)/status.c -o $(COBJDIR)/status.o + $(KCC) -c $(COMMDIR)/memory.c -o $(COBJDIR)/memory.o + +CCC=$(CC2NAME) $(COPTIM) $(CWARNS) $(CINCLUDES) + +tests-comm-convert: + $(CCC) -c $(COMMDIR)/convert.c -D_NEED_ITOA -o $(COBJDIR)/itoa.o + $(CCC) -c $(COMMDIR)/convert.c -D_NEED_LTOA -o $(COBJDIR)/ltoa.o + $(CCC) -c $(COMMDIR)/convert.c -D_NEED_UTOA -o $(COBJDIR)/utoa.o + $(CCC) -c $(COMMDIR)/convert.c -D_NEED_ULTOA -o $(COBJDIR)/ultoa.o + +tests: $(COMMSRCS) tests-comm-convert + $(CCC) -c $(COMMDIR)/rand.c -o $(COBJDIR)/rand.o + $(CCC) -c $(COMMDIR)/arith.c -o $(COBJDIR)/arith.o + $(CCC) -c $(COMMDIR)/string.c -o $(COBJDIR)/string.o + $(CCC) -c $(COMMDIR)/status.c -o $(COBJDIR)/status.o + $(CCC) -c $(COMMDIR)/memory.c -o $(COBJDIR)/memory.o + $(CCC) -c $(LINXDIR)/test-common.c -o $(LOBJDIR)/test-common.o + $(CCC) $(COMMOBJS) $(LOBJDIR)/test-common.o -o $(BINDIR)/kaleid-common.elf + +#----------------------------------------------------------------------------# +# KERNEL MAKEFILE + +KOBJDIR=$(OBJDIR)/$(KERNDIR) + +KERNDEPS=common $(KERNDIR)/init.h $(KERNDIR)/io/terminal.h $(KERNDIR)/ke/lock.h \ + $(KERNDIR)/io/ports.h $(KERNDIR)/ke/panic.h $(KERNDIR)/ke/state.h + +KERNSRCS=$(KERNDIR)/init.c $(KERNDIR)/io/terminal.c $(KERNDIR)/ke/lock.c \ + $(KERNDIR)/io/ports.c $(KERNDIR)/ke/panic.c $(KERNDIR)/ke/state.c + +KERNOBJS=$(KOBJDIR)/init.o $(KOBJDIR)/io/terminal.o $(KOBJDIR)/ke/lock.o \ + $(KOBJDIR)/io/ports.o $(KOBJDIR)/ke/panic.o $(KOBJDIR)/ke/state.o + +kernel: common $(KERNSRCS) + $(KCC) -c $(KERNDIR)/init.c -o $(KOBJDIR)/init.o + $(KCC) -c $(KERNDIR)/ke/lock.c -o $(KOBJDIR)/ke/lock.o + $(KCC) -c $(KERNDIR)/ke/state.c -o $(KOBJDIR)/ke/state.o + $(KCC) -c $(KERNDIR)/ke/panic.c -o $(KOBJDIR)/ke/panic.o + $(KCC) -c $(KERNDIR)/io/ports.c -o $(KOBJDIR)/io/ports.o + $(KCC) -c $(KERNDIR)/io/terminal.c -o $(KOBJDIR)/io/terminal.o + $(KCC) $(CLDSCR) $(COMMOBJS) $(KERNOBJS) -o $(BINDIR)/kaleid-kernel.elf + +#----------------------------------------------------------------------------# + +.PHONY: clean + +clean: + +#----------------------------------------------------------------------------# + diff --git a/src/preproc.h b/src/preproc.h new file mode 100644 index 0000000..265f9ee --- /dev/null +++ b/src/preproc.h @@ -0,0 +1,33 @@ +// be careful with this file + +#ifdef _TESTS +# define CCC TCC +#else +# define CCC KCC +#endif + +#ifdef _TO_ASM +# define _CSPREF -S +# define _OUTFIX S +# define LINK_KERNEL(out) +#else +# define _CSPREF -c +# define _OUTFIX o +# define LINK_KERNEL(out) $(KCC) $(CLDSCR) $(COMMOBJS) $(KERNOBJS) -o $(BINDIR)/out +#endif + +#define COMPILE_CONVRT(file) $(CCC) _CSPREF $(COMMDIR)/convert.c -o $(COBJDIR)/file._OUTFIX +#define COMPILE_COMMON(file) $(CCC) _CSPREF $(COMMDIR)/file.c -o $(COBJDIR)/file._OUTFIX +#define COMPILE_KERNEL(file) $(KCC) _CSPREF $(KERNDIR)/file.c -o $(KOBJDIR)/file._OUTFIX + +#define COBJ1(x1) $(COBJDIR)/x1.o +#define COBJ2(x1,x2) $(COBJDIR)/x1.o $(COBJDIR)/x2.o +#define COBJ3(x1,x2,x3) $(COBJDIR)/x1.o $(COBJDIR)/x2.o $(COBJDIR)/x3 +#define COBJ4(x1,x2,x3,x4) $(COBJDIR)/x1.o $(COBJDIR)/x2.o $(COBJDIR)/x3.o $(COBJDIR)/x4.o +#define COBJ5(x1,x2,x3,x4,x5) $(COBJDIR)/x1.o $(COBJDIR)/x2.o $(COBJDIR)/x3.o $(COBJDIR)/x4.o $(COBJDIR)/x5.o + +#define KOBJ1(x1) $(KOBJDIR)/x1.o +#define KOBJ2(x1,x2) $(KOBJDIR)/x1.o $(KOBJDIR)/x2.o +#define KOBJ3(x1,x2,x3) $(KOBJDIR)/x1.o $(KOBJDIR)/x2.o $(KOBJDIR)/x3 +#define KOBJ4(x1,x2,x3,x4) $(KOBJDIR)/x1.o $(KOBJDIR)/x2.o $(KOBJDIR)/x3.o $(KOBJDIR)/x4.o +#define KOBJ5(x1,x2,x3,x4,x5) $(KOBJDIR)/x1.o $(KOBJDIR)/x2.o $(KOBJDIR)/x3.o $(KOBJDIR)/x4.o $(KOBJDIR)/x5.o