File: Makefile

package info (click to toggle)
silo 1.4.14%2Bgit20120819-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 1,644 kB
  • sloc: ansic: 13,383; asm: 3,004; makefile: 351; sh: 102; perl: 85
file content (114 lines) | stat: -rw-r--r-- 3,433 bytes parent folder | download
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
##
## Linux Loader for SPARC
##
##

AS=as
AR=ar
NM=nm
DD=dd
AWK=awk
LS=ls
STRIP=strip
GZIP=gzip
GDB=gdb
ECHO=echo
GREP=grep
SED=sed
CP=cp

include ../Rules.make

# Relocate to 2.5MB. The Hitchhiker's Guide to Open Boot Rev 3 claims
# that 3MB are guaranteed to be mapped.
#
# XXX: We seem to be going 4Megs here for LARGE? -- BenC
LDFLAGS_SMALL=-N -Ttext $(SMALL_RELOC)
LDFLAGS_LARGE=-N -Ttext $(LARGE_RELOC)

.c.o:
	$(CC) $(CFLAGS) -c $*.c -o $@

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

# The ordering here is very significant. Please add new object files to OBJS5 only.
OBJS1 = crt0.o
OBJS2 = decomp.o
OBJS2N = decompnet.o
OBJS3 = ../common/console.o ../common/printf.o malloc.o ../common/jmp.o \
	../common/prom.o ../common/tree.o ../common/urem.o ../common/udiv.o \
	../common/stringops1.o ../common/ffs.o ../common/divdi3.o \
	../common/udivdi3.o
OBJS4 = main.o
OBJS4N = mainnet.o
OBJS5 = cmdline.o disk.o file.o misc.o cfg.o strtol.o ranges.o timer.o \
	memory.o fs/libfs.a mul.o ../common/rem.o ../common/sdiv.o umul.o \
	../common/stringops2.o ls.o muldi3.o
OBJS = $(OBJS1) $(OBJS2) $(OBJS3) bmark.o $(OBJS4) $(OBJS5)
OBJSNET = $(OBJS1) $(OBJS2N) $(OBJS3) bmark.o $(OBJS4N) $(OBJS5)

FS_OBJS = fs/iom.o fs/ext2.o fs/isofs.o fs/romfs.o fs/ufs.o

# Should really switch to autoconf...
all: second.b silotftp.b

fs/libfs.a: $(FS_OBJS)
	$(RM) $@
	$(AR) rc $@ $(FS_OBJS)

second: $(OBJS) mark.o
	$(LD) $(LDFLAGS_SMALL) -Bstatic -o second $(OBJS) mark.o `$(CC) -print-libgcc-file-name`
	$(LD) $(LDFLAGS_LARGE) -Bstatic -o second2 $(OBJS) mark.o `$(CC) -print-libgcc-file-name`
	$(NM) second | grep -v '*ABS*' | sort > second.map

silotftp: $(OBJSNET) mark.o
	$(LD) $(LDFLAGS_SMALL) -Bstatic -o silotftp $(OBJSNET) mark.o `$(CC) -print-libgcc-file-name`
	$(LD) $(LDFLAGS_LARGE) -Bstatic -o silotftp2 $(OBJSNET) mark.o `$(CC) -print-libgcc-file-name`
	$(NM) silotftp | grep -v '*ABS*' | sort > silotftp.map

second.l: second
	( $(ECHO) 'disassemble $(SMALL_RELOC) '`$(GREP) '_etext' second.map | $(SED) 's/ .*$$//' | $(SED) 's/^00/0x/'`; $(ECHO) quit ) | $(GDB) second | $(SED) '1,/^(gdb)/d;/^End /,$$d' > second.l

file.o:	       file.c

decompnet.o:   decomp.c
	$(CC) $(CFLAGS) -DTFTP -DVERSION='"$(VERSION)"' -c -o $@ $<

decomp.o: decomp.c
	$(CC) $(CFLAGS) -DVERSION='"$(VERSION)"' -c $<

mainnet.o:   main.c
	$(CC) $(CFLAGS) -DTFTP -c -o $@ $<

malloc.o: ../common/malloc.c
	$(CC) $(CFLAGS) -c -o $@ $<

util:	util.c
	$(CC) -DSMALL_RELOC=$(SMALL_RELOC) -DLARGE_RELOC=$(LARGE_RELOC) -o $@ $<

clean:
	$(RM) *.o fs/*.o second* silotftp* util fs/libfs.a

crt0.o:	crt0.S
	$(CC) $(CFLAGS) -c -Wa,-Av9 -DIMGVERSION='"SILO$(IMGVERSION)"' crt0.S

memory.o: memory.c
	$(CC) $(CFLAGS) -c -Wa,-Av9 memory.c

timer.o: timer.c
	$(CC) $(CFLAGS) -c -Wa,-Av9a timer.c

second.b: second util
	$(ELFTOAOUT) -o second.aout second
	$(ELFTOAOUT) -o second2.aout second2
	./util second.map second.aout second2.aout second.b second.b2
	$(GZIP) -9cfn second.b2 >> second.b
	$(DD) if=/dev/zero bs=1 count=`$(LS) -l second.b | $(AWK) '{len=$$5%512;if(len!=0)len=512-len;print len}'` >> second.b
	$(LS) -l second.b | $(AWK) '{printf "%c%c%c%c",0,$$5/65536,($$5%65536)/256,0}' | $(DD) of=second.b bs=4 count=1 seek=581 conv=notrunc

silotftp.b: silotftp util
	$(ELFTOAOUT) -o silotftp.aout silotftp
	$(ELFTOAOUT) -o silotftp2.aout silotftp2
	./util -a silotftp.map silotftp.aout silotftp2.aout silotftp.b silotftp.b2
	$(GZIP) -9cfn silotftp.b2 >> silotftp.b