Metropoli BBS
VIEWER: makefile MODE: TEXT (ASCII)
HEAD = head.o
SYSTEM = ../tools/zSystem
#LD = gcc
#TEST = -DTEST_DRIVER

OBJECTS = $(HEAD) inflate.o unzip.o misc.o

CFLAGS = -O2 -DSTDC_HEADERS $(TEST)

ifeq ($(USE_ELF),yes)
TARGET=--target elf32-i386
INPUT_DATA=input_data
INPUT_LEN=input_len
endif

.c.s:
	$(CC) $(CFLAGS) -S -o $*.s $<
.s.o:
	$(AS) -o $*.o $<
.c.o:
	$(CC) $(CFLAGS) -c -o $*.o $<

all:	zSystem

zSystem:	piggy.o $(OBJECTS)
		$(LD) $(LDFLAGS) -o zSystem -Ttext 1000 $(OBJECTS) piggy.o

vmlinux: piggy.o $(OBJECTS)
	$(LD) $(ZLINKFLAGS) -o vmlinux $(OBJECTS) piggy.o

head.o: head.S $(TOPDIR)/include/linux/tasks.h
	$(CC) -traditional -c head.S

ifeq ($(USE_ELF),yes)

# You cannot compress a file and have the kernel uncompress it, it must
# be stdin
piggy.o:	$(SYSTEM)
	tmppiggy=/tmp/$$$$piggy; \
	rm -f $$tmppiggy $$tmppiggy.gz $$tmppiggy.lnk; \
	if hash $(ENCAPS) 2> /dev/null; then \
	  $(OBJDUMP) $(OBJDUMP_FLAGS) -o $(IMAGE_OFFSET) $(SYSTEM) > $$tmppiggy; \
	else \
	  $(OBJCOPY) $(SYSTEM) $$tmppiggy; \
	fi ; \
	gzip -f -9 < $$tmppiggy > $$tmppiggy.gz; \
	if hash $(ENCAPS) 2> /dev/null; then \
	  $(ENCAPS) $(TARGET) piggy.o $$tmppiggy.gz $(INPUT_DATA) $(INPUT_LEN); \
	else \
	  echo "SECTIONS { .data : { input_len = .; LONG(input_data_end - input_data) input_data = .; *(.data) input_data_end = .; }}" > $$tmppiggy.lnk; \
	  $(LD) -m elf_i386 -r -o piggy.o -b binary $$tmppiggy.gz -b elf32-i386 -T $$tmppiggy.lnk; \
	fi; \
	rm -f $$tmppiggy $$tmppiggy.gz $$tmppiggy.lnk
else
piggy.o:	$(SYSTEM) xtract piggyback
		./xtract $(SYSTEM) | gzip -9 | ./piggyback > piggy.o
endif

$(SYSTEM):
		$(MAKE) -C .. tools/zSystem
[ RETURN TO DIRECTORY ]