view Makefile @ 0:5d9f272f4db6

import template
author Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
date Thu, 24 Feb 2011 23:04:37 -0500
parents
children 68bac03da6ff
line wrap: on
line source

CROSS_COMPILE=s390x-linux-
AS=$(CROSS_COMPILE)as
CC=$(CROSS_COMPILE)gcc
LD=$(CROSS_COMPILE)ld
OBJCOPY=$(CROSS_COMPILE)objcopy

MAKEFLAGS += -rR --no-print-directory
CFLAGS=-g -fno-strict-aliasing -fno-builtin -nostdinc -nostdlib -Wall -m64 -I include/ -O2
LDFLAGS=-m elf64_s390

OBJS=src/init.o src/io.o

.PHONY: all build clean tags

all: sarpn loader.bin
	@echo "Image is `stat -c %s sarpn` bytes"
	@echo "Loader is `stat -c %s loader.bin` bytes"

clean:
	rm -f $(OBJS)
	rm -f sarpn
	rm -f loader.bin ipl/*.o ipl/*.rto ipl/ipl_ccws.S cscope.out

tags:
	cscope -R -b

sarpn: $(OBJS)
	$(LD) $(LDFLAGS) -T scripts/linker.script -o $@ $^

%.o: %.S
	$(AS) -m64 -o $@ $<

%.o: %.c
	$(CC) $(CFLAGS) -include include/system.h -c -o $@ $<

#
# IPL specific bits
#

.PRECIOUS: ipl/loader.o ipl/loader_c.o ipl/loader_asm.o ipl/setmode.o \
	ipl/ipl_ccws.o ipl/ipl.o

loader.bin: ipl/ipl.rto ipl/ipl_ccws.rto ipl/setmode.rto ipl/loader.rto
	cat $^ > $@
	( len=`stat -c %s "$@"`; dif=`expr $$len % 80`; if [ $$dif -ne 0 ]; then dif=`expr 80 - $$dif`; dd if=/dev/zero bs=1 count=$$dif 2> /dev/null >> "$@"; fi)

ipl/loader_asm.o: ipl/loader_asm.S
	$(AS) -m64 -o $@ $<

ipl/loader_c.o: ipl/loader.c sarpn
	$(CC) $(CFLAGS) -DBLOCK_SIZE=80 -DBYTES_TO_READ=`stat -c '%s' sarpn` -c -o $@ $<

ipl/ipl_ccws.S: ipl/setmode.rto ipl/loader.rto
	bash scripts/gen_ccws.sh $@

ipl/loader.rto: ipl/loader.o
	$(OBJCOPY) -O binary -j .text -j .data -j .rodata $< $@

ipl/loader.o: ipl/loader_c.o ipl/loader_asm.o
	$(LD) -melf64_s390 -T ipl/linker.script -o $@ $^

ipl/%.rto: ipl/%.o
	$(OBJCOPY) -O binary -j .text $< $@

ipl/%.o: ipl/%.S
	$(AS) -m64 -o $@ $<