summaryrefslogtreecommitdiffstats
path: root/config.mk
blob: 6e63294db673162d74be3bcfd28c03a9f1932864 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
all: ALL

ifdef MODULE
OBJDIR = ${ROOTPATH}/obj/modules/${MODULE}
IMGDIR = ${ROOTPATH}/img
EXTRACOMMONFLAGS += -fPIC
else
OBJDIR = ${ROOTPATH}/obj/hbicore
IMGDIR = ${ROOTPATH}/img
endif

CUSTOM_LINKER = ${ROOTPATH}/src/build/linker/linker
TRACEPP = ${ROOTPATH}/src/build/trace/tracepp

CC = ${TRACEPP} ppc64-mcp6-gcc
CXX = ${TRACEPP} ppc64-mcp6-g++
LD = ppc64-mcp6-ld

COMMONFLAGS = -O3 -nostdlib ${EXTRACOMMONFLAGS}
CFLAGS = ${COMMONFLAGS} -mcpu=power7 -nostdinc -g -msoft-float -mno-altivec \
	 -Wall
ASMFLAGS = ${COMMONFLAGS} -mcpu=power7
CXXFLAGS = ${CFLAGS} -nostdinc++ -fno-rtti -fno-exceptions -Wall
LDFLAGS = --nostdlib --sort-common ${COMMONFLAGS}
LDMAPFLAGS = -Map $@.map 

INCDIR = ${ROOTPATH}/src/include/

OBJECTS = $(addprefix ${OBJDIR}/, ${OBJS})
LIBRARIES = $(addprefix ${IMGDIR}/, ${LIBS})

${OBJDIR}/%.o : %.C
	mkdir -p ${OBJDIR}
	${CXX} -c ${CXXFLAGS} $< -o $@ -I ${INCDIR}

${OBJDIR}/%.o : %.c
	mkdir -p ${OBJDIR}
	${CC} -c ${CFLAGS} $< -o $@ -I ${INCDIR}

${OBJDIR}/%.o : %.S
	mkdir -p ${OBJDIR}
	${CC} -c ${ASMFLAGS} $< -o $@ -Wa,-I${INCDIR}

${IMGDIR}/%.so : ${OBJECTS} ${ROOTPATH}/src/module.ld
	${LD} -shared -z now --gc-sections ${LDFLAGS} $< \
	      -T ${ROOTPATH}/src/module.ld -o $@

${IMGDIR}/%.elf: kernel.ld ${OBJDIR}/*.o ${ROOTPATH}/src/kernel.ld
	${LD} -static ${LDFLAGS} ${LDMAPFLAGS} ${OBJDIR}/*.o \
	      -T ${ROOTPATH}/src/kernel.ld -o $@

${IMGDIR}/%.bin: ${IMGDIR}/%.elf $(wildcard ${IMGDIR}/*.so)
	${CUSTOM_LINKER} $@ $^

%.d:
	cd ${basename $@} && ${MAKE}

%.clean:
	cd ${basename $@} && ${MAKE} clean

ALL: ${SUBDIRS} ${OBJECTS} ${LIBRARIES}
ifdef IMAGES
	    ${MAKE} ${IMAGES}
endif

clean: $(patsubst %.d,%.clean, ${SUBDIRS})
	(rm -f ${OBJECTS} $(addsuffix .hash, ${OBJECTS}) ${LIBRARIES} \
	       ${IMAGES} $(addsuffix .map, ${IMAGES}) )

OpenPOWER on IntegriCloud