view Makefile @ 23:e7b9148156c4

arch: hopefully the rest of the SVC related code
author Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
date Wed, 27 Apr 2011 14:48:56 -0400
parents ca308c8ca41e
children
line wrap: on
line source

CROSS_COMPILE=s390x-linux-
AS=$(CROSS_COMPILE)as
CC=$(CROSS_COMPILE)gcc
CXX=$(CROSS_COMPILE)g++
LD=$(CROSS_COMPILE)ld
AR=$(CROSS_COMPILE)ar
OBJCOPY=$(CROSS_COMPILE)objcopy

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

BINS=sarpn

sarpn_OBJS=src/init.o arch/arch.a

ARCH_OBJS=arch/io.o arch/cons.o arch/ebcdic.o arch/fba.o arch/ioint.o \
	  arch/svc.o arch/svcint.o

.PHONY: all build clean tags

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

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

tags:
	cscope -R -b

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

arch/arch.a: $(ARCH_OBJS)
	$(AR) rc $@ $^

%.o: %.S
	$(CC) $(CFLAGS) -c -o $@ $<

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

%.o: %.cpp
	$(CXX) $(CXXFLAGS) -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
	$(CC) $(CFLAGS) -DBLOCK_SIZE=80 -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 $@ $<