diff options
-rw-r--r-- | config.mk | 26 | ||||
-rw-r--r-- | img/.gitignore | 0 | ||||
-rw-r--r-- | makefile | 24 | ||||
-rw-r--r-- | obj/.gitignore | 0 | ||||
-rw-r--r-- | src/kernel.ld (renamed from kernel.ld) | 0 | ||||
-rw-r--r-- | src/kernel/kernel.C (renamed from kernel.C) | 0 | ||||
-rw-r--r-- | src/kernel/makefile | 10 | ||||
-rw-r--r-- | src/kernel/start.S (renamed from start.S) | 0 | ||||
-rw-r--r-- | src/makefile | 13 |
9 files changed, 53 insertions, 20 deletions
diff --git a/config.mk b/config.mk new file mode 100644 index 000000000..dac4204d8 --- /dev/null +++ b/config.mk @@ -0,0 +1,26 @@ +CC = powerpc64-unknown-linux-gnu-gcc +CXX = powerpc64-unknown-linux-gnu-g++ +LD = powerpc64-unknown-linux-gnu-ld + +COMMONFLAGS = -O3 -nostdlib +CFLAGS = ${COMMONFLAGS} -mcpu=620 -fno-rtti -fno-exceptions +CXXFLAGS = ${CFLAGS} +LDFLAGS = -static ${COMMONFLAGS} + +${OBJDIR}/%.o : %.C + ${CXX} -c ${CXXFLAGS} $< -o $@ + +${OBJDIR}/%.o : %.S + ${CC} -c ${CFLAGS} $< -o $@ + +${IMGDIR}/%.elf: kernel.ld + ${LD} ${LDFLAGS} ${OBJDIR}/*.o -T kernel.ld -o $@ + +${IMGDIR}/%.bin: kernel.ld + ${LD} ${LDFLAGS} ${OBJDIR}/*.o --oformat=binary -T kernel.ld -o $@ + +%.d: + cd ${basename $@} && ${MAKE} + +%.clean: + cd ${basename $@} && ${MAKE} clean diff --git a/img/.gitignore b/img/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/img/.gitignore @@ -1,21 +1,5 @@ -CC = powerpc64-unknown-linux-gnu-gcc -CXX = powerpc64-unknown-linux-gnu-g++ -LD = powerpc64-unknown-linux-gnu-ld +SUBDIRS = src.d +include ./config.mk -COMMONFLAGS = -O3 -nostdlib -CFLAGS = ${COMMONFLAGS} -mcpu=620 -fno-rtti -fno-exceptions -CXXFLAGS = ${CFLAGS} -LDFLAGS = -static ${COMMONFLAGS} - -OBJECTS = start.o kernel.o - -all: kernel.elf kernel.bin - -kernel.elf: ${OBJECTS} kernel.ld - ${LD} ${LDFLAGS} ${OBJECTS} -T kernel.ld -o kernel.elf - -kernel.bin: ${OBJECTS} kernel.ld - ${LD} ${LDFLAGS} ${OBJECTS} --oformat=binary -T kernel.ld -o kernel.bin - -clean: - (rm -f ${OBJECTS} kernel.elf kernel.bin) +all: ${SUBDIRS} +clean: $(patsubst %.d,%.clean, ${SUBDIRS}) diff --git a/obj/.gitignore b/obj/.gitignore new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/obj/.gitignore diff --git a/kernel.ld b/src/kernel.ld index 0f44adb34..0f44adb34 100644 --- a/kernel.ld +++ b/src/kernel.ld diff --git a/kernel.C b/src/kernel/kernel.C index 2ea0d2fbc..2ea0d2fbc 100644 --- a/kernel.C +++ b/src/kernel/kernel.C diff --git a/src/kernel/makefile b/src/kernel/makefile new file mode 100644 index 000000000..74a6bffbc --- /dev/null +++ b/src/kernel/makefile @@ -0,0 +1,10 @@ +OBJDIR = ../../obj +include ../../config.mk + +OBJECTS += ${OBJDIR}/start.o +OBJECTS += ${OBJDIR}/kernel.o + +all: ${OBJECTS} + +clean: + (rm -f ${OBJECTS} ) diff --git a/start.S b/src/kernel/start.S index 481736371..481736371 100644 --- a/start.S +++ b/src/kernel/start.S diff --git a/src/makefile b/src/makefile new file mode 100644 index 000000000..3247e581e --- /dev/null +++ b/src/makefile @@ -0,0 +1,13 @@ +IMGDIR = ../img +OBJDIR = ../obj +include ../config.mk + +SUBDIRS = kernel.d +IMAGES += ${IMGDIR}/kernel.elf +IMAGES += ${IMGDIR}/kernel.bin + +all: ${SUBDIRS} + ${MAKE} ${IMAGES} + +clean: $(patsubst %.d,%.clean, ${SUBDIRS}) + (rm -f ${IMAGES} ) |