Statistics
| Branch: | Revision:

root / Makefile @ 2792c4f2

History | View | Annotate | Download (3.6 kB)

1
include config.mak
2

    
3
CFLAGS=-Wall -O2 -g
4
LDFLAGS=-g
5
LIBS=
6
DEFINES=-DHAVE_BYTESWAP_H
7

    
8
ifeq ($(ARCH),i386)
9
CFLAGS+=-fomit-frame-pointer
10
OP_CFLAGS=$(CFLAGS) -mpreferred-stack-boundary=2
11
ifeq ($(GCC_MAJOR),3)
12
OP_CFLAGS+= -falign-functions=0
13
else
14
OP_CFLAGS+= -malign-functions=0
15
endif
16
# WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object
17
# that the kernel ELF loader considers as an executable. I think this
18
# is the simplest way to make it self virtualizable!
19
LDFLAGS+=-Wl,-shared
20
endif
21

    
22
ifeq ($(ARCH),ppc)
23
OP_CFLAGS=$(CFLAGS)
24
LDFLAGS+=-Wl,-T,ppc.ld
25
endif
26

    
27
ifeq ($(ARCH),s390)
28
OP_CFLAGS=$(CFLAGS)
29
LDFLAGS+=-Wl,-T,s390.ld
30
endif
31

    
32
ifeq ($(ARCH),alpha)
33
# Ensure there's only a single GP
34
CFLAGS += -msmall-data -msmall-text
35
# FIXME Too lazy to deal with gprelhigh/gprellow for now, inhibit them
36
OP_CFLAGS=$(CFLAGS) -mno-explicit-relocs
37
LDFLAGS+=-Wl,-T,alpha.ld
38
endif
39

    
40
ifeq ($(ARCH),ia64)
41
OP_CFLAGS=$(CFLAGS)
42
endif
43

    
44
ifeq ($(GCC_MAJOR),3)
45
# very important to generate a return at the end of every operation
46
OP_CFLAGS+=-fno-reorder-blocks -fno-optimize-sibling-calls
47
endif
48

    
49
#########################################################
50

    
51
DEFINES+=-D_GNU_SOURCE
52
LIBS+=-lm
53

    
54
# profiling code
55
ifdef TARGET_GPROF
56
LDFLAGS+=-p
57
main.o: CFLAGS+=-p
58
endif
59

    
60
OBJS= elfload.o main.o syscall.o signal.o vm86.o path.o
61
SRCS:= $(OBJS:.o=.c)
62
OBJS+= libqemu.a
63

    
64
LIBOBJS+=thunk.o translate-i386.o op-i386.o exec-i386.o
65
# NOTE: the disassembler code is only needed for debugging
66
LIBOBJS+=disas.o ppc-dis.o i386-dis.o dis-buf.o
67

    
68
ifeq ($(ARCH),ia64)
69
OBJS += ia64-syscall.o
70
endif
71

    
72
all: qemu qemu-doc.html
73

    
74
qemu: $(OBJS)
75
	$(CC) $(LDFLAGS) -o $@ $^  $(LIBS)
76

    
77
depend: $(SRCS)
78
	$(CC) -MM $(CFLAGS) $^ 1>.depend
79

    
80
# libqemu 
81

    
82
libqemu.a: $(LIBOBJS)
83
	rm -f $@
84
	$(AR) rcs $@ $(LIBOBJS)
85

    
86
dyngen: dyngen.c
87
	$(HOST_CC) -O2 -Wall -g $< -o $@
88

    
89
translate-i386.o: translate-i386.c op-i386.h cpu-i386.h
90

    
91
op-i386.h: op-i386.o dyngen
92
	./dyngen -o $@ $<
93

    
94
op-i386.o: op-i386.c opreg_template.h ops_template.h
95
	$(CC) $(OP_CFLAGS) $(DEFINES) -c -o $@ $<
96

    
97
%.o: %.c
98
	$(CC) $(CFLAGS) $(DEFINES) -c -o $@ $<
99

    
100
clean:
101
	$(MAKE) -C tests clean
102
	rm -f *.o  *.a *~ qemu dyngen TAGS
103

    
104
distclean: clean
105
	rm -f config.mak config.h
106

    
107
install: qemu
108
	install -m 755 -s qemu $(prefix)/bin
109

    
110
# various test targets
111
test speed: qemu
112
	make -C tests $@
113

    
114
TAGS: 
115
	etags *.[ch] tests/*.[ch]
116

    
117
# documentation
118
qemu-doc.html: qemu-doc.texi
119
	texi2html -monolithic -number $<
120

    
121
FILES= \
122
README README.distrib COPYING COPYING.LIB TODO Changelog VERSION \
123
dyngen.c ioctls.h ops_template.h op_string.h  syscall_types.h\
124
Makefile     elf.h       thunk.c\
125
elfload.c   main.c            signal.c        thunk.h\
126
cpu-i386.h qemu.h op-i386.c opc-i386.h syscall-i386.h  translate-i386.c\
127
dis-asm.h    gen-i386.h  syscall.c\
128
dis-buf.c disas.c disas.h ppc-dis.c i386-dis.c  opreg_template.h  syscall_defs.h\
129
ppc.ld s390.ld exec-i386.h exec-i386.c path.c configure \
130
tests/Makefile\
131
tests/test-i386.c tests/test-i386-shift.h tests/test-i386.h\
132
tests/test-i386-muldiv.h tests/test-i386-code16.S\
133
tests/hello.c tests/hello tests/sha1.c \
134
tests/testsig.c tests/testclone.c tests/testthread.c \
135
tests/runcom.c tests/pi_10.com \
136
tests/test_path.c \
137
qemu-doc.texi qemu-doc.html
138

    
139
FILE=qemu-$(VERSION)
140

    
141
tar:
142
	rm -rf /tmp/$(FILE)
143
	mkdir -p /tmp/$(FILE)
144
	cp -P $(FILES) /tmp/$(FILE)
145
	( cd /tmp ; tar zcvf ~/$(FILE).tar.gz $(FILE) )
146
	rm -rf /tmp/$(FILE)
147

    
148
# generate a binary distribution including the test binary environnment 
149
BINPATH=/usr/local/qemu-i386
150

    
151
tarbin:
152
	tar zcvf /tmp/qemu-$(VERSION)-i386-glibc21.tar.gz \
153
                 $(BINPATH)/etc $(BINPATH)/lib $(BINPATH)/bin $(BINPATH)/usr
154
	tar zcvf /tmp/qemu-$(VERSION)-i386-wine.tar.gz \
155
                 $(BINPATH)/wine
156

    
157
ifneq ($(wildcard .depend),)
158
include .depend
159
endif