summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Williams <iawillia@us.ibm.com>2010-05-18 13:51:26 -0500
committerPatrick Williams <iawillia@us.ibm.com>2010-05-18 13:51:26 -0500
commit9ea98f274e18a3407ce109a331553e1c910274d9 (patch)
treed1b5b14ed355188b31457733d34dfdd812910afd
parenta5715803fd096bd223b6afd8b26d8efbb96239d4 (diff)
downloadtalos-hostboot-9ea98f274e18a3407ce109a331553e1c910274d9.tar.gz
talos-hostboot-9ea98f274e18a3407ce109a331553e1c910274d9.zip
Improve make infrastructure.
-rw-r--r--config.mk26
-rw-r--r--img/.gitignore0
-rw-r--r--makefile24
-rw-r--r--obj/.gitignore0
-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/makefile10
-rw-r--r--src/kernel/start.S (renamed from start.S)0
-rw-r--r--src/makefile13
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
diff --git a/makefile b/makefile
index 7020c5aac..ccd8fed68 100644
--- a/makefile
+++ b/makefile
@@ -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} )
OpenPOWER on IntegriCloud